|
1 | 1 | #include "heartratetask/HeartRateTask.h" |
2 | 2 | #include <drivers/Hrs3300.h> |
3 | 3 | #include <components/heartrate/HeartRateController.h> |
| 4 | +#include <components/battery/BatteryController.h> |
4 | 5 | #include <limits> |
5 | 6 |
|
6 | 7 | using namespace Pinetime::Applications; |
@@ -90,8 +91,9 @@ TickType_t HeartRateTask::CurrentTaskDelay() { |
90 | 91 |
|
91 | 92 | HeartRateTask::HeartRateTask(Drivers::Hrs3300& heartRateSensor, |
92 | 93 | Controllers::HeartRateController& controller, |
| 94 | + Controllers::Battery& battery, |
93 | 95 | Controllers::Settings& settings) |
94 | | - : heartRateSensor {heartRateSensor}, controller {controller}, settings {settings} { |
| 96 | + : heartRateSensor {heartRateSensor}, controller {controller}, battery {battery}, settings {settings} { |
95 | 97 | } |
96 | 98 |
|
97 | 99 | void HeartRateTask::Start() { |
@@ -153,10 +155,15 @@ void HeartRateTask::Work() { |
153 | 155 | break; |
154 | 156 | } |
155 | 157 | } |
156 | | - if (newState == States::Waiting && BackgroundMeasurementNeeded()) { |
157 | | - newState = States::BackgroundMeasuring; |
158 | | - } else if (newState == States::BackgroundMeasuring && !BackgroundMeasurementNeeded()) { |
| 158 | + |
| 159 | + if (newState != States::Disabled && battery.IsPowerPresent()) { |
159 | 160 | newState = States::Waiting; |
| 161 | + } else { |
| 162 | + if (newState == States::Waiting && BackgroundMeasurementNeeded()) { |
| 163 | + newState = States::BackgroundMeasuring; |
| 164 | + } else if (newState == States::BackgroundMeasuring && !BackgroundMeasurementNeeded()) { |
| 165 | + newState = States::Waiting; |
| 166 | + } |
160 | 167 | } |
161 | 168 |
|
162 | 169 | // Apply state transition (switch sensor on/off) |
|
0 commit comments