add local mode

This commit is contained in:
Vector Von 2022-07-03 22:03:58 +08:00
parent 80fe04ed02
commit 59aa8c6c1c
3 changed files with 101 additions and 3 deletions

26
include/LocalConnector.h Normal file
View File

@ -0,0 +1,26 @@
#include <Arduino.h>
#include <ESP8266WiFi.h>
#include <WiFiUdp.h>
struct UdpData
{
uint8_t cpuPercent;
uint8_t memPercent;
uint8_t disk0Percent;
uint8_t disk1Percent;
uint32_t diskReadRate;
uint32_t diskWriteRate;
uint32_t netSentRate;
uint32_t netReceiveRate;
};
class LocalConnector
{
public:
LocalConnector();
void FetchNewData();
UdpData* data;
private:
WiFiUDP Udp;
};

56
src/LocalConnector.cpp Normal file
View File

@ -0,0 +1,56 @@
#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();
}
}

View File

@ -2,6 +2,7 @@
#include "DisplayPanel.h"
#include "OnlineConnector.h"
#include "UsbConnector.h"
#include "LocalConnector.h"
#include "MonitorItems.h"
#include "StatusLed.h"
#include "WifiConfigManager.h"
@ -9,14 +10,15 @@
#include "FuncButton.h"
DisplayPanel* displayPanel;
OnlineConnector* onlineConnector;
UsbConnector* usbConnector;
StatusLed* statusLed;
UserData* userdataManager;
WifiConfigManager* wifiConfigManager;
FuncButton* funcButton;
OnlineConnector* onlineConnector;
UsbConnector* usbConnector;
LocalConnector* localConnector;
RunMode runMode;
void RunMode_Usb_Setup()
@ -36,6 +38,12 @@ void RunMode_Online_Setup()
void RunMode_Local_Setup()
{
if (!userdataManager->WifiInfoValid()) {
wifiConfigManager = new WifiConfigManager();
wifiConfigManager->ProcessConfig();
} else {
localConnector = new LocalConnector();
}
}
void setup()
@ -102,6 +110,14 @@ void RunMode_Online_Loop()
void RunMode_Local_Loop()
{
localConnector->FetchNewData();
displayPanel->DisplayCpuPercent(localConnector->data->cpuPercent);
displayPanel->DisplayMemPercent(localConnector->data->memPercent);
displayPanel->DisplayDisk0Percent(localConnector->data->disk0Percent);
displayPanel->DisplayDisk1Percent(localConnector->data->disk1Percent);
displayPanel->DisplayDiskRate(localConnector->data->diskReadRate, localConnector->data->diskWriteRate);
displayPanel->DisplayNetRate(localConnector->data->netSentRate, localConnector->data->netReceiveRate);
}
void loop()