#include #include "components/motion/MotionController.h" #include "os/os_cputime.h" using namespace Pinetime::Controllers; void MotionController::Update(int16_t x, int16_t y, int16_t z) { this->x = x; this->y = y; this->z = z; } int16_t MotionController::G() { float X = x; X *= X; float Y = y; Y *= Y; float Z = z; Z *= Z; return (int16_t) std::sqrt(X + Y + Z); } bool MotionController::Should_RaiseWake(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; } void MotionController::IsSensorOk(bool isOk) { isSensorOk = isOk; } void MotionController::Init(Pinetime::Drivers::Bma421::DeviceTypes types) { switch (types) { case Drivers::Bma421::DeviceTypes::BMA421: this->deviceType = DeviceTypes::BMA421; break; case Drivers::Bma421::DeviceTypes::BMA425: this->deviceType = DeviceTypes::BMA425; break; default: this->deviceType = DeviceTypes::Unknown; break; } }