summaryrefslogtreecommitdiff
path: root/src/components/motion/MotionController.cpp
diff options
context:
space:
mode:
authorJean-François Milants <jf@codingfield.com>2021-03-31 17:47:27 (GMT)
committerJean-François Milants <jf@codingfield.com>2021-04-04 13:56:04 (GMT)
commit68bdaee1cc301a2aca1849f38d2596debe7d67d1 (patch)
tree00f3bd9a1554c286aa2d5bd3a86bcfcdf7ba7171 /src/components/motion/MotionController.cpp
parent04fc33e2d479161ec261f932b908dffbd73e227f (diff)
First integration of the motion sensor (bma 421) : step counting + wake on wrist rotation + app to see the value of the 3 axis in "real time".
Diffstat (limited to 'src/components/motion/MotionController.cpp')
-rw-r--r--src/components/motion/MotionController.cpp33
1 files changed, 33 insertions, 0 deletions
diff --git a/src/components/motion/MotionController.cpp b/src/components/motion/MotionController.cpp
new file mode 100644
index 0000000..bad9d45
--- /dev/null
+++ b/src/components/motion/MotionController.cpp
@@ -0,0 +1,33 @@
+#include "MotionController.h"
+
+using namespace Pinetime::Controllers;
+
+void MotionController::Update(int16_t x, int16_t y, int16_t z, uint32_t nbSteps) {
+ this->x = x;
+ this->y = y;
+ this->z = z;
+ this->nbSteps = nbSteps;
+}
+
+bool MotionController::ShouldWakeUp(bool isSleeping) {
+ if ((x + 335) <= 670 && z < 0) {
+ if (not isSleeping) {
+ if (y <= 0) {
+ return false;
+ } else {
+ lastYForWakeUp = 0;
+ return false;
+ }
+ }
+
+ if (y >= 0) {
+ lastYForWakeUp = 0;
+ return false;
+ }
+ if (y + 230 < lastYForWakeUp) {
+ lastYForWakeUp = y;
+ return true;
+ }
+ }
+ return false;
+}