From 661ffbeb1eea68ec0cd63b4db537515f1d1772c8 Mon Sep 17 00:00:00 2001 From: Riku Isokoski Date: Mon, 27 Feb 2023 15:40:43 +0200 Subject: TimerController: Make TimerController reusable TimerController instance was moved to DisplayApp. --- src/displayapp/DisplayApp.cpp | 13 ++++++++++--- src/displayapp/DisplayApp.h | 3 +-- src/displayapp/DisplayAppRecovery.cpp | 1 - src/displayapp/DisplayAppRecovery.h | 2 -- 4 files changed, 11 insertions(+), 8 deletions(-) (limited to 'src/displayapp') diff --git a/src/displayapp/DisplayApp.cpp b/src/displayapp/DisplayApp.cpp index 2aa828bb..80b6e201 100644 --- a/src/displayapp/DisplayApp.cpp +++ b/src/displayapp/DisplayApp.cpp @@ -57,6 +57,11 @@ namespace { inline bool in_isr() { return (SCB->ICSR & SCB_ICSR_VECTACTIVE_Msk) != 0; } + + void TimerCallback(TimerHandle_t xTimer) { + auto* dispApp = static_cast(pvTimerGetTimerID(xTimer)); + dispApp->PushMessage(Display::Messages::TimerDone); + } } DisplayApp::DisplayApp(Drivers::St7789& lcd, @@ -70,7 +75,6 @@ DisplayApp::DisplayApp(Drivers::St7789& lcd, Controllers::Settings& settingsController, Pinetime::Controllers::MotorController& motorController, Pinetime::Controllers::MotionController& motionController, - Pinetime::Controllers::TimerController& timerController, Pinetime::Controllers::AlarmController& alarmController, Pinetime::Controllers::BrightnessController& brightnessController, Pinetime::Controllers::TouchHandler& touchHandler, @@ -86,12 +90,12 @@ DisplayApp::DisplayApp(Drivers::St7789& lcd, settingsController {settingsController}, motorController {motorController}, motionController {motionController}, - timerController {timerController}, alarmController {alarmController}, brightnessController {brightnessController}, touchHandler {touchHandler}, filesystem {filesystem}, - lvgl {lcd, filesystem} { + lvgl {lcd, filesystem}, + timerController(this, TimerCallback) { } void DisplayApp::Start(System::BootErrors error) { @@ -238,6 +242,9 @@ void DisplayApp::Refresh() { LoadNewScreen(Apps::NotificationsPreview, DisplayApp::FullRefreshDirections::Down); break; case Messages::TimerDone: + if (state != States::Running) { + PushMessageToSystemTask(System::Messages::GoToRunning); + } if (currentApp == Apps::Timer) { lv_disp_trig_activity(nullptr); auto* timer = static_cast(currentScreen.get()); diff --git a/src/displayapp/DisplayApp.h b/src/displayapp/DisplayApp.h index 28d29cd4..bd004d6e 100644 --- a/src/displayapp/DisplayApp.h +++ b/src/displayapp/DisplayApp.h @@ -61,7 +61,6 @@ namespace Pinetime { Controllers::Settings& settingsController, Pinetime::Controllers::MotorController& motorController, Pinetime::Controllers::MotionController& motionController, - Pinetime::Controllers::TimerController& timerController, Pinetime::Controllers::AlarmController& alarmController, Pinetime::Controllers::BrightnessController& brightnessController, Pinetime::Controllers::TouchHandler& touchHandler, @@ -88,7 +87,6 @@ namespace Pinetime { Pinetime::Controllers::Settings& settingsController; Pinetime::Controllers::MotorController& motorController; Pinetime::Controllers::MotionController& motionController; - Pinetime::Controllers::TimerController& timerController; Pinetime::Controllers::AlarmController& alarmController; Pinetime::Controllers::BrightnessController& brightnessController; Pinetime::Controllers::TouchHandler& touchHandler; @@ -96,6 +94,7 @@ namespace Pinetime { Pinetime::Controllers::FirmwareValidator validator; Pinetime::Components::LittleVgl lvgl; + Pinetime::Controllers::TimerController timerController; TaskHandle_t taskHandle; diff --git a/src/displayapp/DisplayAppRecovery.cpp b/src/displayapp/DisplayAppRecovery.cpp index 94e83791..de165c29 100644 --- a/src/displayapp/DisplayAppRecovery.cpp +++ b/src/displayapp/DisplayAppRecovery.cpp @@ -21,7 +21,6 @@ DisplayApp::DisplayApp(Drivers::St7789& lcd, Controllers::Settings& /*settingsController*/, Pinetime::Controllers::MotorController& /*motorController*/, Pinetime::Controllers::MotionController& /*motionController*/, - Pinetime::Controllers::TimerController& /*timerController*/, Pinetime::Controllers::AlarmController& /*alarmController*/, Pinetime::Controllers::BrightnessController& /*brightnessController*/, Pinetime::Controllers::TouchHandler& /*touchHandler*/, diff --git a/src/displayapp/DisplayAppRecovery.h b/src/displayapp/DisplayAppRecovery.h index 7be0c6d8..3ce95187 100644 --- a/src/displayapp/DisplayAppRecovery.h +++ b/src/displayapp/DisplayAppRecovery.h @@ -31,7 +31,6 @@ namespace Pinetime { class MotionController; class TouchHandler; class MotorController; - class TimerController; class AlarmController; class BrightnessController; class FS; @@ -55,7 +54,6 @@ namespace Pinetime { Controllers::Settings& settingsController, Pinetime::Controllers::MotorController& motorController, Pinetime::Controllers::MotionController& motionController, - Pinetime::Controllers::TimerController& timerController, Pinetime::Controllers::AlarmController& alarmController, Pinetime::Controllers::BrightnessController& brightnessController, Pinetime::Controllers::TouchHandler& touchHandler, -- cgit v1.2.3-70-g09d2