summaryrefslogtreecommitdiff
path: root/src/displayapp/screens/FirmwareUpdate.cpp
diff options
context:
space:
mode:
authorRiku Isokoski <riksu9000@gmail.com>2021-07-23 19:56:00 (GMT)
committerRiku Isokoski <riksu9000@gmail.com>2021-07-23 19:56:00 (GMT)
commitfc93bdbbbac9b19530db18f17817ffe2c17260c4 (patch)
treede7f5dc57797b26393581502acdf53d8098286e6 /src/displayapp/screens/FirmwareUpdate.cpp
parent331fc2be6931238960c894d0a926f673607455fc (diff)
parent0a0f28fff4be4c9fd9030d9375459fb7b5fdd004 (diff)
Merge branch 'develop' into refresh_rework
Diffstat (limited to 'src/displayapp/screens/FirmwareUpdate.cpp')
-rw-r--r--src/displayapp/screens/FirmwareUpdate.cpp29
1 files changed, 24 insertions, 5 deletions
diff --git a/src/displayapp/screens/FirmwareUpdate.cpp b/src/displayapp/screens/FirmwareUpdate.cpp
index 11ac7bc..79bda0b 100644
--- a/src/displayapp/screens/FirmwareUpdate.cpp
+++ b/src/displayapp/screens/FirmwareUpdate.cpp
@@ -27,11 +27,11 @@ FirmwareUpdate::FirmwareUpdate(Pinetime::Applications::DisplayApp* app, Pinetime
lv_bar_set_value(bar1, 0, LV_ANIM_OFF);
percentLabel = lv_label_create(lv_scr_act(), nullptr);
- lv_label_set_text(percentLabel, "");
+ lv_label_set_text(percentLabel, "Waiting...");
lv_obj_set_auto_realign(percentLabel, true);
lv_obj_align(percentLabel, bar1, LV_ALIGN_OUT_TOP_MID, 0, 60);
-
taskRefresh = lv_task_create(RefreshTaskCallback, LV_DISP_DEF_REFR_PERIOD, LV_TASK_PRIO_MID, this);
+ startTime = xTaskGetTickCount();
}
FirmwareUpdate::~FirmwareUpdate() {
@@ -43,23 +43,37 @@ void FirmwareUpdate::Refresh() {
switch (bleController.State()) {
default:
case Pinetime::Controllers::Ble::FirmwareUpdateStates::Idle:
+ // This condition makes sure that the app is exited if somehow it got
+ // launched without a firmware update. This should never happen.
+ if (state != States::Error) {
+ if (xTaskGetTickCount() - startTime > (60 * 1024)) {
+ UpdateError();
+ state = States::Error;
+ }
+ } else if (xTaskGetTickCount() - startTime > (5 * 1024)) {
+ running = false;
+ }
+ break;
case Pinetime::Controllers::Ble::FirmwareUpdateStates::Running:
if (state != States::Running)
state = States::Running;
DisplayProgression();
- return;
+ break;
case Pinetime::Controllers::Ble::FirmwareUpdateStates::Validated:
if (state != States::Validated) {
UpdateValidated();
state = States::Validated;
}
- return;
+ break;
case Pinetime::Controllers::Ble::FirmwareUpdateStates::Error:
if (state != States::Error) {
UpdateError();
state = States::Error;
}
- return;
+ if (xTaskGetTickCount() - startTime > (5 * 1024)) {
+ running = false;
+ }
+ break;
}
}
@@ -81,4 +95,9 @@ void FirmwareUpdate::UpdateValidated() {
void FirmwareUpdate::UpdateError() {
lv_label_set_recolor(percentLabel, true);
lv_label_set_text(percentLabel, "#ff0000 Error!#");
+ startTime = xTaskGetTickCount();
+}
+
+bool FirmwareUpdate::OnButtonPushed() {
+ return true;
}