@canboat/canboatjs 3.0.2 → 3.1.0

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.
Files changed (222) hide show
  1. package/.github/workflows/test.yml +2 -2
  2. package/.github/workflows/test_canboat_changes.yml +91 -0
  3. package/.husky/pre-commit +4 -0
  4. package/.mocharc.js +7 -0
  5. package/.prettierrc.json +5 -0
  6. package/README.md +2 -7
  7. package/dist/actisense-serial.d.ts +17 -0
  8. package/dist/actisense-serial.d.ts.map +1 -0
  9. package/dist/actisense-serial.js +569 -0
  10. package/dist/actisense-serial.js.map +1 -0
  11. package/dist/bin/actisense-file.d.ts +3 -0
  12. package/dist/bin/actisense-file.d.ts.map +1 -0
  13. package/dist/bin/actisense-file.js +49 -0
  14. package/dist/bin/actisense-file.js.map +1 -0
  15. package/dist/bin/actisense-n2k-tcp.d.ts +3 -0
  16. package/dist/bin/actisense-n2k-tcp.d.ts.map +1 -0
  17. package/dist/bin/actisense-n2k-tcp.js +46 -0
  18. package/dist/bin/actisense-n2k-tcp.js.map +1 -0
  19. package/dist/bin/actisense-serialjs.d.ts +3 -0
  20. package/dist/bin/actisense-serialjs.d.ts.map +1 -0
  21. package/dist/bin/actisense-serialjs.js +51 -0
  22. package/dist/bin/actisense-serialjs.js.map +1 -0
  23. package/dist/bin/analyzerjs.d.ts +3 -0
  24. package/dist/bin/analyzerjs.d.ts.map +1 -0
  25. package/dist/bin/analyzerjs.js +61 -0
  26. package/dist/bin/analyzerjs.js.map +1 -0
  27. package/dist/bin/candumpanalyzerjs.d.ts +3 -0
  28. package/dist/bin/candumpanalyzerjs.d.ts.map +1 -0
  29. package/dist/bin/candumpanalyzerjs.js +31 -0
  30. package/dist/bin/candumpanalyzerjs.js.map +1 -0
  31. package/dist/bin/candumpjs.d.ts +3 -0
  32. package/dist/bin/candumpjs.d.ts.map +1 -0
  33. package/dist/bin/candumpjs.js +73 -0
  34. package/dist/bin/candumpjs.js.map +1 -0
  35. package/dist/bin/cansend.d.ts +3 -0
  36. package/dist/bin/cansend.d.ts.map +1 -0
  37. package/dist/bin/cansend.js +123 -0
  38. package/dist/bin/cansend.js.map +1 -0
  39. package/dist/bin/ikonvert-serial.d.ts +3 -0
  40. package/dist/bin/ikonvert-serial.d.ts.map +1 -0
  41. package/dist/bin/ikonvert-serial.js +36 -0
  42. package/dist/bin/ikonvert-serial.js.map +1 -0
  43. package/dist/bin/to-pgn.d.ts +3 -0
  44. package/dist/bin/to-pgn.d.ts.map +1 -0
  45. package/dist/bin/to-pgn.js +57 -0
  46. package/dist/bin/to-pgn.js.map +1 -0
  47. package/dist/canId.d.ts +21 -0
  48. package/dist/canId.d.ts.map +1 -0
  49. package/dist/canId.js +66 -0
  50. package/dist/canId.js.map +1 -0
  51. package/dist/canId.test.d.ts +2 -0
  52. package/dist/canId.test.d.ts.map +1 -0
  53. package/dist/canId.test.js +58 -0
  54. package/dist/canId.test.js.map +1 -0
  55. package/dist/canbus.d.ts +17 -0
  56. package/dist/canbus.d.ts.map +1 -0
  57. package/dist/canbus.js +261 -0
  58. package/dist/canbus.js.map +1 -0
  59. package/dist/candevice.d.ts +23 -0
  60. package/dist/candevice.d.ts.map +1 -0
  61. package/dist/candevice.js +38 -0
  62. package/dist/candevice.js.map +1 -0
  63. package/dist/codes.d.ts +2 -0
  64. package/dist/codes.d.ts.map +1 -0
  65. package/dist/codes.js +24 -0
  66. package/dist/codes.js.map +1 -0
  67. package/dist/discovery.d.ts +17 -0
  68. package/dist/discovery.d.ts.map +1 -0
  69. package/dist/discovery.js +119 -0
  70. package/dist/discovery.js.map +1 -0
  71. package/dist/fromPgn.d.ts +51 -0
  72. package/dist/fromPgn.d.ts.map +1 -0
  73. package/dist/fromPgn.js +989 -0
  74. package/dist/fromPgn.js.map +1 -0
  75. package/dist/fromPgnStream.d.ts +17 -0
  76. package/dist/fromPgnStream.d.ts.map +1 -0
  77. package/dist/fromPgnStream.js +47 -0
  78. package/dist/fromPgnStream.js.map +1 -0
  79. package/dist/ikonvert.d.ts +17 -0
  80. package/dist/ikonvert.d.ts.map +1 -0
  81. package/dist/ikonvert.js +224 -0
  82. package/dist/ikonvert.js.map +1 -0
  83. package/dist/index.d.ts +31 -0
  84. package/dist/index.d.ts.map +1 -0
  85. package/dist/index.js +60 -0
  86. package/dist/index.js.map +1 -0
  87. package/dist/n2k-actisense.d.ts +24 -0
  88. package/dist/n2k-actisense.d.ts.map +1 -0
  89. package/dist/n2k-actisense.js +126 -0
  90. package/dist/n2k-actisense.js.map +1 -0
  91. package/dist/n2k-actisense.test.d.ts +2 -0
  92. package/dist/n2k-actisense.test.d.ts.map +1 -0
  93. package/dist/n2k-actisense.test.js +49 -0
  94. package/dist/n2k-actisense.test.js.map +1 -0
  95. package/dist/n2kDevice.d.ts +40 -0
  96. package/dist/n2kDevice.d.ts.map +1 -0
  97. package/dist/n2kDevice.js +387 -0
  98. package/dist/n2kDevice.js.map +1 -0
  99. package/dist/ncanbus.d.ts +17 -0
  100. package/dist/ncanbus.d.ts.map +1 -0
  101. package/dist/ncanbus.js +92 -0
  102. package/dist/ncanbus.js.map +1 -0
  103. package/dist/pgns.d.ts +22 -0
  104. package/dist/pgns.d.ts.map +1 -0
  105. package/dist/pgns.js +157 -0
  106. package/dist/pgns.js.map +1 -0
  107. package/dist/pgns.test.d.ts +2 -0
  108. package/dist/pgns.test.d.ts.map +1 -0
  109. package/dist/pgns.test.js +14 -0
  110. package/dist/pgns.test.js.map +1 -0
  111. package/dist/simpleCan.d.ts +17 -0
  112. package/dist/simpleCan.d.ts.map +1 -0
  113. package/dist/simpleCan.js +125 -0
  114. package/dist/simpleCan.js.map +1 -0
  115. package/dist/stringMsg.d.ts +33 -0
  116. package/dist/stringMsg.d.ts.map +1 -0
  117. package/dist/stringMsg.js +359 -0
  118. package/dist/stringMsg.js.map +1 -0
  119. package/dist/stringMsg.test.d.ts +2 -0
  120. package/dist/stringMsg.test.d.ts.map +1 -0
  121. package/dist/stringMsg.test.js +244 -0
  122. package/dist/stringMsg.test.js.map +1 -0
  123. package/dist/toPgn.d.ts +34 -0
  124. package/dist/toPgn.d.ts.map +1 -0
  125. package/dist/toPgn.js +500 -0
  126. package/dist/toPgn.js.map +1 -0
  127. package/dist/utilities.d.ts +26 -0
  128. package/dist/utilities.d.ts.map +1 -0
  129. package/dist/utilities.js +112 -0
  130. package/dist/utilities.js.map +1 -0
  131. package/dist/utilities.test.d.ts +2 -0
  132. package/dist/utilities.test.d.ts.map +1 -0
  133. package/dist/utilities.test.js +9 -0
  134. package/dist/utilities.test.js.map +1 -0
  135. package/dist/venus-mqtt.d.ts +11 -0
  136. package/dist/venus-mqtt.d.ts.map +1 -0
  137. package/dist/venus-mqtt.js +100 -0
  138. package/dist/venus-mqtt.js.map +1 -0
  139. package/dist/venus.d.ts +11 -0
  140. package/dist/venus.d.ts.map +1 -0
  141. package/dist/venus.js +71 -0
  142. package/dist/venus.js.map +1 -0
  143. package/dist/w2k01.d.ts +17 -0
  144. package/dist/w2k01.d.ts.map +1 -0
  145. package/dist/w2k01.js +119 -0
  146. package/dist/w2k01.js.map +1 -0
  147. package/dist/yddevice.d.ts +25 -0
  148. package/dist/yddevice.d.ts.map +1 -0
  149. package/dist/yddevice.js +45 -0
  150. package/dist/yddevice.js.map +1 -0
  151. package/dist/ydgw02.d.ts +17 -0
  152. package/dist/ydgw02.d.ts.map +1 -0
  153. package/dist/ydgw02.js +163 -0
  154. package/dist/ydgw02.js.map +1 -0
  155. package/dist/ydvr.d.ts +17 -0
  156. package/dist/ydvr.d.ts.map +1 -0
  157. package/dist/ydvr.js +120 -0
  158. package/dist/ydvr.js.map +1 -0
  159. package/eslint.config.js +58 -0
  160. package/jest.config.js +5 -0
  161. package/lib/actisense-serial.ts +644 -0
  162. package/lib/bin/actisense-file.ts +53 -0
  163. package/lib/bin/actisense-n2k-tcp.ts +50 -0
  164. package/lib/bin/actisense-serialjs.ts +55 -0
  165. package/{bin/analyzerjs → lib/bin/analyzerjs.ts} +16 -15
  166. package/{bin/candumpjs → lib/bin/candumpjs.ts} +19 -20
  167. package/lib/bin/cansend.ts +131 -0
  168. package/lib/bin/ikonvert-serial.ts +44 -0
  169. package/{bin/to-pgn → lib/bin/to-pgn.ts} +23 -17
  170. package/lib/bin/ydvr-file +33 -0
  171. package/lib/canId.test.js +35 -15
  172. package/lib/canId.ts +84 -0
  173. package/lib/canbus.ts +293 -0
  174. package/lib/{candevice.js → candevice.ts} +14 -21
  175. package/lib/codes.ts +21 -0
  176. package/lib/{discovery.js → discovery.ts} +32 -30
  177. package/lib/fromPgn.ts +1207 -0
  178. package/lib/{fromPgnStream.js → fromPgnStream.ts} +17 -12
  179. package/lib/{ikonvert.js → ikonvert.ts} +90 -85
  180. package/lib/index.ts +48 -0
  181. package/lib/n2k-actisense.test.js +31 -32
  182. package/lib/n2k-actisense.ts +152 -0
  183. package/lib/n2kDevice.ts +458 -0
  184. package/lib/pgns.test.ts +12 -0
  185. package/lib/pgns.ts +191 -0
  186. package/lib/simpleCan.ts +140 -0
  187. package/lib/stringMsg.test.js +58 -41
  188. package/lib/stringMsg.ts +464 -0
  189. package/lib/toPgn.ts +597 -0
  190. package/lib/{utilities.js → utilities.ts} +48 -37
  191. package/lib/venus-mqtt.js +69 -73
  192. package/lib/venus.js +8 -8
  193. package/lib/{w2k01.js → w2k01.ts} +57 -44
  194. package/lib/{yddevice.js → yddevice.ts} +18 -13
  195. package/lib/{ydgw02.js → ydgw02.ts} +55 -47
  196. package/lib/ydvr.js +65 -147
  197. package/package.json +54 -18
  198. package/tsconfig.json +19 -0
  199. package/tsconfig.tsbuildinfo +1 -0
  200. package/bin/actisense-file +0 -47
  201. package/bin/actisense-n2k-tcp +0 -45
  202. package/bin/actisense-serialjs +0 -52
  203. package/bin/candumpanalyzerjs +0 -29
  204. package/bin/cansend +0 -130
  205. package/bin/ikonvert-serial +0 -50
  206. package/bin/ydgw-analyzerjs +0 -36
  207. package/bin/ydvr-file +0 -33
  208. package/index.js +0 -53
  209. package/lib/canId.js +0 -64
  210. package/lib/canbus.js +0 -278
  211. package/lib/codes.js +0 -69
  212. package/lib/codes.test.js +0 -17
  213. package/lib/codesMfgs.json +0 -166
  214. package/lib/fromPgn.js +0 -1027
  215. package/lib/n2k-actisense.js +0 -108
  216. package/lib/n2kDevice.js +0 -390
  217. package/lib/pgns.js +0 -196
  218. package/lib/pgns.test.js +0 -13
  219. package/lib/serial.js +0 -647
  220. package/lib/simpleCan.js +0 -105
  221. package/lib/stringMsg.js +0 -339
  222. package/lib/toPgn.js +0 -518
@@ -0,0 +1,34 @@
1
+ /**
2
+ * Copyright 2018 Scott Bender (scott@scottbender.net)
3
+ *
4
+ * Licensed under the Apache License, Version 2.0 (the "License");
5
+ * you may not use this file except in compliance with the License.
6
+ * You may obtain a copy of the License at
7
+ *
8
+ * http://www.apache.org/licenses/LICENSE-2.0
9
+ *
10
+ * Unless required by applicable law or agreed to in writing, software
11
+ * distributed under the License is distributed on an "AS IS" BASIS,
12
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13
+ * See the License for the specific language governing permissions and
14
+ * limitations under the License.
15
+ */
16
+ import { PGN } from '@canboat/ts-pgns';
17
+ export declare function toPgn(data: any): Buffer | undefined;
18
+ export declare function pgnToActisenseSerialFormat(pgn: PGN): string;
19
+ export declare function pgnToActisenseN2KAsciiFormat(pgn: PGN): string;
20
+ export declare function pgnToN2KActisenseFormat(pgn: PGN): Buffer<ArrayBufferLike> | undefined;
21
+ export declare function toiKonvertSerialFormat(pgn: number, data: Buffer, dst?: number): string;
22
+ export declare function pgnToiKonvertSerialFormat(pgn: any): string | undefined;
23
+ export declare function pgnToYdgwRawFormat(info: any): string[];
24
+ export declare function pgnToYdgwFullRawFormat(info: any): string[];
25
+ export declare function pgnToPCDIN(info: any): string;
26
+ export declare function pgnToMXPGN(info: any): string;
27
+ export declare const actisenseToYdgwRawFormat: (input: string) => string[];
28
+ export declare const actisenseToYdgwFullRawFormat: (input: string) => string[];
29
+ export declare const actisenseToPCDIN: (input: string) => string;
30
+ export declare const actisenseToMXPGN: (input: string) => string;
31
+ export declare const actisenseToiKonvert: (input: string) => string;
32
+ export declare const actisenseToN2KAsciiFormat: (input: string) => string;
33
+ export declare const actisenseToN2KActisenseFormat: (...args: any[]) => any;
34
+ //# sourceMappingURL=toPgn.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"toPgn.d.ts","sourceRoot":"","sources":["../lib/toPgn.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAEH,OAAO,EAAS,GAAG,EAAE,MAAM,kBAAkB,CAAA;AAmD7C,wBAAgB,KAAK,CAAC,IAAI,EAAE,GAAG,GAAG,MAAM,GAAG,SAAS,CAuGnD;AAiND,wBAAgB,0BAA0B,CAAC,GAAG,EAAE,GAAG,UASlD;AAED,wBAAgB,4BAA4B,CAAC,GAAG,EAAE,GAAG,UASpD;AAED,wBAAgB,uBAAuB,CAAC,GAAG,EAAE,GAAG,uCAK/C;AAED,wBAAgB,sBAAsB,CAAC,GAAG,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,GAAG,SAAM,UAE1E;AAED,wBAAgB,yBAAyB,CAAC,GAAG,EAAE,GAAG,sBAKjD;AAED,wBAAgB,kBAAkB,CAAC,IAAI,EAAE,GAAG,YAE3C;AAED,wBAAgB,sBAAsB,CAAC,IAAI,EAAE,GAAG,YAE/C;AAED,wBAAgB,UAAU,CAAC,IAAI,EAAE,GAAG,UAEnC;AAED,wBAAgB,UAAU,CAAC,IAAI,EAAE,GAAG,UAEnC;AAED,eAAO,MAAM,wBAAwB,6BAAsC,CAAA;AAC3E,eAAO,MAAM,4BAA4B,6BAGxC,CAAA;AACD,eAAO,MAAM,gBAAgB,2BAAsC,CAAA;AACnE,eAAO,MAAM,gBAAgB,2BAAsC,CAAA;AACnE,eAAO,MAAM,mBAAmB,2BAAqC,CAAA;AACrE,eAAO,MAAM,yBAAyB,2BAGrC,CAAA;AACD,eAAO,MAAM,6BAA6B,yBAGzC,CAAA"}
package/dist/toPgn.js ADDED
@@ -0,0 +1,500 @@
1
+ "use strict";
2
+ /**
3
+ * Copyright 2018 Scott Bender (scott@scottbender.net)
4
+ *
5
+ * Licensed under the Apache License, Version 2.0 (the "License");
6
+ * you may not use this file except in compliance with the License.
7
+ * You may obtain a copy of the License at
8
+ *
9
+ * http://www.apache.org/licenses/LICENSE-2.0
10
+ *
11
+ * Unless required by applicable law or agreed to in writing, software
12
+ * distributed under the License is distributed on an "AS IS" BASIS,
13
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14
+ * See the License for the specific language governing permissions and
15
+ * limitations under the License.
16
+ */
17
+ var __importDefault = (this && this.__importDefault) || function (mod) {
18
+ return (mod && mod.__esModule) ? mod : { "default": mod };
19
+ };
20
+ Object.defineProperty(exports, "__esModule", { value: true });
21
+ exports.actisenseToN2KActisenseFormat = exports.actisenseToN2KAsciiFormat = exports.actisenseToiKonvert = exports.actisenseToMXPGN = exports.actisenseToPCDIN = exports.actisenseToYdgwFullRawFormat = exports.actisenseToYdgwRawFormat = void 0;
22
+ exports.toPgn = toPgn;
23
+ exports.pgnToActisenseSerialFormat = pgnToActisenseSerialFormat;
24
+ exports.pgnToActisenseN2KAsciiFormat = pgnToActisenseN2KAsciiFormat;
25
+ exports.pgnToN2KActisenseFormat = pgnToN2KActisenseFormat;
26
+ exports.toiKonvertSerialFormat = toiKonvertSerialFormat;
27
+ exports.pgnToiKonvertSerialFormat = pgnToiKonvertSerialFormat;
28
+ exports.pgnToYdgwRawFormat = pgnToYdgwRawFormat;
29
+ exports.pgnToYdgwFullRawFormat = pgnToYdgwFullRawFormat;
30
+ exports.pgnToPCDIN = pgnToPCDIN;
31
+ exports.pgnToMXPGN = pgnToMXPGN;
32
+ const fromPgn_1 = require("./fromPgn");
33
+ const pgns_1 = require("./pgns");
34
+ const lodash_1 = __importDefault(require("lodash"));
35
+ const bit_buffer_1 = require("bit-buffer");
36
+ const int64_buffer_1 = require("int64-buffer");
37
+ const stringMsg_1 = require("./stringMsg");
38
+ const n2k_actisense_1 = require("./n2k-actisense");
39
+ const utilities_1 = require("./utilities");
40
+ const debug = (0, utilities_1.createDebug)('canboatjs:toPgn');
41
+ const RES_STRINGLAU = 'STRING_LAU'; //'ASCII or UNICODE string starting with length and control byte'
42
+ const RES_STRINGLZ = 'STRING_LZ'; //'ASCII string starting with length byte'
43
+ const fieldTypeWriters = {};
44
+ const fieldTypeMappers = {};
45
+ //const lengthsOff: {[key: number]: number} = { 129029: 45, 127257:8, 127258:8, 127251:8 }
46
+ const a126208_oldKey = '# of Parameters';
47
+ const a126208_newKey = 'Number of Parameters';
48
+ function toPgn(data) {
49
+ const customPgns = (0, pgns_1.getCustomPgn)(data.pgn);
50
+ let pgnList = (0, pgns_1.getPgn)(data.pgn);
51
+ if (!pgnList && !customPgns) {
52
+ debug('no pgn found: ' + data.pgn);
53
+ return;
54
+ }
55
+ if (customPgns) {
56
+ pgnList = [...customPgns.definitions, ...(pgnList || [])];
57
+ }
58
+ if (!pgnList || pgnList.length === 0) {
59
+ debug('no pgn found: ' + data.pgn);
60
+ return undefined;
61
+ }
62
+ const pgn_number = data.pgn;
63
+ let pgnData = pgnList[0];
64
+ const bs = new bit_buffer_1.BitStream(Buffer.alloc(500));
65
+ if (data.fields) {
66
+ data = data.fields;
67
+ }
68
+ if (pgn_number === 126208 && !data[a126208_newKey] && data[a126208_oldKey]) {
69
+ //a bit of a hack because this field name changed and I'm sure there is code out
70
+ //there that still uses the old field name
71
+ data[a126208_newKey] = data[a126208_oldKey];
72
+ }
73
+ let fields = pgnData.Fields;
74
+ let RepeatingFields = pgnData.RepeatingFieldSet1Size
75
+ ? pgnData.RepeatingFieldSet1Size
76
+ : 0;
77
+ for (let index = 0; index < fields.length - RepeatingFields; index++) {
78
+ const field = fields[index];
79
+ let value = data[field.Name] !== undefined ? data[field.Name] : data[field.Id];
80
+ if (!lodash_1.default.isUndefined(field.Match)) {
81
+ //console.log(`matching ${field.Name} ${field.Match} ${value} ${_.isString(value)}`)
82
+ if (lodash_1.default.isString(value)) {
83
+ pgnList = pgnList.filter((f) => f.Fields[index].Description == value);
84
+ }
85
+ else {
86
+ pgnList = pgnList.filter((f) => f.Fields[index].Match == value);
87
+ }
88
+ if (pgnList.length > 0) {
89
+ //console.log(`matched ${field.Name} ${pgnList[0].Fields[index].Match}`)
90
+ pgnData = pgnList[0];
91
+ value = pgnData.Fields[index].Match;
92
+ fields = pgnData.Fields;
93
+ RepeatingFields = pgnData.RepeatingFieldSet1Size
94
+ ? pgnData.RepeatingFieldSet1Size
95
+ : 0;
96
+ }
97
+ }
98
+ writeField(bs, pgn_number, field, data, value, fields);
99
+ }
100
+ if (data.list) {
101
+ data.list.forEach((repeat) => {
102
+ for (let index = 0; index < RepeatingFields; index++) {
103
+ const field = fields[pgnData.Fields.length - RepeatingFields + index];
104
+ const value = repeat[field.Name] !== undefined
105
+ ? repeat[field.Name]
106
+ : repeat[field.Id];
107
+ writeField(bs, pgn_number, field, data, value, fields);
108
+ }
109
+ });
110
+ }
111
+ const bitsLeft = bs.byteIndex * 8 - bs.index;
112
+ if (bitsLeft > 0) {
113
+ //finish off the last byte
114
+ bs.writeBits(0xffff, bitsLeft);
115
+ //console.log(`bits left ${bitsLeft}`)
116
+ }
117
+ if (pgnData.Length !== undefined &&
118
+ pgnData.Length !== 0xff &&
119
+ fields[fields.length - 1].FieldType !== RES_STRINGLAU &&
120
+ fields[fields.length - 1].FieldType !== RES_STRINGLZ &&
121
+ !RepeatingFields) {
122
+ //const len = lengthsOff[pgnData.PGN] || pgnData.Length
123
+ //console.log(`Length ${len}`)
124
+ //if ( bs.byteIndex < pgnData.Length ) {
125
+ //console.log(`bytes left ${pgnData.Length-bs.byteIndex}`)
126
+ //}
127
+ for (let i = bs.byteIndex; i < pgnData.Length; i++) {
128
+ bs.writeUint8(0xff);
129
+ }
130
+ }
131
+ return bs.view.buffer.slice(0, bs.byteIndex);
132
+ }
133
+ /*
134
+ function dumpWritten(bs, field, startPos, value) {
135
+ //console.log(`${startPos} ${bs.byteIndex}`)
136
+ if ( startPos == bs.byteIndex )
137
+ startPos--
138
+ let string = `${field.Name} (${field.BitLength}): [`
139
+ for ( let i = startPos; i < bs.byteIndex; i++ ) {
140
+ string = string + bs.view.buffer[i].toString(16) + ', '
141
+ }
142
+ console.log(string + `] ${value}`)
143
+ }
144
+ */
145
+ function writeField(bs, pgn_number, field, data, value, fields, bitLength = undefined) {
146
+ //const startPos = bs.byteIndex
147
+ if (bitLength === undefined) {
148
+ if (field.BitLengthVariable && field.FieldType === 'DYNAMIC_FIELD_VALUE') {
149
+ bitLength = lookupKeyBitLength(data, fields);
150
+ }
151
+ else {
152
+ bitLength = field.BitLength;
153
+ }
154
+ }
155
+ // console.log(`${field.Name}:${value}(${bitLength}-${field.Resolution})`)
156
+ if (value === undefined || value === null) {
157
+ if (field.FieldType && fieldTypeWriters[field.FieldType]) {
158
+ fieldTypeWriters[field.FieldType](pgn_number, field, value, bs);
159
+ }
160
+ else if (bitLength !== undefined && bitLength % 8 == 0) {
161
+ const bytes = bitLength / 8;
162
+ //const byte = field.Name.startsWith('Reserved') ? 0x00 : 0xff
163
+ for (let i = 0; i < bytes - 1; i++) {
164
+ bs.writeUint8(0xff);
165
+ }
166
+ bs.writeUint8(field.Signed ? 0x7f : 0xff);
167
+ }
168
+ else if (bitLength !== undefined) {
169
+ bs.writeBits(0xffffffff, bitLength);
170
+ }
171
+ else {
172
+ //FIXME: error! should not happen
173
+ }
174
+ }
175
+ else {
176
+ const type = field.FieldType;
177
+ if (type && fieldTypeMappers[type]) {
178
+ value = fieldTypeMappers[type](field, value);
179
+ }
180
+ else if ((field.FieldType === 'LOOKUP' ||
181
+ field.FieldType === 'DYNAMIC_FIELD_KEY') &&
182
+ lodash_1.default.isString(value)) {
183
+ value = lookup(field, value);
184
+ }
185
+ if (field.FieldType == 'NUMBER' && lodash_1.default.isString(value)) {
186
+ value = Number(value);
187
+ }
188
+ if (field.Resolution && typeof value === 'number') {
189
+ value = Number((value / field.Resolution).toFixed(0));
190
+ }
191
+ if (field.FieldType && fieldTypeWriters[field.FieldType]) {
192
+ fieldTypeWriters[field.FieldType](pgn_number, field, value, bs);
193
+ }
194
+ else {
195
+ /*
196
+ if ( _.isString(value) && typeof bitLength !== 'undefined' && bitLength !== 0 ) {
197
+ value = Number(value)
198
+ }
199
+ */
200
+ if (field.Unit === 'kWh') {
201
+ value /= 3.6e6; // 1 kWh = 3.6 MJ.
202
+ }
203
+ else if (field.Unit === 'Ah') {
204
+ value /= 3600.0; // 1 Ah = 3600 C.
205
+ }
206
+ if (field.Offset) {
207
+ value -= field.Offset;
208
+ }
209
+ if (field.FieldType === 'VARIABLE') {
210
+ writeVariableLengthField(bs, pgn_number, data, field, value, fields);
211
+ }
212
+ else if (lodash_1.default.isBuffer(value)) {
213
+ value.copy(bs.view.buffer, bs.byteIndex);
214
+ bs.byteIndex += value.length;
215
+ }
216
+ else if (bitLength !== undefined) {
217
+ if (bitLength === 8) {
218
+ if (field.Signed) {
219
+ bs.writeInt8(value);
220
+ }
221
+ else {
222
+ bs.writeUint8(value);
223
+ }
224
+ }
225
+ else if (bitLength === 16) {
226
+ if (field.Signed) {
227
+ bs.writeInt16(value);
228
+ }
229
+ else {
230
+ bs.writeUint16(value);
231
+ }
232
+ }
233
+ else if (bitLength === 32) {
234
+ if (field.Signed) {
235
+ bs.writeInt32(value);
236
+ }
237
+ else {
238
+ bs.writeUint32(value);
239
+ }
240
+ }
241
+ else if (bitLength === 48 || bitLength == 24) {
242
+ let count = bitLength / 8;
243
+ let val = value;
244
+ if (value < 0) {
245
+ val++;
246
+ }
247
+ while (count-- > 0) {
248
+ if (value > 0) {
249
+ bs.writeUint8(val & 255);
250
+ val /= 256;
251
+ }
252
+ else {
253
+ bs.writeUint8((-val & 255) ^ 255);
254
+ val /= 256;
255
+ }
256
+ }
257
+ }
258
+ else if (bitLength === 64) {
259
+ let num;
260
+ if (field.Signed) {
261
+ num = new int64_buffer_1.Int64LE(value);
262
+ }
263
+ else {
264
+ num = new int64_buffer_1.Uint64LE(value);
265
+ }
266
+ const buf = num.toBuffer();
267
+ buf.copy(bs.view.buffer, bs.byteIndex);
268
+ bs.byteIndex += buf.length;
269
+ }
270
+ else {
271
+ bs.writeBits(value, bitLength);
272
+ }
273
+ }
274
+ }
275
+ }
276
+ //dumpWritten(bs, field, startPos, value)
277
+ }
278
+ function writeVariableLengthField(bs, pgn_number, pgn, field, value, fields) {
279
+ const refField = (0, fromPgn_1.getField)(pgn.PGN, bs.view.buffer[bs.byteIndex - 1] - 1, pgn);
280
+ if (refField) {
281
+ let bits;
282
+ if (refField.BitLength !== undefined) {
283
+ bits = (refField.BitLength + 7) & ~7; // Round # of bits in field refField up to complete bytes: 1->8, 7->8, 8->8 etc.
284
+ }
285
+ return writeField(bs, pgn_number, refField, pgn, value, fields, bits);
286
+ }
287
+ }
288
+ function lookup(field, stringValue) {
289
+ let res;
290
+ if (field.LookupEnumeration) {
291
+ res = (0, pgns_1.lookupEnumerationValue)(field.LookupEnumeration, stringValue);
292
+ }
293
+ else {
294
+ res = (0, pgns_1.lookupFieldTypeEnumerationValue)(field.LookupFieldTypeEnumeration, stringValue);
295
+ }
296
+ return lodash_1.default.isUndefined(res) ? stringValue : res;
297
+ }
298
+ function lookupKeyBitLength(data, fields) {
299
+ const field = fields.find((field) => field.Name === 'Key');
300
+ if (field) {
301
+ let val = data['Key'] || data['key'];
302
+ if (typeof val === 'string') {
303
+ val = (0, pgns_1.lookupFieldTypeEnumerationValue)(field.LookupFieldTypeEnumeration, val);
304
+ }
305
+ return (0, pgns_1.lookupFieldTypeEnumerationBits)(field.LookupFieldTypeEnumeration, val);
306
+ }
307
+ }
308
+ /*
309
+
310
+ function parseHex(s:string): number {
311
+ return parseInt(s, 16)
312
+ };
313
+
314
+ function canboat2Buffer(canboatData:string) {
315
+ return Buffer.alloc(canboatData
316
+ .split(',')
317
+ .slice(6)
318
+ .map(parseHex), 'hex')
319
+ }
320
+ */
321
+ function pgnToActisenseSerialFormat(pgn) {
322
+ return (0, stringMsg_1.encodeActisense)({
323
+ pgn: pgn.pgn,
324
+ data: toPgn(pgn),
325
+ dst: pgn.dst,
326
+ src: pgn.src,
327
+ prio: pgn.prio,
328
+ timestamp: undefined
329
+ });
330
+ }
331
+ function pgnToActisenseN2KAsciiFormat(pgn) {
332
+ return (0, stringMsg_1.encodeActisenseN2KACSII)({
333
+ pgn: pgn.pgn,
334
+ data: toPgn(pgn),
335
+ dst: pgn.dst,
336
+ src: pgn.src,
337
+ prio: pgn.prio,
338
+ timestamp: undefined
339
+ });
340
+ }
341
+ function pgnToN2KActisenseFormat(pgn) {
342
+ const data = toPgn(pgn);
343
+ if (data) {
344
+ return (0, n2k_actisense_1.encodeN2KActisense)(pgn, data);
345
+ }
346
+ }
347
+ function toiKonvertSerialFormat(pgn, data, dst = 255) {
348
+ return `!PDGY,${pgn},${dst},${data.toString('base64')}`;
349
+ }
350
+ function pgnToiKonvertSerialFormat(pgn) {
351
+ const data = toPgn(pgn);
352
+ if (data) {
353
+ return toiKonvertSerialFormat(pgn.pgn, data, pgn.dst);
354
+ }
355
+ }
356
+ function pgnToYdgwRawFormat(info) {
357
+ return (0, stringMsg_1.encodeYDRAW)({ ...info, data: toPgn(info) });
358
+ }
359
+ function pgnToYdgwFullRawFormat(info) {
360
+ return (0, stringMsg_1.encodeYDRAWFull)({ ...info, data: toPgn(info) });
361
+ }
362
+ function pgnToPCDIN(info) {
363
+ return (0, stringMsg_1.encodePCDIN)({ ...info, data: toPgn(info) });
364
+ }
365
+ function pgnToMXPGN(info) {
366
+ return (0, stringMsg_1.encodeMXPGN)({ ...info, data: toPgn(info) });
367
+ }
368
+ exports.actisenseToYdgwRawFormat = lodash_1.default.flow(stringMsg_1.parseActisense, stringMsg_1.encodeYDRAW);
369
+ exports.actisenseToYdgwFullRawFormat = lodash_1.default.flow(stringMsg_1.parseActisense, stringMsg_1.encodeYDRAWFull);
370
+ exports.actisenseToPCDIN = lodash_1.default.flow(stringMsg_1.parseActisense, stringMsg_1.encodePCDIN);
371
+ exports.actisenseToMXPGN = lodash_1.default.flow(stringMsg_1.parseActisense, stringMsg_1.encodeMXPGN);
372
+ exports.actisenseToiKonvert = lodash_1.default.flow(stringMsg_1.parseActisense, stringMsg_1.encodePDGY);
373
+ exports.actisenseToN2KAsciiFormat = lodash_1.default.flow(stringMsg_1.parseActisense, stringMsg_1.encodeActisenseN2KACSII);
374
+ exports.actisenseToN2KActisenseFormat = lodash_1.default.flow(stringMsg_1.parseActisense, n2k_actisense_1.encodeN2KActisense);
375
+ function bitIsSet(field, index, value) {
376
+ const enumName = (0, pgns_1.lookupBitEnumerationName)(field.LookupBitEnumeration, index);
377
+ return enumName ? value.indexOf(enumName) != -1 : false;
378
+ }
379
+ fieldTypeWriters['BITLOOKUP'] = (pgn, field, value, bs) => {
380
+ if (field.BitLength !== undefined) {
381
+ if (value === undefined || value.length === 0) {
382
+ if (field.BitLength % 8 == 0) {
383
+ const bytes = field.BitLength / 8;
384
+ //const lastByte = field.Signed ? 0x7f : 0xff
385
+ for (let i = 0; i < bytes - 1; i++) {
386
+ bs.writeUint8(0x0);
387
+ }
388
+ bs.writeUint8(0x0);
389
+ }
390
+ else {
391
+ bs.writeBits(0xffffffff, field.BitLength);
392
+ }
393
+ }
394
+ else {
395
+ for (let i = 0; i < field.BitLength; i++) {
396
+ bs.writeBits(bitIsSet(field, i, value) ? 1 : 0, 1);
397
+ }
398
+ }
399
+ }
400
+ };
401
+ fieldTypeWriters['STRING_FIX'] = (pgn, field, value, bs) => {
402
+ if (field.BitLength !== undefined) {
403
+ let fill = 0xff;
404
+ if ((pgn === 129810 &&
405
+ (field.Name === 'Vendor ID' || field.Name === 'Callsign')) ||
406
+ (pgn === 129809 && field.Name === 'Name')) {
407
+ if (lodash_1.default.isUndefined(value) || value.length == 0) {
408
+ {
409
+ fill = 0x40;
410
+ value = '';
411
+ }
412
+ }
413
+ }
414
+ if (value === undefined) {
415
+ value = '';
416
+ }
417
+ const fieldLen = field.BitLength / 8;
418
+ for (let i = 0; i < value.length; i++) {
419
+ bs.writeUint8(value.charCodeAt(i));
420
+ }
421
+ for (let i = 0; i < fieldLen - value.length; i++) {
422
+ bs.writeUint8(fill);
423
+ }
424
+ }
425
+ };
426
+ fieldTypeWriters[RES_STRINGLZ] = (pgn, field, value, bs) => {
427
+ if (lodash_1.default.isUndefined(value)) {
428
+ value = '';
429
+ }
430
+ bs.writeUint8(value.length);
431
+ for (let i = 0; i < value.length; i++) {
432
+ bs.writeUint8(value.charCodeAt(i));
433
+ }
434
+ bs.writeUint8(0);
435
+ };
436
+ fieldTypeWriters['String with start/stop byte'] = (pgn, field, value, bs) => {
437
+ if (lodash_1.default.isUndefined(value)) {
438
+ value = '';
439
+ }
440
+ bs.writeUint8(0x02);
441
+ for (let i = 0; i < value.length; i++) {
442
+ bs.writeUint8(value.charCodeAt(i));
443
+ }
444
+ bs.writeUint8(0x01);
445
+ };
446
+ fieldTypeWriters[RES_STRINGLAU] = (pgn, field, value, bs) => {
447
+ if (pgn === 129041 && field.Name === 'AtoN Name') {
448
+ if (value.length > 18) {
449
+ value = value.substring(0, 18);
450
+ }
451
+ else {
452
+ value = value.padEnd(18, ' ');
453
+ }
454
+ }
455
+ bs.writeUint8(value ? value.length + 2 : 2);
456
+ bs.writeUint8(1);
457
+ if (value) {
458
+ for (let idx = 0; idx < value.length; idx++) {
459
+ bs.writeUint8(value.charCodeAt(idx));
460
+ }
461
+ }
462
+ };
463
+ fieldTypeMappers['DATE'] = (field, value) => {
464
+ //console.log(`Date: ${value}`)
465
+ if (lodash_1.default.isString(value)) {
466
+ const date = new Date(value);
467
+ return date.getTime() / 86400 / 1000;
468
+ }
469
+ return value;
470
+ };
471
+ fieldTypeMappers['TIME'] = (field, value) => {
472
+ if (lodash_1.default.isString(value)) {
473
+ const split = value.split(':');
474
+ const hours = Number(split[0]);
475
+ const minutes = Number(split[1]);
476
+ const seconds = Number(split[2]);
477
+ value = hours * 60 * 60 + minutes * 60 + seconds;
478
+ }
479
+ return value;
480
+ };
481
+ fieldTypeMappers['DURATION'] = fieldTypeMappers['TIME'];
482
+ fieldTypeMappers['Pressure'] = (field, value) => {
483
+ if (field.Unit) {
484
+ switch (field.Unit[0]) {
485
+ case 'h':
486
+ case 'H':
487
+ value /= 100;
488
+ break;
489
+ case 'k':
490
+ case 'K':
491
+ value /= 1000;
492
+ break;
493
+ case 'd':
494
+ value *= 10;
495
+ break;
496
+ }
497
+ }
498
+ return value;
499
+ };
500
+ //# sourceMappingURL=toPgn.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"toPgn.js","sourceRoot":"","sources":["../lib/toPgn.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,26 @@
1
+ /**
2
+ * Copyright 2018 Scott Bender (scott@scottbender.net)
3
+ *
4
+ * Licensed under the Apache License, Version 2.0 (the "License");
5
+ * you may not use this file except in compliance with the License.
6
+ * You may obtain a copy of the License at
7
+ *
8
+ * http://www.apache.org/licenses/LICENSE-2.0
9
+ *
10
+ * Unless required by applicable law or agreed to in writing, software
11
+ * distributed under the License is distributed on an "AS IS" BASIS,
12
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13
+ * See the License for the specific language governing permissions and
14
+ * limitations under the License.
15
+ */
16
+ import { CanID } from './canId';
17
+ export declare const createDebug: (name: string) => import("debug").Debugger;
18
+ export declare function getPlainPGNs(buffer: Buffer): Buffer<ArrayBuffer>[];
19
+ export declare function compute0183Checksum(sentence: string): string;
20
+ export declare function binToActisense(pgn: CanID, timestamp: string, data: Buffer, length: number): string;
21
+ export declare const trimWrap: import("lodash/fp").LodashTrimChars1x1;
22
+ export declare const rmChecksum: (str: string) => string;
23
+ export declare const arrBuff: (arr: string[], encoding?: BufferEncoding) => Buffer<ArrayBuffer>;
24
+ export declare const hexByte: (x: number) => string;
25
+ export declare const byteString: (data: Buffer, separator?: string) => string;
26
+ //# sourceMappingURL=utilities.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"utilities.d.ts","sourceRoot":"","sources":["../lib/utilities.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAIH,OAAO,EAAE,KAAK,EAAE,MAAM,SAAS,CAAA;AAG/B,eAAO,MAAM,WAAW,GAAI,MAAM,MAAM,6BAEvC,CAAA;AAED,wBAAgB,YAAY,CAAC,MAAM,EAAE,MAAM,yBA4B1C;AA2BD,wBAAgB,mBAAmB,CAAC,QAAQ,EAAE,MAAM,UAUnD;AAED,wBAAgB,cAAc,CAC5B,GAAG,EAAE,KAAK,EACV,SAAS,EAAE,MAAM,EACjB,IAAI,EAAE,MAAM,EACZ,MAAM,EAAE,MAAM,UAcf;AAED,eAAO,MAAM,QAAQ,wCAAsB,CAAA;AAC3C,eAAO,MAAM,UAAU,GAAI,KAAK,MAAM,WACU,CAAA;AAChD,eAAO,MAAM,OAAO,GAAI,KAAK,MAAM,EAAE,EAAE,WAAU,cAAsB,wBAClC,CAAA;AACrC,eAAO,MAAM,OAAO,GAAI,GAAG,MAAM,WACc,CAAA;AAC/C,eAAO,MAAM,UAAU,GAAI,MAAM,MAAM,EAAE,kBAAe,WAEK,CAAA"}