@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.
- package/.github/workflows/test.yml +2 -2
- package/.github/workflows/test_canboat_changes.yml +91 -0
- package/.husky/pre-commit +4 -0
- package/.mocharc.js +7 -0
- package/.prettierrc.json +5 -0
- package/README.md +2 -7
- package/dist/actisense-serial.d.ts +17 -0
- package/dist/actisense-serial.d.ts.map +1 -0
- package/dist/actisense-serial.js +569 -0
- package/dist/actisense-serial.js.map +1 -0
- package/dist/bin/actisense-file.d.ts +3 -0
- package/dist/bin/actisense-file.d.ts.map +1 -0
- package/dist/bin/actisense-file.js +49 -0
- package/dist/bin/actisense-file.js.map +1 -0
- package/dist/bin/actisense-n2k-tcp.d.ts +3 -0
- package/dist/bin/actisense-n2k-tcp.d.ts.map +1 -0
- package/dist/bin/actisense-n2k-tcp.js +46 -0
- package/dist/bin/actisense-n2k-tcp.js.map +1 -0
- package/dist/bin/actisense-serialjs.d.ts +3 -0
- package/dist/bin/actisense-serialjs.d.ts.map +1 -0
- package/dist/bin/actisense-serialjs.js +51 -0
- package/dist/bin/actisense-serialjs.js.map +1 -0
- package/dist/bin/analyzerjs.d.ts +3 -0
- package/dist/bin/analyzerjs.d.ts.map +1 -0
- package/dist/bin/analyzerjs.js +61 -0
- package/dist/bin/analyzerjs.js.map +1 -0
- package/dist/bin/candumpanalyzerjs.d.ts +3 -0
- package/dist/bin/candumpanalyzerjs.d.ts.map +1 -0
- package/dist/bin/candumpanalyzerjs.js +31 -0
- package/dist/bin/candumpanalyzerjs.js.map +1 -0
- package/dist/bin/candumpjs.d.ts +3 -0
- package/dist/bin/candumpjs.d.ts.map +1 -0
- package/dist/bin/candumpjs.js +73 -0
- package/dist/bin/candumpjs.js.map +1 -0
- package/dist/bin/cansend.d.ts +3 -0
- package/dist/bin/cansend.d.ts.map +1 -0
- package/dist/bin/cansend.js +123 -0
- package/dist/bin/cansend.js.map +1 -0
- package/dist/bin/ikonvert-serial.d.ts +3 -0
- package/dist/bin/ikonvert-serial.d.ts.map +1 -0
- package/dist/bin/ikonvert-serial.js +36 -0
- package/dist/bin/ikonvert-serial.js.map +1 -0
- package/dist/bin/to-pgn.d.ts +3 -0
- package/dist/bin/to-pgn.d.ts.map +1 -0
- package/dist/bin/to-pgn.js +57 -0
- package/dist/bin/to-pgn.js.map +1 -0
- package/dist/canId.d.ts +21 -0
- package/dist/canId.d.ts.map +1 -0
- package/dist/canId.js +66 -0
- package/dist/canId.js.map +1 -0
- package/dist/canId.test.d.ts +2 -0
- package/dist/canId.test.d.ts.map +1 -0
- package/dist/canId.test.js +58 -0
- package/dist/canId.test.js.map +1 -0
- package/dist/canbus.d.ts +17 -0
- package/dist/canbus.d.ts.map +1 -0
- package/dist/canbus.js +261 -0
- package/dist/canbus.js.map +1 -0
- package/dist/candevice.d.ts +23 -0
- package/dist/candevice.d.ts.map +1 -0
- package/dist/candevice.js +38 -0
- package/dist/candevice.js.map +1 -0
- package/dist/codes.d.ts +2 -0
- package/dist/codes.d.ts.map +1 -0
- package/dist/codes.js +24 -0
- package/dist/codes.js.map +1 -0
- package/dist/discovery.d.ts +17 -0
- package/dist/discovery.d.ts.map +1 -0
- package/dist/discovery.js +119 -0
- package/dist/discovery.js.map +1 -0
- package/dist/fromPgn.d.ts +51 -0
- package/dist/fromPgn.d.ts.map +1 -0
- package/dist/fromPgn.js +989 -0
- package/dist/fromPgn.js.map +1 -0
- package/dist/fromPgnStream.d.ts +17 -0
- package/dist/fromPgnStream.d.ts.map +1 -0
- package/dist/fromPgnStream.js +47 -0
- package/dist/fromPgnStream.js.map +1 -0
- package/dist/ikonvert.d.ts +17 -0
- package/dist/ikonvert.d.ts.map +1 -0
- package/dist/ikonvert.js +224 -0
- package/dist/ikonvert.js.map +1 -0
- package/dist/index.d.ts +31 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +60 -0
- package/dist/index.js.map +1 -0
- package/dist/n2k-actisense.d.ts +24 -0
- package/dist/n2k-actisense.d.ts.map +1 -0
- package/dist/n2k-actisense.js +126 -0
- package/dist/n2k-actisense.js.map +1 -0
- package/dist/n2k-actisense.test.d.ts +2 -0
- package/dist/n2k-actisense.test.d.ts.map +1 -0
- package/dist/n2k-actisense.test.js +49 -0
- package/dist/n2k-actisense.test.js.map +1 -0
- package/dist/n2kDevice.d.ts +40 -0
- package/dist/n2kDevice.d.ts.map +1 -0
- package/dist/n2kDevice.js +387 -0
- package/dist/n2kDevice.js.map +1 -0
- package/dist/ncanbus.d.ts +17 -0
- package/dist/ncanbus.d.ts.map +1 -0
- package/dist/ncanbus.js +92 -0
- package/dist/ncanbus.js.map +1 -0
- package/dist/pgns.d.ts +22 -0
- package/dist/pgns.d.ts.map +1 -0
- package/dist/pgns.js +157 -0
- package/dist/pgns.js.map +1 -0
- package/dist/pgns.test.d.ts +2 -0
- package/dist/pgns.test.d.ts.map +1 -0
- package/dist/pgns.test.js +14 -0
- package/dist/pgns.test.js.map +1 -0
- package/dist/simpleCan.d.ts +17 -0
- package/dist/simpleCan.d.ts.map +1 -0
- package/dist/simpleCan.js +125 -0
- package/dist/simpleCan.js.map +1 -0
- package/dist/stringMsg.d.ts +33 -0
- package/dist/stringMsg.d.ts.map +1 -0
- package/dist/stringMsg.js +359 -0
- package/dist/stringMsg.js.map +1 -0
- package/dist/stringMsg.test.d.ts +2 -0
- package/dist/stringMsg.test.d.ts.map +1 -0
- package/dist/stringMsg.test.js +244 -0
- package/dist/stringMsg.test.js.map +1 -0
- package/dist/toPgn.d.ts +34 -0
- package/dist/toPgn.d.ts.map +1 -0
- package/dist/toPgn.js +500 -0
- package/dist/toPgn.js.map +1 -0
- package/dist/utilities.d.ts +26 -0
- package/dist/utilities.d.ts.map +1 -0
- package/dist/utilities.js +112 -0
- package/dist/utilities.js.map +1 -0
- package/dist/utilities.test.d.ts +2 -0
- package/dist/utilities.test.d.ts.map +1 -0
- package/dist/utilities.test.js +9 -0
- package/dist/utilities.test.js.map +1 -0
- package/dist/venus-mqtt.d.ts +11 -0
- package/dist/venus-mqtt.d.ts.map +1 -0
- package/dist/venus-mqtt.js +100 -0
- package/dist/venus-mqtt.js.map +1 -0
- package/dist/venus.d.ts +11 -0
- package/dist/venus.d.ts.map +1 -0
- package/dist/venus.js +71 -0
- package/dist/venus.js.map +1 -0
- package/dist/w2k01.d.ts +17 -0
- package/dist/w2k01.d.ts.map +1 -0
- package/dist/w2k01.js +119 -0
- package/dist/w2k01.js.map +1 -0
- package/dist/yddevice.d.ts +25 -0
- package/dist/yddevice.d.ts.map +1 -0
- package/dist/yddevice.js +45 -0
- package/dist/yddevice.js.map +1 -0
- package/dist/ydgw02.d.ts +17 -0
- package/dist/ydgw02.d.ts.map +1 -0
- package/dist/ydgw02.js +163 -0
- package/dist/ydgw02.js.map +1 -0
- package/dist/ydvr.d.ts +17 -0
- package/dist/ydvr.d.ts.map +1 -0
- package/dist/ydvr.js +120 -0
- package/dist/ydvr.js.map +1 -0
- package/eslint.config.js +58 -0
- package/jest.config.js +5 -0
- package/lib/actisense-serial.ts +644 -0
- package/lib/bin/actisense-file.ts +53 -0
- package/lib/bin/actisense-n2k-tcp.ts +50 -0
- package/lib/bin/actisense-serialjs.ts +55 -0
- package/{bin/analyzerjs → lib/bin/analyzerjs.ts} +16 -15
- package/{bin/candumpjs → lib/bin/candumpjs.ts} +19 -20
- package/lib/bin/cansend.ts +131 -0
- package/lib/bin/ikonvert-serial.ts +44 -0
- package/{bin/to-pgn → lib/bin/to-pgn.ts} +23 -17
- package/lib/bin/ydvr-file +33 -0
- package/lib/canId.test.js +35 -15
- package/lib/canId.ts +84 -0
- package/lib/canbus.ts +293 -0
- package/lib/{candevice.js → candevice.ts} +14 -21
- package/lib/codes.ts +21 -0
- package/lib/{discovery.js → discovery.ts} +32 -30
- package/lib/fromPgn.ts +1207 -0
- package/lib/{fromPgnStream.js → fromPgnStream.ts} +17 -12
- package/lib/{ikonvert.js → ikonvert.ts} +90 -85
- package/lib/index.ts +48 -0
- package/lib/n2k-actisense.test.js +31 -32
- package/lib/n2k-actisense.ts +152 -0
- package/lib/n2kDevice.ts +458 -0
- package/lib/pgns.test.ts +12 -0
- package/lib/pgns.ts +191 -0
- package/lib/simpleCan.ts +140 -0
- package/lib/stringMsg.test.js +58 -41
- package/lib/stringMsg.ts +464 -0
- package/lib/toPgn.ts +597 -0
- package/lib/{utilities.js → utilities.ts} +48 -37
- package/lib/venus-mqtt.js +69 -73
- package/lib/venus.js +8 -8
- package/lib/{w2k01.js → w2k01.ts} +57 -44
- package/lib/{yddevice.js → yddevice.ts} +18 -13
- package/lib/{ydgw02.js → ydgw02.ts} +55 -47
- package/lib/ydvr.js +65 -147
- package/package.json +54 -18
- package/tsconfig.json +19 -0
- package/tsconfig.tsbuildinfo +1 -0
- package/bin/actisense-file +0 -47
- package/bin/actisense-n2k-tcp +0 -45
- package/bin/actisense-serialjs +0 -52
- package/bin/candumpanalyzerjs +0 -29
- package/bin/cansend +0 -130
- package/bin/ikonvert-serial +0 -50
- package/bin/ydgw-analyzerjs +0 -36
- package/bin/ydvr-file +0 -33
- package/index.js +0 -53
- package/lib/canId.js +0 -64
- package/lib/canbus.js +0 -278
- package/lib/codes.js +0 -69
- package/lib/codes.test.js +0 -17
- package/lib/codesMfgs.json +0 -166
- package/lib/fromPgn.js +0 -1027
- package/lib/n2k-actisense.js +0 -108
- package/lib/n2kDevice.js +0 -390
- package/lib/pgns.js +0 -196
- package/lib/pgns.test.js +0 -13
- package/lib/serial.js +0 -647
- package/lib/simpleCan.js +0 -105
- package/lib/stringMsg.js +0 -339
- package/lib/toPgn.js +0 -518
package/dist/ncanbus.js
ADDED
|
@@ -0,0 +1,92 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.Canbus = void 0;
|
|
4
|
+
exports.CanbusStream = CanbusStream;
|
|
5
|
+
const utilities_1 = require("./utilities");
|
|
6
|
+
const stream_1 = require("stream");
|
|
7
|
+
const debug = (0, utilities_1.createDebug)('canboatjs:canbus');
|
|
8
|
+
function CanbusStream(options) {
|
|
9
|
+
return new Canbus(options);
|
|
10
|
+
}
|
|
11
|
+
class Canbus extends stream_1.Transform {
|
|
12
|
+
plainText;
|
|
13
|
+
options;
|
|
14
|
+
setProviderStatus;
|
|
15
|
+
setProviderError;
|
|
16
|
+
socketcan;
|
|
17
|
+
noDataInterval;
|
|
18
|
+
channel;
|
|
19
|
+
lastDataReceived;
|
|
20
|
+
constructor(options) {
|
|
21
|
+
super();
|
|
22
|
+
this.plainText = false;
|
|
23
|
+
this.options = options;
|
|
24
|
+
this.start();
|
|
25
|
+
this.setProviderStatus =
|
|
26
|
+
options.app && options.app.setProviderStatus
|
|
27
|
+
? (msg) => {
|
|
28
|
+
options.app.setProviderStatus(options.providerId, msg);
|
|
29
|
+
}
|
|
30
|
+
: () => { };
|
|
31
|
+
this.setProviderError =
|
|
32
|
+
options.app && options.app.setProviderError
|
|
33
|
+
? (msg) => {
|
|
34
|
+
options.app.setProviderError(options.providerId, msg);
|
|
35
|
+
}
|
|
36
|
+
: () => { };
|
|
37
|
+
if (options.fromStdIn) {
|
|
38
|
+
return;
|
|
39
|
+
}
|
|
40
|
+
try {
|
|
41
|
+
// eslint-disable-next-line @typescript-eslint/no-require-imports
|
|
42
|
+
this.socketcan = require('socketcan');
|
|
43
|
+
}
|
|
44
|
+
catch (err) {
|
|
45
|
+
console.error(err);
|
|
46
|
+
const msg = 'unable to load native socketcan interface';
|
|
47
|
+
console.error(msg);
|
|
48
|
+
}
|
|
49
|
+
// eslint-disable-next-line @typescript-eslint/no-this-alias
|
|
50
|
+
const that = this;
|
|
51
|
+
if (options.app) {
|
|
52
|
+
options.app.on(options.outEvent || 'nmea2000out', (msg) => {
|
|
53
|
+
that.sendPGN(msg);
|
|
54
|
+
});
|
|
55
|
+
options.app.on(options.jsonOutEvent || 'nmea2000JsonOut', (msg) => {
|
|
56
|
+
that.sendPGN(msg);
|
|
57
|
+
});
|
|
58
|
+
}
|
|
59
|
+
if (this.connect() == false) {
|
|
60
|
+
return;
|
|
61
|
+
}
|
|
62
|
+
const noDataReceivedTimeout = typeof options.noDataReceivedTimeout !== 'undefined'
|
|
63
|
+
? options.noDataReceivedTimeout
|
|
64
|
+
: -1;
|
|
65
|
+
if (noDataReceivedTimeout > 0) {
|
|
66
|
+
this.noDataInterval = setInterval(() => {
|
|
67
|
+
if (this.channel &&
|
|
68
|
+
this.lastDataReceived &&
|
|
69
|
+
Date.now() - this.lastDataReceived > noDataReceivedTimeout * 1000) {
|
|
70
|
+
const channel = this.channel;
|
|
71
|
+
delete this.channel;
|
|
72
|
+
try {
|
|
73
|
+
channel.stop();
|
|
74
|
+
}
|
|
75
|
+
catch (_error) { }
|
|
76
|
+
this.setProviderError('No data received, retrying...');
|
|
77
|
+
if (this.options.app) {
|
|
78
|
+
console.error('No data received, retrying...');
|
|
79
|
+
}
|
|
80
|
+
this.connect();
|
|
81
|
+
}
|
|
82
|
+
}, noDataReceivedTimeout * 1000);
|
|
83
|
+
}
|
|
84
|
+
}
|
|
85
|
+
start() { }
|
|
86
|
+
connect() {
|
|
87
|
+
return true;
|
|
88
|
+
}
|
|
89
|
+
sendPGN(msg, force = false) { }
|
|
90
|
+
}
|
|
91
|
+
exports.Canbus = Canbus;
|
|
92
|
+
//# sourceMappingURL=ncanbus.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ncanbus.js","sourceRoot":"","sources":["../lib/ncanbus.ts"],"names":[],"mappings":"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"}
|
package/dist/pgns.d.ts
ADDED
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
import { EnumBase } from '@canboat/ts-pgns';
|
|
2
|
+
export declare function lookupEnumerationName(enumName: string, value: number): any;
|
|
3
|
+
export declare function lookupEnumerationValue(enumName: string, name: string): any;
|
|
4
|
+
export declare function lookupFieldTypeEnumerationName(enumName: string, value: number): any;
|
|
5
|
+
export declare function lookupFieldTypeEnumerationBits(enumName: string, value: number): any;
|
|
6
|
+
export declare function lookupFieldTypeEnumerationValue(enumName: string, name: string): any;
|
|
7
|
+
export declare function lookupBitEnumerationName(enumName: string, value: number): any;
|
|
8
|
+
export declare function lookupBitEnumerationValue(enumName: string, name: number): any;
|
|
9
|
+
export declare const lookupEnumerations: {
|
|
10
|
+
[key: string]: EnumBase;
|
|
11
|
+
};
|
|
12
|
+
export declare const lookupFieldTypeEnumerations: {
|
|
13
|
+
[key: string]: EnumBase;
|
|
14
|
+
};
|
|
15
|
+
export declare const lookupBitEnumerations: {
|
|
16
|
+
[key: string]: EnumBase;
|
|
17
|
+
};
|
|
18
|
+
export declare const getPgn: (num: number) => import("@canboat/ts-pgns").Definition[] | undefined;
|
|
19
|
+
export declare const customPgns: any;
|
|
20
|
+
export declare const addCustomPgns: (pgns: any, setter: any) => void;
|
|
21
|
+
export declare const getCustomPgn: (pgnNum: number) => any;
|
|
22
|
+
//# sourceMappingURL=pgns.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"pgns.d.ts","sourceRoot":"","sources":["../lib/pgns.ts"],"names":[],"mappings":"AAAA,OAAO,EAEL,QAAQ,EAOT,MAAM,kBAAkB,CAAA;AAwFzB,wBAAgB,qBAAqB,CAAC,QAAQ,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,OAGpE;AAED,wBAAgB,sBAAsB,CAAC,QAAQ,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,OAGpE;AAED,wBAAgB,8BAA8B,CAC5C,QAAQ,EAAE,MAAM,EAChB,KAAK,EAAE,MAAM,OAId;AAED,wBAAgB,8BAA8B,CAC5C,QAAQ,EAAE,MAAM,EAChB,KAAK,EAAE,MAAM,OAId;AAED,wBAAgB,+BAA+B,CAC7C,QAAQ,EAAE,MAAM,EAChB,IAAI,EAAE,MAAM,OAIb;AAED,wBAAgB,wBAAwB,CAAC,QAAQ,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,OAGvE;AAED,wBAAgB,yBAAyB,CAAC,QAAQ,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,OAGvE;AAUD,eAAO,MAAM,kBAAkB;;CAA0C,CAAA;AACzE,eAAO,MAAM,2BAA2B;;CAEvC,CAAA;AACD,eAAO,MAAM,qBAAqB;;CAA6C,CAAA;AAC/E,eAAO,MAAM,MAAM,sEAAS,CAAA;AAC5B,eAAO,MAAM,UAAU,EAAE,GAAQ,CAAA;AAEjC,eAAO,MAAM,aAAa,GAAI,MAAM,GAAG,EAAE,QAAQ,GAAG,SA6BnD,CAAA;AAED,eAAO,MAAM,YAAY,GAAI,QAAQ,MAAM,QAE1C,CAAA"}
|
package/dist/pgns.js
ADDED
|
@@ -0,0 +1,157 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.getCustomPgn = exports.addCustomPgns = exports.customPgns = exports.getPgn = exports.lookupBitEnumerations = exports.lookupFieldTypeEnumerations = exports.lookupEnumerations = void 0;
|
|
4
|
+
exports.lookupEnumerationName = lookupEnumerationName;
|
|
5
|
+
exports.lookupEnumerationValue = lookupEnumerationValue;
|
|
6
|
+
exports.lookupFieldTypeEnumerationName = lookupFieldTypeEnumerationName;
|
|
7
|
+
exports.lookupFieldTypeEnumerationBits = lookupFieldTypeEnumerationBits;
|
|
8
|
+
exports.lookupFieldTypeEnumerationValue = lookupFieldTypeEnumerationValue;
|
|
9
|
+
exports.lookupBitEnumerationName = lookupBitEnumerationName;
|
|
10
|
+
exports.lookupBitEnumerationValue = lookupBitEnumerationValue;
|
|
11
|
+
const ts_pgns_1 = require("@canboat/ts-pgns");
|
|
12
|
+
const utilities_1 = require("./utilities");
|
|
13
|
+
const debug = (0, utilities_1.createDebug)('canboatjs:pgns');
|
|
14
|
+
//const enumValues : {[key:string]: {[key:number]: string}} = {}
|
|
15
|
+
//const enumNames : {[key:string]: {[key:string]: number}} = {}
|
|
16
|
+
const enumValues = {};
|
|
17
|
+
const enumNames = {};
|
|
18
|
+
function getEnumeration(name) {
|
|
19
|
+
const enumeration = exports.lookupEnumerations[name];
|
|
20
|
+
if (enumeration) {
|
|
21
|
+
let vmap = enumValues[name];
|
|
22
|
+
if (!vmap) {
|
|
23
|
+
vmap = {};
|
|
24
|
+
enumValues[name] = vmap;
|
|
25
|
+
enumeration.EnumValues.forEach((enumPair) => {
|
|
26
|
+
vmap[enumPair.Value] = enumPair.Name;
|
|
27
|
+
});
|
|
28
|
+
const nmap = {};
|
|
29
|
+
enumNames[name] = nmap;
|
|
30
|
+
enumeration.EnumValues.forEach((enumPair) => {
|
|
31
|
+
nmap[enumPair.Name] = enumPair.Value;
|
|
32
|
+
});
|
|
33
|
+
}
|
|
34
|
+
}
|
|
35
|
+
return enumeration;
|
|
36
|
+
}
|
|
37
|
+
const ftEnumValues = {};
|
|
38
|
+
const ftEnumNames = {};
|
|
39
|
+
const ftEnumBits = {};
|
|
40
|
+
function getFieldTypeEnumeration(name) {
|
|
41
|
+
const enumeration = exports.lookupFieldTypeEnumerations[name];
|
|
42
|
+
if (enumeration) {
|
|
43
|
+
let vmap = ftEnumValues[name];
|
|
44
|
+
if (!vmap) {
|
|
45
|
+
vmap = {};
|
|
46
|
+
ftEnumValues[name] = vmap;
|
|
47
|
+
enumeration.EnumFieldTypeValues.forEach((enumPair) => {
|
|
48
|
+
vmap[enumPair.value] = enumPair.name;
|
|
49
|
+
});
|
|
50
|
+
const nmap = {};
|
|
51
|
+
ftEnumNames[name] = nmap;
|
|
52
|
+
enumeration.EnumFieldTypeValues.forEach((enumPair) => {
|
|
53
|
+
nmap[enumPair.name] = enumPair.value;
|
|
54
|
+
});
|
|
55
|
+
const bmap = {};
|
|
56
|
+
ftEnumBits[name] = bmap;
|
|
57
|
+
enumeration.EnumFieldTypeValues.forEach((enumPair) => {
|
|
58
|
+
bmap[enumPair.value] = Number(enumPair.Bits);
|
|
59
|
+
});
|
|
60
|
+
}
|
|
61
|
+
}
|
|
62
|
+
return enumeration;
|
|
63
|
+
}
|
|
64
|
+
const bEnumValues = {};
|
|
65
|
+
const bEnumNames = {};
|
|
66
|
+
function getBitEnumeration(name) {
|
|
67
|
+
const enumeration = exports.lookupBitEnumerations[name];
|
|
68
|
+
if (enumeration) {
|
|
69
|
+
let nmap = bEnumNames[name];
|
|
70
|
+
if (!nmap) {
|
|
71
|
+
nmap = {};
|
|
72
|
+
bEnumNames[name] = nmap;
|
|
73
|
+
enumeration.EnumBitValues.forEach((enumPair) => {
|
|
74
|
+
nmap[enumPair.Bit] = enumPair.Name;
|
|
75
|
+
});
|
|
76
|
+
const vmap = {};
|
|
77
|
+
bEnumValues[name] = vmap;
|
|
78
|
+
enumeration.EnumBitValues.forEach((enumPair) => {
|
|
79
|
+
vmap[enumPair.Name] = Number(enumPair.Bit);
|
|
80
|
+
});
|
|
81
|
+
}
|
|
82
|
+
}
|
|
83
|
+
return enumeration;
|
|
84
|
+
}
|
|
85
|
+
function lookupEnumerationName(enumName, value) {
|
|
86
|
+
const enumeration = getEnumeration(enumName);
|
|
87
|
+
return enumeration && enumValues[enumName][value];
|
|
88
|
+
}
|
|
89
|
+
function lookupEnumerationValue(enumName, name) {
|
|
90
|
+
const enumeration = getEnumeration(enumName);
|
|
91
|
+
return enumeration && enumNames[enumName][name];
|
|
92
|
+
}
|
|
93
|
+
function lookupFieldTypeEnumerationName(enumName, value) {
|
|
94
|
+
const enumeration = getFieldTypeEnumeration(enumName);
|
|
95
|
+
return enumeration && ftEnumValues[enumName][value];
|
|
96
|
+
}
|
|
97
|
+
function lookupFieldTypeEnumerationBits(enumName, value) {
|
|
98
|
+
const enumeration = getFieldTypeEnumeration(enumName);
|
|
99
|
+
return enumeration && ftEnumBits[enumName][value];
|
|
100
|
+
}
|
|
101
|
+
function lookupFieldTypeEnumerationValue(enumName, name) {
|
|
102
|
+
const enumeration = getFieldTypeEnumeration(enumName);
|
|
103
|
+
return enumeration && ftEnumNames[enumName][name];
|
|
104
|
+
}
|
|
105
|
+
function lookupBitEnumerationName(enumName, value) {
|
|
106
|
+
const enumeration = getBitEnumeration(enumName);
|
|
107
|
+
return enumeration && bEnumNames[enumName][value];
|
|
108
|
+
}
|
|
109
|
+
function lookupBitEnumerationValue(enumName, name) {
|
|
110
|
+
const enumeration = getBitEnumeration(enumName);
|
|
111
|
+
return enumeration && bEnumValues[enumName][name];
|
|
112
|
+
}
|
|
113
|
+
function organizeEnumerations(enums) {
|
|
114
|
+
const map = {};
|
|
115
|
+
enums.forEach((e) => {
|
|
116
|
+
map[e.Name] = e;
|
|
117
|
+
});
|
|
118
|
+
return map;
|
|
119
|
+
}
|
|
120
|
+
exports.lookupEnumerations = organizeEnumerations((0, ts_pgns_1.getEnumerations)());
|
|
121
|
+
exports.lookupFieldTypeEnumerations = organizeEnumerations((0, ts_pgns_1.getFieldTypeEnumerations)());
|
|
122
|
+
exports.lookupBitEnumerations = organizeEnumerations((0, ts_pgns_1.getBitEnumerations)());
|
|
123
|
+
exports.getPgn = ts_pgns_1.getPGN;
|
|
124
|
+
exports.customPgns = {};
|
|
125
|
+
const addCustomPgns = (pgns, setter) => {
|
|
126
|
+
pgns.PGNs.forEach((pgn) => {
|
|
127
|
+
if (!exports.customPgns[pgn.PGN]) {
|
|
128
|
+
exports.customPgns[pgn.PGN] = {
|
|
129
|
+
definitions: [],
|
|
130
|
+
callbacks: []
|
|
131
|
+
};
|
|
132
|
+
}
|
|
133
|
+
exports.customPgns[pgn.PGN].definitions.push(pgn);
|
|
134
|
+
/*
|
|
135
|
+
if ( pgn.calllback ) {
|
|
136
|
+
customPgns[pgn.PGN].callbacks.push()
|
|
137
|
+
}
|
|
138
|
+
*/
|
|
139
|
+
debug('registered custom pgn %d by %s', pgn.PGN, setter);
|
|
140
|
+
});
|
|
141
|
+
if (pgns.LookupEnumerations) {
|
|
142
|
+
pgns.LookupEnumerations.forEach((e) => {
|
|
143
|
+
if (!exports.lookupEnumerations[e.Name]) {
|
|
144
|
+
exports.lookupEnumerations[e.Name] = e;
|
|
145
|
+
}
|
|
146
|
+
else {
|
|
147
|
+
debug(`enumeration ${e.Name} already exists`);
|
|
148
|
+
}
|
|
149
|
+
});
|
|
150
|
+
}
|
|
151
|
+
};
|
|
152
|
+
exports.addCustomPgns = addCustomPgns;
|
|
153
|
+
const getCustomPgn = (pgnNum) => {
|
|
154
|
+
return exports.customPgns[pgnNum];
|
|
155
|
+
};
|
|
156
|
+
exports.getCustomPgn = getCustomPgn;
|
|
157
|
+
//# sourceMappingURL=pgns.js.map
|
package/dist/pgns.js.map
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"pgns.js","sourceRoot":"","sources":["../lib/pgns.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"pgns.test.d.ts","sourceRoot":"","sources":["../lib/pgns.test.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
const pgns_1 = require("./pgns");
|
|
4
|
+
describe('getPgn', () => {
|
|
5
|
+
test('Return info array about a pgn number', () => {
|
|
6
|
+
const pgns = (0, pgns_1.getPgn)(60928);
|
|
7
|
+
expect(pgns !== undefined);
|
|
8
|
+
if (pgns !== undefined) {
|
|
9
|
+
expect(pgns.length > 0);
|
|
10
|
+
expect(pgns[0].Description).toBe('ISO Address Claim');
|
|
11
|
+
}
|
|
12
|
+
});
|
|
13
|
+
});
|
|
14
|
+
//# sourceMappingURL=pgns.test.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"pgns.test.js","sourceRoot":"","sources":["../lib/pgns.test.ts"],"names":[],"mappings":";;AAAA,iCAA+B;AAE/B,QAAQ,CAAC,QAAQ,EAAE,GAAG,EAAE;IACtB,IAAI,CAAC,sCAAsC,EAAE,GAAG,EAAE;QAChD,MAAM,IAAI,GAAG,IAAA,aAAM,EAAC,KAAK,CAAC,CAAA;QAC1B,MAAM,CAAC,IAAI,KAAK,SAAS,CAAC,CAAA;QAC1B,IAAI,IAAI,KAAK,SAAS,EAAE,CAAC;YACvB,MAAM,CAAC,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC,CAAA;YACvB,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,IAAI,CAAC,mBAAmB,CAAC,CAAA;QACvD,CAAC;IACH,CAAC,CAAC,CAAA;AACJ,CAAC,CAAC,CAAA"}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Copyright 2025 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
|
+
export declare function SimpleCan(this: any, options: any, messageCb: (data: any) => void): void;
|
|
17
|
+
//# sourceMappingURL=simpleCan.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"simpleCan.d.ts","sourceRoot":"","sources":["../lib/simpleCan.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAWH,wBAAgB,SAAS,CACvB,IAAI,EAAE,GAAG,EACT,OAAO,EAAE,GAAG,EACZ,SAAS,EAAE,CAAC,IAAI,EAAE,GAAG,KAAK,IAAI,QAO/B"}
|
|
@@ -0,0 +1,125 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* Copyright 2025 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.SimpleCan = SimpleCan;
|
|
22
|
+
const candevice_1 = require("./candevice");
|
|
23
|
+
const canId_1 = require("./canId");
|
|
24
|
+
const stringMsg_1 = require("./stringMsg");
|
|
25
|
+
const toPgn_1 = require("./toPgn");
|
|
26
|
+
const utilities_1 = require("./utilities");
|
|
27
|
+
const lodash_1 = __importDefault(require("lodash"));
|
|
28
|
+
const debug = (0, utilities_1.createDebug)('canboatjs:simpleCan');
|
|
29
|
+
function SimpleCan(options, messageCb) {
|
|
30
|
+
this.options = options;
|
|
31
|
+
this.messageCb = messageCb;
|
|
32
|
+
this.plainText = false;
|
|
33
|
+
// eslint-disable-next-line @typescript-eslint/no-require-imports
|
|
34
|
+
this.socketcan = require('socketcan');
|
|
35
|
+
}
|
|
36
|
+
SimpleCan.prototype.start = function () {
|
|
37
|
+
const canDevice = this.options.canDevice || 'can0';
|
|
38
|
+
this.channel = this.socketcan.createRawChannel(canDevice);
|
|
39
|
+
if (this.messageCb) {
|
|
40
|
+
this.channel.addListener('onMessage', (msg) => {
|
|
41
|
+
const pgn = (0, canId_1.parseCanId)(msg.id);
|
|
42
|
+
if (this.candevice &&
|
|
43
|
+
this.candevice.cansend &&
|
|
44
|
+
pgn.src == this.candevice.address) {
|
|
45
|
+
return;
|
|
46
|
+
}
|
|
47
|
+
const timestamp = new Date().toISOString();
|
|
48
|
+
if (this.plainText) {
|
|
49
|
+
this.messageCb((0, utilities_1.binToActisense)(pgn, timestamp, msg.data, msg.data.length));
|
|
50
|
+
}
|
|
51
|
+
else {
|
|
52
|
+
this.messageCb({ pgn, length: msg.data.length, data: msg.data });
|
|
53
|
+
}
|
|
54
|
+
});
|
|
55
|
+
}
|
|
56
|
+
this.channel.start();
|
|
57
|
+
this.candevice = new candevice_1.CanDevice(this, {
|
|
58
|
+
...this.options,
|
|
59
|
+
disableDefaultTransmitPGNs: true,
|
|
60
|
+
disableNAKs: true
|
|
61
|
+
});
|
|
62
|
+
this.candevice.start();
|
|
63
|
+
};
|
|
64
|
+
SimpleCan.prototype.sendPGN = function (msg) {
|
|
65
|
+
if (this.candevice) {
|
|
66
|
+
if (!this.candevice.cansend &&
|
|
67
|
+
msg.pgn !== 59904 &&
|
|
68
|
+
msg.pgn !== 60928 &&
|
|
69
|
+
msg.pgn !== 126996) {
|
|
70
|
+
debug('ignoring %j', msg);
|
|
71
|
+
return;
|
|
72
|
+
}
|
|
73
|
+
debug('sending %j', msg);
|
|
74
|
+
const src = msg.pgn === 59904 || msg.forceSrc
|
|
75
|
+
? msg.src
|
|
76
|
+
: this.candevice.address;
|
|
77
|
+
if (lodash_1.default.isString(msg)) {
|
|
78
|
+
const split = msg.split(',');
|
|
79
|
+
split[3] = src;
|
|
80
|
+
msg = split.join(',');
|
|
81
|
+
}
|
|
82
|
+
else {
|
|
83
|
+
msg.src = src;
|
|
84
|
+
if (lodash_1.default.isUndefined(msg.prio)) {
|
|
85
|
+
msg.prio = 3;
|
|
86
|
+
}
|
|
87
|
+
if (lodash_1.default.isUndefined(msg.dst)) {
|
|
88
|
+
msg.dst = 255;
|
|
89
|
+
}
|
|
90
|
+
}
|
|
91
|
+
let canid;
|
|
92
|
+
let buffer;
|
|
93
|
+
let pgn;
|
|
94
|
+
if (lodash_1.default.isObject(msg)) {
|
|
95
|
+
canid = (0, canId_1.encodeCanId)(msg);
|
|
96
|
+
buffer = (0, toPgn_1.toPgn)(msg);
|
|
97
|
+
pgn = msg;
|
|
98
|
+
}
|
|
99
|
+
else {
|
|
100
|
+
pgn = (0, stringMsg_1.parseActisense)(msg);
|
|
101
|
+
canid = (0, canId_1.encodeCanId)(pgn);
|
|
102
|
+
buffer = pgn.data;
|
|
103
|
+
}
|
|
104
|
+
if (debug.enabled) {
|
|
105
|
+
const str = (0, stringMsg_1.toActisenseSerialFormat)(pgn.pgn, buffer, pgn.dst, pgn.src);
|
|
106
|
+
debug(str);
|
|
107
|
+
}
|
|
108
|
+
if (buffer) {
|
|
109
|
+
//seems as though 126720 should always be encoded this way
|
|
110
|
+
if (buffer.length > 8 || pgn.pgn == 126720) {
|
|
111
|
+
const pgns = (0, utilities_1.getPlainPGNs)(buffer);
|
|
112
|
+
pgns.forEach((pbuffer) => {
|
|
113
|
+
this.channel.send({ id: canid, ext: true, data: pbuffer });
|
|
114
|
+
});
|
|
115
|
+
}
|
|
116
|
+
else {
|
|
117
|
+
this.channel.send({ id: canid, ext: true, data: buffer });
|
|
118
|
+
}
|
|
119
|
+
}
|
|
120
|
+
}
|
|
121
|
+
};
|
|
122
|
+
SimpleCan.prototype.sendActisenseFormat = function (msg) {
|
|
123
|
+
this.sendPGN(msg);
|
|
124
|
+
};
|
|
125
|
+
//# sourceMappingURL=simpleCan.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"simpleCan.js","sourceRoot":"","sources":["../lib/simpleCan.ts"],"names":[],"mappings":";AAAA;;;;;;;;;;;;;;GAcG;;;;;AAWH,8BAUC;AAnBD,2CAAuC;AACvC,mCAAwD;AACxD,2CAAqE;AACrE,mCAA+B;AAC/B,2CAAuE;AACvE,oDAAsB;AAEtB,MAAM,KAAK,GAAG,IAAA,uBAAW,EAAC,qBAAqB,CAAC,CAAA;AAEhD,SAAgB,SAAS,CAEvB,OAAY,EACZ,SAA8B;IAE9B,IAAI,CAAC,OAAO,GAAG,OAAO,CAAA;IACtB,IAAI,CAAC,SAAS,GAAG,SAAS,CAAA;IAC1B,IAAI,CAAC,SAAS,GAAG,KAAK,CAAA;IACtB,iEAAiE;IACjE,IAAI,CAAC,SAAS,GAAG,OAAO,CAAC,WAAW,CAAC,CAAA;AACvC,CAAC;AAED,SAAS,CAAC,SAAS,CAAC,KAAK,GAAG;IAC1B,MAAM,SAAS,GAAG,IAAI,CAAC,OAAO,CAAC,SAAS,IAAI,MAAM,CAAA;IAElD,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,SAAS,CAAC,gBAAgB,CAAC,SAAS,CAAC,CAAA;IACzD,IAAI,IAAI,CAAC,SAAS,EAAE,CAAC;QACnB,IAAI,CAAC,OAAO,CAAC,WAAW,CAAC,WAAW,EAAE,CAAC,GAAQ,EAAE,EAAE;YACjD,MAAM,GAAG,GAAG,IAAA,kBAAU,EAAC,GAAG,CAAC,EAAE,CAAC,CAAA;YAE9B,IACE,IAAI,CAAC,SAAS;gBACd,IAAI,CAAC,SAAS,CAAC,OAAO;gBACtB,GAAG,CAAC,GAAG,IAAI,IAAI,CAAC,SAAS,CAAC,OAAO,EACjC,CAAC;gBACD,OAAM;YACR,CAAC;YAED,MAAM,SAAS,GAAG,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE,CAAA;YAC1C,IAAI,IAAI,CAAC,SAAS,EAAE,CAAC;gBACnB,IAAI,CAAC,SAAS,CACZ,IAAA,0BAAc,EAAC,GAAG,EAAE,SAAS,EAAE,GAAG,CAAC,IAAI,EAAE,GAAG,CAAC,IAAI,CAAC,MAAM,CAAC,CAC1D,CAAA;YACH,CAAC;iBAAM,CAAC;gBACN,IAAI,CAAC,SAAS,CAAC,EAAE,GAAG,EAAE,MAAM,EAAE,GAAG,CAAC,IAAI,CAAC,MAAM,EAAE,IAAI,EAAE,GAAG,CAAC,IAAI,EAAE,CAAC,CAAA;YAClE,CAAC;QACH,CAAC,CAAC,CAAA;IACJ,CAAC;IACD,IAAI,CAAC,OAAO,CAAC,KAAK,EAAE,CAAA;IACpB,IAAI,CAAC,SAAS,GAAG,IAAI,qBAAS,CAAC,IAAI,EAAE;QACnC,GAAG,IAAI,CAAC,OAAO;QACf,0BAA0B,EAAE,IAAI;QAChC,WAAW,EAAE,IAAI;KAClB,CAAC,CAAA;IACF,IAAI,CAAC,SAAS,CAAC,KAAK,EAAE,CAAA;AACxB,CAAC,CAAA;AAED,SAAS,CAAC,SAAS,CAAC,OAAO,GAAG,UAAU,GAAQ;IAC9C,IAAI,IAAI,CAAC,SAAS,EAAE,CAAC;QACnB,IACE,CAAC,IAAI,CAAC,SAAS,CAAC,OAAO;YACvB,GAAG,CAAC,GAAG,KAAK,KAAK;YACjB,GAAG,CAAC,GAAG,KAAK,KAAK;YACjB,GAAG,CAAC,GAAG,KAAK,MAAM,EAClB,CAAC;YACD,KAAK,CAAC,aAAa,EAAE,GAAG,CAAC,CAAA;YACzB,OAAM;QACR,CAAC;QAED,KAAK,CAAC,YAAY,EAAE,GAAG,CAAC,CAAA;QAExB,MAAM,GAAG,GACP,GAAG,CAAC,GAAG,KAAK,KAAK,IAAK,GAAW,CAAC,QAAQ;YACxC,CAAC,CAAC,GAAG,CAAC,GAAG;YACT,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,OAAO,CAAA;QAC5B,IAAI,gBAAC,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE,CAAC;YACpB,MAAM,KAAK,GAAG,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,CAAA;YAC5B,KAAK,CAAC,CAAC,CAAC,GAAG,GAAG,CAAA;YACd,GAAG,GAAG,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,CAAA;QACvB,CAAC;aAAM,CAAC;YACN,GAAG,CAAC,GAAG,GAAG,GAAG,CAAA;YACb,IAAI,gBAAC,CAAC,WAAW,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC;gBAC5B,GAAG,CAAC,IAAI,GAAG,CAAC,CAAA;YACd,CAAC;YACD,IAAI,gBAAC,CAAC,WAAW,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC;gBAC3B,GAAG,CAAC,GAAG,GAAG,GAAG,CAAA;YACf,CAAC;QACH,CAAC;QAED,IAAI,KAAa,CAAA;QACjB,IAAI,MAA0B,CAAA;QAE9B,IAAI,GAAG,CAAA;QACP,IAAI,gBAAC,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE,CAAC;YACpB,KAAK,GAAG,IAAA,mBAAW,EAAC,GAAY,CAAC,CAAA;YACjC,MAAM,GAAG,IAAA,aAAK,EAAC,GAAG,CAAC,CAAA;YACnB,GAAG,GAAG,GAAG,CAAA;QACX,CAAC;aAAM,CAAC;YACN,GAAG,GAAG,IAAA,0BAAc,EAAC,GAAG,CAAC,CAAA;YACzB,KAAK,GAAG,IAAA,mBAAW,EAAC,GAAG,CAAC,CAAA;YACxB,MAAM,GAAG,GAAG,CAAC,IAAI,CAAA;QACnB,CAAC;QAED,IAAI,KAAK,CAAC,OAAO,EAAE,CAAC;YAClB,MAAM,GAAG,GAAG,IAAA,mCAAuB,EAAC,GAAG,CAAC,GAAG,EAAE,MAAM,EAAE,GAAG,CAAC,GAAG,EAAE,GAAG,CAAC,GAAG,CAAC,CAAA;YACtE,KAAK,CAAC,GAAG,CAAC,CAAA;QACZ,CAAC;QAED,IAAI,MAAM,EAAE,CAAC;YACX,0DAA0D;YAC1D,IAAI,MAAM,CAAC,MAAM,GAAG,CAAC,IAAI,GAAG,CAAC,GAAG,IAAI,MAAM,EAAE,CAAC;gBAC3C,MAAM,IAAI,GAAG,IAAA,wBAAY,EAAC,MAAM,CAAC,CAAA;gBACjC,IAAI,CAAC,OAAO,CAAC,CAAC,OAAO,EAAE,EAAE;oBACvB,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,EAAE,EAAE,KAAK,EAAE,GAAG,EAAE,IAAI,EAAE,IAAI,EAAE,OAAO,EAAE,CAAC,CAAA;gBAC5D,CAAC,CAAC,CAAA;YACJ,CAAC;iBAAM,CAAC;gBACN,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,EAAE,EAAE,KAAK,EAAE,GAAG,EAAE,IAAI,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC,CAAA;YAC3D,CAAC;QACH,CAAC;IACH,CAAC;AACH,CAAC,CAAA;AAED,SAAS,CAAC,SAAS,CAAC,mBAAmB,GAAG,UAAU,GAAW;IAC7D,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,CAAA;AACnB,CAAC,CAAA"}
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
export declare const isActisense: (input: string) => boolean;
|
|
2
|
+
export declare const parseActisense: (input: string) => any;
|
|
3
|
+
export declare const encodeActisense: ({ pgn, data, timestamp, prio, dst, src }: any) => string;
|
|
4
|
+
export declare const toActisenseSerialFormat: (pgn: any, data: any, dst?: number, src?: number, prio?: number) => any;
|
|
5
|
+
export declare const isActisenseN2KASCII: (input: string) => boolean;
|
|
6
|
+
export declare const parseActisenseN2KASCII: (input: string) => any;
|
|
7
|
+
export declare const encodeActisenseN2KACSII: ({ pgn, data, timestamp, prio, dst, src }: any) => string;
|
|
8
|
+
export declare const isYDRAW: (input: string) => boolean;
|
|
9
|
+
export declare const parseYDRAW: (input: string) => any;
|
|
10
|
+
export declare const encodeYDRAW: ({ data, ...canIdInfo }: any) => string[];
|
|
11
|
+
export declare const encodeYDRAWFull: ({ data, ...canIdInfo }: any) => string[];
|
|
12
|
+
export declare const isPCDIN: (msg: string) => boolean;
|
|
13
|
+
export declare const parsePCDIN: (input: string) => any;
|
|
14
|
+
export declare const encodePCDIN: ({ prefix, pgn, data, dst }: any) => string;
|
|
15
|
+
export declare const isMXPGN: (msg: string) => boolean;
|
|
16
|
+
export declare const parseMXPGN: (input: string, options?: any | undefined) => any;
|
|
17
|
+
export declare const encodeMXPGN: ({ prefix, pgn, prio, src, data }: any) => string;
|
|
18
|
+
export declare const isPDGY: import("lodash/fp").LodashStartsWith1x1;
|
|
19
|
+
export declare const parsePDGY: (input: string) => any;
|
|
20
|
+
export declare const encodePDGY: ({ prefix, pgn, data, dst }: any) => string;
|
|
21
|
+
export declare const isPDGYdebug: import("lodash/fp").LodashStartsWith1x1;
|
|
22
|
+
export declare const parsePDGYdebug: (input: string) => any;
|
|
23
|
+
export declare const isCandump1: import("lodash/fp").LodashStartsWith1x1;
|
|
24
|
+
export declare const parseCandump1: (input: string) => any;
|
|
25
|
+
export declare const isCandump2: import("lodash/fp").LodashStartsWith1x1;
|
|
26
|
+
export declare const parseCandump2: (input: string) => any;
|
|
27
|
+
export declare const isCandump3: import("lodash/fp").LodashStartsWith1x1;
|
|
28
|
+
export declare const parseCandump3: (input: string) => any;
|
|
29
|
+
export declare const parseN2kString: (str: string, options: any) => any;
|
|
30
|
+
export declare const isN2KString: (Target: string) => boolean;
|
|
31
|
+
export declare const isN2KOver0183: (msg: string) => boolean;
|
|
32
|
+
export declare const parseN2KOver0183: (msg: string) => any;
|
|
33
|
+
//# sourceMappingURL=stringMsg.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"stringMsg.d.ts","sourceRoot":"","sources":["../lib/stringMsg.ts"],"names":[],"mappings":"AAyEA,eAAO,MAAM,WAAW,GAAI,OAAO,MAAM,YAEe,CAAA;AAExD,eAAO,MAAM,cAAc,GAAI,OAAO,MAAM,QAQ3C,CAAA;AACD,eAAO,MAAM,eAAe,GAAI,0CAO7B,GAAG,WASO,CAAA;AAEb,eAAO,MAAM,uBAAuB,GAClC,KAAK,GAAG,EACR,MAAM,GAAG,EACT,YAAS,EACT,YAAO,EACP,aAAQ,QAQN,CAAA;AAGJ,eAAO,MAAM,mBAAmB,GAAI,OAAO,MAAM,YAC+B,CAAA;AAChF,eAAO,MAAM,sBAAsB,GAAI,OAAO,MAAM,QAWnD,CAAA;AACD,eAAO,MAAM,uBAAuB,GAAI,0CAOrC,GAAG,WAUL,CAAA;AAGD,eAAO,MAAM,OAAO,GAAI,OAAO,MAAM,YAIpC,CAAA;AACD,eAAO,MAAM,UAAU,GAAI,OAAO,MAAM,QAQvC,CAAA;AAED,eAAO,MAAM,WAAW,GAAI,wBAAwB,GAAG,aAKtD,CAAA;AAGD,eAAO,MAAM,eAAe,GAAI,wBAAwB,GAAG,aAY1D,CAAA;AAeD,eAAO,MAAM,OAAO,GAAI,KAAK,MAAM,YAGlC,CAAA;AACD,eAAO,MAAM,UAAU,GAAI,OAAO,MAAM,QAiBvC,CAAA;AAED,eAAO,MAAM,WAAW,GAAI,4BAKzB,GAAG,WASL,CAAA;AAaD,eAAO,MAAM,OAAO,GAAI,KAAK,MAAM,YAGlC,CAAA;AACD,eAAO,MAAM,UAAU,GACrB,OAAO,MAAM,EACb,UAAS,GAAG,GAAG,SAAqB,QA+BrC,CAAA;AAED,eAAO,MAAM,WAAW,GAAI,kCAMzB,GAAG,WAwBL,CAAA;AAID,eAAO,MAAM,MAAM,yCAAuB,CAAA;AAC1C,eAAO,MAAM,SAAS,GAAI,OAAO,MAAM,QAsBtC,CAAA;AACD,eAAO,MAAM,UAAU,GAAI,4BAA4C,GAAG,WACnB,CAAA;AAEvD,eAAO,MAAM,WAAW,yCAAuB,CAAA;AAC/C,eAAO,MAAM,cAAc,GAAI,OAAO,MAAM,QAc3C,CAAA;AAID,eAAO,MAAM,UAAU,yCAAoB,CAAA;AAC3C,eAAO,MAAM,aAAa,GAAI,OAAO,MAAM,QAK1C,CAAA;AAID,eAAO,MAAM,UAAU,yCAAoB,CAAA;AAC3C,eAAO,MAAM,aAAa,GAAI,OAAO,MAAM,QAM1C,CAAA;AAID,eAAO,MAAM,UAAU,yCAAkB,CAAA;AACzC,eAAO,MAAM,aAAa,GAAI,OAAO,MAAM,QAO1C,CAAA;AAGD,eAAO,MAAM,cAAc,GAAI,KAAK,MAAM,EAAE,SAAS,GAAG,KAAG,GAmC1D,CAAA;AAED,eAAO,MAAM,WAAW,6BAatB,CAAA;AAEF,eAAO,MAAM,aAAa,GAAI,KAAK,MAAM,YAExC,CAAA;AAED,eAAO,MAAM,gBAAgB,GAAI,KAAK,MAAM,QAE3C,CAAA"}
|