Topuino_Hardware/src/main.cpp

140 lines
4.2 KiB
C++
Raw Normal View History

2021-08-19 20:04:03 +08:00
#include <Arduino.h>
2022-07-02 13:04:34 +08:00
#include "DisplayPanel.h"
#include "OnlineConnector.h"
#include "UsbConnector.h"
2022-07-03 22:03:58 +08:00
#include "LocalConnector.h"
2022-07-02 13:04:34 +08:00
#include "MonitorItems.h"
#include "StatusLed.h"
#include "WifiConfigManager.h"
#include "UserData.h"
#include "FuncButton.h"
2021-08-19 20:04:03 +08:00
2021-08-29 16:24:40 +08:00
DisplayPanel* displayPanel;
2022-07-02 13:04:34 +08:00
StatusLed* statusLed;
2021-08-29 22:14:08 +08:00
UserData* userdataManager;
2022-07-02 13:04:34 +08:00
WifiConfigManager* wifiConfigManager;
2021-08-29 22:14:08 +08:00
FuncButton* funcButton;
2021-08-19 20:04:03 +08:00
2022-07-03 22:03:58 +08:00
OnlineConnector* onlineConnector;
UsbConnector* usbConnector;
LocalConnector* localConnector;
2022-06-27 20:43:02 +08:00
RunMode runMode;
void RunMode_Usb_Setup()
{
2022-07-02 13:04:34 +08:00
usbConnector = new UsbConnector();
2022-06-27 20:43:02 +08:00
}
void RunMode_Online_Setup()
{
if (!userdataManager->WifiInfoValid()) {
2022-07-02 13:04:34 +08:00
wifiConfigManager = new WifiConfigManager();
wifiConfigManager->ProcessConfig();
2022-06-27 20:43:02 +08:00
} else {
2022-07-02 13:04:34 +08:00
onlineConnector = new OnlineConnector();
2022-06-27 20:43:02 +08:00
}
}
void RunMode_Local_Setup()
{
2022-07-03 22:03:58 +08:00
if (!userdataManager->WifiInfoValid()) {
wifiConfigManager = new WifiConfigManager();
wifiConfigManager->ProcessConfig();
} else {
localConnector = new LocalConnector();
}
2022-06-27 20:43:02 +08:00
}
2021-08-19 20:04:03 +08:00
void setup()
{
2022-06-26 14:23:33 +08:00
Serial.begin(115200);
2022-06-27 20:43:02 +08:00
2022-07-02 13:04:34 +08:00
statusLed = new StatusLed();
2021-08-29 22:14:08 +08:00
userdataManager = new UserData();
2021-08-29 16:24:40 +08:00
displayPanel = new DisplayPanel();
2021-08-29 22:14:08 +08:00
funcButton = new FuncButton();
2022-06-27 20:43:02 +08:00
runMode = userdataManager->GetRunMode();
switch (runMode) {
case RunMode_Usb:
2022-06-30 21:11:19 +08:00
displayPanel->DisplayNetRate(0, 0);
2022-06-27 20:43:02 +08:00
RunMode_Usb_Setup();
break;
case RunMode_Online:
2022-06-30 21:11:19 +08:00
displayPanel->DisplayNetRate(1024, 1024);
2022-06-27 20:43:02 +08:00
RunMode_Online_Setup();
break;
case RunMode_Local:
2022-06-30 21:11:19 +08:00
displayPanel->DisplayNetRate(2048, 2048);
2022-06-27 20:43:02 +08:00
RunMode_Local_Setup();
break;
default:
runMode = RunMode_Usb;
2022-06-30 21:11:19 +08:00
displayPanel->DisplayNetRate(0, 0);
2022-06-27 20:43:02 +08:00
userdataManager->SetRunMode(runMode);
RunMode_Usb_Setup();
break;
2021-08-29 22:14:08 +08:00
}
2021-08-28 15:46:25 +08:00
}
2022-06-27 20:43:02 +08:00
void RunMode_Usb_Loop()
2021-08-19 20:04:03 +08:00
{
2022-07-02 13:04:34 +08:00
displayPanel->DisplayCpuPercent(usbConnector->data.cpuPercent);
displayPanel->DisplayMemPercent(usbConnector->data.memPercent);
displayPanel->DisplayDisk0Percent(usbConnector->data.disk0Percent);
displayPanel->DisplayDisk1Percent(usbConnector->data.disk1Percent);
displayPanel->DisplayDiskRate(usbConnector->data.diskReadRate, usbConnector->data.diskWriteRate);
displayPanel->DisplayNetRate(usbConnector->data.netSentRate, usbConnector->data.netReceiveRate);
2022-06-27 20:43:02 +08:00
}
void RunMode_Online_Loop()
{
2022-07-02 13:04:34 +08:00
if (onlineConnector->FetchNewData() == OK) {
displayPanel->DisplayCpuPercent(onlineConnector->GetPercent(CPU_PERCENT));
displayPanel->DisplayMemPercent(onlineConnector->GetPercent(MEM_PERCENT));
displayPanel->DisplayDisk0Percent(onlineConnector->GetPercent(DISK0_PERCENT));
displayPanel->DisplayDisk1Percent(onlineConnector->GetPercent(DISK1_PERCENT));
displayPanel->DisplayDiskRate(onlineConnector->GetRate(DISK_READ_RATE), onlineConnector->GetRate(DISK_WRITE_RATE));
displayPanel->DisplayNetRate(onlineConnector->GetRate(NET_SENT_RATE), onlineConnector->GetRate(NET_RECV_RATE));
2022-03-27 12:40:12 +08:00
} else {
displayPanel->DisplayCpuPercent(0);
displayPanel->DisplayMemPercent(0);
displayPanel->DisplayDisk0Percent(0);
displayPanel->DisplayDisk1Percent(0);
displayPanel->DisplayDiskRate(0, 0);
displayPanel->DisplayNetRate(0, 0);
2021-08-29 16:24:40 +08:00
}
2021-08-28 15:46:25 +08:00
}
2022-06-27 20:43:02 +08:00
void RunMode_Local_Loop()
{
2022-07-03 22:03:58 +08:00
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);
2022-06-27 20:43:02 +08:00
}
void loop()
{
delay(1000);
switch (runMode) {
case RunMode_Usb:
RunMode_Usb_Loop();
break;
case RunMode_Online:
RunMode_Online_Loop();
break;
case RunMode_Local:
RunMode_Local_Loop();
break;
default:
break;
}
}