From e6f0a8920229ed438d0c1fee71c4ca4188dde7b6 Mon Sep 17 00:00:00 2001 From: Patric Gruber Date: Thu, 11 Jul 2024 15:53:18 +0200 Subject: [PATCH] reduce RAM size --- src/heartratetask/HeartRateTask.cpp | 39 +++++++++++++++-------------- src/heartratetask/HeartRateTask.h | 4 +-- 2 files changed, 21 insertions(+), 22 deletions(-) diff --git a/src/heartratetask/HeartRateTask.cpp b/src/heartratetask/HeartRateTask.cpp index ba34c074..2ed60742 100644 --- a/src/heartratetask/HeartRateTask.cpp +++ b/src/heartratetask/HeartRateTask.cpp @@ -5,6 +5,21 @@ using namespace Pinetime::Applications; +TickType_t CurrentTaskDelay(HeartRateTask::States state, TickType_t ppgDeltaTms) { + switch (state) { + case HeartRateTask::States::Measuring: + case HeartRateTask::States::BackgroundMeasuring: + return ppgDeltaTms; + case HeartRateTask::States::Running: + return pdMS_TO_TICKS(100); + case HeartRateTask::States::BackgroundWaiting: + return pdMS_TO_TICKS(10000); + default: + return portMAX_DELAY; + } +} + + HeartRateTask::HeartRateTask(Drivers::Hrs3300& heartRateSensor, Controllers::HeartRateController& controller, Controllers::Settings& settings) @@ -26,10 +41,10 @@ void HeartRateTask::Process(void* instance) { } void HeartRateTask::Work() { - lastBpm = 0; + int lastBpm = 0; while (true) { - TickType_t delay = CurrentTaskDelay(); + TickType_t delay = CurrentTaskDelay(state, ppg.deltaTms); Messages msg; if (xQueueReceive(messageQueue, &msg, delay) == pdTRUE) { @@ -41,7 +56,7 @@ void HeartRateTask::Work() { HandleWakeUp(); break; case Messages::StartMeasurement: - HandleStartMeasurement(); + HandleStartMeasurement(&lastBpm); break; case Messages::StopMeasurement: HandleStopMeasurement(); @@ -117,12 +132,12 @@ void HeartRateTask::HandleWakeUp() { } } -void HeartRateTask::HandleStartMeasurement() { +void HeartRateTask::HandleStartMeasurement(int* lastBpm) { switch (state) { case States::Idle: case States::Running: state = States::Measuring; - lastBpm = 0; + *lastBpm = 0; StartMeasurement(); break; case States::Measuring: @@ -201,20 +216,6 @@ void HeartRateTask::HandleSensorData(int* lastBpm) { } } -TickType_t HeartRateTask::CurrentTaskDelay() { - switch (state) { - case States::Measuring: - case States::BackgroundMeasuring: - return ppg.deltaTms; - case States::Running: - return pdMS_TO_TICKS(100); - case States::BackgroundWaiting: - return pdMS_TO_TICKS(10000); - default: - return portMAX_DELAY; - } -} - TickType_t HeartRateTask::GetHeartRateBackgroundMeasurementIntervalInTicks() { int ms; switch (settings.GetHeartRateBackgroundMeasurementInterval()) { diff --git a/src/heartratetask/HeartRateTask.h b/src/heartratetask/HeartRateTask.h index a8fa8b60..2b273061 100644 --- a/src/heartratetask/HeartRateTask.h +++ b/src/heartratetask/HeartRateTask.h @@ -58,12 +58,11 @@ namespace Pinetime { void HandleGoToSleep(); void HandleWakeUp(); - void HandleStartMeasurement(); + void HandleStartMeasurement(int* lastBpm); void HandleStopMeasurement(); void HandleBackgroundWaiting(); void HandleSensorData(int* lastBpm); - TickType_t CurrentTaskDelay(); TickType_t GetHeartRateBackgroundMeasurementIntervalInTicks(); bool IsContinuosModeActivated(); @@ -78,7 +77,6 @@ namespace Pinetime { Controllers::Ppg ppg; TickType_t backgroundWaitingStart = 0; TickType_t measurementStart = 0; - int lastBpm = 0; }; }