diff options
Diffstat (limited to 'src/heartratetask/HeartRateTask.cpp')
-rw-r--r-- | src/heartratetask/HeartRateTask.cpp | 35 |
1 files changed, 20 insertions, 15 deletions
diff --git a/src/heartratetask/HeartRateTask.cpp b/src/heartratetask/HeartRateTask.cpp index bc227624..50833ab2 100644 --- a/src/heartratetask/HeartRateTask.cpp +++ b/src/heartratetask/HeartRateTask.cpp @@ -6,15 +6,16 @@ using namespace Pinetime::Applications; HeartRateTask::HeartRateTask(Drivers::Hrs3300& heartRateSensor, Controllers::HeartRateController& controller) - : heartRateSensor {heartRateSensor}, controller {controller}, ppg {} { + : heartRateSensor {heartRateSensor}, controller {controller} { } void HeartRateTask::Start() { messageQueue = xQueueCreate(10, 1); controller.SetHeartRateTask(this); - if (pdPASS != xTaskCreate(HeartRateTask::Process, "Heartrate", 500, this, 0, &taskHandle)) + if (pdPASS != xTaskCreate(HeartRateTask::Process, "Heartrate", 500, this, 0, &taskHandle)) { APP_ERROR_HANDLER(NRF_ERROR_NO_MEM); + } } void HeartRateTask::Process(void* instance) { @@ -25,17 +26,19 @@ void HeartRateTask::Process(void* instance) { void HeartRateTask::Work() { int lastBpm = 0; while (true) { - Messages msg; - uint32_t delay; + auto delay = portMAX_DELAY; if (state == States::Running) { - if (measurementStarted) + if (measurementStarted) { delay = 40; - else + } else { delay = 100; - } else + } + } else { delay = portMAX_DELAY; + } - if (xQueueReceive(messageQueue, &msg, delay)) { + Messages msg; + if (xQueueReceive(messageQueue, &msg, delay) == pdTRUE) { switch (msg) { case Messages::GoToSleep: StopMeasurement(); @@ -49,15 +52,17 @@ void HeartRateTask::Work() { } break; case Messages::StartMeasurement: - if (measurementStarted) + if (measurementStarted) { break; + } lastBpm = 0; StartMeasurement(); measurementStarted = true; break; case Messages::StopMeasurement: - if (!measurementStarted) + if (!measurementStarted) { break; + } StopMeasurement(); measurementStarted = false; break; @@ -68,8 +73,9 @@ void HeartRateTask::Work() { ppg.Preprocess(static_cast<float>(heartRateSensor.ReadHrs())); auto bpm = ppg.HeartRate(); - if (lastBpm == 0 && bpm == 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); @@ -79,10 +85,9 @@ void HeartRateTask::Work() { } void HeartRateTask::PushMessage(HeartRateTask::Messages msg) { - BaseType_t xHigherPriorityTaskWoken; - xHigherPriorityTaskWoken = pdFALSE; + BaseType_t xHigherPriorityTaskWoken = pdFALSE; xQueueSendFromISR(messageQueue, &msg, &xHigherPriorityTaskWoken); - if (xHigherPriorityTaskWoken) { + if (xHigherPriorityTaskWoken == pdTRUE) { /* Actual macro used here is port specific. */ // TODO : should I do something here? } @@ -91,7 +96,7 @@ void HeartRateTask::PushMessage(HeartRateTask::Messages msg) { void HeartRateTask::StartMeasurement() { heartRateSensor.Enable(); vTaskDelay(100); - ppg.SetOffset(static_cast<float>(heartRateSensor.ReadHrs())); + ppg.SetOffset(heartRateSensor.ReadHrs()); } void HeartRateTask::StopMeasurement() { |