diff options
Diffstat (limited to 'src/systemtask')
-rw-r--r-- | src/systemtask/SystemTask.cpp | 47 | ||||
-rw-r--r-- | src/systemtask/SystemTask.h | 5 |
2 files changed, 40 insertions, 12 deletions
diff --git a/src/systemtask/SystemTask.cpp b/src/systemtask/SystemTask.cpp index 7b137f55..236c313a 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(); + }*/ + } } } diff --git a/src/systemtask/SystemTask.h b/src/systemtask/SystemTask.h index cc693735..fda951bd 100644 --- a/src/systemtask/SystemTask.h +++ b/src/systemtask/SystemTask.h @@ -37,8 +37,8 @@ namespace Pinetime { namespace System { class SystemTask { public: - enum class Messages {GoToSleep, GoToRunning, OnNewTime, OnNewNotification, OnNewCall, BleConnected, - BleFirmwareUpdateStarted, BleFirmwareUpdateFinished, OnTouchEvent, OnButtonEvent, OnDisplayTaskSleeping + enum class Messages {GoToSleep, GoToRunning, OnNewTime, OnNewNotification, OnNewCall, BleConnected, UpdateTimeOut, + BleFirmwareUpdateStarted, BleFirmwareUpdateFinished, OnTouchEvent, OnButtonEvent, OnDisplayTaskSleeping, EnableSleeping, DisableSleeping }; SystemTask(Drivers::SpiMaster &spi, Drivers::St7789 &lcd, @@ -104,7 +104,6 @@ namespace Pinetime { void ReloadIdleTimer() const; bool isBleDiscoveryTimerRunning = false; uint8_t bleDiscoveryTimer = 0; - static constexpr uint32_t idleTime = 15000; TimerHandle_t idleTimer; bool doNotGoToSleep = false; |