} nmea_params[MAX_NMEA_PARAM];
static int nmea_bad_time;
-char longitude[33] = { 0 }, latitude[33] = { 0 }, course[17] = { 0 }, speed[17] = { 0 }, elevation[17] = { 0 };
+char longitude[33] = { 0 }, latitude[33] = { 0 }, course[17] = { 0 }, speed[17] = { 0 }, elevation[17] = { 0 }, satellites[3] = { 0 }, hdop[5] = { 0 };
int gps_valid = 0;
char gps_fields = 0;
{
if (!gps_valid)
return;
+ strncpy(satellites, nmea_params[7].str, sizeof(satellites));
+ strncpy(hdop, nmea_params[8].str, sizeof(hdop));
strncpy(elevation, nmea_params[9].str, sizeof(elevation));
- gps_fields |= GPS_FIELD_ALT;
+ gps_fields |= GPS_FIELD_SAT | GPS_FIELD_HDP | GPS_FIELD_ALT;
+ DEBUG(4, "satellites: %s\n", satellites);
+ DEBUG(4, "HDOP: %s\n", hdop);
DEBUG(4, "height: %s\n", elevation);
}
int cnt;
unsigned int i;
- if (strncmp(a, "$GP", 3))
+ if (strncmp(a, "$GP", 3) &&
+ strncmp(a, "$GN", 3))
return;
a++;
}
for (i = 0; i < ARRAY_SIZE(nmea_msgs); i++) {
- if (strcmp(nmea_params[0].str, nmea_msgs[i].msg))
+ if (strcmp(nmea_params[0].str, nmea_msgs[i].msg) &&
+ strcmp(nmea_params[3].str, nmea_msgs[i].msg))
continue;
if (nmea_msgs[i].cnt <= cnt)
nmea_msgs[i].handler();