@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.
- 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 +9 -7
- package/src/BleTransport.test.ts +116 -15
- package/src/BleTransport.ts +278 -100
- package/src/remapErrors.ts +2 -1
package/lib/BleTransport.test.js
CHANGED
|
@@ -12,8 +12,12 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
|
12
12
|
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
13
13
|
};
|
|
14
14
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
15
|
+
const errors_1 = require("@ledgerhq/errors");
|
|
15
16
|
const BleTransport_1 = __importDefault(require("../src/BleTransport"));
|
|
16
17
|
const rxjs_1 = require("rxjs");
|
|
18
|
+
let mockNoResponseFromDevice = false;
|
|
19
|
+
const mockCancelTransaction = jest.fn();
|
|
20
|
+
let mockNegotiatedMtu;
|
|
17
21
|
/**
|
|
18
22
|
* It is essential to mock the BLE component of a BLE transport to verify
|
|
19
23
|
* the reliability of the connect/reconnect/disconnect logic, which is decoupled
|
|
@@ -137,6 +141,12 @@ jest.mock("react-native-ble-plx", () => {
|
|
|
137
141
|
serviceUUID: "13d63400-2c97-6004-0000-4c6564676572",
|
|
138
142
|
serviceID: 105553179758272,
|
|
139
143
|
writeWithoutResponse: (raw) => __awaiter(this, void 0, void 0, function* () {
|
|
144
|
+
// No response are sent back from the device (using `onDeviceResponse`)
|
|
145
|
+
// Imitates the case where the device is still connected but does not responds
|
|
146
|
+
// when saving the newly confirmed seed.
|
|
147
|
+
if (mockNoResponseFromDevice) {
|
|
148
|
+
return;
|
|
149
|
+
}
|
|
140
150
|
if (!dynamicProps.isConnected)
|
|
141
151
|
throw new BleError(22, "Device is not connected");
|
|
142
152
|
const hex = Buffer.from(raw, "base64").toString("hex");
|
|
@@ -144,7 +154,7 @@ jest.mock("react-native-ble-plx", () => {
|
|
|
144
154
|
switch (hex) {
|
|
145
155
|
// MTU handshake
|
|
146
156
|
case "0800000000":
|
|
147
|
-
value =
|
|
157
|
+
value = mockNegotiatedMtu;
|
|
148
158
|
break;
|
|
149
159
|
// getAppAndVersion - returning BOLOS on 1.0.0-rc9
|
|
150
160
|
case "0500000005b010000000":
|
|
@@ -173,12 +183,19 @@ jest.mock("react-native-ble-plx", () => {
|
|
|
173
183
|
},
|
|
174
184
|
};
|
|
175
185
|
},
|
|
186
|
+
cancelTransaction: mockCancelTransaction,
|
|
176
187
|
};
|
|
177
188
|
},
|
|
178
189
|
};
|
|
179
190
|
});
|
|
180
191
|
describe("BleTransport connectivity test coverage", () => {
|
|
181
192
|
const deviceId = "20EDD96F-7430-6E33-AB22-DD8AAB857CD4";
|
|
193
|
+
beforeEach(() => {
|
|
194
|
+
mockNoResponseFromDevice = false;
|
|
195
|
+
// MTU of 153 bytes
|
|
196
|
+
mockNegotiatedMtu = Buffer.from("080000000099", "hex");
|
|
197
|
+
mockCancelTransaction.mockClear();
|
|
198
|
+
});
|
|
182
199
|
describe("Device available and already paired", () => {
|
|
183
200
|
it("should find the device, connect, negotiate MTU", () => __awaiter(void 0, void 0, void 0, function* () {
|
|
184
201
|
const transport = yield BleTransport_1.default.open(deviceId);
|
|
@@ -186,7 +203,7 @@ describe("BleTransport connectivity test coverage", () => {
|
|
|
186
203
|
}));
|
|
187
204
|
it("should be disconnectable, and cleanup", () => __awaiter(void 0, void 0, void 0, function* () {
|
|
188
205
|
const transport = yield BleTransport_1.default.open(deviceId);
|
|
189
|
-
yield BleTransport_1.default.
|
|
206
|
+
yield BleTransport_1.default.disconnectDevice(deviceId);
|
|
190
207
|
expect(transport.isConnected).toBe(false);
|
|
191
208
|
}));
|
|
192
209
|
it("should disconnect in 500ms (5s default) after calling close", () => __awaiter(void 0, void 0, void 0, function* () {
|
|
@@ -227,21 +244,92 @@ describe("BleTransport connectivity test coverage", () => {
|
|
|
227
244
|
// Nb due to the different environments, the timeout behaves differently here
|
|
228
245
|
// and I can't check against a number for it to be cleared or not.
|
|
229
246
|
expect(transport.disconnectTimeout._destroyed).toBe(false);
|
|
230
|
-
yield BleTransport_1.default.
|
|
247
|
+
yield BleTransport_1.default.disconnectDevice(deviceId);
|
|
231
248
|
expect(transport.disconnectTimeout._destroyed).toBe(true);
|
|
232
249
|
}));
|
|
233
|
-
|
|
234
|
-
|
|
235
|
-
|
|
236
|
-
|
|
237
|
-
|
|
238
|
-
|
|
239
|
-
|
|
240
|
-
|
|
241
|
-
|
|
242
|
-
|
|
243
|
-
|
|
244
|
-
|
|
250
|
+
describe("When the message to exchange fits in 1 frame", () => {
|
|
251
|
+
it("should handle exchanges if all goes well", () => __awaiter(void 0, void 0, void 0, function* () {
|
|
252
|
+
const transport = yield BleTransport_1.default.open(deviceId);
|
|
253
|
+
expect(transport.isConnected).toBe(true);
|
|
254
|
+
const response = yield transport.exchange(Buffer.from("b010000000", "hex"));
|
|
255
|
+
expect(response.toString("hex")).toBe("0105424f4c4f5309312e302e302d7263399000");
|
|
256
|
+
}));
|
|
257
|
+
it("should throw on exchanges if disconnected", () => __awaiter(void 0, void 0, void 0, function* () {
|
|
258
|
+
const transport = yield BleTransport_1.default.open(deviceId);
|
|
259
|
+
expect(transport.isConnected).toBe(true);
|
|
260
|
+
yield BleTransport_1.default.disconnectDevice(deviceId);
|
|
261
|
+
yield expect(transport.exchange(Buffer.from("b010000000", "hex"))).rejects.toThrow(); // More specific errors some day.
|
|
262
|
+
}));
|
|
263
|
+
describe("And when an abort timeout is set", () => {
|
|
264
|
+
const abortTimeoutMs = 1000;
|
|
265
|
+
it("should throw an error and cancel the transaction if the abort timeout was reached", done => {
|
|
266
|
+
const rxjsScheduler = new rxjs_1.VirtualTimeScheduler();
|
|
267
|
+
function asyncFn() {
|
|
268
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
269
|
+
const transport = yield BleTransport_1.default.open(deviceId);
|
|
270
|
+
expect(transport.isConnected).toBe(true);
|
|
271
|
+
// Once we got the transport (MTU exchanged), we stop the communication
|
|
272
|
+
mockNoResponseFromDevice = true;
|
|
273
|
+
transport
|
|
274
|
+
.exchange(Buffer.from("b010000000", "hex"), { abortTimeoutMs })
|
|
275
|
+
.then(() => {
|
|
276
|
+
done("It should not succeed");
|
|
277
|
+
})
|
|
278
|
+
.catch(error => {
|
|
279
|
+
expect(error).toBeInstanceOf(errors_1.TransportExchangeTimeoutError);
|
|
280
|
+
expect(mockCancelTransaction).toHaveBeenCalledTimes(1);
|
|
281
|
+
done();
|
|
282
|
+
});
|
|
283
|
+
rxjsScheduler.flush();
|
|
284
|
+
});
|
|
285
|
+
}
|
|
286
|
+
asyncFn();
|
|
287
|
+
});
|
|
288
|
+
});
|
|
289
|
+
});
|
|
290
|
+
// Multi-frames message response is not handled by our current mocked react-native-ble-plx
|
|
291
|
+
// The logic of encoding a message into several frames is tested directly with unit tests on ledgerhq/devices/lib/ble/sendAPDU
|
|
292
|
+
describe("When the message to exchange needs more than 1 frame", () => {
|
|
293
|
+
beforeEach(() => __awaiter(void 0, void 0, void 0, function* () {
|
|
294
|
+
// Triggering a disconnection and clearing the transport cache
|
|
295
|
+
yield BleTransport_1.default.disconnectDevice(deviceId);
|
|
296
|
+
// MTU of 25 bytes
|
|
297
|
+
mockNegotiatedMtu = Buffer.from("080000000019", "hex");
|
|
298
|
+
}));
|
|
299
|
+
afterEach(() => __awaiter(void 0, void 0, void 0, function* () {
|
|
300
|
+
// Triggering a disconnection and clearing the transport cache
|
|
301
|
+
yield BleTransport_1.default.disconnectDevice(deviceId);
|
|
302
|
+
}));
|
|
303
|
+
describe("And when an abort timeout is set", () => {
|
|
304
|
+
const abortTimeoutMs = 1000;
|
|
305
|
+
it("should throw an error and cancel the transactions of all operations if the abort timeout was reached", done => {
|
|
306
|
+
const rxjsScheduler = new rxjs_1.VirtualTimeScheduler();
|
|
307
|
+
function asyncFn() {
|
|
308
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
309
|
+
const transport = yield BleTransport_1.default.open(deviceId);
|
|
310
|
+
expect(transport.isConnected).toBe(true);
|
|
311
|
+
// Once we got the transport (MTU exchanged), we stop the communication
|
|
312
|
+
mockNoResponseFromDevice = true;
|
|
313
|
+
// Imaginary APDU that will create an encoded message longer than MTU = 25 bytes
|
|
314
|
+
transport
|
|
315
|
+
.exchange(Buffer.from("b010000000b010000000b010000000b010000000b010000000", "hex"), {
|
|
316
|
+
abortTimeoutMs,
|
|
317
|
+
})
|
|
318
|
+
.then(() => {
|
|
319
|
+
done("It should not succeed");
|
|
320
|
+
})
|
|
321
|
+
.catch(error => {
|
|
322
|
+
expect(error).toBeInstanceOf(errors_1.TransportExchangeTimeoutError);
|
|
323
|
+
expect(mockCancelTransaction).toHaveBeenCalledTimes(2);
|
|
324
|
+
done();
|
|
325
|
+
});
|
|
326
|
+
rxjsScheduler.flush();
|
|
327
|
+
});
|
|
328
|
+
}
|
|
329
|
+
asyncFn();
|
|
330
|
+
});
|
|
331
|
+
});
|
|
332
|
+
});
|
|
245
333
|
it("should disconnect if close is called, even if pending response", done => {
|
|
246
334
|
// This is actually a very important test, if we have an ongoing apdu response,
|
|
247
335
|
// as in, the device never replied, but we expressed the intention of disconnecting
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"BleTransport.test.js","sourceRoot":"","sources":["../src/BleTransport.test.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"BleTransport.test.js","sourceRoot":"","sources":["../src/BleTransport.test.ts"],"names":[],"mappings":"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"}
|
package/lib/remapErrors.d.ts
CHANGED
|
@@ -1,10 +1,9 @@
|
|
|
1
1
|
import { HwTransportError, HwTransportErrorType } from "@ledgerhq/errors";
|
|
2
2
|
import { BleError, BleErrorCode } from "react-native-ble-plx";
|
|
3
|
-
type IOBleErrorRemap = Error | BleError | null | undefined;
|
|
3
|
+
export type IOBleErrorRemap = Error | BleError | null | undefined;
|
|
4
4
|
export declare const remapError: (error: IOBleErrorRemap) => IOBleErrorRemap;
|
|
5
5
|
export declare const rethrowError: (e: Error | null | undefined) => never;
|
|
6
6
|
export declare const decoratePromiseErrors: <A>(promise: Promise<A>) => Promise<A>;
|
|
7
7
|
export declare const bleErrorToHwTransportError: Map<BleErrorCode, HwTransportErrorType>;
|
|
8
8
|
export declare const mapBleErrorToHwTransportError: (bleError: BleError) => HwTransportError;
|
|
9
|
-
export {};
|
|
10
9
|
//# sourceMappingURL=remapErrors.d.ts.map
|
package/lib/remapErrors.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"remapErrors.d.ts","sourceRoot":"","sources":["../src/remapErrors.ts"],"names":[],"mappings":"AAAA,OAAO,EAEL,gBAAgB,EAChB,oBAAoB,EAGrB,MAAM,kBAAkB,CAAC;AAC1B,OAAO,EAAmB,QAAQ,EAAE,YAAY,EAAE,MAAM,sBAAsB,CAAC;AAE/E,
|
|
1
|
+
{"version":3,"file":"remapErrors.d.ts","sourceRoot":"","sources":["../src/remapErrors.ts"],"names":[],"mappings":"AAAA,OAAO,EAEL,gBAAgB,EAChB,oBAAoB,EAGrB,MAAM,kBAAkB,CAAC;AAC1B,OAAO,EAAmB,QAAQ,EAAE,YAAY,EAAE,MAAM,sBAAsB,CAAC;AAE/E,MAAM,MAAM,eAAe,GAAG,KAAK,GAAG,QAAQ,GAAG,IAAI,GAAG,SAAS,CAAC;AAElE,eAAO,MAAM,UAAU,UAAW,eAAe,KAAG,eAqBnD,CAAC;AAEF,eAAO,MAAM,YAAY,MAAO,KAAK,GAAG,IAAI,GAAG,SAAS,KAAG,KAE1D,CAAC;AAEF,eAAO,MAAM,qBAAqB,wCACL,CAAC;AAE9B,eAAO,MAAM,0BAA0B,yCAQrC,CAAC;AAEH,eAAO,MAAM,6BAA6B,aAAc,QAAQ,KAAG,gBAOlE,CAAC"}
|
package/lib/remapErrors.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"remapErrors.js","sourceRoot":"","sources":["../src/remapErrors.ts"],"names":[],"mappings":";;;AAAA,6CAM0B;AAC1B,+DAA+E;
|
|
1
|
+
{"version":3,"file":"remapErrors.js","sourceRoot":"","sources":["../src/remapErrors.ts"],"names":[],"mappings":";;;AAAA,6CAM0B;AAC1B,+DAA+E;AAIxE,MAAM,UAAU,GAAG,CAAC,KAAsB,EAAmB,EAAE;IACpE,IAAI,CAAC,KAAK,IAAI,CAAC,KAAK,CAAC,OAAO;QAAE,OAAO,KAAK,CAAC;IAE3C,IAAI,KAAK,YAAY,+BAAQ,EAAE;QAC7B,IACE,KAAK,CAAC,YAAY,KAAK,sCAAe,CAAC,aAAa;YACpD,KAAK,CAAC,MAAM,KAAK,kCAAkC,EACnD;YACA,OAAO,IAAI,2BAAkB,EAAE,CAAC;YAChC,6DAA6D;YAC7D,iFAAiF;SAClF;aAAM,IAAI,CAAA,KAAK,aAAL,KAAK,uBAAL,KAAK,CAAE,YAAY,MAAK,EAAE,EAAE;YACrC,OAAO,IAAI,sBAAa,EAAE,CAAC;SAC5B;KACF;IAED,IAAI,KAAK,CAAC,OAAO,CAAC,QAAQ,CAAC,kBAAkB,CAAC,IAAI,KAAK,CAAC,OAAO,CAAC,QAAQ,CAAC,WAAW,CAAC,EAAE;QACrF,OAAO,IAAI,2BAAkB,EAAE,CAAC;KACjC;IAED,OAAO,KAAK,CAAC;AACf,CAAC,CAAC;AArBW,QAAA,UAAU,cAqBrB;AAEK,MAAM,YAAY,GAAG,CAAC,CAA2B,EAAS,EAAE;IACjE,MAAM,IAAA,kBAAU,EAAC,CAAC,CAAC,CAAC;AACtB,CAAC,CAAC;AAFW,QAAA,YAAY,gBAEvB;AAEK,MAAM,qBAAqB,GAAG,CAAI,OAAmB,EAAc,EAAE,CAC1E,OAAO,CAAC,KAAK,CAAC,oBAAY,CAAC,CAAC;AADjB,QAAA,qBAAqB,yBACJ;AAEjB,QAAA,0BAA0B,GAAG,IAAI,GAAG,CAAC;IAChD,CAAC,mCAAY,CAAC,eAAe,EAAE,6BAAoB,CAAC,wBAAwB,CAAC;IAC7E,CAAC,mCAAY,CAAC,wBAAwB,EAAE,6BAAoB,CAAC,wBAAwB,CAAC;IACtF;QACE,kFAAkF;QAClF,mCAAY,CAAC,qBAAqB;QAClC,6BAAoB,CAAC,4BAA4B;KAClD;CACF,CAAC,CAAC;AAEI,MAAM,6BAA6B,GAAG,CAAC,QAAkB,EAAoB,EAAE;IACpF,MAAM,OAAO,GAAG,GAAG,QAAQ,CAAC,OAAO,aAAa,QAAQ,CAAC,SAAS,EAAE,CAAC;IAErE,MAAM,WAAW,GAAG,kCAA0B,CAAC,GAAG,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAC;IACvE,MAAM,IAAI,GAAG,CAAC,WAAW,CAAC,CAAC,CAAC,6BAAoB,CAAC,OAAO,CAAC,CAAC,CAAC,WAAW,CAAC;IAEvE,OAAO,IAAI,yBAAgB,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;AAC7C,CAAC,CAAC;AAPW,QAAA,6BAA6B,iCAOxC"}
|
package/lib-es/BleTransport.d.ts
CHANGED
|
@@ -4,7 +4,7 @@ import type { Subscription as TransportSubscription, Observer as TransportObserv
|
|
|
4
4
|
import { DeviceId, Device, Characteristic } from "react-native-ble-plx";
|
|
5
5
|
import type { DeviceModel } from "@ledgerhq/devices";
|
|
6
6
|
import { TraceContext } from "@ledgerhq/logs";
|
|
7
|
-
import { Observable, Observer } from "rxjs";
|
|
7
|
+
import { Observable, Observer, SchedulerLike } from "rxjs";
|
|
8
8
|
import { HwTransportError } from "@ledgerhq/errors";
|
|
9
9
|
import { ReconnectionConfig } from "./types";
|
|
10
10
|
export declare const setReconnectionConfig: (config: ReconnectionConfig | null | undefined) => void;
|
|
@@ -49,37 +49,82 @@ export default class BleTransport extends Transport {
|
|
|
49
49
|
* Opens a BLE transport
|
|
50
50
|
*
|
|
51
51
|
* @param {Device | string} deviceOrId
|
|
52
|
-
* @param timeoutMs
|
|
52
|
+
* @param timeoutMs Applied when trying to connect to a device
|
|
53
53
|
* @param context An optional context object for log/tracing strategy
|
|
54
|
+
* @param injectedDependencies Contains optional injected dependencies used by the transport implementation
|
|
55
|
+
* - rxjsScheduler: dependency injected RxJS scheduler to control time. Default AsyncScheduler.
|
|
54
56
|
*/
|
|
55
|
-
static open(deviceOrId: Device | string, timeoutMs?: number, context?: TraceContext
|
|
57
|
+
static open(deviceOrId: Device | string, timeoutMs?: number, context?: TraceContext, { rxjsScheduler }?: {
|
|
58
|
+
rxjsScheduler?: SchedulerLike;
|
|
59
|
+
}): Promise<BleTransport>;
|
|
56
60
|
/**
|
|
57
61
|
* Exposes method from the ble-plx library to disconnect a device
|
|
58
62
|
*
|
|
59
63
|
* Disconnects from {@link Device} if it's connected or cancels pending connection.
|
|
64
|
+
* A "disconnect" event will normally be emitted by the ble-plx lib once the device is disconnected.
|
|
65
|
+
* Errors are logged but silenced.
|
|
60
66
|
*/
|
|
61
|
-
static
|
|
67
|
+
static disconnectDevice: (id: DeviceId, context?: TraceContext) => Promise<void>;
|
|
62
68
|
device: Device;
|
|
63
69
|
deviceModel: DeviceModel;
|
|
64
70
|
disconnectTimeout: null | ReturnType<typeof setTimeout>;
|
|
65
71
|
id: string;
|
|
66
72
|
isConnected: boolean;
|
|
67
73
|
mtuSize: number;
|
|
68
|
-
notifyObservable: Observable<
|
|
74
|
+
notifyObservable: Observable<Buffer | Error>;
|
|
69
75
|
notYetDisconnected: boolean;
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
76
|
+
writableWithResponseCharacteristic: Characteristic;
|
|
77
|
+
writableWithoutResponseCharacteristic: Characteristic | undefined;
|
|
78
|
+
rxjsScheduler?: SchedulerLike;
|
|
79
|
+
currentTransactionIds: Array<string>;
|
|
80
|
+
/**
|
|
81
|
+
* The static `open` function is used to handle BleTransport instantiation
|
|
82
|
+
*
|
|
83
|
+
* @param device
|
|
84
|
+
* @param writableWithResponseCharacteristic A BLE characteristic that we can write on,
|
|
85
|
+
* and that will be acknowledged in response from the device when it receives the written value.
|
|
86
|
+
* @param writableWithoutResponseCharacteristic A BLE characteristic that we can write on,
|
|
87
|
+
* and that will not be acknowledged in response from the device
|
|
88
|
+
* @param notifyObservable A multicast observable that emits messages received from the device
|
|
89
|
+
* @param deviceModel
|
|
90
|
+
* @param params Contains optional options and injected dependencies used by the transport implementation
|
|
91
|
+
* - abortTimeoutMs: stop the exchange after a given timeout. Another timeout exists
|
|
92
|
+
* to detect unresponsive device (see `unresponsiveTimeout`). This timeout aborts the exchange.
|
|
93
|
+
* - rxjsScheduler: dependency injected RxJS scheduler to control time. Default: AsyncScheduler.
|
|
94
|
+
*/
|
|
95
|
+
constructor(device: Device, writableWithResponseCharacteristic: Characteristic, writableWithoutResponseCharacteristic: Characteristic | undefined, notifyObservable: Observable<Buffer | Error>, deviceModel: DeviceModel, { context, rxjsScheduler }?: {
|
|
73
96
|
context?: TraceContext;
|
|
97
|
+
rxjsScheduler?: SchedulerLike;
|
|
74
98
|
});
|
|
75
99
|
/**
|
|
76
|
-
*
|
|
77
|
-
*
|
|
100
|
+
* A message exchange (APDU request <-> response) with the device that can be aborted
|
|
101
|
+
*
|
|
102
|
+
* The message will be BLE-encoded/framed before being sent, and the response will be BLE-decoded.
|
|
103
|
+
*
|
|
104
|
+
* @param message A buffer (u8 array) of a none BLE-encoded message (an APDU for ex) to be sent to the device
|
|
105
|
+
* as a request
|
|
106
|
+
* @param options Contains optional options for the exchange function
|
|
107
|
+
* - abortTimeoutMs: stop the exchange after a given timeout. Another timeout exists
|
|
108
|
+
* to detect unresponsive device (see `unresponsiveTimeout`). This timeout aborts the exchange.
|
|
109
|
+
* @returns A promise that resolves with the response data from the device.
|
|
110
|
+
*/
|
|
111
|
+
exchange: (message: Buffer, { abortTimeoutMs }?: {
|
|
112
|
+
abortTimeoutMs?: number | undefined;
|
|
113
|
+
}) => Promise<Buffer>;
|
|
114
|
+
/**
|
|
115
|
+
* Tries to cancel all operations that have a recorded transaction and are pending
|
|
116
|
+
*
|
|
117
|
+
* Cancelling transaction which doesn't exist is ignored.
|
|
78
118
|
*
|
|
79
|
-
*
|
|
80
|
-
*
|
|
119
|
+
* Note: cancelling `writableWithoutResponseCharacteristic.write...` will throw a `BleError` with code `OperationCancelled`
|
|
120
|
+
* but this error should be ignored. (In `exchange` our observable is unsubscribed before `cancelPendingOperations`
|
|
121
|
+
* is called so the error is ignored)
|
|
122
|
+
*/
|
|
123
|
+
private cancelPendingOperations;
|
|
124
|
+
/**
|
|
125
|
+
* Sets the collection of current transaction ids to an empty array
|
|
81
126
|
*/
|
|
82
|
-
|
|
127
|
+
private clearCurrentTransactionIds;
|
|
83
128
|
/**
|
|
84
129
|
* Negotiate with the device the maximum transfer unit for the ble frames
|
|
85
130
|
* @returns Promise<number>
|
|
@@ -95,10 +140,16 @@ export default class BleTransport extends Transport {
|
|
|
95
140
|
/**
|
|
96
141
|
* Do not call this directly unless you know what you're doing. Communication
|
|
97
142
|
* with a Ledger device should be through the {@link exchange} method.
|
|
98
|
-
*
|
|
99
|
-
*
|
|
143
|
+
*
|
|
144
|
+
* For each call a transaction id is added to the current stack of transaction ids.
|
|
145
|
+
* With this transaction id, a pending BLE communication operations can be cancelled.
|
|
146
|
+
* Note: each frame/packet of a longer BLE-encoded message to be sent should have their unique transaction id.
|
|
147
|
+
*
|
|
148
|
+
* @param buffer BLE-encoded packet to send to the device
|
|
149
|
+
* @param frameId Frame id to make `write` aware of a bigger message that this frame/packet is part of.
|
|
150
|
+
* Helps creating related a collection of transaction ids
|
|
100
151
|
*/
|
|
101
|
-
write: (buffer: Buffer
|
|
152
|
+
write: (buffer: Buffer) => Promise<void>;
|
|
102
153
|
/**
|
|
103
154
|
* We intentionally do not immediately close a transport connection.
|
|
104
155
|
* Instead, we queue the disconnect and wait for a future connection to dismiss the event.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"BleTransport.d.ts","sourceRoot":"","sources":["../src/BleTransport.ts"],"names":[],"mappings":";
|
|
1
|
+
{"version":3,"file":"BleTransport.d.ts","sourceRoot":"","sources":["../src/BleTransport.ts"],"names":[],"mappings":"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"}
|