#pragma once #include "fgc/IImuSource.h" #include #include namespace fgc { // Real IMU backend: reads the Xsens MTi binary MTData stream over a serial port // (RS-232 via the LattePanda UART). Configures the device to the Euler + // calibrated output at startup, then streams read-only. Boost.Asio detail is // hidden behind a pImpl (mirrors SerialMotorController). class MtiImuSource : public IImuSource { public: MtiImuSource(std::string device, unsigned int baud); ~MtiImuSource() override; void start() override; void stop() override; bool connected() const override; std::optional sample() override; std::optional config() const override; void refreshConfig() override; bool setFilterProfile(int type) override; void noRotation(int seconds) override; void headingReset() override; private: struct Impl; std::unique_ptr impl_; }; } // namespace fgc