diff options
author | Eric S. Raymond <esr@thyrsus.com> | 2013-05-02 13:27:25 -0400 |
---|---|---|
committer | Eric S. Raymond <esr@thyrsus.com> | 2013-05-02 13:27:25 -0400 |
commit | d64afb745c825bd9e3644f638bee47d549535063 (patch) | |
tree | b7b2abff7ff727afe2b36035e018079677ff39ad /rtcm3_json.c | |
parent | dfbea279a00c3565c32f7f908e176b9f5b2cfbef (diff) | |
download | gpsd-d64afb745c825bd9e3644f638bee47d549535063.tar.gz |
RTCM3 R1033 JSON unpacking.
Diffstat (limited to 'rtcm3_json.c')
-rw-r--r-- | rtcm3_json.c | 21 |
1 files changed, 21 insertions, 0 deletions
diff --git a/rtcm3_json.c b/rtcm3_json.c index 1fc2a637..d152a0e1 100644 --- a/rtcm3_json.c +++ b/rtcm3_json.c @@ -194,6 +194,25 @@ int json_rtcm3_read(const char *buf, #undef R1014 /*@+type@*/ + /*@-type@*//* STRUCTARRAY confuses splint */ +#define R1033 rtcm3->rtcmtypes.rtcm3_1033 + const struct json_attr_t json_rtcm1033[] = { + RTCM3_HEADER + {"station_id", t_uinteger, .addr.uinteger = &R1033.station_id}, + {"desc", t_string, .addr.string = R1033.descriptor, + .len = sizeof(R1033.descriptor)}, + {"setup_id", t_uinteger, .addr.uinteger = &R1033.setup_id}, + {"serial", t_string, .addr.string = R1033.serial, + .len = sizeof(R1033.serial)}, + {"receiver", t_string, .addr.string = R1033.receiver, + .len = sizeof(R1033.receiver)}, + {"firmware", t_string, .addr.string = R1033.firmware, + .len = sizeof(R1033.firmware)}, + {NULL}, + }; +#undef R1033 + /*@+type@*/ + /*@-type@*//* complex union array initislizations confuses splint */ const struct json_attr_t json_rtcm3_fallback[] = { RTCM3_HEADER @@ -231,6 +250,8 @@ int json_rtcm3_read(const char *buf, status = json_read_object(buf, json_rtcm1010, endptr); } else if (strstr(buf, "\"type\":1014,") != NULL) { status = json_read_object(buf, json_rtcm1010, endptr); + } else if (strstr(buf, "\"type\":1033,") != NULL) { + status = json_read_object(buf, json_rtcm1033, endptr); } else { int n; status = json_read_object(buf, json_rtcm3_fallback, endptr); |