summaryrefslogtreecommitdiff
path: root/ais_json.c
diff options
context:
space:
mode:
authorEric S. Raymond <esr@thyrsus.com>2011-04-26 04:09:19 -0400
committerEric S. Raymond <esr@thyrsus.com>2011-04-26 04:09:19 -0400
commit81b63fd48b46203934cff725deed556fed3cb206 (patch)
tree8f6cd10317d3e8e313d1680959451aa7c521775a /ais_json.c
parent0d31c2b7eaa32f6e806b0b380d6b52db2e8c1b77 (diff)
downloadgpsd-81b63fd48b46203934cff725deed556fed3cb206.tar.gz
In AS, support IMO 289 FID 20.
Also, clean up some issue with lat/lon scaling.
Diffstat (limited to 'ais_json.c')
-rw-r--r--ais_json.c17
1 files changed, 15 insertions, 2 deletions
diff --git a/ais_json.c b/ais_json.c
index 0c44a3cf..16ee6589 100644
--- a/ais_json.c
+++ b/ais_json.c
@@ -154,6 +154,21 @@ int json_ais_read(const char *buf,
}
imo = true;
}
+ else if (strstr(buf, "\"fid\":20,") != NULL) {
+ status = json_read_object(buf, json_ais6_fid20, endptr);
+ if (status == 0) {
+ ais->type6.dac1fid20.month = AIS_MONTH_NOT_AVAILABLE;
+ ais->type6.dac1fid20.day = AIS_DAY_NOT_AVAILABLE;
+ ais->type6.dac1fid20.hour = AIS_HOUR_NOT_AVAILABLE;
+ ais->type6.dac1fid20.minute = AIS_MINUTE_NOT_AVAILABLE;
+ (void)sscanf(eta, "%02u-%02uT%02u:%02uZ",
+ &ais->type6.dac1fid20.month,
+ &ais->type6.dac1fid20.day,
+ &ais->type6.dac1fid20.hour,
+ &ais->type6.dac1fid20.minute);
+ }
+ imo = true;
+ }
else if (strstr(buf, "\"fid\":25,") != NULL) {
status = json_read_object(buf, json_ais6_fid25, endptr);
imo = true;
@@ -219,8 +234,6 @@ int json_ais_read(const char *buf,
ais->type17.bitdata, sizeof(ais->type17.bitdata));
} else if (strstr(buf, "\"type\":18,") != NULL) {
status = json_read_object(buf, json_ais18, endptr);
- } else if (strstr(buf, "\"type\":18,") != NULL) {
- status = json_read_object(buf, json_ais17, endptr);
} else if (strstr(buf, "\"type\":19,") != NULL) {
status = json_read_object(buf, json_ais19, endptr);
} else if (strstr(buf, "\"type\":20,") != NULL) {