From a6cd3679eb1219865a215d0600c9703b198f9157 Mon Sep 17 00:00:00 2001 From: apilat Date: Thu, 30 Jun 2022 15:52:57 +0100 Subject: [PATCH] Only inhibit sleep if motion notifications are enabled, not just Bluetooth --- src/components/ble/MotionService.cpp | 4 ++++ src/components/ble/MotionService.h | 1 + src/components/motion/MotionController.h | 4 ++++ src/systemtask/SystemTask.cpp | 6 +++--- 4 files changed, 12 insertions(+), 3 deletions(-) diff --git a/src/components/ble/MotionService.cpp b/src/components/ble/MotionService.cpp index 029be894..1626a5bf 100644 --- a/src/components/ble/MotionService.cpp +++ b/src/components/ble/MotionService.cpp @@ -120,3 +120,7 @@ void MotionService::UnsubscribeNotification(uint16_t attributeHandle) { else if (attributeHandle == motionValuesHandle) motionValuesNoficationEnabled = false; } + +bool MotionService::IsMotionNotificationSubscribed() const { + return motionValuesNoficationEnabled; +} diff --git a/src/components/ble/MotionService.h b/src/components/ble/MotionService.h index e15cffe3..acc91e8d 100644 --- a/src/components/ble/MotionService.h +++ b/src/components/ble/MotionService.h @@ -21,6 +21,7 @@ namespace Pinetime { void SubscribeNotification(uint16_t attributeHandle); void UnsubscribeNotification(uint16_t attributeHandle); + bool IsMotionNotificationSubscribed() const; private: NimbleController& nimble; diff --git a/src/components/motion/MotionController.h b/src/components/motion/MotionController.h index 0aa7823e..b2e7e7fe 100644 --- a/src/components/motion/MotionController.h +++ b/src/components/motion/MotionController.h @@ -62,6 +62,10 @@ namespace Pinetime { this->service = service; } + Pinetime::Controllers::MotionService* GetService() const { + return service; + } + private: uint32_t nbSteps = 0; uint32_t currentTripSteps = 0; diff --git a/src/systemtask/SystemTask.cpp b/src/systemtask/SystemTask.cpp index f8c2c00f..246e7cec 100644 --- a/src/systemtask/SystemTask.cpp +++ b/src/systemtask/SystemTask.cpp @@ -417,9 +417,9 @@ void SystemTask::UpdateMotion() { return; } - if (state == SystemTaskState::Sleeping && - !(settingsController.isWakeUpModeOn(Pinetime::Controllers::Settings::WakeUpMode::RaiseWrist) || - settingsController.isWakeUpModeOn(Pinetime::Controllers::Settings::WakeUpMode::Shake) || bleController.IsConnected())) { + if (state == SystemTaskState::Sleeping && !(settingsController.isWakeUpModeOn(Pinetime::Controllers::Settings::WakeUpMode::RaiseWrist) || + settingsController.isWakeUpModeOn(Pinetime::Controllers::Settings::WakeUpMode::Shake) || + motionController.GetService()->IsMotionNotificationSubscribed())) { return; }