fix: Completely turn off LEDbar

This commit is contained in:
Phat Nguyen
2024-03-10 09:34:04 +07:00
parent 512509c2e2
commit 9ae8fb2355
3 changed files with 36 additions and 5 deletions

View File

@ -485,6 +485,7 @@ private:
if (EEPROM.readBytes(0, &config, sizeof(config)) != sizeof(config)) {
config.inF = false;
config.inUSAQI = false;
config.useRGBLedBar = UseLedBarCO2; // default use LED bar for CO2
memset(config.models, 0, sizeof(config.models));
memset(config.mqttBrokers, 0, sizeof(config.mqttBrokers));
@ -743,13 +744,17 @@ void setup() {
/** Show boot display */
Serial.println("Firmware Version: " + ag.getVersion());
displayShowText("AirGradient ONE", "FW Version: ", ag.getVersion());
boardInit();
delay(DISPLAY_DELAY_SHOW_CONTENT_MS);
/** Init sensor */
boardInit();
/** Init AirGradient server */
agServer.begin();
if (agServer.getLedBarMode() == UseLedBarOff) {
ag.ledBar.setEnable(false);
}
/** Run LED test on start up */
displayShowText("Press now for", "LED test &", "offline mode");
@ -799,6 +804,8 @@ void setup() {
dispSmHandler(APP_SM_WIFI_OK_SERVER_OK_SENSOR_CONFIG_FAILED);
ledSmHandler(APP_SM_WIFI_OK_SERVER_OK_SENSOR_CONFIG_FAILED);
delay(DISPLAY_DELAY_SHOW_CONTENT_MS);
} else {
ag.ledBar.setEnable(agServer.getLedBarMode() != UseLedBarOff);
}
}
@ -1767,6 +1774,9 @@ static void updateServerConfiguration(void) {
}
}
// Update LED bar
ag.ledBar.setEnable(agServer.getLedBarMode() != UseLedBarOff);
if (agServer.getCo2AbcDaysConfig() > 0) {
if (hasSensorS8) {
int newHour = agServer.getCo2AbcDaysConfig() * 24;
@ -2143,9 +2153,11 @@ static void sensorLedColorHandler(void) {
case UseLedBarPM:
setRGBledPMcolor(pm25);
break;
case UseLedBarOff:
ag.ledBar.clear();
break;
default:
ag.ledBar.setColor(0, 0, 0, ag.ledBar.getNumberOfLeds() - 1);
ag.ledBar.setColor(0, 0, 0, ag.ledBar.getNumberOfLeds() - 2);
ag.ledBar.clear();
break;
}
}

View File

@ -112,9 +112,13 @@ void LedBar::setColor(uint8_t red, uint8_t green, uint8_t blue) {
/**
* @brief Call to turn LED on/off base on the setting color
*
*
*/
void LedBar::show(void) {
// Ignore update the LED if LED bar disabled
if (enabled == false) {
return;
}
if (pixel()->canShow()) {
pixel()->show();
}
@ -122,6 +126,18 @@ void LedBar::show(void) {
/**
* @brief Set all LED to off color (r,g,b) = (0,0,0)
*
*
*/
void LedBar::clear(void) { pixel()->clear(); }
void LedBar::setEnable(bool enable) {
if (this->enabled != enable) {
if (enable == false) {
pixel()->clear();
pixel()->show();
}
}
this->enabled = enable;
}
bool LedBar::isEnabled(void) { return enabled; }

View File

@ -23,8 +23,11 @@ public:
int getNumberOfLeds(void);
void show(void);
void clear(void);
void setEnable(bool enable);
bool isEnabled(void);
private:
bool enabled = true;
const BoardDef *_bsp;
bool _isBegin = false;
uint8_t _ledState = 0;