@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.
- package/CHANGELOG.md +26 -0
- package/LICENSE.txt +21 -0
- package/lib/BleTransport.d.ts +67 -16
- package/lib/BleTransport.d.ts.map +1 -1
- package/lib/BleTransport.js +187 -79
- package/lib/BleTransport.js.map +1 -1
- package/lib/BleTransport.test.js +103 -15
- package/lib/BleTransport.test.js.map +1 -1
- package/lib/remapErrors.d.ts +1 -2
- package/lib/remapErrors.d.ts.map +1 -1
- package/lib/remapErrors.js.map +1 -1
- package/lib-es/BleTransport.d.ts +67 -16
- package/lib-es/BleTransport.d.ts.map +1 -1
- package/lib-es/BleTransport.js +191 -83
- package/lib-es/BleTransport.js.map +1 -1
- package/lib-es/BleTransport.test.js +104 -16
- package/lib-es/BleTransport.test.js.map +1 -1
- package/lib-es/remapErrors.d.ts +1 -2
- package/lib-es/remapErrors.d.ts.map +1 -1
- package/lib-es/remapErrors.js.map +1 -1
- package/package.json +6 -4
- package/src/BleTransport.test.ts +116 -15
- package/src/BleTransport.ts +278 -100
- package/src/remapErrors.ts +2 -1
package/lib-es/BleTransport.js
CHANGED
|
@@ -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
|
|
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
|
|
218
|
-
let
|
|
219
|
-
|
|
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
|
-
|
|
233
|
+
writableWithResponseCharacteristic = c;
|
|
223
234
|
}
|
|
224
235
|
else if (c.uuid === writeCmdUuid) {
|
|
225
|
-
|
|
236
|
+
writableWithoutResponseCharacteristic = c;
|
|
226
237
|
}
|
|
227
238
|
else if (c.uuid === notifyUuid) {
|
|
228
|
-
|
|
239
|
+
notifiableCharacteristic = c;
|
|
229
240
|
}
|
|
230
241
|
}
|
|
231
|
-
if (!
|
|
242
|
+
if (!writableWithResponseCharacteristic) {
|
|
232
243
|
throw new TransportError("write characteristic not found", "BLECharacteristicNotFound");
|
|
233
244
|
}
|
|
234
|
-
if (!
|
|
245
|
+
if (!notifiableCharacteristic) {
|
|
235
246
|
throw new TransportError("notify characteristic not found", "BLECharacteristicNotFound");
|
|
236
247
|
}
|
|
237
|
-
if (!
|
|
238
|
-
throw new TransportError("
|
|
248
|
+
if (!writableWithResponseCharacteristic.isWritableWithResponse) {
|
|
249
|
+
throw new TransportError("The writable-with-response characteristic is not writable with response", "BLECharacteristicInvalid");
|
|
239
250
|
}
|
|
240
|
-
if (!
|
|
251
|
+
if (!notifiableCharacteristic.isNotifiable) {
|
|
241
252
|
throw new TransportError("notify characteristic not notifiable", "BLECharacteristicInvalid");
|
|
242
253
|
}
|
|
243
|
-
if (
|
|
244
|
-
if (!
|
|
245
|
-
throw new TransportError("
|
|
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
|
-
|
|
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
|
-
}),
|
|
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,
|
|
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
|
-
|
|
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.
|
|
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
|
|
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
|
-
|
|
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
|
-
*
|
|
413
|
-
*
|
|
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
|
|
416
|
-
*
|
|
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 = (
|
|
460
|
+
this.exchange = (message, { abortTimeoutMs } = {}) => {
|
|
419
461
|
const tracer = this.tracer.withUpdatedContext({
|
|
420
462
|
function: "exchange",
|
|
421
463
|
});
|
|
422
|
-
tracer.trace("Exchanging APDU ...");
|
|
423
|
-
|
|
424
|
-
|
|
425
|
-
|
|
426
|
-
|
|
427
|
-
|
|
428
|
-
|
|
429
|
-
|
|
430
|
-
|
|
431
|
-
}
|
|
432
|
-
|
|
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
|
-
//
|
|
436
|
-
|
|
437
|
-
|
|
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
|
-
*
|
|
452
|
-
*
|
|
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
|
|
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.
|
|
457
|
-
|
|
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
|
-
|
|
530
|
+
// The message won't be acked in response by the device
|
|
531
|
+
yield this.writableWithoutResponseCharacteristic.writeWithoutResponse(buffer.toString("base64"), transactionId);
|
|
461
532
|
}
|
|
462
|
-
|
|
533
|
+
tracer.withType("ble-frame").trace("=> " + buffer.toString("hex"));
|
|
463
534
|
}
|
|
464
535
|
catch (error) {
|
|
465
|
-
|
|
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.
|
|
472
|
-
this.
|
|
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(
|
|
489
|
-
|
|
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
|
|
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.
|
|
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.
|
|
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.
|
|
590
|
-
|
|
591
|
-
|
|
592
|
-
|
|
593
|
-
|
|
594
|
-
|
|
595
|
-
|
|
596
|
-
|
|
597
|
-
|
|
598
|
-
|
|
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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"}
|