@canboat/canboatjs 2.0.1 → 2.1.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/index.js +5 -1
- package/lib/fromPgn.js +2 -9
- package/lib/pgns.js +80 -1
- package/lib/toPgn.js +2 -8
- package/package.json +1 -1
package/index.js
CHANGED
|
@@ -16,6 +16,8 @@
|
|
|
16
16
|
* limitations under the License.
|
|
17
17
|
*/
|
|
18
18
|
|
|
19
|
+
const pgns = require('./lib/pgns')
|
|
20
|
+
|
|
19
21
|
module.exports = {
|
|
20
22
|
FromPgn: require('./lib/fromPgn').Parser,
|
|
21
23
|
parseN2kString: require('./lib/stringMsg').parseN2kString,
|
|
@@ -37,7 +39,9 @@ module.exports = {
|
|
|
37
39
|
VenusMQTT: require('./lib/venus-mqtt'),
|
|
38
40
|
discover: require('./lib/discovery'),
|
|
39
41
|
SimpleCan: require('./lib/simpleCan'),
|
|
40
|
-
addCustomPgn:
|
|
42
|
+
addCustomPgn: pgns.addCustomPgn,
|
|
43
|
+
lookupEnumerationValue: pgns.lookupEnumerationValue,
|
|
44
|
+
lookupEnumerationName: pgns.lookupEnumerationName
|
|
41
45
|
}
|
|
42
46
|
|
|
43
47
|
try {
|
package/lib/fromPgn.js
CHANGED
|
@@ -19,7 +19,7 @@ const trace = require('debug')('canboatjs:fromPgn:trace')
|
|
|
19
19
|
const EventEmitter = require('events')
|
|
20
20
|
const pkg = require('../package.json')
|
|
21
21
|
const _ = require('lodash')
|
|
22
|
-
const { pgns, getCustomPgn, addCustomPgn } = require('./pgns')
|
|
22
|
+
const { pgns, getCustomPgn, addCustomPgn, lookupEnumNameForField } = require('./pgns')
|
|
23
23
|
const BitStream = require('bit-buffer').BitStream
|
|
24
24
|
const BitView = require('bit-buffer').BitView
|
|
25
25
|
const Int64LE = require('int64-buffer').Int64LE
|
|
@@ -543,15 +543,8 @@ function pad(n, p, c)
|
|
|
543
543
|
}
|
|
544
544
|
|
|
545
545
|
function lookup(field, value) {
|
|
546
|
-
|
|
547
|
-
field.value2name = {};
|
|
548
|
-
field.EnumValues.forEach(function(enumPair) {
|
|
549
|
-
field.value2name[Number(enumPair.value)] = enumPair.name
|
|
550
|
-
})
|
|
551
|
-
}
|
|
552
|
-
var name = field.value2name[value]
|
|
546
|
+
var name = lookupEnumNameForField(field, value)
|
|
553
547
|
return name ? name : value
|
|
554
|
-
//return name
|
|
555
548
|
}
|
|
556
549
|
|
|
557
550
|
function lookupBitField(field, value) {
|
package/lib/pgns.js
CHANGED
|
@@ -35,14 +35,91 @@ function organizePGNs() {
|
|
|
35
35
|
return res
|
|
36
36
|
}
|
|
37
37
|
|
|
38
|
+
function getField(pgn, name) {
|
|
39
|
+
return pgn.Fields.find(f => f.Name === name)
|
|
40
|
+
}
|
|
41
|
+
|
|
42
|
+
function getEnumeration(name) {
|
|
43
|
+
const enumeration = lookupEnumerations[name]
|
|
44
|
+
if ( enumeration ) {
|
|
45
|
+
if ( !enumeration.value2name ) {
|
|
46
|
+
enumeration.value2name = {}
|
|
47
|
+
enumeration.EnumValues.forEach((enumPair) => {
|
|
48
|
+
enumeration.value2name[Number(enumPair.Value)] = enumPair.Name
|
|
49
|
+
})
|
|
50
|
+
|
|
51
|
+
enumeration.name2value = {}
|
|
52
|
+
enumeration.EnumValues.forEach((enumPair) => {
|
|
53
|
+
enumeration.name2value[enumPair.Name] = Number(enumPair.Value)
|
|
54
|
+
})
|
|
55
|
+
}
|
|
56
|
+
}
|
|
57
|
+
return enumeration
|
|
58
|
+
}
|
|
59
|
+
|
|
60
|
+
function lookupEnumerationName(enumName, value) {
|
|
61
|
+
const enumeration = getEnumeration(enumName)
|
|
62
|
+
return enumeration.value2name[value]
|
|
63
|
+
}
|
|
64
|
+
|
|
65
|
+
function lookupEnumerationValue(enumName, name) {
|
|
66
|
+
const enumeration = getEnumeration(enumName)
|
|
67
|
+
return enumeration.name2value[name]
|
|
68
|
+
}
|
|
69
|
+
|
|
70
|
+
function getValue2Name(field) {
|
|
71
|
+
if (!field.value2name && field.EnumValues) {
|
|
72
|
+
field.value2name = {};
|
|
73
|
+
field.EnumValues.forEach(function(enumPair) {
|
|
74
|
+
field.value2name[Number(enumPair.value)] = enumPair.name
|
|
75
|
+
})
|
|
76
|
+
}
|
|
77
|
+
return field.value2name
|
|
78
|
+
}
|
|
79
|
+
|
|
80
|
+
function getName2Value(field) {
|
|
81
|
+
if (!field.name2value && field.EnumValues) {
|
|
82
|
+
field.name2value = {};
|
|
83
|
+
field.EnumValues.forEach(function(enumPair) {
|
|
84
|
+
field.name2value[enumPair.name] = Number(enumPair.value)
|
|
85
|
+
})
|
|
86
|
+
}
|
|
87
|
+
return field.name2value
|
|
88
|
+
}
|
|
89
|
+
|
|
90
|
+
function lookupEnumNameForField(field, value) {
|
|
91
|
+
let value2name = getValue2Name(field)
|
|
92
|
+
return value2name && value2name[value]
|
|
93
|
+
}
|
|
94
|
+
|
|
95
|
+
function lookupEnumValueForField(field, stringValue) {
|
|
96
|
+
let name2value = getName2Value(field)
|
|
97
|
+
return name2value && name2value[stringValue]
|
|
98
|
+
}
|
|
99
|
+
|
|
100
|
+
function organizeEnumerations() {
|
|
101
|
+
let enums = require('@canboat/pgns/canboat').LookupEnumerations
|
|
102
|
+
let map = {}
|
|
103
|
+
enums.forEach(e => {
|
|
104
|
+
map[e.Name] = e
|
|
105
|
+
})
|
|
106
|
+
return map
|
|
107
|
+
}
|
|
108
|
+
|
|
109
|
+
const lookupEnumerations = organizeEnumerations()
|
|
38
110
|
const organizedPGNs = organizePGNs()
|
|
39
111
|
const getPgn = pgn => organizedPGNs[pgn]
|
|
112
|
+
const getPgn0 = flow(getPgn, first)
|
|
40
113
|
const customPgns = {}
|
|
41
114
|
|
|
42
115
|
module.exports = {
|
|
43
116
|
getPgn,
|
|
44
|
-
getPgn0
|
|
117
|
+
getPgn0,
|
|
45
118
|
pgns: organizedPGNs,
|
|
119
|
+
lookupEnumValueForField,
|
|
120
|
+
lookupEnumNameForField,
|
|
121
|
+
lookupEnumerationName,
|
|
122
|
+
lookupEnumerationValue,
|
|
46
123
|
addCustomPgn: (pgn) => {
|
|
47
124
|
if ( !customPgns[pgn.PGN] ) {
|
|
48
125
|
customPgns[pgn.PGN] = {
|
|
@@ -62,5 +139,7 @@ module.exports = {
|
|
|
62
139
|
},
|
|
63
140
|
getCustomPgn: (pgnNum) => {
|
|
64
141
|
return customPgns[pgnNum]
|
|
142
|
+
},
|
|
143
|
+
getEnumForField: (pgnNumber, fieldName) => {
|
|
65
144
|
}
|
|
66
145
|
}
|
package/lib/toPgn.js
CHANGED
|
@@ -15,7 +15,7 @@
|
|
|
15
15
|
*/
|
|
16
16
|
|
|
17
17
|
const { getField } = require('./fromPgn')
|
|
18
|
-
const { pgns, getCustomPgn } = require('./pgns')
|
|
18
|
+
const { pgns, getCustomPgn, lookupEnumValueForField } = require('./pgns')
|
|
19
19
|
const _ = require('lodash')
|
|
20
20
|
const BitStream = require('bit-buffer').BitStream
|
|
21
21
|
const Int64LE = require('int64-buffer').Int64LE
|
|
@@ -270,13 +270,7 @@ function writeVariableLengthField(bs, pgn_number, pgn, field, value) {
|
|
|
270
270
|
}
|
|
271
271
|
|
|
272
272
|
function lookup(field, stringValue) {
|
|
273
|
-
|
|
274
|
-
field.name2value = {};
|
|
275
|
-
field.EnumValues.forEach(function(enumPair) {
|
|
276
|
-
field.name2value[enumPair.name] = Number(enumPair.value)
|
|
277
|
-
})
|
|
278
|
-
}
|
|
279
|
-
var res = field.name2value[stringValue];
|
|
273
|
+
var res = lookupEnumValueForField(field, stringValue)
|
|
280
274
|
return _.isUndefined(res) ? stringValue : res
|
|
281
275
|
}
|
|
282
276
|
|