summaryrefslogtreecommitdiff
path: root/gpsd_json.c
diff options
context:
space:
mode:
authorEric S. Raymond <esr@thyrsus.com>2011-04-10 21:05:36 -0400
committerEric S. Raymond <esr@thyrsus.com>2011-04-10 21:15:18 -0400
commit012eeaadd3d5512ebcd047df965bbcccaab839e0 (patch)
treec65f4ca8bc451d442a86c79d404367668a15d64a /gpsd_json.c
parent57ec6e0991f7e4168233728f69c9525410f89be0 (diff)
downloadgpsd-012eeaadd3d5512ebcd047df965bbcccaab839e0.tar.gz
Steps towards analyzing RTCM3 correctly.
Diffstat (limited to 'gpsd_json.c')
-rw-r--r--gpsd_json.c21
1 files changed, 14 insertions, 7 deletions
diff --git a/gpsd_json.c b/gpsd_json.c
index 65879b21..8cde8229 100644
--- a/gpsd_json.c
+++ b/gpsd_json.c
@@ -889,7 +889,6 @@ void json_rtcm3_dump(const struct rtcm3_t *rtcm,
{
/*@-mustfreefresh@*/
char buf1[JSON_VAL_MAX * 2 + 1];
- const char *systems[] = { "GPS", "Glonass", "Galileo", "unknown" };
unsigned short i;
unsigned int n;
@@ -1041,11 +1040,19 @@ void json_rtcm3_dump(const struct rtcm3_t *rtcm,
case 1005:
case 1006:
(void)snprintf(buf + strlen(buf), buflen - strlen(buf),
- "\"station_id\":%u,\"system\":\"%s\","
- "\"refstation\":\"%s\",\"sro\":\"%s\","
+ "\"station_id\":%u,\"system\":[",
+ rtcm->rtcmtypes.rtcm3_1005.station_id);
+ if ((rtcm->rtcmtypes.rtcm3_1005.system & 0x04)!=0)
+ (void)strlcat(buf, "\"GPS\",", buflen - strlen(buf));
+ if ((rtcm->rtcmtypes.rtcm3_1005.system & 0x02)!=0)
+ (void)strlcat(buf, "\"GLONASS\",", buflen - strlen(buf));
+ if ((rtcm->rtcmtypes.rtcm3_1005.system & 0x01)!=0)
+ (void)strlcat(buf, "\"GALILEO\",", buflen - strlen(buf));
+ if (buf[strlen(buf)-1] == ',')
+ buf[strlen(buf)-1] = '\0';
+ (void)snprintf(buf + strlen(buf), buflen - strlen(buf),
+ "],\"refstation\":\"%s\",\"sro\":\"%s\","
"\"x\":%.4f,\"y\":%.4f,\"z\":%.4f,",
- rtcm->rtcmtypes.rtcm3_1005.station_id,
- systems[rtcm->rtcmtypes.rtcm3_1005.system],
JSON_BOOL(rtcm->rtcmtypes.rtcm3_1005.reference_station),
JSON_BOOL(rtcm->rtcmtypes.rtcm3_1005.single_receiver),
rtcm->rtcmtypes.rtcm3_1005.ecef_x,
@@ -1186,10 +1193,10 @@ void json_rtcm3_dump(const struct rtcm3_t *rtcm,
#define R1012 rtcm->rtcmtypes.rtcm3_1012.rtk_data[i]
(void)snprintf(buf + strlen(buf), buflen - strlen(buf),
"{\"ident\":%u,"
- "\"L1\":{\"ind\":%u,\"channel\":%u,\"prange\":%8.1f,"
+ "\"L1\":{\"ind\":%u,\"channel\":%u,\"prange\":%8.2f,"
"\"delta\":%6.4f,\"lockt\":%u,\"amb\":%u,"
"\"CNR\":%.2f},"
- "\"L2\":{\"ind\":%u,\"prange\":%8.1f,"
+ "\"L2\":{\"ind\":%u,\"prange\":%8.2f,"
"\"delta\":%6.4f,\"lockt\":%u,\"amb\":%u,"
"\"CNR\":%.2f},"
"},",