diff options
| author | Riku Isokoski <riksu9000@gmail.com> | 2023-02-27 15:40:43 +0200 |
|---|---|---|
| committer | Riku Isokoski <riksu9000@gmail.com> | 2023-04-16 14:33:23 +0000 |
| commit | 661ffbeb1eea68ec0cd63b4db537515f1d1772c8 (patch) | |
| tree | 415631431e5eba55b0d07ed1184359bdad07faa4 /src/displayapp/DisplayApp.cpp | |
| parent | 4d93ae6d27a94fe2a3c03b8f09bff2e23da30e12 (diff) | |
TimerController: Make TimerController reusable
TimerController instance was moved to DisplayApp.
Diffstat (limited to 'src/displayapp/DisplayApp.cpp')
| -rw-r--r-- | src/displayapp/DisplayApp.cpp | 13 |
1 files changed, 10 insertions, 3 deletions
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<DisplayApp*>(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<Screens::Timer*>(currentScreen.get()); |
