summaryrefslogtreecommitdiff
path: root/ais_json.c
diff options
context:
space:
mode:
authorEric S. Raymond <esr@thyrsus.com>2013-10-01 08:26:33 -0400
committerEric S. Raymond <esr@thyrsus.com>2013-10-01 08:26:33 -0400
commitc08194716380e2622fa6a301e598f65293d3f7d6 (patch)
tree8a8938b9e148b04561ed350060fde1f8a0bb7851 /ais_json.c
parente9a0ea3f35898b5d1c88e3f41c6989d522ef1ff7 (diff)
downloadgpsd-c08194716380e2622fa6a301e598f65293d3f7d6.tar.gz
Support for Inland AIS RTA at lock/bridge/terminal.
Diffstat (limited to 'ais_json.c')
-rw-r--r--ais_json.c18
1 files changed, 17 insertions, 1 deletions
diff --git a/ais_json.c b/ais_json.c
index cf299c51..7451386a 100644
--- a/ais_json.c
+++ b/ais_json.c
@@ -234,13 +234,29 @@ int json_ais_read(const char *buf,
ais->type6.dac200fid21.hour = AIS_HOUR_NOT_AVAILABLE;
ais->type6.dac200fid21.minute = AIS_MINUTE_NOT_AVAILABLE;
// cppcheck-suppress uninitvar
- (void)sscanf(start, "%02u-%02uT%02u:%02u",
+ (void)sscanf(eta, "%02u-%02uT%02u:%02u",
&ais->type6.dac200fid21.month,
&ais->type6.dac200fid21.day,
&ais->type6.dac200fid21.hour,
&ais->type6.dac200fid21.minute);
}
}
+ else if (strstr(buf, "\"fid\":22,") != NULL) {
+ status = json_read_object(buf, json_ais6_fid22, endptr);
+ imo = true;
+ if (status == 0) {
+ ais->type6.dac200fid22.month = AIS_MONTH_NOT_AVAILABLE;
+ ais->type6.dac200fid22.day = AIS_DAY_NOT_AVAILABLE;
+ ais->type6.dac200fid22.hour = AIS_HOUR_NOT_AVAILABLE;
+ ais->type6.dac200fid22.minute = AIS_MINUTE_NOT_AVAILABLE;
+ // cppcheck-suppress uninitvar
+ (void)sscanf(rta, "%02u-%02uT%02u:%02u",
+ &ais->type6.dac200fid22.month,
+ &ais->type6.dac200fid22.day,
+ &ais->type6.dac200fid22.hour,
+ &ais->type6.dac200fid22.minute);
+ }
+ }
}
if (!imo) {
status = json_read_object(buf, json_ais6, endptr);