/** * @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 class CalibrateCompass { public: enum State { Ready, Calibrating, Finished }; struct CallibrationData { int data[3][2]; }; CalibrateCompass(QMC5883LCompass* compass); void loop(); void start(); void useData(); void resetData(); void reset(); void saveData(); void loadData(); State getState() const { return this->state; } CallibrationData getCallibrationData() const { return this->data; } private: QMC5883LCompass* compass; State state; CallibrationData data; void clearData(); bool newData = false; const uint16_t maxTimeWithoutChange = 5000; uint32_t lastChange = 0; };