diff options
Diffstat (limited to 'src/systemtask')
| -rw-r--r-- | src/systemtask/Messages.h | 6 | ||||
| -rw-r--r-- | src/systemtask/SystemTask.cpp | 65 | ||||
| -rw-r--r-- | src/systemtask/SystemTask.h | 9 |
3 files changed, 58 insertions, 22 deletions
diff --git a/src/systemtask/Messages.h b/src/systemtask/Messages.h index 7a46e06..f939900 100644 --- a/src/systemtask/Messages.h +++ b/src/systemtask/Messages.h @@ -7,6 +7,7 @@ namespace Pinetime { GoToRunning, TouchWakeUp, OnNewTime, + OnAdjustTime, OnNewNotification, OnTimerDone, OnNewCall, @@ -22,7 +23,7 @@ namespace Pinetime { DisableSleeping, OnNewDay, OnNewHour, - OnNewHalfHour, + OnChime, OnChargingEvent, OnPairing, SetOffAlarm, @@ -31,7 +32,8 @@ namespace Pinetime { BatteryPercentageUpdated, StartFileTransfer, StopFileTransfer, - BleRadioEnableToggle + BleRadioEnableToggle, + BluetoothPasskeyEnableToggle, }; } } diff --git a/src/systemtask/SystemTask.cpp b/src/systemtask/SystemTask.cpp index d3f1278..3353a45 100644 --- a/src/systemtask/SystemTask.cpp +++ b/src/systemtask/SystemTask.cpp @@ -132,7 +132,14 @@ void SystemTask::Work() { fs.Init(); + settingsController.Init(); + if(settingsController.GetBluetoothPasskeyEnabled()) { + bleController.EnablePasskey(); + } else { + bleController.DisablePasskey(); + } nimbleController.Init(); + lcd.Init(); twiMaster.Init(); @@ -158,7 +165,6 @@ void SystemTask::Work() { motionSensor.Init(); motionController.Init(motionSensor.DeviceType()); - settingsController.Init(); displayApp.Register(this); displayApp.Start(bootError); @@ -273,9 +279,15 @@ void SystemTask::Work() { heartRateApp.PushMessage(Pinetime::Applications::HeartRateTask::Messages::GoToSleep); break; case Messages::OnNewTime: + case Messages::OnAdjustTime: ReloadIdleTimer(); displayApp.PushMessage(Pinetime::Applications::Display::Messages::UpdateDateTime); - if (alarmController.State() == Controllers::AlarmController::AlarmState::Set) { + if (alarmController.State() != Controllers::AlarmController::AlarmState::Set) { + break; + } + if (message == Messages::OnAdjustTime) { + alarmController.OnAdjustTime(); + } else { alarmController.ScheduleAlarm(); } break; @@ -387,26 +399,32 @@ 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 (state == SystemTaskState::Sleeping) { - GoToRunning(); - displayApp.PushMessage(Pinetime::Applications::Display::Messages::Clock); - } - motorController.RunForDuration(35); - } - break; - case Messages::OnNewHalfHour: - using Pinetime::Controllers::AlarmController; - if (settingsController.GetChimeOption() == Controllers::Settings::ChimesOption::HalfHours && - alarmController.State() != AlarmController::AlarmState::Alerting) { - if (state == SystemTaskState::Sleeping) { - 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 && state == SystemTaskState::Sleeping) { + GoToRunning(); + displayApp.PushMessage(Pinetime::Applications::Display::Messages::Clock); + } + motorController.RunForDuration(chimeDuration); } - motorController.RunForDuration(35); - } + } while(0); break; case Messages::OnChargingEvent: batteryController.ReadPowerState(); @@ -436,6 +454,13 @@ void SystemTask::Work() { nimbleController.DisableRadio(); } break; + case Messages::BluetoothPasskeyEnableToggle: + if(settingsController.GetBluetoothPasskeyEnabled()) { + bleController.EnablePasskey(); + } else { + bleController.DisablePasskey(); + } + break; default: break; } diff --git a/src/systemtask/SystemTask.h b/src/systemtask/SystemTask.h index d1e4a00..e884ca3 100644 --- a/src/systemtask/SystemTask.h +++ b/src/systemtask/SystemTask.h @@ -95,6 +95,15 @@ namespace Pinetime { return state == SystemTaskState::Sleeping || state == SystemTaskState::WakingUp; } + // For accelerator-based games + template <typename X, typename Y, typename Z> inline void ObtainAccel(X& x, Y& y, Z& z) { +#ifndef INFINISIM + motionSensor.ObtainAccel(x,y,z); +#else + x = 0; y = 0; z = 0; +#endif + } + private: TaskHandle_t taskHandle; |
