Skip to content

Commit

Permalink
refactor: pcdin implmentation (#45)
Browse files Browse the repository at this point in the history
  • Loading branch information
sbender9 authored Feb 26, 2019
1 parent 2eadaa5 commit 63c597e
Show file tree
Hide file tree
Showing 2 changed files with 36 additions and 21 deletions.
55 changes: 35 additions & 20 deletions lib/fromPgn.js
Original file line number Diff line number Diff line change
Expand Up @@ -262,6 +262,18 @@ class Parser extends EventEmitter {
}
}

isN2KOver0183(sentence) {
return sentence.startsWith('$PCDIN,')
}

parseN2KOver0183(sentence) {
if ( sentence.startsWith('$PCDIN,') ) {
this.parsePCDIN(sentence)
return true
}
return false
}

//Yacht Devices NMEA2000 Wifi gateway
parseYDWG02(pgn_data) {
const parts = pgn_data.split(' ')
Expand All @@ -275,6 +287,28 @@ class Parser extends EventEmitter {
}
}

parsePCDIN(pgn_data) {
var split = pgn_data.split(',')

var pgn = {}
pgn.pgn = parseInt(split[1], 16)
pgn.timestamp = new Date(parseInt(split[2], 16)).toISOString()
pgn.src = parseInt(split[3], 16)
pgn.dst = 255
pgn.prio = 0

var data = split[4]
if ( data.indexOf('*') != -1 ) {
data = data.split('*')[0]
}

const bs = new BitStream(Buffer.from(data, 'hex'))

if ( this._parse(pgn, bs, data.length/2) ) {
debug('parsed pgn %j', pgn)
}
}

parseString (pgn_data) {
if (typeof pgn_data === 'string' && pgn_data.trim().length > 0) {
var split = pgn_data.split(',')
Expand All @@ -283,26 +317,7 @@ class Parser extends EventEmitter {
var buffer
var len

if ( split[0] === '$PCDIN' ) {
// $PCDIN,01F119,00000000,0F,2AAF00D1067414FF*59

pgn.pgn = parseInt(split[1], 16)
pgn.timestamp = new Date(parseInt(split[2], 16)).toISOString()
pgn.src = parseInt(split[3], 16)
pgn.dst = 255
pgn.prio = 0

var data = split[4]
if ( data.indexOf('*') != -1 ) {
data = data.split('*')[0]
}
let array = new Int16Array(data.length/2)
for ( var i = 0, j = 0; i < data.length; i += 2, j++ ) {
array[j] = parseInt(data.slice(i, i+2), 16)
}
buffer = new Buffer(array)
len = data.length/2
} else if ( split[0] === '!PDGY' ) {
if ( split[0] === '!PDGY' ) {
//iKonvert
pgn.pgn = Number(split[1])
pgn.prio = Number(split[2])
Expand Down
2 changes: 1 addition & 1 deletion test/pcdin.js
Original file line number Diff line number Diff line change
Expand Up @@ -47,6 +47,6 @@ describe('from pcdin data converts', function () {
}
})

fromPgn.parseString(pcdin)
fromPgn.parseN2KOver0183(pcdin)
})
})

0 comments on commit 63c597e

Please sign in to comment.