diff options
Diffstat (limited to 'src/components/alarm')
-rw-r--r-- | src/components/alarm/AlarmController.cpp | 49 | ||||
-rw-r--r-- | src/components/alarm/AlarmController.h | 26 |
2 files changed, 40 insertions, 35 deletions
diff --git a/src/components/alarm/AlarmController.cpp b/src/components/alarm/AlarmController.cpp index 5097936f..31a31912 100644 --- a/src/components/alarm/AlarmController.cpp +++ b/src/components/alarm/AlarmController.cpp @@ -1,8 +1,16 @@ -// -// Created by mrussell on 30.08.21. -// -// Copied from Florian's Timer app - +/* Copyright (C) 2021 JF, Adam Pigg, Avamander + This file is part of InfiniTime. + InfiniTime is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published + by the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + InfiniTime is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + You should have received a copy of the GNU General Public License + along with this program. If not, see <https://www.gnu.org/licenses/>. +*/ #include "AlarmController.h" #include "systemtask/SystemTask.h" #include "app_timer.h" @@ -25,18 +33,19 @@ namespace { } } -void AlarmController::Init() { +void AlarmController::Init(System::SystemTask* systemTask) { app_timer_create(&alarmAppTimer, APP_TIMER_MODE_SINGLE_SHOT, SetOffAlarm); + this->systemTask = systemTask; } void AlarmController::SetAlarm(uint8_t alarmHr, uint8_t alarmMin) { hours = alarmHr; minutes = alarmMin; state = AlarmState::Set; - scheduleAlarm(); + ScheduleAlarm(); } -void AlarmController::scheduleAlarm() { +void AlarmController::ScheduleAlarm() { // Determine the next time the alarm needs to go off and set the app_timer app_timer_stop(alarmAppTimer); @@ -83,15 +92,11 @@ void AlarmController::DisableAlarm() { void AlarmController::SetOffAlarmNow() { state = AlarmState::Alerting; - if (systemTask != nullptr) { - systemTask->PushMessage(System::Messages::SetOffAlarm); - } + systemTask->PushMessage(System::Messages::SetOffAlarm); } void AlarmController::StopAlerting() { - if (systemTask != nullptr) { - systemTask->PushMessage(System::Messages::StopRinging); - } + systemTask->PushMessage(System::Messages::StopRinging); // Alarm state is off unless this is a recurring alarm if (recurrence == RecurType::None) { @@ -99,20 +104,6 @@ void AlarmController::StopAlerting() { } else { state = AlarmState::Set; // set next instance - scheduleAlarm(); + ScheduleAlarm(); } } - -void AlarmController::ToggleRecurrence() { - if (recurrence == AlarmController::RecurType::None) { - recurrence = AlarmController::RecurType::Daily; - } else if (recurrence == AlarmController::RecurType::Daily) { - recurrence = AlarmController::RecurType::Weekdays; - } else { - recurrence = AlarmController::RecurType::None; - } -} - -void AlarmController::Register(Pinetime::System::SystemTask* systemTask) { - this->systemTask = systemTask; -} diff --git a/src/components/alarm/AlarmController.h b/src/components/alarm/AlarmController.h index 22259da8..140c9c80 100644 --- a/src/components/alarm/AlarmController.h +++ b/src/components/alarm/AlarmController.h @@ -1,3 +1,16 @@ +/* Copyright (C) 2021 JF, Adam Pigg, Avamander + This file is part of InfiniTime. + InfiniTime is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published + by the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + InfiniTime is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + You should have received a copy of the GNU General Public License + along with this program. If not, see <https://www.gnu.org/licenses/>. +*/ #pragma once #include <cstdint> @@ -13,16 +26,14 @@ namespace Pinetime { public: AlarmController(Controllers::DateTime& dateTimeController); - void Init(); + void Init(System::SystemTask* systemTask); void SetAlarm(uint8_t alarmHr, uint8_t alarmMin); void DisableAlarm(); void SetOffAlarmNow(); uint32_t SecondsToAlarm(); void StopAlerting(); - void Register(System::SystemTask* systemTask); enum class AlarmState { Not_Set, Set, Alerting }; enum class RecurType { None, Daily, Weekdays }; - void ToggleRecurrence(); uint8_t Hours() const { return hours; } @@ -35,6 +46,9 @@ namespace Pinetime { RecurType Recurrence() const { return recurrence; } + void SetRecurrence(RecurType recurType) { + recurrence = recurType; + } private: Controllers::DateTime& dateTimeController; @@ -42,9 +56,9 @@ namespace Pinetime { uint8_t hours; uint8_t minutes; std::chrono::time_point<std::chrono::system_clock, std::chrono::nanoseconds> alarmTime; - AlarmState state = AlarmState::Not_Set; + AlarmState state = AlarmState::Not_Set; RecurType recurrence = RecurType::None; - void scheduleAlarm(); + void ScheduleAlarm(); }; } -}
\ No newline at end of file +} |