From 661ffbeb1eea68ec0cd63b4db537515f1d1772c8 Mon Sep 17 00:00:00 2001 From: Riku Isokoski Date: Mon, 27 Feb 2023 15:40:43 +0200 Subject: [PATCH] TimerController: Make TimerController reusable TimerController instance was moved to DisplayApp. --- src/components/timer/TimerController.cpp | 15 ++------------- src/components/timer/TimerController.h | 12 +----------- src/displayapp/DisplayApp.cpp | 13 ++++++++++--- src/displayapp/DisplayApp.h | 3 +-- src/displayapp/DisplayAppRecovery.cpp | 1 - src/displayapp/DisplayAppRecovery.h | 2 -- src/main.cpp | 3 --- src/systemtask/Messages.h | 1 - src/systemtask/SystemTask.cpp | 9 --------- src/systemtask/SystemTask.h | 3 --- 10 files changed, 14 insertions(+), 48 deletions(-) diff --git a/src/components/timer/TimerController.cpp b/src/components/timer/TimerController.cpp index 5e7f1eed..e3aa07af 100644 --- a/src/components/timer/TimerController.cpp +++ b/src/components/timer/TimerController.cpp @@ -1,16 +1,9 @@ #include "components/timer/TimerController.h" -#include "systemtask/SystemTask.h" using namespace Pinetime::Controllers; -void TimerCallback(TimerHandle_t xTimer) { - auto* controller = static_cast(pvTimerGetTimerID(xTimer)); - controller->OnTimerEnd(); -} - -void TimerController::Init(Pinetime::System::SystemTask* systemTask) { - this->systemTask = systemTask; - timer = xTimerCreate("Timer", 1, pdFALSE, this, TimerCallback); +TimerController::TimerController(void* const timerData, TimerCallbackFunction_t timerCallbackFunction) { + timer = xTimerCreate("Timer", 1, pdFALSE, timerData, timerCallbackFunction); } void TimerController::StartTimer(std::chrono::milliseconds duration) { @@ -33,7 +26,3 @@ void TimerController::StopTimer() { bool TimerController::IsRunning() { return (xTimerIsTimerActive(timer) == pdTRUE); } - -void TimerController::OnTimerEnd() { - systemTask->PushMessage(System::Messages::OnTimerDone); -} diff --git a/src/components/timer/TimerController.h b/src/components/timer/TimerController.h index 1c2e44b6..1d2a51df 100644 --- a/src/components/timer/TimerController.h +++ b/src/components/timer/TimerController.h @@ -6,17 +6,10 @@ #include namespace Pinetime { - namespace System { - class SystemTask; - } - namespace Controllers { - class TimerController { public: - TimerController() = default; - - void Init(System::SystemTask* systemTask); + TimerController(void* timerData, TimerCallbackFunction_t timerCallbackFunction); void StartTimer(std::chrono::milliseconds duration); @@ -26,10 +19,7 @@ namespace Pinetime { bool IsRunning(); - void OnTimerEnd(); - private: - System::SystemTask* systemTask = nullptr; TimerHandle_t timer; }; } 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, diff --git a/src/main.cpp b/src/main.cpp index 74804214..951365a8 100644 --- a/src/main.cpp +++ b/src/main.cpp @@ -103,7 +103,6 @@ Pinetime::Controllers::DateTime dateTimeController {settingsController}; Pinetime::Drivers::Watchdog watchdog; Pinetime::Controllers::NotificationManager notificationManager; Pinetime::Controllers::MotionController motionController; -Pinetime::Controllers::TimerController timerController; Pinetime::Controllers::AlarmController alarmController {dateTimeController}; Pinetime::Controllers::TouchHandler touchHandler; Pinetime::Controllers::ButtonHandler buttonHandler; @@ -120,7 +119,6 @@ Pinetime::Applications::DisplayApp displayApp(lcd, settingsController, motorController, motionController, - timerController, alarmController, brightnessController, touchHandler, @@ -133,7 +131,6 @@ Pinetime::System::SystemTask systemTask(spi, batteryController, bleController, dateTimeController, - timerController, alarmController, watchdog, notificationManager, diff --git a/src/systemtask/Messages.h b/src/systemtask/Messages.h index d92755b7..81be9151 100644 --- a/src/systemtask/Messages.h +++ b/src/systemtask/Messages.h @@ -9,7 +9,6 @@ namespace Pinetime { TouchWakeUp, OnNewTime, OnNewNotification, - OnTimerDone, OnNewCall, BleConnected, BleFirmwareUpdateStarted, diff --git a/src/systemtask/SystemTask.cpp b/src/systemtask/SystemTask.cpp index 9dac95ee..0621c6ef 100644 --- a/src/systemtask/SystemTask.cpp +++ b/src/systemtask/SystemTask.cpp @@ -39,7 +39,6 @@ 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, @@ -60,7 +59,6 @@ SystemTask::SystemTask(Drivers::SpiMaster& spi, batteryController {batteryController}, bleController {bleController}, dateTimeController {dateTimeController}, - timerController {timerController}, alarmController {alarmController}, watchdog {watchdog}, notificationManager {notificationManager}, @@ -127,7 +125,6 @@ void SystemTask::Work() { dateTimeController.Register(this); batteryController.Register(this); motionSensor.SoftReset(); - timerController.Init(this); alarmController.Init(this); // Reset the TWI device because the motion sensor chip most probably crashed it... @@ -256,12 +253,6 @@ void SystemTask::Work() { displayApp.PushMessage(Pinetime::Applications::Display::Messages::NewNotification); } break; - case Messages::OnTimerDone: - if (state == SystemTaskState::Sleeping) { - GoToRunning(); - } - displayApp.PushMessage(Pinetime::Applications::Display::Messages::TimerDone); - break; case Messages::SetOffAlarm: if (state == SystemTaskState::Sleeping) { GoToRunning(); diff --git a/src/systemtask/SystemTask.h b/src/systemtask/SystemTask.h index 22d268be..79f1cf44 100644 --- a/src/systemtask/SystemTask.h +++ b/src/systemtask/SystemTask.h @@ -15,7 +15,6 @@ #include "systemtask/SystemMonitor.h" #include "components/ble/NimbleController.h" #include "components/ble/NotificationManager.h" -#include "components/timer/TimerController.h" #include "components/alarm/AlarmController.h" #include "components/fs/FS.h" #include "touchhandler/TouchHandler.h" @@ -61,7 +60,6 @@ namespace Pinetime { Controllers::Battery& batteryController, Controllers::Ble& bleController, Controllers::DateTime& dateTimeController, - Controllers::TimerController& timerController, Controllers::AlarmController& alarmController, Drivers::Watchdog& watchdog, Pinetime::Controllers::NotificationManager& notificationManager, @@ -107,7 +105,6 @@ namespace Pinetime { Pinetime::Controllers::Ble& bleController; Pinetime::Controllers::DateTime& dateTimeController; - Pinetime::Controllers::TimerController& timerController; Pinetime::Controllers::AlarmController& alarmController; QueueHandle_t systemTasksMsgQueue; Pinetime::Drivers::Watchdog& watchdog;