@matter/nodejs-ble 0.12.0-alpha.0-20250103-ba0c01a01 → 0.12.0-alpha.0-20250108-7ae2a767d

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 (42) hide show
  1. package/dist/cjs/BleScanner.d.ts +2 -2
  2. package/dist/cjs/BleScanner.d.ts.map +1 -1
  3. package/dist/cjs/BleScanner.js +19 -13
  4. package/dist/cjs/BleScanner.js.map +1 -1
  5. package/dist/cjs/BlenoBleServer.d.ts.map +1 -1
  6. package/dist/cjs/BlenoBleServer.js +4 -4
  7. package/dist/cjs/BlenoBleServer.js.map +1 -1
  8. package/dist/cjs/NobleBleChannel.d.ts +3 -2
  9. package/dist/cjs/NobleBleChannel.d.ts.map +1 -1
  10. package/dist/cjs/NobleBleChannel.js +252 -101
  11. package/dist/cjs/NobleBleChannel.js.map +2 -2
  12. package/dist/cjs/NobleBleClient.d.ts.map +1 -1
  13. package/dist/cjs/NobleBleClient.js +15 -7
  14. package/dist/cjs/NobleBleClient.js.map +1 -1
  15. package/dist/cjs/NodeJsBle.d.ts +1 -2
  16. package/dist/cjs/NodeJsBle.d.ts.map +1 -1
  17. package/dist/cjs/NodeJsBle.js +30 -14
  18. package/dist/cjs/NodeJsBle.js.map +1 -1
  19. package/dist/esm/BleScanner.d.ts +2 -2
  20. package/dist/esm/BleScanner.d.ts.map +1 -1
  21. package/dist/esm/BleScanner.js +19 -13
  22. package/dist/esm/BleScanner.js.map +1 -1
  23. package/dist/esm/BlenoBleServer.d.ts.map +1 -1
  24. package/dist/esm/BlenoBleServer.js +4 -4
  25. package/dist/esm/BlenoBleServer.js.map +1 -1
  26. package/dist/esm/NobleBleChannel.d.ts +3 -2
  27. package/dist/esm/NobleBleChannel.d.ts.map +1 -1
  28. package/dist/esm/NobleBleChannel.js +253 -102
  29. package/dist/esm/NobleBleChannel.js.map +2 -2
  30. package/dist/esm/NobleBleClient.d.ts.map +1 -1
  31. package/dist/esm/NobleBleClient.js +15 -7
  32. package/dist/esm/NobleBleClient.js.map +1 -1
  33. package/dist/esm/NodeJsBle.d.ts +1 -2
  34. package/dist/esm/NodeJsBle.d.ts.map +1 -1
  35. package/dist/esm/NodeJsBle.js +30 -14
  36. package/dist/esm/NodeJsBle.js.map +1 -1
  37. package/package.json +5 -5
  38. package/src/BleScanner.ts +23 -13
  39. package/src/BlenoBleServer.ts +6 -4
  40. package/src/NobleBleChannel.ts +316 -126
  41. package/src/NobleBleClient.ts +17 -7
  42. package/src/NodeJsBle.ts +32 -14
@@ -45,127 +45,251 @@ function nobleUuidToUuid(uuid) {
45
45
  return parts.join("-");
46
46
  }
47
47
  class NobleBleCentralInterface {
48
- openChannels = /* @__PURE__ */ new Map();
49
- onMatterMessageListener;
48
+ #bleScanner;
49
+ #connectionsInProgress = /* @__PURE__ */ new Set();
50
+ #connectionGuards = /* @__PURE__ */ new Set();
51
+ #openChannels = /* @__PURE__ */ new Map();
52
+ #onMatterMessageListener;
53
+ #closed = false;
54
+ constructor(bleScanner) {
55
+ this.#bleScanner = bleScanner;
56
+ }
50
57
  openChannel(address, tryCount = 1) {
58
+ if (this.#closed) {
59
+ throw new import_general.NetworkError("Network interface is closed");
60
+ }
51
61
  return new Promise((resolve, reject) => {
52
- if (this.onMatterMessageListener === void 0) {
53
- reject(new import_general.InternalError(`Network Interface was not added to the system yet.`));
62
+ if (this.#onMatterMessageListener === void 0) {
63
+ reject(new import_general.InternalError(`Network Interface was not added to the system yet, so can not connect it.`));
54
64
  return;
55
65
  }
56
66
  if (address.type !== "ble") {
57
67
  reject(new import_general.InternalError(`Unsupported address type ${address.type}.`));
58
68
  return;
59
69
  }
60
- const { peripheral, hasAdditionalAdvertisementData } = import_protocol.Ble.get().getBleScanner().getDiscoveredDevice(address.peripheralAddress);
70
+ const { peripheralAddress } = address;
61
71
  if (tryCount > 3) {
62
- reject(new import_protocol.BleError(`Failed to connect to peripheral ${peripheral.address}`));
72
+ reject(new import_protocol.BleError(`Failed to connect to peripheral ${peripheralAddress}`));
63
73
  return;
64
74
  }
65
- logger.debug("BLE peripheral state", peripheral.state);
66
- if (peripheral.state === "connected" || peripheral.state === "connecting") {
75
+ const { peripheral, hasAdditionalAdvertisementData } = this.#bleScanner.getDiscoveredDevice(peripheralAddress);
76
+ if (this.#openChannels.has(address)) {
67
77
  reject(
68
78
  new import_protocol.BleError(
69
- `Peripheral ${address.peripheralAddress} is already connected or connecting. Only one connection supported right now.`
79
+ `Peripheral ${peripheralAddress} is already connected. Only one connection supported right now.`
70
80
  )
71
81
  );
72
82
  return;
73
83
  }
74
- if (this.openChannels.has(address)) {
84
+ if (this.#connectionsInProgress.has(address)) {
85
+ logger.debug(`Connection to peripheral ${peripheralAddress} is already in progress.`);
86
+ return;
87
+ }
88
+ if (peripheral.state === "error") {
75
89
  reject(
76
90
  new import_protocol.BleError(
77
- `Peripheral ${address.peripheralAddress} is already connected. Only one connection supported right now.`
91
+ `Can not connect to peripheral "${peripheralAddress}" because unexpected state "${peripheral.state}"`
78
92
  )
79
93
  );
80
94
  return;
81
95
  }
82
- if (peripheral.state !== "disconnected") {
83
- peripheral.disconnectAsync().then(() => this.openChannel(address, tryCount), reject);
84
- return;
85
- }
86
- peripheral.once("connect", async () => {
87
- if (this.onMatterMessageListener === void 0) {
88
- reject(new import_general.InternalError(`Network Interface was not added to the system yet.`));
89
- return;
90
- }
91
- const services = await peripheral.discoverServicesAsync([import_protocol.BLE_MATTER_SERVICE_UUID]);
92
- logger.debug(`Found services: ${services.map((s) => s.uuid).join(", ")}`);
93
- for (const service of services) {
94
- logger.debug(`found service: ${service.uuid}`);
95
- if (service.uuid !== import_protocol.BLE_MATTER_SERVICE_UUID) continue;
96
- const characteristics = await service.discoverCharacteristicsAsync();
97
- let characteristicC1ForWrite;
98
- let characteristicC2ForSubscribe;
99
- let additionalCommissioningRelatedData;
100
- for (const characteristic of characteristics) {
101
- logger.debug("found characteristic:", characteristic.uuid, characteristic.properties);
102
- switch (nobleUuidToUuid(characteristic.uuid)) {
103
- case import_protocol.BLE_MATTER_C1_CHARACTERISTIC_UUID:
104
- logger.debug("found C1 characteristic");
105
- characteristicC1ForWrite = characteristic;
106
- break;
107
- case import_protocol.BLE_MATTER_C2_CHARACTERISTIC_UUID:
108
- logger.debug("found C2 characteristic");
109
- characteristicC2ForSubscribe = characteristic;
110
- break;
111
- case import_protocol.BLE_MATTER_C3_CHARACTERISTIC_UUID:
112
- logger.debug("found C3 characteristic");
113
- if (hasAdditionalAdvertisementData) {
114
- logger.debug("reading additional commissioning related data");
115
- const data = await characteristic.readAsync();
116
- additionalCommissioningRelatedData = new Uint8Array(data);
117
- logger.debug("additional data", data);
118
- }
119
- }
96
+ const connectionGuard = {
97
+ // Timeout when trying to connect to the device because sometimes connect fails and noble does
98
+ // not emit an event. If device does not connect we do not try any longer and reject the promise
99
+ // because a re-discovery is the best option to get teh device into a good state again
100
+ connectTimeout: import_general.Time.getTimer("BLE connect timeout", 6e4, () => {
101
+ logger.debug(`Timeout while connecting to peripheral ${peripheralAddress}`);
102
+ peripheral.removeListener("connect", connectHandler);
103
+ peripheral.removeListener("disconnect", reTryHandler);
104
+ clearConnectionGuard();
105
+ reject(new import_protocol.BleError(`Timeout while connecting to peripheral ${peripheralAddress}`));
106
+ }),
107
+ disconnectTimeout: import_general.Time.getTimer("BLE disconnect timeout", 6e4, () => {
108
+ logger.debug(`Timeout while disconnecting to peripheral ${peripheralAddress}`);
109
+ peripheral.removeListener("disconnect", reTryHandler);
110
+ clearConnectionGuard();
111
+ reject(new import_protocol.BleError(`Timeout while disconnecting to peripheral ${peripheralAddress}`));
112
+ }),
113
+ // Timeout when trying to interview the device because sometimes when no response from device
114
+ // comes noble does not resolve promises
115
+ interviewTimeout: import_general.Time.getTimer("BLE interview timeout", 6e4, () => {
116
+ logger.debug(`Timeout while interviewing peripheral ${peripheralAddress}`);
117
+ peripheral.removeListener("disconnect", reTryHandler);
118
+ clearConnectionGuard();
119
+ if (peripheral.state === "connected") {
120
+ peripheral.disconnectAsync().catch((error) => logger.error(`Ignored error while disconnecting`, error));
120
121
  }
121
- if (!characteristicC1ForWrite || !characteristicC2ForSubscribe) {
122
- logger.debug("missing characteristics");
123
- continue;
124
- }
125
- peripheral.removeAllListeners("disconnect");
126
- this.openChannels.set(address, peripheral);
127
- resolve(
128
- await NobleBleChannel.create(
129
- peripheral,
130
- characteristicC1ForWrite,
131
- characteristicC2ForSubscribe,
132
- this.onMatterMessageListener,
133
- additionalCommissioningRelatedData
134
- )
135
- );
136
- return;
137
- }
138
- peripheral.removeAllListeners("disconnect");
139
- reject(new import_protocol.BleError(`Peripheral ${peripheral.address} does not have the required characteristics`));
140
- });
141
- const reTryHandler = async (error) => {
122
+ reject(new import_protocol.BleError(`Timeout while interviewing peripheral ${peripheralAddress}`));
123
+ })
124
+ };
125
+ this.#connectionGuards.add(connectionGuard);
126
+ const clearConnectionGuard = () => {
127
+ const { connectTimeout, interviewTimeout, disconnectTimeout } = connectionGuard;
128
+ connectTimeout?.stop();
129
+ interviewTimeout?.stop();
130
+ disconnectTimeout?.stop();
131
+ this.#connectionGuards.delete(connectionGuard);
132
+ };
133
+ const reTryHandler = (error) => {
134
+ clearConnectionGuard();
135
+ this.#connectionsInProgress.delete(address);
136
+ peripheral.removeListener("connect", connectHandler);
137
+ peripheral.removeListener("disconnect", reTryHandler);
142
138
  if (error) {
143
139
  logger.error(
144
- `Peripheral ${peripheral.address} disconnected while trying to connect, try again`,
140
+ `Peripheral ${peripheralAddress} disconnected while trying to connect, try again`,
145
141
  error
146
142
  );
147
143
  } else {
148
- logger.info(`Peripheral ${peripheral.address} disconnected while trying to connect, try gain`);
144
+ logger.info(`Peripheral ${peripheralAddress} disconnected while trying to connect, try again`);
149
145
  }
150
- peripheral.removeAllListeners("disconnect");
151
- peripheral.removeAllListeners("connect");
152
146
  this.openChannel(address, tryCount + 1).then(resolve).catch(reject);
153
147
  };
154
- peripheral.once("disconnect", reTryHandler);
155
- logger.debug(`Connect to Peripheral now (try ${tryCount})`);
156
- peripheral.connectAsync().catch(reTryHandler);
148
+ const connectHandler = async (error) => {
149
+ connectionGuard.connectTimeout.stop();
150
+ if (!this.#connectionGuards.has(connectionGuard)) {
151
+ return;
152
+ }
153
+ if (error) {
154
+ clearConnectionGuard();
155
+ reject(new import_protocol.BleError(`Error while connecting to peripheral ${peripheralAddress}`, error));
156
+ return;
157
+ }
158
+ if (this.#onMatterMessageListener === void 0) {
159
+ clearConnectionGuard();
160
+ reject(new import_general.InternalError(`Network Interface was not added to the system yet or was cleared.`));
161
+ return;
162
+ }
163
+ if (this.#connectionsInProgress.has(address)) {
164
+ return;
165
+ }
166
+ this.#connectionsInProgress.add(address);
167
+ try {
168
+ connectionGuard.interviewTimeout.start();
169
+ const services = await peripheral.discoverServicesAsync([import_protocol.BLE_MATTER_SERVICE_UUID]);
170
+ if (!this.#connectionGuards.has(connectionGuard)) {
171
+ return;
172
+ }
173
+ logger.debug(
174
+ `Peripheral ${peripheralAddress}: Found services: ${services.map((s) => s.uuid).join(", ")}`
175
+ );
176
+ for (const service of services) {
177
+ logger.debug(`Peripheral ${peripheralAddress}: Handle service: ${service.uuid}`);
178
+ if (service.uuid !== import_protocol.BLE_MATTER_SERVICE_UUID) continue;
179
+ const characteristics = await service.discoverCharacteristicsAsync();
180
+ if (!this.#connectionGuards.has(connectionGuard)) {
181
+ return;
182
+ }
183
+ let characteristicC1ForWrite;
184
+ let characteristicC2ForSubscribe;
185
+ let additionalCommissioningRelatedData;
186
+ for (const characteristic of characteristics) {
187
+ logger.debug(
188
+ `Peripheral ${peripheralAddress}: Handle characteristic:`,
189
+ characteristic.uuid,
190
+ characteristic.properties
191
+ );
192
+ switch (nobleUuidToUuid(characteristic.uuid)) {
193
+ case import_protocol.BLE_MATTER_C1_CHARACTERISTIC_UUID:
194
+ logger.debug(`Peripheral ${peripheralAddress}: Found C1 characteristic`);
195
+ characteristicC1ForWrite = characteristic;
196
+ break;
197
+ case import_protocol.BLE_MATTER_C2_CHARACTERISTIC_UUID:
198
+ logger.debug(`Peripheral ${peripheralAddress}: Found C2 characteristic`);
199
+ characteristicC2ForSubscribe = characteristic;
200
+ break;
201
+ case import_protocol.BLE_MATTER_C3_CHARACTERISTIC_UUID:
202
+ logger.debug(`Peripheral ${peripheralAddress}: Found C3 characteristic`);
203
+ if (hasAdditionalAdvertisementData) {
204
+ logger.debug(
205
+ `Peripheral ${peripheralAddress}: Reading additional commissioning related data`
206
+ );
207
+ const data = await characteristic.readAsync();
208
+ if (!this.#connectionGuards.has(connectionGuard)) {
209
+ return;
210
+ }
211
+ additionalCommissioningRelatedData = new Uint8Array(data);
212
+ logger.debug(`Peripheral ${peripheralAddress}: Additional data:`, data);
213
+ }
214
+ }
215
+ }
216
+ if (!characteristicC1ForWrite || !characteristicC2ForSubscribe) {
217
+ logger.debug(
218
+ `Peripheral ${peripheralAddress}: Missing required Matter characteristics. Ignore.`
219
+ );
220
+ continue;
221
+ }
222
+ connectionGuard.interviewTimeout.stop();
223
+ peripheral.removeListener("disconnect", reTryHandler);
224
+ this.#openChannels.set(address, peripheral);
225
+ try {
226
+ resolve(
227
+ await NobleBleChannel.create(
228
+ peripheral,
229
+ characteristicC1ForWrite,
230
+ characteristicC2ForSubscribe,
231
+ this.#onMatterMessageListener,
232
+ additionalCommissioningRelatedData
233
+ )
234
+ );
235
+ clearConnectionGuard();
236
+ this.#connectionsInProgress.delete(address);
237
+ } catch (error2) {
238
+ this.#connectionsInProgress.delete(address);
239
+ this.#openChannels.delete(address);
240
+ await peripheral.disconnectAsync();
241
+ reTryHandler(error2);
242
+ return;
243
+ }
244
+ }
245
+ } finally {
246
+ this.#connectionsInProgress.delete(address);
247
+ clearConnectionGuard();
248
+ }
249
+ peripheral.removeListener("disconnect", reTryHandler);
250
+ reject(
251
+ new import_protocol.BleError(`Peripheral ${peripheralAddress} does not have the required Matter characteristics`)
252
+ );
253
+ };
254
+ if (peripheral.state === "connected") {
255
+ logger.debug(`Peripheral ${peripheralAddress}: Already connected`);
256
+ connectHandler().catch((error) => logger.warn(`Error while connecting`, error));
257
+ } else if (peripheral.state === "disconnecting") {
258
+ logger.debug(`Peripheral ${peripheralAddress}: Disconnect in progress`);
259
+ connectionGuard.disconnectTimeout.start();
260
+ tryCount--;
261
+ peripheral.once("disconnect", reTryHandler);
262
+ } else {
263
+ if (peripheral.state === "connecting") {
264
+ peripheral.cancelConnect();
265
+ peripheral.state = "disconnected";
266
+ }
267
+ connectionGuard.connectTimeout.start();
268
+ peripheral.once("connect", connectHandler);
269
+ peripheral.once("disconnect", reTryHandler);
270
+ logger.debug(`Peripheral ${peripheralAddress}: Connect to Peripheral now (try ${tryCount})`);
271
+ peripheral.connectAsync().catch((error) => {
272
+ if (!this.#connectionGuards.has(connectionGuard)) {
273
+ return;
274
+ }
275
+ logger.info(`Peripheral ${peripheralAddress}: Error while connecting to peripheral`, error);
276
+ reTryHandler(error);
277
+ });
278
+ }
157
279
  });
158
280
  }
159
281
  onData(listener) {
160
- this.onMatterMessageListener = listener;
282
+ this.#onMatterMessageListener = listener;
161
283
  return {
162
284
  close: async () => await this.close()
163
285
  };
164
286
  }
165
287
  async close() {
166
- for (const peripheral of this.openChannels.values()) {
167
- await peripheral.disconnectAsync();
288
+ this.#closed = true;
289
+ for (const peripheral of this.#openChannels.values()) {
290
+ peripheral.disconnectAsync().catch((error) => logger.error(`Peripheral ${peripheral.address}: Error while disconnecting`, error));
168
291
  }
292
+ this.#openChannels.clear();
169
293
  }
170
294
  supports(type, _address) {
171
295
  if (type !== import_general.ChannelType.BLE) {
@@ -186,33 +310,52 @@ class NobleBleChannel extends import_protocol.BleChannel {
186
310
  });
187
311
  }
188
312
  static async create(peripheral, characteristicC1ForWrite, characteristicC2ForSubscribe, onMatterMessageListener, _additionalCommissioningRelatedData) {
313
+ const { address: peripheralAddress } = peripheral;
189
314
  let mtu = peripheral.mtu ?? 0;
190
315
  if (mtu > import_protocol.BLE_MAXIMUM_BTP_MTU) {
191
316
  mtu = import_protocol.BLE_MAXIMUM_BTP_MTU;
192
317
  }
193
- logger.debug(`Using MTU=${mtu} (Peripheral MTU=${peripheral.mtu})`);
318
+ logger.debug(
319
+ `Peripheral ${peripheralAddress}: Using MTU=${mtu} bytes (Peripheral supports up to ${peripheral.mtu} bytes)`
320
+ );
321
+ const {
322
+ promise: handshakeResponseReceivedPromise,
323
+ resolver: handshakeResolver,
324
+ rejecter: handshakeRejecter
325
+ } = (0, import_general.createPromise)();
326
+ const handshakeHandler = (data, isNotification) => {
327
+ if (data[0] === 101 && data[1] === 108 && data.length === 6) {
328
+ logger.info(
329
+ `Peripheral ${peripheralAddress}: Received Matter handshake response: ${data.toString("hex")}.`
330
+ );
331
+ btpHandshakeTimeout.stop();
332
+ handshakeResolver(data);
333
+ } else {
334
+ logger.debug(
335
+ `Peripheral ${peripheralAddress}: Received first data on C2: ${data.toString("hex")} (isNotification: ${isNotification}) - No handshake response, inforing`
336
+ );
337
+ }
338
+ };
339
+ const btpHandshakeTimeout = import_general.Time.getTimer("BLE handshake timeout", import_protocol.BTP_CONN_RSP_TIMEOUT_MS, async () => {
340
+ characteristicC2ForSubscribe.removeListener("data", handshakeHandler);
341
+ characteristicC2ForSubscribe.unsubscribeAsync().catch((error) => logger.error(`Peripheral ${peripheralAddress}: Error while unsubscribing`, error));
342
+ logger.debug(
343
+ `Peripheral ${peripheralAddress}: Handshake Response not received. Disconnected from peripheral`
344
+ );
345
+ handshakeRejecter(new import_protocol.BleError(`Peripheral ${peripheralAddress}: Handshake Response not received`));
346
+ }).start();
194
347
  const btpHandshakeRequest = import_protocol.BtpCodec.encodeBtpHandshakeRequest({
195
348
  versions: import_protocol.BTP_SUPPORTED_VERSIONS,
196
349
  attMtu: mtu,
197
350
  clientWindowSize: import_protocol.BTP_MAXIMUM_WINDOW_SIZE
198
351
  });
199
- logger.debug(`sending BTP handshake request: ${import_general.Logger.toJSON(btpHandshakeRequest)}`);
352
+ logger.debug(
353
+ `Peripheral ${peripheralAddress}: Sending BTP handshake request: ${import_general.Logger.toJSON(btpHandshakeRequest)}`
354
+ );
200
355
  await characteristicC1ForWrite.writeAsync(Buffer.from(btpHandshakeRequest.buffer), false);
201
- const btpHandshakeTimeout = import_general.Time.getTimer("BLE handshake timeout", import_protocol.BTP_CONN_RSP_TIMEOUT_MS, async () => {
202
- await peripheral.disconnectAsync();
203
- logger.debug("Handshake Response not received. Disconnected from peripheral");
204
- }).start();
205
- logger.debug("subscribing to C2 characteristic");
356
+ logger.debug(`Peripheral ${peripheralAddress}: Subscribing to C2 characteristic`);
206
357
  await characteristicC2ForSubscribe.subscribeAsync();
207
- const { promise: handshakeResponseReceivedPromise, resolver } = (0, import_general.createPromise)();
208
- characteristicC2ForSubscribe.once("data", (data, isNotification) => {
209
- logger.debug(`received first data on C2: ${data.toString("hex")} (isNotification: ${isNotification})`);
210
- if (data[0] === 101 && data[1] === 108 && data.length === 6) {
211
- logger.info(`Received Matter handshake response: ${data.toString("hex")}.`);
212
- btpHandshakeTimeout.stop();
213
- resolver(data);
214
- }
215
- });
358
+ characteristicC2ForSubscribe.once("data", handshakeHandler);
216
359
  const handshakeResponse = await handshakeResponseReceivedPromise;
217
360
  const btpSession = await import_protocol.BtpSessionHandler.createAsCentral(
218
361
  new Uint8Array(handshakeResponse),
@@ -221,7 +364,9 @@ class NobleBleChannel extends import_protocol.BleChannel {
221
364
  return await characteristicC1ForWrite.writeAsync(Buffer.from(data.buffer), false);
222
365
  },
223
366
  // callback to disconnect the BLE connection
224
- async () => void characteristicC2ForSubscribe.unsubscribeAsync().then(() => peripheral.disconnectAsync().then(() => logger.debug("disconnected from peripheral"))),
367
+ async () => void characteristicC2ForSubscribe.unsubscribeAsync().then(
368
+ () => peripheral.disconnectAsync().then(() => logger.debug(`Peripheral ${peripheralAddress}: Disconnected from peripheral`))
369
+ ),
225
370
  // callback to forward decoded and de-assembled Matter messages to ExchangeManager
226
371
  async (data) => {
227
372
  if (onMatterMessageListener === void 0) {
@@ -231,7 +376,9 @@ class NobleBleChannel extends import_protocol.BleChannel {
231
376
  }
232
377
  );
233
378
  characteristicC2ForSubscribe.on("data", (data, isNotification) => {
234
- logger.debug(`received data on C2: ${data.toString("hex")} (isNotification: ${isNotification})`);
379
+ logger.debug(
380
+ `Peripheral ${peripheralAddress}: received data on C2: ${data.toString("hex")} (isNotification: ${isNotification})`
381
+ );
235
382
  void btpSession.handleIncomingBleData(new Uint8Array(data));
236
383
  });
237
384
  const nobleChannel = new NobleBleChannel(peripheral, btpSession);
@@ -245,11 +392,15 @@ class NobleBleChannel extends import_protocol.BleChannel {
245
392
  */
246
393
  async send(data) {
247
394
  if (!this.connected) {
248
- logger.debug("Cannot send data because not connected to peripheral.");
395
+ logger.debug(
396
+ `Peripheral ${this.peripheral.address}: Cannot send data because not connected to peripheral.`
397
+ );
249
398
  return;
250
399
  }
251
400
  if (this.btpSession === void 0) {
252
- throw new import_protocol.BtpFlowError(`Cannot send data, no BTP session initialized`);
401
+ throw new import_protocol.BtpFlowError(
402
+ `Peripheral ${this.peripheral.address}: Cannot send data, no BTP session initialized`
403
+ );
253
404
  }
254
405
  await this.btpSession.sendMatterMessage(data);
255
406
  }
@@ -259,7 +410,7 @@ class NobleBleChannel extends import_protocol.BleChannel {
259
410
  }
260
411
  async close() {
261
412
  await this.btpSession.close();
262
- await this.peripheral.disconnectAsync();
413
+ this.peripheral.disconnectAsync().catch((error) => logger.error(`Peripheral ${this.peripheral.address}: Error while disconnecting`, error));
263
414
  }
264
415
  }
265
416
  //# sourceMappingURL=NobleBleChannel.js.map
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../src/NobleBleChannel.ts"],
4
- "mappings": "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",
5
- "names": []
4
+ "mappings": "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",
5
+ "names": ["error"]
6
6
  }
@@ -1 +1 @@
1
- {"version":3,"file":"NobleBleClient.d.ts","sourceRoot":"","sources":["../../src/NobleBleClient.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAKH,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAC;AACpD,OAAO,EAAE,UAAU,EAAE,MAAM,gBAAgB,CAAC;AAkB5C,qBAAa,cAAc;IACvB,OAAO,CAAC,QAAQ,CAAC,qBAAqB,CAGlC;IACJ,OAAO,CAAC,UAAU,CAAS;IAC3B,OAAO,CAAC,UAAU,CAAS;IAC3B,OAAO,CAAC,UAAU,CAAa;IAC/B,OAAO,CAAC,wBAAwB,CAA+E;gBAEnG,OAAO,CAAC,EAAE,UAAU;IA2BzB,oBAAoB,CAAC,QAAQ,EAAE,CAAC,UAAU,EAAE,UAAU,EAAE,gBAAgB,EAAE,UAAU,KAAK,IAAI;IAOvF,aAAa;IAYb,YAAY;IAQzB,OAAO,CAAC,sBAAsB;CA0BjC"}
1
+ {"version":3,"file":"NobleBleClient.d.ts","sourceRoot":"","sources":["../../src/NobleBleClient.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAKH,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAC;AACpD,OAAO,EAAE,UAAU,EAAE,MAAM,gBAAgB,CAAC;AAkB5C,qBAAa,cAAc;IACvB,OAAO,CAAC,QAAQ,CAAC,qBAAqB,CAGlC;IACJ,OAAO,CAAC,UAAU,CAAS;IAC3B,OAAO,CAAC,UAAU,CAAS;IAC3B,OAAO,CAAC,UAAU,CAAa;IAC/B,OAAO,CAAC,wBAAwB,CAA+E;gBAEnG,OAAO,CAAC,EAAE,UAAU;IAkCzB,oBAAoB,CAAC,QAAQ,EAAE,CAAC,UAAU,EAAE,UAAU,EAAE,gBAAgB,EAAE,UAAU,KAAK,IAAI;IAOvF,aAAa;IAcb,YAAY;IAQzB,OAAO,CAAC,sBAAsB;CA2BjC"}
@@ -60,7 +60,12 @@ class NobleBleClient {
60
60
  }
61
61
  });
62
62
  noble.on("discover", (peripheral) => this.handleDiscoveredDevice(peripheral));
63
- noble.on("scanStart", () => this.isScanning = true);
63
+ noble.on("scanStart", () => {
64
+ if (!this.shouldScan) {
65
+ return;
66
+ }
67
+ this.isScanning = true;
68
+ });
64
69
  noble.on("scanStop", () => this.isScanning = false);
65
70
  }
66
71
  setDiscoveryCallback(callback) {
@@ -70,11 +75,13 @@ class NobleBleClient {
70
75
  }
71
76
  }
72
77
  async startScanning() {
73
- if (this.isScanning) return;
78
+ if (this.isScanning) {
79
+ return;
80
+ }
74
81
  this.shouldScan = true;
75
82
  if (this.nobleState === "poweredOn") {
76
83
  logger.debug("Start BLE scanning for Matter Services ...");
77
- await noble.startScanningAsync([import_protocol.BLE_MATTER_SERVICE_UUID], false);
84
+ await noble.startScanningAsync([import_protocol.BLE_MATTER_SERVICE_UUID], true);
78
85
  } else {
79
86
  logger.debug("noble state is not poweredOn ... delay scanning till poweredOn");
80
87
  }
@@ -87,23 +94,24 @@ class NobleBleClient {
87
94
  }
88
95
  }
89
96
  handleDiscoveredDevice(peripheral) {
97
+ const address = peripheral.address;
90
98
  logger.debug(
91
- `Found peripheral ${peripheral.address} (${peripheral.advertisement.localName}): ${import_general.Logger.toJSON(
99
+ `Found peripheral ${address} (${peripheral.advertisement.localName}): ${import_general.Logger.toJSON(
92
100
  peripheral.advertisement
93
101
  )}`
94
102
  );
95
103
  if (!peripheral.connectable) {
96
- logger.info(`Peripheral ${peripheral.address} is not connectable ... ignoring`);
104
+ logger.info(`Peripheral ${address} is not connectable ... ignoring`);
97
105
  return;
98
106
  }
99
107
  const matterServiceData = peripheral.advertisement.serviceData.find(
100
108
  (serviceData) => serviceData.uuid === import_protocol.BLE_MATTER_SERVICE_UUID
101
109
  );
102
110
  if (matterServiceData === void 0 || matterServiceData.data.length !== 8) {
103
- logger.info(`Peripheral ${peripheral.address} does not advertise Matter Service ... ignoring`);
111
+ logger.info(`Peripheral ${address} does not advertise Matter Service ... ignoring`);
104
112
  return;
105
113
  }
106
- this.discoveredPeripherals.set(peripheral.address, { peripheral, matterServiceData: matterServiceData.data });
114
+ this.discoveredPeripherals.set(address, { peripheral, matterServiceData: matterServiceData.data });
107
115
  this.deviceDiscoveredCallback?.(peripheral, matterServiceData.data);
108
116
  }
109
117
  }
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../src/NobleBleClient.ts"],
4
- "mappings": ";;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAMA,qBAAuB;AACvB,qBAAwB;AACxB,sBAAwC;AARxC;AAAA;AAAA;AAAA;AAAA;AAYA,MAAM,SAAS,sBAAO,IAAI,gBAAgB;AAC1C,IAAI;AAEJ,SAAS,UAAU,OAAgB;AAE/B,MAAI,UAAU,QAAW;AACrB,YAAQ,IAAI,sBAAsB,MAAM,SAAS;AAAA,EACrD;AACA,cAAQ,wBAAQ,mBAAmB;AACnC,MAAI,OAAO,MAAM,OAAO,YAAY;AAGhC,YAAS,MAAc,EAAE,UAAU,MAAM,CAAC;AAAA,EAC9C;AACJ;AAEO,MAAM,eAAe;AAAA,EACP,wBAAwB,oBAAI,IAG3C;AAAA,EACM,aAAa;AAAA,EACb,aAAa;AAAA,EACb,aAAa;AAAA,EACb;AAAA,EAER,YAAY,SAAsB;AAC9B,cAAU,SAAS,KAAK;AAUxB,UAAM,GAAG,eAAe,WAAS;AAC7B,WAAK,aAAa;AAClB,aAAO,MAAM,0BAA0B,KAAK,EAAE;AAC9C,UAAI,UAAU,aAAa;AACvB,YAAI,KAAK,YAAY;AACjB,eAAK,KAAK,cAAc;AAAA,QAC5B;AAAA,MACJ,OAAO;AACH,aAAK,KAAK,aAAa;AAAA,MAC3B;AAAA,IACJ,CAAC;AACD,UAAM,GAAG,YAAY,gBAAc,KAAK,uBAAuB,UAAU,CAAC;AAC1E,UAAM,GAAG,aAAa,MAAO,KAAK,aAAa,IAAK;AACpD,UAAM,GAAG,YAAY,MAAO,KAAK,aAAa,KAAM;AAAA,EACxD;AAAA,EAEO,qBAAqB,UAA0E;AAClG,SAAK,2BAA2B;AAChC,eAAW,EAAE,YAAY,kBAAkB,KAAK,KAAK,sBAAsB,OAAO,GAAG;AACjF,WAAK,yBAAyB,YAAY,iBAAiB;AAAA,IAC/D;AAAA,EACJ;AAAA,EAEA,MAAa,gBAAgB;AACzB,QAAI,KAAK,WAAY;AAErB,SAAK,aAAa;AAClB,QAAI,KAAK,eAAe,aAAa;AACjC,aAAO,MAAM,4CAA4C;AACzD,YAAM,MAAM,mBAAmB,CAAC,uCAAuB,GAAG,KAAK;AAAA,IACnE,OAAO;AACH,aAAO,MAAM,gEAAgE;AAAA,IACjF;AAAA,EACJ;AAAA,EAEA,MAAa,eAAe;AACxB,SAAK,aAAa;AAClB,QAAI,KAAK,YAAY;AACjB,aAAO,MAAM,2CAA2C;AACxD,YAAM,MAAM,kBAAkB;AAAA,IAClC;AAAA,EACJ;AAAA,EAEQ,uBAAuB,YAAwB;AAInD,WAAO;AAAA,MACH,oBAAoB,WAAW,OAAO,KAAK,WAAW,cAAc,SAAS,MAAM,sBAAO;AAAA,QACtF,WAAW;AAAA,MACf,CAAC;AAAA,IACL;AAEA,QAAI,CAAC,WAAW,aAAa;AACzB,aAAO,KAAK,cAAc,WAAW,OAAO,kCAAkC;AAC9E;AAAA,IACJ;AACA,UAAM,oBAAoB,WAAW,cAAc,YAAY;AAAA,MAC3D,iBAAe,YAAY,SAAS;AAAA,IACxC;AACA,QAAI,sBAAsB,UAAa,kBAAkB,KAAK,WAAW,GAAG;AACxE,aAAO,KAAK,cAAc,WAAW,OAAO,iDAAiD;AAC7F;AAAA,IACJ;AAEA,SAAK,sBAAsB,IAAI,WAAW,SAAS,EAAE,YAAY,mBAAmB,kBAAkB,KAAK,CAAC;AAE5G,SAAK,2BAA2B,YAAY,kBAAkB,IAAI;AAAA,EACtE;AACJ;",
4
+ "mappings": ";;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAMA,qBAAuB;AACvB,qBAAwB;AACxB,sBAAwC;AARxC;AAAA;AAAA;AAAA;AAAA;AAYA,MAAM,SAAS,sBAAO,IAAI,gBAAgB;AAC1C,IAAI;AAEJ,SAAS,UAAU,OAAgB;AAE/B,MAAI,UAAU,QAAW;AACrB,YAAQ,IAAI,sBAAsB,MAAM,SAAS;AAAA,EACrD;AACA,cAAQ,wBAAQ,mBAAmB;AACnC,MAAI,OAAO,MAAM,OAAO,YAAY;AAGhC,YAAS,MAAc,EAAE,UAAU,MAAM,CAAC;AAAA,EAC9C;AACJ;AAEO,MAAM,eAAe;AAAA,EACP,wBAAwB,oBAAI,IAG3C;AAAA,EACM,aAAa;AAAA,EACb,aAAa;AAAA,EACb,aAAa;AAAA,EACb;AAAA,EAER,YAAY,SAAsB;AAC9B,cAAU,SAAS,KAAK;AAUxB,UAAM,GAAG,eAAe,WAAS;AAC7B,WAAK,aAAa;AAClB,aAAO,MAAM,0BAA0B,KAAK,EAAE;AAC9C,UAAI,UAAU,aAAa;AACvB,YAAI,KAAK,YAAY;AACjB,eAAK,KAAK,cAAc;AAAA,QAC5B;AAAA,MACJ,OAAO;AACH,aAAK,KAAK,aAAa;AAAA,MAC3B;AAAA,IACJ,CAAC;AACD,UAAM,GAAG,YAAY,gBAAc,KAAK,uBAAuB,UAAU,CAAC;AAC1E,UAAM,GAAG,aAAa,MAAM;AACxB,UAAI,CAAC,KAAK,YAAY;AAGlB;AAAA,MACJ;AACA,WAAK,aAAa;AAAA,IACtB,CAAC;AACD,UAAM,GAAG,YAAY,MAAO,KAAK,aAAa,KAAM;AAAA,EACxD;AAAA,EAEO,qBAAqB,UAA0E;AAClG,SAAK,2BAA2B;AAChC,eAAW,EAAE,YAAY,kBAAkB,KAAK,KAAK,sBAAsB,OAAO,GAAG;AACjF,WAAK,yBAAyB,YAAY,iBAAiB;AAAA,IAC/D;AAAA,EACJ;AAAA,EAEA,MAAa,gBAAgB;AACzB,QAAI,KAAK,YAAY;AACjB;AAAA,IACJ;AAEA,SAAK,aAAa;AAClB,QAAI,KAAK,eAAe,aAAa;AACjC,aAAO,MAAM,4CAA4C;AACzD,YAAM,MAAM,mBAAmB,CAAC,uCAAuB,GAAG,IAAI;AAAA,IAClE,OAAO;AACH,aAAO,MAAM,gEAAgE;AAAA,IACjF;AAAA,EACJ;AAAA,EAEA,MAAa,eAAe;AACxB,SAAK,aAAa;AAClB,QAAI,KAAK,YAAY;AACjB,aAAO,MAAM,2CAA2C;AACxD,YAAM,MAAM,kBAAkB;AAAA,IAClC;AAAA,EACJ;AAAA,EAEQ,uBAAuB,YAAwB;AAInD,UAAM,UAAU,WAAW;AAC3B,WAAO;AAAA,MACH,oBAAoB,OAAO,KAAK,WAAW,cAAc,SAAS,MAAM,sBAAO;AAAA,QAC3E,WAAW;AAAA,MACf,CAAC;AAAA,IACL;AAEA,QAAI,CAAC,WAAW,aAAa;AACzB,aAAO,KAAK,cAAc,OAAO,kCAAkC;AACnE;AAAA,IACJ;AACA,UAAM,oBAAoB,WAAW,cAAc,YAAY;AAAA,MAC3D,iBAAe,YAAY,SAAS;AAAA,IACxC;AACA,QAAI,sBAAsB,UAAa,kBAAkB,KAAK,WAAW,GAAG;AACxE,aAAO,KAAK,cAAc,OAAO,iDAAiD;AAClF;AAAA,IACJ;AAEA,SAAK,sBAAsB,IAAI,SAAS,EAAE,YAAY,mBAAmB,kBAAkB,KAAK,CAAC;AAEjG,SAAK,2BAA2B,YAAY,kBAAkB,IAAI;AAAA,EACtE;AACJ;",
5
5
  "names": []
6
6
  }
@@ -9,9 +9,8 @@ export type BleOptions = {
9
9
  hciId?: number;
10
10
  };
11
11
  export declare class NodeJsBle extends Ble {
12
+ #private;
12
13
  private readonly options?;
13
- private blePeripheral;
14
- private bleCentral;
15
14
  constructor(options?: BleOptions | undefined);
16
15
  getBlePeripheralInterface(): TransportInterface;
17
16
  getBleCentralInterface(): NetInterface;
@@ -1 +1 @@
1
- {"version":3,"file":"NodeJsBle.d.ts","sourceRoot":"","sources":["../../src/NodeJsBle.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,YAAY,EAAE,kBAAkB,EAAE,MAAM,iBAAiB,CAAC;AACnE,OAAO,EAAE,GAAG,EAAE,mBAAmB,EAAE,OAAO,EAAE,MAAM,kBAAkB,CAAC;AAQrE,MAAM,MAAM,UAAU,GAAG;IACrB,KAAK,CAAC,EAAE,MAAM,CAAC;CAClB,CAAC;AAEF,qBAAa,SAAU,SAAQ,GAAG;IAIlB,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAC;IAHrC,OAAO,CAAC,aAAa,CAA6B;IAClD,OAAO,CAAC,UAAU,CAA6B;gBAElB,OAAO,CAAC,EAAE,UAAU,YAAA;IAIjD,yBAAyB,IAAI,kBAAkB;IAO/C,sBAAsB,IAAI,YAAY;IAOtC,iBAAiB,CAAC,2BAA2B,CAAC,EAAE,UAAU,GAAG,mBAAmB;IAOhF,aAAa,IAAI,OAAO;CAM3B"}
1
+ {"version":3,"file":"NodeJsBle.d.ts","sourceRoot":"","sources":["../../src/NodeJsBle.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,YAAY,EAAE,kBAAkB,EAAE,MAAM,iBAAiB,CAAC;AACnE,OAAO,EAAE,GAAG,EAAE,mBAAmB,EAAE,OAAO,EAAE,MAAM,kBAAkB,CAAC;AAQrE,MAAM,MAAM,UAAU,GAAG;IACrB,KAAK,CAAC,EAAE,MAAM,CAAC;CAClB,CAAC;AAEF,qBAAa,SAAU,SAAQ,GAAG;;IAQlB,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAC;gBAAR,OAAO,CAAC,EAAE,UAAU,YAAA;IAkBjD,yBAAyB,IAAI,kBAAkB;IAO/C,sBAAsB,IAAI,YAAY;IAOtC,iBAAiB,CAAC,2BAA2B,CAAC,EAAE,UAAU,GAAG,mBAAmB;IAOhF,aAAa,IAAI,OAAO;CAM3B"}