From 68bdaee1cc301a2aca1849f38d2596debe7d67d1 Mon Sep 17 00:00:00 2001 From: Jean-François Milants Date: Wed, 31 Mar 2021 19:47:27 +0200 Subject: 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". --- src/components/motion/MotionController.cpp | 33 ++++++++++++++++++++++++++++++ src/components/motion/MotionController.h | 26 +++++++++++++++++++++++ 2 files changed, 59 insertions(+) create mode 100644 src/components/motion/MotionController.cpp create mode 100644 src/components/motion/MotionController.h (limited to 'src/components') diff --git a/src/components/motion/MotionController.cpp b/src/components/motion/MotionController.cpp new file mode 100644 index 00000000..bad9d45f --- /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; +} diff --git a/src/components/motion/MotionController.h b/src/components/motion/MotionController.h new file mode 100644 index 00000000..dbbbf910 --- /dev/null +++ b/src/components/motion/MotionController.h @@ -0,0 +1,26 @@ +#pragma once + +#include + +namespace Pinetime { + namespace Controllers { + class MotionController { + public: + void Update(int16_t x, int16_t y, int16_t z, uint32_t nbSteps); + + uint16_t X() const { return x; } + uint16_t Y() const { return y; } + uint16_t Z() const { return z; } + uint32_t NbSteps() const { return nbSteps; } + bool ShouldWakeUp(bool isSleeping); + + private: + uint32_t nbSteps; + int16_t x; + int16_t y; + int16_t z; + int16_t lastYForWakeUp = 0; + + }; + } +} \ No newline at end of file -- cgit v1.2.3-70-g09d2