@ledgerhq/react-native-hw-transport-ble 6.31.0 → 6.32.0-next.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.
@@ -8,6 +8,7 @@ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, ge
8
8
  });
9
9
  };
10
10
  var _a;
11
+ import { v4 as uuid } from "uuid";
11
12
  import Transport from "@ledgerhq/hw-transport";
12
13
  // ---------------------------------------------------------------------------------------------
13
14
  // Since this is a react-native library and metro bundler does not support
@@ -22,12 +23,12 @@ import { receiveAPDU } from "@ledgerhq/devices/lib/ble/receiveAPDU";
22
23
  import { BleManager, ConnectionPriority, BleErrorCode, LogLevel, } from "react-native-ble-plx";
23
24
  import { DeviceModelId, getBluetoothServiceUuids, getInfosForServiceUuid, } from "@ledgerhq/devices";
24
25
  import { trace, LocalTracer } from "@ledgerhq/logs";
25
- import { defer, merge, from, of, throwError, firstValueFrom } from "rxjs";
26
- import { share, ignoreElements, first, map, tap, catchError } from "rxjs/operators";
27
- import { CantOpenDevice, TransportError, DisconnectedDeviceDuringOperation, PairingFailed, PeerRemovedPairing, } from "@ledgerhq/errors";
26
+ import { defer, merge, from, of, throwError, firstValueFrom, TimeoutError, } from "rxjs";
27
+ import { share, ignoreElements, first, map, tap, catchError, timeout, finalize, } from "rxjs/operators";
28
+ import { CantOpenDevice, TransportError, DisconnectedDeviceDuringOperation, PairingFailed, PeerRemovedPairing, TransportExchangeTimeoutError, } from "@ledgerhq/errors";
28
29
  import { monitorCharacteristic } from "./monitorCharacteristic";
29
30
  import { awaitsBleOn } from "./awaitsBleOn";
30
- import { decoratePromiseErrors, remapError, mapBleErrorToHwTransportError } from "./remapErrors";
31
+ import { decoratePromiseErrors, remapError, mapBleErrorToHwTransportError, } from "./remapErrors";
31
32
  const LOG_TYPE = "ble-verbose";
32
33
  /**
33
34
  * This is potentially not needed anymore, to be checked if the bug is still
@@ -95,11 +96,13 @@ const clearDisconnectTimeout = (deviceId, context) => {
95
96
  *
96
97
  * @param deviceOrId
97
98
  * @param needsReconnect
98
- * @param timeoutMs TODO: to keep, used in a separate PR
99
+ * @param timeoutMs Optional Timeout (in ms) applied during the connection with the device
99
100
  * @param context Optional tracing/log context
101
+ * @param injectedDependencies Contains optional injected dependencies used by the transport implementation
102
+ * - rxjsScheduler: dependency injected RxJS scheduler to control time. Default AsyncScheduler.
100
103
  * @returns A BleTransport instance
101
104
  */
102
- function open(deviceOrId, needsReconnect, timeoutMs, context) {
105
+ function open(deviceOrId, needsReconnect, timeoutMs, context, { rxjsScheduler } = {}) {
103
106
  return __awaiter(this, void 0, void 0, function* () {
104
107
  const tracer = new LocalTracer(LOG_TYPE, context);
105
108
  let device;
@@ -135,14 +138,14 @@ function open(deviceOrId, needsReconnect, timeoutMs, context) {
135
138
  });
136
139
  // Nb ConnectionOptions dropped since it's not used internally by ble-plx.
137
140
  try {
138
- device = yield bleManagerInstance().connectToDevice(deviceOrId, connectOptions);
141
+ device = yield bleManagerInstance().connectToDevice(deviceOrId, Object.assign(Object.assign({}, connectOptions), { timeout: timeoutMs }));
139
142
  }
140
143
  catch (e) {
141
144
  tracer.trace(`Error code: ${e.errorCode}`);
142
145
  if (e.errorCode === BleErrorCode.DeviceMTUChangeFailed) {
143
146
  // If the MTU update did not work, we try to connect without requesting for a specific MTU
144
147
  connectOptions = {};
145
- device = yield bleManagerInstance().connectToDevice(deviceOrId);
148
+ device = yield bleManagerInstance().connectToDevice(deviceOrId, { timeout: timeoutMs });
146
149
  }
147
150
  else {
148
151
  throw e;
@@ -160,7 +163,7 @@ function open(deviceOrId, needsReconnect, timeoutMs, context) {
160
163
  if (!(yield device.isConnected())) {
161
164
  tracer.trace(`Device found but not connected. connecting...`, { timeoutMs, connectOptions });
162
165
  try {
163
- yield device.connect(Object.assign({}, connectOptions));
166
+ yield device.connect(Object.assign(Object.assign({}, connectOptions), { timeout: timeoutMs }));
164
167
  }
165
168
  catch (error) {
166
169
  tracer.trace(`Connect error`, { error });
@@ -181,6 +184,13 @@ function open(deviceOrId, needsReconnect, timeoutMs, context) {
181
184
  productName,
182
185
  });
183
186
  }
187
+ // This case should not happen, but recording logs to be warned if we see it in production
188
+ else if (error.errorCode === BleErrorCode.DeviceAlreadyConnected) {
189
+ tracer.trace(`Device already connected, while it was not supposed to`, {
190
+ error,
191
+ });
192
+ throw remapError(error);
193
+ }
184
194
  else {
185
195
  throw remapError(error);
186
196
  }
@@ -214,40 +224,43 @@ function open(deviceOrId, needsReconnect, timeoutMs, context) {
214
224
  tracer.trace(`Characteristics not found`);
215
225
  throw new TransportError("service not found", "BLEServiceNotFound");
216
226
  }
217
- let writeC;
218
- let writeCmdC;
219
- let notifyC;
227
+ let writableWithResponseCharacteristic;
228
+ let writableWithoutResponseCharacteristic;
229
+ // A characteristic that can monitor value changes
230
+ let notifiableCharacteristic;
220
231
  for (const c of characteristics) {
221
232
  if (c.uuid === writeUuid) {
222
- writeC = c;
233
+ writableWithResponseCharacteristic = c;
223
234
  }
224
235
  else if (c.uuid === writeCmdUuid) {
225
- writeCmdC = c;
236
+ writableWithoutResponseCharacteristic = c;
226
237
  }
227
238
  else if (c.uuid === notifyUuid) {
228
- notifyC = c;
239
+ notifiableCharacteristic = c;
229
240
  }
230
241
  }
231
- if (!writeC) {
242
+ if (!writableWithResponseCharacteristic) {
232
243
  throw new TransportError("write characteristic not found", "BLECharacteristicNotFound");
233
244
  }
234
- if (!notifyC) {
245
+ if (!notifiableCharacteristic) {
235
246
  throw new TransportError("notify characteristic not found", "BLECharacteristicNotFound");
236
247
  }
237
- if (!writeC.isWritableWithResponse) {
238
- throw new TransportError("write characteristic not writableWithResponse", "BLECharacteristicInvalid");
248
+ if (!writableWithResponseCharacteristic.isWritableWithResponse) {
249
+ throw new TransportError("The writable-with-response characteristic is not writable with response", "BLECharacteristicInvalid");
239
250
  }
240
- if (!notifyC.isNotifiable) {
251
+ if (!notifiableCharacteristic.isNotifiable) {
241
252
  throw new TransportError("notify characteristic not notifiable", "BLECharacteristicInvalid");
242
253
  }
243
- if (writeCmdC) {
244
- if (!writeCmdC.isWritableWithoutResponse) {
245
- throw new TransportError("write cmd characteristic not writableWithoutResponse", "BLECharacteristicInvalid");
254
+ if (writableWithoutResponseCharacteristic) {
255
+ if (!writableWithoutResponseCharacteristic.isWritableWithoutResponse) {
256
+ throw new TransportError("The writable-without-response characteristic is not writable without response", "BLECharacteristicInvalid");
246
257
  }
247
258
  }
248
259
  tracer.trace(`device.mtu=${device.mtu}`);
249
- const notifyObservable = monitorCharacteristic(notifyC, context).pipe(catchError(e => {
260
+ // Inits the observable that will emit received data from the device via BLE
261
+ const notifyObservable = monitorCharacteristic(notifiableCharacteristic, context).pipe(catchError(e => {
250
262
  // LL-9033 fw 2.0.2 introduced this case, we silence the inner unhandled error.
263
+ // It will be handled when negotiating the MTU in `inferMTU` but will be ignored in other cases.
251
264
  const msg = String(e);
252
265
  return msg.includes("notify change failed")
253
266
  ? of(new PairingFailed(msg))
@@ -256,16 +269,22 @@ function open(deviceOrId, needsReconnect, timeoutMs, context) {
256
269
  if (value instanceof PairingFailed)
257
270
  return;
258
271
  trace({ type: "ble-frame", message: `<= ${value.toString("hex")}`, context });
259
- }), share());
272
+ }),
273
+ // Returns a new Observable that multicasts (shares) the original Observable.
274
+ // As long as there is at least one Subscriber this Observable will be subscribed and emitting data.
275
+ share());
276
+ // Keeps the input from the device observable alive (multicast observable)
260
277
  const notif = notifyObservable.subscribe();
261
- const transport = new BleTransport(device, writeC, writeCmdC, notifyObservable, deviceModel, {
278
+ const transport = new BleTransport(device, writableWithResponseCharacteristic, writableWithoutResponseCharacteristic, notifyObservable, deviceModel, {
262
279
  context,
280
+ rxjsScheduler,
263
281
  });
264
282
  tracer.trace(`New BleTransport created`);
265
283
  // Keeping it as a comment for now but if no new bluetooth issues occur, we will be able to remove it
266
284
  // await transport.requestConnectionPriority("High");
267
285
  // eslint-disable-next-line prefer-const
268
286
  let disconnectedSub;
287
+ // Callbacks on `react-native-ble-plx` notifying the device has been disconnected
269
288
  const onDisconnect = (error) => {
270
289
  transport.isConnected = false;
271
290
  transport.notYetDisconnected = false;
@@ -273,7 +292,7 @@ function open(deviceOrId, needsReconnect, timeoutMs, context) {
273
292
  disconnectedSub === null || disconnectedSub === void 0 ? void 0 : disconnectedSub.remove();
274
293
  clearDisconnectTimeout(transport.id);
275
294
  delete transportsCache[transport.id];
276
- tracer.trace(`On device disconnected callback: cleared cached transport for ${transport.id}, emitting Transport event "disconnect"`, { reason: error });
295
+ tracer.trace(`On device disconnected callback: cleared cached transport for ${transport.id}, emitting Transport event "disconnect. Error: ${error}"`, { reason: error });
277
296
  transport.emit("disconnect", error);
278
297
  };
279
298
  // eslint-disable-next-line require-atomic-updates
@@ -302,7 +321,8 @@ function open(deviceOrId, needsReconnect, timeoutMs, context) {
302
321
  needsReconnect = false;
303
322
  }
304
323
  if (needsReconnect) {
305
- yield BleTransport.disconnect(transport.id).catch(() => { });
324
+ tracer.trace(`Device needs reconnection. Triggering a disconnect`);
325
+ yield BleTransport.disconnectDevice(transport.id);
306
326
  yield delay(reconnectionConfig.delayAfterFirstPairing);
307
327
  }
308
328
  }
@@ -358,7 +378,7 @@ class BleTransport extends Transport {
358
378
  return;
359
379
  if (devices.length) {
360
380
  tracer.trace("Disconnecting from all devices", { deviceCount: devices.length });
361
- yield Promise.all(devices.map(d => BleTransport.disconnect(d.id).catch(() => { })));
381
+ yield Promise.all(devices.map(d => BleTransport.disconnectDevice(d.id)));
362
382
  }
363
383
  if (unsubscribed)
364
384
  return;
@@ -394,87 +414,166 @@ class BleTransport extends Transport {
394
414
  * Opens a BLE transport
395
415
  *
396
416
  * @param {Device | string} deviceOrId
397
- * @param timeoutMs TODO: to keep, used in a separate PR
417
+ * @param timeoutMs Applied when trying to connect to a device
398
418
  * @param context An optional context object for log/tracing strategy
419
+ * @param injectedDependencies Contains optional injected dependencies used by the transport implementation
420
+ * - rxjsScheduler: dependency injected RxJS scheduler to control time. Default AsyncScheduler.
399
421
  */
400
- static open(deviceOrId, timeoutMs, context) {
422
+ static open(deviceOrId, timeoutMs, context, { rxjsScheduler } = {}) {
401
423
  return __awaiter(this, void 0, void 0, function* () {
402
- return open(deviceOrId, true, timeoutMs, context);
424
+ return open(deviceOrId, true, timeoutMs, context, { rxjsScheduler });
403
425
  });
404
426
  }
405
- constructor(device, writeCharacteristic, writeCmdCharacteristic, notifyObservable, deviceModel, { context } = {}) {
427
+ /**
428
+ * The static `open` function is used to handle BleTransport instantiation
429
+ *
430
+ * @param device
431
+ * @param writableWithResponseCharacteristic A BLE characteristic that we can write on,
432
+ * and that will be acknowledged in response from the device when it receives the written value.
433
+ * @param writableWithoutResponseCharacteristic A BLE characteristic that we can write on,
434
+ * and that will not be acknowledged in response from the device
435
+ * @param notifyObservable A multicast observable that emits messages received from the device
436
+ * @param deviceModel
437
+ * @param params Contains optional options and injected dependencies used by the transport implementation
438
+ * - abortTimeoutMs: stop the exchange after a given timeout. Another timeout exists
439
+ * to detect unresponsive device (see `unresponsiveTimeout`). This timeout aborts the exchange.
440
+ * - rxjsScheduler: dependency injected RxJS scheduler to control time. Default: AsyncScheduler.
441
+ */
442
+ constructor(device, writableWithResponseCharacteristic, writableWithoutResponseCharacteristic, notifyObservable, deviceModel, { context, rxjsScheduler } = {}) {
406
443
  super({ context, logType: LOG_TYPE });
407
444
  this.disconnectTimeout = null;
408
445
  this.isConnected = true;
409
446
  this.mtuSize = 20;
410
447
  this.notYetDisconnected = true;
411
448
  /**
412
- * Send data to the device using a low level API.
413
- * It's recommended to use the "send" method for a higher level API.
449
+ * A message exchange (APDU request <-> response) with the device that can be aborted
450
+ *
451
+ * The message will be BLE-encoded/framed before being sent, and the response will be BLE-decoded.
414
452
  *
415
- * @param {Buffer} apdu - The data to send.
416
- * @returns {Promise<Buffer>} A promise that resolves with the response data from the device.
453
+ * @param message A buffer (u8 array) of a none BLE-encoded message (an APDU for ex) to be sent to the device
454
+ * as a request
455
+ * @param options Contains optional options for the exchange function
456
+ * - abortTimeoutMs: stop the exchange after a given timeout. Another timeout exists
457
+ * to detect unresponsive device (see `unresponsiveTimeout`). This timeout aborts the exchange.
458
+ * @returns A promise that resolves with the response data from the device.
417
459
  */
418
- this.exchange = (apdu) => {
460
+ this.exchange = (message, { abortTimeoutMs } = {}) => {
419
461
  const tracer = this.tracer.withUpdatedContext({
420
462
  function: "exchange",
421
463
  });
422
- tracer.trace("Exchanging APDU ...");
423
- return this.exchangeAtomicImpl(() => __awaiter(this, void 0, void 0, function* () {
424
- try {
425
- const msgIn = apdu.toString("hex");
426
- tracer.withType("apdu").trace(`=> ${msgIn}`);
427
- const data = yield firstValueFrom(merge(this.notifyObservable.pipe(receiveAPDU), sendAPDU(this.write, apdu, this.mtuSize)));
428
- const msgOut = data.toString("hex");
429
- tracer.withType("apdu").trace(`<= ${msgOut}`);
430
- return data;
431
- }
432
- catch (error) {
464
+ tracer.trace("Exchanging APDU ...", { abortTimeoutMs });
465
+ tracer.withType("apdu").trace(`=> ${message.toString("hex")}`);
466
+ return this.exchangeAtomicImpl(() => {
467
+ return firstValueFrom(
468
+ // `sendApdu` will only emit if an error occurred, otherwise it will complete,
469
+ // while `receiveAPDU` will emit the full response.
470
+ // Consequently it monitors the response while being able to reject on an error from the send.
471
+ merge(this.notifyObservable.pipe(data => receiveAPDU(data, { context: tracer.getContext() })), sendAPDU(this.write, message, this.mtuSize, {
472
+ context: tracer.getContext(),
473
+ })).pipe(abortTimeoutMs ? timeout(abortTimeoutMs, this.rxjsScheduler) : tap(), tap(data => {
474
+ tracer.withType("apdu").trace(`<= ${data.toString("hex")}`);
475
+ }), catchError((error) => __awaiter(this, void 0, void 0, function* () {
476
+ // Currently only 1 reason the exchange has been explicitly aborted (other than job and transport errors): a timeout
477
+ if (error instanceof TimeoutError) {
478
+ tracer.trace("Aborting due to timeout and trying to cancel all communication write of the current exchange", {
479
+ abortTimeoutMs,
480
+ transactionIds: this.currentTransactionIds,
481
+ });
482
+ // No concurrent exchange should happen at the same time, so all pending operations are part of the same exchange
483
+ this.cancelPendingOperations();
484
+ throw new TransportExchangeTimeoutError("Exchange aborted due to timeout");
485
+ }
433
486
  tracer.withType("ble-error").trace(`Error while exchanging APDU`, { error });
434
487
  if (this.notYetDisconnected) {
435
- // in such case we will always disconnect because something is bad.
436
- yield bleManagerInstance()
437
- .cancelDeviceConnection(this.id)
438
- .catch(() => { }); // but we ignore if disconnect worked.
488
+ // In such case we will always disconnect because something is bad.
489
+ // This sends a "disconnect" event
490
+ yield BleTransport.disconnectDevice(this.id);
439
491
  }
440
492
  const mappedError = remapError(error);
441
493
  tracer.trace("Error while exchanging APDU, mapped and throws following error", {
442
494
  mappedError,
443
495
  });
444
496
  throw mappedError;
445
- }
446
- }));
497
+ })), finalize(() => {
498
+ tracer.trace("Clearing current transaction ids", {
499
+ currentTransactionIds: this.currentTransactionIds,
500
+ });
501
+ this.clearCurrentTransactionIds();
502
+ })));
503
+ });
447
504
  };
448
505
  /**
449
506
  * Do not call this directly unless you know what you're doing. Communication
450
507
  * with a Ledger device should be through the {@link exchange} method.
451
- * @param buffer
452
- * @param txid
508
+ *
509
+ * For each call a transaction id is added to the current stack of transaction ids.
510
+ * With this transaction id, a pending BLE communication operations can be cancelled.
511
+ * Note: each frame/packet of a longer BLE-encoded message to be sent should have their unique transaction id.
512
+ *
513
+ * @param buffer BLE-encoded packet to send to the device
514
+ * @param frameId Frame id to make `write` aware of a bigger message that this frame/packet is part of.
515
+ * Helps creating related a collection of transaction ids
453
516
  */
454
- this.write = (buffer, txid) => __awaiter(this, void 0, void 0, function* () {
517
+ this.write = (buffer) => __awaiter(this, void 0, void 0, function* () {
518
+ const transactionId = uuid();
519
+ this.currentTransactionIds.push(transactionId);
520
+ const tracer = this.tracer.withUpdatedContext({ transactionId });
521
+ tracer.trace("Writing to device", {
522
+ willMessageBeAcked: !this.writableWithoutResponseCharacteristic,
523
+ });
455
524
  try {
456
- if (!this.writeCmdCharacteristic) {
457
- yield this.writeCharacteristic.writeWithResponse(buffer.toString("base64"), txid);
525
+ if (!this.writableWithoutResponseCharacteristic) {
526
+ // The message will be acked in response by the device
527
+ yield this.writableWithResponseCharacteristic.writeWithResponse(buffer.toString("base64"), transactionId);
458
528
  }
459
529
  else {
460
- yield this.writeCmdCharacteristic.writeWithoutResponse(buffer.toString("base64"), txid);
530
+ // The message won't be acked in response by the device
531
+ yield this.writableWithoutResponseCharacteristic.writeWithoutResponse(buffer.toString("base64"), transactionId);
461
532
  }
462
- this.tracer.withType("ble-frame").trace("=> " + buffer.toString("hex"));
533
+ tracer.withType("ble-frame").trace("=> " + buffer.toString("hex"));
463
534
  }
464
535
  catch (error) {
465
- this.tracer.trace("Error while writing APDU", { error });
536
+ tracer.trace("Error while writing APDU", { error });
466
537
  throw new DisconnectedDeviceDuringOperation(error instanceof Error ? error.message : `${error}`);
467
538
  }
468
539
  });
469
540
  this.id = device.id;
470
541
  this.device = device;
471
- this.writeCharacteristic = writeCharacteristic;
472
- this.writeCmdCharacteristic = writeCmdCharacteristic;
542
+ this.writableWithResponseCharacteristic = writableWithResponseCharacteristic;
543
+ this.writableWithoutResponseCharacteristic = writableWithoutResponseCharacteristic;
473
544
  this.notifyObservable = notifyObservable;
474
545
  this.deviceModel = deviceModel;
546
+ this.rxjsScheduler = rxjsScheduler;
547
+ this.currentTransactionIds = [];
475
548
  clearDisconnectTimeout(this.id);
476
549
  this.tracer.trace(`New instance of BleTransport for device ${this.id}`);
477
550
  }
551
+ /**
552
+ * Tries to cancel all operations that have a recorded transaction and are pending
553
+ *
554
+ * Cancelling transaction which doesn't exist is ignored.
555
+ *
556
+ * Note: cancelling `writableWithoutResponseCharacteristic.write...` will throw a `BleError` with code `OperationCancelled`
557
+ * but this error should be ignored. (In `exchange` our observable is unsubscribed before `cancelPendingOperations`
558
+ * is called so the error is ignored)
559
+ */
560
+ cancelPendingOperations() {
561
+ for (const transactionId of this.currentTransactionIds) {
562
+ try {
563
+ this.tracer.trace("Cancelling operation", { transactionId });
564
+ bleManagerInstance().cancelTransaction(transactionId);
565
+ }
566
+ catch (error) {
567
+ this.tracer.trace("Error while cancelling operation", { transactionId, error });
568
+ }
569
+ }
570
+ }
571
+ /**
572
+ * Sets the collection of current transaction ids to an empty array
573
+ */
574
+ clearCurrentTransactionIds() {
575
+ this.currentTransactionIds = [];
576
+ }
478
577
  /**
479
578
  * Negotiate with the device the maximum transfer unit for the ble frames
480
579
  * @returns Promise<number>
@@ -485,22 +584,27 @@ class BleTransport extends Transport {
485
584
  this.tracer.trace(`Inferring MTU ...`, { currentDeviceMtu: mtu });
486
585
  yield this.exchangeAtomicImpl(() => __awaiter(this, void 0, void 0, function* () {
487
586
  try {
488
- mtu = yield firstValueFrom(merge(this.notifyObservable.pipe(tap(maybeError => {
489
- if (maybeError instanceof Error)
587
+ mtu = yield firstValueFrom(merge(this.notifyObservable.pipe(map(maybeError => {
588
+ // Catches the PairingFailed Error that has only been emitted
589
+ if (maybeError instanceof Error) {
490
590
  throw maybeError;
591
+ }
592
+ return maybeError;
491
593
  }), first(buffer => buffer.readUInt8(0) === 0x08), map(buffer => buffer.readUInt8(5))), defer(() => from(this.write(Buffer.from([0x08, 0, 0, 0, 0])))).pipe(ignoreElements())));
492
594
  }
493
595
  catch (error) {
494
596
  this.tracer.withType("ble-error").trace("Error while inferring MTU", { mtu });
495
- yield bleManagerInstance()
496
- .cancelDeviceConnection(this.id)
497
- .catch(() => { }); // but we ignore if disconnect worked.
597
+ yield BleTransport.disconnectDevice(this.id);
498
598
  const mappedError = remapError(error);
499
599
  this.tracer.trace("Error while inferring APDU, mapped and throws following error", {
500
600
  mappedError,
501
601
  });
502
602
  throw mappedError;
503
603
  }
604
+ finally {
605
+ // When negotiating the MTU, a message is sent/written to the device, and a transaction id was associated to this write
606
+ this.clearCurrentTransactionIds();
607
+ }
504
608
  }));
505
609
  this.tracer.trace(`Successfully negotiated MTU with device`, {
506
610
  mtu,
@@ -533,15 +637,17 @@ class BleTransport extends Transport {
533
637
  */
534
638
  close() {
535
639
  return __awaiter(this, void 0, void 0, function* () {
536
- this.tracer.trace("Closing, queuing a disconnect ...");
640
+ const tracer = this.tracer.withUpdatedContext({ function: "close" });
641
+ tracer.trace("Closing, queuing a disconnect with a timeout ...");
537
642
  let resolve;
538
643
  const disconnectPromise = new Promise(innerResolve => {
539
644
  resolve = innerResolve;
540
645
  });
541
646
  clearDisconnectTimeout(this.id);
542
647
  this.disconnectTimeout = setTimeout(() => {
648
+ tracer.trace("Disconnect timeout has been reached ...");
543
649
  if (this.isConnected) {
544
- BleTransport.disconnect(this.id, this.tracer.getContext())
650
+ BleTransport.disconnectDevice(this.id, tracer.getContext())
545
651
  .catch(() => { })
546
652
  .finally(resolve);
547
653
  }
@@ -585,19 +691,21 @@ BleTransport.setLogLevel = (logLevel) => {
585
691
  * Exposes method from the ble-plx library to disconnect a device
586
692
  *
587
693
  * Disconnects from {@link Device} if it's connected or cancels pending connection.
694
+ * A "disconnect" event will normally be emitted by the ble-plx lib once the device is disconnected.
695
+ * Errors are logged but silenced.
588
696
  */
589
- BleTransport.disconnect = (id, context) => __awaiter(void 0, void 0, void 0, function* () {
590
- trace({
591
- type: LOG_TYPE,
592
- message: `Trying to disconnect device ${id})`,
593
- context,
594
- });
595
- yield bleManagerInstance().cancelDeviceConnection(id);
596
- trace({
597
- type: LOG_TYPE,
598
- message: `Device ${id} disconnected`,
599
- context,
697
+ BleTransport.disconnectDevice = (id, context) => __awaiter(void 0, void 0, void 0, function* () {
698
+ const tracer = new LocalTracer(LOG_TYPE, context);
699
+ tracer.trace(`Trying to disconnect device ${id}`);
700
+ yield bleManagerInstance()
701
+ .cancelDeviceConnection(id)
702
+ .catch(error => {
703
+ // Only log, ignore if disconnect did not work
704
+ tracer
705
+ .withType("ble-error")
706
+ .trace(`Error while trying to cancel device connection`, { error });
600
707
  });
708
+ tracer.trace(`Device ${id} disconnected`);
601
709
  });
602
710
  export default BleTransport;
603
711
  //# 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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"}