Correct OTA update process show message on display

This commit is contained in:
Phat Nguyen
2024-05-16 21:12:02 +07:00
parent f505b39247
commit ed02f66ca2
4 changed files with 64 additions and 6 deletions

View File

@ -519,6 +519,26 @@ static void displayExecuteOta(OtaState state, String msg, int processing) {
delay(2500); delay(2500);
break; break;
} }
case OtaState::OTA_STATE_SKIP: {
if (ag->isOne()) {
oledDisplay.showNewFirmwareSkipped();
} else {
Serial.println("Firmware update: Skipped");
}
delay(2500);
break;
}
case OtaState::OTA_STATE_UP_TO_DATE: {
if (ag->isOne()) {
oledDisplay.showNewFirmwareUpToDate();
} else {
Serial.println("Firmware update: up to date");
}
delay(2500);
break;
}
case OtaState::OTA_STATE_PROCESSING: { case OtaState::OTA_STATE_PROCESSING: {
if (ag->isOne()) { if (ag->isOne()) {
oledDisplay.showNewFirmwareUpdating(String(processing)); oledDisplay.showNewFirmwareUpdating(String(processing));

View File

@ -18,6 +18,8 @@ enum OtaUpdateOutcome {
enum OtaState { enum OtaState {
OTA_STATE_BEGIN, OTA_STATE_BEGIN,
OTA_STATE_FAIL, OTA_STATE_FAIL,
OTA_STATE_SKIP,
OTA_STATE_UP_TO_DATE,
OTA_STATE_PROCESSING, OTA_STATE_PROCESSING,
OTA_STATE_SUCCESS OTA_STATE_SUCCESS
}; };
@ -40,13 +42,22 @@ public:
config.url = urlAsChar; config.url = urlAsChar;
OtaUpdateOutcome ret = attemptToPerformOta(&config); OtaUpdateOutcome ret = attemptToPerformOta(&config);
Serial.println(ret); Serial.println(ret);
if (ret == OtaUpdateOutcome::UPDATE_PERFORMED) {
if (this->callback) { if (this->callback) {
switch (ret) {
case OtaUpdateOutcome::UPDATE_PERFORMED:
this->callback(OtaState::OTA_STATE_SUCCESS, ""); this->callback(OtaState::OTA_STATE_SUCCESS, "");
} break;
} else { case OtaUpdateOutcome::UDPATE_SKIPPED:
if(this->callback) { this->callback(OtaState::OTA_STATE_SKIP, "");
break;
case OtaUpdateOutcome::ALREADY_UP_TO_DATE:
this->callback(OtaState::OTA_STATE_UP_TO_DATE, "");
break;
case OtaUpdateOutcome::UPDATE_FAILED:
this->callback(OtaState::OTA_STATE_FAIL, ""); this->callback(OtaState::OTA_STATE_FAIL, "");
break;
default:
break;
} }
} }
} }

View File

@ -381,6 +381,31 @@ void OledDisplay::showNewFirmwareFailed(void) {
DISP()->setFont(u8g2_font_t0_16_tf); DISP()->setFont(u8g2_font_t0_16_tf);
setCentralText(20, "Firmware Update"); setCentralText(20, "Firmware Update");
setCentralText(40, "Failed"); setCentralText(40, "Failed");
setCentralText(60, String("Retry after 24h")); } while (DISP()->nextPage());
}
void OledDisplay::showNewFirmwareSkipped(void) {
if (isDisplayOff) {
return;
}
DISP()->firstPage();
do {
DISP()->setFont(u8g2_font_t0_16_tf);
setCentralText(20, "Firmware Update");
setCentralText(40, "skipped");
} while (DISP()->nextPage());
}
void OledDisplay::showNewFirmwareUpToDate(void) {
if (isDisplayOff) {
return;
}
DISP()->firstPage();
do {
DISP()->setFont(u8g2_font_t0_16_tf);
setCentralText(20, "Firmware Update");
setCentralText(40, "up to date");
} while (DISP()->nextPage()); } while (DISP()->nextPage());
} }

View File

@ -40,6 +40,8 @@ public:
void showNewFirmwareUpdating(String percent); void showNewFirmwareUpdating(String percent);
void showNewFirmwareSuccess(String count); void showNewFirmwareSuccess(String count);
void showNewFirmwareFailed(void); void showNewFirmwareFailed(void);
void showNewFirmwareSkipped(void);
void showNewFirmwareUpToDate(void);
}; };
#endif /** _AG_OLED_DISPLAY_H_ */ #endif /** _AG_OLED_DISPLAY_H_ */