summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/components/heartrate/HeartRateController.cpp15
-rw-r--r--src/components/heartrate/HeartRateController.h6
-rw-r--r--src/systemtask/SystemTask.cpp7
-rw-r--r--src/systemtask/SystemTask.h3
4 files changed, 28 insertions, 3 deletions
diff --git a/src/components/heartrate/HeartRateController.cpp b/src/components/heartrate/HeartRateController.cpp
index f296027f..53b34e6c 100644
--- a/src/components/heartrate/HeartRateController.cpp
+++ b/src/components/heartrate/HeartRateController.cpp
@@ -1,23 +1,34 @@
#include "HeartRateController.h"
#include <heartratetask/HeartRateTask.h>
+#include <systemtask/SystemTask.h>
using namespace Pinetime::Controllers;
+HeartRateController::HeartRateController(Pinetime::System::SystemTask &systemTask) : systemTask{systemTask} {
+
+}
+
+
void HeartRateController::Update(HeartRateController::States newState, uint8_t heartRate) {
this->state = newState;
this->heartRate = heartRate;
}
void HeartRateController::Start() {
- if(task != nullptr)
+ if(task != nullptr) {
task->PushMessage(Pinetime::Applications::HeartRateTask::Messages::StartMeasurement);
+ systemTask.PushMessage(System::SystemTask::Messages::HeartRateRunning);
+ }
}
void HeartRateController::Stop() {
- if(task != nullptr)
+ if(task != nullptr) {
task->PushMessage(Pinetime::Applications::HeartRateTask::Messages::StopMeasurement);
+ systemTask.PushMessage(System::SystemTask::Messages::HeartRateStopped);
+ }
}
void HeartRateController::SetHeartRateTask(Pinetime::Applications::HeartRateTask *task) {
this->task = task;
}
+
diff --git a/src/components/heartrate/HeartRateController.h b/src/components/heartrate/HeartRateController.h
index b4d6c972..b401f76a 100644
--- a/src/components/heartrate/HeartRateController.h
+++ b/src/components/heartrate/HeartRateController.h
@@ -6,11 +6,16 @@ namespace Pinetime {
namespace Applications {
class HeartRateTask;
}
+ namespace System {
+ class SystemTask;
+ }
namespace Controllers {
class HeartRateController {
public:
enum class States { NotEnoughData, NoTouch, Running};
+ explicit HeartRateController(System::SystemTask& systemTask);
+
void Start();
void Stop();
void Update(States newState, uint8_t heartRate);
@@ -20,6 +25,7 @@ namespace Pinetime {
uint8_t HeartRate() const { return heartRate; }
private:
+ System::SystemTask& systemTask;
Applications::HeartRateTask* task = nullptr;
States state = States::NotEnoughData;
uint8_t heartRate = 0;
diff --git a/src/systemtask/SystemTask.cpp b/src/systemtask/SystemTask.cpp
index 1d405621..e7551235 100644
--- a/src/systemtask/SystemTask.cpp
+++ b/src/systemtask/SystemTask.cpp
@@ -44,6 +44,7 @@ SystemTask::SystemTask(Drivers::SpiMaster &spi, Drivers::St7789 &lcd,
Pinetime::Drivers::Hrs3300& heartRateSensor) :
spi{spi}, lcd{lcd}, spiNorFlash{spiNorFlash},
twiMaster{twiMaster}, touchPanel{touchPanel}, lvgl{lvgl}, batteryController{batteryController},
+ heartRateController{*this},
bleController{bleController}, dateTimeController{dateTimeController},
watchdog{}, watchdogView{watchdog}, notificationManager{notificationManager},
nimbleController(*this, bleController,dateTimeController, notificationManager, batteryController, spiNorFlash),
@@ -194,6 +195,12 @@ void SystemTask::Work() {
isSleeping = true;
isGoingToSleep = false;
break;
+ case Messages::HeartRateRunning:
+ doNotGoToSleep = true;
+ break;
+ case Messages::HeartRateStopped:
+ doNotGoToSleep = false;
+ break;
default: break;
}
}
diff --git a/src/systemtask/SystemTask.h b/src/systemtask/SystemTask.h
index b93d0bce..e4eb8d47 100644
--- a/src/systemtask/SystemTask.h
+++ b/src/systemtask/SystemTask.h
@@ -28,7 +28,8 @@ namespace Pinetime {
class SystemTask {
public:
enum class Messages {GoToSleep, GoToRunning, OnNewTime, OnNewNotification, BleConnected,
- BleFirmwareUpdateStarted, BleFirmwareUpdateFinished, OnTouchEvent, OnButtonEvent, OnDisplayTaskSleeping
+ BleFirmwareUpdateStarted, BleFirmwareUpdateFinished, OnTouchEvent, OnButtonEvent, OnDisplayTaskSleeping,
+ HeartRateRunning, HeartRateStopped
};
SystemTask(Drivers::SpiMaster &spi, Drivers::St7789 &lcd,