benchmark: "semaphores" module should be a dependency for kernel_footprint.
[bertos.git] / bertos / net / nmea.h
index 28c7bf58d41ca1c881ca6bcf5e6a0795b7964168..f735f6bfbaf18fb20e36ee52bd3a985beae52955 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>
  *
@@ -115,27 +115,20 @@ typedef struct NmeaVtg
 /**
  * Extracted data from an gsv message
  */
+struct SvInfo
+{
+       uint16_t    sv_prn;       /* SV PRN number */
+       degree_t    elevation;    /* Elevation in degrees, 90 maximum */
+       degree_t    azimut;       /* Azimuth, degrees from true north, 000 to 359 */
+       uint16_t    snr;          /* SNR, 00-99 dB (null when not tracking) */
+};
+
 typedef struct NmeaGsv
 {
-       uint16_t    tot_message;
-       uint16_t    message_num;
-       uint16_t    tot_svv;
-       uint16_t    sv_prn;
-       degree_t    elevation;
-       degree_t    azimut;
-       uint16_t    snr;
-       uint16_t    sv_prn2;
-       degree_t        elevation2;
-       degree_t    azimut2;
-       uint16_t    snr2;
-       uint16_t    sv_prn3;
-       degree_t        elevation3;
-       degree_t    azimut3;
-       uint16_t    snr3;
-       uint16_t    sv_prn4;
-       degree_t        elevation4;
-       degree_t    azimut4;
-       uint16_t    snr4;
+       uint16_t    tot_message;  /* Total number of messages of this type in this cycle */
+       uint16_t    message_num;  /* Message number */
+       uint16_t    tot_svv;      /* Total number of SVs in view */
+       struct SvInfo info[4];    /* Stanrd gsv nmea report up to 4 sv info */
 } NmeaGsv;
 
 void nmea_poll(nmeap_context_t *context, KFile *channel);
@@ -145,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);