Refactor doNotGoToSleep to a wakelock counter
This commit is contained in:
parent
c3d05901a0
commit
7ca0418c82
17 changed files with 87 additions and 41 deletions
|
|
@ -189,15 +189,11 @@ void SystemTask::Work() {
|
|||
if (xQueueReceive(systemTasksMsgQueue, &msg, 100) == pdTRUE) {
|
||||
switch (msg) {
|
||||
case Messages::EnableSleeping:
|
||||
// Make sure that exiting an app doesn't enable sleeping,
|
||||
// if the exiting was caused by a firmware update
|
||||
if (!bleController.IsFirmwareUpdating()) {
|
||||
doNotGoToSleep = false;
|
||||
}
|
||||
wakeLocksHeld--;
|
||||
break;
|
||||
case Messages::DisableSleeping:
|
||||
GoToRunning();
|
||||
doNotGoToSleep = true;
|
||||
wakeLocksHeld++;
|
||||
break;
|
||||
case Messages::GoToRunning:
|
||||
GoToRunning();
|
||||
|
|
@ -243,24 +239,24 @@ void SystemTask::Work() {
|
|||
break;
|
||||
case Messages::BleFirmwareUpdateStarted:
|
||||
GoToRunning();
|
||||
doNotGoToSleep = true;
|
||||
wakeLocksHeld++;
|
||||
displayApp.PushMessage(Pinetime::Applications::Display::Messages::BleFirmwareUpdateStarted);
|
||||
break;
|
||||
case Messages::BleFirmwareUpdateFinished:
|
||||
if (bleController.State() == Pinetime::Controllers::Ble::FirmwareUpdateStates::Validated) {
|
||||
NVIC_SystemReset();
|
||||
}
|
||||
doNotGoToSleep = false;
|
||||
wakeLocksHeld--;
|
||||
break;
|
||||
case Messages::StartFileTransfer:
|
||||
NRF_LOG_INFO("[systemtask] FS Started");
|
||||
GoToRunning();
|
||||
doNotGoToSleep = true;
|
||||
wakeLocksHeld++;
|
||||
// TODO add intent of fs access icon or something
|
||||
break;
|
||||
case Messages::StopFileTransfer:
|
||||
NRF_LOG_INFO("[systemtask] FS Stopped");
|
||||
doNotGoToSleep = false;
|
||||
wakeLocksHeld--;
|
||||
// TODO add intent of fs access icon or something
|
||||
break;
|
||||
case Messages::OnTouchEvent:
|
||||
|
|
|
|||
|
|
@ -80,7 +80,7 @@ namespace Pinetime {
|
|||
void OnTouchEvent();
|
||||
|
||||
bool IsSleepDisabled() {
|
||||
return doNotGoToSleep;
|
||||
return wakeLocksHeld > 0;
|
||||
}
|
||||
|
||||
Pinetime::Controllers::NimbleController& nimble() {
|
||||
|
|
@ -124,7 +124,7 @@ namespace Pinetime {
|
|||
bool isBleDiscoveryTimerRunning = false;
|
||||
uint8_t bleDiscoveryTimer = 0;
|
||||
TimerHandle_t measureBatteryTimer;
|
||||
bool doNotGoToSleep = false;
|
||||
uint8_t wakeLocksHeld = 0;
|
||||
SystemTaskState state = SystemTaskState::Running;
|
||||
|
||||
void HandleButtonAction(Controllers::ButtonActions action);
|
||||
|
|
|
|||
27
src/systemtask/WakeLock.cpp
Normal file
27
src/systemtask/WakeLock.cpp
Normal file
|
|
@ -0,0 +1,27 @@
|
|||
#include "systemtask/WakeLock.h"
|
||||
|
||||
using namespace Pinetime::System;
|
||||
|
||||
WakeLock::WakeLock(SystemTask& systemTask) : systemTask {systemTask} {
|
||||
lockHeld = false;
|
||||
}
|
||||
|
||||
WakeLock::~WakeLock() {
|
||||
Release();
|
||||
}
|
||||
|
||||
void WakeLock::Lock() {
|
||||
if (lockHeld) {
|
||||
return;
|
||||
}
|
||||
systemTask.PushMessage(Messages::DisableSleeping);
|
||||
lockHeld = true;
|
||||
}
|
||||
|
||||
void WakeLock::Release() {
|
||||
if (!lockHeld) {
|
||||
return;
|
||||
}
|
||||
systemTask.PushMessage(Messages::EnableSleeping);
|
||||
lockHeld = false;
|
||||
}
|
||||
19
src/systemtask/WakeLock.h
Normal file
19
src/systemtask/WakeLock.h
Normal file
|
|
@ -0,0 +1,19 @@
|
|||
#pragma once
|
||||
|
||||
#include "systemtask/SystemTask.h"
|
||||
|
||||
namespace Pinetime {
|
||||
namespace System {
|
||||
class WakeLock {
|
||||
public:
|
||||
WakeLock(SystemTask& systemTask);
|
||||
~WakeLock();
|
||||
void Lock();
|
||||
void Release();
|
||||
|
||||
private:
|
||||
bool lockHeld;
|
||||
SystemTask& systemTask;
|
||||
};
|
||||
}
|
||||
}
|
||||
Loading…
Add table
Add a link
Reference in a new issue