Nmea0183Parser/Solutions/Inc/Nmea_Gga.h

74 lines
2.8 KiB
C

//
// 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)
#define DIFF_GEOID_IS_BELOW '-'
/**
* 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