summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--driver_ais.c2
-rw-r--r--test/daemon/ais-nmea-sample.log.chk7
-rw-r--r--test/sample.aivdm9
-rw-r--r--test/sample.aivdm.chk3
-rw-r--r--test/sample.aivdm.js.chk3
-rw-r--r--test/sample.aivdm.ju.chk3
6 files changed, 26 insertions, 1 deletions
diff --git a/driver_ais.c b/driver_ais.c
index 80c0c888..0dcaebea 100644
--- a/driver_ais.c
+++ b/driver_ais.c
@@ -876,7 +876,7 @@ bool ais_binary_decode(const struct gpsd_errout_t *errout,
//ais->type19.spare = UBITS(308, 4);
break;
case 20: /* Data Link Management Message */
- RANGE_CHECK(72, 160);
+ RANGE_CHECK(72, 186);
//ais->type20.spare = UBITS(38, 2);
ais->type20.offset1 = UBITS(40, 12);
ais->type20.number1 = UBITS(52, 4);
diff --git a/test/daemon/ais-nmea-sample.log.chk b/test/daemon/ais-nmea-sample.log.chk
index 20b05e23..1591d573 100644
--- a/test/daemon/ais-nmea-sample.log.chk
+++ b/test/daemon/ais-nmea-sample.log.chk
@@ -7971,6 +7971,7 @@
!AIVDM,1,1,,B,13aGCo<P00PDHa2McqUe8Ovh28>t,0*08
{"class":"AIS","type":1,"repeat":0,"mmsi":244700124,"scaled":false,"status":12,"status_text":"Reserved","turn":-128,"speed":0,"accuracy":true,"lon":2671905,"lat":31127958,"course":3361,"heading":511,"second":24,"maneuver":0,"raim":true,"radio":33724}
!AIVDM,1,1,,2,D02E34iFTg6D000000000000002gjG2,0*75
+{"class":"AIS","type":20,"repeat":0,"mmsi":2442003,"scaled":false,"offset1":1385,"number1":2,"timeout1":7,"increment1":1125,"offset2":0,"number2":0,"timeout2":0,"increment2":0,"offset3":0,"number3":0,"timeout3":0,"increment3":0,"offset4":0,"number4":0,"timeout4":0,"increment4":0}
!AIVDM,1,1,,2,33aJHE00000HD:HNPCWPPodl02H1,0*2B
{"class":"AIS","type":3,"repeat":0,"mmsi":244750420,"scaled":false,"status":0,"status_text":"Under way using engine","turn":0,"speed":0,"accuracy":false,"lon":3187020,"lat":31986590,"course":131,"heading":246,"second":26,"maneuver":0,"raim":false,"radio":9729}
!AIVDM,1,1,,A,169<o6?P00`JrS0FCTPsHwvl2@>n,0*5C
@@ -44642,6 +44643,7 @@
!AIVDM,1,1,,A,13aa465P000LIo4NSqpGMgwd0@P0,0*5F
{"class":"AIS","type":1,"repeat":0,"mmsi":244991000,"scaled":false,"status":5,"status_text":"Moored","turn":-128,"speed":0,"accuracy":false,"lon":3722978,"lat":32045537,"course":1910,"heading":511,"second":54,"maneuver":0,"raim":false,"radio":67584}
!AIVDM,1,1,,1,D02E34hA<g6D0000000000000027,0*57
+{"class":"AIS","type":20,"repeat":0,"mmsi":2442003,"scaled":false,"offset1":275,"number1":2,"timeout1":7,"increment1":1125,"offset2":0,"number2":0,"timeout2":0,"increment2":0,"offset3":0,"number3":0,"timeout3":0,"increment3":0,"offset4":0,"number4":0,"timeout4":0,"increment4":0}
!AIVDM,1,1,,B,13aDqihP00PCJb`McpfTv?vD2000,0*6C
{"class":"AIS","type":1,"repeat":0,"mmsi":244660679,"scaled":false,"status":0,"status_text":"Under way using engine","turn":-128,"speed":0,"accuracy":true,"lon":2544980,"lat":31127738,"course":1272,"heading":511,"second":10,"maneuver":0,"raim":true,"radio":0}
!AIVDM,1,1,,2,13aGDk0P0wPH?66NLrqM4wv@RD0Q,0*10
@@ -51461,6 +51463,7 @@
!AIVDM,2,2,3,1,PT`4hj2ADP0,2*62
{"class":"AIS","type":5,"repeat":0,"mmsi":1329614,"scaled":false,"imo":0,"ais_version":1,"callsign":"","shipname":"ROUZAND EXPRESS","shiptype":0,"shiptype_text":"Not available","to_bow":30,"to_stern":18,"to_port":5,"to_starboard":2,"epfd":15,"epfd_text":"INVALID EPFD","eta":"03-14T18:00Z","draught":0,"destination":"BAGGEREN VBR SCHIER","dte":0}
!AIVDM,1,1,,1,D02E34PB4g6D0000000000000012,0*62
+{"class":"AIS","type":20,"repeat":0,"mmsi":2442002,"scaled":false,"offset1":289,"number1":2,"timeout1":7,"increment1":1125,"offset2":0,"number2":0,"timeout2":0,"increment2":0,"offset3":0,"number3":0,"timeout3":0,"increment3":0,"offset4":0,"number4":0,"timeout4":0,"increment4":0}
!AIVDM,1,1,,B,133fJvPP00PD30jME9q00?vT28:g,0*39
{"class":"AIS","type":1,"repeat":0,"mmsi":205232890,"scaled":false,"status":0,"status_text":"Under way using engine","turn":-128,"speed":0,"accuracy":true,"lon":2627609,"lat":30755300,"course":0,"heading":511,"second":18,"maneuver":0,"raim":true,"radio":33455}
!AIVDM,1,1,,A,13aGFc5P1<PI0c:N4qfpV?wn25Ip,0*6C
@@ -96467,6 +96470,7 @@
!AIVDM,1,1,,1,13aMiL00010LKgfNSsJC7E4005J0,0*04
{"class":"AIS","type":1,"repeat":0,"mmsi":244806000,"scaled":false,"status":0,"status_text":"Under way using engine","turn":0,"speed":1,"accuracy":false,"lon":3726839,"lat":32045929,"course":797,"heading":162,"second":0,"maneuver":0,"raim":false,"radio":22144}
!AIVDM,1,1,,1,D02E34PB4g6D0000000000000012,0*62
+{"class":"AIS","type":20,"repeat":0,"mmsi":2442002,"scaled":false,"offset1":289,"number1":2,"timeout1":7,"increment1":1125,"offset2":0,"number2":0,"timeout2":0,"increment2":0,"offset3":0,"number3":0,"timeout3":0,"increment3":0,"offset4":0,"number4":0,"timeout4":0,"increment4":0}
!AIVDM,1,1,,1,13bj?d0vj30FRO6Nn5>0Ch<D0000,0*0D
{"class":"AIS","type":1,"repeat":0,"mmsi":246190000,"scaled":false,"status":0,"status_text":"Under way using engine","turn":-5,"speed":131,"accuracy":false,"lon":2954211,"lat":32343352,"course":79,"heading":6,"second":10,"maneuver":0,"raim":false,"radio":0}
!AIVDM,1,1,,1,13aGt@PP00PLGWbNUsgP0?vF2@6Q,0*5D
@@ -97382,6 +97386,7 @@
!AIVDM,1,1,,A,133Vvn001nP=<TlMEhCV=TfL0@9B,0*52
{"class":"AIS","type":1,"repeat":0,"mmsi":205111000,"scaled":false,"status":0,"status_text":"Under way using engine","turn":0,"speed":118,"accuracy":true,"lon":1729690,"lat":30765134,"course":1590,"heading":151,"second":14,"maneuver":0,"raim":false,"radio":66130}
!AIVDM,1,1,,1,D02E34hA<g6D0000000000000027,0*57
+{"class":"AIS","type":20,"repeat":0,"mmsi":2442003,"scaled":false,"offset1":275,"number1":2,"timeout1":7,"increment1":1125,"offset2":0,"number2":0,"timeout2":0,"increment2":0,"offset3":0,"number3":0,"timeout3":0,"increment3":0,"offset4":0,"number4":0,"timeout4":0,"increment4":0}
!AIVDM,1,1,,2,402E34iuho;P:PGoPJNQwwG00L1Q,0*7D
{"class":"AIS","type":4,"repeat":0,"mmsi":2442003,"scaled":false,"timestamp":"2012-03-14T11:32:10Z","accuracy":true,"lon":3128333,"lat":32014333,"epfd":7,"epfd_text":"Surveyed","raim":false,"radio":114785}
!AIVDM,1,1,,A,14eGKMhP00rkra>JPj00FwvL05J0,0*0F
@@ -108146,6 +108151,7 @@
!AIVDM,1,1,,B,13aFfThP00PHnB@MeNgh0?vp2L3;,0*68
{"class":"AIS","type":1,"repeat":0,"mmsi":244690579,"scaled":false,"status":0,"status_text":"Under way using engine","turn":-128,"speed":0,"accuracy":true,"lon":3256904,"lat":31153855,"course":0,"heading":511,"second":28,"maneuver":0,"raim":true,"radio":114891}
!AIVDM,1,1,,2,D02E34iFTg6D000000000000002gjD2,0*76
+{"class":"AIS","type":20,"repeat":0,"mmsi":2442003,"scaled":false,"offset1":1385,"number1":2,"timeout1":7,"increment1":1125,"offset2":0,"number2":0,"timeout2":0,"increment2":0,"offset3":0,"number3":0,"timeout3":0,"increment3":0,"offset4":0,"number4":0,"timeout4":0,"increment4":0}
!AIVDM,1,1,,2,14S26D05QDPFemDN`GDaaWhl25J0,0*0A
{"class":"AIS","type":1,"repeat":0,"mmsi":305170000,"scaled":false,"status":0,"status_text":"Under way using engine","turn":22,"speed":84,"accuracy":true,"lon":2977450,"lat":32118610,"course":2470,"heading":248,"second":26,"maneuver":0,"raim":true,"radio":22144}
!AIVDM,1,1,,B,14QwWb00000aoSTNmcj1mQNl0<1P,0*62
@@ -145264,6 +145270,7 @@
!AIVDM,1,1,,2,233oO3PP1JP@nr@MLITi`Ow:R0S<,0*59
{"class":"AIS","type":2,"repeat":0,"mmsi":205381390,"scaled":false,"status":0,"status_text":"Under way using engine","turn":-128,"speed":90,"accuracy":true,"lon":2209608,"lat":30874003,"course":417,"heading":511,"second":37,"maneuver":1,"raim":true,"radio":2252}
!AIVDM,1,1,,2,D02=VVA8`N?`>4N01L=Nfp1>AA0,0*75
+{"class":"AIS","type":20,"repeat":0,"mmsi":2320025,"scaled":false,"offset1":1162,"number1":1,"timeout1":7,"increment1":250,"offset2":225,"number2":1,"timeout2":7,"increment2":0,"offset3":1475,"number3":5,"timeout3":7,"increment3":750,"offset4":19,"number4":9,"timeout4":0,"increment4":1296}
!AIVDM,1,1,,2,1340s000000>`W0MGicI@UG>00Sh,0*07
{"class":"AIS","type":1,"repeat":0,"mmsi":205536000,"scaled":false,"status":0,"status_text":"Under way using engine","turn":0,"speed":0,"accuracy":false,"lon":1918176,"lat":30798253,"course":2370,"heading":171,"second":39,"maneuver":0,"raim":false,"radio":2288}
!AIVDM,1,1,,2,33aDqsPP1IPAQTdMG<r=bOw<R3:C,0*7D
diff --git a/test/sample.aivdm b/test/sample.aivdm
index d0cca57a..a155798a 100644
--- a/test/sample.aivdm
+++ b/test/sample.aivdm
@@ -1083,3 +1083,12 @@ AIVDM,2,2,1,B,00000000000,2*26
# type 16 168 bits long
#
!AIVDM,1,1,,B,@6STUk004lQ206bCKNOBAb6SJ@5s,0*74
+#
+# type=20 186 bits long
+#
+!AIVDM,1,1,,2,D02E34iFTg6D000000000000002gjG2,0*75
+!AIVDM,1,1,,2,D02=VVA8`N?`>4N01L=Nfp1>AA0,0*75
+#
+# type=20
+#
+!AIVDM,1,1,,A,D028rqP<QNfp000000000000000,2*0C
diff --git a/test/sample.aivdm.chk b/test/sample.aivdm.chk
index 7801eb5d..01aba15a 100644
--- a/test/sample.aivdm.chk
+++ b/test/sample.aivdm.chk
@@ -90,3 +90,6 @@
8|0|002711009|1|16|720:00025e8d136025bd890d5520b2ff0ac000000070202580430d4bbf003f000001027cc3302597b60d4b15003f000000c5c4a9802584cf0d3f45803f000000f47ba58025cdf40d4391003f0000010272bb00258e5f0d44f7c9ff0a
21|0|004000003|30|IBC G BUOY|1|75943336|22448680|2|2|2|2|1|31|0|0x0|0|0
16|0|439952844|315920|2049|681|230137673|424|419
+20|0|002442003|1385|2|7|1125|0|0|0|0|0|0|0|0|0|0|0|0
+20|0|002320025|1162|1|7|250|225|1|7|0|1475|5|7|750|19|9|0|1296
+20|0|002243302|200|5|7|750|0|0|0|0|0|0|0|0|0|0|0|0
diff --git a/test/sample.aivdm.js.chk b/test/sample.aivdm.js.chk
index a5005353..b672bcda 100644
--- a/test/sample.aivdm.js.chk
+++ b/test/sample.aivdm.js.chk
@@ -90,3 +90,6 @@
{"class":"AIS","device":"stdin","type":8,"repeat":0,"mmsi":2711009,"scaled":true,"dac":1,"fid":16,"data":"720:00025e8d136025bd890d5520b2ff0ac000000070202580430d4bbf003f000001027cc3302597b60d4b15003f000000c5c4a9802584cf0d3f45803f000000f47ba58025cdf40d4391003f0000010272bb00258e5f0d44f7c9ff0a"}
{"class":"AIS","device":"stdin","type":21,"repeat":0,"mmsi":4000003,"scaled":true,"aid_type":30,"aid_type_text":"Special Mark","name":"IBC G BUOY","lon":126.5722,"lat":37.4145,"accuracy":true,"to_bow":2,"to_stern":2,"to_port":2,"to_starboard":2,"epfd":1,"epfd_text":"GPS","second":31,"regional":0,"off_position":false,"raim":false,"virtual_aid":false}
{"class":"AIS","device":"stdin","type":16,"repeat":0,"mmsi":439952844,"scaled":true,"mmsi1":315920,"offset1":2049,"increment1":681,"mmsi2":230137673,"offset2":424,"increment2":419}
+{"class":"AIS","device":"stdin","type":20,"repeat":0,"mmsi":2442003,"scaled":true,"offset1":1385,"number1":2,"timeout1":7,"increment1":1125,"offset2":0,"number2":0,"timeout2":0,"increment2":0,"offset3":0,"number3":0,"timeout3":0,"increment3":0,"offset4":0,"number4":0,"timeout4":0,"increment4":0}
+{"class":"AIS","device":"stdin","type":20,"repeat":0,"mmsi":2320025,"scaled":true,"offset1":1162,"number1":1,"timeout1":7,"increment1":250,"offset2":225,"number2":1,"timeout2":7,"increment2":0,"offset3":1475,"number3":5,"timeout3":7,"increment3":750,"offset4":19,"number4":9,"timeout4":0,"increment4":1296}
+{"class":"AIS","device":"stdin","type":20,"repeat":0,"mmsi":2243302,"scaled":true,"offset1":200,"number1":5,"timeout1":7,"increment1":750,"offset2":0,"number2":0,"timeout2":0,"increment2":0,"offset3":0,"number3":0,"timeout3":0,"increment3":0,"offset4":0,"number4":0,"timeout4":0,"increment4":0}
diff --git a/test/sample.aivdm.ju.chk b/test/sample.aivdm.ju.chk
index 42eb3540..f650c9b7 100644
--- a/test/sample.aivdm.ju.chk
+++ b/test/sample.aivdm.ju.chk
@@ -90,3 +90,6 @@
{"class":"AIS","device":"stdin","type":8,"repeat":0,"mmsi":2711009,"scaled":false,"dac":1,"fid":16,"data":"720:00025e8d136025bd890d5520b2ff0ac000000070202580430d4bbf003f000001027cc3302597b60d4b15003f000000c5c4a9802584cf0d3f45803f000000f47ba58025cdf40d4391003f0000010272bb00258e5f0d44f7c9ff0a"}
{"class":"AIS","device":"stdin","type":21,"repeat":0,"mmsi":4000003,"scaled":false,"aid_type":30,"aid_type_text":"Special Mark","name":"IBC G BUOY","accuracy":true,"lon":75943336,"lat":22448680,"to_bow":2,"to_stern":2,"to_port":2,"to_starboard":2,"epfd":1,"epfd_text":"GPS","second":31,"regional":0,"off_position":false,"raim":false,"virtual_aid":false}
{"class":"AIS","device":"stdin","type":16,"repeat":0,"mmsi":439952844,"scaled":false,"mmsi1":315920,"offset1":2049,"increment1":681,"mmsi2":230137673,"offset2":424,"increment2":419}
+{"class":"AIS","device":"stdin","type":20,"repeat":0,"mmsi":2442003,"scaled":false,"offset1":1385,"number1":2,"timeout1":7,"increment1":1125,"offset2":0,"number2":0,"timeout2":0,"increment2":0,"offset3":0,"number3":0,"timeout3":0,"increment3":0,"offset4":0,"number4":0,"timeout4":0,"increment4":0}
+{"class":"AIS","device":"stdin","type":20,"repeat":0,"mmsi":2320025,"scaled":false,"offset1":1162,"number1":1,"timeout1":7,"increment1":250,"offset2":225,"number2":1,"timeout2":7,"increment2":0,"offset3":1475,"number3":5,"timeout3":7,"increment3":750,"offset4":19,"number4":9,"timeout4":0,"increment4":1296}
+{"class":"AIS","device":"stdin","type":20,"repeat":0,"mmsi":2243302,"scaled":false,"offset1":200,"number1":5,"timeout1":7,"increment1":750,"offset2":0,"number2":0,"timeout2":0,"increment2":0,"offset3":0,"number3":0,"timeout3":0,"increment3":0,"offset4":0,"number4":0,"timeout4":0,"increment4":0}