Add display ask for offline/online mode

This commit is contained in:
Phat Nguyen
2024-05-09 14:32:42 +07:00
parent ad1da129c0
commit da6326db0f
3 changed files with 51 additions and 8 deletions

View File

@ -89,7 +89,6 @@ static LocalServer localServer(Serial, openMetrics, measurements, configuration,
static int pmFailCount = 0; static int pmFailCount = 0;
static uint32_t factoryBtnPressTime = 0; static uint32_t factoryBtnPressTime = 0;
static int getCO2FailCount = 0; static int getCO2FailCount = 0;
static bool offlineMode = false;
static AgFirmwareMode fwMode = FW_MODE_I_9PSL; static AgFirmwareMode fwMode = FW_MODE_I_9PSL;
static bool ledBarButtonTest = false; static bool ledBarButtonTest = false;
@ -165,8 +164,30 @@ void setup() {
stateMachine.executeLedBarPowerUpTest(); stateMachine.executeLedBarPowerUpTest();
} else { } else {
ledBarEnabledUpdate(); ledBarEnabledUpdate();
connectToWifi = true;
} }
/** Show message confirm offline mode. */
oledDisplay.setText(
"Press now for",
configuration.isOfflineMode() ? "online mode" : "offline mode", "");
uint32_t stime = millis();
while (true) {
if (ag->button.getState() == ag->button.BUTTON_PRESSED) {
configuration.setOfflineMode(!configuration.isOfflineMode());
oledDisplay.setText(
"Offline Mode",
configuration.isOfflineMode() ? " = True" : " = False", "");
delay(1000);
break;
}
uint32_t ms = (uint32_t)(millis() - stime);
if (ms >= 3000) {
break;
}
}
connectToWifi = !configuration.isOfflineMode();
} else { } else {
connectToWifi = true; connectToWifi = true;
} }
@ -200,8 +221,6 @@ void setup() {
} else { } else {
ledBarEnabledUpdate(); ledBarEnabledUpdate();
} }
} else {
offlineMode = true;
} }
} }
} }
@ -249,9 +268,9 @@ void loop() {
} }
} }
/** Auto reset external watchdog timer on offline mode and /** Auto reset watchdog timer if offline mode or postDataToAirGradient */
* postDataToAirGradient disabled. */ if (configuration.isOfflineMode() ||
if (offlineMode || (configuration.isPostDataToAirGradient() == false)) { (configuration.isPostDataToAirGradient() == false)) {
watchdogFeedSchedule.run(); watchdogFeedSchedule.run();
} }
@ -528,7 +547,7 @@ static void oneIndoorInit(void) {
} }
/** Run LED test on start up */ /** Run LED test on start up */
oledDisplay.setText("Press now for", "LED test &", "offline mode"); oledDisplay.setText("Press now for", "LED test", "");
ledBarButtonTest = false; ledBarButtonTest = false;
uint32_t stime = millis(); uint32_t stime = millis();
while (true) { while (true) {

View File

@ -40,6 +40,7 @@ JSON_PROP_DEF(ledbarBrightness);
JSON_PROP_DEF(displayBrightness); JSON_PROP_DEF(displayBrightness);
JSON_PROP_DEF(co2CalibrationRequested); JSON_PROP_DEF(co2CalibrationRequested);
JSON_PROP_DEF(ledBarTestRequested); JSON_PROP_DEF(ledBarTestRequested);
JSON_PROP_DEF(offlineMode);
JSONVar jconfig; JSONVar jconfig;
static bool jsonTypeInvalid(JSONVar root, String validType) { static bool jsonTypeInvalid(JSONVar root, String validType) {
@ -145,6 +146,7 @@ void Configuration::defaultConfig(void) {
jconfig[jprop_noxLearningOffset] = 12; jconfig[jprop_noxLearningOffset] = 12;
jconfig[jprop_abcDays] = 8; jconfig[jprop_abcDays] = 8;
jconfig[jprop_model] = ""; jconfig[jprop_model] = "";
jconfig[jprop_offlineMode] = false;
saveConfig(); saveConfig();
} }
@ -1077,6 +1079,15 @@ void Configuration::toConfig(const char *buf) {
logInfo("toConfig: displayBrightness changed"); logInfo("toConfig: displayBrightness changed");
} }
if (JSON.typeof_(jconfig[jprop_offlineMode]) != "boolean") {
isInvalid = true;
} else {
isInvalid = false;
}
if (isInvalid) {
jconfig[jprop_offlineMode] = false;
}
if (changed) { if (changed) {
saveConfig(); saveConfig();
} }
@ -1139,6 +1150,17 @@ int Configuration::getDisplayBrightness(void) {
return value; return value;
} }
bool Configuration::isOfflineMode(void) {
bool offline = jconfig[jprop_offlineMode];
return offline;
}
void Configuration::setOfflineMode(bool offline) {
logInfo("Set offline mode: " + String(offline ? "True" : "False"));
jconfig[jprop_offlineMode] = offline;
saveConfig();
}
bool Configuration::isDisplayBrightnessChanged(void) { bool Configuration::isDisplayBrightnessChanged(void) {
bool changed = displayBrightnessChanged; bool changed = displayBrightnessChanged;
displayBrightnessChanged = false; displayBrightnessChanged = false;

View File

@ -74,6 +74,8 @@ public:
int getLedBarBrightness(void); int getLedBarBrightness(void);
bool isDisplayBrightnessChanged(void); bool isDisplayBrightnessChanged(void);
int getDisplayBrightness(void); int getDisplayBrightness(void);
bool isOfflineMode(void);
void setOfflineMode(bool offline);
}; };
#endif /** _AG_CONFIG_H_ */ #endif /** _AG_CONFIG_H_ */