summaryrefslogtreecommitdiff
path: root/src/systemtask
diff options
context:
space:
mode:
Diffstat (limited to 'src/systemtask')
-rw-r--r--src/systemtask/Messages.h1
-rw-r--r--src/systemtask/SystemTask.cpp13
-rw-r--r--src/systemtask/SystemTask.h3
3 files changed, 17 insertions, 0 deletions
diff --git a/src/systemtask/Messages.h b/src/systemtask/Messages.h
index 1210bbc..760cb7d 100644
--- a/src/systemtask/Messages.h
+++ b/src/systemtask/Messages.h
@@ -8,6 +8,7 @@ namespace Pinetime {
TouchWakeUp,
OnNewTime,
OnNewNotification,
+ OnTimerDone,
OnNewCall,
BleConnected,
UpdateTimeOut,
diff --git a/src/systemtask/SystemTask.cpp b/src/systemtask/SystemTask.cpp
index 6f32843..8e6f257 100644
--- a/src/systemtask/SystemTask.cpp
+++ b/src/systemtask/SystemTask.cpp
@@ -56,6 +56,7 @@ SystemTask::SystemTask(Drivers::SpiMaster& spi,
Controllers::Battery& batteryController,
Controllers::Ble& bleController,
Controllers::DateTime& dateTimeController,
+ Controllers::TimerController& timerController,
Controllers::AlarmController& alarmController,
Drivers::Watchdog& watchdog,
Pinetime::Controllers::NotificationManager& notificationManager,
@@ -75,6 +76,7 @@ SystemTask::SystemTask(Drivers::SpiMaster& spi,
batteryController {batteryController},
bleController {bleController},
dateTimeController {dateTimeController},
+ timerController {timerController},
alarmController {alarmController},
watchdog {watchdog},
notificationManager {notificationManager},
@@ -114,6 +116,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();
@@ -135,6 +139,8 @@ void SystemTask::Work() {
batteryController.Register(this);
motorController.Init();
motionSensor.SoftReset();
+ timerController.Register(this);
+ timerController.Init();
alarmController.Init(this);
// Reset the TWI device because the motion sensor chip most probably crashed it...
@@ -278,6 +284,13 @@ void SystemTask::Work() {
displayApp.PushMessage(Pinetime::Applications::Display::Messages::NewNotification);
}
break;
+ case Messages::OnTimerDone:
+ if (isSleeping && !isWakingUp) {
+ GoToRunning();
+ }
+ motorController.RunForDuration(35);
+ displayApp.PushMessage(Pinetime::Applications::Display::Messages::TimerDone);
+ break;
case Messages::SetOffAlarm:
if (isSleeping && !isWakingUp) {
GoToRunning();
diff --git a/src/systemtask/SystemTask.h b/src/systemtask/SystemTask.h
index 8fc48f1..fa28626 100644
--- a/src/systemtask/SystemTask.h
+++ b/src/systemtask/SystemTask.h
@@ -15,6 +15,7 @@
#include "components/ble/NimbleController.h"
#include "components/ble/NotificationManager.h"
#include "components/motor/MotorController.h"
+#include "components/timer/TimerController.h"
#include "components/alarm/AlarmController.h"
#include "touchhandler/TouchHandler.h"
#include "buttonhandler/ButtonHandler.h"
@@ -58,6 +59,7 @@ namespace Pinetime {
Controllers::Battery& batteryController,
Controllers::Ble& bleController,
Controllers::DateTime& dateTimeController,
+ Controllers::TimerController& timerController,
Controllers::AlarmController& alarmController,
Drivers::Watchdog& watchdog,
Pinetime::Controllers::NotificationManager& notificationManager,
@@ -98,6 +100,7 @@ namespace Pinetime {
Pinetime::Controllers::Ble& bleController;
Pinetime::Controllers::DateTime& dateTimeController;
+ Pinetime::Controllers::TimerController& timerController;
Pinetime::Controllers::AlarmController& alarmController;
QueueHandle_t systemTasksMsgQueue;
std::atomic<bool> isSleeping {false};