@ -42,10 +42,18 @@ SystemTask::SystemTask(Drivers::SpiMaster& spi,
Components : : LittleVgl & lvgl ,
Controllers : : Battery & batteryController ,
Controllers : : Ble & bleController ,
Controllers : : DateTime & dateTimeController ,
Controllers : : TimerController & timerController ,
Drivers : : Watchdog & watchdog ,
Pinetime : : Controllers : : NotificationManager & notificationManager ,
Pinetime : : Controllers : : MotorController & motorController ,
Pinetime : : Drivers : : Hrs3300 & heartRateSensor ,
Pinetime : : Controllers : : MotionController & motionController ,
Pinetime : : Drivers : : Bma421 & motionSensor ,
Controllers : : Settings & settingsController )
Controllers : : Settings & settingsController ,
Pinetime : : Controllers : : HeartRateController & heartRateController ,
Pinetime : : Applications : : DisplayApp & displayApp ,
Pinetime : : Applications : : HeartRateTask & heartRateApp )
: spi { spi } ,
lcd { lcd } ,
spiNorFlash { spiNorFlash } ,
@ -53,17 +61,20 @@ SystemTask::SystemTask(Drivers::SpiMaster& spi,
touchPanel { touchPanel } ,
lvgl { lvgl } ,
batteryController { batteryController } ,
heartRateController { * this } ,
bleController { bleController } ,
dateTimeController { * this } ,
timerController { * this } ,
watchdog { } ,
watchdogView { watchdog } ,
dateTimeController { dateTimeController } ,
timerController { timerController } ,
watchdog { watchdog } ,
notificationManager{ notificationManager } ,
motorController { motorController } ,
heartRateSensor { heartRateSensor } ,
motionSensor { motionSensor } ,
settingsController { settingsController } ,
nimbleController ( * this , bleController , dateTimeController , notificationManager , batteryController , spiNorFlash , heartRateController ) {
heartRateController { heartRateController } ,
nimbleController ( * this , bleController , dateTimeController , notificationManager , batteryController , spiNorFlash , heartRateController ) ,
motionController { motionController } ,
displayApp { displayApp } ,
heartRateApp ( heartRateApp ) {
systemTasksMsgQueue = xQueueCreate ( 10 , 1 ) ;
}
@ -96,9 +107,11 @@ void SystemTask::Work() {
twiMaster . Init ( ) ;
touchPanel . Init ( ) ;
dateTimeController . Register ( this ) ;
batteryController . Init ( ) ;
motorController . Init ( ) ;
motionSensor . SoftReset ( ) ;
timerController . Register ( this ) ;
timerController . Init ( ) ;
// Reset the TWI device because the motion sensor chip most probably crashed it...
@ -108,28 +121,14 @@ void SystemTask::Work() {
motionSensor . Init ( ) ;
settingsController . Init ( ) ;
displayApp = std : : make_unique < Pinetime : : Applications : : DisplayApp > ( lcd ,
lvgl ,
touchPanel ,
batteryController ,
bleController ,
dateTimeController ,
watchdogView ,
* this ,
notificationManager ,
heartRateController ,
settingsController ,
motorController ,
motionController ,
timerController ) ;
displayApp - > Start ( ) ;
displayApp . Register ( this ) ;
displayApp . Start ( ) ;
displayApp - > PushMessage ( Pinetime : : Applications : : Display : : Messages : : UpdateBatteryLevel ) ;
displayApp . PushMessage ( Pinetime : : Applications : : Display : : Messages : : UpdateBatteryLevel ) ;
heartRateSensor . Init ( ) ;
heartRateSensor . Disable ( ) ;
heartRateApp = std : : make_unique < Pinetime : : Applications : : HeartRateTask > ( heartRateSensor , heartRateController ) ;
heartRateApp - > Start ( ) ;
heartRateApp . Start ( ) ;
nrf_gpio_cfg_sense_input ( pinButton , ( nrf_gpio_pin_pull_t ) GPIO_PIN_CNF_PULL_Pulldown , ( nrf_gpio_pin_sense_t ) GPIO_PIN_CNF_SENSE_High ) ;
nrf_gpio_cfg_output ( 15 ) ;
@ -208,9 +207,9 @@ void SystemTask::Work() {
spiNorFlash . Wakeup ( ) ;
lcd . Wakeup ( ) ;
displayApp - > PushMessage ( Pinetime : : Applications : : Display : : Messages : : GoToRunning ) ;
displayApp - > PushMessage ( Pinetime : : Applications : : Display : : Messages : : UpdateBatteryLevel ) ;
heartRateApp - > PushMessage ( Pinetime : : Applications : : HeartRateTask : : Messages : : WakeUp ) ;
displayApp . PushMessage ( Pinetime : : Applications : : Display : : Messages : : GoToRunning ) ;
displayApp . PushMessage ( Pinetime : : Applications : : Display : : Messages : : UpdateBatteryLevel ) ;
heartRateApp . PushMessage ( Pinetime : : Applications : : HeartRateTask : : Messages : : WakeUp ) ;
isSleeping = false ;
isWakingUp = false ;
@ -230,26 +229,26 @@ void SystemTask::Work() {
isGoingToSleep = true ;
NRF_LOG_INFO ( " [systemtask] Going to sleep " ) ;
xTimerStop ( idleTimer , 0 ) ;
displayApp - > PushMessage ( Pinetime : : Applications : : Display : : Messages : : GoToSleep ) ;
heartRateApp - > PushMessage ( Pinetime : : Applications : : HeartRateTask : : Messages : : GoToSleep ) ;
displayApp . PushMessage ( Pinetime : : Applications : : Display : : Messages : : GoToSleep ) ;
heartRateApp . PushMessage ( Pinetime : : Applications : : HeartRateTask : : Messages : : GoToSleep ) ;
break ;
case Messages : : OnNewTime :
ReloadIdleTimer ( ) ;
displayApp - > PushMessage ( Pinetime : : Applications : : Display : : Messages : : UpdateDateTime ) ;
displayApp . PushMessage ( Pinetime : : Applications : : Display : : Messages : : UpdateDateTime ) ;
break ;
case Messages : : OnNewNotification :
if ( isSleeping & & ! isWakingUp ) {
GoToRunning ( ) ;
}
motorController . SetDuration ( 35 ) ;
displayApp - > PushMessage ( Pinetime : : Applications : : Display : : Messages : : NewNotification ) ;
displayApp . PushMessage ( Pinetime : : Applications : : Display : : Messages : : NewNotification ) ;
break ;
case Messages : : OnTimerDone :
if ( isSleeping & & ! isWakingUp ) {
GoToRunning ( ) ;
}
motorController . SetDuration ( 35 ) ;
displayApp - > PushMessage ( Pinetime : : Applications : : Display : : Messages : : TimerDone ) ;
displayApp . PushMessage ( Pinetime : : Applications : : Display : : Messages : : TimerDone ) ;
break ;
case Messages : : BleConnected :
ReloadIdleTimer ( ) ;
@ -260,7 +259,7 @@ void SystemTask::Work() {
doNotGoToSleep = true ;
if ( isSleeping & & ! isWakingUp )
GoToRunning ( ) ;
displayApp - > PushMessage ( Pinetime : : Applications : : Display : : Messages : : BleFirmwareUpdateStarted ) ;
displayApp . PushMessage ( Pinetime : : Applications : : Display : : Messages : : BleFirmwareUpdateStarted ) ;
break ;
case Messages : : BleFirmwareUpdateFinished :
doNotGoToSleep = false ;
@ -359,7 +358,7 @@ void SystemTask::OnButtonPushed() {
if ( ! isSleeping ) {
NRF_LOG_INFO ( " [systemtask] Button pushed " ) ;
PushMessage ( Messages : : OnButtonEvent ) ;
displayApp - > PushMessage ( Pinetime : : Applications : : Display : : Messages : : ButtonPushed ) ;
displayApp . PushMessage ( Pinetime : : Applications : : Display : : Messages : : ButtonPushed ) ;
} else {
if ( ! isWakingUp ) {
NRF_LOG_INFO ( " [systemtask] Button pushed, waking up " ) ;
@ -380,7 +379,7 @@ void SystemTask::OnTouchEvent() {
return ;
if ( ! isSleeping ) {
PushMessage ( Messages : : OnTouchEvent ) ;
displayApp - > PushMessage ( Pinetime : : Applications : : Display : : Messages : : TouchEvent ) ;
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 )
@ -389,7 +388,7 @@ void SystemTask::OnTouchEvent() {
}
}
void SystemTask : : PushMessage ( System Task : : Messages msg ) {
void SystemTask : : PushMessage ( System : : Messages msg ) {
if ( msg = = Messages : : GoToSleep ) {
isGoingToSleep = true ;
}