handle ledBarTestRequested on OpenAir

This commit is contained in:
Phat Nguyen
2024-09-01 20:19:18 +07:00
parent 663836e277
commit d3534cda52
4 changed files with 56 additions and 26 deletions

View File

@ -939,6 +939,9 @@ static void configUpdateHandle() {
stateMachine.executeLedBarTest(); stateMachine.executeLedBarTest();
} }
else if(ag->isOpenAir()) {
stateMachine.executeLedBarTest();
}
appDispHandler(); appDispHandler();
appLedHandler(); appLedHandler();

View File

@ -1,5 +1,6 @@
#include "AgStateMachine.h" #include "AgStateMachine.h"
#define LED_TEST_BLINK_DELAY 50 /** ms */
#define LED_FAST_BLINK_DELAY 250 /** ms */ #define LED_FAST_BLINK_DELAY 250 /** ms */
#define LED_SLOW_BLINK_DELAY 1000 /** ms */ #define LED_SLOW_BLINK_DELAY 1000 /** ms */
#define LED_SHORT_BLINK_DELAY 500 /** ms */ #define LED_SHORT_BLINK_DELAY 500 /** ms */
@ -305,18 +306,23 @@ void StateMachine::co2Calibration(void) {
void StateMachine::ledBarTest(void) { void StateMachine::ledBarTest(void) {
if (config.isLedBarTestRequested()) { if (config.isLedBarTestRequested()) {
if (config.getCountry() == "TH") { if (ag->isOne()) {
uint32_t tstart = millis(); if (config.getCountry() == "TH") {
logInfo("Start run LED test for 2 min"); uint32_t tstart = millis();
while (1) { logInfo("Start run LED test for 2 min");
ledBarRunTest(); while (1) {
uint32_t ms = (uint32_t)(millis() - tstart); ledBarRunTest();
if (ms >= (60 * 1000 * 2)) { uint32_t ms = (uint32_t)(millis() - tstart);
logInfo("LED test after 2 min finish"); if (ms >= (60 * 1000 * 2)) {
break; logInfo("LED test after 2 min finish");
break;
}
} }
} else {
ledBarRunTest();
} }
} else { }
else if(ag->isOpenAir()) {
ledBarRunTest(); ledBarRunTest();
} }
} }
@ -325,22 +331,31 @@ void StateMachine::ledBarTest(void) {
void StateMachine::ledBarPowerUpTest(void) { ledBarRunTest(); } void StateMachine::ledBarPowerUpTest(void) { ledBarRunTest(); }
void StateMachine::ledBarRunTest(void) { void StateMachine::ledBarRunTest(void) {
disp.setText("LED Test", "running", "....."); if (ag->isOne()) {
runLedTest('r'); disp.setText("LED Test", "running", ".....");
ag->ledBar.show(); runLedTest('r');
delay(1000); ag->ledBar.show();
runLedTest('g'); delay(1000);
ag->ledBar.show(); runLedTest('g');
delay(1000); ag->ledBar.show();
runLedTest('b'); delay(1000);
ag->ledBar.show(); runLedTest('b');
delay(1000); ag->ledBar.show();
runLedTest('w'); delay(1000);
ag->ledBar.show(); runLedTest('w');
delay(1000); ag->ledBar.show();
runLedTest('n'); delay(1000);
ag->ledBar.show(); runLedTest('n');
delay(1000); ag->ledBar.show();
delay(1000);
} else if (ag->isOpenAir()) {
for (int i = 0; i < 100; i++) {
ag->statusLed.setOn();
delay(LED_TEST_BLINK_DELAY);
ag->statusLed.setOff();
delay(LED_TEST_BLINK_DELAY);
}
}
} }
void StateMachine::runLedTest(char color) { void StateMachine::runLedTest(char color) {

View File

@ -65,6 +65,10 @@ bool AirGradient::isOne(void) {
return boardType == BoardType::ONE_INDOOR; return boardType == BoardType::ONE_INDOOR;
} }
bool AirGradient::isOpenAir(void) {
return boardType == BoardType::OPEN_AIR_OUTDOOR;
}
bool AirGradient::isPro4_2(void) { bool AirGradient::isPro4_2(void) {
return boardType == BoardType::DIY_PRO_INDOOR_V4_2; return boardType == BoardType::DIY_PRO_INDOOR_V4_2;
} }

View File

@ -135,6 +135,14 @@ public:
*/ */
bool isOne(void); bool isOne(void);
/**
* @brief Check that Airgradient object is OPEN_AIR
*
* @return true
* @return false
*/
bool isOpenAir(void);
/** /**
* @brief Check that Airgradient object is DIY_PRO 4.2 indoor * @brief Check that Airgradient object is DIY_PRO 4.2 indoor
* *