Merge pull request #108 from airgradienthq/feature/press-button-for-offline-mode

Display show message for offline/online mode
This commit is contained in:
Phat Nguyen
2024-05-10 09:18:32 +07:00
committed by GitHub
3 changed files with 664 additions and 427 deletions

View File

@ -90,7 +90,6 @@ static LocalServer localServer(Serial, openMetrics, measurements, configuration,
static int pmFailCount = 0;
static uint32_t factoryBtnPressTime = 0;
static int getCO2FailCount = 0;
static bool offlineMode = false;
static AgFirmwareMode fwMode = FW_MODE_I_9PSL;
static bool ledBarButtonTest = false;
@ -175,8 +174,30 @@ void setup() {
}
} else {
ledBarEnabledUpdate();
connectToWifi = true;
}
/** 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());
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 {
connectToWifi = true;
}
@ -210,8 +231,6 @@ void setup() {
} else {
ledBarEnabledUpdate();
}
} else {
offlineMode = true;
}
}
}
@ -259,9 +278,9 @@ void loop() {
}
}
/** Auto reset external watchdog timer on offline mode and
* postDataToAirGradient disabled. */
if (offlineMode || (configuration.isPostDataToAirGradient() == false)) {
/** Auto reset watchdog timer if offline mode or postDataToAirGradient */
if (configuration.isOfflineMode() ||
(configuration.isPostDataToAirGradient() == false)) {
watchdogFeedSchedule.run();
}
@ -612,7 +631,7 @@ static void oneIndoorInit(void) {
}
/** Run LED test on start up */
oledDisplay.setText("Press now for", "LED test &", "offline mode");
oledDisplay.setText("Press now for", "LED test", "");
ledBarButtonTest = false;
uint32_t stime = millis();
while (true) {

File diff suppressed because it is too large Load Diff

View File

@ -8,31 +8,6 @@
class Configuration : public PrintLog {
private:
struct Config {
char model[20];
char country[3]; /** Country name has only 2 character, ex: TH = Thailand */
char mqttBroker[256]; /** MQTT broker URI */
bool inUSAQI; /** If PM standard "ugm3" inUSAQI = false, otherwise is true
*/
bool inF; /** Temperature unit F */
bool postDataToAirGradient; /** If true, monitor will not POST data to
airgradient server. Make sure no error
message shown on monitor */
uint8_t configurationControl; /** If true, configuration from airgradient
server will be ignored */
bool displayMode; /** true if enable display */
uint8_t useRGBLedBar;
uint8_t abcDays;
uint8_t ledBarBrightness;
uint8_t displayBrightness;
int tvocLearningOffset;
int noxLearningOffset;
char temperatureUnit; // 'f' or 'c'
time_t lastOta;
uint32_t _check;
};
struct Config config;
bool co2CalibrationRequested;
bool ledBarTestRequested;
bool udpated;
@ -57,6 +32,7 @@ private:
String getPMStandardString(bool usaqi);
String getDisplayModeString(bool dispMode);
String getAbcDayString(int value);
void toConfig(const char* buf);
public:
Configuration(Stream &debugLog);
@ -102,6 +78,8 @@ public:
int getLastOta(void);
void updateLastOta(void);
String newFirmwareVersion(void);
bool isOfflineMode(void);
void setOfflineMode(bool offline);
};
#endif /** _AG_CONFIG_H_ */