Skip to content

Commit 5621869

Browse files
committed
chimes: Different vibration patterns for each time of hour
1 parent 66e4b16 commit 5621869

File tree

6 files changed

+66
-18
lines changed

6 files changed

+66
-18
lines changed

src/components/datetime/DateTimeController.cpp

+16-7
Original file line numberDiff line numberDiff line change
@@ -117,22 +117,31 @@ void DateTime::UpdateTime(uint32_t systickCounter, bool forceUpdate) {
117117
isHourAlreadyNotified = false;
118118
}
119119

120-
if ((minute == 0 || minute == 30) && !isHalfHourAlreadyNotified) {
120+
if (minute == 15 && !isQuarterHourAlreadyNotified) {
121+
isQuarterHourAlreadyNotified = true;
122+
if (systemTask != nullptr) {
123+
systemTask->PushMessage(System::Messages::OnNewQuarterHour);
124+
}
125+
} else if (minute != 15) {
126+
isQuarterHourAlreadyNotified = false;
127+
}
128+
129+
if (minute == 30 && !isHalfHourAlreadyNotified) {
121130
isHalfHourAlreadyNotified = true;
122131
if (systemTask != nullptr) {
123132
systemTask->PushMessage(System::Messages::OnNewHalfHour);
124133
}
125-
} else if (minute != 0 && minute != 30) {
134+
} else if (minute != 30) {
126135
isHalfHourAlreadyNotified = false;
127136
}
128137

129-
if ((minute == 0 || minute == 15 || minute == 30 || minute == 45) && !isQuarterHourAlreadyNotified) {
130-
isQuarterHourAlreadyNotified = true;
138+
if (minute == 45 && !isThreeQuarterHourAlreadyNotified) {
139+
isThreeQuarterHourAlreadyNotified = true;
131140
if (systemTask != nullptr) {
132-
systemTask->PushMessage(System::Messages::OnNewQuarterHour);
141+
systemTask->PushMessage(System::Messages::OnNewThreeQuarterHour);
133142
}
134-
} else if (minute != 0 && minute != 15 && minute != 30 && minute != 45) {
135-
isQuarterHourAlreadyNotified = false;
143+
} else if (minute != 45) {
144+
isThreeQuarterHourAlreadyNotified = false;
136145
}
137146

138147
// Notify new day to SystemTask

src/components/datetime/DateTimeController.h

+2-1
Original file line numberDiff line numberDiff line change
@@ -153,8 +153,9 @@ namespace Pinetime {
153153

154154
bool isMidnightAlreadyNotified = false;
155155
bool isHourAlreadyNotified = true;
156-
bool isHalfHourAlreadyNotified = true;
157156
bool isQuarterHourAlreadyNotified = true;
157+
bool isHalfHourAlreadyNotified = true;
158+
bool isThreeQuarterHourAlreadyNotified = true;
158159
System::SystemTask* systemTask = nullptr;
159160
Controllers::Settings& settingsController;
160161
};

src/displayapp/DisplayApp.cpp

+26-2
Original file line numberDiff line numberDiff line change
@@ -471,9 +471,33 @@ void DisplayApp::Refresh() {
471471
case Messages::BleRadioEnableToggle:
472472
PushMessageToSystemTask(System::Messages::BleRadioEnableToggle);
473473
break;
474-
case Messages::Chime:
474+
case Messages::FullHourChime:
475475
LoadNewScreen(Apps::Clock, DisplayApp::FullRefreshDirections::None);
476-
motorController.RunForDuration(35);
476+
motorController.RunForDuration(100);
477+
vTaskDelay(pdMS_TO_TICKS(500));
478+
motorController.RunForDuration(100);
479+
vTaskDelay(pdMS_TO_TICKS(500));
480+
motorController.RunForDuration(100);
481+
vTaskDelay(pdMS_TO_TICKS(500));
482+
motorController.RunForDuration(100);
483+
break;
484+
case Messages::QuarterHourChime:
485+
LoadNewScreen(Apps::Clock, DisplayApp::FullRefreshDirections::None);
486+
motorController.RunForDuration(100);
487+
break;
488+
case Messages::HalfHourChime:
489+
LoadNewScreen(Apps::Clock, DisplayApp::FullRefreshDirections::None);
490+
motorController.RunForDuration(100);
491+
vTaskDelay(pdMS_TO_TICKS(500));
492+
motorController.RunForDuration(100);
493+
break;
494+
case Messages::ThreeQuarterHourChime:
495+
LoadNewScreen(Apps::Clock, DisplayApp::FullRefreshDirections::None);
496+
motorController.RunForDuration(100);
497+
vTaskDelay(pdMS_TO_TICKS(500));
498+
motorController.RunForDuration(100);
499+
vTaskDelay(pdMS_TO_TICKS(500));
500+
motorController.RunForDuration(100);
477501
break;
478502
case Messages::OnChargingEvent:
479503
motorController.RunForDuration(15);

src/displayapp/Messages.h

+4-1
Original file line numberDiff line numberDiff line change
@@ -22,7 +22,10 @@ namespace Pinetime {
2222
NotifyDeviceActivity,
2323
ShowPairingKey,
2424
AlarmTriggered,
25-
Chime,
25+
FullHourChime,
26+
QuarterHourChime,
27+
HalfHourChime,
28+
ThreeQuarterHourChime,
2629
BleRadioEnableToggle,
2730
OnChargingEvent,
2831
};

src/systemtask/Messages.h

+2-1
Original file line numberDiff line numberDiff line change
@@ -21,8 +21,9 @@ namespace Pinetime {
2121
DisableSleeping,
2222
OnNewDay,
2323
OnNewHour,
24-
OnNewHalfHour,
2524
OnNewQuarterHour,
25+
OnNewHalfHour,
26+
OnNewThreeQuarterHour,
2627
OnChargingEvent,
2728
OnPairing,
2829
SetOffAlarm,

src/systemtask/SystemTask.cpp

+16-6
Original file line numberDiff line numberDiff line change
@@ -323,25 +323,35 @@ void SystemTask::Work() {
323323
case Messages::OnNewHour:
324324
using Pinetime::Controllers::AlarmController;
325325
if (settingsController.GetNotificationStatus() != Controllers::Settings::Notification::Sleep &&
326-
settingsController.GetChimeOption() == Controllers::Settings::ChimesOption::Hours && !alarmController.IsAlerting()) {
326+
settingsController.GetChimeOption() != Controllers::Settings::ChimesOption::None && !alarmController.IsAlerting()) {
327327
GoToRunning();
328-
displayApp.PushMessage(Pinetime::Applications::Display::Messages::Chime);
328+
displayApp.PushMessage(Pinetime::Applications::Display::Messages::FullHourChime);
329+
}
330+
break;
331+
case Messages::OnNewQuarterHour:
332+
using Pinetime::Controllers::AlarmController;
333+
if (settingsController.GetNotificationStatus() != Controllers::Settings::Notification::Sleep &&
334+
settingsController.GetChimeOption() == Controllers::Settings::ChimesOption::QuarterHours && !alarmController.IsAlerting()) {
335+
GoToRunning();
336+
displayApp.PushMessage(Pinetime::Applications::Display::Messages::QuarterHourChime);
329337
}
330338
break;
331339
case Messages::OnNewHalfHour:
332340
using Pinetime::Controllers::AlarmController;
333341
if (settingsController.GetNotificationStatus() != Controllers::Settings::Notification::Sleep &&
334-
settingsController.GetChimeOption() == Controllers::Settings::ChimesOption::HalfHours && !alarmController.IsAlerting()) {
342+
(settingsController.GetChimeOption() == Controllers::Settings::ChimesOption::HalfHours ||
343+
settingsController.GetChimeOption() == Controllers::Settings::ChimesOption::QuarterHours) &&
344+
!alarmController.IsAlerting()) {
335345
GoToRunning();
336-
displayApp.PushMessage(Pinetime::Applications::Display::Messages::Chime);
346+
displayApp.PushMessage(Pinetime::Applications::Display::Messages::HalfHourChime);
337347
}
338348
break;
339-
case Messages::OnNewQuarterHour:
349+
case Messages::OnNewThreeQuarterHour:
340350
using Pinetime::Controllers::AlarmController;
341351
if (settingsController.GetNotificationStatus() != Controllers::Settings::Notification::Sleep &&
342352
settingsController.GetChimeOption() == Controllers::Settings::ChimesOption::QuarterHours && !alarmController.IsAlerting()) {
343353
GoToRunning();
344-
displayApp.PushMessage(Pinetime::Applications::Display::Messages::Chime);
354+
displayApp.PushMessage(Pinetime::Applications::Display::Messages::ThreeQuarterHourChime);
345355
}
346356
break;
347357
case Messages::OnChargingEvent:

0 commit comments

Comments
 (0)