@canboat/canboatjs 3.5.3 → 3.7.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/.mocharc.js +2 -3
- package/README.md +610 -27
- package/architecture-diagram.md +209 -0
- package/dist/bin/analyzerjs.js +22 -18
- package/dist/bin/analyzerjs.js.map +1 -1
- package/dist/bin/candumpjs.js +29 -16
- package/dist/bin/candumpjs.js.map +1 -1
- package/dist/bin/utils.d.ts +11 -0
- package/dist/bin/utils.d.ts.map +1 -1
- package/dist/bin/utils.js +56 -1
- package/dist/bin/utils.js.map +1 -1
- package/dist/fromPgn.d.ts +1 -0
- package/dist/fromPgn.d.ts.map +1 -1
- package/dist/fromPgn.js +151 -101
- package/dist/fromPgn.js.map +1 -1
- package/package.json +3 -3
- package/tsconfig.tsbuildinfo +1 -1
|
@@ -0,0 +1,209 @@
|
|
|
1
|
+
# Architecture Diagram: canboatjs, n2k-signalk, and signalk-server Integration
|
|
2
|
+
|
|
3
|
+
## Overview
|
|
4
|
+
This diagram shows how the three main components work together to process marine data from NMEA 2000 devices to Signal K format and beyond.
|
|
5
|
+
|
|
6
|
+
```mermaid
|
|
7
|
+
graph TB
|
|
8
|
+
%% Hardware Layer
|
|
9
|
+
subgraph "Hardware Layer"
|
|
10
|
+
N2K[NMEA 2000 Network]
|
|
11
|
+
ACTISENSE[Actisense NGT-1]
|
|
12
|
+
YDWG[Yacht Devices YDWG-02]
|
|
13
|
+
IKON[Digital Yacht iKonvert]
|
|
14
|
+
MINIPLEX[MiniPlex-3-N2K]
|
|
15
|
+
SOCKETCAN[SocketCAN Interface]
|
|
16
|
+
end
|
|
17
|
+
|
|
18
|
+
%% Data Formats
|
|
19
|
+
subgraph "Raw Data Formats"
|
|
20
|
+
ACT_FMT["Actisense Format<br/>2017-03-13T01:00:00.146Z,2,127245,204,255,8,fc,f8,ff,7f,ff,7f,ff,ff"]
|
|
21
|
+
YDWG_FMT["YDWG Raw Format<br/>16:29:27.082 R 09F8017F 50 C3 B8 13 47 D8 2B C6"]
|
|
22
|
+
IKON_FMT["iKonvert Format<br/>!PDGY,127245,255,/Pj/f/9///8="]
|
|
23
|
+
CANDUMP_FMT["candump Format<br/>can0 09F8027F [8] 00 FC FF FF 00 00 FF FF"]
|
|
24
|
+
PCDIN_FMT["PCDIN Format<br/>$PCDIN,01F119,00000000,0F,2AAF00D1067414FF*59"]
|
|
25
|
+
MXPGN_FMT["MXPGN Format<br/>$MXPGN,01F801,2801,C1308AC40C5DE343*19"]
|
|
26
|
+
end
|
|
27
|
+
|
|
28
|
+
%% canboatjs Layer
|
|
29
|
+
FROMPGN["@canboat/canboatjs<br>FromPGN Parser"]
|
|
30
|
+
TOPGN["@canboat/canboatjs<br>ToPGN Converter"]
|
|
31
|
+
JSON_N2K_OUT["Canboat JSON Format<br/>(for output)"]
|
|
32
|
+
|
|
33
|
+
%% Parsed Data
|
|
34
|
+
subgraph "Parsed N2K Data (JSON)"
|
|
35
|
+
JSON_N2K["Canboat JSON Format<br/><code>{<br/> 'pgn': 127245,<br/> 'src': 204,<br/> 'dst': 255,<br/> 'fields': {<br/> 'Instance': 252,<br/> 'Direction Order': 0,<br/>'Angle Order': 0.1745<br> }<br/>}</code>"]
|
|
36
|
+
end
|
|
37
|
+
style JSON_N2K text-align:left
|
|
38
|
+
|
|
39
|
+
%% n2k-signalk Layer
|
|
40
|
+
N2K_MAPPER["@signalk/n2k-signalk<br>N2kMapper"]
|
|
41
|
+
|
|
42
|
+
%% Signal K Delta
|
|
43
|
+
subgraph "Signal K Delta Format"
|
|
44
|
+
SIGNALK_DELTA["Signal K Delta<br/><code>{<br/> 'context': 'vessels.self',<br/> 'updates': [{<br/>'values': [{<br/> 'path': 'steering.rudderAngle',<br/> 'value': 0.1745<br/> }]<br/> }]<br/>}</code>"]
|
|
45
|
+
end
|
|
46
|
+
style SIGNALK_DELTA text-align:left
|
|
47
|
+
|
|
48
|
+
%% signalk-server Layer
|
|
49
|
+
SIGNALK_SERVER[Signal K Server]
|
|
50
|
+
|
|
51
|
+
%% Client Applications
|
|
52
|
+
subgraph "Client Applications"
|
|
53
|
+
APPS[Navigation Apps<br/>Navionics, iSailor,<br/>iNavX, Aqua Map]
|
|
54
|
+
WILHELMSK[WilhelmSK]
|
|
55
|
+
WIDGETS[Web Widgets]
|
|
56
|
+
CUSTOM_CLIENTS[Custom Applications]
|
|
57
|
+
end
|
|
58
|
+
|
|
59
|
+
%% Output Formats
|
|
60
|
+
subgraph "Output Data Formats"
|
|
61
|
+
NMEA0183_OUT[NMEA 0183 TCP :10110]
|
|
62
|
+
SIGNALK_WS[Signal K WebSocket]
|
|
63
|
+
SIGNALK_REST[Signal K REST API]
|
|
64
|
+
SIGNALK_TCP[Signal K TCP]
|
|
65
|
+
end
|
|
66
|
+
|
|
67
|
+
%% Connections - Hardware to canboatjs
|
|
68
|
+
N2K <--> ACTISENSE
|
|
69
|
+
N2K <--> YDWG
|
|
70
|
+
N2K <--> IKON
|
|
71
|
+
N2K <--> MINIPLEX
|
|
72
|
+
N2K <--> SOCKETCAN
|
|
73
|
+
|
|
74
|
+
ACTISENSE <--> ACT_FMT
|
|
75
|
+
YDWG <--> YDWG_FMT
|
|
76
|
+
IKON <--> IKON_FMT
|
|
77
|
+
SOCKETCAN <--> CANDUMP_FMT
|
|
78
|
+
MINIPLEX <--> MXPGN_FMT
|
|
79
|
+
|
|
80
|
+
%% canboatjs parsing
|
|
81
|
+
ACT_FMT --> FROMPGN
|
|
82
|
+
YDWG_FMT --> FROMPGN
|
|
83
|
+
IKON_FMT --> FROMPGN
|
|
84
|
+
CANDUMP_FMT --> FROMPGN
|
|
85
|
+
PCDIN_FMT --> FROMPGN
|
|
86
|
+
MXPGN_FMT --> FROMPGN
|
|
87
|
+
|
|
88
|
+
FROMPGN --> JSON_N2K
|
|
89
|
+
|
|
90
|
+
%% n2k-signalk conversion
|
|
91
|
+
JSON_N2K --> N2K_MAPPER
|
|
92
|
+
N2K_MAPPER --> SIGNALK_DELTA
|
|
93
|
+
|
|
94
|
+
%% signalk-server processing
|
|
95
|
+
SIGNALK_DELTA --> SIGNALK_SERVER
|
|
96
|
+
|
|
97
|
+
%% Output connections
|
|
98
|
+
SIGNALK_SERVER --> SIGNALK_WS
|
|
99
|
+
SIGNALK_SERVER --> SIGNALK_REST
|
|
100
|
+
SIGNALK_SERVER --> SIGNALK_TCP
|
|
101
|
+
SIGNALK_SERVER --> NMEA0183_OUT
|
|
102
|
+
|
|
103
|
+
%% Client connections
|
|
104
|
+
SIGNALK_WS --> APPS
|
|
105
|
+
SIGNALK_REST --> WIDGETS
|
|
106
|
+
NMEA0183_OUT --> APPS
|
|
107
|
+
SIGNALK_TCP --> CUSTOM_CLIENTS
|
|
108
|
+
SIGNALK_WS --> WILHELMSK
|
|
109
|
+
|
|
110
|
+
%% Reverse flow - Signal K to N2K
|
|
111
|
+
SIGNALK_SERVER --> JSON_N2K_OUT
|
|
112
|
+
JSON_N2K_OUT --> TOPGN
|
|
113
|
+
TOPGN --> ACT_FMT
|
|
114
|
+
|
|
115
|
+
%% Styling
|
|
116
|
+
classDef hardware fill:#e1f5fe,stroke:#0277bd,stroke-width:2px
|
|
117
|
+
classDef format fill:#f3e5f5,stroke:#7b1fa2,stroke-width:2px
|
|
118
|
+
classDef canboatjs fill:#e8f5e8,stroke:#2e7d32,stroke-width:2px
|
|
119
|
+
classDef n2ksignalk fill:#fff3e0,stroke:#ef6c00,stroke-width:2px
|
|
120
|
+
classDef signalkserver fill:#e0f2f1,stroke:#00695c,stroke-width:2px
|
|
121
|
+
classDef output fill:#fce4ec,stroke:#c2185b,stroke-width:2px
|
|
122
|
+
classDef clients fill:#f1f8e9,stroke:#558b2f,stroke-width:2px
|
|
123
|
+
|
|
124
|
+
class N2K,CAN,ACTISENSE,YDWG,IKON,MINIPLEX,SOCKETCAN hardware
|
|
125
|
+
class ACT_FMT,YDWG_FMT,IKON_FMT,CANDUMP_FMT,PCDIN_FMT,MXPGN_FMT,JSON_N2K_OUT format
|
|
126
|
+
class FROMPGN canboatjs
|
|
127
|
+
class TOPGN canboatjs
|
|
128
|
+
class N2K_MAPPER,DELTA_CONV,STANDARD_PGNS,FUSION_PGNS,LOWRANCE_PGNS,RAYMARINE_PGNS,MARETRON_PGNS,ACTISENSE_PGNS,DIGITALYACHT_PGNS,SIMRAD_PGNS n2ksignalk
|
|
129
|
+
class SIGNALK_SERVER signalkserver
|
|
130
|
+
class NMEA0183_OUT,SIGNALK_WS,SIGNALK_REST,SIGNALK_TCP output
|
|
131
|
+
class APPS,WIDGETS,CUSTOM_CLIENTS,WILHELMSK clients
|
|
132
|
+
```
|
|
133
|
+
|
|
134
|
+
## Data Flow Explanation
|
|
135
|
+
|
|
136
|
+
### 1. **Hardware Layer**
|
|
137
|
+
- **NMEA 2000 Network**: Marine electronics network using CAN bus protocol
|
|
138
|
+
- **Gateways**: Various hardware devices that bridge NMEA 2000 to serial/ethernet/wifi
|
|
139
|
+
- **Interfaces**: Direct CAN bus interfaces for Linux systems
|
|
140
|
+
|
|
141
|
+
### 2. **canboatjs (@canboat/canboatjs)**
|
|
142
|
+
**Purpose**: Parse and encode NMEA 2000 data in various formats
|
|
143
|
+
- **FromPgn Parser**: Core parser that converts various N2K formats to standardized JSON
|
|
144
|
+
|
|
145
|
+
**Key Features**:
|
|
146
|
+
- Multi-format input support (Actisense, YDWG, iKonvert, etc.)
|
|
147
|
+
- Real-time stream processing
|
|
148
|
+
- Bidirectional conversion (parse and generate)
|
|
149
|
+
- Hardware abstraction layer
|
|
150
|
+
|
|
151
|
+
### 3. **n2k-signalk (@signalk/n2k-signalk)**
|
|
152
|
+
**Purpose**: Convert parsed NMEA 2000 JSON to Signal K delta format
|
|
153
|
+
- **N2kMapper**: Main conversion engine
|
|
154
|
+
- **PGN Mappings**: Manufacturer-specific and standard PGN definitions
|
|
155
|
+
- **Delta Converter**: Transforms N2K data to Signal K delta updates
|
|
156
|
+
|
|
157
|
+
**Key Features**:
|
|
158
|
+
- Comprehensive PGN coverage
|
|
159
|
+
- Manufacturer-specific extensions
|
|
160
|
+
- Signal K delta format output
|
|
161
|
+
- Custom mapping support
|
|
162
|
+
|
|
163
|
+
### 4. **signalk-server**
|
|
164
|
+
**Purpose**: Central hub for marine data processing and distribution
|
|
165
|
+
- **Stream Processors**: Handle different data types and formats
|
|
166
|
+
- **Data Providers**: Connect to various data sources
|
|
167
|
+
- **Plugin System**: Extensible architecture for custom functionality
|
|
168
|
+
- **Network Interfaces**: Serve data via HTTP, WebSocket, TCP, etc.
|
|
169
|
+
|
|
170
|
+
**Key Features**:
|
|
171
|
+
- Multi-protocol support (NMEA 2000, NMEA 0183, Signal K)
|
|
172
|
+
- Web-based administration interface
|
|
173
|
+
- Plugin ecosystem for extensions
|
|
174
|
+
- Real-time data streaming
|
|
175
|
+
- Format conversion and bridging
|
|
176
|
+
|
|
177
|
+
## Integration Points
|
|
178
|
+
|
|
179
|
+
### **canboatjs → n2k-signalk**
|
|
180
|
+
- canboatjs parses raw N2K data into standardized JSON format
|
|
181
|
+
- n2k-signalk consumes this JSON and converts it to Signal K deltas
|
|
182
|
+
- Both libraries share common PGN definitions from @canboat/ts-pgns
|
|
183
|
+
|
|
184
|
+
### **n2k-signalk → signalk-server**
|
|
185
|
+
- signalk-server uses n2k-signalk as a stream processor
|
|
186
|
+
- N2K data flows through canboatjs → n2k-signalk → Signal K deltas
|
|
187
|
+
- Server maintains device metadata and manages data flow
|
|
188
|
+
|
|
189
|
+
## Output Capabilities
|
|
190
|
+
|
|
191
|
+
### **Data Formats**
|
|
192
|
+
- **Signal K**: Native JSON format via WebSocket and REST APIs
|
|
193
|
+
- **NMEA 0183**: Converted output via TCP for legacy applications
|
|
194
|
+
- **NMEA 2000**: Bidirectional N2K communication
|
|
195
|
+
|
|
196
|
+
### **Client Applications**
|
|
197
|
+
- **Navigation Apps**: Navionics, iSailor, iNavX, Aqua Map via NMEA 0183 TCP
|
|
198
|
+
- **Signal K Apps**: WilhelmSK and custom applications via Signal K APIs
|
|
199
|
+
- **Web Applications**: Browser-based instruments and controls
|
|
200
|
+
- **Custom Clients**: Direct API access for specialized applications
|
|
201
|
+
|
|
202
|
+
## Key Benefits
|
|
203
|
+
|
|
204
|
+
1. **Multi-Format Support**: Handle various proprietary formats from different manufacturers
|
|
205
|
+
2. **Real-Time Processing**: Stream-based architecture for live data
|
|
206
|
+
3. **Extensibility**: Plugin system and custom mappings
|
|
207
|
+
4. **Standardization**: Convert proprietary formats to open Signal K standard
|
|
208
|
+
5. **Bridging**: Connect legacy NMEA 0183 apps to modern NMEA 2000 networks
|
|
209
|
+
6. **Device Integration**: Support for multiple hardware interfaces and protocols
|
package/dist/bin/analyzerjs.js
CHANGED
|
@@ -9,9 +9,10 @@ const minimist_1 = __importDefault(require("minimist"));
|
|
|
9
9
|
const readline_1 = __importDefault(require("readline"));
|
|
10
10
|
const utils_1 = require("./utils");
|
|
11
11
|
const fs_1 = __importDefault(require("fs"));
|
|
12
|
+
const util_1 = __importDefault(require("util"));
|
|
12
13
|
const argv = (0, minimist_1.default)(process.argv.slice(2), {
|
|
13
14
|
alias: { h: 'help' },
|
|
14
|
-
string: ['pgn', 'manufacturer', 'file'],
|
|
15
|
+
string: ['pgn', 'manufacturer', 'src', 'file', 'dst', 'filter'],
|
|
15
16
|
boolean: [
|
|
16
17
|
'n',
|
|
17
18
|
'r',
|
|
@@ -21,7 +22,9 @@ const argv = (0, minimist_1.default)(process.argv.slice(2), {
|
|
|
21
22
|
//'show-create-pgns',
|
|
22
23
|
'pretty',
|
|
23
24
|
'show-warnings',
|
|
24
|
-
'coalesced'
|
|
25
|
+
'coalesced',
|
|
26
|
+
'js',
|
|
27
|
+
'js-colors'
|
|
25
28
|
]
|
|
26
29
|
});
|
|
27
30
|
(0, utils_1.printVersion)(argv);
|
|
@@ -33,7 +36,9 @@ Options:
|
|
|
33
36
|
-n output null values
|
|
34
37
|
-r parse $MXPGN as little endian
|
|
35
38
|
--file <path> read from the given file
|
|
36
|
-
--pretty pretty json
|
|
39
|
+
--pretty output pretty json
|
|
40
|
+
--js output in JavaScript format
|
|
41
|
+
--js-colors output in JavaScript format with colors
|
|
37
42
|
--camel output field names in camelCase
|
|
38
43
|
--camel-compat output field names in camelCase and regular
|
|
39
44
|
--show-non-matches show pgn data without any matches
|
|
@@ -41,7 +46,10 @@ Options:
|
|
|
41
46
|
--coalesced force coalesced format
|
|
42
47
|
--fast force fast format
|
|
43
48
|
--pgn <number> filter for the given pgn number
|
|
49
|
+
--src <number> filter for the given source address
|
|
50
|
+
--dst <number> filter for the given destination address
|
|
44
51
|
--manufacturer <str> filter for pgns from the given manufacturer
|
|
52
|
+
--filter <js> filter for the given JavaScript expression
|
|
45
53
|
-h, --help output usage information`);
|
|
46
54
|
process.exit(1);
|
|
47
55
|
}
|
|
@@ -52,11 +60,7 @@ if (argv['coalesced']) {
|
|
|
52
60
|
else if (argv['fast']) {
|
|
53
61
|
format = 0;
|
|
54
62
|
}
|
|
55
|
-
|
|
56
|
-
const manufacturer_filter = argv['manufacturer'];
|
|
57
|
-
if (pgn_filter !== undefined && Array.isArray(pgn_filter) === false) {
|
|
58
|
-
pgn_filter = [pgn_filter];
|
|
59
|
-
}
|
|
63
|
+
const filter = (0, utils_1.setupFilters)(argv);
|
|
60
64
|
const parser = new fromPgn_1.Parser({
|
|
61
65
|
returnNulls: argv['n'] === true,
|
|
62
66
|
littleEndianMXPGN: argv['r'] === true,
|
|
@@ -107,17 +111,17 @@ rl.on('line', (line) => {
|
|
|
107
111
|
else {
|
|
108
112
|
pgn = parser.parseString(line.trim());
|
|
109
113
|
}
|
|
110
|
-
if (pgn &&
|
|
111
|
-
(
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
114
|
+
if (pgn && (0, utils_1.filterPGN)(pgn, filter)) {
|
|
115
|
+
if (argv['js'] || argv['js-colors']) {
|
|
116
|
+
console.log(util_1.default.inspect(pgn, {
|
|
117
|
+
depth: null,
|
|
118
|
+
colors: argv['js-colors'],
|
|
119
|
+
breakLength: 1
|
|
120
|
+
}));
|
|
121
|
+
}
|
|
122
|
+
else {
|
|
123
|
+
console.log(JSON.stringify(pgn, null, argv['pretty'] ? 2 : 0));
|
|
119
124
|
}
|
|
120
|
-
console.log(JSON.stringify(pgn, null, argv['pretty'] ? 2 : 0));
|
|
121
125
|
}
|
|
122
126
|
});
|
|
123
127
|
//# sourceMappingURL=analyzerjs.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"analyzerjs.js","sourceRoot":"","sources":["../../lib/bin/analyzerjs.ts"],"names":[],"mappings":";;;;;;AAGA,wCAAmC;AACnC,wDAA+B;AAC/B,wDAA+B;AAC/B,
|
|
1
|
+
{"version":3,"file":"analyzerjs.js","sourceRoot":"","sources":["../../lib/bin/analyzerjs.ts"],"names":[],"mappings":";;;;;;AAGA,wCAAmC;AACnC,wDAA+B;AAC/B,wDAA+B;AAC/B,mCAA+D;AAC/D,4CAAmB;AACnB,gDAAuB;AAEvB,MAAM,IAAI,GAAG,IAAA,kBAAQ,EAAC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE;IAC3C,KAAK,EAAE,EAAE,CAAC,EAAE,MAAM,EAAE;IACpB,MAAM,EAAE,CAAC,KAAK,EAAE,cAAc,EAAE,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,QAAQ,CAAC;IAC/D,OAAO,EAAE;QACP,GAAG;QACH,GAAG;QACH,OAAO;QACP,cAAc;QACd,kBAAkB;QAClB,qBAAqB;QACrB,QAAQ;QACR,eAAe;QACf,WAAW;QACX,IAAI;QACJ,WAAW;KACZ;CACF,CAAC,CAAA;AAEF,IAAA,oBAAY,EAAC,IAAI,CAAC,CAAA;AAElB,IAAI,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC;IACjB,OAAO,CAAC,KAAK,CAAC,UAAU,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC;;;;;;;;;;;;;;;;;;;;;iDAqBQ,CAAC,CAAA;IAChD,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAA;AACjB,CAAC;AAED,IAAI,MAAM,GAAuB,SAAS,CAAA;AAC1C,IAAI,IAAI,CAAC,WAAW,CAAC,EAAE,CAAC;IACtB,MAAM,GAAG,CAAC,CAAA;AACZ,CAAC;KAAM,IAAI,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC;IACxB,MAAM,GAAG,CAAC,CAAA;AACZ,CAAC;AAED,MAAM,MAAM,GAAG,IAAA,oBAAY,EAAC,IAAI,CAAC,CAAA;AAEjC,MAAM,MAAM,GAAG,IAAI,gBAAM,CAAC;IACxB,WAAW,EAAE,IAAI,CAAC,GAAG,CAAC,KAAK,IAAI;IAC/B,iBAAiB,EAAE,IAAI,CAAC,GAAG,CAAC,KAAK,IAAI;IACrC,qBAAqB,EAAE,IAAI,CAAC,GAAG,CAAC,KAAK,IAAI;IACzC,QAAQ,EAAE,IAAI,CAAC,OAAO,CAAC;IACvB,cAAc,EAAE,IAAI,CAAC,cAAc,CAAC;IACpC,gBAAgB,EAAE,IAAI,CAAC,kBAAkB,CAAC;IAC1C,MAAM;CACP,CAAC,CAAA;AAEF,MAAM,CAAC,EAAE,CAAC,OAAO,EAAE,CAAC,GAAQ,EAAE,KAAU,EAAE,EAAE;IAC1C,OAAO,CAAC,KAAK,CAAC,iBAAiB,GAAG,CAAC,GAAG,IAAI,KAAK,EAAE,CAAC,CAAA;IAClD,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,CAAA;AAC5B,CAAC,CAAC,CAAA;AAEF,MAAM,CAAC,EAAE,CAAC,SAAS,EAAE,CAAC,GAAQ,EAAE,KAAU,EAAE,EAAE;IAC5C,IAAI,IAAI,CAAC,eAAe,CAAC,EAAE,CAAC;QAC1B,OAAO,CAAC,KAAK,CAAC,mBAAmB,GAAG,CAAC,GAAG,IAAI,KAAK,EAAE,CAAC,CAAA;IACtD,CAAC;AACH,CAAC,CAAC,CAAA;AAEF,IAAI,EAAE,CAAA;AACN,MAAM,IAAI,GAAG,IAAI,CAAC,MAAM,CAAC,CAAA;AACzB,IAAI,IAAI,EAAE,CAAC;IACT,MAAM,UAAU,GAAG,YAAE,CAAC,gBAAgB,CAAC,IAAI,CAAC,CAAA;IAC5C,EAAE,GAAG,kBAAQ,CAAC,eAAe,CAAC;QAC5B,KAAK,EAAE,UAAU;QACjB,SAAS,EAAE,QAAQ,CAAC,oEAAoE;KACzF,CAAC,CAAA;AACJ,CAAC;KAAM,CAAC;IACN,EAAE,GAAG,kBAAQ,CAAC,eAAe,CAAC;QAC5B,KAAK,EAAE,OAAO,CAAC,KAAK;QACpB,MAAM,EAAE,OAAO,CAAC,MAAM;QACtB,QAAQ,EAAE,KAAK;KAChB,CAAC,CAAA;AACJ,CAAC;AAED,EAAE,CAAC,EAAE,CAAC,MAAM,EAAE,CAAC,IAAY,EAAE,EAAE;IAC7B,IAAI,IAAI,CAAC,WAAW,CAAC,EAAE,CAAC;QACtB,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,CAAA;IACnB,CAAC;IACD,IAAI,IAAI,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACtB,OAAM;IACR,CAAC;IACD,IAAI,GAAoB,CAAA;IACxB,IAAI,IAAI,CAAC,MAAM,GAAG,EAAE,IAAI,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC,KAAK,GAAG,EAAE,CAAC;QAChD,IAAI,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC,KAAK,GAAG,EAAE,CAAC;YAC5B,GAAG,GAAG,MAAM,CAAC,WAAW,CAAC,IAAI,CAAC,SAAS,CAAC,EAAE,CAAC,CAAC,CAAA;QAC9C,CAAC;IACH,CAAC;SAAM,CAAC;QACN,GAAG,GAAG,MAAM,CAAC,WAAW,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC,CAAA;IACvC,CAAC;IAED,IAAI,GAAG,IAAI,IAAA,iBAAS,EAAC,GAAG,EAAE,MAAM,CAAC,EAAE,CAAC;QAClC,IAAI,IAAI,CAAC,IAAI,CAAC,IAAI,IAAI,CAAC,WAAW,CAAC,EAAE,CAAC;YACpC,OAAO,CAAC,GAAG,CACT,cAAI,CAAC,OAAO,CAAC,GAAG,EAAE;gBAChB,KAAK,EAAE,IAAI;gBACX,MAAM,EAAE,IAAI,CAAC,WAAW,CAAC;gBACzB,WAAW,EAAE,CAAC;aACf,CAAC,CACH,CAAA;QACH,CAAC;aAAM,CAAC;YACN,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,GAAG,EAAE,IAAI,EAAE,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAA;QAChE,CAAC;IACH,CAAC;AACH,CAAC,CAAC,CAAA"}
|
package/dist/bin/candumpjs.js
CHANGED
|
@@ -9,14 +9,24 @@ const canId_1 = require("../canId");
|
|
|
9
9
|
const minimist_1 = __importDefault(require("minimist"));
|
|
10
10
|
const utilities_1 = require("../utilities");
|
|
11
11
|
const utils_1 = require("./utils");
|
|
12
|
+
const util_1 = __importDefault(require("util"));
|
|
12
13
|
// eslint-disable-next-line @typescript-eslint/no-require-imports
|
|
13
14
|
const socketcan = require('socketcan');
|
|
14
15
|
const argv = (0, minimist_1.default)(process.argv.slice(2), {
|
|
15
16
|
alias: {
|
|
16
17
|
h: 'help'
|
|
17
18
|
},
|
|
18
|
-
string: ['format', 'manufacturer'],
|
|
19
|
-
boolean: [
|
|
19
|
+
string: ['format', 'manufacturer', 'src', 'pgn', 'dst', 'filter'],
|
|
20
|
+
boolean: [
|
|
21
|
+
'n',
|
|
22
|
+
'r',
|
|
23
|
+
'camel',
|
|
24
|
+
'camel-compat',
|
|
25
|
+
'show-non-matches',
|
|
26
|
+
'pretty',
|
|
27
|
+
'js',
|
|
28
|
+
'js-colors'
|
|
29
|
+
]
|
|
20
30
|
});
|
|
21
31
|
(0, utils_1.printVersion)(argv);
|
|
22
32
|
if (argv['help']) {
|
|
@@ -27,12 +37,17 @@ Options:
|
|
|
27
37
|
-c don't check for invalid values
|
|
28
38
|
-n output null values
|
|
29
39
|
-r parse $MXPGN as little endian
|
|
30
|
-
--pretty pretty json
|
|
40
|
+
--pretty pretty json
|
|
41
|
+
--js output in JavaScript format
|
|
42
|
+
--js-colors output in JavaScript format with colors
|
|
31
43
|
--camel output field names in camelCase
|
|
32
44
|
--camel-compat output field names in camelCase and regular
|
|
33
45
|
--show-non-matches show pgn data without any matches
|
|
34
46
|
--pgn <number> filter for the given pgn number
|
|
47
|
+
--src <number> filter for the given source address
|
|
48
|
+
--dst <number> filter for the given destination address
|
|
35
49
|
--manufacturer <str> filter for pgns from the given manufacturer
|
|
50
|
+
--filter <js> filter for the given JavaScript expression
|
|
36
51
|
-h, --help output usage information`);
|
|
37
52
|
process.exit(1);
|
|
38
53
|
}
|
|
@@ -40,11 +55,7 @@ if (argv['_'].length === 0) {
|
|
|
40
55
|
console.error('Please specify a device');
|
|
41
56
|
process.exit(1);
|
|
42
57
|
}
|
|
43
|
-
|
|
44
|
-
const manufacturer_filter = argv['manufacturer'];
|
|
45
|
-
if (pgn_filter !== undefined && Array.isArray(pgn_filter) === false) {
|
|
46
|
-
pgn_filter = [pgn_filter];
|
|
47
|
-
}
|
|
58
|
+
const filter = (0, utils_1.setupFilters)(argv);
|
|
48
59
|
const parser = new index_1.FromPgn({
|
|
49
60
|
returnNulls: argv['n'] === true,
|
|
50
61
|
littleEndianMXPGN: argv['r'] === true,
|
|
@@ -59,15 +70,17 @@ parser.on('error', (pgn, error) => {
|
|
|
59
70
|
console.error(error.stack);
|
|
60
71
|
});
|
|
61
72
|
parser.on('pgn', (pgn) => {
|
|
62
|
-
if (
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
}
|
|
73
|
+
if ((0, utils_1.filterPGN)(pgn, filter)) {
|
|
74
|
+
if (argv['js'] || argv['js-colors']) {
|
|
75
|
+
console.log(util_1.default.inspect(pgn, {
|
|
76
|
+
depth: null,
|
|
77
|
+
colors: argv['js-colors'],
|
|
78
|
+
breakLength: 1
|
|
79
|
+
}));
|
|
80
|
+
}
|
|
81
|
+
else {
|
|
82
|
+
console.log(JSON.stringify(pgn, null, argv['pretty'] ? 2 : 0));
|
|
69
83
|
}
|
|
70
|
-
console.log(JSON.stringify(pgn, null, argv['pretty'] ? 2 : 0));
|
|
71
84
|
}
|
|
72
85
|
});
|
|
73
86
|
const canDevice = argv['_'][0];
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"candumpjs.js","sourceRoot":"","sources":["../../lib/bin/candumpjs.ts"],"names":[],"mappings":";;;;;;AAEA,oCAAkC;AAClC,oCAAqC;AACrC,wDAA+B;AAC/B,4CAA6C;AAC7C,
|
|
1
|
+
{"version":3,"file":"candumpjs.js","sourceRoot":"","sources":["../../lib/bin/candumpjs.ts"],"names":[],"mappings":"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"}
|
package/dist/bin/utils.d.ts
CHANGED
|
@@ -1,4 +1,15 @@
|
|
|
1
|
+
import { PGN } from '@canboat/ts-pgns';
|
|
1
2
|
export declare const printVersion: (argv: {
|
|
2
3
|
[key: string]: any;
|
|
3
4
|
}) => void;
|
|
5
|
+
export declare const setupFilters: (argv: {
|
|
6
|
+
[key: string]: any;
|
|
7
|
+
}) => {
|
|
8
|
+
pgn_filter: any;
|
|
9
|
+
manufacturer_filter: any;
|
|
10
|
+
src_filter: any;
|
|
11
|
+
dst_filter: any;
|
|
12
|
+
js_filter: any;
|
|
13
|
+
};
|
|
14
|
+
export declare const filterPGN: (pgn: PGN, filter: any) => boolean;
|
|
4
15
|
//# sourceMappingURL=utils.d.ts.map
|
package/dist/bin/utils.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../../lib/bin/utils.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../../lib/bin/utils.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,GAAG,EAAE,MAAM,kBAAkB,CAAA;AAGtC,eAAO,MAAM,YAAY,GAAI,MAAM;IAAE,CAAC,GAAG,EAAE,MAAM,GAAG,GAAG,CAAA;CAAE,SAKxD,CAAA;AAED,eAAO,MAAM,YAAY,GAAI,MAAM;IAAE,CAAC,GAAG,EAAE,MAAM,GAAG,GAAG,CAAA;CAAE;;;;;;CA8BxD,CAAA;AAED,eAAO,MAAM,SAAS,GAAI,KAAK,GAAG,EAAE,QAAQ,GAAG,KAAG,OA6BjD,CAAA"}
|
package/dist/bin/utils.js
CHANGED
|
@@ -3,7 +3,7 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
|
3
3
|
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
4
|
};
|
|
5
5
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
-
exports.printVersion = void 0;
|
|
6
|
+
exports.filterPGN = exports.setupFilters = exports.printVersion = void 0;
|
|
7
7
|
const package_json_1 = __importDefault(require("../../package.json"));
|
|
8
8
|
const printVersion = (argv) => {
|
|
9
9
|
if (argv['version']) {
|
|
@@ -12,4 +12,59 @@ const printVersion = (argv) => {
|
|
|
12
12
|
}
|
|
13
13
|
};
|
|
14
14
|
exports.printVersion = printVersion;
|
|
15
|
+
const setupFilters = (argv) => {
|
|
16
|
+
let pgn_filter = argv['pgn'];
|
|
17
|
+
const manufacturer_filter = argv['manufacturer'];
|
|
18
|
+
if (pgn_filter !== undefined && Array.isArray(pgn_filter) === false) {
|
|
19
|
+
pgn_filter = [pgn_filter];
|
|
20
|
+
}
|
|
21
|
+
let src_filter = argv['src'];
|
|
22
|
+
if (src_filter !== undefined && Array.isArray(src_filter) === false) {
|
|
23
|
+
src_filter = [src_filter];
|
|
24
|
+
}
|
|
25
|
+
let dst_filter = argv['dst'];
|
|
26
|
+
if (dst_filter !== undefined && Array.isArray(dst_filter) === false) {
|
|
27
|
+
dst_filter = [dst_filter];
|
|
28
|
+
}
|
|
29
|
+
let js_filter = argv['filter'];
|
|
30
|
+
if (js_filter !== undefined) {
|
|
31
|
+
try {
|
|
32
|
+
js_filter = new Function('pgn', `return ${js_filter}`);
|
|
33
|
+
}
|
|
34
|
+
catch (e) {
|
|
35
|
+
console.error(`Invalid filter expression: ${e.message}`);
|
|
36
|
+
process.exit(1);
|
|
37
|
+
}
|
|
38
|
+
}
|
|
39
|
+
return { pgn_filter, manufacturer_filter, src_filter, dst_filter, js_filter };
|
|
40
|
+
};
|
|
41
|
+
exports.setupFilters = setupFilters;
|
|
42
|
+
const filterPGN = (pgn, filter) => {
|
|
43
|
+
if ((filter.pgn_filter === undefined ||
|
|
44
|
+
filter.pgn_filter.find((p) => pgn.pgn === Number(p))) &&
|
|
45
|
+
(filter.src_filter === undefined ||
|
|
46
|
+
filter.src_filter.find((s) => pgn.src === Number(s))) &&
|
|
47
|
+
(filter.dst_filter === undefined ||
|
|
48
|
+
filter.dst_filter.find((d) => pgn.dst === Number(d)))) {
|
|
49
|
+
if (filter.manufacturer_filter !== undefined) {
|
|
50
|
+
const manufacturer = pgn.fields.manufacturerCode ||
|
|
51
|
+
pgn.fields['Manufacturer Code'];
|
|
52
|
+
if (manufacturer !== filter.manufacturer_filter) {
|
|
53
|
+
return false;
|
|
54
|
+
}
|
|
55
|
+
}
|
|
56
|
+
if (filter.js_filter !== undefined) {
|
|
57
|
+
try {
|
|
58
|
+
return filter.js_filter(pgn);
|
|
59
|
+
}
|
|
60
|
+
catch (e) {
|
|
61
|
+
console.error(`Error evaluating filter on PGN ${pgn.pgn}: ${e.message}`);
|
|
62
|
+
return false;
|
|
63
|
+
}
|
|
64
|
+
}
|
|
65
|
+
return true;
|
|
66
|
+
}
|
|
67
|
+
return false;
|
|
68
|
+
};
|
|
69
|
+
exports.filterPGN = filterPGN;
|
|
15
70
|
//# sourceMappingURL=utils.js.map
|
package/dist/bin/utils.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"utils.js","sourceRoot":"","sources":["../../lib/bin/utils.ts"],"names":[],"mappings":";;;;;;
|
|
1
|
+
{"version":3,"file":"utils.js","sourceRoot":"","sources":["../../lib/bin/utils.ts"],"names":[],"mappings":"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"}
|
package/dist/fromPgn.d.ts
CHANGED
|
@@ -34,6 +34,7 @@ export declare class Parser extends EventEmitter {
|
|
|
34
34
|
constructor(opts?: any);
|
|
35
35
|
_parse(pgn: PGN, bs: BitStream, len: number, coalesced: boolean, cb: FromPgnCallback | undefined, sourceString?: string | undefined): PGN | undefined;
|
|
36
36
|
setField(res: any, field: Field, value: any): void;
|
|
37
|
+
getField(res: any, field: Field): any;
|
|
37
38
|
findNonMatchPgn(pgnList: Definition[]): Definition | undefined;
|
|
38
39
|
findMatchPgn(pgnList: Definition[]): Definition | undefined;
|
|
39
40
|
parse(data: any, cb?: FromPgnCallback | undefined): PGN | undefined;
|
package/dist/fromPgn.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"fromPgn.d.ts","sourceRoot":"","sources":["../lib/fromPgn.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAEH,OAAO,EACL,UAAU,EACV,KAAK,EACL,GAAG,EAUJ,MAAM,kBAAkB,CAAA;AAIzB,QAAA,MAAM,YAAY,KAAoB,CAAA;AAItC,OAAO,EAAE,SAAS,EAAW,MAAM,YAAY,CAAA;AAc/C,MAAM,MAAM,eAAe,GAAG,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,GAAG,SAAS,KAAK,IAAI,CAAA;AACtE,MAAM,MAAM,aAAa,GAAG,CAAC,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,GAAG,KAAK,GAAG,CAAA;AAuB7D,qBAAa,MAAO,SAAQ,YAAY;IACtC,OAAO,EAAE,GAAG,CAAA;IACZ,IAAI,EAAE,MAAM,CAAA;IACZ,OAAO,EAAE,MAAM,CAAA;IACf,MAAM,EAAE,MAAM,CAAA;IACd,OAAO,EAAE,MAAM,CAAA;IACf,MAAM,EAAE,MAAM,CAAA;IACd,OAAO,EAAE;QAAE,CAAC,GAAG,EAAE,MAAM,GAAG;YAAE,CAAC,GAAG,EAAE,MAAM,GAAG,GAAG,CAAA;SAAE,CAAA;KAAE,CAAA;IAClD,WAAW,EAAE,OAAO,CAAA;gBAER,IAAI,GAAE,GAAQ;IA2C1B,MAAM,CACJ,GAAG,EAAE,GAAG,EACR,EAAE,EAAE,SAAS,EACb,GAAG,EAAE,MAAM,EACX,SAAS,EAAE,OAAO,EAClB,EAAE,EAAE,eAAe,GAAG,SAAS,EAC/B,YAAY,GAAE,MAAM,GAAG,SAAqB;
|
|
1
|
+
{"version":3,"file":"fromPgn.d.ts","sourceRoot":"","sources":["../lib/fromPgn.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAEH,OAAO,EACL,UAAU,EACV,KAAK,EACL,GAAG,EAUJ,MAAM,kBAAkB,CAAA;AAIzB,QAAA,MAAM,YAAY,KAAoB,CAAA;AAItC,OAAO,EAAE,SAAS,EAAW,MAAM,YAAY,CAAA;AAc/C,MAAM,MAAM,eAAe,GAAG,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,GAAG,SAAS,KAAK,IAAI,CAAA;AACtE,MAAM,MAAM,aAAa,GAAG,CAAC,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,GAAG,KAAK,GAAG,CAAA;AAuB7D,qBAAa,MAAO,SAAQ,YAAY;IACtC,OAAO,EAAE,GAAG,CAAA;IACZ,IAAI,EAAE,MAAM,CAAA;IACZ,OAAO,EAAE,MAAM,CAAA;IACf,MAAM,EAAE,MAAM,CAAA;IACd,OAAO,EAAE,MAAM,CAAA;IACf,MAAM,EAAE,MAAM,CAAA;IACd,OAAO,EAAE;QAAE,CAAC,GAAG,EAAE,MAAM,GAAG;YAAE,CAAC,GAAG,EAAE,MAAM,GAAG,GAAG,CAAA;SAAE,CAAA;KAAE,CAAA;IAClD,WAAW,EAAE,OAAO,CAAA;gBAER,IAAI,GAAE,GAAQ;IA2C1B,MAAM,CACJ,GAAG,EAAE,GAAG,EACR,EAAE,EAAE,SAAS,EACb,GAAG,EAAE,MAAM,EACX,SAAS,EAAE,OAAO,EAClB,EAAE,EAAE,eAAe,GAAG,SAAS,EAC/B,YAAY,GAAE,MAAM,GAAG,SAAqB;IAkX9C,QAAQ,CAAC,GAAG,EAAE,GAAG,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,GAAG;IAW3C,QAAQ,CAAC,GAAG,EAAE,GAAG,EAAE,KAAK,EAAE,KAAK;IAQ/B,eAAe,CAAC,OAAO,EAAE,UAAU,EAAE,GAAG,UAAU,GAAG,SAAS;IAM9D,YAAY,CAAC,OAAO,EAAE,UAAU,EAAE,GAAG,UAAU,GAAG,SAAS;IAM3D,KAAK,CAAC,IAAI,EAAE,GAAG,EAAE,EAAE,GAAE,eAAe,GAAG,SAAqB;IAiB5D,YAAY,CACV,GAAG,EAAE,GAAG,EACR,MAAM,EAAE,MAAM,EACd,IAAI,EAAE,MAAM,EAAE,GAAG,MAAM,EACvB,SAAS,EAAE,OAAO,EAClB,EAAE,EAAE,eAAe,GAAG,SAAS,EAC/B,YAAY,EAAE,MAAM;IA0BtB,aAAa,CAAC,QAAQ,EAAE,MAAM;IAI9B,gBAAgB,CAAC,QAAQ,EAAE,MAAM,EAAE,EAAE,EAAE,eAAe;IA+BtD,WAAW,CAAC,QAAQ,EAAE,GAAG,EAAE,EAAE,EAAE,eAAe;IAuB9C,sBAAsB,CAAC,QAAQ,EAAE,GAAG,EAAE,EAAE,EAAE,eAAe;IAsBzD,SAAS,CAAC,QAAQ,EAAE,GAAG,EAAE,EAAE,EAAE,eAAe;IAkC5C,WAAW,CAAC,QAAQ,EAAE,MAAM,EAAE,EAAE,GAAE,eAAe,GAAG,SAAqB;IAkCzE,WAAW,CAAC,QAAQ,EAAE,GAAG,EAAE,EAAE,EAAE,eAAe,GAAG,SAAS;CAgC3D;AAED,wBAAgB,QAAQ,CAAC,UAAU,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,IAAI,EAAE,GAAG,4BA0DpE"}
|