@matter/nodejs-ble 0.12.0-alpha.0-20250101-22e7c1044 → 0.12.0-alpha.0-20250107-af5a068c3

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
@@ -7,6 +7,7 @@ import {
7
7
  ChannelType,
8
8
  InternalError,
9
9
  Logger,
10
+ NetworkError,
10
11
  Time,
11
12
  createPromise
12
13
  } from "@matter/general";
@@ -19,7 +20,6 @@ import {
19
20
  BTP_CONN_RSP_TIMEOUT_MS,
20
21
  BTP_MAXIMUM_WINDOW_SIZE,
21
22
  BTP_SUPPORTED_VERSIONS,
22
- Ble,
23
23
  BleChannel,
24
24
  BleError,
25
25
  BtpCodec,
@@ -42,127 +42,251 @@ function nobleUuidToUuid(uuid) {
42
42
  return parts.join("-");
43
43
  }
44
44
  class NobleBleCentralInterface {
45
- openChannels = /* @__PURE__ */ new Map();
46
- onMatterMessageListener;
45
+ #bleScanner;
46
+ #connectionsInProgress = /* @__PURE__ */ new Set();
47
+ #connectionGuards = /* @__PURE__ */ new Set();
48
+ #openChannels = /* @__PURE__ */ new Map();
49
+ #onMatterMessageListener;
50
+ #closed = false;
51
+ constructor(bleScanner) {
52
+ this.#bleScanner = bleScanner;
53
+ }
47
54
  openChannel(address, tryCount = 1) {
55
+ if (this.#closed) {
56
+ throw new NetworkError("Network interface is closed");
57
+ }
48
58
  return new Promise((resolve, reject) => {
49
- if (this.onMatterMessageListener === void 0) {
50
- reject(new InternalError(`Network Interface was not added to the system yet.`));
59
+ if (this.#onMatterMessageListener === void 0) {
60
+ reject(new InternalError(`Network Interface was not added to the system yet, so can not connect it.`));
51
61
  return;
52
62
  }
53
63
  if (address.type !== "ble") {
54
64
  reject(new InternalError(`Unsupported address type ${address.type}.`));
55
65
  return;
56
66
  }
57
- const { peripheral, hasAdditionalAdvertisementData } = Ble.get().getBleScanner().getDiscoveredDevice(address.peripheralAddress);
67
+ const { peripheralAddress } = address;
58
68
  if (tryCount > 3) {
59
- reject(new BleError(`Failed to connect to peripheral ${peripheral.address}`));
69
+ reject(new BleError(`Failed to connect to peripheral ${peripheralAddress}`));
60
70
  return;
61
71
  }
62
- logger.debug("BLE peripheral state", peripheral.state);
63
- if (peripheral.state === "connected" || peripheral.state === "connecting") {
72
+ const { peripheral, hasAdditionalAdvertisementData } = this.#bleScanner.getDiscoveredDevice(peripheralAddress);
73
+ if (this.#openChannels.has(address)) {
64
74
  reject(
65
75
  new BleError(
66
- `Peripheral ${address.peripheralAddress} is already connected or connecting. Only one connection supported right now.`
76
+ `Peripheral ${peripheralAddress} is already connected. Only one connection supported right now.`
67
77
  )
68
78
  );
69
79
  return;
70
80
  }
71
- if (this.openChannels.has(address)) {
81
+ if (this.#connectionsInProgress.has(address)) {
82
+ logger.debug(`Connection to peripheral ${peripheralAddress} is already in progress.`);
83
+ return;
84
+ }
85
+ if (peripheral.state === "error") {
72
86
  reject(
73
87
  new BleError(
74
- `Peripheral ${address.peripheralAddress} is already connected. Only one connection supported right now.`
88
+ `Can not connect to peripheral "${peripheralAddress}" because unexpected state "${peripheral.state}"`
75
89
  )
76
90
  );
77
91
  return;
78
92
  }
79
- if (peripheral.state !== "disconnected") {
80
- peripheral.disconnectAsync().then(() => this.openChannel(address, tryCount), reject);
81
- return;
82
- }
83
- peripheral.once("connect", async () => {
84
- if (this.onMatterMessageListener === void 0) {
85
- reject(new InternalError(`Network Interface was not added to the system yet.`));
86
- return;
87
- }
88
- const services = await peripheral.discoverServicesAsync([BLE_MATTER_SERVICE_UUID]);
89
- logger.debug(`Found services: ${services.map((s) => s.uuid).join(", ")}`);
90
- for (const service of services) {
91
- logger.debug(`found service: ${service.uuid}`);
92
- if (service.uuid !== BLE_MATTER_SERVICE_UUID) continue;
93
- const characteristics = await service.discoverCharacteristicsAsync();
94
- let characteristicC1ForWrite;
95
- let characteristicC2ForSubscribe;
96
- let additionalCommissioningRelatedData;
97
- for (const characteristic of characteristics) {
98
- logger.debug("found characteristic:", characteristic.uuid, characteristic.properties);
99
- switch (nobleUuidToUuid(characteristic.uuid)) {
100
- case BLE_MATTER_C1_CHARACTERISTIC_UUID:
101
- logger.debug("found C1 characteristic");
102
- characteristicC1ForWrite = characteristic;
103
- break;
104
- case BLE_MATTER_C2_CHARACTERISTIC_UUID:
105
- logger.debug("found C2 characteristic");
106
- characteristicC2ForSubscribe = characteristic;
107
- break;
108
- case BLE_MATTER_C3_CHARACTERISTIC_UUID:
109
- logger.debug("found C3 characteristic");
110
- if (hasAdditionalAdvertisementData) {
111
- logger.debug("reading additional commissioning related data");
112
- const data = await characteristic.readAsync();
113
- additionalCommissioningRelatedData = new Uint8Array(data);
114
- logger.debug("additional data", data);
115
- }
116
- }
93
+ const connectionGuard = {
94
+ // Timeout when trying to connect to the device because sometimes connect fails and noble does
95
+ // not emit an event. If device does not connect we do not try any longer and reject the promise
96
+ // because a re-discovery is the best option to get teh device into a good state again
97
+ connectTimeout: Time.getTimer("BLE connect timeout", 6e4, () => {
98
+ logger.debug(`Timeout while connecting to peripheral ${peripheralAddress}`);
99
+ peripheral.removeListener("connect", connectHandler);
100
+ peripheral.removeListener("disconnect", reTryHandler);
101
+ clearConnectionGuard();
102
+ reject(new BleError(`Timeout while connecting to peripheral ${peripheralAddress}`));
103
+ }),
104
+ disconnectTimeout: Time.getTimer("BLE disconnect timeout", 6e4, () => {
105
+ logger.debug(`Timeout while disconnecting to peripheral ${peripheralAddress}`);
106
+ peripheral.removeListener("disconnect", reTryHandler);
107
+ clearConnectionGuard();
108
+ reject(new BleError(`Timeout while disconnecting to peripheral ${peripheralAddress}`));
109
+ }),
110
+ // Timeout when trying to interview the device because sometimes when no response from device
111
+ // comes noble does not resolve promises
112
+ interviewTimeout: Time.getTimer("BLE interview timeout", 6e4, () => {
113
+ logger.debug(`Timeout while interviewing peripheral ${peripheralAddress}`);
114
+ peripheral.removeListener("disconnect", reTryHandler);
115
+ clearConnectionGuard();
116
+ if (peripheral.state === "connected") {
117
+ peripheral.disconnectAsync().catch((error) => logger.error(`Ignored error while disconnecting`, error));
117
118
  }
118
- if (!characteristicC1ForWrite || !characteristicC2ForSubscribe) {
119
- logger.debug("missing characteristics");
120
- continue;
121
- }
122
- peripheral.removeAllListeners("disconnect");
123
- this.openChannels.set(address, peripheral);
124
- resolve(
125
- await NobleBleChannel.create(
126
- peripheral,
127
- characteristicC1ForWrite,
128
- characteristicC2ForSubscribe,
129
- this.onMatterMessageListener,
130
- additionalCommissioningRelatedData
131
- )
132
- );
133
- return;
134
- }
135
- peripheral.removeAllListeners("disconnect");
136
- reject(new BleError(`Peripheral ${peripheral.address} does not have the required characteristics`));
137
- });
138
- const reTryHandler = async (error) => {
119
+ reject(new BleError(`Timeout while interviewing peripheral ${peripheralAddress}`));
120
+ })
121
+ };
122
+ this.#connectionGuards.add(connectionGuard);
123
+ const clearConnectionGuard = () => {
124
+ const { connectTimeout, interviewTimeout, disconnectTimeout } = connectionGuard;
125
+ connectTimeout?.stop();
126
+ interviewTimeout?.stop();
127
+ disconnectTimeout?.stop();
128
+ this.#connectionGuards.delete(connectionGuard);
129
+ };
130
+ const reTryHandler = (error) => {
131
+ clearConnectionGuard();
132
+ this.#connectionsInProgress.delete(address);
133
+ peripheral.removeListener("connect", connectHandler);
134
+ peripheral.removeListener("disconnect", reTryHandler);
139
135
  if (error) {
140
136
  logger.error(
141
- `Peripheral ${peripheral.address} disconnected while trying to connect, try again`,
137
+ `Peripheral ${peripheralAddress} disconnected while trying to connect, try again`,
142
138
  error
143
139
  );
144
140
  } else {
145
- logger.info(`Peripheral ${peripheral.address} disconnected while trying to connect, try gain`);
141
+ logger.info(`Peripheral ${peripheralAddress} disconnected while trying to connect, try again`);
146
142
  }
147
- peripheral.removeAllListeners("disconnect");
148
- peripheral.removeAllListeners("connect");
149
143
  this.openChannel(address, tryCount + 1).then(resolve).catch(reject);
150
144
  };
151
- peripheral.once("disconnect", reTryHandler);
152
- logger.debug(`Connect to Peripheral now (try ${tryCount})`);
153
- peripheral.connectAsync().catch(reTryHandler);
145
+ const connectHandler = async (error) => {
146
+ connectionGuard.connectTimeout.stop();
147
+ if (!this.#connectionGuards.has(connectionGuard)) {
148
+ return;
149
+ }
150
+ if (error) {
151
+ clearConnectionGuard();
152
+ reject(new BleError(`Error while connecting to peripheral ${peripheralAddress}`, error));
153
+ return;
154
+ }
155
+ if (this.#onMatterMessageListener === void 0) {
156
+ clearConnectionGuard();
157
+ reject(new InternalError(`Network Interface was not added to the system yet or was cleared.`));
158
+ return;
159
+ }
160
+ if (this.#connectionsInProgress.has(address)) {
161
+ return;
162
+ }
163
+ this.#connectionsInProgress.add(address);
164
+ try {
165
+ connectionGuard.interviewTimeout.start();
166
+ const services = await peripheral.discoverServicesAsync([BLE_MATTER_SERVICE_UUID]);
167
+ if (!this.#connectionGuards.has(connectionGuard)) {
168
+ return;
169
+ }
170
+ logger.debug(
171
+ `Peripheral ${peripheralAddress}: Found services: ${services.map((s) => s.uuid).join(", ")}`
172
+ );
173
+ for (const service of services) {
174
+ logger.debug(`Peripheral ${peripheralAddress}: Handle service: ${service.uuid}`);
175
+ if (service.uuid !== BLE_MATTER_SERVICE_UUID) continue;
176
+ const characteristics = await service.discoverCharacteristicsAsync();
177
+ if (!this.#connectionGuards.has(connectionGuard)) {
178
+ return;
179
+ }
180
+ let characteristicC1ForWrite;
181
+ let characteristicC2ForSubscribe;
182
+ let additionalCommissioningRelatedData;
183
+ for (const characteristic of characteristics) {
184
+ logger.debug(
185
+ `Peripheral ${peripheralAddress}: Handle characteristic:`,
186
+ characteristic.uuid,
187
+ characteristic.properties
188
+ );
189
+ switch (nobleUuidToUuid(characteristic.uuid)) {
190
+ case BLE_MATTER_C1_CHARACTERISTIC_UUID:
191
+ logger.debug(`Peripheral ${peripheralAddress}: Found C1 characteristic`);
192
+ characteristicC1ForWrite = characteristic;
193
+ break;
194
+ case BLE_MATTER_C2_CHARACTERISTIC_UUID:
195
+ logger.debug(`Peripheral ${peripheralAddress}: Found C2 characteristic`);
196
+ characteristicC2ForSubscribe = characteristic;
197
+ break;
198
+ case BLE_MATTER_C3_CHARACTERISTIC_UUID:
199
+ logger.debug(`Peripheral ${peripheralAddress}: Found C3 characteristic`);
200
+ if (hasAdditionalAdvertisementData) {
201
+ logger.debug(
202
+ `Peripheral ${peripheralAddress}: Reading additional commissioning related data`
203
+ );
204
+ const data = await characteristic.readAsync();
205
+ if (!this.#connectionGuards.has(connectionGuard)) {
206
+ return;
207
+ }
208
+ additionalCommissioningRelatedData = new Uint8Array(data);
209
+ logger.debug(`Peripheral ${peripheralAddress}: Additional data:`, data);
210
+ }
211
+ }
212
+ }
213
+ if (!characteristicC1ForWrite || !characteristicC2ForSubscribe) {
214
+ logger.debug(
215
+ `Peripheral ${peripheralAddress}: Missing required Matter characteristics. Ignore.`
216
+ );
217
+ continue;
218
+ }
219
+ connectionGuard.interviewTimeout.stop();
220
+ peripheral.removeListener("disconnect", reTryHandler);
221
+ this.#openChannels.set(address, peripheral);
222
+ try {
223
+ resolve(
224
+ await NobleBleChannel.create(
225
+ peripheral,
226
+ characteristicC1ForWrite,
227
+ characteristicC2ForSubscribe,
228
+ this.#onMatterMessageListener,
229
+ additionalCommissioningRelatedData
230
+ )
231
+ );
232
+ clearConnectionGuard();
233
+ this.#connectionsInProgress.delete(address);
234
+ } catch (error2) {
235
+ this.#connectionsInProgress.delete(address);
236
+ this.#openChannels.delete(address);
237
+ await peripheral.disconnectAsync();
238
+ reTryHandler(error2);
239
+ return;
240
+ }
241
+ }
242
+ } finally {
243
+ this.#connectionsInProgress.delete(address);
244
+ clearConnectionGuard();
245
+ }
246
+ peripheral.removeListener("disconnect", reTryHandler);
247
+ reject(
248
+ new BleError(`Peripheral ${peripheralAddress} does not have the required Matter characteristics`)
249
+ );
250
+ };
251
+ if (peripheral.state === "connected") {
252
+ logger.debug(`Peripheral ${peripheralAddress}: Already connected`);
253
+ connectHandler().catch((error) => logger.warn(`Error while connecting`, error));
254
+ } else if (peripheral.state === "disconnecting") {
255
+ logger.debug(`Peripheral ${peripheralAddress}: Disconnect in progress`);
256
+ connectionGuard.disconnectTimeout.start();
257
+ tryCount--;
258
+ peripheral.once("disconnect", reTryHandler);
259
+ } else {
260
+ if (peripheral.state === "connecting") {
261
+ peripheral.cancelConnect();
262
+ peripheral.state = "disconnected";
263
+ }
264
+ connectionGuard.connectTimeout.start();
265
+ peripheral.once("connect", connectHandler);
266
+ peripheral.once("disconnect", reTryHandler);
267
+ logger.debug(`Peripheral ${peripheralAddress}: Connect to Peripheral now (try ${tryCount})`);
268
+ peripheral.connectAsync().catch((error) => {
269
+ if (!this.#connectionGuards.has(connectionGuard)) {
270
+ return;
271
+ }
272
+ logger.info(`Peripheral ${peripheralAddress}: Error while connecting to peripheral`, error);
273
+ reTryHandler(error);
274
+ });
275
+ }
154
276
  });
155
277
  }
156
278
  onData(listener) {
157
- this.onMatterMessageListener = listener;
279
+ this.#onMatterMessageListener = listener;
158
280
  return {
159
281
  close: async () => await this.close()
160
282
  };
161
283
  }
162
284
  async close() {
163
- for (const peripheral of this.openChannels.values()) {
164
- await peripheral.disconnectAsync();
285
+ this.#closed = true;
286
+ for (const peripheral of this.#openChannels.values()) {
287
+ peripheral.disconnectAsync().catch((error) => logger.error(`Peripheral ${peripheral.address}: Error while disconnecting`, error));
165
288
  }
289
+ this.#openChannels.clear();
166
290
  }
167
291
  supports(type, _address) {
168
292
  if (type !== ChannelType.BLE) {
@@ -183,33 +307,52 @@ class NobleBleChannel extends BleChannel {
183
307
  });
184
308
  }
185
309
  static async create(peripheral, characteristicC1ForWrite, characteristicC2ForSubscribe, onMatterMessageListener, _additionalCommissioningRelatedData) {
310
+ const { address: peripheralAddress } = peripheral;
186
311
  let mtu = peripheral.mtu ?? 0;
187
312
  if (mtu > BLE_MAXIMUM_BTP_MTU) {
188
313
  mtu = BLE_MAXIMUM_BTP_MTU;
189
314
  }
190
- logger.debug(`Using MTU=${mtu} (Peripheral MTU=${peripheral.mtu})`);
315
+ logger.debug(
316
+ `Peripheral ${peripheralAddress}: Using MTU=${mtu} bytes (Peripheral supports up to ${peripheral.mtu} bytes)`
317
+ );
318
+ const {
319
+ promise: handshakeResponseReceivedPromise,
320
+ resolver: handshakeResolver,
321
+ rejecter: handshakeRejecter
322
+ } = createPromise();
323
+ const handshakeHandler = (data, isNotification) => {
324
+ if (data[0] === 101 && data[1] === 108 && data.length === 6) {
325
+ logger.info(
326
+ `Peripheral ${peripheralAddress}: Received Matter handshake response: ${data.toString("hex")}.`
327
+ );
328
+ btpHandshakeTimeout.stop();
329
+ handshakeResolver(data);
330
+ } else {
331
+ logger.debug(
332
+ `Peripheral ${peripheralAddress}: Received first data on C2: ${data.toString("hex")} (isNotification: ${isNotification}) - No handshake response, inforing`
333
+ );
334
+ }
335
+ };
336
+ const btpHandshakeTimeout = Time.getTimer("BLE handshake timeout", BTP_CONN_RSP_TIMEOUT_MS, async () => {
337
+ characteristicC2ForSubscribe.removeListener("data", handshakeHandler);
338
+ characteristicC2ForSubscribe.unsubscribeAsync().catch((error) => logger.error(`Peripheral ${peripheralAddress}: Error while unsubscribing`, error));
339
+ logger.debug(
340
+ `Peripheral ${peripheralAddress}: Handshake Response not received. Disconnected from peripheral`
341
+ );
342
+ handshakeRejecter(new BleError(`Peripheral ${peripheralAddress}: Handshake Response not received`));
343
+ }).start();
191
344
  const btpHandshakeRequest = BtpCodec.encodeBtpHandshakeRequest({
192
345
  versions: BTP_SUPPORTED_VERSIONS,
193
346
  attMtu: mtu,
194
347
  clientWindowSize: BTP_MAXIMUM_WINDOW_SIZE
195
348
  });
196
- logger.debug(`sending BTP handshake request: ${Logger.toJSON(btpHandshakeRequest)}`);
349
+ logger.debug(
350
+ `Peripheral ${peripheralAddress}: Sending BTP handshake request: ${Logger.toJSON(btpHandshakeRequest)}`
351
+ );
197
352
  await characteristicC1ForWrite.writeAsync(Buffer.from(btpHandshakeRequest.buffer), false);
198
- const btpHandshakeTimeout = Time.getTimer("BLE handshake timeout", BTP_CONN_RSP_TIMEOUT_MS, async () => {
199
- await peripheral.disconnectAsync();
200
- logger.debug("Handshake Response not received. Disconnected from peripheral");
201
- }).start();
202
- logger.debug("subscribing to C2 characteristic");
353
+ logger.debug(`Peripheral ${peripheralAddress}: Subscribing to C2 characteristic`);
203
354
  await characteristicC2ForSubscribe.subscribeAsync();
204
- const { promise: handshakeResponseReceivedPromise, resolver } = createPromise();
205
- characteristicC2ForSubscribe.once("data", (data, isNotification) => {
206
- logger.debug(`received first data on C2: ${data.toString("hex")} (isNotification: ${isNotification})`);
207
- if (data[0] === 101 && data[1] === 108 && data.length === 6) {
208
- logger.info(`Received Matter handshake response: ${data.toString("hex")}.`);
209
- btpHandshakeTimeout.stop();
210
- resolver(data);
211
- }
212
- });
355
+ characteristicC2ForSubscribe.once("data", handshakeHandler);
213
356
  const handshakeResponse = await handshakeResponseReceivedPromise;
214
357
  const btpSession = await BtpSessionHandler.createAsCentral(
215
358
  new Uint8Array(handshakeResponse),
@@ -218,7 +361,9 @@ class NobleBleChannel extends BleChannel {
218
361
  return await characteristicC1ForWrite.writeAsync(Buffer.from(data.buffer), false);
219
362
  },
220
363
  // callback to disconnect the BLE connection
221
- async () => void characteristicC2ForSubscribe.unsubscribeAsync().then(() => peripheral.disconnectAsync().then(() => logger.debug("disconnected from peripheral"))),
364
+ async () => void characteristicC2ForSubscribe.unsubscribeAsync().then(
365
+ () => peripheral.disconnectAsync().then(() => logger.debug(`Peripheral ${peripheralAddress}: Disconnected from peripheral`))
366
+ ),
222
367
  // callback to forward decoded and de-assembled Matter messages to ExchangeManager
223
368
  async (data) => {
224
369
  if (onMatterMessageListener === void 0) {
@@ -228,7 +373,9 @@ class NobleBleChannel extends BleChannel {
228
373
  }
229
374
  );
230
375
  characteristicC2ForSubscribe.on("data", (data, isNotification) => {
231
- logger.debug(`received data on C2: ${data.toString("hex")} (isNotification: ${isNotification})`);
376
+ logger.debug(
377
+ `Peripheral ${peripheralAddress}: received data on C2: ${data.toString("hex")} (isNotification: ${isNotification})`
378
+ );
232
379
  void btpSession.handleIncomingBleData(new Uint8Array(data));
233
380
  });
234
381
  const nobleChannel = new NobleBleChannel(peripheral, btpSession);
@@ -242,11 +389,15 @@ class NobleBleChannel extends BleChannel {
242
389
  */
243
390
  async send(data) {
244
391
  if (!this.connected) {
245
- logger.debug("Cannot send data because not connected to peripheral.");
392
+ logger.debug(
393
+ `Peripheral ${this.peripheral.address}: Cannot send data because not connected to peripheral.`
394
+ );
246
395
  return;
247
396
  }
248
397
  if (this.btpSession === void 0) {
249
- throw new BtpFlowError(`Cannot send data, no BTP session initialized`);
398
+ throw new BtpFlowError(
399
+ `Peripheral ${this.peripheral.address}: Cannot send data, no BTP session initialized`
400
+ );
250
401
  }
251
402
  await this.btpSession.sendMatterMessage(data);
252
403
  }
@@ -256,7 +407,7 @@ class NobleBleChannel extends BleChannel {
256
407
  }
257
408
  async close() {
258
409
  await this.btpSession.close();
259
- await this.peripheral.disconnectAsync();
410
+ this.peripheral.disconnectAsync().catch((error) => logger.error(`Peripheral ${this.peripheral.address}: Error while disconnecting`, error));
260
411
  }
261
412
  }
262
413
  export {
@@ -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"}
@@ -37,7 +37,12 @@ class NobleBleClient {
37
37
  }
38
38
  });
39
39
  noble.on("discover", (peripheral) => this.handleDiscoveredDevice(peripheral));
40
- noble.on("scanStart", () => this.isScanning = true);
40
+ noble.on("scanStart", () => {
41
+ if (!this.shouldScan) {
42
+ return;
43
+ }
44
+ this.isScanning = true;
45
+ });
41
46
  noble.on("scanStop", () => this.isScanning = false);
42
47
  }
43
48
  setDiscoveryCallback(callback) {
@@ -47,11 +52,13 @@ class NobleBleClient {
47
52
  }
48
53
  }
49
54
  async startScanning() {
50
- if (this.isScanning) return;
55
+ if (this.isScanning) {
56
+ return;
57
+ }
51
58
  this.shouldScan = true;
52
59
  if (this.nobleState === "poweredOn") {
53
60
  logger.debug("Start BLE scanning for Matter Services ...");
54
- await noble.startScanningAsync([BLE_MATTER_SERVICE_UUID], false);
61
+ await noble.startScanningAsync([BLE_MATTER_SERVICE_UUID], true);
55
62
  } else {
56
63
  logger.debug("noble state is not poweredOn ... delay scanning till poweredOn");
57
64
  }
@@ -64,23 +71,24 @@ class NobleBleClient {
64
71
  }
65
72
  }
66
73
  handleDiscoveredDevice(peripheral) {
74
+ const address = peripheral.address;
67
75
  logger.debug(
68
- `Found peripheral ${peripheral.address} (${peripheral.advertisement.localName}): ${Logger.toJSON(
76
+ `Found peripheral ${address} (${peripheral.advertisement.localName}): ${Logger.toJSON(
69
77
  peripheral.advertisement
70
78
  )}`
71
79
  );
72
80
  if (!peripheral.connectable) {
73
- logger.info(`Peripheral ${peripheral.address} is not connectable ... ignoring`);
81
+ logger.info(`Peripheral ${address} is not connectable ... ignoring`);
74
82
  return;
75
83
  }
76
84
  const matterServiceData = peripheral.advertisement.serviceData.find(
77
85
  (serviceData) => serviceData.uuid === BLE_MATTER_SERVICE_UUID
78
86
  );
79
87
  if (matterServiceData === void 0 || matterServiceData.data.length !== 8) {
80
- logger.info(`Peripheral ${peripheral.address} does not advertise Matter Service ... ignoring`);
88
+ logger.info(`Peripheral ${address} does not advertise Matter Service ... ignoring`);
81
89
  return;
82
90
  }
83
- this.discoveredPeripherals.set(peripheral.address, { peripheral, matterServiceData: matterServiceData.data });
91
+ this.discoveredPeripherals.set(address, { peripheral, matterServiceData: matterServiceData.data });
84
92
  this.deviceDiscoveredCallback?.(peripheral, matterServiceData.data);
85
93
  }
86
94
  }
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../src/NobleBleClient.ts"],
4
- "mappings": "AAAA;AAAA;AAAA;AAAA;AAAA;AAMA,SAAS,cAAc;AACvB,SAAS,WAAAA,gBAAe;AACxB,SAAS,+BAA+B;AAIxC,MAAM,SAAS,OAAO,IAAI,gBAAgB;AAC1C,IAAI;AAEJ,SAAS,UAAU,OAAgB;AAE/B,MAAI,UAAU,QAAW;AACrB,YAAQ,IAAI,sBAAsB,MAAM,SAAS;AAAA,EACrD;AACA,UAAQA,SAAQ,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,uBAAuB,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,OAAO;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,SAAS,cAAc;AACvB,SAAS,WAAAA,gBAAe;AACxB,SAAS,+BAA+B;AAIxC,MAAM,SAAS,OAAO,IAAI,gBAAgB;AAC1C,IAAI;AAEJ,SAAS,UAAU,OAAgB;AAE/B,MAAI,UAAU,QAAW;AACrB,YAAQ,IAAI,sBAAsB,MAAM,SAAS;AAAA,EACrD;AACA,UAAQA,SAAQ,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,uBAAuB,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,OAAO;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": ["require"]
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"}