Skip to content

Commit 7ca0418

Browse files
mark9064NeroBurner
authored andcommitted
Refactor doNotGoToSleep to a wakelock counter
1 parent c3d0590 commit 7ca0418

17 files changed

Lines changed: 87 additions & 41 deletions

src/CMakeLists.txt

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -478,6 +478,7 @@ list(APPEND SOURCE_FILES
478478

479479
systemtask/SystemTask.cpp
480480
systemtask/SystemMonitor.cpp
481+
systemtask/WakeLock.cpp
481482
drivers/TwiMaster.cpp
482483

483484
heartratetask/HeartRateTask.cpp
@@ -542,6 +543,7 @@ list(APPEND RECOVERY_SOURCE_FILES
542543

543544
systemtask/SystemTask.cpp
544545
systemtask/SystemMonitor.cpp
546+
systemtask/WakeLock.cpp
545547
drivers/TwiMaster.cpp
546548
components/rle/RleDecoder.cpp
547549
components/heartrate/HeartRateController.cpp
@@ -660,6 +662,7 @@ set(INCLUDE_FILES
660662
displayapp/InfiniTimeTheme.h
661663
systemtask/SystemTask.h
662664
systemtask/SystemMonitor.h
665+
systemtask/WakeLock.h
663666
displayapp/screens/Symbols.h
664667
drivers/TwiMaster.h
665668
heartratetask/HeartRateTask.h

src/displayapp/screens/Alarm.cpp

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -48,7 +48,7 @@ Alarm::Alarm(Controllers::AlarmController& alarmController,
4848
Controllers::Settings::ClockType clockType,
4949
System::SystemTask& systemTask,
5050
Controllers::MotorController& motorController)
51-
: alarmController {alarmController}, systemTask {systemTask}, motorController {motorController} {
51+
: alarmController {alarmController}, wakeLock(systemTask), motorController {motorController} {
5252

5353
hourCounter.Create();
5454
lv_obj_align(hourCounter.GetObject(), nullptr, LV_ALIGN_IN_TOP_LEFT, 0, 0);
@@ -205,7 +205,7 @@ void Alarm::SetAlerting() {
205205
lv_obj_set_hidden(btnStop, false);
206206
taskStopAlarm = lv_task_create(StopAlarmTaskCallback, pdMS_TO_TICKS(60 * 1000), LV_TASK_PRIO_MID, this);
207207
motorController.StartRinging();
208-
systemTask.PushMessage(System::Messages::DisableSleeping);
208+
wakeLock.Lock();
209209
}
210210

211211
void Alarm::StopAlerting() {
@@ -216,7 +216,7 @@ void Alarm::StopAlerting() {
216216
lv_task_del(taskStopAlarm);
217217
taskStopAlarm = nullptr;
218218
}
219-
systemTask.PushMessage(System::Messages::EnableSleeping);
219+
wakeLock.Release();
220220
lv_obj_set_hidden(enableSwitch, false);
221221
lv_obj_set_hidden(btnStop, true);
222222
}

src/displayapp/screens/Alarm.h

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -22,6 +22,7 @@
2222
#include "displayapp/screens/Screen.h"
2323
#include "displayapp/widgets/Counter.h"
2424
#include "displayapp/Controllers.h"
25+
#include "systemtask/WakeLock.h"
2526
#include "Symbols.h"
2627

2728
namespace Pinetime {
@@ -43,7 +44,7 @@ namespace Pinetime {
4344

4445
private:
4546
Controllers::AlarmController& alarmController;
46-
System::SystemTask& systemTask;
47+
System::WakeLock wakeLock;
4748
Controllers::MotorController& motorController;
4849

4950
lv_obj_t *btnStop, *txtStop, *btnRecur, *txtRecur, *btnInfo, *enableSwitch;

src/displayapp/screens/FlashLight.cpp

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,7 @@ namespace {
1515
}
1616

1717
FlashLight::FlashLight(System::SystemTask& systemTask, Controllers::BrightnessController& brightnessController)
18-
: systemTask {systemTask}, brightnessController {brightnessController} {
18+
: wakeLock(systemTask), brightnessController {brightnessController} {
1919

2020
previousBrightnessLevel = brightnessController.Level();
2121
brightnessController.Set(Controllers::BrightnessController::Levels::Low);
@@ -47,14 +47,13 @@ FlashLight::FlashLight(System::SystemTask& systemTask, Controllers::BrightnessCo
4747
backgroundAction->user_data = this;
4848
lv_obj_set_event_cb(backgroundAction, EventHandler);
4949

50-
systemTask.PushMessage(Pinetime::System::Messages::DisableSleeping);
50+
wakeLock.Lock();
5151
}
5252

5353
FlashLight::~FlashLight() {
5454
lv_obj_clean(lv_scr_act());
5555
lv_obj_set_style_local_bg_color(lv_scr_act(), LV_OBJ_PART_MAIN, LV_STATE_DEFAULT, LV_COLOR_BLACK);
5656
brightnessController.Set(previousBrightnessLevel);
57-
systemTask.PushMessage(Pinetime::System::Messages::EnableSleeping);
5857
}
5958

6059
void FlashLight::SetColors() {

src/displayapp/screens/FlashLight.h

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@
33
#include "displayapp/screens/Screen.h"
44
#include "components/brightness/BrightnessController.h"
55
#include "systemtask/SystemTask.h"
6+
#include "systemtask/WakeLock.h"
67
#include <cstdint>
78
#include <lvgl/lvgl.h>
89

@@ -23,7 +24,7 @@ namespace Pinetime {
2324
void SetIndicators();
2425
void SetColors();
2526

26-
Pinetime::System::SystemTask& systemTask;
27+
Pinetime::System::WakeLock wakeLock;
2728
Controllers::BrightnessController& brightnessController;
2829

2930
Controllers::BrightnessController::Levels brightnessLevel = Controllers::BrightnessController::Levels::High;

src/displayapp/screens/HeartRate.cpp

Lines changed: 4 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -29,7 +29,7 @@ namespace {
2929
}
3030

3131
HeartRate::HeartRate(Controllers::HeartRateController& heartRateController, System::SystemTask& systemTask)
32-
: heartRateController {heartRateController}, systemTask {systemTask} {
32+
: heartRateController {heartRateController}, wakeLock(systemTask) {
3333
bool isHrRunning = heartRateController.State() != Controllers::HeartRateController::States::Stopped;
3434
label_hr = lv_label_create(lv_scr_act(), nullptr);
3535

@@ -63,7 +63,7 @@ HeartRate::HeartRate(Controllers::HeartRateController& heartRateController, Syst
6363
label_startStop = lv_label_create(btn_startStop, nullptr);
6464
UpdateStartStopButton(isHrRunning);
6565
if (isHrRunning) {
66-
systemTask.PushMessage(Pinetime::System::Messages::DisableSleeping);
66+
wakeLock.Lock();
6767
}
6868

6969
taskRefresh = lv_task_create(RefreshTaskCallback, 100, LV_TASK_PRIO_MID, this);
@@ -72,7 +72,6 @@ HeartRate::HeartRate(Controllers::HeartRateController& heartRateController, Syst
7272
HeartRate::~HeartRate() {
7373
lv_task_del(taskRefresh);
7474
lv_obj_clean(lv_scr_act());
75-
systemTask.PushMessage(Pinetime::System::Messages::EnableSleeping);
7675
}
7776

7877
void HeartRate::Refresh() {
@@ -101,12 +100,12 @@ void HeartRate::OnStartStopEvent(lv_event_t event) {
101100
if (heartRateController.State() == Controllers::HeartRateController::States::Stopped) {
102101
heartRateController.Start();
103102
UpdateStartStopButton(heartRateController.State() != Controllers::HeartRateController::States::Stopped);
104-
systemTask.PushMessage(Pinetime::System::Messages::DisableSleeping);
103+
wakeLock.Lock();
105104
lv_obj_set_style_local_text_color(label_hr, LV_LABEL_PART_MAIN, LV_STATE_DEFAULT, Colors::highlight);
106105
} else {
107106
heartRateController.Stop();
108107
UpdateStartStopButton(heartRateController.State() != Controllers::HeartRateController::States::Stopped);
109-
systemTask.PushMessage(Pinetime::System::Messages::EnableSleeping);
108+
wakeLock.Release();
110109
lv_obj_set_style_local_text_color(label_hr, LV_LABEL_PART_MAIN, LV_STATE_DEFAULT, Colors::lightGray);
111110
}
112111
}

src/displayapp/screens/HeartRate.h

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@
44
#include <chrono>
55
#include "displayapp/screens/Screen.h"
66
#include "systemtask/SystemTask.h"
7+
#include "systemtask/WakeLock.h"
78
#include "Symbols.h"
89
#include <lvgl/src/lv_core/lv_style.h>
910
#include <lvgl/src/lv_core/lv_obj.h>
@@ -27,7 +28,7 @@ namespace Pinetime {
2728

2829
private:
2930
Controllers::HeartRateController& heartRateController;
30-
Pinetime::System::SystemTask& systemTask;
31+
Pinetime::System::WakeLock wakeLock;
3132
void UpdateStartStopButton(bool isRunning);
3233
lv_obj_t* label_hr;
3334
lv_obj_t* label_bpm;

src/displayapp/screens/Metronome.cpp

Lines changed: 3 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -22,7 +22,7 @@ namespace {
2222
}
2323

2424
Metronome::Metronome(Controllers::MotorController& motorController, System::SystemTask& systemTask)
25-
: motorController {motorController}, systemTask {systemTask} {
25+
: motorController {motorController}, wakeLock(systemTask) {
2626

2727
bpmArc = lv_arc_create(lv_scr_act(), nullptr);
2828
bpmArc->user_data = this;
@@ -72,7 +72,6 @@ Metronome::Metronome(Controllers::MotorController& motorController, System::Syst
7272

7373
Metronome::~Metronome() {
7474
lv_task_del(taskRefresh);
75-
systemTask.PushMessage(System::Messages::EnableSleeping);
7675
lv_obj_clean(lv_scr_act());
7776
}
7877

@@ -128,12 +127,12 @@ void Metronome::OnEvent(lv_obj_t* obj, lv_event_t event) {
128127
metronomeStarted = !metronomeStarted;
129128
if (metronomeStarted) {
130129
lv_label_set_text_static(lblPlayPause, Symbols::pause);
131-
systemTask.PushMessage(System::Messages::DisableSleeping);
130+
wakeLock.Lock();
132131
startTime = xTaskGetTickCount();
133132
counter = 1;
134133
} else {
135134
lv_label_set_text_static(lblPlayPause, Symbols::play);
136-
systemTask.PushMessage(System::Messages::EnableSleeping);
135+
wakeLock.Release();
137136
}
138137
}
139138
break;

src/displayapp/screens/Metronome.h

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
#pragma once
22

33
#include "systemtask/SystemTask.h"
4+
#include "systemtask/WakeLock.h"
45
#include "components/motor/MotorController.h"
56
#include "displayapp/screens/Screen.h"
67
#include "Symbols.h"
@@ -21,7 +22,7 @@ namespace Pinetime {
2122
TickType_t startTime = 0;
2223
TickType_t tappedTime = 0;
2324
Controllers::MotorController& motorController;
24-
System::SystemTask& systemTask;
25+
System::WakeLock wakeLock;
2526
int16_t bpm = 120;
2627
uint8_t bpb = 4;
2728
uint8_t counter = 1;

src/displayapp/screens/Notifications.cpp

Lines changed: 3 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -20,7 +20,7 @@ Notifications::Notifications(DisplayApp* app,
2020
notificationManager {notificationManager},
2121
alertNotificationService {alertNotificationService},
2222
motorController {motorController},
23-
systemTask {systemTask},
23+
wakeLock(systemTask),
2424
mode {mode} {
2525

2626
notificationManager.ClearNewNotificationFlag();
@@ -40,7 +40,7 @@ Notifications::Notifications(DisplayApp* app,
4040
validDisplay = false;
4141
}
4242
if (mode == Modes::Preview) {
43-
systemTask.PushMessage(System::Messages::DisableSleeping);
43+
wakeLock.Lock();
4444
if (notification.category == Controllers::NotificationManager::Categories::IncomingCall) {
4545
motorController.StartRinging();
4646
} else {
@@ -65,7 +65,6 @@ Notifications::~Notifications() {
6565
lv_task_del(taskRefresh);
6666
// make sure we stop any vibrations before exiting
6767
motorController.StopRinging();
68-
systemTask.PushMessage(System::Messages::EnableSleeping);
6968
lv_obj_clean(lv_scr_act());
7069
}
7170

@@ -120,7 +119,7 @@ void Notifications::Refresh() {
120119
}
121120

122121
void Notifications::OnPreviewInteraction() {
123-
systemTask.PushMessage(System::Messages::EnableSleeping);
122+
wakeLock.Release();
124123
motorController.StopRinging();
125124
if (timeoutLine != nullptr) {
126125
lv_obj_del(timeoutLine);

0 commit comments

Comments
 (0)