You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
128 lines
4.8 KiB
128 lines
4.8 KiB
/* |
|
* |
|
* NMEA library |
|
* URL: http://nmea.sourceforge.net |
|
* Author: Tim (xtimor@gmail.com) |
|
* Licence: http://www.gnu.org/licenses/lgpl.html |
|
* $Id: sentence.h 17 2008-03-11 11:56:11Z xtimor $ |
|
* |
|
*/ |
|
|
|
/*! \file */ |
|
|
|
#ifndef __NMEA_SENTENCE_H__ |
|
#define __NMEA_SENTENCE_H__ |
|
|
|
#include "info.h" |
|
|
|
#ifdef __cplusplus |
|
extern "C" { |
|
#endif |
|
|
|
/** |
|
* NMEA packets type which parsed and generated by library |
|
*/ |
|
enum nmeaPACKTYPE |
|
{ |
|
GPNON = 0x0000, /**< Unknown packet type. */ |
|
GPGGA = 0x0001, /**< GGA - Essential fix data which provide 3D location and accuracy data. */ |
|
GPGSA = 0x0002, /**< GSA - GPS receiver operating mode, SVs used for navigation, and DOP values. */ |
|
GPGSV = 0x0004, /**< GSV - Number of SVs in view, PRN numbers, elevation, azimuth & SNR values. */ |
|
GPRMC = 0x0008, /**< RMC - Recommended Minimum Specific GPS/TRANSIT Data. */ |
|
GPVTG = 0x0010 /**< VTG - Actual track made good and speed over ground. */ |
|
}; |
|
|
|
/** |
|
* GGA packet information structure (Global Positioning System Fix Data) |
|
*/ |
|
typedef struct _nmeaGPGGA |
|
{ |
|
nmeaTIME utc; /**< UTC of position (just time) */ |
|
float lat; /**< Latitude in NDEG - [degree][min].[sec/60] */ |
|
char ns; /**< [N]orth or [S]outh */ |
|
float lon; /**< Longitude in NDEG - [degree][min].[sec/60] */ |
|
char ew; /**< [E]ast or [W]est */ |
|
int sig; /**< GPS quality indicator (0 = Invalid; 1 = Fix; 2 = Differential, 3 = Sensitive) */ |
|
int satinuse; /**< Number of satellites in use (not those in view) */ |
|
float HDOP; /**< Horizontal dilution of precision */ |
|
float elv; /**< Antenna altitude above/below mean sea level (geoid) */ |
|
char elv_units; /**< [M]eters (Antenna height unit) */ |
|
float 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) */ |
|
float dgps_age; /**< Time in seconds since last DGPS update */ |
|
int dgps_sid; /**< DGPS station ID number */ |
|
|
|
} nmeaGPGGA; |
|
|
|
/** |
|
* GSA packet information structure (Satellite status) |
|
*/ |
|
typedef struct _nmeaGPGSA |
|
{ |
|
char fix_mode; /**< Mode (M = Manual, forced to operate in 2D or 3D; A = Automatic, 3D/2D) */ |
|
int fix_type; /**< Type, used for navigation (1 = Fix not available; 2 = 2D; 3 = 3D) */ |
|
int sat_prn[NMEA_MAXSAT]; /**< PRNs of satellites used in position fix (null for unused fields) */ |
|
float PDOP; /**< Dilution of precision */ |
|
float HDOP; /**< Horizontal dilution of precision */ |
|
float VDOP; /**< Vertical dilution of precision */ |
|
|
|
} nmeaGPGSA; |
|
|
|
/** |
|
* GSV packet information structure (Satellites in view) |
|
*/ |
|
typedef struct _nmeaGPGSV |
|
{ |
|
int pack_count; /**< Total number of messages of this type in this cycle */ |
|
int pack_index; /**< Message number */ |
|
int sat_count; /**< Total number of satellites in view */ |
|
nmeaSATELLITE sat_data[NMEA_SATINPACK]; |
|
|
|
} nmeaGPGSV; |
|
|
|
/** |
|
* RMC packet information structure (Recommended Minimum sentence C) |
|
*/ |
|
typedef struct _nmeaGPRMC |
|
{ |
|
nmeaTIME utc; /**< UTC of position */ |
|
char status; /**< Status (A = active or V = void) */ |
|
float lat; /**< Latitude in NDEG - [degree][min].[sec/60] */ |
|
char ns; /**< [N]orth or [S]outh */ |
|
float lon; /**< Longitude in NDEG - [degree][min].[sec/60] */ |
|
char ew; /**< [E]ast or [W]est */ |
|
float speed; /**< Speed over the ground in knots */ |
|
float direction; /**< Track angle in degrees True */ |
|
float declination; /**< Magnetic variation degrees (Easterly var. subtracts from true course) */ |
|
char declin_ew; /**< [E]ast or [W]est */ |
|
char mode; /**< Mode indicator of fix type (A = autonomous, D = differential, E = estimated, N = not valid, S = simulator) */ |
|
|
|
} nmeaGPRMC; |
|
|
|
/** |
|
* VTG packet information structure (Track made good and ground speed) |
|
*/ |
|
typedef struct _nmeaGPVTG |
|
{ |
|
float dir; /**< True track made good (degrees) */ |
|
char dir_t; /**< Fixed text 'T' indicates that track made good is relative to true north */ |
|
float dec; /**< Magnetic track made good */ |
|
char dec_m; /**< Fixed text 'M' */ |
|
float spn; /**< Ground speed, knots */ |
|
char spn_n; /**< Fixed text 'N' indicates that speed over ground is in knots */ |
|
float spk; /**< Ground speed, kilometers per hour */ |
|
char spk_k; /**< Fixed text 'K' indicates that speed over ground is in kilometers/hour */ |
|
|
|
} nmeaGPVTG; |
|
|
|
void nmea_zero_GPGGA(nmeaGPGGA *pack); |
|
void nmea_zero_GPGSA(nmeaGPGSA *pack); |
|
void nmea_zero_GPGSV(nmeaGPGSV *pack); |
|
void nmea_zero_GPRMC(nmeaGPRMC *pack); |
|
void nmea_zero_GPVTG(nmeaGPVTG *pack); |
|
|
|
#ifdef __cplusplus |
|
} |
|
#endif |
|
|
|
#endif /* __NMEA_SENTENCE_H__ */
|
|
|