summaryrefslogtreecommitdiff
path: root/src/heartratetask/HeartRateTask.cpp
diff options
context:
space:
mode:
authorJean-François Milants <jf@codingfield.com>2021-01-17 10:39:46 +0100
committerJean-François Milants <jf@codingfield.com>2021-01-17 10:39:46 +0100
commit04063cf0af29e09946bf3d1fa77ae91235cd8b84 (patch)
tree96adf3bcf0c869c738d8c5f73985296b9f7bb105 /src/heartratetask/HeartRateTask.cpp
parentc82c22650cf7d7a8f31146345b9510cc6eabc5f8 (diff)
HR Sensor : Add start/stop button to the HeartRate app (the HR sensors stays ON when the app is closed), display the HR value on the Clock app.
Diffstat (limited to 'src/heartratetask/HeartRateTask.cpp')
-rw-r--r--src/heartratetask/HeartRateTask.cpp16
1 files changed, 12 insertions, 4 deletions
diff --git a/src/heartratetask/HeartRateTask.cpp b/src/heartratetask/HeartRateTask.cpp
index 5ce27452..5a6d2a5e 100644
--- a/src/heartratetask/HeartRateTask.cpp
+++ b/src/heartratetask/HeartRateTask.cpp
@@ -42,14 +42,21 @@ void HeartRateTask::Work() {
break;
case Messages::WakeUp:
state = States::Running;
+ if(measurementStarted) {
+ lastBpm = 0;
+ StartMeasurement();
+ }
break;
case Messages::StartMeasurement:
+ if(measurementStarted) break;
lastBpm = 0;
StartMeasurement();
- ppg.SetOffset(heartRateSensor.ReadHrs());
+ measurementStarted = true;
break;
case Messages::StopMeasurement:
+ if(!measurementStarted) break;
StopMeasurement();
+ measurementStarted = false;
break;
}
}
@@ -59,7 +66,7 @@ void HeartRateTask::Work() {
ppg.Preprocess(hrs);
auto bpm = ppg.HeartRate();
- if (lastBpm == 0 && bpm == 0) controller.Update(Controllers::HeartRateController::States::NoTouch, 0);
+ if (lastBpm == 0 && bpm == 0) controller.Update(Controllers::HeartRateController::States::NotEnoughData, 0);
if(bpm != 0) {
lastBpm = bpm;
controller.Update(Controllers::HeartRateController::States::Running, lastBpm);
@@ -80,10 +87,11 @@ void HeartRateTask::PushMessage(HeartRateTask::Messages msg) {
void HeartRateTask::StartMeasurement() {
heartRateSensor.Enable();
- measurementStarted = true;
+ vTaskDelay(100);
+ ppg.SetOffset(static_cast<float>(heartRateSensor.ReadHrs()));
}
void HeartRateTask::StopMeasurement() {
heartRateSensor.Disable();
- measurementStarted = false;
+ vTaskDelay(100);
}