diff options
Diffstat (limited to 'src/components/motion/MotionController.cpp')
| -rw-r--r-- | src/components/motion/MotionController.cpp | 8 |
1 files changed, 4 insertions, 4 deletions
diff --git a/src/components/motion/MotionController.cpp b/src/components/motion/MotionController.cpp index aab8b9d4..5fc548be 100644 --- a/src/components/motion/MotionController.cpp +++ b/src/components/motion/MotionController.cpp @@ -1,6 +1,5 @@ #include "components/motion/MotionController.h" -#include <FreeRTOS.h> #include <task.h> using namespace Pinetime::Controllers; @@ -14,6 +13,9 @@ void MotionController::Update(int16_t x, int16_t y, int16_t z, uint32_t nbSteps) service->OnNewMotionValues(x, y, z); } + lastTime = time; + time = xTaskGetTickCount(); + this->x = x; lastY = this->y; this->y = y; @@ -50,10 +52,8 @@ bool MotionController::Should_RaiseWake(bool isSleeping) { } bool MotionController::ShouldShakeWake(uint16_t thresh) { - auto diff = xTaskGetTickCount() - lastShakeTime; - lastShakeTime = xTaskGetTickCount(); /* Currently Polling at 10hz, If this ever goes faster scalar and EMA might need adjusting */ - int32_t speed = std::abs(z + (y / 2) + (x / 4) - lastY / 2 - lastZ) / diff * 100; + int32_t speed = std::abs(z + (y / 2) + (x / 4) - lastY / 2 - lastZ) / (time - lastTime) * 100; //(.2 * speed) + ((1 - .2) * accumulatedSpeed); // implemented without floats as .25Alpha accumulatedSpeed = (speed / 5) + ((accumulatedSpeed / 5) * 4); |
