diff options
Diffstat (limited to 'src/components/alarm/AlarmController.cpp')
| -rw-r--r-- | src/components/alarm/AlarmController.cpp | 16 |
1 files changed, 16 insertions, 0 deletions
diff --git a/src/components/alarm/AlarmController.cpp b/src/components/alarm/AlarmController.cpp index a08bfbd..6e93f6d 100644 --- a/src/components/alarm/AlarmController.cpp +++ b/src/components/alarm/AlarmController.cpp @@ -44,6 +44,22 @@ void AlarmController::SetAlarmTime(uint8_t alarmHr, uint8_t alarmMin) { minutes = alarmMin; } +void AlarmController::RescheduleAlarm() { + + if (state != AlarmState::Set) { return; } + + xTimerStop(alarmAppTimer, 0); + auto now = dateTimeController.CurrentDateTime(); + alarmTime = now; + auto mSecToAlarm = std::chrono::duration_cast<std::chrono::milliseconds>(alarmTime - now).count(); + + if (mSecToAlarm < 0) { mSecToAlarm = 0; } + + xTimerChangePeriod(alarmAppTimer, APP_TIMER_TICKS(mSecToAlarm), 0); + xTimerStart(alarmAppTimer, 0); + +} + void AlarmController::ScheduleAlarm() { // Determine the next time the alarm needs to go off and set the app_timer xTimerStop(alarmAppTimer, 0); |
