From ed02f66ca25d87185d187e5a7f94df83c6ebb942 Mon Sep 17 00:00:00 2001 From: Phat Nguyen Date: Thu, 16 May 2024 21:12:02 +0700 Subject: [PATCH] Correct OTA update process show message on display --- examples/OneOpenAir/OneOpenAir.ino | 20 ++++++++++++++++++++ examples/OneOpenAir/OtaHandler.h | 21 ++++++++++++++++----- src/AgOledDisplay.cpp | 27 ++++++++++++++++++++++++++- src/AgOledDisplay.h | 2 ++ 4 files changed, 64 insertions(+), 6 deletions(-) diff --git a/examples/OneOpenAir/OneOpenAir.ino b/examples/OneOpenAir/OneOpenAir.ino index ed911d5..35bcaeb 100644 --- a/examples/OneOpenAir/OneOpenAir.ino +++ b/examples/OneOpenAir/OneOpenAir.ino @@ -519,6 +519,26 @@ static void displayExecuteOta(OtaState state, String msg, int processing) { delay(2500); 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: { if (ag->isOne()) { oledDisplay.showNewFirmwareUpdating(String(processing)); diff --git a/examples/OneOpenAir/OtaHandler.h b/examples/OneOpenAir/OtaHandler.h index 3dc4242..33fa233 100644 --- a/examples/OneOpenAir/OtaHandler.h +++ b/examples/OneOpenAir/OtaHandler.h @@ -18,6 +18,8 @@ enum OtaUpdateOutcome { enum OtaState { OTA_STATE_BEGIN, OTA_STATE_FAIL, + OTA_STATE_SKIP, + OTA_STATE_UP_TO_DATE, OTA_STATE_PROCESSING, OTA_STATE_SUCCESS }; @@ -40,13 +42,22 @@ public: config.url = urlAsChar; OtaUpdateOutcome ret = attemptToPerformOta(&config); 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, ""); - } - } else { - if(this->callback) { + break; + case OtaUpdateOutcome::UDPATE_SKIPPED: + 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, ""); + break; + default: + break; } } } diff --git a/src/AgOledDisplay.cpp b/src/AgOledDisplay.cpp index d5164e2..125c887 100644 --- a/src/AgOledDisplay.cpp +++ b/src/AgOledDisplay.cpp @@ -381,6 +381,31 @@ void OledDisplay::showNewFirmwareFailed(void) { DISP()->setFont(u8g2_font_t0_16_tf); setCentralText(20, "Firmware Update"); 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()); } diff --git a/src/AgOledDisplay.h b/src/AgOledDisplay.h index 9d06354..7bd7614 100644 --- a/src/AgOledDisplay.h +++ b/src/AgOledDisplay.h @@ -40,6 +40,8 @@ public: void showNewFirmwareUpdating(String percent); void showNewFirmwareSuccess(String count); void showNewFirmwareFailed(void); + void showNewFirmwareSkipped(void); + void showNewFirmwareUpToDate(void); }; #endif /** _AG_OLED_DISPLAY_H_ */