// // Created by villuton on 25.03.25. // #ifndef NMEA_GGA_H #define NMEA_GGA_H #include "Nmea0183Parser_Time.h" #include "Nmea0183_Sentence.h" #define GGA_MSG_ID "GGA" #define GGA_MSG_ID_LEN (3) #define DGPS_SID_MIN (0000) #define DGPS_SID_MAX (1023) /** * GPS Quality indicator: */ typedef enum { SIG_Invalid = 0, /**< Fix not valid*/ SIG_Fix = 1, /**< GPS fix */ SIG_Differential = 2, /**< Differential GPS fix (DGNSS), SBAS, OmniSTAR VBS, Beacon, RTX in GVBS mode */ SIG_Sensitive = 3, /**< Not applicable */ SIG_RtkFixed = 4, /**< RTK Fixed, xFill */ SIG_RtkFloat = 5, /**< RTK Float, OmniSTAR XP/HP, Location RTK, RTX */ SIG_InsDead = 6 /**< INS Dead reckoning */ }eGGA_sig; /** * Reference station ID's descriptors * When using one of the MSS (Mobile Satellite Services), * the Reference Station ID field indicates the following services: */ typedef enum { SID_CenterPoint = 0002, /**< CenterPoint or ViewPoint RTX */ SID_RangePoint = 0005, /**< RangePoint RTX */ SID_FieldPoint = 0006, /**< FieldPoint RTX */ SID_VBS = 0100, /**< VBS */ SID_HP = 1000, /**< HP */ SID_HP_XP_Orbits = 1001, /**< HP/XP (Orbits) */ SID_HP_G2_Orbits = 1002, /**< HP/G2 (Orbits) */ SID_XP_GPS = 1008, /**< XP (GPS) */ SID_G2_GPS = 1012, /**< G2 (GPS) */ SID_G2_GPS_GLONASS = 1013, /**< G2 (GPS/GLONASS) */ SID_G2_GLONASS = 1014, /**< G2 (GLONASS) */ SID_HP_XP_GPS = 1016, /**< HP/XP (GPS) */ SID_HP_G2_GPS = 1020, /**< HP/G2 (GPS) */ SID_HP_G2_GPS_GLONASS = 1021, /**< HP/G2 (GPS/GLONASS) */ }eGGA_dgps_sid; /** * GGA packet information structure (Global Positioning System Fix Data) */ typedef struct { tNmeaUtc utc; /**< UTC of position (just time) */ tNmeaLocation location; /**< Sentence location data in fractional NDEG and Cardinal directions */ eGGA_sig sig; /**< GPS quality indicator (0 = Invalid; 1 = Fix; 2 = Differential, 3 = Sensitive) */ int satinuse; /**< Number of satellites in use (not those in view) */ double HDOP; /**< Horizontal dilution of precision */ double elv; /**< Antenna altitude above/below mean sea level (geoid) */ char elv_units; /**< [M]eters (Antenna height unit) */ double diff; /**< Geoidal separation (Diff. between WGS-84 earth ellipsoid and mean sea level. '-' = geoid is below WGS-84 ellipsoid) */ char diff_units; /**< [M]eters (Units of geoidal separation) */ double dgps_age; /**< Time in seconds since last DGPS update */ int dgps_sid; /**< DGPS station ID number */ } tNmeaGGA; #endif //NMEA_GGA_H