Update preset.
[bertos.git] / bertos / net / nmea.h
index 84dfcc18c64bdc4bf06fcdac53caeb5deca7f611..184a7a0aa1e4d07faf30df923807af84e56c29c4 100644 (file)
@@ -29,7 +29,7 @@
  * Copyright 2009 Develer S.r.l. (http://www.develer.com/)
  *
  * -->
- * \brief NMEA Parser
+ * \brief NMEA Parser.
  *
  * \author Daniele Basile <asterix@develer.com>
  *
@@ -45,7 +45,7 @@
 
 #include <net/nmeap/inc/nmeap.h>
 
-#include <kern/kfile.h>
+#include <io/kfile.h>
 
 #include <time.h>
 
 #define NMEA_GPGSV 4   // GSV MESSAGE ID
 
 // Standart type to rappresent fiels.
-typedef uint32_t udegree_t;    // Micro degrees
-typedef uint32_t mdegree_t;    // Milli degrees
-typedef uint16_t degree_t;     // Degrees
+typedef int32_t udegree_t;    // Micro degrees
+typedef int32_t mdegree_t;    // Milli degrees
+typedef int16_t degree_t;     // Degrees
 
 
 /**
  * Global Positioning System Fix Data.
  * Extracted data from a GGA message
  *
- * Note: time membert containt the second elapsed from 00:00:00 1/1/1970,
- * becouse from nmea sentence we read only the time of UTC position, we
- * not have any reference of date (day, month and year) so time is refered to
+ * Note: time member contains the seconds elapsed from 00:00:00 1/1/1970,
+ * because from nmea sentence we read only the time of UTC position, we
+ * have not any reference of date (day, month and year) so time is referred to
  * the start of unix time.
  */
 typedef struct NmeaGga
 {
        udegree_t     latitude;   /* Latitude (micro degree) */
        udegree_t     longitude;  /* Longitude (micro degree) */
-       uint16_t      altitude;   /* Altitude (Meter) */
+       int32_t       altitude;   /* Altitude (Meter) */
        time_t        time;       /* UTC of position  (Unix time) */
        uint16_t      satellites; /* Satellites are in view */
        uint16_t      quality;    /* Fix Quality: 0 = Invalid; 1 = GPS fix; 2 = DGPS fix; */
        uint16_t      hdop;       /* Relative accuracy of horizontal position (hdop * 10) */
-       uint16_t      geoid;      /* Height of geoid above WGS84 ellipsoid (Meter) */
+       int16_t       geoid;      /* Height of geoid above WGS84 ellipsoid (Meter) */
 } NmeaGga;
 
 /**
  * Recommended minimum specific GPS/Transit data.
  * Extracted data from an RMC message
  *
- * Note: RMC sentece contain also date stamp so, time contain real second elapsed
+ * Note: RMC sentences contain also date stamp so, time contains real seconds elapsed
  * from 0:00:00 1/1/1970.
  */
 typedef struct NmeaRmc
@@ -138,6 +138,12 @@ int nmea_gpvtg(nmeap_context_t *context, nmeap_sentence_t *sentence);
 int nmea_gprmc(nmeap_context_t *context, nmeap_sentence_t *sentence);
 int nmea_gpgga(nmeap_context_t *context, nmeap_sentence_t *sentence);
 
+// Example of callout
+void gpgga_callout(nmeap_context_t *context, void *data, void *user_data);
+void gprmc_callout(nmeap_context_t *context, void *data, void *user_data);
+void gpgsv_callout(nmeap_context_t *context, void *data, void *user_data);
+void gpvtg_callout(nmeap_context_t *context, void *data, void *user_data);
+
 int nmea_testSetup(void);
 int nmea_testTearDown(void);
 int nmea_testRun(void);