aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--src/components/timer/TimerController.cpp15
-rw-r--r--src/components/timer/TimerController.h12
-rw-r--r--src/displayapp/DisplayApp.cpp13
-rw-r--r--src/displayapp/DisplayApp.h3
-rw-r--r--src/displayapp/DisplayAppRecovery.cpp1
-rw-r--r--src/displayapp/DisplayAppRecovery.h2
-rw-r--r--src/main.cpp3
-rw-r--r--src/systemtask/Messages.h1
-rw-r--r--src/systemtask/SystemTask.cpp9
-rw-r--r--src/systemtask/SystemTask.h3
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<TimerController*>(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 <chrono>
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<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());
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;