aboutsummaryrefslogtreecommitdiffstats
path: root/src/displayapp/screens/Metronome.h
diff options
context:
space:
mode:
authorKieran Cawthray <kieranc@gmail.com>2021-06-16 16:33:34 +0200
committerKieran Cawthray <kieranc@gmail.com>2021-06-16 16:33:34 +0200
commitf5d756928ffef032fb5ac85e73f9a68b7b8f64dc (patch)
tree907608958d0be8a97a3d646c842fde3095cef939 /src/displayapp/screens/Metronome.h
parentf2d01166c380b72ebcb13ef649def88ff4cf2d21 (diff)
parente90e8c7426f9a44e696b208a5b393a60476a3d43 (diff)
Merge remote-tracking branch 'upstream/develop' into pinetimestyle
Diffstat (limited to 'src/displayapp/screens/Metronome.h')
-rw-r--r--src/displayapp/screens/Metronome.h34
1 files changed, 34 insertions, 0 deletions
diff --git a/src/displayapp/screens/Metronome.h b/src/displayapp/screens/Metronome.h
new file mode 100644
index 00000000..3a1f1084
--- /dev/null
+++ b/src/displayapp/screens/Metronome.h
@@ -0,0 +1,34 @@
+#pragma once
+
+#include "systemtask/SystemTask.h"
+#include "components/motor/MotorController.h"
+
+#include <array>
+
+namespace Pinetime::Applications::Screens {
+
+ class Metronome : public Screen {
+ public:
+ Metronome(DisplayApp* app, Controllers::MotorController& motorController, System::SystemTask& systemTask);
+ ~Metronome() override;
+ bool Refresh() override;
+ bool OnTouchEvent(TouchEvents event) override;
+ void OnEvent(lv_obj_t* obj, lv_event_t event);
+ enum class States { Running, Stopped };
+
+ private:
+ bool running;
+ States currentState;
+ TickType_t startTime;
+ TickType_t tappedTime = 0;
+ Controllers::MotorController& motorController;
+ System::SystemTask& systemTask;
+ uint16_t bpm = 120;
+ uint8_t bpb = 4;
+ uint8_t counter = 1;
+
+ lv_obj_t *bpmArc, *bpmTap, *bpmValue, *bpmLegend;
+ lv_obj_t *bpbDropdown, *bpbLegend;
+ lv_obj_t *playPause, *playPauseLabel;
+ };
+}