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 uint32_t factoryBtnPressTime = 0;
static int getCO2FailCount = 0;
static bool offlineMode = false;
static AgFirmwareMode fwMode = FW_MODE_I_9PSL;
static bool ledBarButtonTest = false;
@ -165,8 +164,30 @@ void setup() {
stateMachine.executeLedBarPowerUpTest();
} else {
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 {
connectToWifi = true;
}
@ -200,8 +221,6 @@ void setup() {
} else {
ledBarEnabledUpdate();
}
} else {
offlineMode = true;
}
}
}
@ -249,9 +268,9 @@ void loop() {
}
}
/** Auto reset external watchdog timer on offline mode and
* postDataToAirGradient disabled. */
if (offlineMode || (configuration.isPostDataToAirGradient() == false)) {
/** Auto reset watchdog timer if offline mode or postDataToAirGradient */
if (configuration.isOfflineMode() ||
(configuration.isPostDataToAirGradient() == false)) {
watchdogFeedSchedule.run();
}
@ -528,7 +547,7 @@ static void oneIndoorInit(void) {
}
/** Run LED test on start up */
oledDisplay.setText("Press now for", "LED test &", "offline mode");
oledDisplay.setText("Press now for", "LED test", "");
ledBarButtonTest = false;
uint32_t stime = millis();
while (true) {

View File

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

View File

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