summaryrefslogtreecommitdiff
path: root/rtcm3_json.c
diff options
context:
space:
mode:
authorEric S. Raymond <esr@thyrsus.com>2013-05-02 13:27:25 -0400
committerEric S. Raymond <esr@thyrsus.com>2013-05-02 13:27:25 -0400
commitd64afb745c825bd9e3644f638bee47d549535063 (patch)
treeb7b2abff7ff727afe2b36035e018079677ff39ad /rtcm3_json.c
parentdfbea279a00c3565c32f7f908e176b9f5b2cfbef (diff)
downloadgpsd-d64afb745c825bd9e3644f638bee47d549535063.tar.gz
RTCM3 R1033 JSON unpacking.
Diffstat (limited to 'rtcm3_json.c')
-rw-r--r--rtcm3_json.c21
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);