summaryrefslogtreecommitdiff
path: root/src/systemtask
diff options
context:
space:
mode:
Diffstat (limited to 'src/systemtask')
-rw-r--r--src/systemtask/SystemTask.cpp14
-rw-r--r--src/systemtask/SystemTask.h7
2 files changed, 16 insertions, 5 deletions
diff --git a/src/systemtask/SystemTask.cpp b/src/systemtask/SystemTask.cpp
index d2f38adb..4605ba95 100644
--- a/src/systemtask/SystemTask.cpp
+++ b/src/systemtask/SystemTask.cpp
@@ -40,7 +40,6 @@ SystemTask::SystemTask(Drivers::SpiMaster &spi, Drivers::St7789 &lcd,
Drivers::TwiMaster& twiMaster, Drivers::Cst816S &touchPanel,
Components::LittleVgl &lvgl,
Controllers::Battery &batteryController, Controllers::Ble &bleController,
- Controllers::DateTime &dateTimeController,
Pinetime::Controllers::MotorController& motorController,
Pinetime::Drivers::Hrs3300& heartRateSensor,
Pinetime::Drivers::Bma421& motionSensor,
@@ -48,7 +47,7 @@ SystemTask::SystemTask(Drivers::SpiMaster &spi, Drivers::St7789 &lcd,
spi{spi}, lcd{lcd}, spiNorFlash{spiNorFlash},
twiMaster{twiMaster}, touchPanel{touchPanel}, lvgl{lvgl}, batteryController{batteryController},
heartRateController{*this},
- bleController{bleController}, dateTimeController{dateTimeController},
+ bleController{bleController}, dateTimeController{*this},
watchdog{}, watchdogView{watchdog},
motorController{motorController}, heartRateSensor{heartRateSensor}, motionSensor{motionSensor},
settingsController{settingsController},
@@ -210,6 +209,11 @@ void SystemTask::Work() {
isSleeping = true;
isGoingToSleep = false;
break;
+ case Messages::OnNewDay:
+ // We might be sleeping (with TWI device disabled.
+ // Remember we'll have to reset the counter next time we're awake
+ stepCounterMustBeReset = true;
+ break;
default: break;
}
}
@@ -239,6 +243,12 @@ void SystemTask::UpdateMotion() {
if(isSleeping)
twiMaster.Wakeup();
+
+ if(stepCounterMustBeReset) {
+ motionSensor.ResetStepCounter();
+ stepCounterMustBeReset = false;
+ }
+
auto motionValues = motionSensor.Process();
if(isSleeping)
twiMaster.Sleep();
diff --git a/src/systemtask/SystemTask.h b/src/systemtask/SystemTask.h
index 2b70d19a..bb2a2868 100644
--- a/src/systemtask/SystemTask.h
+++ b/src/systemtask/SystemTask.h
@@ -40,7 +40,8 @@ namespace Pinetime {
class SystemTask {
public:
enum class Messages {GoToSleep, GoToRunning, OnNewTime, OnNewNotification, OnNewCall, BleConnected,
- BleFirmwareUpdateStarted, BleFirmwareUpdateFinished, OnTouchEvent, OnButtonEvent, OnDisplayTaskSleeping
+ BleFirmwareUpdateStarted, BleFirmwareUpdateFinished, OnTouchEvent, OnButtonEvent, OnDisplayTaskSleeping,
+ OnNewDay
};
SystemTask(Drivers::SpiMaster &spi, Drivers::St7789 &lcd,
@@ -48,7 +49,6 @@ namespace Pinetime {
Drivers::TwiMaster& twiMaster, Drivers::Cst816S &touchPanel,
Components::LittleVgl &lvgl,
Controllers::Battery &batteryController, Controllers::Ble &bleController,
- Controllers::DateTime &dateTimeController,
Pinetime::Controllers::MotorController& motorController,
Pinetime::Drivers::Hrs3300& heartRateSensor,
Pinetime::Drivers::Bma421& motionSensor,
@@ -80,7 +80,7 @@ namespace Pinetime {
std::unique_ptr<Pinetime::Applications::HeartRateTask> heartRateApp;
Pinetime::Controllers::Ble& bleController;
- Pinetime::Controllers::DateTime& dateTimeController;
+ Pinetime::Controllers::DateTime dateTimeController;
QueueHandle_t systemTasksMsgQueue;
std::atomic<bool> isSleeping{false};
std::atomic<bool> isGoingToSleep{false};
@@ -115,6 +115,7 @@ namespace Pinetime {
void GoToRunning();
void UpdateMotion();
+ bool stepCounterMustBeReset = false;
#if configUSE_TRACE_FACILITY == 1
SystemMonitor<FreeRtosMonitor> monitor;