diff options
author | Eric S. Raymond <esr@thyrsus.com> | 2009-08-28 13:57:43 +0000 |
---|---|---|
committer | Eric S. Raymond <esr@thyrsus.com> | 2009-08-28 13:57:43 +0000 |
commit | dbe646e2b3456c66f77876799fec610e3bbc631f (patch) | |
tree | 605917577c038517177cd26b2d2bea5bc2e7414f /driver_rtcm2.c | |
parent | 7d2577982a1d8b2ca5b0e77f162ae7ed5b074b51 (diff) | |
download | gpsd-dbe646e2b3456c66f77876799fec610e3bbc631f.tar.gz |
JSON decoding for RTCM2 types 3, 7, and 16 is verified.
Diffstat (limited to 'driver_rtcm2.c')
-rw-r--r-- | driver_rtcm2.c | 10 |
1 files changed, 6 insertions, 4 deletions
diff --git a/driver_rtcm2.c b/driver_rtcm2.c index 1606e364..7f4d566d 100644 --- a/driver_rtcm2.c +++ b/driver_rtcm2.c @@ -596,7 +596,7 @@ void rtcm2_json_dump(struct rtcm2_t *rtcm, /*@out@*/char buf[], size_t buflen) case 3: if (rtcm->ecef.valid) (void)snprintf(buf + strlen(buf), buflen - strlen(buf), - "\"x\":%.2f,\"y\":%.2f,\"z\":%.2f", + "\"x\":%.2f,\"y\":%.2f,\"z\":%.2f,", rtcm->ecef.x, rtcm->ecef.y, rtcm->ecef.z); @@ -605,7 +605,7 @@ void rtcm2_json_dump(struct rtcm2_t *rtcm, /*@out@*/char buf[], size_t buflen) case 4: if (rtcm->reference.valid) { (void)snprintf(buf + strlen(buf), buflen - strlen(buf), - "\"system\":\"%s\",\"sense\":%1d,\"datum\":%s,\"dx\":%.1f,\"dy\":%.1f,\"dz\":%.1f", + "\"system\":\"%s\",\"sense\":%1d,\"datum\":%s,\"dx\":%.1f,\"dy\":%.1f,\"dz\":%.1f,", rtcm->reference.system >= NITEMS(navsysnames) ? "UNKNOWN" : navsysnames[rtcm->reference.system], @@ -645,7 +645,7 @@ void rtcm2_json_dump(struct rtcm2_t *rtcm, /*@out@*/char buf[], size_t buflen) for (n = 0; n < rtcm->almanac.nentries; n++) { struct station_t *ssp = &rtcm->almanac.station[n]; (void)snprintf(buf + strlen(buf), buflen - strlen(buf), - "{\"latitude\":%.4f,\"longitude\":%.4f,\"range\":%u,\"frequency\":%.1f,\"health\":%u,\"station_id\":%u,\"bitrate\":%u}", + "{\"latitude\":%.4f,\"longitude\":%.4f,\"range\":%u,\"frequency\":%.1f,\"health\":%u,\"station_id\":%u,\"bitrate\":%u},", ssp->latitude, ssp->longitude, ssp->range, @@ -660,7 +660,7 @@ void rtcm2_json_dump(struct rtcm2_t *rtcm, /*@out@*/char buf[], size_t buflen) break; case 16: (void)snprintf(buf + strlen(buf), buflen - strlen(buf), - "\"message\":\"%s\"\n", rtcm->message); + "\"message\":\"%s\"", rtcm->message); break; default: @@ -674,6 +674,8 @@ void rtcm2_json_dump(struct rtcm2_t *rtcm, /*@out@*/char buf[], size_t buflen) break; } + if (buf[strlen(buf)-1] == ',') + buf[strlen(buf)-1] = '\0'; (void)strlcat(buf, "}\r\n", buflen); } |