From f35bc4feaad94dcc8c0dc30643b52e7cd79f8974 Mon Sep 17 00:00:00 2001 From: Phat Nguyen Date: Fri, 17 May 2024 11:52:22 +0700 Subject: [PATCH 01/13] Fix LED bar flickers --- examples/OneOpenAir/OneOpenAir.ino | 36 +++++++++++++++++++++++++----- src/AgConfigure.cpp | 9 ++++++++ src/AgConfigure.h | 2 ++ 3 files changed, 41 insertions(+), 6 deletions(-) diff --git a/examples/OneOpenAir/OneOpenAir.ino b/examples/OneOpenAir/OneOpenAir.ino index ed911d5..487ed6a 100644 --- a/examples/OneOpenAir/OneOpenAir.ino +++ b/examples/OneOpenAir/OneOpenAir.ino @@ -462,6 +462,7 @@ static void ledBarEnabledUpdate(void) { ag->ledBar.setBrighness(brightness); ag->ledBar.setEnable(configuration.getLedBarMode() != LedBarModeOff); } + ag->ledBar.show(); } } @@ -804,10 +805,6 @@ static void configUpdateHandle() { return; } - if (ag->isOne()) { - ledBarEnabledUpdate(); - stateMachine.executeLedBarTest(); - } stateMachine.executeCo2Calibration(); String mqttUri = configuration.getMqttBrokerUri(); @@ -843,15 +840,42 @@ static void configUpdateHandle() { if (ag->isOne()) { if (configuration.isLedBarBrightnessChanged()) { - ag->ledBar.setBrighness(configuration.getLedBarBrightness()); - Serial.println("Set 'LedBarBrightness' brightness: " + + if (configuration.getLedBarBrightness() == 0) { + ag->ledBar.setEnable(false); + } else { + if (configuration.getLedBarMode() != LedBarMode::LedBarModeOff) { + ag->ledBar.setEnable(true); + } + ag->ledBar.setBrighness(configuration.getLedBarBrightness()); + } + ag->ledBar.show(); + Serial.println("Set 'ledBarBrightness' brightness: " + String(configuration.getLedBarBrightness())); } + + if (configuration.isLedBarModeChanged()) { + Serial.println("Set 'ledBarMode' " + String(configuration.getLedBarMode())); + Serial.println("Get 'ledBarBrightness' " + String(configuration.getLedBarBrightness())); + if (configuration.getLedBarBrightness() == 0) { + ag->ledBar.setEnable(false); + } else { + if(configuration.getLedBarMode() == LedBarMode::LedBarModeOff) { + ag->ledBar.setEnable(false); + } else { + ag->ledBar.setEnable(true); + ag->ledBar.setBrighness(configuration.getLedBarBrightness()); + } + } + ag->ledBar.show(); + } + if (configuration.isDisplayBrightnessChanged()) { oledDisplay.setBrightness(configuration.getDisplayBrightness()); Serial.println("Set 'DisplayBrightness' brightness: " + String(configuration.getDisplayBrightness())); } + + stateMachine.executeLedBarTest(); } fwNewVersion = configuration.newFirmwareVersion(); diff --git a/src/AgConfigure.cpp b/src/AgConfigure.cpp index a52dbf9..5eb827c 100644 --- a/src/AgConfigure.cpp +++ b/src/AgConfigure.cpp @@ -372,6 +372,7 @@ bool Configuration::parse(String data, bool isLocal) { } } + _ledBarModeChanged = false; if (JSON.typeof_(root[jprop_ledBarMode]) == "string") { String mode = root[jprop_ledBarMode]; if (mode == getLedBarModeName(LedBarMode::LedBarModeCO2) || @@ -380,6 +381,7 @@ bool Configuration::parse(String data, bool isLocal) { String oldMode = jconfig[jprop_ledBarMode]; if (mode != oldMode) { jconfig[jprop_ledBarMode] = mode; + _ledBarModeChanged = true; changed = true; } } else { @@ -559,6 +561,7 @@ bool Configuration::parse(String data, bool isLocal) { } } + ledBarBrightnessChanged = false; if (JSON.typeof_(root[jprop_ledBarBrightness]) == "number") { int value = root[jprop_ledBarBrightness]; int oldValue = jconfig[jprop_ledBarBrightness]; @@ -1148,6 +1151,12 @@ void Configuration::setOfflineModeWithoutSave(bool offline) { _offlineMode = offline; } +bool Configuration::isLedBarModeChanged(void) { + bool changed = _ledBarModeChanged; + _ledBarModeChanged = false; + return changed; +} + bool Configuration::isDisplayBrightnessChanged(void) { bool changed = displayBrightnessChanged; displayBrightnessChanged = false; diff --git a/src/AgConfigure.h b/src/AgConfigure.h index c3eda36..24473ec 100644 --- a/src/AgConfigure.h +++ b/src/AgConfigure.h @@ -18,6 +18,7 @@ class Configuration : public PrintLog { bool displayBrightnessChanged = false; String otaNewFirmwareVersion; bool _offlineMode = false; + bool _ledBarModeChanged = false; AirGradient* ag; @@ -80,6 +81,7 @@ class Configuration : public PrintLog { bool isOfflineMode(void); void setOfflineMode(bool offline); void setOfflineModeWithoutSave(bool offline); + bool isLedBarModeChanged(void); }; #endif /** _AG_CONFIG_H_ */ From d9551dc5601f9f5a878ea7da046f0466f9edec96 Mon Sep 17 00:00:00 2001 From: Phat Nguyen Date: Sat, 18 May 2024 08:47:49 +0700 Subject: [PATCH 02/13] Reboot After 180s WiFi Manager not Connect. --- examples/OneOpenAir/OneOpenAir.ino | 3 +++ src/AgOledDisplay.cpp | 10 ++++++++++ src/AgOledDisplay.h | 1 + 3 files changed, 14 insertions(+) diff --git a/examples/OneOpenAir/OneOpenAir.ino b/examples/OneOpenAir/OneOpenAir.ino index ed911d5..ddf93ba 100644 --- a/examples/OneOpenAir/OneOpenAir.ino +++ b/examples/OneOpenAir/OneOpenAir.ino @@ -235,6 +235,9 @@ void setup() { } else { ledBarEnabledUpdate(); } + } else { + oledDisplay.showRebooting(); + delay(2500); } } } diff --git a/src/AgOledDisplay.cpp b/src/AgOledDisplay.cpp index d5164e2..d59d09d 100644 --- a/src/AgOledDisplay.cpp +++ b/src/AgOledDisplay.cpp @@ -384,3 +384,13 @@ void OledDisplay::showNewFirmwareFailed(void) { setCentralText(60, String("Retry after 24h")); } while (DISP()->nextPage()); } + +void OledDisplay::showRebooting(void) { + DISP()->firstPage(); + do { + DISP()->setFont(u8g2_font_t0_16_tf); + // setCentralText(20, "Firmware Update"); + setCentralText(40, "Rebooting..."); + // setCentralText(60, String("Retry after 24h")); + } while (DISP()->nextPage()); +} diff --git a/src/AgOledDisplay.h b/src/AgOledDisplay.h index 9d06354..65ce2de 100644 --- a/src/AgOledDisplay.h +++ b/src/AgOledDisplay.h @@ -40,6 +40,7 @@ class OledDisplay : public PrintLog { void showNewFirmwareUpdating(String percent); void showNewFirmwareSuccess(String count); void showNewFirmwareFailed(void); + void showRebooting(void); }; #endif /** _AG_OLED_DISPLAY_H_ */ From ebbf0adf2fa037728a04be178abbd06aae247a90 Mon Sep 17 00:00:00 2001 From: MallocArray Date: Sat, 18 May 2024 21:19:40 -0500 Subject: [PATCH 03/13] Correct API value for boot --- src/AgValue.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/AgValue.cpp b/src/AgValue.cpp index 9d1fd87..14580ff 100644 --- a/src/AgValue.cpp +++ b/src/AgValue.cpp @@ -173,7 +173,7 @@ String Measurements::toString(bool localServer, AgFirmwareMode fwMode, int rssi, root["noxRaw"] = this->NOxRaw; } } - root["bootCount"] = bootCount; + root["boot"] = bootCount; if (localServer) { root["ledMode"] = config->getLedBarModeName(); From 59880f4be546b0e0fbba733f2168cf6e9377af8e Mon Sep 17 00:00:00 2001 From: Phat Nguyen Date: Wed, 22 May 2024 11:17:11 +0700 Subject: [PATCH 04/13] fix typo --- examples/OneOpenAir/OneOpenAir.ino | 6 +++--- src/Main/LedBar.cpp | 2 +- src/Main/LedBar.h | 2 +- 3 files changed, 5 insertions(+), 5 deletions(-) diff --git a/examples/OneOpenAir/OneOpenAir.ino b/examples/OneOpenAir/OneOpenAir.ino index 487ed6a..349c96c 100644 --- a/examples/OneOpenAir/OneOpenAir.ino +++ b/examples/OneOpenAir/OneOpenAir.ino @@ -459,7 +459,7 @@ static void ledBarEnabledUpdate(void) { if ((brightness == 0) || (configuration.getLedBarMode() == LedBarModeOff)) { ag->ledBar.setEnable(false); } else { - ag->ledBar.setBrighness(brightness); + ag->ledBar.setBrightness(brightness); ag->ledBar.setEnable(configuration.getLedBarMode() != LedBarModeOff); } ag->ledBar.show(); @@ -846,7 +846,7 @@ static void configUpdateHandle() { if (configuration.getLedBarMode() != LedBarMode::LedBarModeOff) { ag->ledBar.setEnable(true); } - ag->ledBar.setBrighness(configuration.getLedBarBrightness()); + ag->ledBar.setBrightness(configuration.getLedBarBrightness()); } ag->ledBar.show(); Serial.println("Set 'ledBarBrightness' brightness: " + @@ -863,7 +863,7 @@ static void configUpdateHandle() { ag->ledBar.setEnable(false); } else { ag->ledBar.setEnable(true); - ag->ledBar.setBrighness(configuration.getLedBarBrightness()); + ag->ledBar.setBrightness(configuration.getLedBarBrightness()); } } ag->ledBar.show(); diff --git a/src/Main/LedBar.cpp b/src/Main/LedBar.cpp index b00f36c..63aed35 100644 --- a/src/Main/LedBar.cpp +++ b/src/Main/LedBar.cpp @@ -64,7 +64,7 @@ void LedBar::setColor(uint8_t red, uint8_t green, uint8_t blue, int ledNum) { * * @param brightness Brightness (0 - 100)% */ -void LedBar::setBrighness(uint8_t brightness) { +void LedBar::setBrightness(uint8_t brightness) { if (this->isBegin() == false) { return; } diff --git a/src/Main/LedBar.h b/src/Main/LedBar.h index 777ed24..576951a 100644 --- a/src/Main/LedBar.h +++ b/src/Main/LedBar.h @@ -19,7 +19,7 @@ class LedBar { void begin(void); void setColor(uint8_t red, uint8_t green, uint8_t blue, int ledNum); void setColor(uint8_t red, uint8_t green, uint8_t blue); - void setBrighness(uint8_t brightness); + void setBrightness(uint8_t brightness); int getNumberOfLeds(void); void show(void); void clear(void); From 805546b78e332b6116eaf618f3e8e5f1db40301b Mon Sep 17 00:00:00 2001 From: Phat Nguyen Date: Wed, 22 May 2024 11:34:42 +0700 Subject: [PATCH 05/13] check firmware update after powerup --- examples/OneOpenAir/OneOpenAir.ino | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/examples/OneOpenAir/OneOpenAir.ino b/examples/OneOpenAir/OneOpenAir.ino index ed911d5..a9f81eb 100644 --- a/examples/OneOpenAir/OneOpenAir.ino +++ b/examples/OneOpenAir/OneOpenAir.ino @@ -219,7 +219,7 @@ void setup() { #ifdef ESP8266 // ota not supported #else - // otaHandler.updateFirmwareIfOutdated(ag->deviceId()); + otaHandler.updateFirmwareIfOutdated(ag->deviceId()); #endif apiClient.fetchServerConfiguration(); From 7550ef7b0c9286310a983fba39f8df47c977e540 Mon Sep 17 00:00:00 2001 From: Phat Nguyen Date: Wed, 22 May 2024 11:45:56 +0700 Subject: [PATCH 06/13] change OTA update period each 2h. --- examples/OneOpenAir/OneOpenAir.ino | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/examples/OneOpenAir/OneOpenAir.ino b/examples/OneOpenAir/OneOpenAir.ino index a9f81eb..82742a1 100644 --- a/examples/OneOpenAir/OneOpenAir.ino +++ b/examples/OneOpenAir/OneOpenAir.ino @@ -220,6 +220,9 @@ void setup() { // ota not supported #else otaHandler.updateFirmwareIfOutdated(ag->deviceId()); + + /** Update first OTA */ + measurements.otaBootCount = 0; #endif apiClient.fetchServerConfiguration(); @@ -861,7 +864,9 @@ static void configUpdateHandle() { doOta = true; Serial.println("First OTA"); } else { - if ((measurements.bootCount - measurements.otaBootCount) >= 30) { + /** Only check for update each 2h*/ + const float otaBootCount = 120.0f / (SERVER_SYNC_INTERVAL / 60000.0f); + if ((measurements.bootCount - measurements.otaBootCount) >= (int)otaBootCount) { doOta = true; } else { Serial.println( From c5b7c43293ff5f6fa9d70a59d632f8f104e116a1 Mon Sep 17 00:00:00 2001 From: Phat Nguyen Date: Wed, 22 May 2024 12:13:57 +0700 Subject: [PATCH 07/13] disp.setText("Monitor not", "setup on", "dashboard") called when monitor is actually already on dashboard --- examples/OneOpenAir/OneOpenAir.ino | 6 ++++-- src/AgApiClient.cpp | 17 +++++++++++++++++ src/AgApiClient.h | 2 ++ 3 files changed, 23 insertions(+), 2 deletions(-) diff --git a/examples/OneOpenAir/OneOpenAir.ino b/examples/OneOpenAir/OneOpenAir.ino index ed911d5..f087079 100644 --- a/examples/OneOpenAir/OneOpenAir.ino +++ b/examples/OneOpenAir/OneOpenAir.ino @@ -226,8 +226,10 @@ void setup() { configSchedule.update(); if (apiClient.isFetchConfigureFailed()) { if (ag->isOne()) { - stateMachine.displayHandle( - AgStateMachineWiFiOkServerOkSensorConfigFailed); + if (apiClient.isNotAvailableOnDashboard()) { + stateMachine.displayHandle( + AgStateMachineWiFiOkServerOkSensorConfigFailed); + } } stateMachine.handleLeds( AgStateMachineWiFiOkServerOkSensorConfigFailed); diff --git a/src/AgApiClient.cpp b/src/AgApiClient.cpp index 699d5ae..1f7c83b 100644 --- a/src/AgApiClient.cpp +++ b/src/AgApiClient.cpp @@ -69,11 +69,17 @@ bool AgApiClient::fetchServerConfiguration(void) { if (retCode != 200) { client.end(); getConfigFailed = true; + + /** Return code 400 mean device not setup on cloud. */ + if (retCode == 400) { + notAvailableOnDashboard = true; + } return false; } /** clear failed */ getConfigFailed = false; + notAvailableOnDashboard = false; /** Get response string */ String respContent = client.getString(); @@ -144,6 +150,17 @@ bool AgApiClient::isFetchConfigureFailed(void) { return getConfigFailed; } */ bool AgApiClient::isPostToServerFailed(void) { return postToServerFailed; } +/** + * @brief Get status device has available on dashboard or not. should get after + * fetch configuration return failed + * + * @return true + * @return false + */ +bool AgApiClient::isNotAvailableOnDashboard(void) { + return notAvailableOnDashboard; +} + void AgApiClient::setAirGradient(AirGradient *ag) { this->ag = ag; } /** diff --git a/src/AgApiClient.h b/src/AgApiClient.h index 44ca691..4b37bf3 100644 --- a/src/AgApiClient.h +++ b/src/AgApiClient.h @@ -23,6 +23,7 @@ class AgApiClient : public PrintLog { bool getConfigFailed; bool postToServerFailed; + bool notAvailableOnDashboard = false; // Device not setup on Airgradient cloud dashboard. public: AgApiClient(Stream &stream, Configuration &config); @@ -33,6 +34,7 @@ class AgApiClient : public PrintLog { bool postToServer(String data); bool isFetchConfigureFailed(void); bool isPostToServerFailed(void); + bool isNotAvailableOnDashboard(void); void setAirGradient(AirGradient *ag); bool sendPing(int rssi, int bootCount); }; From d85d89087813dc1a345d8b79af2d99d1f9918a6d Mon Sep 17 00:00:00 2001 From: Phat Nguyen Date: Fri, 24 May 2024 08:26:24 +0700 Subject: [PATCH 08/13] Change OTA update period from 2h to 1h --- examples/OneOpenAir/OneOpenAir.ino | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/examples/OneOpenAir/OneOpenAir.ino b/examples/OneOpenAir/OneOpenAir.ino index 82742a1..594878e 100644 --- a/examples/OneOpenAir/OneOpenAir.ino +++ b/examples/OneOpenAir/OneOpenAir.ino @@ -864,8 +864,8 @@ static void configUpdateHandle() { doOta = true; Serial.println("First OTA"); } else { - /** Only check for update each 2h*/ - const float otaBootCount = 120.0f / (SERVER_SYNC_INTERVAL / 60000.0f); + /** Only check for update each 1h*/ + const float otaBootCount = 60.0f / (SERVER_SYNC_INTERVAL / 60000.0f); if ((measurements.bootCount - measurements.otaBootCount) >= (int)otaBootCount) { doOta = true; } else { From 5770b41fd4b186667d90100f433b7c26528cc854 Mon Sep 17 00:00:00 2001 From: Phat Nguyen Date: Fri, 24 May 2024 08:45:50 +0700 Subject: [PATCH 09/13] remove `Update ignored due to local unofficial changes` --- src/AgConfigure.cpp | 1 - 1 file changed, 1 deletion(-) diff --git a/src/AgConfigure.cpp b/src/AgConfigure.cpp index a52dbf9..2fc5536 100644 --- a/src/AgConfigure.cpp +++ b/src/AgConfigure.cpp @@ -628,7 +628,6 @@ bool Configuration::parse(String data, bool isLocal) { saveConfig(); printConfig(); } else { - logInfo("Update ignored due to local unofficial changes"); if (ledBarTestRequested || co2CalibrationRequested) { udpated = true; } From 78a2a7802007fa7ab80162ea239f2b6151aead8d Mon Sep 17 00:00:00 2001 From: Phat Nguyen Date: Sat, 25 May 2024 20:25:50 +0700 Subject: [PATCH 10/13] Update CO2 calibration message show on display --- examples/BASIC/BASIC.ino | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/examples/BASIC/BASIC.ino b/examples/BASIC/BASIC.ino index 480afa0..ea1bb1b 100644 --- a/examples/BASIC/BASIC.ino +++ b/examples/BASIC/BASIC.ino @@ -224,7 +224,7 @@ static void failedHandler(String msg) { static void executeCo2Calibration(void) { /** Count down for co2CalibCountdown secs */ for (int i = 0; i < SENSOR_CO2_CALIB_COUNTDOWN_MAX; i++) { - displayShowText("CO2 calib", "after", + displayShowText("CO2 calib.", "after", String(SENSOR_CO2_CALIB_COUNTDOWN_MAX - i) + " sec"); delay(1000); } @@ -232,16 +232,16 @@ static void executeCo2Calibration(void) { if (ag.s8.setBaselineCalibration()) { displayShowText("Calib", "success", ""); delay(1000); - displayShowText("Wait for", "finish", "..."); + displayShowText("Wait to", "complete", "..."); int count = 0; while (ag.s8.isBaseLineCalibrationDone() == false) { delay(1000); count++; } - displayShowText("Finish", "after", String(count) + " sec"); + displayShowText("Finished", "after", String(count) + " sec"); delay(DISPLAY_DELAY_SHOW_CONTENT_MS); } else { - displayShowText("Calib", "failure!!!", ""); + displayShowText("Calibration", "failure", ""); delay(DISPLAY_DELAY_SHOW_CONTENT_MS); } } From af0fbadd80e994264d0db9bc7719aed0b9eea30a Mon Sep 17 00:00:00 2001 From: Phat Nguyen Date: Wed, 29 May 2024 07:55:27 +0700 Subject: [PATCH 11/13] Handle LED bar button test before init sensor. --- examples/OneOpenAir/OneOpenAir.ino | 39 +++++++++++++++--------------- 1 file changed, 20 insertions(+), 19 deletions(-) diff --git a/examples/OneOpenAir/OneOpenAir.ino b/examples/OneOpenAir/OneOpenAir.ino index e471d1f..e2e1a00 100644 --- a/examples/OneOpenAir/OneOpenAir.ino +++ b/examples/OneOpenAir/OneOpenAir.ino @@ -152,8 +152,6 @@ void setup() { } Serial.println("Detected " + ag->getBoardName()); - /** Init sensor */ - boardInit(); configuration.setAirGradient(ag); oledDisplay.setAirGradient(ag); stateMachine.setAirGradient(ag); @@ -162,11 +160,13 @@ void setup() { openMetrics.setAirGradient(ag); localServer.setAirGraident(ag); + /** Init sensor */ + boardInit(); + /** Connecting wifi */ bool connectToWifi = false; if (ag->isOne()) { if (ledBarButtonTest) { - stateMachine.executeLedBarPowerUpTest(); if (ag->button.getState() == PushButton::BUTTON_PRESSED) { WiFi.begin("airgradient", "cleanair"); Serial.println("WiFi Credential reset to factory defaults"); @@ -623,6 +623,23 @@ static void oneIndoorInit(void) { ag->button.begin(); ag->watchdog.begin(); + /** Run LED test on start up */ + oledDisplay.setText("Press now for", "LED test", ""); + ledBarButtonTest = false; + uint32_t stime = millis(); + while (true) { + if (ag->button.getState() == ag->button.BUTTON_PRESSED) { + ledBarButtonTest = true; + stateMachine.executeLedBarPowerUpTest(); + break; + } + delay(1); + uint32_t ms = (uint32_t)(millis() - stime); + if (ms >= 3000) { + break; + } + } + /** Init sensor SGP41 */ if (sgp41Init() == false) { dispSensorNotFound("SGP41"); @@ -649,22 +666,6 @@ static void oneIndoorInit(void) { dispSensorNotFound("PMS"); } - - /** Run LED test on start up */ - oledDisplay.setText("Press now for", "LED test", ""); - ledBarButtonTest = false; - uint32_t stime = millis(); - while (true) { - if (ag->button.getState() == ag->button.BUTTON_PRESSED) { - ledBarButtonTest = true; - break; - } - delay(1); - uint32_t ms = (uint32_t)(millis() - stime); - if (ms >= 3000) { - break; - } - } } static void openAirInit(void) { configuration.hasSensorSHT = false; From e9224a5de08e9028835fb7ec6333cc45273e5927 Mon Sep 17 00:00:00 2001 From: Phat Nguyen Date: Wed, 29 May 2024 07:58:49 +0700 Subject: [PATCH 12/13] Remove test logging message --- examples/OneOpenAir/OneOpenAir.ino | 6 ------ 1 file changed, 6 deletions(-) diff --git a/examples/OneOpenAir/OneOpenAir.ino b/examples/OneOpenAir/OneOpenAir.ino index 349c96c..71a318b 100644 --- a/examples/OneOpenAir/OneOpenAir.ino +++ b/examples/OneOpenAir/OneOpenAir.ino @@ -849,13 +849,9 @@ static void configUpdateHandle() { ag->ledBar.setBrightness(configuration.getLedBarBrightness()); } ag->ledBar.show(); - Serial.println("Set 'ledBarBrightness' brightness: " + - String(configuration.getLedBarBrightness())); } if (configuration.isLedBarModeChanged()) { - Serial.println("Set 'ledBarMode' " + String(configuration.getLedBarMode())); - Serial.println("Get 'ledBarBrightness' " + String(configuration.getLedBarBrightness())); if (configuration.getLedBarBrightness() == 0) { ag->ledBar.setEnable(false); } else { @@ -871,8 +867,6 @@ static void configUpdateHandle() { if (configuration.isDisplayBrightnessChanged()) { oledDisplay.setBrightness(configuration.getDisplayBrightness()); - Serial.println("Set 'DisplayBrightness' brightness: " + - String(configuration.getDisplayBrightness())); } stateMachine.executeLedBarTest(); From 3c1d0a862f78194bf737900ef2b659181d5a1642 Mon Sep 17 00:00:00 2001 From: Phat Nguyen Date: Wed, 29 May 2024 16:34:00 +0700 Subject: [PATCH 13/13] update comment --- examples/OneOpenAir/OneOpenAir.ino | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/examples/OneOpenAir/OneOpenAir.ino b/examples/OneOpenAir/OneOpenAir.ino index e2e1a00..243537c 100644 --- a/examples/OneOpenAir/OneOpenAir.ino +++ b/examples/OneOpenAir/OneOpenAir.ino @@ -623,7 +623,7 @@ static void oneIndoorInit(void) { ag->button.begin(); ag->watchdog.begin(); - /** Run LED test on start up */ + /** Run LED test on start up if button pressed */ oledDisplay.setText("Press now for", "LED test", ""); ledBarButtonTest = false; uint32_t stime = millis();