aboutsummaryrefslogtreecommitdiff
path: root/apps/gps/nmealib/nmea/sentence.h
diff options
context:
space:
mode:
Diffstat (limited to 'apps/gps/nmealib/nmea/sentence.h')
-rw-r--r--apps/gps/nmealib/nmea/sentence.h128
1 files changed, 128 insertions, 0 deletions
diff --git a/apps/gps/nmealib/nmea/sentence.h b/apps/gps/nmealib/nmea/sentence.h
new file mode 100644
index 000000000..2aa975c71
--- /dev/null
+++ b/apps/gps/nmealib/nmea/sentence.h
@@ -0,0 +1,128 @@
+/*
+ *
+ * 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__ */