diff --git a/src/heartratetask/HeartRateTask.cpp b/src/heartratetask/HeartRateTask.cpp index e9bc11a30a..bb42cca9f5 100644 --- a/src/heartratetask/HeartRateTask.cpp +++ b/src/heartratetask/HeartRateTask.cpp @@ -1,6 +1,7 @@ #include "heartratetask/HeartRateTask.h" #include #include +#include #include using namespace Pinetime::Applications; @@ -90,8 +91,9 @@ TickType_t HeartRateTask::CurrentTaskDelay() { HeartRateTask::HeartRateTask(Drivers::Hrs3300& heartRateSensor, Controllers::HeartRateController& controller, + Controllers::Battery& battery, Controllers::Settings& settings) - : heartRateSensor {heartRateSensor}, controller {controller}, settings {settings} { + : heartRateSensor {heartRateSensor}, controller {controller}, battery {battery}, settings {settings} { } void HeartRateTask::Start() { @@ -153,10 +155,15 @@ void HeartRateTask::Work() { break; } } - if (newState == States::Waiting && BackgroundMeasurementNeeded()) { - newState = States::BackgroundMeasuring; - } else if (newState == States::BackgroundMeasuring && !BackgroundMeasurementNeeded()) { + + if (newState != States::Disabled && battery.IsPowerPresent()) { newState = States::Waiting; + } else { + if (newState == States::Waiting && BackgroundMeasurementNeeded()) { + newState = States::BackgroundMeasuring; + } else if (newState == States::BackgroundMeasuring && !BackgroundMeasurementNeeded()) { + newState = States::Waiting; + } } // Apply state transition (switch sensor on/off) diff --git a/src/heartratetask/HeartRateTask.h b/src/heartratetask/HeartRateTask.h index e00bc4d638..7716562490 100644 --- a/src/heartratetask/HeartRateTask.h +++ b/src/heartratetask/HeartRateTask.h @@ -14,6 +14,7 @@ namespace Pinetime { namespace Controllers { class HeartRateController; + class Battery; } namespace Applications { @@ -23,6 +24,7 @@ namespace Pinetime { explicit HeartRateTask(Drivers::Hrs3300& heartRateSensor, Controllers::HeartRateController& controller, + Controllers::Battery& battery, Controllers::Settings& settings); void Start(); void Work(); @@ -47,6 +49,7 @@ namespace Pinetime { uint16_t count; Drivers::Hrs3300& heartRateSensor; Controllers::HeartRateController& controller; + Controllers::Battery& battery; Controllers::Settings& settings; Controllers::Ppg ppg; TickType_t lastMeasurementTime; diff --git a/src/main.cpp b/src/main.cpp index d0ab3e4887..88efb9d9e3 100644 --- a/src/main.cpp +++ b/src/main.cpp @@ -99,7 +99,7 @@ Pinetime::Controllers::Settings settingsController {fs}; Pinetime::Controllers::MotorController motorController {}; Pinetime::Controllers::HeartRateController heartRateController; -Pinetime::Applications::HeartRateTask heartRateApp(heartRateSensor, heartRateController, settingsController); +Pinetime::Applications::HeartRateTask heartRateApp(heartRateSensor, heartRateController, batteryController, settingsController); Pinetime::Controllers::DateTime dateTimeController {settingsController}; Pinetime::Drivers::Watchdog watchdog;