Fixes based on code reviews (formatting, UI code)

This commit is contained in:
Mark Russell
2021-09-13 15:26:28 -04:00
parent 1fb5757655
commit bfe13d9d68
5 changed files with 133 additions and 89 deletions

View File

@@ -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;
}

View File

@@ -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();
};
}
}
}