diff --git a/lib/fromPgn.js b/lib/fromPgn.js index bbb9f9e..45d3ce9 100644 --- a/lib/fromPgn.js +++ b/lib/fromPgn.js @@ -121,7 +121,9 @@ class Parser extends EventEmitter { }) } - trace(`${pgn.pgn} ${len} ${pgnData.Length} ${pgnData.RepeatingFields} ${couldBeMulti}`) + const RepeatingFields = pgnData.RepeatingFieldSet1Size ? pgnData.RepeatingFieldSet1Size : 0 + + trace(`${pgn.pgn} ${len} ${pgnData.Length} ${RepeatingFields} ${couldBeMulti}`) if ( coalesced || len > 0x8 || (this.format == FORMAT_COALESCED && !this.mixedFormat) ) { this.format = FORMAT_COALESCED if ( sourceString ) { @@ -200,7 +202,7 @@ class Parser extends EventEmitter { try { var fields = pgnData.Fields - for ( var i = 0; i < fields.length-pgnData.RepeatingFields; i++ ) { + for ( var i = 0; i < fields.length-RepeatingFields; i++ ) { var field = fields[i] var hasMatch = !_.isUndefined(field.Match) @@ -242,8 +244,8 @@ class Parser extends EventEmitter { pgn.fields[field.Name] = value } } - if ( pgnData.RepeatingFields > 0 ) { - var repeating = fields.slice(fields.length-pgnData.RepeatingFields) + if ( RepeatingFields > 0 ) { + var repeating = fields.slice(fields.length-RepeatingFields) pgn.fields.list = [] while ( bs.bitsLeft > 0 ) { @@ -479,9 +481,9 @@ class Parser extends EventEmitter { } return res } catch ( error ) { - const err = new Error(`error reading pgn ${JSON.stringify(pgn)} ${error}`) + const err = new Error(`error reading pgn ${JSON.stringify(pgn_data)} ${error}`) cb && cb(err) - this.emit('error', pgn, error) + this.emit('error', pgn_data, error) console.error(err) return } @@ -517,9 +519,10 @@ function getField(pgn, index, data) { return pgn.Fields[index] } - if ( pgn.RepeatingFields ) { - var startOfRepeatingFields = pgn.Fields.length - pgn.RepeatingFields - index = startOfRepeatingFields + ((index - startOfRepeatingFields) % pgn.RepeatingFields); + const RepeatingFields = pgn.RepeatingFieldSet1Size ? pgn.RepeatingFieldSet1Size : 0 + if ( RepeatingFields ) { + var startOfRepeatingFields = pgn.Fields.length - RepeatingFields + index = startOfRepeatingFields + ((index - startOfRepeatingFields) % RepeatingFields); return pgn.Fields[index] } } @@ -580,7 +583,8 @@ function readField(options, runPostProcessor, pgn, field, bs) { //console.log(`${field.Name} ${value} ${field.Resolution}`) if ( value != null && !_.isUndefined(value) ) { - var postProcessor = fieldTypePostProcessors[field.Type] + let type = field.Type //hack, missing type + var postProcessor = fieldTypePostProcessors[type] if ( postProcessor ) { if ( runPostProcessor ) { value = postProcessor(field, value) @@ -646,7 +650,7 @@ function readValue(options, pgn, field, bs, bitLength) { if ( _.isUndefined(bitLength) ) { bitLength = field.BitLength } - if ( bitLength == 0 ) { + if ( !field.Type && field.BitLengthVariable ) { ///hack for missing FieldType return readVariableLengthField(options, pgn, field, bs) } else if (bitLength === 8) { if ( field.Signed ) { @@ -790,6 +794,10 @@ fieldTypeReaders['ASCII or UNICODE string starting with length and control byte' buf.writeUInt8(c, idx) } + if ( buf[buf.length-1] === 0 ) { + nameLen = nameLen - 1 + } + return buf.toString(control == 0 ? 'utf8' : 'ascii', 0, idx < nameLen ? idx : nameLen).trim() } else { return null @@ -889,8 +897,7 @@ fieldTypePostProcessors['Time'] = (field, value) => { if (value >= 0xfffffffd) { value = undefined } else { - var seconds = (value / timeUnitsPerSecond) - //var units = value % timeUnitsPerSecond; + var seconds = (value * field.Resolution) var minutes = (seconds / 60); var seconds = seconds % 60; var hours = Math.floor(minutes / 60); diff --git a/lib/toPgn.js b/lib/toPgn.js index 1e36808..b1c17d2 100644 --- a/lib/toPgn.js +++ b/lib/toPgn.js @@ -75,8 +75,8 @@ function toPgn(data) { if ( !_.isArray(fields) ) { fields = [ fields.Field ] } - - for ( var index = 0; index < fields.length - pgnData.RepeatingFields; index++ ) { + const RepeatingFields = pgnData.RepeatingFieldSet1Size ? pgnData.RepeatingFieldSet1Size : 0 + for ( var index = 0; index < fields.length - RepeatingFields; index++ ) { var field = fields[index] var value = data[field.Name]; @@ -99,8 +99,8 @@ function toPgn(data) { if ( data.list ) { data.list.forEach(repeat => { - for (var index = 0; index < pgnData.RepeatingFields; index++ ) { - var field = fields[pgnData.Fields.length-pgnData.RepeatingFields+index] + for (var index = 0; index < RepeatingFields; index++ ) { + var field = fields[pgnData.Fields.length-RepeatingFields+index] var value = repeat[field.Name]; writeField(bs, pgn_number, field, data, value) @@ -118,7 +118,7 @@ function toPgn(data) { if ( pgnData.Length != 0xff && fields[fields.length-1].Type != RES_STRINGLAU && fields[fields.length-1].Type != RES_STRINGLZ - && !pgnData.RepeatingFields ) { + && !RepeatingFields ) { var len = lengthsOff[pgnData.PGN] || pgnData.Length //console.log(`Length ${len}`) @@ -166,16 +166,16 @@ function writeField(bs, pgn_number, field, data, value, bitLength) { } bs.writeUint8(field.Signed ? 0x7f : 0xff) } else { - bs.writeBits(0xffffff, bitLength) + bs.writeBits(0xffffffff, bitLength) } } else { - + let type = field.Type if ( field.Name === 'Industry Code' ) { if ( _.isString(value) ) { value = Number(getIndustryCode(value)) } - } else if ( field.Type && fieldTypeMappers[field.Type] ) { - value = fieldTypeMappers[field.Type](field, value) + } else if ( type && fieldTypeMappers[type] ) { + value = fieldTypeMappers[type](field, value) } else if (field.EnumValues && _.isString(value)) { if (!(field.Id === "timeStamp" && value < 60)) { value = lookup(field, value) @@ -189,7 +189,7 @@ function writeField(bs, pgn_number, field, data, value, bitLength) { if ( field.Type && fieldTypeWriters[field.Type] ) { fieldTypeWriters[field.Type](pgn_number, field, value, bs) } else { - if ( _.isString(value) && bitLength !== 0 ) { + if ( _.isString(value) && typeof bitLength !== 'undefined' && bitLength !== 0 ) { value = Number(value) } @@ -202,7 +202,7 @@ function writeField(bs, pgn_number, field, data, value, bitLength) { value -= field.Offset } - if (bitLength == 0) { + if ( !field.Type && field.BitLengthVariable ) { writeVariableLengthField(bs, pgn_number, data, field, value) } else if ( _.isBuffer(value) ) { value.copy(bs.view.buffer, bs.byteIndex) diff --git a/package.json b/package.json index 701da48..7efabd9 100644 --- a/package.json +++ b/package.json @@ -53,7 +53,7 @@ ], "license": "Apache-2.0", "dependencies": { - "@canboat/pgns": "^1.4.0", + "@canboat/pgns": "2.x.x", "bit-buffer": "0.2.3", "date-fns": "2.0.0-alpha.27", "debug": "^4.3.4", diff --git a/test/ikonvert.js b/test/ikonvert.js index 26677fa..e302300 100644 --- a/test/ikonvert.js +++ b/test/ikonvert.js @@ -18,7 +18,7 @@ const pgns = [ "timer": 0.563, "fields":{ "Date": "2141.11.12", - "Reserved1": "6", + "Reserved1": 6, "SID": 119, "Source": 13, "Time": "55:11:40.08140" @@ -51,7 +51,7 @@ const pgns = [ { "Reference Station Type":"GPS", "Reference Station ID":0, - "Age of DGNSS Corrections":0 + "Age of DGNSS Corrections":"00:00:00" } ] }, diff --git a/test/pgns/126208.js b/test/pgns/126208.js index 159b7b0..2b4571c 100644 --- a/test/pgns/126208.js +++ b/test/pgns/126208.js @@ -1,4 +1,4 @@ module.exports = [{ - "expected": {"prio":2,"pgn":126208,"dst":67,"src":0,"timestamp":"2020-04-19T00:35:55.571Z","fields":{"Function Code":"Command","PGN":126998,"# of Parameters":1,"list":[{"Parameter":2,"Value":"YD:VOLUME 60"}]},"description":"NMEA - Command group function"}, + "expected": {"prio":2,"pgn":126208,"dst":67,"src":0,"timestamp":"2020-04-19T00:35:55.571Z","fields":{"Function Code":"Command","PGN":126998,"Number of Parameters":1,"list":[{"Parameter":2,"Value":"YD:VOLUME 60"}]},"description":"NMEA - Command group function"}, "input": "2020-04-19T00:35:55.571Z,2,126208,0,67,21,01,16,f0,01,ff,01,02,0e,01,59,44,3a,56,4f,4c,55,4d,45,20,36,30" }] diff --git a/test/pgns/126720.js b/test/pgns/126720.js index 1a7b766..87323cc 100644 --- a/test/pgns/126720.js +++ b/test/pgns/126720.js @@ -1,4 +1,4 @@ module.exports = [{ "expected": {"timestamp":"2017-04-15T16:02:48.913Z","prio":7,"src":1,"dst":255,"pgn":126720,"description":"Seatalk1: Device Identification","fields":{"Manufacturer Code":"Raymarine","Industry Code":"Marine Industry","Proprietary ID":"0x81f0","command":"0x90","device":"S100"}}, - "input": "2017-04-15T16:02:48.913Z,7,126720,1,255,8,3b,9f,f0,81,90,ff,03,ff" + "input": "2017-04-15T16:02:48.913Z,7,126720,1,255,7,3b,9f,f0,81,90,ff,03" }] diff --git a/test/pgns/126996.js b/test/pgns/126996.js index 9dec9bc..31f6bc1 100644 --- a/test/pgns/126996.js +++ b/test/pgns/126996.js @@ -1,4 +1,4 @@ module.exports = [{ - "expected": {"timestamp":"2017-04-15T14:57:58.470Z","prio":6,"src":0,"dst":255,"pgn":126996,"description":"Product Information","fields":{"NMEA 2000 Version":1300,"Product Code":28199,"Model ID":"NMEA 2000 PC Interface (NGT-1)","Software Version Code":"1.100, 2.210","Model Version":"NGT-1-USB hv1.03","Model Serial Code":"177800","Certification Level":0,"Load Equivalency":1}}, + "expected": {"timestamp":"2017-04-15T14:57:58.470Z","prio":6,"src":0,"dst":255,"pgn":126996,"description":"Product Information","fields":{"NMEA 2000 Version":1.3,"Product Code":28199,"Model ID":"NMEA 2000 PC Interface (NGT-1)","Software Version Code":"1.100, 2.210","Model Version":"NGT-1-USB hv1.03","Model Serial Code":"177800","Certification Level":0,"Load Equivalency":1}}, "input": "2017-04-15T14:57:58.470Z,6,126996,0,255,134,14,05,27,6e,4e,4d,45,41,20,32,30,30,30,20,50,43,20,49,6e,74,65,72,66,61,63,65,20,28,4e,47,54,2d,31,29,ff,ff,31,2e,31,30,30,2c,20,32,2e,32,31,30,ff,ff,ff,ff,ff,ff,ff,ff,ff,ff,ff,ff,ff,ff,ff,ff,ff,ff,ff,ff,4e,47,54,2d,31,2d,55,53,42,20,20,68,76,31,2e,30,33,ff,ff,ff,ff,ff,ff,ff,ff,ff,ff,ff,ff,ff,ff,ff,31,37,37,38,30,30,ff,ff,ff,ff,ff,ff,ff,ff,ff,ff,ff,ff,ff,ff,ff,ff,ff,ff,ff,ff,ff,ff,ff,ff,ff,ff,00,01" }] diff --git a/test/pgns/127237.js b/test/pgns/127237.js index 2883efb..90bdff5 100644 --- a/test/pgns/127237.js +++ b/test/pgns/127237.js @@ -1,4 +1,4 @@ module.exports = [{ - "expected": {"timestamp":"2017-04-15T14:57:58.469Z","prio":2,"src":172,"dst":255,"pgn":127237,"description":"Heading/Track control","fields":{"Rudder Limit Exceeded":"No","Override":"No","Steering Mode":2,"Turn Mode":"Rudder Limit controlled","Commanded Rudder Direction":"Move to starboard","Commanded Rudder Angle":-0.0015}}, + "expected": {"timestamp":"2017-04-15T14:57:58.469Z","prio":2,"src":172,"dst":255,"pgn":127237,"description":"Heading/Track control","fields":{"Rudder Limit Exceeded":"No","Override":"No","Steering Mode":"Follow-Up Device","Turn Mode":"Rudder limit controlled","Commanded Rudder Direction":"Move to starboard","Commanded Rudder Angle":-0.0015}}, "input": "2017-04-15T14:57:58.469Z,2,127237,172,255,21,3c,c2,3f,f1,ff,ff,ff,ff,ff,ff,ff,ff,ff,ff,7f,ff,7f,ff,7f,ff,ff" }] diff --git a/test/pgns/127251.js b/test/pgns/127251.js index b03164e..c88d876 100644 --- a/test/pgns/127251.js +++ b/test/pgns/127251.js @@ -1,4 +1,4 @@ module.exports = [{ - "expected": {"timestamp":"2017-04-15T14:57:58.468Z","prio":2,"src":204,"dst":255,"pgn":127251,"description":"Rate of Turn","fields":{"Rate":0.00069103}}, + "expected": {"timestamp":"2017-04-15T14:57:58.468Z","prio":2,"src":204,"dst":255,"pgn":127251,"description":"Rate of Turn","fields":{"Rate":0.00069103, "Reserved1": 16777215}}, "input": "2017-04-15T14:57:58.468Z,2,127251,204,255,8,ff,61,56,00,00,ff,ff,ff" }] diff --git a/test/pgns/127489.js b/test/pgns/127489.js index 90f7262..271e8a6 100644 --- a/test/pgns/127489.js +++ b/test/pgns/127489.js @@ -1,8 +1,8 @@ //fixme: add "Total Engine hours" when implemented module.exports = [{ - "expected": {"timestamp":"2016-04-09T16:41:38.175Z","prio":2,"src":16,"dst":255,"pgn":127489,"description":"Engine Parameters, Dynamic","fields":{"Instance":"Single Engine or Dual Engine Port","Oil pressure":158300,"Temperature":296.67,"Alternator Potential":13.82,"Discrete Status 1":["Over Temperature","Low Oil Pressure"],"Discrete Status 2": []}}, - "input": "2016-04-09T16:41:38.175Z,2,127489,16,255,26,00,2f,06,ff,ff,e3,73,66,05,ff,7f,ff,ff,ff,ff,ff,ff,ff,ff,ff,06,00,00,00,7f,7f" + "expected": {"timestamp":"2023-04-01T17:24:51.634Z","prio":2,"src":16,"dst":255,"pgn":127489,"description":"Engine Parameters, Dynamic","fields":{"Instance":"Single Engine or Dual Engine Port","Oil pressure":158300,"Temperature":296.67,"Alternator Potential":13.82,"Discrete Status 1":["Over Temperature","Low Oil Pressure"],"Discrete Status 2": [], "Total Engine hours":"00:10:00"}}, + "input": "2023-04-01T17:24:51.634Z,2,127489,16,255,26,00,2f,06,ff,ff,e3,73,66,05,ff,7f,58,02,00,00,ff,ff,ff,ff,ff,06,00,00,00,7f,7f" }, { "expected": {"timestamp":"2017-04-15T14:57:58.469Z","prio":2,"src":17,"dst":255,"pgn":127489,"description":"Engine Parameters, Dynamic","fields":{"Instance":"Single Engine or Dual Engine Port","Oil pressure":393000,"Temperature":330.43,"Discrete Status 1": [],"Discrete Status 2": []}}, diff --git a/test/pgns/127497.js b/test/pgns/127497.js new file mode 100644 index 0000000..b449cfa --- /dev/null +++ b/test/pgns/127497.js @@ -0,0 +1,4 @@ +module.exports = [{ + "expected": {"prio":5,"pgn":127497,"dst":255,"src":57,"timestamp":"2020-03-31T02:34:18.529Z","fields":{"Instance":224,"Trip Fuel Used":9,"Fuel Rate, Average":-3100.2,"Instantaneous Fuel Economy":-0.1},"description":"Trip Parameters, Engine"}, + "input": "2020-03-31T02:34:18.529Z,5,127497,57,255,9,e0,09,00,e6,86,ff,7f,ff,ff" +}] diff --git a/test/pgns/127506.js b/test/pgns/127506.js index e345e49..9d6fb20 100644 --- a/test/pgns/127506.js +++ b/test/pgns/127506.js @@ -1,4 +1,5 @@ module.exports = [{ - "expected": {"timestamp":"2016-02-28T19:57:02.829Z","prio":6,"src":60,"dst":255,"pgn":127506,"description":"DC Detailed Status","fields":{"Instance":3,"State of Charge":100}}, - "input": "2016-02-28T19:57:02.829Z,6,127506,60,255,11,ff,03,ff,64,ff,ff,ff,ff,ff,ff,ff" + "expected": {"timestamp":"2023-04-01T17:28:01.128Z","prio":2,"src":60,"dst":255,"pgn":127506,"description":"DC Detailed Status","fields":{"Instance":3,"State of Charge":100, "Time Remaining": "00:20:00"}}, + "input": "2023-04-01T17:28:01.128Z,2,127506,60,255,11,ff,03,ff,64,ff,14,00,ff,ff,ff,ff" + //"2016-02-28T19:57:02.829Z,6,127506,60,255,11,ff,03,ff,64,ff,ff,ff,ff,ff,ff,ff" }] diff --git a/test/pgns/129033.js b/test/pgns/129033.js index 0fcd0b1..c7e2ebb 100644 --- a/test/pgns/129033.js +++ b/test/pgns/129033.js @@ -1,4 +1,4 @@ module.exports = [{ - "expected": {"timestamp":"2017-04-15T14:57:58.470Z","prio":3,"src":3,"dst":255,"pgn":129033,"description":"Time & Date","fields":{"Date":"2017.04.15", "Time": "14:57:56.89500","Local Offset":-240}}, + "expected": {"timestamp":"2017-04-15T14:57:58.470Z","prio":3,"src":3,"dst":255,"pgn":129033,"description":"Time & Date","fields":{"Date":"2017.04.15", "Time": "14:57:56.89500","Local Offset":-14400}}, "input": "2017-04-15T14:57:58.470Z,3,129033,3,255,8,77,43,36,f6,1c,20,10,ff" }] diff --git a/test/pgns/129038.js b/test/pgns/129038.js index 3177f46..3bba7e4 100644 --- a/test/pgns/129038.js +++ b/test/pgns/129038.js @@ -1,4 +1,4 @@ module.exports = [{ - "expected": {"timestamp":"2019-04-15T15:12:21.553Z","prio":4,"pgn":129038,"src":43,"dst":255,"fields":{"Message ID":1,"Repeat Indicator":"Initial","User ID":367306490,"Longitude":-76.5379949,"Latitude":39.241965,"Position Accuracy":"Low","RAIM":"not in use","Time Stamp":"22","COG":5.4297,"SOG":1.95,"Communication State":"2257","AIS Transceiver information":"Channel B VDL reception","Special Maneuver Indicator":"Not available","Reserved1":"0","AIS Spare":"0","Reserved2":"0"},"description":"AIS Class A Position Report"}, + "expected": {"timestamp":"2019-04-15T15:12:21.553Z","prio":4,"pgn":129038,"src":43,"dst":255,"fields":{"Message ID":"Scheduled Class A position report","Repeat Indicator":"Initial","User ID":367306490,"Longitude":-76.5379949,"Latitude":39.241965,"Position Accuracy":"Low","RAIM":"not in use","Time Stamp":"22","COG":5.4297,"SOG":1.95,"Communication State":"2257","AIS Transceiver information":"Channel B VDL reception","Special Maneuver Indicator":"Not available","Reserved1":0,"Spare":0,"Reserved2":0},"description":"AIS Class A Position Report" }, "input": "2019-04-15T15:12:21.553Z,4,129038,43,255,28,01,fa,a6,e4,15,93,3a,61,d2,42,d9,63,17,58,19,d4,c3,00,d1,08,08,ff,ff,ff,7f,0f,00,ff" }] diff --git a/test/pgns/129039.js b/test/pgns/129039.js index 395367f..fe639f0 100644 --- a/test/pgns/129039.js +++ b/test/pgns/129039.js @@ -1,4 +1,4 @@ module.exports = [{ - "expected": {"timestamp":"2017-04-15T14:57:59.409Z","prio":4,"src":43,"dst":255,"pgn":129039,"description":"AIS Class B Position Report","fields":{"Message ID":18,"Repeat Indicator":"Initial","User ID":338184312,"Longitude":-76.4640032,"Latitude":39.0700267,"Position Accuracy":"High","RAIM":"in use","Time Stamp":"59","COG":2.1206,"SOG":2.46,"Communication State":"393222","AIS Transceiver information":"Own information not broadcast","Regional Application":0,"Regional Application":0,"Unit type":"CS","Integrated Display":"No","DSC":"Yes","Band":"entire marine band","Can handle Msg 22":"Yes","AIS mode":"Autonomous","AIS communication state":"ITDMA"}}, - "input": "2017-04-15T14:57:59.409Z,4,129039,43,255,26,12,78,48,28,14,e0,84,6c,d2,eb,9c,49,17,ef,d6,52,f6,00,06,00,26,ff,ff,00,74,ff" + "expected": {"timestamp":"2017-04-15T14:57:59.409Z","prio":4,"src":43,"dst":255,"pgn":129039,"description":"AIS Class B Position Report","fields":{"Message ID":"Standard Class B position report","Repeat Indicator":"Initial","User ID":338184312,"Longitude":-76.4640032,"Latitude":39.0700267,"Position Accuracy":"High","RAIM":"in use","Time Stamp":"59","COG":2.1206,"SOG":2.46,"Communication State":"393222","AIS Transceiver information":"Own information not broadcast","Regional Application":0,"Regional Application B":0,"Unit type":"CS","Integrated Display":"No","DSC":"Yes","Band":"Entire marine band","Can handle Msg 22":"Yes","AIS mode":"Autonomous","AIS communication state":"ITDMA"}}, + "input": "2017-04-15T14:57:59.409Z,4,129039,43,255,27,12,78,48,28,14,e0,84,6c,d2,eb,9c,49,17,ef,d6,52,f6,00,06,00,26,ff,ff,00,74,ff,ff" }] diff --git a/test/pgns/129041.js b/test/pgns/129041.js index 7eb23da..c3dfc87 100644 --- a/test/pgns/129041.js +++ b/test/pgns/129041.js @@ -1,4 +1,4 @@ module.exports = [{ - "expected": {"timestamp":"2019-04-15T15:13:37.159Z","prio":4,"pgn":129041,"src":43,"dst":255,"fields":{"Message ID":21,"Repeat Indicator":"Initial","User ID":993672312,"Longitude":-76.5295832,"Latitude":39.2160667,"Position Accuracy":"High","AIS RAIM Flag":"not in use","Time Stamp":"Manual input mode","AtoN Type":"Fixed beacon: port hand","Off Position Indicator":"No","Virtual AtoN Flag":"Yes","Assigned Mode Flag":"Autonomous and continuous","AIS Spare":"0","Position Fixing Device Type":"Surveyed","Reserved1":"0","AtoN Status":"0","AIS Transceiver information":"Channel A VDL reception","Reserved2":"0","AtoN Name":"SC"},"description":"AIS Aids to Navigation (AtoN) Report"}, + "expected": {"timestamp":"2019-04-15T15:13:37.159Z","prio":4,"pgn":129041,"src":43,"dst":255,"fields":{"Message ID":"ATON report","Repeat Indicator":"Initial","User ID":993672312,"Longitude":-76.5295832,"Latitude":39.2160667,"Position Accuracy":"High","RAIM":"not in use","Time Stamp":"Manual input mode","AtoN Type":"Fixed beacon: port hand","Off Position Indicator":"No","Virtual AtoN Flag":"Yes","Assigned Mode Flag":"Autonomous and continuous","Spare":0,"Position Fixing Device Type":"Surveyed","Reserved1":0,"AtoN Status":"0","AIS Transceiver information":"Channel A VDL reception","Reserved2":0,"AtoN Name":"SC"},"description":"AIS Aids to Navigation (AtoN) Report"}, "input": "2019-04-15T15:13:37.159Z,4,129041,43,255,46,15,78,3c,3a,3b,28,83,62,d2,9b,e5,5f,17,f5,ff,ff,ff,ff,ff,ff,ff,ff,4d,0e,00,00,14,01,53,43,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20" }] diff --git a/test/pgns/129285.js b/test/pgns/129285.js index fac286a..6585d77 100644 --- a/test/pgns/129285.js +++ b/test/pgns/129285.js @@ -1,4 +1,4 @@ module.exports = [{ - "expected": {"timestamp":"2018-01-26T20:06:39.369Z","prio":6,"src":3,"dst":255,"pgn":129285,"description":"Navigation - Route/WP Information","fields":{"Start RPS#":1,"nItems":3,"Database ID":0,"Route ID":0,"Supplementary Route/WP data available":1,"Route Name":"Route","list":[{"WP ID":1,"WP Name":"ORIGIN","WP Latitude":39.0763753,"WP Longitude":-76.4780091},{"WP ID":2,"WP Name":"Waypoint 165","WP Latitude":39.0554743,"WP Longitude":-76.4316303},{"WP ID":3,"WP Name":"Waypoint 166","WP Latitude":39.0545567,"WP Longitude":-76.4221445}]}}, - "input": "2018-01-26T20:06:39.369Z,6,129285,3,255,83,01,00,03,00,00,00,00,00,f7,02,52,6f,75,74,65,01,ff,01,00,02,4f,52,49,47,49,4e,01,e9,94,4a,17,c5,61,6a,d2,02,00,02,57,61,79,70,6f,69,6e,74,20,31,36,35,01,77,64,47,17,71,75,71,d2,03,00,02,57,61,79,70,6f,69,6e,74,20,31,36,36,01,9f,40,47,17,fb,e7,72,d2" + "expected": {"prio":6,"pgn":129285,"dst":255,"src":3,"timestamp":"2017-04-15T16:16:45.897Z","fields":{"Start RPS#":3,"nItems":3,"Database ID":0,"Route ID":0,"Supplementary Route/WP data available":"Off","Reserved1":0,"Route Name":"Route","list":[{"WP ID":3,"WP Name":"ORIGIN","WP Latitude":39.0525373,"WP Longitude":-76.4183194},{"WP ID":4,"WP Name":"Waypoint 168","WP Latitude":39.0598473,"WP Longitude":-76.2794236},{"WP ID":5,"WP Name":"Waypoint 245","WP Latitude":39.0190642,"WP Longitude":-76.2520773}]},"description":"Navigation - Route/WP Information"}, + "input": "2017-04-15T16:16:45.897Z,6,129285,3,255,83,03,00,03,00,00,00,00,00,07,07,01,52,6f,75,74,65,ff,03,00,08,01,4f,52,49,47,49,4e,bd,f1,46,17,66,7d,73,d2,04,00,0e,01,57,61,79,70,6f,69,6e,74,20,31,36,38,49,0f,48,17,04,af,88,d2,05,00,0e,01,57,61,79,70,6f,69,6e,74,20,32,34,35,32,d6,41,17,3b,db,8c,d2" }] diff --git a/test/pgns/129540.js b/test/pgns/129540.js index 61f0f7f..0ee4ba6 100644 --- a/test/pgns/129540.js +++ b/test/pgns/129540.js @@ -2,7 +2,7 @@ module.exports = [{ "expected": {"timestamp":"2017-04-15T14:57:58.469Z","prio":6,"src":3,"dst":255,"pgn":129540,"description":"GNSS Sats in View","fields":{"SID":184,"Sats in View":18,"list":[{"PRN":3,"Elevation":0.5585,"Azimuth":5.3407,"SNR":31,"Range residuals":0,"Status":"Used+Diff"},{"PRN":4,"Elevation":1.0297,"Azimuth":3.002,"SNR":28,"Range residuals":0,"Status":"Used+Diff"},{"PRN":10,"Elevation":0.1047,"Azimuth":2.8972,"SNR":28,"Range residuals":0,"Status":"Used+Diff"},{"PRN":14,"Elevation":1.1519,"Azimuth":1.5359,"SNR":30,"Range residuals":0,"Status":"Used+Diff"},{"PRN":16,"Elevation":0.4014,"Azimuth":3.4383,"SNR":33,"Range residuals":0,"Status":"Used+Diff"},{"PRN":22,"Elevation":0.8029,"Azimuth":4.8346,"SNR":31,"Range residuals":0,"Status":"Used+Diff"},{"PRN":25,"Elevation":0.4538,"Azimuth":0.7679,"SNR":33,"Range residuals":0,"Status":"Used+Diff"},{"PRN":26,"Elevation":0.9076,"Azimuth":3.2463,"SNR":26,"Range residuals":0,"Status":"Used+Diff"},{"PRN":31,"Elevation":1.2217,"Azimuth":0.2269,"SNR":31,"Range residuals":0,"Status":"Used+Diff"},{"PRN":67,"Elevation":0.7505,"Azimuth":2.7751,"SNR":32,"Range residuals":0,"Status":"Used+Diff"},{"PRN":68,"Elevation":1.309,"Azimuth":5.2709,"SNR":34,"Range residuals":0,"Status":"Used+Diff"},{"PRN":69,"Elevation":0.4014,"Azimuth":5.7072,"SNR":26,"Range residuals":0,"Status":"Used+Diff"},{"PRN":77,"Elevation":0.5934,"Azimuth":0.6109,"SNR":29,"Range residuals":0,"Status":"Used+Diff"},{"PRN":78,"Elevation":1.2392,"Azimuth":5.2011,"SNR":27,"Range residuals":0,"Status":"Used+Diff"},{"PRN":79,"Elevation":0.6632,"Azimuth":4.2761,"SNR":35,"Range residuals":0,"Status":"Used+Diff"},{"PRN":46,"Elevation":0.6632,"Azimuth":3.6826,"SNR":30,"Range residuals":0,"Status":"Used+Diff"},{"PRN":48,"Elevation":0.2967,"Azimuth":4.311,"SNR":29,"Range residuals":0,"Status":"Used+Diff"},{"PRN":51,"Elevation":0.6109,"Azimuth":3.9095,"SNR":35,"Range residuals":0,"Status":"Used+Diff"}]}}, "input": "2017-04-15T14:57:58.469Z,6,129540,3,255,219,b8,ff,12,03,d1,15,9f,d0,1c,0c,00,00,00,00,f5,04,39,28,44,75,f0,0a,00,00,00,00,f5,0a,17,04,2c,71,f0,0a,00,00,00,00,f5,0e,ff,2c,ff,3b,b8,0b,00,00,00,00,f5,10,ae,0f,4f,86,e4,0c,00,00,00,00,f5,16,5d,1f,da,bc,1c,0c,00,00,00,00,f5,19,ba,11,ff,1d,e4,0c,00,00,00,00,f5,1a,74,23,cf,7e,28,0a,00,00,00,00,f5,1f,b9,2f,dd,08,1c,0c,00,00,00,00,f5,43,51,1d,67,6c,80,0c,00,00,00,00,f5,44,22,33,e5,cd,48,0d,00,00,00,00,f5,45,ae,0f,f0,de,28,0a,00,00,00,00,f5,4d,2e,17,dd,17,54,0b,00,00,00,00,f5,4e,68,30,2b,cb,8c,0a,00,00,00,00,f5,4f,e8,19,09,a7,ac,0d,00,00,00,00,f5,2e,e8,19,da,8f,b8,0b,00,00,00,00,f5,30,97,0b,66,a8,54,0b,00,00,00,00,f5,33,dd,17,b7,98,ac,0d,00,00,00,00,f5" }, { - "expected": {"prio":6,"pgn":129540,"dst":255,"src":1,"timestamp":"2020-08-16T09:00:00.364Z","fields":{"SID":82,"Mode":2,"Sats in View":12,"list":[{"PRN":7,"Elevation":0.2443,"Azimuth":5.6199,"SNR":33,"Range residuals":0,"Status":"Used"},{"PRN":10,"Elevation":0.6632,"Azimuth":3.0543,"SNR":35,"Range residuals":0,"Status":"Used"},{"PRN":13,"Elevation":0.3141,"Azimuth":0.5934,"SNR":37,"Range residuals":0,"Status":"Used"},{"PRN":15,"Elevation":0.4363,"Azimuth":1.1693,"SNR":39,"Range residuals":0,"Status":"Used"},{"PRN":16,"Elevation":0.8028,"Azimuth":4.0142,"SNR":31,"Range residuals":0,"Status":"Used"},{"PRN":18,"Elevation":0.8203,"Azimuth":1.4311,"SNR":32,"Range residuals":0,"Status":"Used"},{"PRN":20,"Elevation":1.0471,"Azimuth":2.3038,"SNR":36,"Range residuals":0,"Status":"Used"},{"PRN":21,"Elevation":0.9599,"Azimuth":4.2935,"SNR":28,"Range residuals":0,"Status":"Used"},{"PRN":26,"Elevation":0.3316,"Azimuth":3.4557,"SNR":35,"Range residuals":0,"Status":"Used"},{"PRN":27,"Elevation":1.0471,"Azimuth":4.8869,"SNR":35,"Range residuals":0,"Status":"Used"},{"PRN":8,"Elevation":0.4886,"Azimuth":5.1661,"SNR":24,"Range residuals":0,"Status":"Used"},{"PRN":87,"Elevation":1.2217,"Azimuth":5.2359,"SNR":28,"Range residuals":0,"Status":"Used"},{"SNR":2.55}]},"description":"GNSS Sats in View"}, + "expected": {"prio":6,"pgn":129540,"dst":255,"src":1,"timestamp":"2020-08-16T09:00:00.364Z","fields":{"SID":82,"Range Residual Mode":2,"Sats in View":12,"list":[{"PRN":7,"Elevation":0.2443,"Azimuth":5.6199,"SNR":33,"Range residuals":0,"Status":"Used"},{"PRN":10,"Elevation":0.6632,"Azimuth":3.0543,"SNR":35,"Range residuals":0,"Status":"Used"},{"PRN":13,"Elevation":0.3141,"Azimuth":0.5934,"SNR":37,"Range residuals":0,"Status":"Used"},{"PRN":15,"Elevation":0.4363,"Azimuth":1.1693,"SNR":39,"Range residuals":0,"Status":"Used"},{"PRN":16,"Elevation":0.8028,"Azimuth":4.0142,"SNR":31,"Range residuals":0,"Status":"Used"},{"PRN":18,"Elevation":0.8203,"Azimuth":1.4311,"SNR":32,"Range residuals":0,"Status":"Used"},{"PRN":20,"Elevation":1.0471,"Azimuth":2.3038,"SNR":36,"Range residuals":0,"Status":"Used"},{"PRN":21,"Elevation":0.9599,"Azimuth":4.2935,"SNR":28,"Range residuals":0,"Status":"Used"},{"PRN":26,"Elevation":0.3316,"Azimuth":3.4557,"SNR":35,"Range residuals":0,"Status":"Used"},{"PRN":27,"Elevation":1.0471,"Azimuth":4.8869,"SNR":35,"Range residuals":0,"Status":"Used"},{"PRN":8,"Elevation":0.4886,"Azimuth":5.1661,"SNR":24,"Range residuals":0,"Status":"Used"},{"PRN":87,"Elevation":1.2217,"Azimuth":5.2359,"SNR":28,"Range residuals":0,"Status":"Used"},{"SNR":2.55,"Elevation": -0.0001}]},"description":"GNSS Sats in View"}, "format": 0, "input": [ '2020-08-16T09:00:00.333Z,6,129540,1,255,8,20,93,52,fe,0c,07,8b,09', diff --git a/test/pgns/129793.js b/test/pgns/129793.js index 97e4aac..2c11862 100644 --- a/test/pgns/129793.js +++ b/test/pgns/129793.js @@ -1,4 +1,4 @@ module.exports = [{ - "expected": {"timestamp":"2017-04-15T14:58:00.590Z","prio":7,"src":43,"dst":255,"pgn":129793,"description":"AIS UTC and Date Report","fields":{"Message ID":4,"Repeat Indicator":"Initial","User ID":3660611,"Longitude":-76.4541382,"Latitude":38.9789700,"Position Accuracy":"High","RAIM":"in use", "Position Time": "14:58:00","Communication State":"82201","AIS Transceiver information":"Channel A VDL reception","Position Date":"2017.04.15","Spare":"0"}}, - "input": "2017-04-15T14:58:00.590Z,7,129793,43,255,26,04,43,db,37,00,3a,06,6e,d2,04,b8,3b,17,ff,80,6f,1d,20,19,41,01,77,43,ff,00,ff" + "expected": {"timestamp":"2017-04-15T14:58:00.590Z","prio":7,"src":43,"dst":255,"pgn":129793,"description":"AIS UTC and Date Report","fields":{"Message ID":"Base station report","Repeat Indicator":"Initial","User ID":3660611,"Longitude":-76.4541382,"Latitude":38.9789700,"Position Accuracy":"High","RAIM":"in use", "Position Time": "14:58:00","Communication State":"82201","AIS Transceiver information":"Channel A VDL reception","Position Date":"2017.04.15","Spare":0}}, + "input": "2017-04-15T14:58:00.590Z,7,129793,43,255,25,04,43,db,37,00,3a,06,6e,d2,04,b8,3b,17,ff,80,6f,1d,20,19,41,01,77,43,ff,00" }] diff --git a/test/pgns/129794.js b/test/pgns/129794.js index 807ab87..e245104 100644 --- a/test/pgns/129794.js +++ b/test/pgns/129794.js @@ -1,4 +1,4 @@ module.exports = [{ - "expected": {"timestamp":"2017-04-15T14:58:37.235Z","prio":6,"src":43,"dst":255,"pgn":129794,"description":"AIS Class A Static and Voyage Related Data","fields":{"Message ID":5,"Repeat indicator":"Initial","User ID":367307850,"IMO number":0,"Callsign":"WDD9171","Name":"ATLANTIC COAST","Type of ship":"Tug","Length":30.0,"Beam":7.0,"Position reference from Starboard":0.0,"Position reference from Bow":9.0,"ETA Date":"2018.03.01", "ETA Time": "06:00:00","Draft":4.20,"Destination":"BALTIMORE","AIS version indicator":"ITU-R M.1371-1","GNSS type":"GPS","DTE":"available","AIS Transceiver information":"Channel B VDL reception","Reserved1": "1"}}, + "expected": {"timestamp":"2017-04-15T14:58:37.235Z","prio":6,"src":43,"dst":255,"pgn":129794,"description":"AIS Class A Static and Voyage Related Data","fields":{"Message ID":"Static and voyage related data","Repeat Indicator":"Initial","User ID":367307850,"IMO number":0,"Callsign":"WDD9171","Name":"ATLANTIC COAST","Type of ship":"Tug","Length":30.0,"Beam":7.0,"Position reference from Starboard":0.0,"Position reference from Bow":9.0,"ETA Date":"2018.03.01", "ETA Time": "06:00:00","Draft":4.20,"Destination":"BALTIMORE","AIS version indicator":"ITU-R M.1371-1","GNSS type":"GPS","DTE":"Available","AIS Transceiver information":"Channel B VDL reception","Reserved1": 1}}, "input": "2017-04-15T14:58:37.235Z,6,129794,43,255,75,05,4a,ac,e4,15,00,00,00,00,57,44,44,39,31,37,31,41,54,4c,41,4e,54,49,43,20,43,4f,41,53,54,ff,ff,ff,ff,ff,ff,34,2c,01,46,00,00,00,5a,00,b7,44,00,e6,df,0c,a4,01,42,41,4c,54,49,4d,4f,52,45,ff,ff,ff,ff,ff,ff,ff,ff,ff,ff,ff,84,e1" }] diff --git a/test/pgns/129798.js b/test/pgns/129798.js new file mode 100644 index 0000000..89d0255 --- /dev/null +++ b/test/pgns/129798.js @@ -0,0 +1,4 @@ +module.exports = [{ + "expected":{"prio":4,"pgn":129798,"dst":255,"src":43,"timestamp":"2017-07-20T16:50:11.352Z","fields":{"Message ID":"Standard SAR aircraft position report","Repeat Indicator":"Initial","User ID":100046,"Longitude":-75.8338099,"Latitude":39.6475617,"Position Accuracy":"High","RAIM":"in use","Time Stamp":"10","COG":2.227,"SOG":694.4,"Communication State":"33188","AIS Transceiver information":"Channel A VDL reception","Altitude":796,"Reserved for Regional Applications":"0","DTE":"Not available","Reserved1":0},"description":"AIS SAR Aircraft Position Report"}, + "input": "2017-07-20T16:50:11.352Z,4,129798,43,255,27,09,ce,86,01,00,cd,ad,cc,d2,e1,bc,a1,17,2b,fe,56,20,1b,a4,81,00,f0,36,01,00,00,01" +}] diff --git a/test/pgns/129809.js b/test/pgns/129809.js index 932d398..05186c1 100644 --- a/test/pgns/129809.js +++ b/test/pgns/129809.js @@ -1,4 +1,4 @@ module.exports = [{ - "expected": {"timestamp":"2019-04-15T15:16:46.572Z","prio":6,"pgn":129809,"src":43,"dst":255,"fields":{"Message ID":24,"Repeat indicator":"Initial","User ID":338184312,"Name":"WILHELM","AIS Transceiver information":"Channel A VDL transmission","Reserved1":"0"},"description":"AIS Class B static data (msg 24 Part A)"}, + "expected": {"timestamp":"2019-04-15T15:16:46.572Z","prio":6,"pgn":129809,"src":43,"dst":255,"fields":{"Message ID":"Static data report","Repeat Indicator":"Initial","User ID":338184312,"Name":"WILHELM","AIS Transceiver information":"Channel A VDL transmission","Reserved1":0},"description":"AIS Class B static data (msg 24 Part A)"}, "input": "2019-04-15T15:16:46.572Z,6,129809,43,255,27,18,78,48,28,14,57,49,4c,48,45,4c,4d,ff,ff,ff,ff,ff,ff,ff,ff,ff,ff,ff,ff,ff,02,ff" }] diff --git a/test/pgns/129810.js b/test/pgns/129810.js index 24f5974..cac5f36 100644 --- a/test/pgns/129810.js +++ b/test/pgns/129810.js @@ -1,4 +1,4 @@ module.exports = [{ - "expected": {"timestamp":"2019-04-15T15:31:06.979Z","prio":6,"pgn":129810,"src":43,"dst":255,"fields":{"Message ID":24,"Repeat indicator":"Initial","User ID":338254261,"Type of ship":"Pleasure","Vendor ID":"GARMIN","Callsign":"","Length":14,"Beam":27,"Position reference from Starboard":25,"Position reference from Bow":6,"Mothership User ID":0,"Reserved1":"0","Spare":0,"AIS Transceiver information":"Channel B VDL reception","Reserved2":"0"},"description":"AIS Class B static data (msg 24 Part B)"}, + "expected": {"timestamp":"2019-04-15T15:31:06.979Z","prio":6,"pgn":129810,"src":43,"dst":255,"fields":{"Message ID":"Static data report","Repeat Indicator":"Initial","User ID":338254261,"Type of ship":"Pleasure","Vendor ID":"GARMIN","Callsign":"","Length":14,"Beam":27,"Position reference from Starboard":25,"Position reference from Bow":6,"Mothership User ID":0,"Reserved1":0,"Spare":0,"AIS Transceiver information":"Channel B VDL reception","Reserved2":0},"description":"AIS Class B static data (msg 24 Part B)"}, "input": "2019-04-15T15:31:06.979Z,6,129810,43,255,35,18,b5,59,29,14,25,47,41,52,4d,49,4e,ff,40,40,40,40,40,40,40,8c,00,0e,01,fa,00,3c,00,00,00,00,00,00,01,ff" }] diff --git a/test/pgns/130310.js b/test/pgns/130310.js index 0589e2f..37fb6ad 100644 --- a/test/pgns/130310.js +++ b/test/pgns/130310.js @@ -1,4 +1,4 @@ module.exports = [{ - "expected": {"timestamp":"2016-02-28T19:57:02.824Z","prio":5,"src":130,"dst":255,"pgn":130310,"description":"Environmental Parameters","fields":{"SID":4,"Outside Ambient Air Temperature":300.85,"Atmospheric Pressure":101000}}, + "expected": {"timestamp":"2016-02-28T19:57:02.824Z","prio":5,"src":130,"dst":255,"pgn":130310,"description":"Environmental Parameters (obsolete)","fields":{"SID":4,"Outside Ambient Air Temperature":300.85,"Atmospheric Pressure":101000}}, "input": "2016-02-28T19:57:02.824Z,5,130310,130,255,8,04,ff,ff,85,75,f2,03,ff" }] diff --git a/test/pgns/130311.js b/test/pgns/130311.js index 744dfc0..5c1e67b 100644 --- a/test/pgns/130311.js +++ b/test/pgns/130311.js @@ -1,4 +1,4 @@ module.exports = [{ - "expected": {"timestamp":"2017-04-15T14:57:58.469Z","prio":5,"src":35,"dst":255,"pgn":130311,"description":"Environmental Parameters","fields":{"SID":20}}, + "expected": {"timestamp":"2017-04-15T14:57:58.469Z","prio":5,"src":35,"dst":255,"pgn":130311,"description":"Environmental Parameters","fields":{"SID":20,"Humidity": 131.068}}, "input": "2017-04-15T14:57:58.469Z,5,130311,35,255,8,14,ff,ff,ff,ff,7f,ff,ff" }] diff --git a/test/pgns/130313.js b/test/pgns/130313.js index d65b0ac..fdeea86 100644 --- a/test/pgns/130313.js +++ b/test/pgns/130313.js @@ -1,4 +1,4 @@ module.exports = [{ - "expected": {"timestamp":"2016-02-28T19:57:03.053Z","prio":5,"src":130,"dst":255,"pgn":130313,"description":"Humidity","fields":{"SID":23,"Instance":0,"Source":"Outside","Actual Humidity":60.116}}, + "expected": {"timestamp":"2016-02-28T19:57:03.053Z","prio":5,"src":130,"dst":255,"pgn":130313,"description":"Humidity","fields":{"SID":23,"Instance":0,"Source":"Outside","Actual Humidity":60.116,"Set Humidity": 131.068}}, "input": "2016-02-28T19:57:03.053Z,5,130313,130,255,8,17,00,01,b5,3a,ff,7f,ff" }] diff --git a/test/pgns/130820.js b/test/pgns/130820.js index e940dbc..7f178c7 100644 --- a/test/pgns/130820.js +++ b/test/pgns/130820.js @@ -1,7 +1,7 @@ module.exports = [{ - "expected": {"timestamp":"2017-04-15T14:57:58.469Z","prio":7,"src":10,"dst":255,"pgn":130820,"description":"Fusion: Power State","fields":{"Manufacturer Code":"Fusion","Industry Code":"Marine Industry","Message ID":"Power","A":128,"State":"On"}}, + "expected": {"timestamp":"2017-04-15T14:57:58.469Z","prio":7,"src":10,"dst":255,"pgn":130820,"description":"Fusion: Power State","fields":{"Manufacturer Code":"Fusion Electronics","Industry Code":"Marine Industry","Message ID":"Power","A":128,"State":"On"}}, "input": "2017-04-15T14:57:58.469Z,7,130820,10,255,5,a3,99,20,80,01" },{ - "expected": {"prio":7,"pgn":130820,"dst":255,"src":11,"timestamp":"2023-03-30T18:28:03.510Z","fields":{"Manufacturer Code":"Fusion","Industry Code":"Marine Industry","Message ID":"Source","A":128,"Source ID":1,"Current Source ID":11,"D":1,"E":197,"Source":"FM"},"description":"Fusion: Source Name"}, + "expected": {"prio":7,"pgn":130820,"dst":255,"src":11,"timestamp":"2023-03-30T18:28:03.510Z","fields":{"Manufacturer Code":"Fusion Electronics","Industry Code":"Marine Industry","Message ID":"Source","A":128,"Source ID":1,"Current Source ID":11,"D":1,"E":197,"Source":"FM"},"description":"Fusion: Source Name"}, "input": "2023-03-30T18:28:03.510Z,7,130820,11,255,12,a3,99,02,80,01,0b,01,c5,02,46,4d,00"} ] diff --git a/test/pgns/130821.js b/test/pgns/130821.js index 03aa0fe..069b61a 100644 --- a/test/pgns/130821.js +++ b/test/pgns/130821.js @@ -1,4 +1,4 @@ module.exports = [{ - "expected": {"timestamp":"2016-02-28T19:57:04.816Z","prio":7,"src":8,"dst":255,"pgn":130821,"description":"Furuno: Unknown","fields":{"Manufacturer Code":"Furuno","Industry Code":"Marine Industry","SID":19,"A":0,"B":207,"C":227,"D":54,"E":17,"F":0,"G":190,"H":160,"I":192}}, + "expected": {"timestamp":"2016-02-28T19:57:04.816Z","prio":7,"src":8,"dst":255,"pgn":130821,"description":"Furuno: Unknown 130821","fields":{"Manufacturer Code":"Furuno","Industry Code":"Marine Industry","SID":19,"A":0,"B":207,"C":227,"D":54,"E":17,"F":0,"G":190,"H":160,"I":192}}, "input": "2016-02-28T19:57:04.816Z,7,130821,8,255,12,3f,9f,13,00,cf,e3,36,11,00,be,a0,c0" }] diff --git a/test/pgns/130842.js b/test/pgns/130842.js index 0a0904c..ba2a4c4 100644 --- a/test/pgns/130842.js +++ b/test/pgns/130842.js @@ -1,4 +1,4 @@ module.exports = [{ - "expected": {"timestamp":"2017-04-15T15:00:51.300Z","prio":6,"src":43,"dst":255,"pgn":130842,"description":"Simnet: AIS Class B static data (msg 24 Part A)","fields":{"Manufacturer Code":"Simrad","Industry Code":"Marine Industry","Message ID":"Msg 24 Part A","Repeat indicator":"Second retransmission","E":24,"User ID":338184312,"Name":"WILHELM"}}, + "expected": {"timestamp":"2017-04-15T15:00:51.300Z","prio":6,"src":43,"dst":255,"pgn":130842,"description":"Simnet: AIS Class B static data (msg 24 Part A)","fields":{"Manufacturer Code":"Simrad","Industry Code":"Marine Industry","Message ID":"Msg 24 Part A","Repeat Indicator":"Second retransmission","E":24,"User ID":338184312,"Name":"WILHELM"}}, "input": "2017-04-15T15:00:51.300Z,6,130842,43,255,29,41,9f,80,ff,18,78,48,28,14,57,49,4c,48,45,4c,4d,ff,ff,ff,ff,ff,ff,ff,ff,ff,ff,ff,ff,ff" }] diff --git a/test/pgns/59392.js b/test/pgns/59392.js index fb3f7fb..e941351 100644 --- a/test/pgns/59392.js +++ b/test/pgns/59392.js @@ -1,4 +1,4 @@ module.exports = [{ - "expected": {"timestamp":"2016-02-28T19:57:02.825Z","prio":6,"src":60,"dst":41,"pgn":59392,"description":"ISO Acknowledgement","fields":{"Control":"NAK","PGN":126998, "Reserved1": "16777215"}}, + "expected": {"timestamp":"2016-02-28T19:57:02.825Z","prio":6,"src":60,"dst":41,"pgn":59392,"description":"ISO Acknowledgement","fields":{"Control":"NAK","PGN":126998, "Reserved1": 16777215}}, "input": "2016-02-28T19:57:02.825Z,6,59392,60,41,8,01,ff,ff,ff,ff,16,f0,01" }] diff --git a/test/pgns/60928.js b/test/pgns/60928.js index 92a003a..9e0b1d5 100644 --- a/test/pgns/60928.js +++ b/test/pgns/60928.js @@ -1,4 +1,4 @@ module.exports = [{ - "expected": {"timestamp":"2017-04-15T14:58:08.982Z","prio":6,"src":44,"dst":172,"pgn":60928,"description":"ISO Address Claim","fields":{"Unique Number":"1072", "Manufacturer Code":"Yacht Devices","Device Instance Lower":0,"Device Instance Upper":0,"Device Function":130,"Device Class":"Sensor Communication Interface","System Instance":0,"Industry Group":"Marine","Reserved1": "1","Reserved2": "1"}}, + "expected": {"timestamp":"2017-04-15T14:58:08.982Z","prio":6,"src":44,"dst":172,"pgn":60928,"description":"ISO Address Claim","fields":{"Unique Number":1072, "Manufacturer Code":"Yacht Devices","Device Instance Lower":0,"Device Instance Upper":0,"Device Function":130,"Device Class":"Sensor Communication Interface","System Instance":0,"Industry Group":"Marine","Spare": 1,"Arbitrary address capable": 1}}, "input": "2017-04-15T14:58:08.982Z,6,60928,44,172,8,30,04,a0,59,00,82,97,c0" }] diff --git a/test/pgns/65379.js b/test/pgns/65379.js index d4dac7a..8987d27 100644 --- a/test/pgns/65379.js +++ b/test/pgns/65379.js @@ -1,4 +1,4 @@ module.exports = [{ - "expected": {"timestamp":"2017-04-15T14:57:59.360Z","prio":7,"src":204,"dst":255,"pgn":65379,"description":"Seatalk: Pilot Mode","fields":{"Manufacturer Code":"Raymarine","Industry Code":"Marine Industry","Pilot Mode":"129","Sub Mode":"1","Pilot Mode Data":"0","Reserved2": "16777215"}}, + "expected": {"timestamp":"2017-04-15T14:57:59.360Z","prio":7,"src":204,"dst":255,"pgn":65379,"description":"Seatalk: Pilot Mode","fields":{"Manufacturer Code":"Raymarine","Industry Code":"Marine Industry","Pilot Mode":"129","Sub Mode":"1","Pilot Mode Data":"0","Reserved2": 16777215}}, "input": "2017-04-15T14:57:59.360Z,7,65379,204,255,8,3b,9f,81,01,00,ff,ff,ff" }] diff --git a/test/pgns/65408.js b/test/pgns/65408.js index 3c90fa1..b14cc1d 100644 --- a/test/pgns/65408.js +++ b/test/pgns/65408.js @@ -1,4 +1,4 @@ module.exports = [{ - "expected": {"timestamp":"2016-02-28T19:57:02.828Z","prio":7,"src":36,"dst":255,"pgn":65408,"description":"Airmar: Depth Quality Factor","fields":{"Manufacturer Code":"Airmar","Industry Code":"Marine Industry","SID":22,"Depth Quality Factor":10}}, + "expected": {"timestamp":"2016-02-28T19:57:02.828Z","prio":7,"src":36,"dst":255,"pgn":65408,"description":"Airmar: Depth Quality Factor","fields":{"Manufacturer Code":"Airmar","Industry Code":"Marine Industry","SID":22,"Depth Quality Factor":"Quality 100%"}}, "input": "2016-02-28T19:57:02.828Z,7,65408,36,255,8,87,98,16,fa,ff,ff,ff,ff" }]