@canboat/canboatjs 3.16.4-beta.1 → 3.17.0-beta.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1,19 +1,18 @@
1
1
  /**
2
- * Minimal CAN socket wrapper using fs streams instead of uv_poll_t.
2
+ * Minimal CAN socket wrapper using uv_poll_t-based reads.
3
3
  *
4
- * The native addon (native/canSocket.cpp) opens a PF_CAN socket, binds it
5
- * to the interface, and returns the raw fd in blocking mode.
4
+ * The native addon (native/canSocket.cpp) opens PF_CAN sockets in non-blocking
5
+ * mode and exposes a CanPoller class that registers a uv_poll_t watcher on the
6
+ * read fd. When frames are readable, the watcher invokes a JS callback that
7
+ * drains all available frames via a non-blocking native read. Writes also use
8
+ * a non-blocking native write so neither direction ever occupies a libuv
9
+ * threadpool worker — this keeps the threadpool free for fs operations and
10
+ * lets process.exit() terminate cleanly without hanging on a blocked syscall.
6
11
  *
7
- * Node.js's net.Socket cannot wrap CAN fds (uv_guess_handle returns
8
- * UV_UNKNOWN_HANDLE). Instead we use fs.createReadStream which uses libuv's
9
- * threadpool-based uv_fs_read works on any fd, never stalls, and does not
10
- * use uv_poll_t.
11
- *
12
- * Reads and writes use separate CAN sockets bound to the same interface.
13
- * The read socket is blocking (for threadpool reads), the write socket is
14
- * O_NONBLOCK (to avoid stalling when the CAN bus has no listeners).
15
- * Separate fds prevent writeCanFrame from toggling O_NONBLOCK on the read
16
- * fd, which caused spurious ReadStream errors and reconnect cycles.
12
+ * Reads and writes use separate CAN sockets bound to the same interface:
13
+ * the read socket has the default (full) RX filter, the write socket has an
14
+ * empty RX filter so the kernel doesn't queue frames into a buffer nobody
15
+ * reads.
17
16
  *
18
17
  * Copyright 2025 Signal K contributors
19
18
  * Licensed under the Apache License, Version 2.0
@@ -29,14 +28,14 @@ export interface CanMessage {
29
28
  * start(), stop(), send(), removeAllListeners().
30
29
  */
31
30
  export declare class CanChannel extends EventEmitter {
32
- private readStream;
33
31
  private readFd;
34
32
  private writeFd;
35
- private remainder;
33
+ private poller;
36
34
  private stopped;
37
35
  private exitHandler;
38
36
  constructor(ifname: string);
39
37
  start(): void;
38
+ private onReadable;
40
39
  stop(): void;
41
40
  send(msg: {
42
41
  id: number;
@@ -1 +1 @@
1
- {"version":3,"file":"canSocket.d.ts","sourceRoot":"","sources":["../lib/canSocket.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;GAmBG;AAEH,OAAO,EAAE,YAAY,EAAE,MAAM,QAAQ,CAAA;AA4BrC,MAAM,WAAW,UAAU;IACzB,EAAE,EAAE,MAAM,CAAA;IACV,IAAI,EAAE,MAAM,CAAA;CACb;AAED;;;;GAIG;AACH,qBAAa,UAAW,SAAQ,YAAY;IAC1C,OAAO,CAAC,UAAU,CAA0B;IAC5C,OAAO,CAAC,MAAM,CAAQ;IACtB,OAAO,CAAC,OAAO,CAAQ;IACvB,OAAO,CAAC,SAAS,CAA0B;IAC3C,OAAO,CAAC,OAAO,CAAiB;IAChC,OAAO,CAAC,WAAW,CAA4B;gBAEnC,MAAM,EAAE,MAAM;IAqB1B,KAAK,IAAI,IAAI;IAuCb,IAAI,IAAI,IAAI;IA4BZ,IAAI,CAAC,GAAG,EAAE;QAAE,EAAE,EAAE,MAAM,CAAC;QAAC,GAAG,CAAC,EAAE,OAAO,CAAC;QAAC,IAAI,EAAE,MAAM,CAAA;KAAE,GAAG,IAAI;CAgB7D"}
1
+ {"version":3,"file":"canSocket.d.ts","sourceRoot":"","sources":["../lib/canSocket.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;GAkBG;AAEH,OAAO,EAAE,YAAY,EAAE,MAAM,QAAQ,CAAA;AAkCrC,MAAM,WAAW,UAAU;IACzB,EAAE,EAAE,MAAM,CAAA;IACV,IAAI,EAAE,MAAM,CAAA;CACb;AAED;;;;GAIG;AACH,qBAAa,UAAW,SAAQ,YAAY;IAC1C,OAAO,CAAC,MAAM,CAAQ;IACtB,OAAO,CAAC,OAAO,CAAQ;IACvB,OAAO,CAAC,MAAM,CAA+B;IAC7C,OAAO,CAAC,OAAO,CAAiB;IAChC,OAAO,CAAC,WAAW,CAA4B;gBAEnC,MAAM,EAAE,MAAM;IAqB1B,KAAK,IAAI,IAAI;IAKb,OAAO,CAAC,UAAU;IA6BlB,IAAI,IAAI,IAAI;IAqBZ,IAAI,CAAC,GAAG,EAAE;QAAE,EAAE,EAAE,MAAM,CAAC;QAAC,GAAG,CAAC,EAAE,OAAO,CAAC;QAAC,IAAI,EAAE,MAAM,CAAA;KAAE,GAAG,IAAI;CAgB7D"}
package/dist/canSocket.js CHANGED
@@ -1,20 +1,19 @@
1
1
  "use strict";
2
2
  /**
3
- * Minimal CAN socket wrapper using fs streams instead of uv_poll_t.
3
+ * Minimal CAN socket wrapper using uv_poll_t-based reads.
4
4
  *
5
- * The native addon (native/canSocket.cpp) opens a PF_CAN socket, binds it
6
- * to the interface, and returns the raw fd in blocking mode.
5
+ * The native addon (native/canSocket.cpp) opens PF_CAN sockets in non-blocking
6
+ * mode and exposes a CanPoller class that registers a uv_poll_t watcher on the
7
+ * read fd. When frames are readable, the watcher invokes a JS callback that
8
+ * drains all available frames via a non-blocking native read. Writes also use
9
+ * a non-blocking native write so neither direction ever occupies a libuv
10
+ * threadpool worker — this keeps the threadpool free for fs operations and
11
+ * lets process.exit() terminate cleanly without hanging on a blocked syscall.
7
12
  *
8
- * Node.js's net.Socket cannot wrap CAN fds (uv_guess_handle returns
9
- * UV_UNKNOWN_HANDLE). Instead we use fs.createReadStream which uses libuv's
10
- * threadpool-based uv_fs_read works on any fd, never stalls, and does not
11
- * use uv_poll_t.
12
- *
13
- * Reads and writes use separate CAN sockets bound to the same interface.
14
- * The read socket is blocking (for threadpool reads), the write socket is
15
- * O_NONBLOCK (to avoid stalling when the CAN bus has no listeners).
16
- * Separate fds prevent writeCanFrame from toggling O_NONBLOCK on the read
17
- * fd, which caused spurious ReadStream errors and reconnect cycles.
13
+ * Reads and writes use separate CAN sockets bound to the same interface:
14
+ * the read socket has the default (full) RX filter, the write socket has an
15
+ * empty RX filter so the kernel doesn't queue frames into a buffer nobody
16
+ * reads.
18
17
  *
19
18
  * Copyright 2025 Signal K contributors
20
19
  * Licensed under the Apache License, Version 2.0
@@ -48,10 +47,9 @@ catch (releaseErr) {
48
47
  * start(), stop(), send(), removeAllListeners().
49
48
  */
50
49
  class CanChannel extends events_1.EventEmitter {
51
- readStream = null;
52
50
  readFd;
53
51
  writeFd;
54
- remainder = Buffer.alloc(0);
52
+ poller = null;
55
53
  stopped = false;
56
54
  exitHandler = null;
57
55
  constructor(ifname) {
@@ -60,49 +58,48 @@ class CanChannel extends events_1.EventEmitter {
60
58
  const detail = nativeLoadError ? `: ${nativeLoadError.message}` : '';
61
59
  throw new Error(`Failed to load native canSocket module${detail}`);
62
60
  }
63
- this.readFd = native.openCanSocket(ifname);
61
+ this.readFd = native.openCanReadSocket(ifname);
64
62
  try {
65
- this.writeFd = native.openCanSocketNonBlock(ifname);
63
+ this.writeFd = native.openCanWriteSocket(ifname);
66
64
  }
67
65
  catch (e) {
68
66
  (0, fs_1.closeSync)(this.readFd);
69
67
  throw e;
70
68
  }
71
- // Ensure the blocking read fd is closed synchronously on process exit
72
- // so the threadpool worker blocked in read() is unblocked and the
73
- // process can actually terminate.
69
+ // Defensive: if the process exits without an explicit stop(), the
70
+ // CanPoller's uv_poll_t handle will keep the libuv loop alive and
71
+ // process.exit() may hesitate. Clean up on 'exit' as a safety net.
74
72
  this.exitHandler = () => this.stop();
75
73
  process.on('exit', this.exitHandler);
76
74
  }
77
75
  start() {
78
76
  this.stopped = false;
79
- this.readStream = (0, fs_1.createReadStream)('', {
80
- fd: this.readFd,
81
- autoClose: false,
82
- highWaterMark: CAN_FRAME_SIZE * 64
83
- });
84
- this.readStream.on('data', (chunk) => {
85
- this.remainder = Buffer.concat([this.remainder, chunk]);
86
- while (this.remainder.length >= CAN_FRAME_SIZE) {
87
- const frame = this.remainder.subarray(0, CAN_FRAME_SIZE);
88
- this.remainder = this.remainder.subarray(CAN_FRAME_SIZE);
89
- const rawId = frame.readUInt32LE(0);
90
- const id = rawId & CAN_EFF_MASK;
91
- const dlc = frame[4];
92
- const data = Buffer.from(frame.subarray(CAN_DATA_OFFSET, CAN_DATA_OFFSET + dlc));
93
- this.emit('onMessage', { id, data });
94
- }
95
- });
96
- this.readStream.on('error', (err) => {
77
+ this.poller = new native.CanPoller(this.readFd, () => this.onReadable());
78
+ }
79
+ onReadable() {
80
+ if (this.stopped) {
81
+ return;
82
+ }
83
+ let frames;
84
+ try {
85
+ frames = native.readCanFrames(this.readFd);
86
+ }
87
+ catch (err) {
97
88
  if (!this.stopped) {
98
89
  this.emit('onStopped', err.message);
99
90
  }
100
- });
101
- this.readStream.on('close', () => {
102
- if (!this.stopped) {
103
- this.emit('onStopped', 'closed');
91
+ return;
92
+ }
93
+ for (const frame of frames) {
94
+ if (frame.length < CAN_FRAME_SIZE) {
95
+ continue;
104
96
  }
105
- });
97
+ const rawId = frame.readUInt32LE(0);
98
+ const id = rawId & CAN_EFF_MASK;
99
+ const dlc = frame[4];
100
+ const data = Buffer.from(frame.subarray(CAN_DATA_OFFSET, CAN_DATA_OFFSET + dlc));
101
+ this.emit('onMessage', { id, data });
102
+ }
106
103
  }
107
104
  stop() {
108
105
  if (this.stopped) {
@@ -113,18 +110,10 @@ class CanChannel extends events_1.EventEmitter {
113
110
  process.removeListener('exit', this.exitHandler);
114
111
  this.exitHandler = null;
115
112
  }
116
- if (this.readStream) {
117
- this.readStream.destroy();
118
- this.readStream = null;
113
+ if (this.poller) {
114
+ this.poller.close();
115
+ this.poller = null;
119
116
  }
120
- // shutdown() the read socket first so any threadpool worker blocked
121
- // in read() is immediately unblocked (returns ENOTCONN). On Linux,
122
- // close() alone does NOT interrupt a read() blocked on the same fd
123
- // in another thread — the worker would hang forever.
124
- try {
125
- native.shutdownCanSocket(this.readFd);
126
- }
127
- catch (_e) { }
128
117
  try {
129
118
  (0, fs_1.closeSync)(this.readFd);
130
119
  }
@@ -1 +1 @@
1
- {"version":3,"file":"canSocket.js","sourceRoot":"","sources":["../lib/canSocket.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"canSocket.js","sourceRoot":"","sources":["../lib/canSocket.ts"],"names":[],"mappings":"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"}
package/dist/n2kDevice.js CHANGED
@@ -100,7 +100,7 @@ class N2kDevice extends node_events_1.EventEmitter {
100
100
  dst: 255,
101
101
  'NMEA 2000 Version': 1300,
102
102
  'Product Code': 667, // Just made up..
103
- 'Model ID': 'Signal K',
103
+ 'Model ID': getServerVersion(options),
104
104
  'Model Version': getModelVersion(options),
105
105
  'Model Serial Code': uniqueNumber.toString(),
106
106
  'Certification Level': 0,
@@ -237,6 +237,14 @@ function getModelVersion(options) {
237
237
  return 'canboatjs';
238
238
  }
239
239
  }
240
+ function getServerVersion(options) {
241
+ if (options.app?.config?.version !== undefined) {
242
+ return `signalk-server@${options.app.config.version}`;
243
+ }
244
+ else {
245
+ return 'signalk-server';
246
+ }
247
+ }
240
248
  function handleISORequest(device, n2kMsg) {
241
249
  device.debug('handleISORequest %j', n2kMsg);
242
250
  const PGN = Number(n2kMsg.fields.pgn);
@@ -367,6 +375,7 @@ function sendAddressClaim(device) {
367
375
  }
368
376
  device.debug(`Sending address claim ${device.address}`);
369
377
  device.sendPGN(device.addressClaim);
378
+ device.options.app.emit(device.options.analyzerOutEvent || 'N2KAnalyzerOut', device.addressClaim);
370
379
  const version = package_json_1.default ? package_json_1.default.version : 'unknown';
371
380
  device.setStatus(`Claimed address ${device.address} (canboatjs v${version})`);
372
381
  device.addressClaimSentAt = Date.now();
@@ -404,11 +413,13 @@ function sendISORequest(device, pgn, src = undefined, dst = 255) {
404
413
  function sendProductInformation(device) {
405
414
  device.debug('Sending product info');
406
415
  device.sendPGN(device.productInfo);
416
+ device.options.app.emit(device.options.analyzerOutEvent || 'N2KAnalyzerOut', device.productInfo);
407
417
  }
408
418
  function sendConfigInformation(device) {
409
419
  if (device.configurationInfo) {
410
420
  device.debug('Sending config info..');
411
421
  device.sendPGN(device.configurationInfo);
422
+ device.options.app.emit(device.options.analyzerOutEvent || 'N2KAnalyzerOut', device.configurationInfo);
412
423
  }
413
424
  }
414
425
  function sendNAKAcknowledgement(device, src, requestedPGN) {
@@ -1 +1 @@
1
- {"version":3,"file":"n2kDevice.js","sourceRoot":"","sources":["../lib/n2kDevice.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"n2kDevice.js","sourceRoot":"","sources":["../lib/n2kDevice.ts"],"names":[],"mappings":"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"}