Skip to content

Commit 661ffbe

Browse files
committed
TimerController: Make TimerController reusable
TimerController instance was moved to DisplayApp.
1 parent 4d93ae6 commit 661ffbe

10 files changed

Lines changed: 14 additions & 48 deletions

File tree

src/components/timer/TimerController.cpp

Lines changed: 2 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -1,16 +1,9 @@
11
#include "components/timer/TimerController.h"
2-
#include "systemtask/SystemTask.h"
32

43
using namespace Pinetime::Controllers;
54

6-
void TimerCallback(TimerHandle_t xTimer) {
7-
auto* controller = static_cast<TimerController*>(pvTimerGetTimerID(xTimer));
8-
controller->OnTimerEnd();
9-
}
10-
11-
void TimerController::Init(Pinetime::System::SystemTask* systemTask) {
12-
this->systemTask = systemTask;
13-
timer = xTimerCreate("Timer", 1, pdFALSE, this, TimerCallback);
5+
TimerController::TimerController(void* const timerData, TimerCallbackFunction_t timerCallbackFunction) {
6+
timer = xTimerCreate("Timer", 1, pdFALSE, timerData, timerCallbackFunction);
147
}
158

169
void TimerController::StartTimer(std::chrono::milliseconds duration) {
@@ -33,7 +26,3 @@ void TimerController::StopTimer() {
3326
bool TimerController::IsRunning() {
3427
return (xTimerIsTimerActive(timer) == pdTRUE);
3528
}
36-
37-
void TimerController::OnTimerEnd() {
38-
systemTask->PushMessage(System::Messages::OnTimerDone);
39-
}

src/components/timer/TimerController.h

Lines changed: 1 addition & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -6,17 +6,10 @@
66
#include <chrono>
77

88
namespace Pinetime {
9-
namespace System {
10-
class SystemTask;
11-
}
12-
139
namespace Controllers {
14-
1510
class TimerController {
1611
public:
17-
TimerController() = default;
18-
19-
void Init(System::SystemTask* systemTask);
12+
TimerController(void* timerData, TimerCallbackFunction_t timerCallbackFunction);
2013

2114
void StartTimer(std::chrono::milliseconds duration);
2215

@@ -26,10 +19,7 @@ namespace Pinetime {
2619

2720
bool IsRunning();
2821

29-
void OnTimerEnd();
30-
3122
private:
32-
System::SystemTask* systemTask = nullptr;
3323
TimerHandle_t timer;
3424
};
3525
}

src/displayapp/DisplayApp.cpp

Lines changed: 10 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -57,6 +57,11 @@ namespace {
5757
inline bool in_isr() {
5858
return (SCB->ICSR & SCB_ICSR_VECTACTIVE_Msk) != 0;
5959
}
60+
61+
void TimerCallback(TimerHandle_t xTimer) {
62+
auto* dispApp = static_cast<DisplayApp*>(pvTimerGetTimerID(xTimer));
63+
dispApp->PushMessage(Display::Messages::TimerDone);
64+
}
6065
}
6166

6267
DisplayApp::DisplayApp(Drivers::St7789& lcd,
@@ -70,7 +75,6 @@ DisplayApp::DisplayApp(Drivers::St7789& lcd,
7075
Controllers::Settings& settingsController,
7176
Pinetime::Controllers::MotorController& motorController,
7277
Pinetime::Controllers::MotionController& motionController,
73-
Pinetime::Controllers::TimerController& timerController,
7478
Pinetime::Controllers::AlarmController& alarmController,
7579
Pinetime::Controllers::BrightnessController& brightnessController,
7680
Pinetime::Controllers::TouchHandler& touchHandler,
@@ -86,12 +90,12 @@ DisplayApp::DisplayApp(Drivers::St7789& lcd,
8690
settingsController {settingsController},
8791
motorController {motorController},
8892
motionController {motionController},
89-
timerController {timerController},
9093
alarmController {alarmController},
9194
brightnessController {brightnessController},
9295
touchHandler {touchHandler},
9396
filesystem {filesystem},
94-
lvgl {lcd, filesystem} {
97+
lvgl {lcd, filesystem},
98+
timerController(this, TimerCallback) {
9599
}
96100

97101
void DisplayApp::Start(System::BootErrors error) {
@@ -238,6 +242,9 @@ void DisplayApp::Refresh() {
238242
LoadNewScreen(Apps::NotificationsPreview, DisplayApp::FullRefreshDirections::Down);
239243
break;
240244
case Messages::TimerDone:
245+
if (state != States::Running) {
246+
PushMessageToSystemTask(System::Messages::GoToRunning);
247+
}
241248
if (currentApp == Apps::Timer) {
242249
lv_disp_trig_activity(nullptr);
243250
auto* timer = static_cast<Screens::Timer*>(currentScreen.get());

src/displayapp/DisplayApp.h

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -61,7 +61,6 @@ namespace Pinetime {
6161
Controllers::Settings& settingsController,
6262
Pinetime::Controllers::MotorController& motorController,
6363
Pinetime::Controllers::MotionController& motionController,
64-
Pinetime::Controllers::TimerController& timerController,
6564
Pinetime::Controllers::AlarmController& alarmController,
6665
Pinetime::Controllers::BrightnessController& brightnessController,
6766
Pinetime::Controllers::TouchHandler& touchHandler,
@@ -88,14 +87,14 @@ namespace Pinetime {
8887
Pinetime::Controllers::Settings& settingsController;
8988
Pinetime::Controllers::MotorController& motorController;
9089
Pinetime::Controllers::MotionController& motionController;
91-
Pinetime::Controllers::TimerController& timerController;
9290
Pinetime::Controllers::AlarmController& alarmController;
9391
Pinetime::Controllers::BrightnessController& brightnessController;
9492
Pinetime::Controllers::TouchHandler& touchHandler;
9593
Pinetime::Controllers::FS& filesystem;
9694

9795
Pinetime::Controllers::FirmwareValidator validator;
9896
Pinetime::Components::LittleVgl lvgl;
97+
Pinetime::Controllers::TimerController timerController;
9998

10099
TaskHandle_t taskHandle;
101100

src/displayapp/DisplayAppRecovery.cpp

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -21,7 +21,6 @@ DisplayApp::DisplayApp(Drivers::St7789& lcd,
2121
Controllers::Settings& /*settingsController*/,
2222
Pinetime::Controllers::MotorController& /*motorController*/,
2323
Pinetime::Controllers::MotionController& /*motionController*/,
24-
Pinetime::Controllers::TimerController& /*timerController*/,
2524
Pinetime::Controllers::AlarmController& /*alarmController*/,
2625
Pinetime::Controllers::BrightnessController& /*brightnessController*/,
2726
Pinetime::Controllers::TouchHandler& /*touchHandler*/,

src/displayapp/DisplayAppRecovery.h

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -31,7 +31,6 @@ namespace Pinetime {
3131
class MotionController;
3232
class TouchHandler;
3333
class MotorController;
34-
class TimerController;
3534
class AlarmController;
3635
class BrightnessController;
3736
class FS;
@@ -55,7 +54,6 @@ namespace Pinetime {
5554
Controllers::Settings& settingsController,
5655
Pinetime::Controllers::MotorController& motorController,
5756
Pinetime::Controllers::MotionController& motionController,
58-
Pinetime::Controllers::TimerController& timerController,
5957
Pinetime::Controllers::AlarmController& alarmController,
6058
Pinetime::Controllers::BrightnessController& brightnessController,
6159
Pinetime::Controllers::TouchHandler& touchHandler,

src/main.cpp

Lines changed: 0 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -103,7 +103,6 @@ Pinetime::Controllers::DateTime dateTimeController {settingsController};
103103
Pinetime::Drivers::Watchdog watchdog;
104104
Pinetime::Controllers::NotificationManager notificationManager;
105105
Pinetime::Controllers::MotionController motionController;
106-
Pinetime::Controllers::TimerController timerController;
107106
Pinetime::Controllers::AlarmController alarmController {dateTimeController};
108107
Pinetime::Controllers::TouchHandler touchHandler;
109108
Pinetime::Controllers::ButtonHandler buttonHandler;
@@ -120,7 +119,6 @@ Pinetime::Applications::DisplayApp displayApp(lcd,
120119
settingsController,
121120
motorController,
122121
motionController,
123-
timerController,
124122
alarmController,
125123
brightnessController,
126124
touchHandler,
@@ -133,7 +131,6 @@ Pinetime::System::SystemTask systemTask(spi,
133131
batteryController,
134132
bleController,
135133
dateTimeController,
136-
timerController,
137134
alarmController,
138135
watchdog,
139136
notificationManager,

src/systemtask/Messages.h

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,6 @@ namespace Pinetime {
99
TouchWakeUp,
1010
OnNewTime,
1111
OnNewNotification,
12-
OnTimerDone,
1312
OnNewCall,
1413
BleConnected,
1514
BleFirmwareUpdateStarted,

src/systemtask/SystemTask.cpp

Lines changed: 0 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -39,7 +39,6 @@ SystemTask::SystemTask(Drivers::SpiMaster& spi,
3939
Controllers::Battery& batteryController,
4040
Controllers::Ble& bleController,
4141
Controllers::DateTime& dateTimeController,
42-
Controllers::TimerController& timerController,
4342
Controllers::AlarmController& alarmController,
4443
Drivers::Watchdog& watchdog,
4544
Pinetime::Controllers::NotificationManager& notificationManager,
@@ -60,7 +59,6 @@ SystemTask::SystemTask(Drivers::SpiMaster& spi,
6059
batteryController {batteryController},
6160
bleController {bleController},
6261
dateTimeController {dateTimeController},
63-
timerController {timerController},
6462
alarmController {alarmController},
6563
watchdog {watchdog},
6664
notificationManager {notificationManager},
@@ -127,7 +125,6 @@ void SystemTask::Work() {
127125
dateTimeController.Register(this);
128126
batteryController.Register(this);
129127
motionSensor.SoftReset();
130-
timerController.Init(this);
131128
alarmController.Init(this);
132129

133130
// Reset the TWI device because the motion sensor chip most probably crashed it...
@@ -256,12 +253,6 @@ void SystemTask::Work() {
256253
displayApp.PushMessage(Pinetime::Applications::Display::Messages::NewNotification);
257254
}
258255
break;
259-
case Messages::OnTimerDone:
260-
if (state == SystemTaskState::Sleeping) {
261-
GoToRunning();
262-
}
263-
displayApp.PushMessage(Pinetime::Applications::Display::Messages::TimerDone);
264-
break;
265256
case Messages::SetOffAlarm:
266257
if (state == SystemTaskState::Sleeping) {
267258
GoToRunning();

src/systemtask/SystemTask.h

Lines changed: 0 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,6 @@
1515
#include "systemtask/SystemMonitor.h"
1616
#include "components/ble/NimbleController.h"
1717
#include "components/ble/NotificationManager.h"
18-
#include "components/timer/TimerController.h"
1918
#include "components/alarm/AlarmController.h"
2019
#include "components/fs/FS.h"
2120
#include "touchhandler/TouchHandler.h"
@@ -61,7 +60,6 @@ namespace Pinetime {
6160
Controllers::Battery& batteryController,
6261
Controllers::Ble& bleController,
6362
Controllers::DateTime& dateTimeController,
64-
Controllers::TimerController& timerController,
6563
Controllers::AlarmController& alarmController,
6664
Drivers::Watchdog& watchdog,
6765
Pinetime::Controllers::NotificationManager& notificationManager,
@@ -107,7 +105,6 @@ namespace Pinetime {
107105

108106
Pinetime::Controllers::Ble& bleController;
109107
Pinetime::Controllers::DateTime& dateTimeController;
110-
Pinetime::Controllers::TimerController& timerController;
111108
Pinetime::Controllers::AlarmController& alarmController;
112109
QueueHandle_t systemTasksMsgQueue;
113110
Pinetime::Drivers::Watchdog& watchdog;

0 commit comments

Comments
 (0)