// // Created by cfif on 20.06.2024. // #ifndef SMART_COMPONENTS_GSMWITHGNSS_H #define SMART_COMPONENTS_GSMWITHGNSS_H #include "cmsis_os2.h" #include "SerialPortIO.h" #include "BaseTypes.h" #include "SocketInterface.h" #include "AtGsmSimComA7600.h" #include "LoggerToSerialPort.h" #include "Nmea0183Parser.h" #include "SystemMutexCmsis.h" #include "GsmSocketTimeouts.h" typedef struct { uint8_t contextId; tString32 addr; uint16_t port; tString16 portStr; osMessageQueueId_t rxDataQueue; eSocketType type; } tGsmSocketSlot; #define GSM_SLOTS_COUNT 1 typedef struct { char status; tNmeaDateRmc date; tNmeaTimeRmc time; } tGsmWithGnssTimeStamp; typedef struct { tAtCmd *gsmAt; tRtcIO *Rtc; tLoggerToSerialPort *slog; struct { SystemMutexCmsis rmcAccess; tNmeaGga currentGgaRmc; tNmeaRmc currentRmc; bool isRMC_Active; bool isGGA_Active; tGsmWithGnssTimeStamp gsmWithGnssTimeStamp; } gnssRmcGga; uint8_t bufLog[2048]; char bufLogHexString[260]; tGsmSocketSlot slots[256]; tSocketInterface socketIO; tSerialPortIO srvIo; bool isNav; bool isDisconnect; uint8_t codeResultOpen; } tGsmWithGnss; void GsmWithGnssInit(tGsmWithGnss *env); uint8_t GnssGgaGetSat(tGsmWithGnss *env); int32_t GnssGgaGetAlt(tGsmWithGnss *env); void Gnss_GetFullNavData(tGsmWithGnss *env, tNmeaRmc *nmeaRmc); #endif //SMART_COMPONENTS_GSMWITHGNSS_H