Topuino_Hardware/src/LocalConnector.cpp

57 lines
1.5 KiB
C++

#include "LocalConnector.h"
#include "StatusLed.h"
#include "UserData.h"
#include "DisplayPanel.h"
extern DisplayPanel* displayPanel;
extern UserData* userdataManager;
extern StatusLed* statusLed;
static byte packRecv[256];
LocalConnector::LocalConnector()
{
WiFi.begin(userdataManager->GetWifiSsid(), userdataManager->GetWifiPasswd());
statusLed->SetBlinkRate(StatusLed::BlinkRate::Rate2Hz);
while (WiFi.status() != WL_CONNECTED)
{
delay(1000);
}
statusLed->SetBlinkRate(StatusLed::BlinkRate::RateAlwaysOff);
displayPanel->DisplayDiskRate((uint32_t)(WiFi.localIP()[0]) * 1024, (uint32_t)(WiFi.localIP()[1]) * 1024);
displayPanel->DisplayNetRate((uint32_t)(WiFi.localIP()[2]) * 1024, (uint32_t)(WiFi.localIP()[3]) * 1024);
delay(2000);
data = (UdpData*)(packRecv + 4);
uint32_t port = 32737;
Udp.begin(port);
}
void LocalConnector::FetchNewData()
{
int packetSize = Udp.parsePacket();
if (packetSize) {
int len = Udp.read(packRecv, 255);
byte packSend[2];
if (len <= 0) {
return;
}
if (packRecv[0] == 0x19 && packRecv[1] == 0x26 && packRecv[2] == 0x08 && packRecv[3] == 0x17) {
packSend[0] = 0x00;
packSend[1] = 0x00;
} else {
packSend[0] = 0x11;
packSend[1] = 0x22;
memset(packRecv, 0, sizeof(packRecv));
}
Udp.beginPacket(Udp.remoteIP(), Udp.remotePort());
Udp.write(packSend, 2);
Udp.endPacket();
}
}