diff options
Diffstat (limited to 'src/systemtask/SystemTask.cpp')
| -rw-r--r-- | src/systemtask/SystemTask.cpp | 80 |
1 files changed, 51 insertions, 29 deletions
diff --git a/src/systemtask/SystemTask.cpp b/src/systemtask/SystemTask.cpp index c7e0f38..c1fd3c1 100644 --- a/src/systemtask/SystemTask.cpp +++ b/src/systemtask/SystemTask.cpp @@ -135,7 +135,14 @@ void SystemTask::Work() { fs.Init(); + settingsController.Init(); + if(settingsController.GetBluetoothPasskeyEnabled()) { + bleController.EnablePasskey(); + } else { + bleController.DisablePasskey(); + } nimbleController.Init(); + lcd.Init(); twiMaster.Init(); @@ -162,7 +169,6 @@ void SystemTask::Work() { motionSensor.Init(); motionController.Init(motionSensor.DeviceType()); - settingsController.Init(); displayApp.Register(this); displayApp.Start(bootError); @@ -289,9 +295,7 @@ void SystemTask::Work() { case Messages::OnNewTime: ReloadIdleTimer(); displayApp.PushMessage(Pinetime::Applications::Display::Messages::UpdateDateTime); - if (alarmController.State() == Controllers::AlarmController::AlarmState::Set) { - alarmController.ScheduleAlarm(); - } + alarmController.RescheduleAlarm(); break; case Messages::OnNewNotification: if (settingsController.GetNotificationStatus() == Pinetime::Controllers::Settings::Notification::ON) { @@ -307,7 +311,7 @@ void SystemTask::Work() { if (isSleeping && !isWakingUp) { GoToRunning(); } - motorController.RunForDuration(35); + motorController.StartRinging(); displayApp.PushMessage(Pinetime::Applications::Display::Messages::TimerDone); break; case Messages::SetOffAlarm: @@ -402,24 +406,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(); @@ -449,6 +460,13 @@ void SystemTask::Work() { nimbleController.DisableRadio(); } break; + case Messages::BluetoothPasskeyEnableToggle: + if(settingsController.GetBluetoothPasskeyEnabled()) { + bleController.EnablePasskey(); + } else { + bleController.DisablePasskey(); + } + break; default: break; } @@ -494,14 +512,18 @@ void SystemTask::UpdateMotion() { motionController.IsSensorOk(motionSensor.IsOk()); motionController.Update(motionValues.x, motionValues.y, motionValues.z, motionValues.steps); - - if (settingsController.isWakeUpModeOn(Pinetime::Controllers::Settings::WakeUpMode::RaiseWrist) && - motionController.Should_RaiseWake(isSleeping)) { - GoToRunning(); - } - if (settingsController.isWakeUpModeOn(Pinetime::Controllers::Settings::WakeUpMode::Shake) && - motionController.Should_ShakeWake(settingsController.GetShakeThreshold())) { - GoToRunning(); + if (isSleeping) { + if (motionController.ShouldRaiseWake() || + (settingsController.isWakeUpModeOn(Pinetime::Controllers::Settings::WakeUpMode::Shake) && + motionController.Should_ShakeWake(settingsController.GetShakeThreshold())) + ) { + GoToRunning(); + } + } else { + if (settingsController.isWakeUpModeOn(Pinetime::Controllers::Settings::WakeUpMode::LowerWrist) && + motionController.ShouldLowerSleep()) { + PushMessage(Messages::GoToSleep); + } } } |
