// // Created by cfif on 27.09.22. // #ifndef GNSSPRO04THREAD_H #define GNSSPRO04THREAD_H #include #include #include #include "ModemGnss.h" #include "RtcIO.h" #include "LoggerInterface.h" typedef struct { struct { char data[256]; size_t len; } rxBuffer; tGnssPro04Nmea nmea; tNmeaRmc currentRmc; tNmeaRmc lastGoodRmc; uint32_t GMTcorr_v; tRtcIO *rtcIo; bool flagSetOneGnss; uint32_t lastRmcUpdate; tLoggerInterface *logger; osMutexId_t rmcAccess; struct { osThreadId_t id; uint32_t stack[512]; StaticTask_t controlBlock; osThreadAttr_t attr; } thread; } tGnss; // Получение данных с GNSS о местоположении и времени void Gnss_GetNavDataTracert (tGnss *env, tTracertNavData *location); void Gnss_Init(tGnss *env, tSerialPortIO *gnssIo); void Gnss_InitDevice(tGnss *env); void Gnss_StartThread(tGnss *env); void Gnss_GetTime(tGnss *env, uint32_t *timestamp); // Получение данных с GNSS о местоположении void Gnss_GetNavDataNmeaRmc (tGnss *env, tModemNavData *location); // latitude and longitude are in degrees, minutes and fraction of minutes char cConvertDecToMilliArcSecFromDegMin(int32_t deg, int32_t min, int32_t *mArcs, double *gradus); uint32_t cConvertFrDeg(double frDeg, uint8_t latLonFlag); void Gnss_GetNavDataMsdNmeaRmc(tGnss *env, tNavDataMsd *location); #endif //GNSSPRO04THREAD_H