From 1d3742e14f09316a1d795527713eb8f9742f0ffb Mon Sep 17 00:00:00 2001 From: Joaquim Date: Sun, 4 Apr 2021 03:08:51 +0100 Subject: Big UI and navigation Rewrite new navigation add some color to the apps redesign menus new settings menu new quick settings code clean up size reduction by converting navigation images to font and more... --- src/systemtask/SystemTask.cpp | 47 ++++++++++++++++++++++++++++++++++--------- src/systemtask/SystemTask.h | 5 ++--- 2 files changed, 40 insertions(+), 12 deletions(-) (limited to 'src/systemtask') 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(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; -- cgit v1.2.3-70-g09d2