diff options
author | Eric S. Raymond <esr@thyrsus.com> | 2005-03-24 08:51:51 +0000 |
---|---|---|
committer | Eric S. Raymond <esr@thyrsus.com> | 2005-03-24 08:51:51 +0000 |
commit | fe0831eaeef107dba90f7342b76cd02b477893f7 (patch) | |
tree | 607be1b119de978ead71f1890676335634cb6d7e /nmea_parse.c | |
parent | 4204673a7e8075b29c5370b04272efdb4d59bbbe (diff) | |
download | gpsd-fe0831eaeef107dba90f7342b76cd02b477893f7.tar.gz |
Attempt to fix Daniele Gangrezi's bug.
Diffstat (limited to 'nmea_parse.c')
-rw-r--r-- | nmea_parse.c | 16 |
1 files changed, 11 insertions, 5 deletions
diff --git a/nmea_parse.c b/nmea_parse.c index 0dd20461..bfd5b874 100644 --- a/nmea_parse.c +++ b/nmea_parse.c @@ -382,12 +382,18 @@ static int processGPGSV(int count, char *field[], struct gps_data_t *out) else if (out->part == 1) gpsd_zero_satellites(out); - for (fldnum = 4; fldnum < count; out->satellites++) { - out->PRN[out->satellites] = atoi(field[fldnum++]); - out->elevation[out->satellites] = atoi(field[fldnum++]); - out->azimuth[out->satellites] = atoi(field[fldnum++]); - out->ss[out->satellites] = atoi(field[fldnum++]); + for (n = 0, fldnum = 4; fldnum < count;) { + out->PRN[n] = atoi(field[fldnum++]); + out->elevation[n] = atoi(field[fldnum++]); + out->azimuth[n] = atoi(field[fldnum++]); + out->ss[n] = atoi(field[fldnum++]); + if (out->PRN[n]) + n++; } + out->satellites = atoi(field[3]); + if (n != out->satellites) + gpsd_report(0, "GPGSV field 3 value of %d != actual count %d\n", + out->satellites, n); /* not valid data until we've seen a complete set of parts */ if (out->part < out->await) { |