summaryrefslogtreecommitdiff
path: root/driver_ais.c
diff options
context:
space:
mode:
authorChristian Gagneraud <chgans@gna.org>2012-05-23 00:27:04 +0100
committerChristian Gagneraud <cgagneraud@techworks.ie>2012-05-23 21:36:34 +0100
commitf2ba497b7ebe1158bb2e0088ad828c45600938ee (patch)
tree5abb21afc08b3465844c628639923840ceea9a04 /driver_ais.c
parent6041bdbf72c9b92d50b5bad8a7e7ced9ef65678f (diff)
downloadgpsd-f2ba497b7ebe1158bb2e0088ad828c45600938ee.tar.gz
[AIS] Add UK/ROI AtoN monitoring data message handling
Diffstat (limited to 'driver_ais.c')
-rw-r--r--driver_ais.c20
1 files changed, 19 insertions, 1 deletions
diff --git a/driver_ais.c b/driver_ais.c
index 44ee7ef4..68e8e698 100644
--- a/driver_ais.c
+++ b/driver_ais.c
@@ -178,7 +178,25 @@ bool ais_binary_decode(struct ais_t *ais,
ais->type6.fid = UBITS(82, 6);
ais->type6.bitcount = bitlen - 88;
imo = false;
- if (ais->type6.dac == 1)
+ /* UK and Republic Of Ireland */
+ if (ais->type6.dac == 235 || ais->type6.dac == 250) {
+ switch (ais->type6.fid) {
+ case 10: /* GLA - AtoN monitoring data */
+ ais->type6.dac235fid10.ana_int = UBITS(88, 10);
+ ais->type6.dac235fid10.ana_ext1 = UBITS(98, 10);
+ ais->type6.dac235fid10.ana_ext2 = UBITS(108, 10);
+ ais->type6.dac235fid10.racon = UBITS(118, 2);
+ ais->type6.dac235fid10.light = UBITS(120, 2);
+ ais->type6.dac235fid10.alarm = UBITS(122, 1);
+ ais->type6.dac235fid10.stat_ext = UBITS(123, 8);
+ ais->type6.dac235fid10.off_pos = UBITS(131, 1);
+ /* skip 4 bits */
+ imo = true;
+ }
+ break;
+ }
+ /* International */
+ else if (ais->type6.dac == 1)
switch (ais->type6.fid) {
case 12: /* IMO236 - Dangerous cargo indication */
UCHARS(88, ais->type6.dac1fid12.lastport);