diff options
| author | Michele Bini <michele.bini@gmail.com> | 2022-04-13 19:34:21 (GMT) |
|---|---|---|
| committer | Michele Bini <michele.bini@gmail.com> | 2022-04-13 19:36:14 (GMT) |
| commit | 641a632830500b15b6eaae7d2b49d4d7f260549b (patch) | |
| tree | bc6490d1d38905e3a19713ec29d4ebc01cb79a0e | |
| parent | 18e8117e45b9aa290c16e96fb1e200f8e61425de (diff) | |
Attempt to fix lost alarms
| -rw-r--r-- | src/components/alarm/AlarmController.cpp | 13 | ||||
| -rw-r--r-- | src/systemtask/SystemTask.cpp | 2 |
2 files changed, 14 insertions, 1 deletions
diff --git a/src/components/alarm/AlarmController.cpp b/src/components/alarm/AlarmController.cpp index 28b328d..89ed689 100644 --- a/src/components/alarm/AlarmController.cpp +++ b/src/components/alarm/AlarmController.cpp @@ -48,6 +48,19 @@ void AlarmController::SetAlarmTime(uint8_t alarmHr, uint8_t alarmMin) { minutes = alarmMin; } +void AlarmController::RescheduleAlarm() { + + app_timer_stop(alarmAppTimer); + auto now = dateTimeController.CurrentDateTime(); + alarmTime = now; + auto mSecToAlarm = std::chrono::duration_cast<std::chrono::milliseconds>(alarmTime - now).count(); + + if (mSecToAlarm < 0) { mSecToAlarm = 0; } + + app_timer_start(alarmAppTimer, APP_TIMER_TICKS(mSecToAlarm), this); + +} + void AlarmController::ScheduleAlarm() { // Determine the next time the alarm needs to go off and set the app_timer app_timer_stop(alarmAppTimer); diff --git a/src/systemtask/SystemTask.cpp b/src/systemtask/SystemTask.cpp index 3e4f8f6..2ab7fd3 100644 --- a/src/systemtask/SystemTask.cpp +++ b/src/systemtask/SystemTask.cpp @@ -295,7 +295,7 @@ void SystemTask::Work() { ReloadIdleTimer(); displayApp.PushMessage(Pinetime::Applications::Display::Messages::UpdateDateTime); if (alarmController.State() == Controllers::AlarmController::AlarmState::Set) { - alarmController.ScheduleAlarm(); + alarmController.RescheduleAlarm(); } break; case Messages::OnNewNotification: |
