/** * @file calibrateCompass.h * @author Alexander Klein (alex@kleiax.de) * @brief * @version 0.1 * @date 2023-05-23 * * @copyright Copyright (c) 2023 * */ #pragma once #include #include #include class CalibrateCompass { public: enum State { Ready, Calibrating, Finished }; struct CallibrationData { int data[3][2]; }; CalibrateCompass(QMC5883LCompass* compass); void loop(); void start(); void useData(); void removeCalibration(); void reset(); void saveData(); void loadData(); State getState() const { return this->state; } CallibrationData getCallibrationData() const { return this->data; } friend std::ostream& operator<<(std::ostream& os, const CalibrateCompass& caliComp); private: void checkDataValidity(); QMC5883LCompass* compass; State state; CallibrationData data; void clearData(); bool dataValid = false; const uint16_t maxTimeWithoutChange = 10000; uint32_t lastChange = 0; };