summaryrefslogtreecommitdiff
path: root/src/systemtask/SystemTask.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/systemtask/SystemTask.cpp')
-rw-r--r--src/systemtask/SystemTask.cpp47
1 files changed, 38 insertions, 9 deletions
diff --git a/src/systemtask/SystemTask.cpp b/src/systemtask/SystemTask.cpp
index 7b137f5..236c313 100644
--- a/src/systemtask/SystemTask.cpp
+++ b/src/systemtask/SystemTask.cpp
@@ -125,7 +125,7 @@ void SystemTask::Work() {
nrfx_gpiote_in_init(pinTouchIrq, &pinConfig, nrfx_gpiote_evt_handler);
- idleTimer = xTimerCreate ("idleTimer", idleTime, pdFALSE, this, IdleTimerCallback);
+ idleTimer = xTimerCreate ("idleTimer", pdMS_TO_TICKS(settingsController.GetScreenTimeOut()), pdFALSE, this, IdleTimerCallback);
xTimerStart(idleTimer, 0);
// Suppress endless loop diagnostic
@@ -137,14 +137,23 @@ void SystemTask::Work() {
batteryController.Update();
Messages message = static_cast<Messages >(msg);
switch(message) {
+ case Messages::EnableSleeping:
+ doNotGoToSleep = false;
+ break;
+ case Messages::DisableSleeping:
+ doNotGoToSleep = true;
+ break;
+ case Messages::UpdateTimeOut:
+ xTimerChangePeriod(idleTimer, pdMS_TO_TICKS(settingsController.GetScreenTimeOut()), 0);
+ break;
case Messages::GoToRunning:
spi.Wakeup();
- twiMaster.Wakeup();
+ //twiMaster.Wakeup();
+ //touchPanel.Wakeup();
nimbleController.StartAdvertising();
xTimerStart(idleTimer, 0);
- spiNorFlash.Wakeup();
- touchPanel.Wakeup();
+ spiNorFlash.Wakeup();
lcd.Wakeup();
displayApp->PushMessage(Pinetime::Applications::Display::Messages::GoToRunning);
@@ -167,7 +176,7 @@ void SystemTask::Work() {
break;
case Messages::OnNewNotification:
if(isSleeping && !isWakingUp) GoToRunning();
- if(notificationManager.IsVibrationEnabled()) motorController.SetDuration(35);
+ motorController.SetDuration(35);
displayApp->PushMessage(Pinetime::Applications::Display::Messages::NewNotification);
break;
case Messages::BleConnected:
@@ -199,10 +208,18 @@ void SystemTask::Work() {
spiNorFlash.Sleep();
}
lcd.Sleep();
- touchPanel.Sleep();
-
spi.Sleep();
- twiMaster.Sleep();
+
+ // Double Tap needs the touch screen to be in normal mode
+ if ( settingsController.getWakeUpMode() != Pinetime::Controllers::Settings::WakeUpMode::DoubleTap ) {
+ //touchPanel.Sleep();
+ }
+
+ // No Wake uo mode, we can put the twi to sleep
+ if ( settingsController.getWakeUpMode() == Pinetime::Controllers::Settings::WakeUpMode::None ) {
+ //twiMaster.Sleep();
+ }
+
isSleeping = true;
isGoingToSleep = false;
break;
@@ -253,10 +270,22 @@ void SystemTask::GoToRunning() {
void SystemTask::OnTouchEvent() {
if(isGoingToSleep) return ;
- NRF_LOG_INFO("[systemtask] Touch event");
if(!isSleeping) {
PushMessage(Messages::OnTouchEvent);
displayApp->PushMessage(Pinetime::Applications::Display::Messages::TouchEvent);
+ } else if(!isWakingUp) {
+ if( settingsController.getWakeUpMode() == Pinetime::Controllers::Settings::WakeUpMode::None or
+ settingsController.getWakeUpMode() == Pinetime::Controllers::Settings::WakeUpMode::RaiseWrist ) return;
+
+ if( settingsController.getWakeUpMode() == Pinetime::Controllers::Settings::WakeUpMode::SingleTap ) {
+ GoToRunning();
+ } else if( settingsController.getWakeUpMode() == Pinetime::Controllers::Settings::WakeUpMode::DoubleTap ) {
+ // error
+ /*auto info = touchPanel.GetTouchInfo();
+ if( info.isTouch and info.gesture == Pinetime::Drivers::Cst816S::Gestures::DoubleTap ) {
+ GoToRunning();
+ }*/
+ }
}
}