summaryrefslogtreecommitdiff
path: root/src/systemtask
diff options
context:
space:
mode:
authorKieran Cawthray <kieranc@gmail.com>2021-05-21 14:34:25 +0200
committerKieran Cawthray <kieranc@gmail.com>2021-05-21 14:34:25 +0200
commit565601ef5060cd4372be9e5bab130aff64f12223 (patch)
tree5f5156132be07cdb151ae56dca6c9e3cab259e32 /src/systemtask
parent5c413016a7b9e78040fb8e5b48cd37b7963362df (diff)
parentf88c0f41fac506cc55e026cc67d1d5bce4669d31 (diff)
Merge remote-tracking branch 'upstream/develop' into pinetimestyle
Diffstat (limited to 'src/systemtask')
-rw-r--r--src/systemtask/SystemTask.cpp17
-rw-r--r--src/systemtask/SystemTask.h3
2 files changed, 18 insertions, 2 deletions
diff --git a/src/systemtask/SystemTask.cpp b/src/systemtask/SystemTask.cpp
index 80f4d5db..58377764 100644
--- a/src/systemtask/SystemTask.cpp
+++ b/src/systemtask/SystemTask.cpp
@@ -56,6 +56,7 @@ SystemTask::SystemTask(Drivers::SpiMaster& spi,
heartRateController {*this},
bleController {bleController},
dateTimeController {*this},
+ timerController {*this},
watchdog {},
watchdogView {watchdog},
motorController {motorController},
@@ -83,6 +84,8 @@ void SystemTask::Work() {
NRF_LOG_INFO("Last reset reason : %s", Pinetime::Drivers::Watchdog::ResetReasonToString(watchdog.ResetReason()));
APP_GPIOTE_INIT(2);
+ app_timer_init();
+
spi.Init();
spiNorFlash.Init();
spiNorFlash.Wakeup();
@@ -96,6 +99,7 @@ void SystemTask::Work() {
batteryController.Init();
motorController.Init();
motionSensor.SoftReset();
+ timerController.Init();
// Reset the TWI device because the motion sensor chip most probably crashed it...
twiMaster.Sleep();
@@ -116,7 +120,8 @@ void SystemTask::Work() {
heartRateController,
settingsController,
motorController,
- motionController);
+ motionController,
+ timerController);
displayApp->Start();
displayApp->PushMessage(Pinetime::Applications::Display::Messages::UpdateBatteryLevel);
@@ -233,11 +238,19 @@ void SystemTask::Work() {
displayApp->PushMessage(Pinetime::Applications::Display::Messages::UpdateDateTime);
break;
case Messages::OnNewNotification:
- if (isSleeping && !isWakingUp)
+ if (isSleeping && !isWakingUp) {
GoToRunning();
+ }
motorController.SetDuration(35);
displayApp->PushMessage(Pinetime::Applications::Display::Messages::NewNotification);
break;
+ case Messages::OnTimerDone:
+ if (isSleeping && !isWakingUp) {
+ GoToRunning();
+ }
+ motorController.SetDuration(35);
+ displayApp->PushMessage(Pinetime::Applications::Display::Messages::TimerDone);
+ break;
case Messages::BleConnected:
ReloadIdleTimer();
isBleDiscoveryTimerRunning = true;
diff --git a/src/systemtask/SystemTask.h b/src/systemtask/SystemTask.h
index 52e71b17..ea41a69d 100644
--- a/src/systemtask/SystemTask.h
+++ b/src/systemtask/SystemTask.h
@@ -16,6 +16,7 @@
#include "components/ble/NimbleController.h"
#include "components/ble/NotificationManager.h"
#include "components/motor/MotorController.h"
+#include "components/timer/TimerController.h"
#ifdef PINETIME_IS_RECOVERY
#include "displayapp/DisplayAppRecovery.h"
#include "displayapp/DummyLittleVgl.h"
@@ -45,6 +46,7 @@ namespace Pinetime {
TouchWakeUp,
OnNewTime,
OnNewNotification,
+ OnTimerDone,
OnNewCall,
BleConnected,
UpdateTimeOut,
@@ -100,6 +102,7 @@ namespace Pinetime {
Pinetime::Controllers::Ble& bleController;
Pinetime::Controllers::DateTime dateTimeController;
+ Pinetime::Controllers::TimerController timerController;
QueueHandle_t systemTasksMsgQueue;
std::atomic<bool> isSleeping {false};
std::atomic<bool> isGoingToSleep {false};