summaryrefslogtreecommitdiff
path: root/src/systemtask
diff options
context:
space:
mode:
authorJoaquim <joaquim.org@gmail.com>2021-04-04 02:08:51 (GMT)
committerJoaquim <joaquim.org@gmail.com>2021-04-04 02:08:51 (GMT)
commit1d3742e14f09316a1d795527713eb8f9742f0ffb (patch)
tree6bc6343538506b68256aa057121e063d22f8ed1a /src/systemtask
parent58a2d000c4d49d96121894d6dd6bb861d7564bea (diff)
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...
Diffstat (limited to 'src/systemtask')
-rw-r--r--src/systemtask/SystemTask.cpp47
-rw-r--r--src/systemtask/SystemTask.h5
2 files changed, 40 insertions, 12 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();
+ }*/
+ }
}
}
diff --git a/src/systemtask/SystemTask.h b/src/systemtask/SystemTask.h
index cc69373..fda951b 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;