diff --git a/examples/OneOpenAir/OneOpenAir.ino b/examples/OneOpenAir/OneOpenAir.ino index 876d667..ec099af 100644 --- a/examples/OneOpenAir/OneOpenAir.ino +++ b/examples/OneOpenAir/OneOpenAir.ino @@ -176,28 +176,32 @@ void setup() { ledBarEnabledUpdate(); } - /** Show message confirm offline mode. */ - oledDisplay.setText( - "Press now for", - configuration.isOfflineMode() ? "online mode" : "offline mode", ""); - uint32_t startTime = millis(); - while (true) { - if (ag->button.getState() == ag->button.BUTTON_PRESSED) { - configuration.setOfflineMode(!configuration.isOfflineMode()); + /** Show message confirm offline mode, should me perform if LED bar button + * test pressed */ + if (ledBarButtonTest == false) { + oledDisplay.setText( + "Press now for", + configuration.isOfflineMode() ? "online mode" : "offline mode", ""); + uint32_t startTime = 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 periodMs = (uint32_t)(millis() - startTime); - if (periodMs >= 3000) { - break; + oledDisplay.setText( + "Offline Mode", + configuration.isOfflineMode() ? " = True" : " = False", ""); + delay(1000); + break; + } + uint32_t periodMs = (uint32_t)(millis() - startTime); + if (periodMs >= 3000) { + break; + } } + connectToWifi = !configuration.isOfflineMode(); + } else { + configuration.setOfflineModeWithoutSave(true); } - connectToWifi = !configuration.isOfflineMode(); - } else { connectToWifi = true; } @@ -1099,7 +1103,7 @@ static void updatePm(void) { static void sendDataToServer(void) { /** Ignore send data to server if postToAirGradient disabled */ - if (configuration.isPostDataToAirGradient() == false) { + if (configuration.isPostDataToAirGradient() == false || configuration.isOfflineMode()) { return; } diff --git a/src/AgApiClient.cpp b/src/AgApiClient.cpp index 1a2a978..699d5ae 100644 --- a/src/AgApiClient.cpp +++ b/src/AgApiClient.cpp @@ -34,7 +34,8 @@ void AgApiClient::begin(void) { */ bool AgApiClient::fetchServerConfiguration(void) { if (config.getConfigurationControl() == - ConfigurationControl::ConfigurationControlLocal) { + ConfigurationControl::ConfigurationControlLocal || + config.isOfflineMode()) { logWarning("Ignore fetch server configuration"); // Clear server configuration failed flag, cause it's ignore but not diff --git a/src/AgConfigure.cpp b/src/AgConfigure.cpp index dfccdc6..97099f3 100644 --- a/src/AgConfigure.cpp +++ b/src/AgConfigure.cpp @@ -1193,7 +1193,7 @@ int Configuration::getDisplayBrightness(void) { bool Configuration::isOfflineMode(void) { bool offline = jconfig[jprop_offlineMode]; - return offline; + return (offline || _offlineMode); } void Configuration::setOfflineMode(bool offline) { @@ -1202,6 +1202,10 @@ void Configuration::setOfflineMode(bool offline) { saveConfig(); } +void Configuration::setOfflineModeWithoutSave(bool offline) { + _offlineMode = offline; +} + bool Configuration::isDisplayBrightnessChanged(void) { bool changed = displayBrightnessChanged; displayBrightnessChanged = false; diff --git a/src/AgConfigure.h b/src/AgConfigure.h index 3b859ee..8fc852c 100644 --- a/src/AgConfigure.h +++ b/src/AgConfigure.h @@ -17,6 +17,7 @@ private: bool ledBarBrightnessChanged = false; bool displayBrightnessChanged = false; String otaNewFirmwareVersion; + bool _offlineMode = false; AirGradient* ag; @@ -80,6 +81,7 @@ public: String newFirmwareVersion(void); bool isOfflineMode(void); void setOfflineMode(bool offline); + void setOfflineModeWithoutSave(bool offline); }; #endif /** _AG_CONFIG_H_ */