aboutsummaryrefslogtreecommitdiffstats
path: root/src/systemtask/SystemTask.cpp
diff options
context:
space:
mode:
authorKaffeinatedKat <coffeeboi47@protonmail.com>2023-09-29 21:00:07 -0600
committerJF <JF002@users.noreply.github.com>2024-08-05 20:32:43 +0200
commit20ac7e8df38836d0a72c378b900b99c827c996c2 (patch)
tree9e2b05866873cc1a540ffc71fe485c94362ce038 /src/systemtask/SystemTask.cpp
parentf8f8993fac0bdd022dc9ef41a67c0b558f29ba89 (diff)
feat: always on display
Diffstat (limited to 'src/systemtask/SystemTask.cpp')
-rw-r--r--src/systemtask/SystemTask.cpp15
1 files changed, 11 insertions, 4 deletions
diff --git a/src/systemtask/SystemTask.cpp b/src/systemtask/SystemTask.cpp
index a56c2591..fb7493aa 100644
--- a/src/systemtask/SystemTask.cpp
+++ b/src/systemtask/SystemTask.cpp
@@ -198,7 +198,10 @@ void SystemTask::Work() {
doNotGoToSleep = true;
break;
case Messages::GoToRunning:
- spi.Wakeup();
+ // SPI doesn't go to sleep for always on mode
+ if (!settingsController.GetAlwaysOnDisplay()) {
+ spi.Wakeup();
+ }
// Double Tap needs the touch screen to be in normal mode
if (!settingsController.isWakeUpModeOn(Pinetime::Controllers::Settings::WakeUpMode::DoubleTap)) {
@@ -231,7 +234,7 @@ void SystemTask::Work() {
break;
}
case Messages::GoToSleep:
- if (doNotGoToSleep) {
+ if (doNotGoToSleep or settingsController.GetAlwaysOnDisplay()) {
break;
}
state = SystemTaskState::GoingToSleep; // Already set in PushMessage()
@@ -323,7 +326,11 @@ void SystemTask::Work() {
// if it's in sleep mode. Avoid bricked device by disabling sleep mode on these versions.
spiNorFlash.Sleep();
}
- spi.Sleep();
+
+ // Must keep SPI awake when still updating the display for always on
+ if (!settingsController.GetAlwaysOnDisplay()) {
+ spi.Sleep();
+ }
// Double Tap needs the touch screen to be in normal mode
if (!settingsController.isWakeUpModeOn(Pinetime::Controllers::Settings::WakeUpMode::DoubleTap)) {
@@ -503,7 +510,7 @@ void SystemTask::OnTouchEvent() {
}
void SystemTask::PushMessage(System::Messages msg) {
- if (msg == Messages::GoToSleep && !doNotGoToSleep) {
+ if (msg == Messages::GoToSleep && !doNotGoToSleep && !settingsController.GetAlwaysOnDisplay()) {
state = SystemTaskState::GoingToSleep;
}