@@ -27,11 +27,11 @@ FirmwareUpdate::FirmwareUpdate(Pinetime::Applications::DisplayApp* app, Pinetime
2727 lv_bar_set_value (bar1, 0 , LV_ANIM_OFF);
2828
2929 percentLabel = lv_label_create (lv_scr_act (), nullptr );
30- lv_label_set_text (percentLabel, " " );
30+ lv_label_set_text (percentLabel, " Waiting... " );
3131 lv_obj_set_auto_realign (percentLabel, true );
3232 lv_obj_align (percentLabel, bar1, LV_ALIGN_OUT_TOP_MID, 0 , 60 );
33-
3433 taskRefresh = lv_task_create (RefreshTaskCallback, LV_DISP_DEF_REFR_PERIOD, LV_TASK_PRIO_MID, this );
34+ startTime = xTaskGetTickCount ();
3535}
3636
3737FirmwareUpdate::~FirmwareUpdate () {
@@ -43,23 +43,37 @@ void FirmwareUpdate::Refresh() {
4343 switch (bleController.State ()) {
4444 default :
4545 case Pinetime::Controllers::Ble::FirmwareUpdateStates::Idle:
46+ // This condition makes sure that the app is exited if somehow it got
47+ // launched without a firmware update. This should never happen.
48+ if (state != States::Error) {
49+ if (xTaskGetTickCount () - startTime > (60 * 1024 )) {
50+ UpdateError ();
51+ state = States::Error;
52+ }
53+ } else if (xTaskGetTickCount () - startTime > (5 * 1024 )) {
54+ running = false ;
55+ }
56+ break ;
4657 case Pinetime::Controllers::Ble::FirmwareUpdateStates::Running:
4758 if (state != States::Running)
4859 state = States::Running;
4960 DisplayProgression ();
50- return ;
61+ break ;
5162 case Pinetime::Controllers::Ble::FirmwareUpdateStates::Validated:
5263 if (state != States::Validated) {
5364 UpdateValidated ();
5465 state = States::Validated;
5566 }
56- return ;
67+ break ;
5768 case Pinetime::Controllers::Ble::FirmwareUpdateStates::Error:
5869 if (state != States::Error) {
5970 UpdateError ();
6071 state = States::Error;
6172 }
62- return ;
73+ if (xTaskGetTickCount () - startTime > (5 * 1024 )) {
74+ running = false ;
75+ }
76+ break ;
6377 }
6478}
6579
@@ -81,4 +95,9 @@ void FirmwareUpdate::UpdateValidated() {
8195void FirmwareUpdate::UpdateError () {
8296 lv_label_set_recolor (percentLabel, true );
8397 lv_label_set_text (percentLabel, " #ff0000 Error!#" );
98+ startTime = xTaskGetTickCount ();
99+ }
100+
101+ bool FirmwareUpdate::OnButtonPushed () {
102+ return true ;
84103}
0 commit comments