diff options
Diffstat (limited to 'src/systemtask/SystemTask.cpp')
| -rw-r--r-- | src/systemtask/SystemTask.cpp | 47 |
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(); + }*/ + } } } |
