aboutsummaryrefslogtreecommitdiffstats
path: root/src/buttonhandler/ButtonHandler.h
diff options
context:
space:
mode:
authorJF <JF002@users.noreply.github.com>2021-11-06 10:55:37 +0100
committerGitHub <noreply@github.com>2021-11-06 10:55:37 +0100
commit4a5b5f954f12de1574af8e3efec094bb4bdbb542 (patch)
treec9de7a49ffd8af620c1dfab3145cd7ffeaad370d /src/buttonhandler/ButtonHandler.h
parentcfc11ea83b5b864810a87387f68f53c017bc20db (diff)
parent60a717b1a2272e61dfc4d297998da1c7672a8316 (diff)
Merge pull request #782 from Riksu9000/newer_buttonhandler
Newer ButtonHandler
Diffstat (limited to 'src/buttonhandler/ButtonHandler.h')
-rw-r--r--src/buttonhandler/ButtonHandler.h24
1 files changed, 24 insertions, 0 deletions
diff --git a/src/buttonhandler/ButtonHandler.h b/src/buttonhandler/ButtonHandler.h
new file mode 100644
index 00000000..44b20f19
--- /dev/null
+++ b/src/buttonhandler/ButtonHandler.h
@@ -0,0 +1,24 @@
+#pragma once
+
+#include "ButtonActions.h"
+#include "systemtask/SystemTask.h"
+#include <FreeRTOS.h>
+#include <timers.h>
+
+namespace Pinetime {
+ namespace Controllers {
+ class ButtonHandler {
+ public:
+ enum class Events : uint8_t { Press, Release, Timer };
+ void Init(Pinetime::System::SystemTask* systemTask);
+ ButtonActions HandleEvent(Events event);
+
+ private:
+ enum class States : uint8_t { Idle, Pressed, Holding, LongHeld };
+ TickType_t releaseTime = 0;
+ TimerHandle_t buttonTimer;
+ bool buttonPressed = false;
+ States state = States::Idle;
+ };
+ }
+}