From 780c8a9c6bcdd1f8c904eaf28c11ceb317a0a2f7 Mon Sep 17 00:00:00 2001 From: Jon Schlueter Date: Tue, 6 Oct 2015 03:26:00 -0400 Subject: [PATCH] AIS:refine parsing of type 8 DAC 1 FID 16 messages - Type 8, DAC = 1 FID = 16: This should only be decoded as "Persons on board" if the message length is either 72 or 136 bits long (if even then). - Type 8, DAC = 1 FID = 16: If decoded, the json output should use the ais->type8.dac1fid16.persons field and not the type6 field Was not able to locate entry that had persons actually populated in AISHub sample data file added sample data that should not be decoded to sample.aivdm had to regenerate large sample file as it had multiple entries for this Identified by: Stefan Roels type 8 dac 1 fid 16 can have either data or persons had to add logic to detect structured vs not structured for type 8 FID 16 messages --- ais_json.c | 4 ++- driver_ais.c | 13 ++++++--- test/daemon/ais-nmea-sample.log.chk | 42 ++++++++++++++--------------- test/sample.aivdm | 8 ++++++ test/sample.aivdm.chk | 2 ++ test/sample.aivdm.js.chk | 2 ++ test/sample.aivdm.ju.chk | 2 ++ 7 files changed, 47 insertions(+), 26 deletions(-) diff --git a/ais_json.c b/ais_json.c index 59cf0afa..8481e473 100644 --- a/ais_json.c +++ b/ais_json.c @@ -316,7 +316,9 @@ int json_ais_read(const char *buf, } else if (strstr(buf, "\"fid\":16,") != NULL) { status = json_read_object(buf, json_ais8_fid16, endptr); - structured = true; + if (status == 0) { + structured = true; + } } else if (strstr(buf, "\"fid\":17,") != NULL) { status = json_read_object(buf, json_ais8_fid17, endptr); diff --git a/driver_ais.c b/driver_ais.c index a5c26c0a..b5602d4d 100644 --- a/driver_ais.c +++ b/driver_ais.c @@ -526,10 +526,15 @@ bool ais_binary_decode(const struct gpsd_errout_t *errout, break; case 16: /* Number of Persons On Board */ if (ais->type8.bitcount == 136) - ais->type8.dac1fid16.persons = UBITS(88, 13);/* 289 */ - else - ais->type8.dac1fid16.persons = UBITS(55, 13);/* 236 */ - ais->type8.structured = true; + { + ais->type8.dac1fid16.persons = UBITS(88, 13);/* 289 */ + ais->type8.structured = true; + } + else if (ais->type8.bitcount == 72) + { + ais->type8.dac1fid16.persons = UBITS(55, 13);/* 236 */ + ais->type8.structured = true; + } break; case 17: /* IMO289 - VTS-generated/synthetic targets */ #define ARRAY_BASE 56 diff --git a/test/daemon/ais-nmea-sample.log.chk b/test/daemon/ais-nmea-sample.log.chk index f231862f..35e27cf6 100644 --- a/test/daemon/ais-nmea-sample.log.chk +++ b/test/daemon/ais-nmea-sample.log.chk @@ -1163,7 +1163,7 @@ !AIVDM,1,1,,A,13aENohP00PDAIbMdQLqMwvR28:3,0*3F {"class":"AIS","type":1,"repeat":0,"mmsi":244670175,"scaled":false,"status":0,"status_text":"Under way using engine","turn":-128,"speed":0,"accuracy":true,"lon":2657077,"lat":31138163,"course":2423,"heading":511,"second":17,"maneuver":0,"raim":true,"radio":33411} !AIVDM,1,1,,A,802At?00D000q::4P2;>bPc;4rmw0@00qHT00SI,0*2F {"class":"AIS","type":1,"repeat":0,"mmsi":311561000,"scaled":false,"status":0,"status_text":"Under way using engine","turn":0,"speed":0,"accuracy":true,"lon":11197400,"lat":32643900,"course":660,"heading":327,"second":18,"maneuver":0,"raim":false,"radio":2265} !AIVDM,1,1,,A,13f?D88000wWHEbV003>0tBiTOWG2bf8W008DG,0*69 {"class":"AIS","type":1,"repeat":0,"mmsi":230927000,"scaled":false,"status":0,"status_text":"Under way using engine","turn":0,"speed":206,"accuracy":false,"lon":7902770,"lat":33150730,"course":2744,"heading":275,"second":32,"maneuver":0,"raim":false,"radio":34071} !AIVDM,1,1,,A,802At?00D000q6bL02;A=hc5UPqw0000qK1;02;>=0c7Kh0w00,4*7D -{"class":"AIS","type":8,"repeat":0,"mmsi":2391100,"scaled":false,"dac":1,"fid":16,"persons":0} +{"class":"AIS","type":8,"repeat":0,"mmsi":2391100,"scaled":false,"dac":1,"fid":16,"data":"240:0000e46a9c0022d1370ac5960e7f000000e5b04b0022ce340ac76f003f00"} !AIVDM,1,1,,A,14eH?f0000rBgdNHhqgqbJA40PS1,0*32 {"class":"AIS","type":1,"repeat":0,"mmsi":316018616,"scaled":false,"status":0,"status_text":"Under way using engine","turn":0,"speed":0,"accuracy":true,"lon":-47874673,"lat":25967039,"course":2473,"heading":328,"second":34,"maneuver":0,"raim":false,"radio":133313} !AIVDM,1,1,,A,13HOW>0P0100Q;4LD>h`6ww008C`,0*66 @@ -27783,7 +27783,7 @@ !AIVDM,1,1,,A,139Lb2P02Qvg;MP6h8Sf0s;P08MJ,0*41 {"class":"AIS","type":1,"repeat":0,"mmsi":211233290,"scaled":false,"status":0,"status_text":"Under way using engine","turn":0,"speed":161,"accuracy":true,"lon":-10593360,"lat":7080078,"course":3587,"heading":357,"second":48,"maneuver":0,"raim":false,"radio":34650} !AIVDM,1,1,,A,802At?00D000pPdG02:=?0c9dK=w8@00pS8kP2;0Shc?480w00,4*1D -{"class":"AIS","type":8,"repeat":0,"mmsi":2391100,"scaled":false,"dac":1,"fid":16,"persons":0} +{"class":"AIS","type":8,"repeat":0,"mmsi":2391100,"scaled":false,"dac":1,"fid":16,"data":"240:0000e20b1700228d3c0ac9b1b37f210000e232338022c08f0acf10803f00"} !AIVDM,1,1,,B,13aDr6hP00PGRVRMWgFKR?wRR8MU,0*75 {"class":"AIS","type":1,"repeat":0,"mmsi":244660763,"scaled":false,"status":0,"status_text":"Under way using engine","turn":-128,"speed":0,"accuracy":true,"lon":3085521,"lat":31059801,"course":2952,"heading":511,"second":49,"maneuver":1,"raim":true,"radio":34661} !AIVDM,1,1,,A,13iHfh0000P>`:4MHBSWHWKR0HMT,0*2F @@ -28562,7 +28562,7 @@ !AIVDM,1,1,,A,4028j@1uho;NiOS>8NDqOko00<3F,0*3E {"class":"AIS","type":4,"repeat":0,"mmsi":2241088,"scaled":false,"timestamp":"2012-03-14T11:30:49Z","accuracy":false,"lon":-3772145,"lat":21913551,"epfd":7,"epfd_text":"Surveyed","raim":false,"radio":49366} !AIVDM,1,1,,A,802At?00D000q2UdP2;A4PcJ00w00020AANp2;1P0c8aPIw00,4*54 -{"class":"AIS","type":8,"repeat":0,"mmsi":2391100,"scaled":false,"dac":1,"fid":16,"persons":0} +{"class":"AIS","type":8,"repeat":0,"mmsi":2391100,"scaled":false,"dac":1,"fid":16,"data":"240:0000e216e80022be560ace68003f00000201145ee022c1800ac8a6067f00"} !AIVDM,1,1,,A,16KDPk0000:1BovDERBLIh4D00Rq,0*6A {"class":"AIS","type":1,"repeat":0,"mmsi":431300812,"scaled":false,"status":0,"status_text":"Under way using engine","turn":0,"speed":0,"accuracy":false,"lon":84055807,"lat":21324361,"course":3175,"heading":2,"second":10,"maneuver":0,"raim":false,"radio":2233} !AIVDM,2,1,4,A,57f7R@01jNP0?vH2Kvt,0*07 {"class":"AIS","type":1,"repeat":0,"mmsi":244710698,"scaled":false,"status":8,"status_text":"Under way sailing","turn":-128,"speed":0,"accuracy":true,"lon":4066708,"lat":31349562,"course":0,"heading":511,"second":12,"maneuver":0,"raim":true,"radio":114620} !AIVDM,1,1,,A,802At?00D002G`lB42:Wa@c6;u:w0001Cgw402:um0c8Ph0w00,4*23 -{"class":"AIS","type":8,"repeat":0,"mmsi":2391100,"scaled":false,"dac":1,"fid":16,"persons":0} +{"class":"AIS","type":8,"repeat":0,"mmsi":2391100,"scaled":false,"dac":1,"fid":16,"data":"240:00025e8d121022a7a50ac62fd2bf0000014effc40022bdd40ac883003f00"} !AIVDM,1,1,,B,36:;4q0P008ViCrDaUuea?vH02pQ,0*11 {"class":"AIS","type":3,"repeat":0,"mmsi":413320420,"scaled":false,"status":0,"status_text":"Under way using engine","turn":-128,"speed":0,"accuracy":false,"lon":72190589,"lat":21652982,"course":3492,"heading":511,"second":12,"maneuver":0,"raim":false,"radio":11809} !AIVDM,1,1,,A,33:=a`5P000W9hlNabkh0?v@0000,0*68 @@ -61870,7 +61870,7 @@ !AIVDM,1,1,,A,6h2E:p66B2SR04<0@00000000000,0*4C {"class":"AIS","type":6,"repeat":3,"mmsi":2444000,"scaled":false,"seqno":1,"dest_mmsi":563219000,"retransmit":true,"dac":1,"fid":3,"data":"80:00400000000000000000"} !AIVDM,1,1,,B,802At?00D000qINRP2:vGhc>J@0w0000qLG702:qaPcGEp0w00,4*33 -{"class":"AIS","type":8,"repeat":0,"mmsi":2391100,"scaled":false,"dac":1,"fid":16,"persons":0} +{"class":"AIS","type":8,"repeat":0,"mmsi":2391100,"scaled":false,"dac":1,"fid":16,"data":"240:0000e597a28022be5f0ace69003f000000e5c5c70022b9a60ad757803f00"} !AIVDM,1,1,,A,33oT?@0P130JkgN0P03PD8?fME6SKggvH2D3w,0*37 {"class":"AIS","type":1,"repeat":0,"mmsi":211504760,"scaled":false,"status":0,"status_text":"Under way using engine","turn":-128,"speed":3,"accuracy":true,"lon":2638327,"lat":30754445,"course":3006,"heading":511,"second":12,"maneuver":0,"raim":true,"radio":82175} !AIVDM,1,1,,B,23aEQnPP18PB0OvMIAQB5wvH20S6,0*60 @@ -64368,7 +64368,7 @@ !AIVDM,1,1,,B,16SWfBPP00a3R6>EKdSI9?w400SR,0*3E {"class":"AIS","type":1,"repeat":0,"mmsi":440004170,"scaled":false,"status":0,"status_text":"Under way using engine","turn":-128,"speed":0,"accuracy":true,"lon":75960519,"lat":22473869,"course":2340,"heading":511,"second":34,"maneuver":0,"raim":false,"radio":2274} !AIVDM,1,1,,A,802At?00D000lQE0028?9@d6i3Dw3000qKuf02;?:0c:SP0w00,4*52 -{"class":"AIS","type":8,"repeat":0,"mmsi":2391100,"scaled":false,"dac":1,"fid":16,"persons":0} +{"class":"AIS","type":8,"repeat":0,"mmsi":2391100,"scaled":false,"dac":1,"fid":16,"data":"240:0000d2154000220f250b06c4353f0c0000e5bf6e0022cf280aca8e003f00"} !AIVDM,1,1,,B,16:BHgP0008JpE2FCeLvL@N8JhUE7QD`0018fiILAQBV<@Q?B20RU,0*02 {"class":"AIS","type":1,"repeat":0,"mmsi":413376850,"scaled":false,"status":8,"status_text":"Under way sailing","turn":0,"speed":1,"accuracy":false,"lon":73239342,"lat":18371224,"course":3138,"heading":39,"second":41,"maneuver":0,"raim":true,"radio":2213} !AIVDM,1,1,,A,168uCbi4K=hP;E:5h05It,0*23 @@ -87333,7 +87333,7 @@ !AIVDM,1,1,,A,13aGuJhP000DQflMe;1@0?v6082;,0*06 {"class":"AIS","type":1,"repeat":0,"mmsi":244710763,"scaled":false,"status":0,"status_text":"Under way using engine","turn":-128,"speed":0,"accuracy":false,"lon":2690522,"lat":31148805,"course":0,"heading":511,"second":3,"maneuver":0,"raim":false,"radio":32907} !AIVDM,1,1,,A,802At?00D000sJFUP2:wnhc>0`0w0000pPsd@2:s6hc@DDjp6MDVL0000?A3vRJ,0*53 @@ -104532,7 +104532,7 @@ !AIVDM,1,1,,A,839hJ90j2dqc9ww000OkfS@MMI5004Rt0L0B,0*03 {"class":"AIS","type":1,"repeat":0,"mmsi":999999999,"scaled":false,"status":15,"status_text":"Not defined","turn":0,"speed":0,"accuracy":false,"lon":-1608600,"lat":30890260,"course":0,"heading":145,"second":30,"maneuver":0,"raim":false,"radio":114706} !AIVDM,1,1,,A,13@nj4P000PqaCBOpH4q4hjv0D1?,0*7D @@ -127327,7 +127327,7 @@ !AIVDM,1,1,,A,23`ekA@P000CUf@MFW500?wR0<3w,0*23 {"class":"AIS","type":2,"repeat":0,"mmsi":244020037,"scaled":false,"status":0,"status_text":"Under way using engine","turn":-128,"speed":0,"accuracy":false,"lon":2567624,"lat":30779156,"course":0,"heading":511,"second":49,"maneuver":0,"raim":false,"radio":49407} !AIVDM,1,1,,A,802At?00D001E6vLP2:vG@c>@Low0000qHrJ02;C4@c5hp0w00,4*48 -{"class":"AIS","type":8,"repeat":0,"mmsi":2391100,"scaled":false,"dac":1,"fid":16,"persons":0} +{"class":"AIS","type":8,"repeat":0,"mmsi":2391100,"scaled":false,"dac":1,"fid":16,"data":"240:0001546f9c8022be5d0ace41cdff000000e58e9a0022d3110ac5c3803f00"} !AIVDM,1,1,,A,13q6oh001SQE?5rO;`r=2rOT0L17,0*10 {"class":"AIS","type":1,"repeat":0,"mmsi":261208000,"scaled":false,"status":0,"status_text":"Under way using engine","turn":0,"speed":99,"accuracy":true,"lon":11172029,"lat":32696552,"course":3339,"heading":335,"second":50,"maneuver":0,"raim":false,"radio":114759} !AIVDM,1,1,,B,133m@ogP00PD;76MD5O@0?wT2D7?,0*2E @@ -130083,7 +130083,7 @@ !AIVDM,1,1,,A,13u=aO0P000m4VVQ7pgP0?wb0L0@,0*7C {"class":"AIS","type":1,"repeat":0,"mmsi":265513340,"scaled":false,"status":0,"status_text":"Under way using engine","turn":-128,"speed":0,"accuracy":false,"lon":6956243,"lat":34732222,"course":0,"heading":511,"second":53,"maneuver":0,"raim":false,"radio":114704} !AIVDM,1,1,,A,802At?00D000qHVp02:t00cAt@0w0000qMhu02;?3hc7G@0w00,4*0C -{"class":"AIS","type":8,"repeat":0,"mmsi":2391100,"scaled":false,"dac":1,"fid":16,"persons":0} +{"class":"AIS","type":8,"repeat":0,"mmsi":2391100,"scaled":false,"dac":1,"fid":16,"data":"240:0000e589b80022bc000ad1f1003f000000e5dc3d0022cf0f0ac75d003f00"} !AIVDM,1,1,,A,13aGtvPP00PD4KlMEvC09gwd20Sp,0*66 {"class":"AIS","type":1,"repeat":0,"mmsi":244710650,"scaled":false,"status":0,"status_text":"Under way using engine","turn":-128,"speed":0,"accuracy":true,"lon":2630522,"lat":30768716,"course":38,"heading":511,"second":54,"maneuver":0,"raim":true,"radio":2296} !AIVDM,1,1,,A,33a9980P@P0=LOLMCsdUPDEf01t0,0*73 @@ -130696,7 +130696,7 @@ !AIVDM,1,1,,A,33CsGSTP2I8dBGrF?E906Owd00SQ,0*0B {"class":"AIS","type":3,"repeat":0,"mmsi":222222222,"scaled":false,"status":4,"status_text":"Constrained by her draught","turn":-128,"speed":153,"accuracy":false,"lon":72913661,"lat":23319844,"course":25,"heading":511,"second":54,"maneuver":0,"raim":false,"radio":2273} !AIVDM,1,1,,A,802At?00D000qO1202:uShc=aqnw2P00q@7r02:h6@c8dALw00,4*0F -{"class":"AIS","type":8,"repeat":0,"mmsi":2391100,"scaled":false,"dac":1,"fid":16,"persons":0} +{"class":"AIS","type":8,"repeat":0,"mmsi":2391100,"scaled":false,"dac":1,"fid":16,"data":"240:0000e5f0420022bd8f0acda79dbf0a0000e501fa0022b0190ac8b1173f00"} !AIVDM,1,1,,B,14QsE<002700knrNt6aUCTEf0@PA,0*64 {"class":"AIS","type":1,"repeat":0,"mmsi":304010544,"scaled":false,"status":0,"status_text":"Under way using engine","turn":0,"speed":135,"accuracy":false,"lon":106205,"lat":32442022,"course":1358,"heading":138,"second":55,"maneuver":0,"raim":false,"radio":67601} !AIVDM,1,1,,B,13P;nFOOh1P7R`hMK2kT=hKf00S4,0*14 @@ -132830,7 +132830,7 @@ !AIVDM,1,1,,B,33ctMd501r0gsDLHRoD9d2=d00nA,0*59 {"class":"AIS","type":3,"repeat":0,"mmsi":247406000,"scaled":false,"status":5,"status_text":"Moored","turn":0,"speed":122,"accuracy":false,"lon":6281870,"lat":25737040,"course":2480,"heading":70,"second":54,"maneuver":0,"raim":false,"radio":3473} !AIVDM,1,1,,A,802At?00D000qO20P2:wu0c;WQgw0001<=N=02:sk0cEVp0w00,4*5A -{"class":"AIS","type":8,"repeat":0,"mmsi":2391100,"scaled":false,"dac":1,"fid":16,"persons":0} +{"class":"AIS","type":8,"repeat":0,"mmsi":2391100,"scaled":false,"dac":1,"fid":16,"data":"240:0000e5f0808022bff40acb9e1bff00000130d78d0022bbcc0ad59b803f00"} !AIVDM,1,1,,A,13aIjChP1NPCcldMEG=18wwjRD30,0*1E {"class":"AIS","type":1,"repeat":0,"mmsi":244740687,"scaled":false,"status":0,"status_text":"Under way using engine","turn":-128,"speed":94,"accuracy":true,"lon":2580118,"lat":30758708,"course":291,"heading":511,"second":57,"maneuver":1,"raim":true,"radio":82112} !AIVDM,1,1,,2,133Scr0000PA=>LM?h01U1Aj05J0,0*53 @@ -161362,7 +161362,7 @@ !AIVDM,1,1,,B,15N:=eP001qT5`JA4ihL=AJj05J4,0*49 {"class":"AIS","type":1,"repeat":0,"mmsi":367168950,"scaled":false,"status":0,"status_text":"Under way using engine","turn":0,"speed":1,"accuracy":true,"lon":-53990131,"lat":17904065,"course":3125,"heading":45,"second":25,"maneuver":0,"raim":false,"radio":22148} !AIVDM,1,1,,A,802At?00D000qFap02:lA0b@?3fw0001<:iFP2:rf0cCGp0w00,4*5E -{"class":"AIS","type":8,"repeat":0,"mmsi":2391100,"scaled":false,"dac":1,"fid":16,"persons":0} +{"class":"AIS","type":8,"repeat":0,"mmsi":2391100,"scaled":false,"dac":1,"fid":16,"data":"240:0000e56a780022b4440a903c3bbf00000130ac568022bab80ad35f803f00"} !AIVDM,1,1,,A,15NKjc0P00IT;D6A7qu:Agvh05J4,0*11 {"class":"AIS","type":1,"repeat":0,"mmsi":367456940,"scaled":false,"status":0,"status_text":"Under way using engine","turn":-128,"speed":0,"accuracy":false,"lon":-53978493,"lat":17955316,"course":2630,"heading":511,"second":24,"maneuver":0,"raim":false,"radio":22148} !AIVDM,1,1,,B,13aIk2@P00PDQQ@Me6kh;gvh28>M,0*34 diff --git a/test/sample.aivdm b/test/sample.aivdm index ebc1b43c..736923ea 100644 --- a/test/sample.aivdm +++ b/test/sample.aivdm @@ -1065,3 +1065,11 @@ AIVDM,2,2,1,B,00000000000,2*26 !AIVDM,3,2,7,A,?A;J6b7AwuiqIGLeNiKCPDR7HQRkCSF,0*41 !AIVDM,3,3,7,A,Uq:1Kk`e8,4*27 # {"class":"AIS","type":8,"repeat":0,"mmsi":366999607,"scaled":false,"dac":366,"fid":57,"data":"510:7ffdef068fbded3c0a1943dfb997b4a10fadec21e6e0a6608f0f44b686a8747ff71e595dcb5ec5b4e05221d886233d2e4916f6eb6fe8ecd38d69792816f3a2d0"} +# sample of type 8 fid 16 where persons shouldn't be parsed +!AIVDM,1,1,,A,802At?00D000qFap02:lA0b@?3fw0001<:iFP2:rf0cCGp0w00,4*5E +#{"class":"AIS","type":8,"repeat":0,"mmsi":2391100,"scaled":false,"dac":1,"fid":16,"data":"240:0000e56a780022b4440a903c3bbf00000130ac568022bab80ad35f803f00"} +# I do also have some examples of the type 8 DAC 1 FID 16 messages that should not be converted. I have no examples of the ones that should, but from the documentation, it seems not sure that they actually exist. +!AIVDM,3,1,0,A,802UMp@0D002G`lCH2FuR@mE8;;w2d00001h82F0@hm;gh0w00010Wk3<2FG,0*00 +!AIVDM,3,2,0,A,ePm;5@0w0000iLBaP2F4khlwAH0w0000u7fUP2G=u0m3T@0w00010W:s02F>,0*72 +!AIVDM,3,3,0,A,Ghm4utWw2P,4*27 +# 8|0|002711009|1|16|720:00025e8d136025bd890d5520b2ff0ac000000070202580430d4bbf003f000001027cc3302597b60d4b15003f000000c5c4a9802584cf0d3f45803f000000f47ba58025cdf40d4391003f0000010272bb00258e5f0d44f7c9ff0a diff --git a/test/sample.aivdm.chk b/test/sample.aivdm.chk index ff37743e..bae01919 100644 --- a/test/sample.aivdm.chk +++ b/test/sample.aivdm.chk @@ -86,3 +86,5 @@ 8|0|002766080|1|11|1382800|3532000|20T18:30Z|0|0|0|0|0|0|0|0|0|0|0|0|255|0|0|0|0|0|0|0|0|3|0|0|0|0|0|1|0|0|0 6|0|002053507|2|244670500|0|200|3|16:3200 8|0|366999607|366|57|510:7ffdef068fbded3c0a1943dfb997b4a10fadec21e6e0a6608f0f44b686a8747ff71e595dcb5ec5b4e05221d886233d2e4916f6eb6fe8ecd38d69792816f3a2d0 +8|0|002391100|1|16|240:0000e56a780022b4440a903c3bbf00000130ac568022bab80ad35f803f00 +8|0|002711009|1|16|720:00025e8d136025bd890d5520b2ff0ac000000070202580430d4bbf003f000001027cc3302597b60d4b15003f000000c5c4a9802584cf0d3f45803f000000f47ba58025cdf40d4391003f0000010272bb00258e5f0d44f7c9ff0a diff --git a/test/sample.aivdm.js.chk b/test/sample.aivdm.js.chk index 4d6b80cb..eb6a1a21 100644 --- a/test/sample.aivdm.js.chk +++ b/test/sample.aivdm.js.chk @@ -86,3 +86,5 @@ {"class":"AIS","device":"stdin","type":8,"repeat":0,"mmsi":2766080,"scaled":true,"dac":1,"fid":11,"lat":58.867,"lon":23.047,"timestamp":"20T18:30Z","wspeed":0,"wgust":0,"wdir":0,"wgustdir":0,"humidity":0,"airtemp":-60.0,"dewpoint":-20.0,"pressure":800,"pressuretend":"steady","visibility":0.0,"waterlevel":-10.0,"leveltrend":"steady","cspeed":25.5,"cdir":0,"cspeed2":0.0,"cdir2":0,"cdepth2":0,"cspeed3":0.0,"cdir3":0,"cdepth3":0,"waveheight":0.0,"waveperiod":3,"wavedir":0,"swellheight":0.0,"swellperiod":0,"swelldir":0,"seastate":0,"watertemp":-9.9,"preciptype":0,"preciptype_text":"reserved","salinity":0.0,"ice":0,"ice_text":"no"} {"class":"AIS","device":"stdin","type":6,"repeat":0,"mmsi":2053507,"scaled":true,"seqno":2,"dest_mmsi":244670500,"retransmit":false,"dac":200,"fid":3,"data":"16:3200"} {"class":"AIS","device":"stdin","type":8,"repeat":0,"mmsi":366999607,"scaled":true,"dac":366,"fid":57,"data":"510:7ffdef068fbded3c0a1943dfb997b4a10fadec21e6e0a6608f0f44b686a8747ff71e595dcb5ec5b4e05221d886233d2e4916f6eb6fe8ecd38d69792816f3a2d0"} +{"class":"AIS","device":"stdin","type":8,"repeat":0,"mmsi":2391100,"scaled":true,"dac":1,"fid":16,"data":"240:0000e56a780022b4440a903c3bbf00000130ac568022bab80ad35f803f00"} +{"class":"AIS","device":"stdin","type":8,"repeat":0,"mmsi":2711009,"scaled":true,"dac":1,"fid":16,"data":"720:00025e8d136025bd890d5520b2ff0ac000000070202580430d4bbf003f000001027cc3302597b60d4b15003f000000c5c4a9802584cf0d3f45803f000000f47ba58025cdf40d4391003f0000010272bb00258e5f0d44f7c9ff0a"} diff --git a/test/sample.aivdm.ju.chk b/test/sample.aivdm.ju.chk index 105840bd..c3ec424f 100644 --- a/test/sample.aivdm.ju.chk +++ b/test/sample.aivdm.ju.chk @@ -86,3 +86,5 @@ {"class":"AIS","device":"stdin","type":8,"repeat":0,"mmsi":2766080,"scaled":false,"dac":1,"fid":11,"lat":3532000,"lon":1382800,"timestamp":"20T18:30Z","wspeed":0,"wgust":0,"wdir":0,"wgustdir":0,"humidity":0,"airtemp":0,"dewpoint":0,"pressure":0,"pressuretend":0,"visibility":0,"waterlevel":0,"leveltrend":0,"cspeed":255,"cdir":0,"cspeed2":0,"cdir2":0,"cdepth2":0,"cspeed3":0,"cdir3":0,"cdepth3":0,"waveheight":0,"waveperiod":3,"wavedir":0,"swellheight":0,"swellperiod":0,"swelldir":0,"seastate":0,"watertemp":1,"preciptype":0,"preciptype_text":"reserved","salinity":0,"ice":0,"ice_text":"no"} {"class":"AIS","device":"stdin","type":6,"repeat":0,"mmsi":2053507,"scaled":false,"seqno":2,"dest_mmsi":244670500,"retransmit":false,"dac":200,"fid":3,"data":"16:3200"} {"class":"AIS","device":"stdin","type":8,"repeat":0,"mmsi":366999607,"scaled":false,"dac":366,"fid":57,"data":"510:7ffdef068fbded3c0a1943dfb997b4a10fadec21e6e0a6608f0f44b686a8747ff71e595dcb5ec5b4e05221d886233d2e4916f6eb6fe8ecd38d69792816f3a2d0"} +{"class":"AIS","device":"stdin","type":8,"repeat":0,"mmsi":2391100,"scaled":false,"dac":1,"fid":16,"data":"240:0000e56a780022b4440a903c3bbf00000130ac568022bab80ad35f803f00"} +{"class":"AIS","device":"stdin","type":8,"repeat":0,"mmsi":2711009,"scaled":false,"dac":1,"fid":16,"data":"720:00025e8d136025bd890d5520b2ff0ac000000070202580430d4bbf003f000001027cc3302597b60d4b15003f000000c5c4a9802584cf0d3f45803f000000f47ba58025cdf40d4391003f0000010272bb00258e5f0d44f7c9ff0a"}