1
0
Fork 0
InfiniTime/src/components/alarm/AlarmController.h

69 lines
2.1 KiB
C
Raw Normal View History

2021-09-13 22:05:35 +02:00
/* Copyright (C) 2021 mruss77, Florian
This file is part of InfiniTime.
2021-09-13 22:05:35 +02:00
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.
2021-09-13 22:05:35 +02:00
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.
2021-09-13 22:05:35 +02:00
You should have received a copy of the GNU General Public License
along with this program. If not, see <https://www.gnu.org/licenses/>.
*/
2021-09-11 00:40:13 +02:00
#pragma once
#include <cstdint>
#include "app_timer.h"
#include "components/datetime/DateTimeController.h"
namespace Pinetime {
namespace System {
class SystemTask;
}
namespace Controllers {
class AlarmController {
public:
AlarmController(Controllers::DateTime& dateTimeController);
void Init(System::SystemTask* systemTask);
2021-09-16 21:38:31 +02:00
void SetAlarmTime(uint8_t alarmHr, uint8_t alarmMin);
void ScheduleAlarm();
2021-09-11 00:40:13 +02:00
void DisableAlarm();
void SetOffAlarmNow();
uint32_t SecondsToAlarm();
void StopAlerting();
enum class AlarmState { Not_Set, Set, Alerting };
enum class RecurType { None, Daily, Weekdays };
uint8_t Hours() const {
return hours;
}
uint8_t Minutes() const {
return minutes;
}
AlarmState State() const {
return state;
}
RecurType Recurrence() const {
return recurrence;
}
void SetRecurrence(RecurType recurType) {
recurrence = recurType;
}
2021-09-11 00:40:13 +02:00
private:
Controllers::DateTime& dateTimeController;
System::SystemTask* systemTask = nullptr;
2021-09-16 21:38:31 +02:00
uint8_t hours = 7;
uint8_t minutes = 0;
2021-09-11 00:40:13 +02:00
std::chrono::time_point<std::chrono::system_clock, std::chrono::nanoseconds> alarmTime;
AlarmState state = AlarmState::Not_Set;
2021-09-11 00:40:13 +02:00
RecurType recurrence = RecurType::None;
};
}
}