Refactor nmea module. Redefine gsv struct.
[bertos.git] / bertos / net / nmea.h
index 44528195562d1ef526e1317a99c86d9ff941c867..84dfcc18c64bdc4bf06fcdac53caeb5deca7f611 100644 (file)
@@ -115,27 +115,20 @@ typedef struct NmeaVtg
 /**
  * Extracted data from an gsv message
  */
-typedef struct NmeaGsv
+struct SvInfo
 {
-       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 */
        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) */
-       uint16_t    sv_prn2;      /* Information about second SV PRN number */
-       degree_t        elevation2;   /* Information about second SV elevation in degrees, 90 maximum */
-       degree_t    azimut2;      /* Information about second SV azimuth, degrees from true north, 000 to 359 */
-       uint16_t    snr2;         /* Information about second SV SNR, 00-99 dB (null when not tracking) */
-       uint16_t    sv_prn3;      /* Information about third SV PRN number */
-       degree_t        elevation3;   /* Information about third SV elevation in degrees, 90 maximum */
-       degree_t    azimut3;      /* Information about third SV azimuth, degrees from true north, 000 to 359 */
-       uint16_t    snr3;         /* Information about third SV SNR, 00-99 dB (null when not tracking) */
-       uint16_t    sv_prn4;      /* Information about fourth SV PRN number */
-       degree_t        elevation4;   /* Information about fourth SV elevation in degrees, 90 maximum */
-       degree_t    azimut4;      /* Information about fourth SV azimuth, degrees from true north, 000 to 359 */
-       uint16_t    snr4;         /* Information about fourth SV SNR, 00-99 dB (null when not tracking) */
+};
+
+typedef struct NmeaGsv
+{
+       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);