diff options
author | Eric S. Raymond <esr@thyrsus.com> | 2006-12-04 12:31:50 +0000 |
---|---|---|
committer | Eric S. Raymond <esr@thyrsus.com> | 2006-12-04 12:31:50 +0000 |
commit | 57bbd877ddc78eb2f37b368d7b048bc69766c81d (patch) | |
tree | 835581a1457e96edd7da7912ab81917be691280f /rtcmdecode.c | |
parent | 681505feaa7bf5db39e0c4ab132d1302d946631d (diff) | |
download | gpsd-57bbd877ddc78eb2f37b368d7b048bc69766c81d.tar.gz |
Found and fixed the bug that was breaking an RTCM regression test.
Diffstat (limited to 'rtcmdecode.c')
-rw-r--r-- | rtcmdecode.c | 47 |
1 files changed, 25 insertions, 22 deletions
diff --git a/rtcmdecode.c b/rtcmdecode.c index a911dfc1..1fe7e173 100644 --- a/rtcmdecode.c +++ b/rtcmdecode.c @@ -34,22 +34,22 @@ static void decode(FILE *fpin, FILE *fpout) /* RTCM-104 bits on fpin to dump format on fpout */ { int c; - struct gps_device_t device; + struct gps_packet_t lexer; struct rtcm_t rtcm; enum isgpsstat_t res; off_t count; char buf[BUFSIZ]; - isgps_init(&device.packet); + isgps_init(&lexer); count = 0; while ((c = fgetc(fpin)) != EOF) { - res = rtcm_decode(&device.packet, (unsigned int)c); + res = rtcm_decode(&lexer, (unsigned int)c); if (verbose >= ISGPS_ERRLEVEL_BASE + 3) fprintf(fpout, "%08lu: '%c' [%02x] -> %d\n", (unsigned long)count++, (isprint(c)?c:'.'), (unsigned)(c & 0xff), res); if (res == ISGPS_MESSAGE) { - rtcm_unpack(&rtcm, (char *)device.packet.isgps.buf); + rtcm_unpack(&rtcm, (char *)lexer.isgps.buf); rtcm_dump(&rtcm, buf, sizeof(buf)); (void)fputs(buf, fpout); } @@ -62,9 +62,11 @@ static void pass(FILE *fpin, FILE *fpout) /* dump format on stdin to dump format on stdout (self-inversion test) */ { char buf[BUFSIZ]; - struct gps_device_t session; + struct gps_packet_t lexer; + struct rtcm_t rtcm; - memset(&session, 0, sizeof(session)); + memset(&lexer, 0, sizeof(lexer)); + memset(&rtcm, 0, sizeof(rtcm)); while (fgets(buf, (int)sizeof(buf), fpin) != NULL) { int status; @@ -72,17 +74,17 @@ static void pass(FILE *fpin, FILE *fpout) if (buf[0] == '#') { (void)fputs(buf, fpout); continue; - } - - status = rtcm_undump(&session.gpsdata.rtcm, buf); + } + status = rtcm_undump(&rtcm, buf); if (status == 0) { - (void)memset(session.packet.isgps.buf, 0, sizeof(session.packet.isgps.buf)); - (void)rtcm_repack(&session.gpsdata.rtcm, session.packet.isgps.buf); - (void)rtcm_unpack(&session.gpsdata.rtcm, (char *)session.packet.isgps.buf); - (void)rtcm_dump(&session.gpsdata.rtcm, buf, sizeof(buf)); + (void)memset(lexer.isgps.buf, 0, sizeof(lexer.isgps.buf)); + (void)rtcm_repack(&rtcm, lexer.isgps.buf); + (void)rtcm_unpack(&rtcm, (char *)lexer.isgps.buf); + (void)rtcm_dump(&rtcm, buf, sizeof(buf)); (void)fputs(buf, fpout); - memset(&session, 0, sizeof(session)); + memset(&lexer, 0, sizeof(lexer)); + memset(&rtcm, 0, sizeof(rtcm)); } else if (status < 0) { (void) fprintf(stderr, "rtcmdecode: bailing out with status %d\n", status); exit(1); @@ -96,21 +98,22 @@ static void encode(FILE *fpin, FILE *fpout) /* dump format on fpin to RTCM-104 on fpout */ { char buf[BUFSIZ]; - struct gps_device_t session; + struct gps_packet_t lexer; + struct rtcm_t rtcm; - memset(&session, 0, sizeof(session)); + memset(&lexer, 0, sizeof(lexer)); while (fgets(buf, (int)sizeof(buf), fpin) != NULL) { int status; - status = rtcm_undump(&session.gpsdata.rtcm, buf); + status = rtcm_undump(&rtcm, buf); if (status == 0) { - (void)memset(session.packet.isgps.buf, 0, sizeof(session.packet.isgps.buf)); - (void)rtcm_repack(&session.gpsdata.rtcm, session.packet.isgps.buf); - (void)fwrite(session.packet.isgps.buf, + (void)memset(lexer.isgps.buf, 0, sizeof(lexer.isgps.buf)); + (void)rtcm_repack(&rtcm, lexer.isgps.buf); + (void)fwrite(lexer.isgps.buf, sizeof(isgps30bits_t), - (size_t)session.gpsdata.rtcm.length, fpout); - memset(&session, 0, sizeof(session)); + (size_t)rtcm.length, fpout); + memset(&lexer, 0, sizeof(lexer)); } else if (status < 0) { (void) fprintf(stderr, "rtcmdecode: bailing out with status %d\n", status); exit(1); |