diff --git a/examples/OneOpenAir/OneOpenAir.ino b/examples/OneOpenAir/OneOpenAir.ino index e471d1f..c5f09fc 100644 --- a/examples/OneOpenAir/OneOpenAir.ino +++ b/examples/OneOpenAir/OneOpenAir.ino @@ -467,9 +467,10 @@ 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(); } } @@ -812,10 +813,6 @@ static void configUpdateHandle() { return; } - if (ag->isOne()) { - ledBarEnabledUpdate(); - stateMachine.executeLedBarTest(); - } stateMachine.executeCo2Calibration(); String mqttUri = configuration.getMqttBrokerUri(); @@ -851,15 +848,36 @@ static void configUpdateHandle() { if (ag->isOne()) { if (configuration.isLedBarBrightnessChanged()) { - ag->ledBar.setBrighness(configuration.getLedBarBrightness()); - Serial.println("Set 'LedBarBrightness' brightness: " + - String(configuration.getLedBarBrightness())); + if (configuration.getLedBarBrightness() == 0) { + ag->ledBar.setEnable(false); + } else { + if (configuration.getLedBarMode() != LedBarMode::LedBarModeOff) { + ag->ledBar.setEnable(true); + } + ag->ledBar.setBrightness(configuration.getLedBarBrightness()); + } + ag->ledBar.show(); } + + if (configuration.isLedBarModeChanged()) { + 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.setBrightness(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 2fc5536..0173edb 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]; @@ -1147,6 +1150,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 @@ private: bool displayBrightnessChanged = false; String otaNewFirmwareVersion; bool _offlineMode = false; + bool _ledBarModeChanged = false; AirGradient* ag; @@ -80,6 +81,7 @@ public: bool isOfflineMode(void); void setOfflineMode(bool offline); void setOfflineModeWithoutSave(bool offline); + bool isLedBarModeChanged(void); }; #endif /** _AG_CONFIG_H_ */ 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 @@ public: 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);