summaryrefslogtreecommitdiff
path: root/src/systemtask/SystemTask.cpp
diff options
context:
space:
mode:
authorRiku Isokoski <riksu9000@gmail.com>2021-10-25 09:53:14 (GMT)
committerRiku Isokoski <riksu9000@gmail.com>2021-10-25 09:53:14 (GMT)
commitd5dfa8087679b644c13e1d420b8ef2fc894b3b51 (patch)
treee5e8706c762f73c011010c45e51a83bc3c755e39 /src/systemtask/SystemTask.cpp
parent82ca526ec2db11d9e4aa2d91cd69ed2394e3a843 (diff)
Newer buttonhandler
Diffstat (limited to 'src/systemtask/SystemTask.cpp')
-rw-r--r--src/systemtask/SystemTask.cpp63
1 files changed, 42 insertions, 21 deletions
diff --git a/src/systemtask/SystemTask.cpp b/src/systemtask/SystemTask.cpp
index e0a5907..b7db0b9 100644
--- a/src/systemtask/SystemTask.cpp
+++ b/src/systemtask/SystemTask.cpp
@@ -25,7 +25,6 @@
#include "main.h"
#include "BootErrors.h"
-
#include <memory>
using namespace Pinetime::System;
@@ -77,7 +76,8 @@ SystemTask::SystemTask(Drivers::SpiMaster& spi,
Pinetime::Applications::DisplayApp& displayApp,
Pinetime::Applications::HeartRateTask& heartRateApp,
Pinetime::Controllers::FS& fs,
- Pinetime::Controllers::TouchHandler& touchHandler)
+ Pinetime::Controllers::TouchHandler& touchHandler,
+ Pinetime::Controllers::ButtonHandler& buttonHandler)
: spi {spi},
lcd {lcd},
spiNorFlash {spiNorFlash},
@@ -101,8 +101,15 @@ SystemTask::SystemTask(Drivers::SpiMaster& spi,
heartRateApp(heartRateApp),
fs {fs},
touchHandler {touchHandler},
- nimbleController(*this, bleController, dateTimeController, notificationManager,
- batteryController, spiNorFlash, heartRateController, motionController) {
+ buttonHandler {buttonHandler},
+ nimbleController(*this,
+ bleController,
+ dateTimeController,
+ notificationManager,
+ batteryController,
+ spiNorFlash,
+ heartRateController,
+ motionController) {
}
void SystemTask::Start() {
@@ -163,6 +170,8 @@ void SystemTask::Work() {
heartRateSensor.Disable();
heartRateApp.Start();
+ buttonHandler.Init(this);
+
// Button
nrf_gpio_cfg_output(15);
nrf_gpio_pin_set(15);
@@ -326,9 +335,32 @@ void SystemTask::Work() {
ReloadIdleTimer();
displayApp.PushMessage(Pinetime::Applications::Display::Messages::TouchEvent);
break;
- case Messages::OnButtonEvent:
- ReloadIdleTimer();
- displayApp.PushMessage(Pinetime::Applications::Display::Messages::ButtonPushed);
+ case Messages::OnButtonPushed:
+ if (!isSleeping && !isGoingToSleep) {
+ displayApp.PushMessage(Pinetime::Applications::Display::Messages::ButtonPushed);
+ }
+ break;
+ case Messages::OnButtonLongPressed:
+ if (!isSleeping) {
+ displayApp.PushMessage(Pinetime::Applications::Display::Messages::ButtonLongPressed);
+ }
+ break;
+ case Messages::OnButtonLongerPressed:
+ if (!isSleeping) {
+ displayApp.PushMessage(Pinetime::Applications::Display::Messages::ButtonLongerPressed);
+ }
+ break;
+ case Messages::OnButtonDoubleClicked:
+ if (!isSleeping) {
+ displayApp.PushMessage(Pinetime::Applications::Display::Messages::ButtonDoubleClicked);
+ }
+ break;
+ case Messages::HandleButtonEvent:
+ if (nrf_gpio_pin_read(Pinetime::PinMap::Button) == 0) {
+ buttonHandler.HandleEvent(Pinetime::Controllers::ButtonHandler::Release);
+ } else {
+ buttonHandler.HandleEvent(Pinetime::Controllers::ButtonHandler::Press);
+ }
break;
case Messages::OnDisplayTaskSleeping:
if (BootloaderVersion::IsValid()) {
@@ -366,6 +398,9 @@ void SystemTask::Work() {
case Messages::BatteryPercentageUpdated:
nimbleController.NotifyBatteryLevel(batteryController.PercentRemaining());
break;
+ case Messages::ReloadIdleTimer:
+ ReloadIdleTimer();
+ break;
default:
break;
@@ -414,20 +449,6 @@ void SystemTask::UpdateMotion() {
}
}
-void SystemTask::OnButtonPushed() {
- if (isGoingToSleep)
- return;
- if (!isSleeping) {
- NRF_LOG_INFO("[systemtask] Button pushed");
- PushMessage(Messages::OnButtonEvent);
- } else {
- if (!isWakingUp) {
- NRF_LOG_INFO("[systemtask] Button pushed, waking up");
- GoToRunning();
- }
- }
-}
-
void SystemTask::GoToRunning() {
if (isGoingToSleep or (not isSleeping) or isWakingUp)
return;