2022-07-02 13:04:34 +08:00
|
|
|
#include "FuncButton.h"
|
|
|
|
#include "UserData.h"
|
|
|
|
#include "StatusLed.h"
|
2021-08-29 22:14:08 +08:00
|
|
|
|
|
|
|
#define FUNC_BTN 0
|
|
|
|
#define PRESSED_STATUS LOW
|
|
|
|
|
|
|
|
extern UserData* userdataManager;
|
2022-07-02 13:04:34 +08:00
|
|
|
extern StatusLed* statusLed;
|
2021-08-29 22:14:08 +08:00
|
|
|
|
2022-06-26 14:23:33 +08:00
|
|
|
static int pressedTime;
|
2021-08-29 22:14:08 +08:00
|
|
|
|
2022-06-26 14:23:33 +08:00
|
|
|
static void Scan()
|
2021-08-29 22:14:08 +08:00
|
|
|
{
|
|
|
|
if (digitalRead(FUNC_BTN) == PRESSED_STATUS) {
|
|
|
|
pressedTime++;
|
2022-06-26 14:23:33 +08:00
|
|
|
return;
|
2021-08-29 22:14:08 +08:00
|
|
|
}
|
2022-06-26 14:23:33 +08:00
|
|
|
|
|
|
|
int count = pressedTime;
|
|
|
|
pressedTime = 0;
|
|
|
|
|
|
|
|
if (count >= 10) {
|
|
|
|
// Factory reset
|
2022-06-27 20:43:02 +08:00
|
|
|
userdataManager->EraseAllData();
|
2022-07-02 13:04:34 +08:00
|
|
|
statusLed->SetBlinkRate(StatusLed::BlinkRate::RateAlwaysOn);
|
2022-03-29 22:27:51 +08:00
|
|
|
delay(1000);
|
2021-08-29 22:14:08 +08:00
|
|
|
ESP.restart();
|
2022-06-26 14:23:33 +08:00
|
|
|
return;
|
2021-08-29 22:14:08 +08:00
|
|
|
}
|
2022-06-26 14:23:33 +08:00
|
|
|
|
|
|
|
if (count >= 2) {
|
2022-06-27 20:43:02 +08:00
|
|
|
RunMode mode = userdataManager->GetRunMode();
|
|
|
|
switch (mode)
|
|
|
|
{
|
|
|
|
case RunMode_Usb:
|
|
|
|
userdataManager->SetRunMode(RunMode_Online);
|
|
|
|
break;
|
|
|
|
case RunMode_Online:
|
|
|
|
userdataManager->SetRunMode(RunMode_Local);
|
|
|
|
break;
|
|
|
|
case RunMode_Local:
|
|
|
|
userdataManager->SetRunMode(RunMode_Usb);
|
|
|
|
break;
|
|
|
|
default:
|
|
|
|
break;
|
|
|
|
}
|
2022-07-02 13:04:34 +08:00
|
|
|
statusLed->SetBlinkRate(StatusLed::BlinkRate::RateAlwaysOn);
|
2022-07-02 12:18:00 +08:00
|
|
|
delay(200);
|
2022-06-27 20:43:02 +08:00
|
|
|
ESP.restart();
|
2022-06-26 14:23:33 +08:00
|
|
|
return;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
FuncButton::FuncButton()
|
|
|
|
{
|
|
|
|
pinMode(FUNC_BTN, INPUT);
|
|
|
|
pressedTime = 0;
|
|
|
|
|
|
|
|
scanner.attach(1.0, Scan);
|
|
|
|
}
|