@ledgerhq/react-native-hw-transport-ble 6.31.0 → 6.32.0-nightly.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.
@@ -14,6 +14,7 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
14
14
  var _a;
15
15
  Object.defineProperty(exports, "__esModule", { value: true });
16
16
  exports.setReconnectionConfig = void 0;
17
+ const uuid_1 = require("uuid");
17
18
  const hw_transport_1 = __importDefault(require("@ledgerhq/hw-transport"));
18
19
  // ---------------------------------------------------------------------------------------------
19
20
  // Since this is a react-native library and metro bundler does not support
@@ -102,11 +103,13 @@ const clearDisconnectTimeout = (deviceId, context) => {
102
103
  *
103
104
  * @param deviceOrId
104
105
  * @param needsReconnect
105
- * @param timeoutMs TODO: to keep, used in a separate PR
106
+ * @param timeoutMs Optional Timeout (in ms) applied during the connection with the device
106
107
  * @param context Optional tracing/log context
108
+ * @param injectedDependencies Contains optional injected dependencies used by the transport implementation
109
+ * - rxjsScheduler: dependency injected RxJS scheduler to control time. Default AsyncScheduler.
107
110
  * @returns A BleTransport instance
108
111
  */
109
- function open(deviceOrId, needsReconnect, timeoutMs, context) {
112
+ function open(deviceOrId, needsReconnect, timeoutMs, context, { rxjsScheduler } = {}) {
110
113
  return __awaiter(this, void 0, void 0, function* () {
111
114
  const tracer = new logs_1.LocalTracer(LOG_TYPE, context);
112
115
  let device;
@@ -142,14 +145,14 @@ function open(deviceOrId, needsReconnect, timeoutMs, context) {
142
145
  });
143
146
  // Nb ConnectionOptions dropped since it's not used internally by ble-plx.
144
147
  try {
145
- device = yield bleManagerInstance().connectToDevice(deviceOrId, connectOptions);
148
+ device = yield bleManagerInstance().connectToDevice(deviceOrId, Object.assign(Object.assign({}, connectOptions), { timeout: timeoutMs }));
146
149
  }
147
150
  catch (e) {
148
151
  tracer.trace(`Error code: ${e.errorCode}`);
149
152
  if (e.errorCode === react_native_ble_plx_1.BleErrorCode.DeviceMTUChangeFailed) {
150
153
  // If the MTU update did not work, we try to connect without requesting for a specific MTU
151
154
  connectOptions = {};
152
- device = yield bleManagerInstance().connectToDevice(deviceOrId);
155
+ device = yield bleManagerInstance().connectToDevice(deviceOrId, { timeout: timeoutMs });
153
156
  }
154
157
  else {
155
158
  throw e;
@@ -167,7 +170,7 @@ function open(deviceOrId, needsReconnect, timeoutMs, context) {
167
170
  if (!(yield device.isConnected())) {
168
171
  tracer.trace(`Device found but not connected. connecting...`, { timeoutMs, connectOptions });
169
172
  try {
170
- yield device.connect(Object.assign({}, connectOptions));
173
+ yield device.connect(Object.assign(Object.assign({}, connectOptions), { timeout: timeoutMs }));
171
174
  }
172
175
  catch (error) {
173
176
  tracer.trace(`Connect error`, { error });
@@ -188,6 +191,13 @@ function open(deviceOrId, needsReconnect, timeoutMs, context) {
188
191
  productName,
189
192
  });
190
193
  }
194
+ // This case should not happen, but recording logs to be warned if we see it in production
195
+ else if (error.errorCode === react_native_ble_plx_1.BleErrorCode.DeviceAlreadyConnected) {
196
+ tracer.trace(`Device already connected, while it was not supposed to`, {
197
+ error,
198
+ });
199
+ throw (0, remapErrors_1.remapError)(error);
200
+ }
191
201
  else {
192
202
  throw (0, remapErrors_1.remapError)(error);
193
203
  }
@@ -221,40 +231,43 @@ function open(deviceOrId, needsReconnect, timeoutMs, context) {
221
231
  tracer.trace(`Characteristics not found`);
222
232
  throw new errors_1.TransportError("service not found", "BLEServiceNotFound");
223
233
  }
224
- let writeC;
225
- let writeCmdC;
226
- let notifyC;
234
+ let writableWithResponseCharacteristic;
235
+ let writableWithoutResponseCharacteristic;
236
+ // A characteristic that can monitor value changes
237
+ let notifiableCharacteristic;
227
238
  for (const c of characteristics) {
228
239
  if (c.uuid === writeUuid) {
229
- writeC = c;
240
+ writableWithResponseCharacteristic = c;
230
241
  }
231
242
  else if (c.uuid === writeCmdUuid) {
232
- writeCmdC = c;
243
+ writableWithoutResponseCharacteristic = c;
233
244
  }
234
245
  else if (c.uuid === notifyUuid) {
235
- notifyC = c;
246
+ notifiableCharacteristic = c;
236
247
  }
237
248
  }
238
- if (!writeC) {
249
+ if (!writableWithResponseCharacteristic) {
239
250
  throw new errors_1.TransportError("write characteristic not found", "BLECharacteristicNotFound");
240
251
  }
241
- if (!notifyC) {
252
+ if (!notifiableCharacteristic) {
242
253
  throw new errors_1.TransportError("notify characteristic not found", "BLECharacteristicNotFound");
243
254
  }
244
- if (!writeC.isWritableWithResponse) {
245
- throw new errors_1.TransportError("write characteristic not writableWithResponse", "BLECharacteristicInvalid");
255
+ if (!writableWithResponseCharacteristic.isWritableWithResponse) {
256
+ throw new errors_1.TransportError("The writable-with-response characteristic is not writable with response", "BLECharacteristicInvalid");
246
257
  }
247
- if (!notifyC.isNotifiable) {
258
+ if (!notifiableCharacteristic.isNotifiable) {
248
259
  throw new errors_1.TransportError("notify characteristic not notifiable", "BLECharacteristicInvalid");
249
260
  }
250
- if (writeCmdC) {
251
- if (!writeCmdC.isWritableWithoutResponse) {
252
- throw new errors_1.TransportError("write cmd characteristic not writableWithoutResponse", "BLECharacteristicInvalid");
261
+ if (writableWithoutResponseCharacteristic) {
262
+ if (!writableWithoutResponseCharacteristic.isWritableWithoutResponse) {
263
+ throw new errors_1.TransportError("The writable-without-response characteristic is not writable without response", "BLECharacteristicInvalid");
253
264
  }
254
265
  }
255
266
  tracer.trace(`device.mtu=${device.mtu}`);
256
- const notifyObservable = (0, monitorCharacteristic_1.monitorCharacteristic)(notifyC, context).pipe((0, operators_1.catchError)(e => {
267
+ // Inits the observable that will emit received data from the device via BLE
268
+ const notifyObservable = (0, monitorCharacteristic_1.monitorCharacteristic)(notifiableCharacteristic, context).pipe((0, operators_1.catchError)(e => {
257
269
  // LL-9033 fw 2.0.2 introduced this case, we silence the inner unhandled error.
270
+ // It will be handled when negotiating the MTU in `inferMTU` but will be ignored in other cases.
258
271
  const msg = String(e);
259
272
  return msg.includes("notify change failed")
260
273
  ? (0, rxjs_1.of)(new errors_1.PairingFailed(msg))
@@ -263,16 +276,22 @@ function open(deviceOrId, needsReconnect, timeoutMs, context) {
263
276
  if (value instanceof errors_1.PairingFailed)
264
277
  return;
265
278
  (0, logs_1.trace)({ type: "ble-frame", message: `<= ${value.toString("hex")}`, context });
266
- }), (0, operators_1.share)());
279
+ }),
280
+ // Returns a new Observable that multicasts (shares) the original Observable.
281
+ // As long as there is at least one Subscriber this Observable will be subscribed and emitting data.
282
+ (0, operators_1.share)());
283
+ // Keeps the input from the device observable alive (multicast observable)
267
284
  const notif = notifyObservable.subscribe();
268
- const transport = new BleTransport(device, writeC, writeCmdC, notifyObservable, deviceModel, {
285
+ const transport = new BleTransport(device, writableWithResponseCharacteristic, writableWithoutResponseCharacteristic, notifyObservable, deviceModel, {
269
286
  context,
287
+ rxjsScheduler,
270
288
  });
271
289
  tracer.trace(`New BleTransport created`);
272
290
  // Keeping it as a comment for now but if no new bluetooth issues occur, we will be able to remove it
273
291
  // await transport.requestConnectionPriority("High");
274
292
  // eslint-disable-next-line prefer-const
275
293
  let disconnectedSub;
294
+ // Callbacks on `react-native-ble-plx` notifying the device has been disconnected
276
295
  const onDisconnect = (error) => {
277
296
  transport.isConnected = false;
278
297
  transport.notYetDisconnected = false;
@@ -280,7 +299,7 @@ function open(deviceOrId, needsReconnect, timeoutMs, context) {
280
299
  disconnectedSub === null || disconnectedSub === void 0 ? void 0 : disconnectedSub.remove();
281
300
  clearDisconnectTimeout(transport.id);
282
301
  delete transportsCache[transport.id];
283
- tracer.trace(`On device disconnected callback: cleared cached transport for ${transport.id}, emitting Transport event "disconnect"`, { reason: error });
302
+ tracer.trace(`On device disconnected callback: cleared cached transport for ${transport.id}, emitting Transport event "disconnect. Error: ${error}"`, { reason: error });
284
303
  transport.emit("disconnect", error);
285
304
  };
286
305
  // eslint-disable-next-line require-atomic-updates
@@ -309,7 +328,8 @@ function open(deviceOrId, needsReconnect, timeoutMs, context) {
309
328
  needsReconnect = false;
310
329
  }
311
330
  if (needsReconnect) {
312
- yield BleTransport.disconnect(transport.id).catch(() => { });
331
+ tracer.trace(`Device needs reconnection. Triggering a disconnect`);
332
+ yield BleTransport.disconnectDevice(transport.id);
313
333
  yield delay(reconnectionConfig.delayAfterFirstPairing);
314
334
  }
315
335
  }
@@ -365,7 +385,7 @@ class BleTransport extends hw_transport_1.default {
365
385
  return;
366
386
  if (devices.length) {
367
387
  tracer.trace("Disconnecting from all devices", { deviceCount: devices.length });
368
- yield Promise.all(devices.map(d => BleTransport.disconnect(d.id).catch(() => { })));
388
+ yield Promise.all(devices.map(d => BleTransport.disconnectDevice(d.id)));
369
389
  }
370
390
  if (unsubscribed)
371
391
  return;
@@ -401,87 +421,166 @@ class BleTransport extends hw_transport_1.default {
401
421
  * Opens a BLE transport
402
422
  *
403
423
  * @param {Device | string} deviceOrId
404
- * @param timeoutMs TODO: to keep, used in a separate PR
424
+ * @param timeoutMs Applied when trying to connect to a device
405
425
  * @param context An optional context object for log/tracing strategy
426
+ * @param injectedDependencies Contains optional injected dependencies used by the transport implementation
427
+ * - rxjsScheduler: dependency injected RxJS scheduler to control time. Default AsyncScheduler.
406
428
  */
407
- static open(deviceOrId, timeoutMs, context) {
429
+ static open(deviceOrId, timeoutMs, context, { rxjsScheduler } = {}) {
408
430
  return __awaiter(this, void 0, void 0, function* () {
409
- return open(deviceOrId, true, timeoutMs, context);
431
+ return open(deviceOrId, true, timeoutMs, context, { rxjsScheduler });
410
432
  });
411
433
  }
412
- constructor(device, writeCharacteristic, writeCmdCharacteristic, notifyObservable, deviceModel, { context } = {}) {
434
+ /**
435
+ * The static `open` function is used to handle BleTransport instantiation
436
+ *
437
+ * @param device
438
+ * @param writableWithResponseCharacteristic A BLE characteristic that we can write on,
439
+ * and that will be acknowledged in response from the device when it receives the written value.
440
+ * @param writableWithoutResponseCharacteristic A BLE characteristic that we can write on,
441
+ * and that will not be acknowledged in response from the device
442
+ * @param notifyObservable A multicast observable that emits messages received from the device
443
+ * @param deviceModel
444
+ * @param params Contains optional options and injected dependencies used by the transport implementation
445
+ * - abortTimeoutMs: stop the exchange after a given timeout. Another timeout exists
446
+ * to detect unresponsive device (see `unresponsiveTimeout`). This timeout aborts the exchange.
447
+ * - rxjsScheduler: dependency injected RxJS scheduler to control time. Default: AsyncScheduler.
448
+ */
449
+ constructor(device, writableWithResponseCharacteristic, writableWithoutResponseCharacteristic, notifyObservable, deviceModel, { context, rxjsScheduler } = {}) {
413
450
  super({ context, logType: LOG_TYPE });
414
451
  this.disconnectTimeout = null;
415
452
  this.isConnected = true;
416
453
  this.mtuSize = 20;
417
454
  this.notYetDisconnected = true;
418
455
  /**
419
- * Send data to the device using a low level API.
420
- * It's recommended to use the "send" method for a higher level API.
456
+ * A message exchange (APDU request <-> response) with the device that can be aborted
457
+ *
458
+ * The message will be BLE-encoded/framed before being sent, and the response will be BLE-decoded.
421
459
  *
422
- * @param {Buffer} apdu - The data to send.
423
- * @returns {Promise<Buffer>} A promise that resolves with the response data from the device.
460
+ * @param message A buffer (u8 array) of a none BLE-encoded message (an APDU for ex) to be sent to the device
461
+ * as a request
462
+ * @param options Contains optional options for the exchange function
463
+ * - abortTimeoutMs: stop the exchange after a given timeout. Another timeout exists
464
+ * to detect unresponsive device (see `unresponsiveTimeout`). This timeout aborts the exchange.
465
+ * @returns A promise that resolves with the response data from the device.
424
466
  */
425
- this.exchange = (apdu) => {
467
+ this.exchange = (message, { abortTimeoutMs } = {}) => {
426
468
  const tracer = this.tracer.withUpdatedContext({
427
469
  function: "exchange",
428
470
  });
429
- tracer.trace("Exchanging APDU ...");
430
- return this.exchangeAtomicImpl(() => __awaiter(this, void 0, void 0, function* () {
431
- try {
432
- const msgIn = apdu.toString("hex");
433
- tracer.withType("apdu").trace(`=> ${msgIn}`);
434
- const data = yield (0, rxjs_1.firstValueFrom)((0, rxjs_1.merge)(this.notifyObservable.pipe(receiveAPDU_1.receiveAPDU), (0, sendAPDU_1.sendAPDU)(this.write, apdu, this.mtuSize)));
435
- const msgOut = data.toString("hex");
436
- tracer.withType("apdu").trace(`<= ${msgOut}`);
437
- return data;
438
- }
439
- catch (error) {
471
+ tracer.trace("Exchanging APDU ...", { abortTimeoutMs });
472
+ tracer.withType("apdu").trace(`=> ${message.toString("hex")}`);
473
+ return this.exchangeAtomicImpl(() => {
474
+ return (0, rxjs_1.firstValueFrom)(
475
+ // `sendApdu` will only emit if an error occurred, otherwise it will complete,
476
+ // while `receiveAPDU` will emit the full response.
477
+ // Consequently it monitors the response while being able to reject on an error from the send.
478
+ (0, rxjs_1.merge)(this.notifyObservable.pipe(data => (0, receiveAPDU_1.receiveAPDU)(data, { context: tracer.getContext() })), (0, sendAPDU_1.sendAPDU)(this.write, message, this.mtuSize, {
479
+ context: tracer.getContext(),
480
+ })).pipe(abortTimeoutMs ? (0, operators_1.timeout)(abortTimeoutMs, this.rxjsScheduler) : (0, operators_1.tap)(), (0, operators_1.tap)(data => {
481
+ tracer.withType("apdu").trace(`<= ${data.toString("hex")}`);
482
+ }), (0, operators_1.catchError)((error) => __awaiter(this, void 0, void 0, function* () {
483
+ // Currently only 1 reason the exchange has been explicitly aborted (other than job and transport errors): a timeout
484
+ if (error instanceof rxjs_1.TimeoutError) {
485
+ tracer.trace("Aborting due to timeout and trying to cancel all communication write of the current exchange", {
486
+ abortTimeoutMs,
487
+ transactionIds: this.currentTransactionIds,
488
+ });
489
+ // No concurrent exchange should happen at the same time, so all pending operations are part of the same exchange
490
+ this.cancelPendingOperations();
491
+ throw new errors_1.TransportExchangeTimeoutError("Exchange aborted due to timeout");
492
+ }
440
493
  tracer.withType("ble-error").trace(`Error while exchanging APDU`, { error });
441
494
  if (this.notYetDisconnected) {
442
- // in such case we will always disconnect because something is bad.
443
- yield bleManagerInstance()
444
- .cancelDeviceConnection(this.id)
445
- .catch(() => { }); // but we ignore if disconnect worked.
495
+ // In such case we will always disconnect because something is bad.
496
+ // This sends a "disconnect" event
497
+ yield BleTransport.disconnectDevice(this.id);
446
498
  }
447
499
  const mappedError = (0, remapErrors_1.remapError)(error);
448
500
  tracer.trace("Error while exchanging APDU, mapped and throws following error", {
449
501
  mappedError,
450
502
  });
451
503
  throw mappedError;
452
- }
453
- }));
504
+ })), (0, operators_1.finalize)(() => {
505
+ tracer.trace("Clearing current transaction ids", {
506
+ currentTransactionIds: this.currentTransactionIds,
507
+ });
508
+ this.clearCurrentTransactionIds();
509
+ })));
510
+ });
454
511
  };
455
512
  /**
456
513
  * Do not call this directly unless you know what you're doing. Communication
457
514
  * with a Ledger device should be through the {@link exchange} method.
458
- * @param buffer
459
- * @param txid
515
+ *
516
+ * For each call a transaction id is added to the current stack of transaction ids.
517
+ * With this transaction id, a pending BLE communication operations can be cancelled.
518
+ * Note: each frame/packet of a longer BLE-encoded message to be sent should have their unique transaction id.
519
+ *
520
+ * @param buffer BLE-encoded packet to send to the device
521
+ * @param frameId Frame id to make `write` aware of a bigger message that this frame/packet is part of.
522
+ * Helps creating related a collection of transaction ids
460
523
  */
461
- this.write = (buffer, txid) => __awaiter(this, void 0, void 0, function* () {
524
+ this.write = (buffer) => __awaiter(this, void 0, void 0, function* () {
525
+ const transactionId = (0, uuid_1.v4)();
526
+ this.currentTransactionIds.push(transactionId);
527
+ const tracer = this.tracer.withUpdatedContext({ transactionId });
528
+ tracer.trace("Writing to device", {
529
+ willMessageBeAcked: !this.writableWithoutResponseCharacteristic,
530
+ });
462
531
  try {
463
- if (!this.writeCmdCharacteristic) {
464
- yield this.writeCharacteristic.writeWithResponse(buffer.toString("base64"), txid);
532
+ if (!this.writableWithoutResponseCharacteristic) {
533
+ // The message will be acked in response by the device
534
+ yield this.writableWithResponseCharacteristic.writeWithResponse(buffer.toString("base64"), transactionId);
465
535
  }
466
536
  else {
467
- yield this.writeCmdCharacteristic.writeWithoutResponse(buffer.toString("base64"), txid);
537
+ // The message won't be acked in response by the device
538
+ yield this.writableWithoutResponseCharacteristic.writeWithoutResponse(buffer.toString("base64"), transactionId);
468
539
  }
469
- this.tracer.withType("ble-frame").trace("=> " + buffer.toString("hex"));
540
+ tracer.withType("ble-frame").trace("=> " + buffer.toString("hex"));
470
541
  }
471
542
  catch (error) {
472
- this.tracer.trace("Error while writing APDU", { error });
543
+ tracer.trace("Error while writing APDU", { error });
473
544
  throw new errors_1.DisconnectedDeviceDuringOperation(error instanceof Error ? error.message : `${error}`);
474
545
  }
475
546
  });
476
547
  this.id = device.id;
477
548
  this.device = device;
478
- this.writeCharacteristic = writeCharacteristic;
479
- this.writeCmdCharacteristic = writeCmdCharacteristic;
549
+ this.writableWithResponseCharacteristic = writableWithResponseCharacteristic;
550
+ this.writableWithoutResponseCharacteristic = writableWithoutResponseCharacteristic;
480
551
  this.notifyObservable = notifyObservable;
481
552
  this.deviceModel = deviceModel;
553
+ this.rxjsScheduler = rxjsScheduler;
554
+ this.currentTransactionIds = [];
482
555
  clearDisconnectTimeout(this.id);
483
556
  this.tracer.trace(`New instance of BleTransport for device ${this.id}`);
484
557
  }
558
+ /**
559
+ * Tries to cancel all operations that have a recorded transaction and are pending
560
+ *
561
+ * Cancelling transaction which doesn't exist is ignored.
562
+ *
563
+ * Note: cancelling `writableWithoutResponseCharacteristic.write...` will throw a `BleError` with code `OperationCancelled`
564
+ * but this error should be ignored. (In `exchange` our observable is unsubscribed before `cancelPendingOperations`
565
+ * is called so the error is ignored)
566
+ */
567
+ cancelPendingOperations() {
568
+ for (const transactionId of this.currentTransactionIds) {
569
+ try {
570
+ this.tracer.trace("Cancelling operation", { transactionId });
571
+ bleManagerInstance().cancelTransaction(transactionId);
572
+ }
573
+ catch (error) {
574
+ this.tracer.trace("Error while cancelling operation", { transactionId, error });
575
+ }
576
+ }
577
+ }
578
+ /**
579
+ * Sets the collection of current transaction ids to an empty array
580
+ */
581
+ clearCurrentTransactionIds() {
582
+ this.currentTransactionIds = [];
583
+ }
485
584
  /**
486
585
  * Negotiate with the device the maximum transfer unit for the ble frames
487
586
  * @returns Promise<number>
@@ -492,22 +591,27 @@ class BleTransport extends hw_transport_1.default {
492
591
  this.tracer.trace(`Inferring MTU ...`, { currentDeviceMtu: mtu });
493
592
  yield this.exchangeAtomicImpl(() => __awaiter(this, void 0, void 0, function* () {
494
593
  try {
495
- mtu = yield (0, rxjs_1.firstValueFrom)((0, rxjs_1.merge)(this.notifyObservable.pipe((0, operators_1.tap)(maybeError => {
496
- if (maybeError instanceof Error)
594
+ mtu = yield (0, rxjs_1.firstValueFrom)((0, rxjs_1.merge)(this.notifyObservable.pipe((0, operators_1.map)(maybeError => {
595
+ // Catches the PairingFailed Error that has only been emitted
596
+ if (maybeError instanceof Error) {
497
597
  throw maybeError;
598
+ }
599
+ return maybeError;
498
600
  }), (0, operators_1.first)(buffer => buffer.readUInt8(0) === 0x08), (0, operators_1.map)(buffer => buffer.readUInt8(5))), (0, rxjs_1.defer)(() => (0, rxjs_1.from)(this.write(Buffer.from([0x08, 0, 0, 0, 0])))).pipe((0, operators_1.ignoreElements)())));
499
601
  }
500
602
  catch (error) {
501
603
  this.tracer.withType("ble-error").trace("Error while inferring MTU", { mtu });
502
- yield bleManagerInstance()
503
- .cancelDeviceConnection(this.id)
504
- .catch(() => { }); // but we ignore if disconnect worked.
604
+ yield BleTransport.disconnectDevice(this.id);
505
605
  const mappedError = (0, remapErrors_1.remapError)(error);
506
606
  this.tracer.trace("Error while inferring APDU, mapped and throws following error", {
507
607
  mappedError,
508
608
  });
509
609
  throw mappedError;
510
610
  }
611
+ finally {
612
+ // When negotiating the MTU, a message is sent/written to the device, and a transaction id was associated to this write
613
+ this.clearCurrentTransactionIds();
614
+ }
511
615
  }));
512
616
  this.tracer.trace(`Successfully negotiated MTU with device`, {
513
617
  mtu,
@@ -540,15 +644,17 @@ class BleTransport extends hw_transport_1.default {
540
644
  */
541
645
  close() {
542
646
  return __awaiter(this, void 0, void 0, function* () {
543
- this.tracer.trace("Closing, queuing a disconnect ...");
647
+ const tracer = this.tracer.withUpdatedContext({ function: "close" });
648
+ tracer.trace("Closing, queuing a disconnect with a timeout ...");
544
649
  let resolve;
545
650
  const disconnectPromise = new Promise(innerResolve => {
546
651
  resolve = innerResolve;
547
652
  });
548
653
  clearDisconnectTimeout(this.id);
549
654
  this.disconnectTimeout = setTimeout(() => {
655
+ tracer.trace("Disconnect timeout has been reached ...");
550
656
  if (this.isConnected) {
551
- BleTransport.disconnect(this.id, this.tracer.getContext())
657
+ BleTransport.disconnectDevice(this.id, tracer.getContext())
552
658
  .catch(() => { })
553
659
  .finally(resolve);
554
660
  }
@@ -592,19 +698,21 @@ BleTransport.setLogLevel = (logLevel) => {
592
698
  * Exposes method from the ble-plx library to disconnect a device
593
699
  *
594
700
  * Disconnects from {@link Device} if it's connected or cancels pending connection.
701
+ * A "disconnect" event will normally be emitted by the ble-plx lib once the device is disconnected.
702
+ * Errors are logged but silenced.
595
703
  */
596
- BleTransport.disconnect = (id, context) => __awaiter(void 0, void 0, void 0, function* () {
597
- (0, logs_1.trace)({
598
- type: LOG_TYPE,
599
- message: `Trying to disconnect device ${id})`,
600
- context,
601
- });
602
- yield bleManagerInstance().cancelDeviceConnection(id);
603
- (0, logs_1.trace)({
604
- type: LOG_TYPE,
605
- message: `Device ${id} disconnected`,
606
- context,
704
+ BleTransport.disconnectDevice = (id, context) => __awaiter(void 0, void 0, void 0, function* () {
705
+ const tracer = new logs_1.LocalTracer(LOG_TYPE, context);
706
+ tracer.trace(`Trying to disconnect device ${id}`);
707
+ yield bleManagerInstance()
708
+ .cancelDeviceConnection(id)
709
+ .catch(error => {
710
+ // Only log, ignore if disconnect did not work
711
+ tracer
712
+ .withType("ble-error")
713
+ .trace(`Error while trying to cancel device connection`, { error });
607
714
  });
715
+ tracer.trace(`Device ${id} disconnected`);
608
716
  });
609
717
  exports.default = BleTransport;
610
718
  //# sourceMappingURL=BleTransport.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"BleTransport.js","sourceRoot":"","sources":["../src/BleTransport.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"BleTransport.js","sourceRoot":"","sources":["../src/BleTransport.ts"],"names":[],"mappings":"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"}