@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,359 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ exports.parseN2KOver0183 = exports.isN2KOver0183 = exports.isN2KString = exports.parseN2kString = exports.parseCandump3 = exports.isCandump3 = exports.parseCandump2 = exports.isCandump2 = exports.parseCandump1 = exports.isCandump1 = exports.parsePDGYdebug = exports.isPDGYdebug = exports.encodePDGY = exports.parsePDGY = exports.isPDGY = exports.encodeMXPGN = exports.parseMXPGN = exports.isMXPGN = exports.encodePCDIN = exports.parsePCDIN = exports.isPCDIN = exports.encodeYDRAWFull = exports.encodeYDRAW = exports.parseYDRAW = exports.isYDRAW = exports.encodeActisenseN2KACSII = exports.parseActisenseN2KASCII = exports.isActisenseN2KASCII = exports.toActisenseSerialFormat = exports.encodeActisense = exports.parseActisense = exports.isActisense = void 0;
7
+ const fp_1 = require("lodash/fp");
8
+ const utilities_1 = require("./utilities");
9
+ const canId_1 = require("./canId");
10
+ const moment_1 = __importDefault(require("moment"));
11
+ /**
12
+ * Helper function that helps merge canId fields with format, data, and others.
13
+ * The idea here is to reflect what was in the source and not remove or add.
14
+ * If the source has a len or timestamp attribute it should be added but not created.
15
+ * @param {Object} canIdInfo The result of parseCanId, parseCanIdStr, or buildCanId.
16
+ * @param {string} format String that defines the source format.
17
+ * @param {Buffer} data Buffer array that contains the fields data.
18
+ * @param {Object} [rest={}] Anything else to be added like len, timestamp, direction.
19
+ * @return {Object} All canId fields with format and data props added.
20
+ */
21
+ function buildMsg(_canIdInfo, format, data, rest = {}) {
22
+ const canIdInfo = Object.assign({}, _canIdInfo, {
23
+ format,
24
+ data
25
+ });
26
+ for (const property in rest) {
27
+ if (canIdInfo[property] === undefined) {
28
+ canIdInfo[property] = rest[property];
29
+ }
30
+ }
31
+ return canIdInfo;
32
+ }
33
+ function buildErrMsg(msg, input) {
34
+ if (input !== undefined && input.length > 0)
35
+ return `${msg} - ${input}`;
36
+ return msg;
37
+ }
38
+ const buildErr = (format, msg, input = undefined) => {
39
+ return {
40
+ error: new Error(buildErrMsg(msg, input)),
41
+ format,
42
+ input
43
+ };
44
+ };
45
+ function toPaddedHexString(num, len) {
46
+ const str = num.toString(16).toUpperCase();
47
+ return '0'.repeat(len - str.length) + str;
48
+ }
49
+ // 2016-02-28T19:57:02.364Z,2,127250,7,255,8,ff,10,3b,ff,7f,ce,f5,fc
50
+ const isActisense = (input) => (input.charAt(10) === 'T' && input.charAt(23) === 'Z') ||
51
+ (input.charAt(10) === '-' && input.charAt(23) === ',');
52
+ exports.isActisense = isActisense;
53
+ const parseActisense = (input) => {
54
+ const [timestamp, prio, pgn, src, dst, len, ...data] = input.split(',');
55
+ return buildMsg((0, canId_1.buildCanId)(prio, pgn, dst, src), 'Actisense', Buffer.from(data.join(''), 'hex'), { len: Number(len), timestamp });
56
+ };
57
+ exports.parseActisense = parseActisense;
58
+ const encodeActisense = ({ pgn, data, timestamp, prio = 2, dst = 255, src = 0 }) => [
59
+ timestamp || new Date().toISOString(),
60
+ prio,
61
+ pgn,
62
+ src,
63
+ dst,
64
+ data.length,
65
+ (0, utilities_1.byteString)(data)
66
+ ].join(',');
67
+ exports.encodeActisense = encodeActisense;
68
+ const toActisenseSerialFormat = (pgn, data, dst = 255, src = 0, prio = 2) => exports.encodeActisense({
69
+ pgn,
70
+ data,
71
+ dst,
72
+ src,
73
+ prio
74
+ });
75
+ exports.toActisenseSerialFormat = toActisenseSerialFormat;
76
+ // A764027.880 05FF7 1EF00 E59861060202FFFFFFFF03030000FFFFFFFFFFFFFFFFFFFF0000FFFFFF7FFFFFFF7FFFFFFF7F0000FF7F
77
+ const isActisenseN2KASCII = (input) => input.charAt(0) === 'A' && input.charAt(7) === '.' && input.charAt(11) === ' ';
78
+ exports.isActisenseN2KASCII = isActisenseN2KASCII;
79
+ const parseActisenseN2KASCII = (input) => {
80
+ const [timestamp, srcdstp, pgn, data] = input.split(' ');
81
+ const src = parseInt(srcdstp.substring(0, 2), 16);
82
+ const dst = parseInt(srcdstp.substring(2, 4), 16);
83
+ const prio = parseInt(srcdstp.substring(4));
84
+ return buildMsg((0, canId_1.buildCanId)(prio, parseInt(pgn, 16), dst, src), 'Actisense N2K ASCII', Buffer.from(data, 'hex'), { len: data.length, time: timestamp.substring(1) });
85
+ };
86
+ exports.parseActisenseN2KASCII = parseActisenseN2KASCII;
87
+ const encodeActisenseN2KACSII = ({ pgn, data, timestamp, prio = 2, dst = 255, src = 0 }) => {
88
+ timestamp = 'A000000.000';
89
+ const srcdstp = (0, utilities_1.hexByte)(src) + (0, utilities_1.hexByte)(dst) + prio;
90
+ return [
91
+ timestamp,
92
+ srcdstp.toUpperCase(),
93
+ toPaddedHexString(pgn, 5).toUpperCase(),
94
+ (0, utilities_1.byteString)(data, '').toUpperCase()
95
+ ].join(' ');
96
+ };
97
+ exports.encodeActisenseN2KACSII = encodeActisenseN2KACSII;
98
+ // 16:29:27.082 R 09F8017F 50 C3 B8 13 47 D8 2B C6
99
+ const isYDRAW = (input) => {
100
+ if (input.charAt(2) !== ':')
101
+ return false;
102
+ const direction = input.substr(12, 3);
103
+ return direction === ' R ' || direction === ' T ';
104
+ };
105
+ exports.isYDRAW = isYDRAW;
106
+ const parseYDRAW = (input) => {
107
+ const parts = input.split(' ');
108
+ if (parts.length < 4)
109
+ return buildErr('YDRAW', 'Invalid parts.', input);
110
+ const [time, direction, canId, ...data] = parts; // time format HH:mm:ss.SSS
111
+ return buildMsg((0, canId_1.parseCanIdStr)(canId), 'YDRAW', (0, utilities_1.arrBuff)(data), {
112
+ direction,
113
+ time
114
+ });
115
+ };
116
+ exports.parseYDRAW = parseYDRAW;
117
+ //19F51323 01 02<CR><LF>
118
+ const encodeYDRAW = ({ data, ...canIdInfo }) => {
119
+ const canId = (0, canId_1.encodeCanIdString)(canIdInfo);
120
+ const pgns = data.length > 8 || canIdInfo.pgn == 126720 ? (0, utilities_1.getPlainPGNs)(data) : [data];
121
+ return pgns.map((buffer) => canId + ' ' + (0, utilities_1.byteString)(buffer, ' '));
122
+ };
123
+ exports.encodeYDRAW = encodeYDRAW;
124
+ //16:29:27.082 R 19F51323 01 02<CR><LF>
125
+ const encodeYDRAWFull = ({ data, ...canIdInfo }) => {
126
+ const canId = (0, canId_1.encodeCanIdString)(canIdInfo);
127
+ const pgns = data.length > 8 || canIdInfo.pgn == 126720 ? (0, utilities_1.getPlainPGNs)(data) : [data];
128
+ return pgns.map((buffer) => (0, moment_1.default)().utc().format('hh:mm:ss.SSS') +
129
+ ' R ' +
130
+ canId +
131
+ ' ' +
132
+ (0, utilities_1.byteString)(buffer, ' '));
133
+ };
134
+ exports.encodeYDRAWFull = encodeYDRAWFull;
135
+ const get0183Sentence = (msg) => {
136
+ let sentence = msg;
137
+ if (sentence.charAt(0) === '\\') {
138
+ const split = sentence.split('\\');
139
+ if (split.length < 3) {
140
+ return undefined;
141
+ }
142
+ sentence = split[2];
143
+ }
144
+ return sentence;
145
+ };
146
+ // $PCDIN,01F119,00000000,0F,2AAF00D1067414FF*59
147
+ const isPCDIN = (msg) => {
148
+ const sentence = get0183Sentence(msg);
149
+ return sentence ? sentence.startsWith('$PCDIN,') : false;
150
+ };
151
+ exports.isPCDIN = isPCDIN;
152
+ const parsePCDIN = (input) => {
153
+ const sentence = get0183Sentence(input);
154
+ if (sentence) {
155
+ const [prefix, pgn, timeHex, src, data] = sentence.split(',');
156
+ let timer = parseInt(timeHex, 32);
157
+ timer = timer / 1024;
158
+ timer = timer + 1262304000; // starts epoch time from 1/1/2010
159
+ timer = timer * 1000;
160
+ return buildMsg((0, canId_1.buildCanId)(0, parseInt(pgn, 16), 255, parseInt(src, 16)), 'PCDIN', Buffer.from((0, utilities_1.rmChecksum)(data), 'hex'), { coalesced: true, prefix, timer, timestamp: new Date(timer) });
161
+ }
162
+ };
163
+ exports.parsePCDIN = parsePCDIN;
164
+ const encodePCDIN = ({ prefix = '$PCDIN', pgn, data, dst = 255 }) => {
165
+ const sentence = [
166
+ prefix,
167
+ toPaddedHexString(pgn, 6),
168
+ '0000180C',
169
+ (0, utilities_1.hexByte)(dst).toUpperCase(),
170
+ (0, utilities_1.byteString)(data, '').toUpperCase()
171
+ ].join(',');
172
+ return sentence + (0, utilities_1.compute0183Checksum)(sentence);
173
+ };
174
+ exports.encodePCDIN = encodePCDIN;
175
+ const changeEndianness = (string) => {
176
+ const result = [];
177
+ let len = string.length - 2;
178
+ while (len >= 0) {
179
+ result.push(string.substr(len, 2));
180
+ len -= 2;
181
+ }
182
+ return result.join('');
183
+ };
184
+ // $MXPGN,01F801,2801,C1308AC40C5DE343*19
185
+ const isMXPGN = (msg) => {
186
+ const sentence = get0183Sentence(msg);
187
+ return sentence ? sentence.startsWith('$MXPGN,') : false;
188
+ };
189
+ exports.isMXPGN = isMXPGN;
190
+ const parseMXPGN = (input, options = undefined) => {
191
+ const sentence = get0183Sentence(input);
192
+ if (sentence) {
193
+ const [prefix, pgn, attr_word, data] = sentence.split(',');
194
+ const send_prio_len = parseInt(attr_word.substr(0, 2), 16)
195
+ .toString(2)
196
+ .padStart(8, '0');
197
+ const addr = parseInt(attr_word.substr(2, 2), 16);
198
+ const send = parseInt(send_prio_len.substr(0, 1), 2);
199
+ const prio = parseInt(send_prio_len.substr(1, 3), 2);
200
+ //const len = parseInt(send_prio_len.substr(4,4), 2);
201
+ let src = 0, dst = 255;
202
+ send ? (dst = addr) : (src = addr);
203
+ let reversed;
204
+ if (options && options.littleEndianMXPGN)
205
+ reversed = changeEndianness((0, utilities_1.rmChecksum)(data));
206
+ else
207
+ reversed = data;
208
+ return buildMsg((0, canId_1.buildCanId)(prio, parseInt(pgn, 16), dst, src), 'MXPGN', Buffer.from(reversed, 'hex'), { coalesced: true, prefix });
209
+ }
210
+ };
211
+ exports.parseMXPGN = parseMXPGN;
212
+ const encodeMXPGN = ({ prefix = '$MXPGN', pgn, prio, src, data }) => {
213
+ if (src > 255)
214
+ src = 255;
215
+ if (!prio)
216
+ prio = 3;
217
+ if (!src)
218
+ src = 255;
219
+ const dataLength = (0, utilities_1.hexByte)(128 + prio * 16 + (0, utilities_1.byteString)(data, '').toUpperCase().length / 2).toUpperCase();
220
+ const attribWord = dataLength + (0, utilities_1.hexByte)(src).toUpperCase();
221
+ const buff = Buffer.from((0, utilities_1.byteString)(data, ''), 'hex');
222
+ for (let i = 0, j = buff.length - 1; i < j; ++i, --j) {
223
+ const t = buff[j];
224
+ buff[j] = buff[i];
225
+ buff[i] = t;
226
+ }
227
+ const sentence = [
228
+ prefix,
229
+ toPaddedHexString(pgn, 6),
230
+ attribWord,
231
+ buff.toString('hex').toUpperCase()
232
+ ].join(',');
233
+ return sentence + (0, utilities_1.compute0183Checksum)(sentence);
234
+ };
235
+ exports.encodeMXPGN = encodeMXPGN;
236
+ // iKonvert
237
+ // !PDGY,126992,3,2,255,0.563,d2009e45b3b8821d
238
+ exports.isPDGY = (0, fp_1.startsWith)('!PDGY,');
239
+ const parsePDGY = (input) => {
240
+ const parts = input.split(',');
241
+ if (parts.length === 7) {
242
+ const [prefix, pgn, prio, src, dst, timer, data] = parts;
243
+ return buildMsg((0, canId_1.buildCanId)(prio, pgn, dst, src), 'PDGY', Buffer.from(data, 'base64'), { timer: Number(timer), prefix, coalesced: true });
244
+ }
245
+ else if (parts.length === 4) {
246
+ // eslint-disable-next-line @typescript-eslint/no-unused-vars
247
+ const [prefix, pgn, dst, data] = parts;
248
+ return buildMsg((0, canId_1.buildCanId)(0, pgn, dst, 0), 'PDGY', Buffer.from(data, 'base64'), { coalesced: true });
249
+ }
250
+ else {
251
+ return buildErr('iKonvert', 'Invalid parts.', input);
252
+ }
253
+ };
254
+ exports.parsePDGY = parsePDGY;
255
+ const encodePDGY = ({ prefix = '!PDGY', pgn, data, dst = 255 }) => [prefix, pgn, dst, data.toString('base64')].join(',');
256
+ exports.encodePDGY = encodePDGY;
257
+ exports.isPDGYdebug = (0, fp_1.startsWith)('$PDGY,');
258
+ const parsePDGYdebug = (input) => {
259
+ const [prefix, pgn, ...fieldParts] = input.split(',');
260
+ const fieldVals = fieldParts.map(fp_1.toNumber);
261
+ const fields = (0, fp_1.zipObject)(['busLoad', 'errors', 'deviceCount', 'timer', 'gatewaySrc', 'rejectedTX'], fieldVals);
262
+ const src = fields.gatewaySrc;
263
+ return buildMsg((0, canId_1.buildCanId)(3, pgn, src, src), 'PDGYdebug', Buffer.from(fieldVals), { fields, prefix });
264
+ };
265
+ exports.parsePDGYdebug = parsePDGYdebug;
266
+ // candump1 Angstrom
267
+ // <0x18eeff01> [8] 05 a0 be 1c 00 a0 a0 c0
268
+ exports.isCandump1 = (0, fp_1.startsWith)('<0x');
269
+ const parseCandump1 = (input) => {
270
+ const [canId, len, ...data] = input.split(' ');
271
+ return buildMsg((0, canId_1.parseCanIdStr)((0, utilities_1.trimWrap)(canId)), 'candump1', (0, utilities_1.arrBuff)(data), {
272
+ len: Number((0, utilities_1.trimWrap)(len))
273
+ });
274
+ };
275
+ exports.parseCandump1 = parseCandump1;
276
+ // candump2 Debian
277
+ // can0 09F8027F [8] 00 FC FF FF 00 00 FF FF
278
+ exports.isCandump2 = (0, fp_1.startsWith)('can');
279
+ const parseCandump2 = (input) => {
280
+ const [bus, canId, len, ...data] = (0, fp_1.compact)(input.split(' '));
281
+ return buildMsg((0, canId_1.parseCanIdStr)(canId), 'candump2', (0, utilities_1.arrBuff)(data), {
282
+ bus,
283
+ len: Number((0, utilities_1.trimWrap)(len))
284
+ });
285
+ };
286
+ exports.parseCandump2 = parseCandump2;
287
+ // candump3 log
288
+ // (1502979132.106111) slcan0 09F50374#000A00FFFF00FFFF
289
+ exports.isCandump3 = (0, fp_1.startsWith)('(');
290
+ const parseCandump3 = (input) => {
291
+ const [timestamp, bus, canFrame] = input.split(' ');
292
+ const [canId, data] = canFrame.split('#');
293
+ return buildMsg((0, canId_1.parseCanIdStr)(canId), 'candump3', Buffer.from(data, 'hex'), {
294
+ timestamp,
295
+ bus
296
+ });
297
+ };
298
+ exports.parseCandump3 = parseCandump3;
299
+ const hasErr = (0, fp_1.overSome)([(0, fp_1.negate)(fp_1.isString), fp_1.isEmpty]);
300
+ const parseN2kString = (str, options) => {
301
+ if (hasErr(str)) {
302
+ return buildErr('INVALID', 'Input not string or empty.', str);
303
+ }
304
+ if ((0, exports.isActisense)(str)) {
305
+ return (0, exports.parseActisense)(str);
306
+ }
307
+ if ((0, exports.isYDRAW)(str)) {
308
+ return (0, exports.parseYDRAW)(str);
309
+ }
310
+ if ((0, exports.isPCDIN)(str)) {
311
+ return (0, exports.parsePCDIN)(str);
312
+ }
313
+ if ((0, exports.isMXPGN)(str)) {
314
+ return (0, exports.parseMXPGN)(str, options);
315
+ }
316
+ if ((0, exports.isPDGY)(str)) {
317
+ return (0, exports.parsePDGY)(str);
318
+ }
319
+ if ((0, exports.isCandump1)(str)) {
320
+ return (0, exports.parseCandump1)(str);
321
+ }
322
+ if ((0, exports.isCandump2)(str)) {
323
+ return (0, exports.parseCandump2)(str);
324
+ }
325
+ if ((0, exports.isCandump3)(str)) {
326
+ return (0, exports.parseCandump3)(str);
327
+ }
328
+ if ((0, exports.isPDGYdebug)(str)) {
329
+ return (0, exports.parsePDGYdebug)(str);
330
+ }
331
+ if ((0, exports.isActisenseN2KASCII)(str)) {
332
+ return (0, exports.parseActisenseN2KASCII)(str);
333
+ }
334
+ return buildErr('MISSING_PARSER', 'Parser not found for input.', str);
335
+ };
336
+ exports.parseN2kString = parseN2kString;
337
+ exports.isN2KString = (0, fp_1.cond)([
338
+ [hasErr, () => false],
339
+ [exports.isActisense, () => true],
340
+ [exports.isYDRAW, () => true],
341
+ [exports.isPCDIN, () => true],
342
+ [exports.isMXPGN, () => true],
343
+ [exports.isPDGY, () => true],
344
+ [exports.isCandump1, () => true],
345
+ [exports.isCandump2, () => true],
346
+ [exports.isCandump3, () => true],
347
+ [exports.isPDGYdebug, () => true],
348
+ [exports.isActisenseN2KASCII, () => true],
349
+ [fp_1.stubTrue, () => false]
350
+ ]);
351
+ const isN2KOver0183 = (msg) => {
352
+ return (0, exports.isPCDIN)(msg) || (0, exports.isMXPGN)(msg);
353
+ };
354
+ exports.isN2KOver0183 = isN2KOver0183;
355
+ const parseN2KOver0183 = (msg) => {
356
+ return (0, exports.parsePCDIN)(msg) || (0, exports.parseMXPGN)(msg);
357
+ };
358
+ exports.parseN2KOver0183 = parseN2KOver0183;
359
+ //# sourceMappingURL=stringMsg.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"stringMsg.js","sourceRoot":"","sources":["../lib/stringMsg.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=stringMsg.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"stringMsg.test.d.ts","sourceRoot":"","sources":["../lib/stringMsg.test.js"],"names":[],"mappings":""}
@@ -0,0 +1,244 @@
1
+ "use strict";
2
+ const { encodeActisense, encodeYDRAW, parseActisense, parseCandump1, parseCandump2, parsePCDIN, parsePDGY, parseN2kString, parsePDGYdebug, parseYDRAW, encodeActisenseN2KACSII, parseActisenseN2KASCII, parseCandump3 } = require('./stringMsg');
3
+ /* globals describe test expect */
4
+ describe('parseCandump1', () => {
5
+ test('basic messages', () => {
6
+ const msg = '<0x18eeff01> [8] 05 a0 be 1c 00 a0 a0 c0 ';
7
+ expect(parseCandump1(msg)).toEqual({
8
+ canId: 0x18eeff01,
9
+ data: Buffer.from('05a0be1c00a0a0c0', 'hex'),
10
+ dst: 255,
11
+ format: 'candump1',
12
+ len: 8,
13
+ src: 1,
14
+ pgn: 60928,
15
+ prio: 6
16
+ });
17
+ const msg2 = '<0x18ea2301> [3] 14 f0 01 ';
18
+ expect(parseCandump1(msg2)).toEqual({
19
+ canId: 0x18ea2301,
20
+ data: Buffer.from('14f001', 'hex'),
21
+ dst: 35,
22
+ format: 'candump1',
23
+ len: 3,
24
+ src: 1,
25
+ pgn: 59904,
26
+ prio: 6
27
+ });
28
+ });
29
+ });
30
+ describe('parseMultiLineCandump', () => {
31
+ test('multi line messages', () => {
32
+ const msgs = [
33
+ 'can0 0DF80523 [8] C0 2B 7E 9A 47 70 F8 2F',
34
+ 'can0 0DF80523 [8] C1 26 00 0C D1 EF 45 98',
35
+ 'can0 0DF80523 [8] C2 E5 05 00 7E C2 94 03',
36
+ 'can0 0DF80523 [8] C3 A8 29 F6 C0 B6 77 02',
37
+ 'can0 0DF80523 [8] C4 00 00 00 00 23 FC 0A',
38
+ 'can0 0DF80523 [8] C5 5A 00 A0 00 EE F3 FF',
39
+ 'can0 0DF80523 [8] C6 FF 00 FF FF FF FF FF'
40
+ ];
41
+ let res;
42
+ msgs.forEach((msg) => {
43
+ res = parseCandump2(msg);
44
+ });
45
+ expect(res).toEqual({
46
+ bus: 'can0',
47
+ canId: 234358051,
48
+ data: Buffer.from('c6ff00ffffffffff', 'hex'),
49
+ dst: 255,
50
+ format: 'candump2',
51
+ len: 8,
52
+ src: 35,
53
+ pgn: 129029,
54
+ prio: 3
55
+ });
56
+ });
57
+ });
58
+ describe('parseMultiLineCandumpV3', () => {
59
+ test('multi line messages', () => {
60
+ const msgs = [
61
+ '(0000000000.352000) vcan0 09F20101#601A00B706670D0B',
62
+ '(0000000000.353000) vcan0 09F20101#6186BA042600105F',
63
+ '(0000000000.354000) vcan0 09F20101#62090000008F027F',
64
+ '(0000000000.355000) vcan0 09F20101#63000000007F7FFF'
65
+ ];
66
+ let res;
67
+ msgs.forEach((msg) => {
68
+ res = parseCandump3(msg);
69
+ });
70
+ expect(res).toEqual({
71
+ bus: 'vcan0',
72
+ canId: 166854913,
73
+ data: Buffer.from('63000000007f7fff', 'hex'),
74
+ dst: 255,
75
+ format: 'candump3',
76
+ src: 1,
77
+ pgn: 127489,
78
+ prio: 2,
79
+ timestamp: '(0000000000.355000)'
80
+ });
81
+ });
82
+ });
83
+ describe('parseActisense', () => {
84
+ test('basic msg', () => {
85
+ const msg = '2016-04-09T16:41:09.078Z,3,127257,17,255,8,00,ff,7f,52,00,21,fe,ff';
86
+ expect(parseActisense(msg)).toEqual({
87
+ data: Buffer.from('00ff7f520021feff', 'hex'),
88
+ dst: 255,
89
+ len: 8,
90
+ format: 'Actisense',
91
+ pgn: 127257,
92
+ prio: 3,
93
+ src: 17,
94
+ timestamp: '2016-04-09T16:41:09.078Z'
95
+ });
96
+ });
97
+ });
98
+ describe('encodeActisense', () => {
99
+ test('basic msg', () => {
100
+ const msg = '2016-04-09T16:41:09.078Z,3,127257,17,255,8,00,ff,7f,52,00,21,fe,ff';
101
+ const n2k = parseActisense(msg);
102
+ const res = encodeActisense(n2k);
103
+ expect(res).toEqual(msg);
104
+ });
105
+ });
106
+ const pdgyLong = '!PDGY,129029,3,2,255,483.236,UZ9FfR+bI/////////9//////////3//////////fwD8AIgTiBMAAAAAAQAAAAA';
107
+ describe('parsePDGY', () => {
108
+ test('basic msg', () => {
109
+ const msg = '!PDGY,126992,3,2,255,0.563,d2009e45b3b8821d';
110
+ expect(parsePDGY(msg)).toEqual({
111
+ data: Buffer.from('d2009e45b3b8821d', 'base64'),
112
+ dst: 255,
113
+ format: 'PDGY',
114
+ prefix: '!PDGY',
115
+ pgn: 126992,
116
+ prio: 3,
117
+ src: 2,
118
+ timer: 0.563,
119
+ coalesced: true
120
+ });
121
+ });
122
+ test('long msg', () => {
123
+ expect(parsePDGY(pdgyLong)).toEqual({
124
+ data: Buffer.from('UZ9FfR+bI/////////9//////////3//////////fwD8AIgTiBMAAAAAAQAAAAA', 'base64'),
125
+ dst: 255,
126
+ format: 'PDGY',
127
+ prefix: '!PDGY',
128
+ pgn: 129029,
129
+ prio: 3,
130
+ src: 2,
131
+ timer: 483.236,
132
+ coalesced: true
133
+ });
134
+ });
135
+ });
136
+ describe('parsePDGYdebug', () => {
137
+ test('basic msg', () => {
138
+ const msg = '$PDGY,000000,4,,5,482,1,0';
139
+ expect(parsePDGYdebug(msg)).toEqual({
140
+ data: Buffer.from([4, 0, 5, 482, 1, 0]),
141
+ dst: 1,
142
+ format: 'PDGYdebug',
143
+ prefix: '$PDGY',
144
+ pgn: 0,
145
+ prio: 3,
146
+ src: 1,
147
+ fields: {
148
+ busLoad: 4,
149
+ deviceCount: 5,
150
+ errors: 0,
151
+ gatewaySrc: 1,
152
+ rejectedTX: 0,
153
+ timer: 482
154
+ }
155
+ });
156
+ });
157
+ });
158
+ describe('parsePCDIN', () => {
159
+ test('basic msg', () => {
160
+ const msg = '$PCDIN,01F119,00000000,0F,2AAF00D1067414FF*59';
161
+ expect(parsePCDIN(msg)).toEqual({
162
+ coalesced: true,
163
+ data: Buffer.from('2AAF00D1067414FF', 'hex'),
164
+ dst: 255,
165
+ format: 'PCDIN',
166
+ prefix: '$PCDIN',
167
+ pgn: 127257,
168
+ prio: 0,
169
+ src: 15,
170
+ timer: 1262304000000,
171
+ timestamp: new Date('2010-01-01T00:00:00.000Z')
172
+ });
173
+ });
174
+ });
175
+ describe('parseYDRAW', () => {
176
+ test('basic msg', () => {
177
+ const msg = '16:29:27.082 R 09F8017F 50 C3 B8 13 47 D8 2B C6';
178
+ expect(parseYDRAW(msg)).toEqual({
179
+ canId: 0x09f8017f,
180
+ data: Buffer.from('50C3B81347D82BC6', 'hex'),
181
+ direction: 'R',
182
+ dst: 255,
183
+ format: 'YDRAW',
184
+ pgn: 129025,
185
+ prio: 2,
186
+ src: 127,
187
+ time: '16:29:27.082'
188
+ });
189
+ });
190
+ });
191
+ describe('encodeYDRAW', () => {
192
+ test('long msg', () => {
193
+ expect(encodeYDRAW(parsePDGY(pdgyLong))).toEqual([
194
+ '0df80502 40 2f 51 9f 45 7d 1f 9b',
195
+ '0df80502 41 23 ff ff ff ff ff ff',
196
+ '0df80502 42 ff 7f ff ff ff ff ff',
197
+ '0df80502 43 ff ff 7f ff ff ff ff',
198
+ '0df80502 44 ff ff ff 7f 00 fc 00',
199
+ '0df80502 45 88 13 88 13 00 00 00',
200
+ '0df80502 46 00 01 00 00 00 00 ff'
201
+ ]);
202
+ });
203
+ });
204
+ describe('parseActisenseN2KASCII', () => {
205
+ test('basic msg', () => {
206
+ const msg = 'A000021.293 05FF2 1F802 FFFC289A1600FFFF';
207
+ expect(parseActisenseN2KASCII(msg)).toEqual({
208
+ data: Buffer.from('FFFC289A1600FFFF', 'hex'),
209
+ dst: 255,
210
+ format: 'Actisense N2K ASCII',
211
+ len: 16,
212
+ pgn: 129026,
213
+ prio: 2,
214
+ src: 5,
215
+ time: '000021.293'
216
+ });
217
+ });
218
+ });
219
+ describe('encodeActisenseN2KACSII', () => {
220
+ test('basic msg', () => {
221
+ const msg = 'A000000.000 05FF2 1F802 FFFC289A1600FFFF';
222
+ const n2k = parseActisenseN2KASCII(msg);
223
+ const res = encodeActisenseN2KACSII(n2k);
224
+ expect(res).toEqual(msg);
225
+ });
226
+ });
227
+ describe('parseN2kString', () => {
228
+ test('empty string or not string', () => {
229
+ const emptyMsg = 'Input not string or empty.';
230
+ expect(parseN2kString('').error.message).toBe(emptyMsg);
231
+ expect(parseN2kString('').input).toBe('');
232
+ expect(parseN2kString(5).error.message).toBe(emptyMsg);
233
+ expect(parseN2kString(5).input).toBe(5);
234
+ });
235
+ test('parser not found', () => {
236
+ const errMsg = {
237
+ error: new Error('Parser not found for input. - foo,bar'),
238
+ input: 'foo,bar',
239
+ format: 'MISSING_PARSER'
240
+ };
241
+ expect(parseN2kString('foo,bar')).toEqual(errMsg);
242
+ });
243
+ });
244
+ //# sourceMappingURL=stringMsg.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"stringMsg.test.js","sourceRoot":"","sources":["../lib/stringMsg.test.js"],"names":[],"mappings":"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"}