@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 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: require('./lib/pgns').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
- if (!field.value2name) {
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: flow(getPgn, first),
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
- if (!field.name2value) {
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
 
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@canboat/canboatjs",
3
- "version": "2.0.1",
3
+ "version": "2.1.1",
4
4
  "description": "Native javascript version of canboat",
5
5
  "main": "index.js",
6
6
  "scripts": {