summaryrefslogtreecommitdiff
path: root/src/systemtask
diff options
context:
space:
mode:
authorMichele Bini <michele.bini@gmail.com>2022-05-12 07:18:34 (GMT)
committerMichele Bini <michele.bini@gmail.com>2022-05-12 07:26:11 (GMT)
commit181b30eccf79f6a9e6f30f3eefa312b6681f37dd (patch)
tree77c4c8def1ec67daf8e931a2cb65c7ccba44f5d1 /src/systemtask
parent948661c9f650d59aa05ad93855703dab86603673 (diff)
Add 5-minutes chimes
Diffstat (limited to 'src/systemtask')
-rw-r--r--src/systemtask/Messages.h2
-rw-r--r--src/systemtask/SystemTask.cpp41
2 files changed, 24 insertions, 19 deletions
diff --git a/src/systemtask/Messages.h b/src/systemtask/Messages.h
index ecd1a48..716aeef 100644
--- a/src/systemtask/Messages.h
+++ b/src/systemtask/Messages.h
@@ -23,7 +23,7 @@ namespace Pinetime {
DisableSleeping,
OnNewDay,
OnNewHour,
- OnNewHalfHour,
+ OnChime,
OnChargingEvent,
OnPairing,
SetOffAlarm,
diff --git a/src/systemtask/SystemTask.cpp b/src/systemtask/SystemTask.cpp
index 4f81271..a5ac0fa 100644
--- a/src/systemtask/SystemTask.cpp
+++ b/src/systemtask/SystemTask.cpp
@@ -408,26 +408,31 @@ void SystemTask::Work() {
stepCounterMustBeReset = true;
break;
case Messages::OnNewHour:
+ case Messages::OnChime:
using Pinetime::Controllers::AlarmController;
- if (settingsController.GetChimeOption() == Controllers::Settings::ChimesOption::Hours &&
- alarmController.State() != AlarmController::AlarmState::Alerting) {
- if (isSleeping && !isWakingUp) {
- GoToRunning();
- displayApp.PushMessage(Pinetime::Applications::Display::Messages::Clock);
+ if (alarmController.State() != AlarmController::AlarmState::Alerting) do {
+ auto chimeOption = settingsController.GetChimeOption();
+ if (chimeOption != Controllers::Settings::ChimesOption::None) {
+ uint8_t chimeDuration;
+ bool chimeWakeup = false;
+ uint8_t minute;
+ if (message == Messages::OnNewHour) {
+ chimeDuration = 22;
+ chimeWakeup = true;
+ } else if (chimeOption >= Controllers::Settings::ChimesOption::HalfHours && (minute = dateTimeController.Minutes()) == 30) {
+ chimeDuration = 18;
+ } else if (chimeOption > Controllers::Settings::ChimesOption::HalfHours) {
+ chimeDuration = 11;
+ } else {
+ break;
+ }
+ if (chimeWakeup && isSleeping && !isWakingUp) {
+ GoToRunning();
+ displayApp.PushMessage(Pinetime::Applications::Display::Messages::Clock);
+ }
+ motorController.RunForDuration(chimeDuration);
}
- motorController.RunForDuration(35);
- }
- break;
- case Messages::OnNewHalfHour:
- using Pinetime::Controllers::AlarmController;
- if (settingsController.GetChimeOption() == Controllers::Settings::ChimesOption::HalfHours &&
- alarmController.State() != AlarmController::AlarmState::Alerting) {
- if (isSleeping && !isWakingUp) {
- GoToRunning();
- displayApp.PushMessage(Pinetime::Applications::Display::Messages::Clock);
- }
- motorController.RunForDuration(35);
- }
+ } while(0);
break;
case Messages::OnChargingEvent:
batteryController.ReadPowerState();