Merge branch 'develop' into motion-sensor

# Conflicts:
#	src/CMakeLists.txt
#	src/displayapp/Apps.h
#	src/displayapp/DisplayApp.cpp
#	src/displayapp/DisplayApp.h
#	src/displayapp/lv_pinetime_theme.c
#	src/displayapp/screens/ApplicationList.cpp
#	src/drivers/TwiMaster.cpp
#	src/systemtask/SystemTask.h
This commit is contained in:
Jean-François Milants
2021-04-09 21:16:21 +02:00
492 changed files with 58799 additions and 10602 deletions

View File

@@ -130,7 +130,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
@@ -144,14 +144,27 @@ 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();
// Double Tap needs the touch screen to be in normal mode
if ( settingsController.getWakeUpMode() != Pinetime::Controllers::Settings::WakeUpMode::DoubleTap ) {
touchPanel.Wakeup();
}
nimbleController.StartAdvertising();
xTimerStart(idleTimer, 0);
spiNorFlash.Wakeup();
touchPanel.Wakeup();
spiNorFlash.Wakeup();
lcd.Wakeup();
displayApp->PushMessage(Pinetime::Applications::Display::Messages::GoToRunning);
@@ -161,6 +174,23 @@ void SystemTask::Work() {
isSleeping = false;
isWakingUp = false;
break;
case Messages::TouchWakeUp: {
twiMaster.Wakeup();
auto touchInfo = touchPanel.GetTouchInfo();
twiMaster.Sleep();
if( touchInfo.isTouch and
(
( touchInfo.gesture == Pinetime::Drivers::Cst816S::Gestures::DoubleTap and
settingsController.getWakeUpMode() == Pinetime::Controllers::Settings::WakeUpMode::DoubleTap
) or
( touchInfo.gesture == Pinetime::Drivers::Cst816S::Gestures::SingleTap and
settingsController.getWakeUpMode() == Pinetime::Controllers::Settings::WakeUpMode::SingleTap
)
)
) {
GoToRunning();
}
} break;
case Messages::GoToSleep:
isGoingToSleep = true;
NRF_LOG_INFO("[systemtask] Going to sleep");
@@ -174,7 +204,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:
@@ -206,10 +236,14 @@ void SystemTask::Work() {
spiNorFlash.Sleep();
}
lcd.Sleep();
touchPanel.Sleep();
spi.Sleep();
// Double Tap needs the touch screen to be in normal mode
if ( settingsController.getWakeUpMode() != Pinetime::Controllers::Settings::WakeUpMode::DoubleTap ) {
touchPanel.Sleep();
}
twiMaster.Sleep();
isSleeping = true;
isGoingToSleep = false;
break;
@@ -290,10 +324,13 @@ 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;
PushMessage(Messages::TouchWakeUp);
}
}

View File

@@ -39,8 +39,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, TouchWakeUp, OnNewTime, OnNewNotification, OnNewCall, BleConnected, UpdateTimeOut,
BleFirmwareUpdateStarted, BleFirmwareUpdateFinished, OnTouchEvent, OnButtonEvent, OnDisplayTaskSleeping, EnableSleeping, DisableSleeping,
OnNewDay
};
@@ -109,7 +109,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;