/** * @file sensorData.h * @author Alexander Klein (alex@kleiax.de) * @brief * @version 0.1 * @date 2023-09-02 * * @copyright Copyright (c) 2023 * */ #ifndef SENSOR_DATA_H #define SENSOR_DATA_H #include #include #include "component.h" #include "calibrateCompass.h" #include #include // Gyroskop #include "calcAzimuth.h" #include "ntripClient.h" #include "point.h" class Sensors; class SensorData : public Component { public: SensorData(); ~SensorData(); void enableNtrip(String host, uint16_t port, String mountPoint, String user, String password); void enableGnss(SPIClass* spiPort, uint8_t csPin); void enableGnss(); void enableRealCompass(); void enableCalcCompass(); void enableGyroskop(); // Interface Const kram int16_t getRealAzimuth() const { return this->realAzimuth; } int16_t getCalcAzimuth() const { return this->calcAzimuth; } CalcAzimuth::State getCalcAzimuthState() const; Point getCurrentPos() const { return this->currentPosition; } const UBX_NAV_PVT_data_t* getGnssData() const { return this->gnssData; }; const void* const getGyroData() const; CalcAzimuth* getCalcCompass() const { return this->calcCompass; } QMC5883LCompass* getRealCompass() const { return this->realCompass; } NTRIPClient* getNtripClient() const { return this->ntripClient; } // static /** * @brief Set the output status for PVTdata. * * If this is true, a lot of information from the gnss module will be printed in * the interval of navigation frequency. * * @param status */ static void setOutputStatusPrintPVTdata(bool status); private: void run() override; void runAsChild() override; void initGnss(); QMC5883LCompass* realCompass = nullptr; CalcAzimuth* calcCompass = nullptr; SFE_UBLOX_GNSS* gnss = nullptr; NTRIPClient* ntripClient = nullptr; UBX_NAV_PVT_data_t* gnssData; Point currentPosition; char* host; char* mountPoint; char* user; char* password; bool isNtripInit = false; uint16_t port; int16_t realAzimuth = INT16_MAX; int16_t calcAzimuth = INT16_MAX; // static static void printPVTdata(UBX_NAV_PVT_data_t *ubxDataStruct); static void savePVTdata(UBX_NAV_PVT_data_t *ubxDataStruct); static UBX_NAV_PVT_data_t* ubxDataStatic; static uint32_t ubxUpdateTimeStatic; static bool outputStatusPrintPVTdata; static bool newData; }; #endif //SENSOR_DATA_H