diff options
| author | mark9064 <30447455+mark9064@users.noreply.github.com> | 2025-06-18 14:09:57 +0100 |
|---|---|---|
| committer | mark9064 <30447455+mark9064@users.noreply.github.com> | 2025-11-05 10:34:49 +0000 |
| commit | 8daddf87782c1228a44528da6f67d8dfce3edb40 (patch) | |
| tree | dead2a56c55f5eec74c70f42389c89e379aa4ce7 /src/heartratetask/HeartRateTask.h | |
| parent | 04afd22943cf4d6a826e09cf5fd246886ee7cacf (diff) | |
Background heartrate measurement
Co-Authored-By: Patric Gruber <me@patric-gruber.at>
Diffstat (limited to 'src/heartratetask/HeartRateTask.h')
| -rw-r--r-- | src/heartratetask/HeartRateTask.h | 24 |
1 files changed, 19 insertions, 5 deletions
diff --git a/src/heartratetask/HeartRateTask.h b/src/heartratetask/HeartRateTask.h index 5bbfb9fb..9478d0d4 100644 --- a/src/heartratetask/HeartRateTask.h +++ b/src/heartratetask/HeartRateTask.h @@ -1,8 +1,11 @@ #pragma once #include <FreeRTOS.h> +#include <cstdint> +#include <optional> #include <task.h> #include <queue.h> #include <components/heartrate/Ppg.h> +#include "components/settings/Settings.h" namespace Pinetime { namespace Drivers { @@ -16,26 +19,37 @@ namespace Pinetime { namespace Applications { class HeartRateTask { public: - enum class Messages : uint8_t { GoToSleep, WakeUp, StartMeasurement, StopMeasurement }; - enum class States { Idle, Running }; + enum class Messages : uint8_t { GoToSleep, WakeUp, Enable, Disable }; - explicit HeartRateTask(Drivers::Hrs3300& heartRateSensor, Controllers::HeartRateController& controller); + explicit HeartRateTask(Drivers::Hrs3300& heartRateSensor, + Controllers::HeartRateController& controller, + Controllers::Settings& settings); void Start(); void Work(); void PushMessage(Messages msg); private: + enum class States : uint8_t { Disabled, Waiting, BackgroundMeasuring, ForegroundMeasuring }; static void Process(void* instance); + void HandleSensorData(); void StartMeasurement(); void StopMeasurement(); + [[nodiscard]] bool BackgroundMeasurementNeeded() const; + [[nodiscard]] std::optional<TickType_t> BackgroundMeasurementInterval() const; + [[nodiscard]] TickType_t CurrentTaskDelay() const; + TaskHandle_t taskHandle; QueueHandle_t messageQueue; - States state = States::Running; + bool valueCurrentlyShown; + bool measurementSucceeded; + States state = States::Disabled; Drivers::Hrs3300& heartRateSensor; Controllers::HeartRateController& controller; + Controllers::Settings& settings; Controllers::Ppg ppg; - bool measurementStarted = false; + TickType_t lastMeasurementTime; + TickType_t measurementStartTime; }; } |
