#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; } uint16_t MotionController::G() { float X = x; X *= X; float Y = y; X += Y * Y; Y = z; X += Y * Y; X = std::sqrt(X); if (X > 0xffff) { return 0xffff; } else { return X; } } 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; } }