@ledgerhq/react-native-hw-transport-ble 6.29.5-next.0 → 6.30.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/.turbo/turbo-build.log +1 -1
- package/CHANGELOG.md +25 -0
- package/lib/BleTransport.d.ts +19 -6
- package/lib/BleTransport.d.ts.map +1 -1
- package/lib/BleTransport.js +138 -87
- package/lib/BleTransport.js.map +1 -1
- package/lib/monitorCharacteristic.d.ts +2 -1
- package/lib/monitorCharacteristic.d.ts.map +1 -1
- package/lib/monitorCharacteristic.js +9 -5
- package/lib/monitorCharacteristic.js.map +1 -1
- package/lib-es/BleTransport.d.ts +19 -6
- package/lib-es/BleTransport.d.ts.map +1 -1
- package/lib-es/BleTransport.js +140 -89
- package/lib-es/BleTransport.js.map +1 -1
- package/lib-es/monitorCharacteristic.d.ts +2 -1
- package/lib-es/monitorCharacteristic.d.ts.map +1 -1
- package/lib-es/monitorCharacteristic.js +10 -6
- package/lib-es/monitorCharacteristic.js.map +1 -1
- package/package.json +6 -6
- package/src/BleTransport.ts +166 -86
- package/src/monitorCharacteristic.ts +17 -6
package/.turbo/turbo-build.log
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
1
|
|
|
2
|
-
> @ledgerhq/react-native-hw-transport-ble@6.29.
|
|
2
|
+
> @ledgerhq/react-native-hw-transport-ble@6.29.5 build /home/runner/work/ledger-live/ledger-live/libs/ledgerjs/packages/react-native-hw-transport-ble
|
|
3
3
|
> tsc && tsc -m ES6 --outDir lib-es
|
|
4
4
|
|
package/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,30 @@
|
|
|
1
1
|
# @ledgerhq/react-native-hw-transport-ble
|
|
2
2
|
|
|
3
|
+
## 6.30.0-nightly.0
|
|
4
|
+
|
|
5
|
+
### Minor Changes
|
|
6
|
+
|
|
7
|
+
- [#4709](https://github.com/LedgerHQ/ledger-live/pull/4709) [`9e2d32aec4`](https://github.com/LedgerHQ/ledger-live/commit/9e2d32aec4ebd8774880f94e3ef0e805ebb172ac) Thanks [@alexandremgo](https://github.com/alexandremgo)! - feat: usage of new tracing system
|
|
8
|
+
|
|
9
|
+
The tracing helps keeping a context (for ex a `job id`) that is propagated to other logs,
|
|
10
|
+
creating a (simple) tracing span
|
|
11
|
+
|
|
12
|
+
### Patch Changes
|
|
13
|
+
|
|
14
|
+
- Updated dependencies [[`9e2d32aec4`](https://github.com/LedgerHQ/ledger-live/commit/9e2d32aec4ebd8774880f94e3ef0e805ebb172ac), [`9e2d32aec4`](https://github.com/LedgerHQ/ledger-live/commit/9e2d32aec4ebd8774880f94e3ef0e805ebb172ac)]:
|
|
15
|
+
- @ledgerhq/logs@6.11.0-nightly.0
|
|
16
|
+
- @ledgerhq/hw-transport@6.29.0-nightly.0
|
|
17
|
+
- @ledgerhq/devices@8.0.8-nightly.0
|
|
18
|
+
|
|
19
|
+
## 6.29.5
|
|
20
|
+
|
|
21
|
+
### Patch Changes
|
|
22
|
+
|
|
23
|
+
- Updated dependencies [[`a61a43fc47`](https://github.com/LedgerHQ/ledger-live/commit/a61a43fc47399e969fa68539de6af51bfa41e921), [`3455944496`](https://github.com/LedgerHQ/ledger-live/commit/34559444969ce1571ff4c54f33feb7f3fb59a33a)]:
|
|
24
|
+
- @ledgerhq/errors@6.14.0
|
|
25
|
+
- @ledgerhq/devices@8.0.7
|
|
26
|
+
- @ledgerhq/hw-transport@6.28.8
|
|
27
|
+
|
|
3
28
|
## 6.29.5-next.0
|
|
4
29
|
|
|
5
30
|
### Patch Changes
|
package/lib/BleTransport.d.ts
CHANGED
|
@@ -3,10 +3,16 @@ import Transport from "@ledgerhq/hw-transport";
|
|
|
3
3
|
import type { Subscription as TransportSubscription, Observer as TransportObserver } from "@ledgerhq/hw-transport";
|
|
4
4
|
import { DeviceId, Device, Characteristic } from "react-native-ble-plx";
|
|
5
5
|
import type { DeviceModel } from "@ledgerhq/devices";
|
|
6
|
+
import { TraceContext } from "@ledgerhq/logs";
|
|
6
7
|
import { Observable, Observer } from "rxjs";
|
|
7
8
|
import { HwTransportError } from "@ledgerhq/errors";
|
|
8
9
|
import { ReconnectionConfig } from "./types";
|
|
9
10
|
export declare const setReconnectionConfig: (config: ReconnectionConfig | null | undefined) => void;
|
|
11
|
+
/**
|
|
12
|
+
* react-native bluetooth BLE implementation
|
|
13
|
+
* @example
|
|
14
|
+
* import BleTransport from "@ledgerhq/react-native-hw-transport-ble";
|
|
15
|
+
*/
|
|
10
16
|
export default class BleTransport extends Transport {
|
|
11
17
|
static disconnectTimeoutMs: number;
|
|
12
18
|
/**
|
|
@@ -38,17 +44,21 @@ export default class BleTransport extends Transport {
|
|
|
38
44
|
* @param observer Device is partial in order to avoid the live-common/this dep
|
|
39
45
|
* @returns TransportSubscription
|
|
40
46
|
*/
|
|
41
|
-
static listen(observer: TransportObserver<any, HwTransportError
|
|
47
|
+
static listen(observer: TransportObserver<any, HwTransportError>, context?: TraceContext): TransportSubscription;
|
|
42
48
|
/**
|
|
43
|
-
*
|
|
49
|
+
* Opens a BLE transport
|
|
50
|
+
*
|
|
44
51
|
* @param {Device | string} deviceOrId
|
|
52
|
+
* @param timeoutMs TODO: to keep, used in a separate PR
|
|
53
|
+
* @param context An optional context object for log/tracing strategy
|
|
45
54
|
*/
|
|
46
|
-
static open(deviceOrId: Device | string): Promise<BleTransport>;
|
|
55
|
+
static open(deviceOrId: Device | string, timeoutMs?: number, context?: TraceContext): Promise<BleTransport>;
|
|
47
56
|
/**
|
|
48
|
-
*
|
|
57
|
+
* Exposes method from the ble-plx library to disconnect a device
|
|
58
|
+
*
|
|
49
59
|
* Disconnects from {@link Device} if it's connected or cancels pending connection.
|
|
50
60
|
*/
|
|
51
|
-
static disconnect: (id: DeviceId) => Promise<void>;
|
|
61
|
+
static disconnect: (id: DeviceId, context?: TraceContext) => Promise<void>;
|
|
52
62
|
device: Device;
|
|
53
63
|
deviceModel: DeviceModel;
|
|
54
64
|
disconnectTimeout: null | ReturnType<typeof setTimeout>;
|
|
@@ -59,10 +69,13 @@ export default class BleTransport extends Transport {
|
|
|
59
69
|
notYetDisconnected: boolean;
|
|
60
70
|
writeCharacteristic: Characteristic;
|
|
61
71
|
writeCmdCharacteristic: Characteristic | undefined;
|
|
62
|
-
constructor(device: Device, writeCharacteristic: Characteristic, writeCmdCharacteristic: Characteristic | undefined, notifyObservable: Observable<any>, deviceModel: DeviceModel
|
|
72
|
+
constructor(device: Device, writeCharacteristic: Characteristic, writeCmdCharacteristic: Characteristic | undefined, notifyObservable: Observable<any>, deviceModel: DeviceModel, { context }?: {
|
|
73
|
+
context?: TraceContext;
|
|
74
|
+
});
|
|
63
75
|
/**
|
|
64
76
|
* Send data to the device using a low level API.
|
|
65
77
|
* It's recommended to use the "send" method for a higher level API.
|
|
78
|
+
*
|
|
66
79
|
* @param {Buffer} apdu - The data to send.
|
|
67
80
|
* @returns {Promise<Buffer>} A promise that resolves with the response data from the device.
|
|
68
81
|
*/
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"BleTransport.d.ts","sourceRoot":"","sources":["../src/BleTransport.ts"],"names":[],"mappings":";AAAA,OAAO,SAAS,MAAM,wBAAwB,CAAC;AAC/C,OAAO,KAAK,EACV,YAAY,IAAI,qBAAqB,EACrC,QAAQ,IAAI,iBAAiB,EAC9B,MAAM,wBAAwB,CAAC;AAYhC,OAAO,EAKL,QAAQ,EACR,MAAM,EACN,cAAc,EAGf,MAAM,sBAAsB,CAAC;AAO9B,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;
|
|
1
|
+
{"version":3,"file":"BleTransport.d.ts","sourceRoot":"","sources":["../src/BleTransport.ts"],"names":[],"mappings":";AAAA,OAAO,SAAS,MAAM,wBAAwB,CAAC;AAC/C,OAAO,KAAK,EACV,YAAY,IAAI,qBAAqB,EACrC,QAAQ,IAAI,iBAAiB,EAC9B,MAAM,wBAAwB,CAAC;AAYhC,OAAO,EAKL,QAAQ,EACR,MAAM,EACN,cAAc,EAGf,MAAM,sBAAsB,CAAC;AAO9B,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AACrD,OAAO,EAAsB,YAAY,EAAE,MAAM,gBAAgB,CAAC;AAClE,OAAO,EAAE,UAAU,EAAsC,QAAQ,EAAkB,MAAM,MAAM,CAAC;AAEhG,OAAO,EAML,gBAAgB,EACjB,MAAM,kBAAkB,CAAC;AAI1B,OAAO,EAAE,kBAAkB,EAAE,MAAM,SAAS,CAAC;AAa7C,eAAO,MAAM,qBAAqB,WAAY,kBAAkB,GAAG,IAAI,GAAG,SAAS,KAAG,IAErF,CAAC;AAsUF;;;;GAIG;AACH,MAAM,CAAC,OAAO,OAAO,YAAa,SAAQ,SAAS;IACjD,MAAM,CAAC,mBAAmB,SAAQ;IAClC;;OAEG;IACH,MAAM,CAAC,WAAW,QAAO,QAAQ,OAAO,CAAC,CAAsD;IAE/F;;OAEG;IACH,MAAM,CAAC,IAAI,QAAO,QAAQ,IAAI,EAAE,CAAC,CAE/B;IAEF;;;;OAIG;IACH,MAAM,CAAC,WAAW,aAAc,MAAM,KAAG,IAAI,CAM3C;IAEF;;;;;OAKG;IACH,MAAM,CAAC,YAAY,CACjB,QAAQ,EAAE,QAAQ,CAAC;QACjB,IAAI,EAAE,MAAM,CAAC;QACb,SAAS,EAAE,OAAO,CAAC;KACpB,CAAC,GACD,qBAAqB;IAexB;;;;OAIG;IACH,MAAM,CAAC,MAAM,CACX,QAAQ,EAAE,iBAAiB,CAAC,GAAG,EAAE,gBAAgB,CAAC,EAClD,OAAO,CAAC,EAAE,YAAY,GACrB,qBAAqB;IAwDxB;;;;;;OAMG;WACU,IAAI,CACf,UAAU,EAAE,MAAM,GAAG,MAAM,EAC3B,SAAS,CAAC,EAAE,MAAM,EAClB,OAAO,CAAC,EAAE,YAAY,GACrB,OAAO,CAAC,YAAY,CAAC;IAIxB;;;;OAIG;IACH,MAAM,CAAC,UAAU,OAAc,QAAQ,YAAY,YAAY,KAAG,QAAQ,IAAI,CAAC,CAY7E;IAEF,MAAM,EAAE,MAAM,CAAC;IACf,WAAW,EAAE,WAAW,CAAC;IACzB,iBAAiB,EAAE,IAAI,GAAG,UAAU,CAAC,OAAO,UAAU,CAAC,CAAQ;IAC/D,EAAE,EAAE,MAAM,CAAC;IACX,WAAW,UAAQ;IACnB,OAAO,SAAM;IACb,gBAAgB,EAAE,UAAU,CAAC,GAAG,CAAC,CAAC;IAClC,kBAAkB,UAAQ;IAC1B,mBAAmB,EAAE,cAAc,CAAC;IACpC,sBAAsB,EAAE,cAAc,GAAG,SAAS,CAAC;gBAGjD,MAAM,EAAE,MAAM,EACd,mBAAmB,EAAE,cAAc,EACnC,sBAAsB,EAAE,cAAc,GAAG,SAAS,EAClD,gBAAgB,EAAE,UAAU,CAAC,GAAG,CAAC,EACjC,WAAW,EAAE,WAAW,EACxB,EAAE,OAAO,EAAE,GAAE;QAAE,OAAO,CAAC,EAAE,YAAY,CAAA;KAAO;IAe9C;;;;;;OAMG;IACH,QAAQ,SAAU,MAAM,KAAG,QAAQ,GAAG,CAAC,CAoCrC;IAEF;;;OAGG;IACG,QAAQ,IAAI,OAAO,CAAC,MAAM,CAAC;IA4CjC;;;;;OAKG;IACG,yBAAyB,CAC7B,kBAAkB,EAAE,UAAU,GAAG,MAAM,GAAG,UAAU,GACnD,OAAO,CAAC,MAAM,CAAC;IAMlB;;;;;OAKG;IACH,KAAK,WAAkB,MAAM,SAAS,MAAM,GAAG,SAAS,KAAG,QAAQ,IAAI,CAAC,CActE;IAEF;;;;;;;OAOG;IACG,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;CA0B7B"}
|
package/lib/BleTransport.js
CHANGED
|
@@ -34,6 +34,7 @@ const errors_1 = require("@ledgerhq/errors");
|
|
|
34
34
|
const monitorCharacteristic_1 = require("./monitorCharacteristic");
|
|
35
35
|
const awaitsBleOn_1 = require("./awaitsBleOn");
|
|
36
36
|
const remapErrors_1 = require("./remapErrors");
|
|
37
|
+
const LOG_TYPE = "ble-verbose";
|
|
37
38
|
/**
|
|
38
39
|
* This is potentially not needed anymore, to be checked if the bug is still
|
|
39
40
|
* happening.
|
|
@@ -89,28 +90,40 @@ const bleManagerInstance = () => {
|
|
|
89
90
|
}
|
|
90
91
|
return _bleManager;
|
|
91
92
|
};
|
|
92
|
-
const clearDisconnectTimeout = (deviceId) => {
|
|
93
|
+
const clearDisconnectTimeout = (deviceId, context) => {
|
|
93
94
|
const cachedTransport = transportsCache[deviceId];
|
|
94
95
|
if (cachedTransport && cachedTransport.disconnectTimeout) {
|
|
95
|
-
(0, logs_1.
|
|
96
|
+
(0, logs_1.trace)({ type: LOG_TYPE, message: "Clearing queued disconnect", context });
|
|
96
97
|
clearTimeout(cachedTransport.disconnectTimeout);
|
|
97
98
|
}
|
|
98
99
|
};
|
|
99
|
-
|
|
100
|
+
/**
|
|
101
|
+
* Opens a BLE connection with a given device. Returns a Transport instance.
|
|
102
|
+
*
|
|
103
|
+
* @param deviceOrId
|
|
104
|
+
* @param needsReconnect
|
|
105
|
+
* @param timeoutMs TODO: to keep, used in a separate PR
|
|
106
|
+
* @param context Optional tracing/log context
|
|
107
|
+
* @returns A BleTransport instance
|
|
108
|
+
*/
|
|
109
|
+
function open(deviceOrId, needsReconnect, timeoutMs, context) {
|
|
100
110
|
return __awaiter(this, void 0, void 0, function* () {
|
|
111
|
+
const tracer = new logs_1.LocalTracer(LOG_TYPE, context);
|
|
101
112
|
let device;
|
|
102
|
-
|
|
113
|
+
tracer.trace(`Opening ${deviceOrId}`, { needsReconnect });
|
|
103
114
|
if (typeof deviceOrId === "string") {
|
|
104
115
|
if (transportsCache[deviceOrId]) {
|
|
105
|
-
|
|
116
|
+
tracer.trace(`Transport in cache, using it`);
|
|
106
117
|
clearDisconnectTimeout(deviceOrId);
|
|
118
|
+
// The cached transport probably has an older trace/log context
|
|
119
|
+
transportsCache[deviceOrId].setTraceContext(context);
|
|
107
120
|
return transportsCache[deviceOrId];
|
|
108
121
|
}
|
|
109
|
-
|
|
122
|
+
tracer.trace(`Trying to open device: ${deviceOrId}`);
|
|
110
123
|
yield (0, awaitsBleOn_1.awaitsBleOn)(bleManagerInstance());
|
|
111
124
|
// Returns a list of known devices by their identifiers
|
|
112
125
|
const devices = yield bleManagerInstance().devices([deviceOrId]);
|
|
113
|
-
|
|
126
|
+
tracer.trace(`Found ${devices.length} already known device(s) with given id`, { deviceOrId });
|
|
114
127
|
[device] = devices;
|
|
115
128
|
if (!device) {
|
|
116
129
|
// Returns a list of the peripherals currently connected to the system
|
|
@@ -118,18 +131,21 @@ function open(deviceOrId, needsReconnect) {
|
|
|
118
131
|
// connected to our app, we check that below.
|
|
119
132
|
const connectedDevices = yield bleManagerInstance().connectedDevices((0, devices_1.getBluetoothServiceUuids)());
|
|
120
133
|
const connectedDevicesFiltered = connectedDevices.filter(d => d.id === deviceOrId);
|
|
121
|
-
(
|
|
134
|
+
tracer.trace(`No known device with given id. Found ${connectedDevicesFiltered.length} devices from already connected devices`, { deviceOrId });
|
|
122
135
|
[device] = connectedDevicesFiltered;
|
|
123
136
|
}
|
|
124
137
|
if (!device) {
|
|
125
138
|
// We still don't have a device, so we attempt to connect to it.
|
|
126
|
-
(
|
|
139
|
+
tracer.trace(`No known nor connected devices with given id. Trying to connect to device`, {
|
|
140
|
+
deviceOrId,
|
|
141
|
+
timeoutMs,
|
|
142
|
+
});
|
|
127
143
|
// Nb ConnectionOptions dropped since it's not used internally by ble-plx.
|
|
128
144
|
try {
|
|
129
145
|
device = yield bleManagerInstance().connectToDevice(deviceOrId, connectOptions);
|
|
130
146
|
}
|
|
131
147
|
catch (e) {
|
|
132
|
-
|
|
148
|
+
tracer.trace(`Error code: ${e.errorCode}`);
|
|
133
149
|
if (e.errorCode === react_native_ble_plx_1.BleErrorCode.DeviceMTUChangeFailed) {
|
|
134
150
|
// If the MTU update did not work, we try to connect without requesting for a specific MTU
|
|
135
151
|
connectOptions = {};
|
|
@@ -149,21 +165,22 @@ function open(deviceOrId, needsReconnect) {
|
|
|
149
165
|
device = deviceOrId;
|
|
150
166
|
}
|
|
151
167
|
if (!(yield device.isConnected())) {
|
|
152
|
-
|
|
168
|
+
tracer.trace(`Device found but not connected. connecting...`, { timeoutMs, connectOptions });
|
|
153
169
|
try {
|
|
154
|
-
yield device.connect(connectOptions);
|
|
170
|
+
yield device.connect(Object.assign({}, connectOptions));
|
|
155
171
|
}
|
|
156
|
-
catch (
|
|
157
|
-
|
|
158
|
-
if (
|
|
159
|
-
|
|
172
|
+
catch (error) {
|
|
173
|
+
tracer.trace(`Connect error`, { error });
|
|
174
|
+
if (error.errorCode === react_native_ble_plx_1.BleErrorCode.DeviceMTUChangeFailed) {
|
|
175
|
+
tracer.trace(`Device mtu=${device.mtu}, reconnecting`);
|
|
160
176
|
connectOptions = {};
|
|
161
177
|
yield device.connect();
|
|
162
178
|
}
|
|
163
|
-
else if (
|
|
164
|
-
|
|
165
|
-
|
|
166
|
-
|
|
179
|
+
else if (error.iosErrorCode === 14 || error.reason === "Peer removed pairing information") {
|
|
180
|
+
tracer.trace(`iOS broken pairing`, {
|
|
181
|
+
device,
|
|
182
|
+
bluetoothInfoCache: bluetoothInfoCache[device.id],
|
|
183
|
+
});
|
|
167
184
|
const { deviceModel } = bluetoothInfoCache[device.id] || {};
|
|
168
185
|
const { productName } = deviceModel || {};
|
|
169
186
|
throw new errors_1.PeerRemovedPairing(undefined, {
|
|
@@ -172,10 +189,11 @@ function open(deviceOrId, needsReconnect) {
|
|
|
172
189
|
});
|
|
173
190
|
}
|
|
174
191
|
else {
|
|
175
|
-
throw (0, remapErrors_1.remapError)(
|
|
192
|
+
throw (0, remapErrors_1.remapError)(error);
|
|
176
193
|
}
|
|
177
194
|
}
|
|
178
195
|
}
|
|
196
|
+
tracer.trace(`Device is connected now, getting services and characteristics`);
|
|
179
197
|
yield device.discoverAllServicesAndCharacteristics();
|
|
180
198
|
let res = retrieveInfos(device);
|
|
181
199
|
let characteristics;
|
|
@@ -192,6 +210,7 @@ function open(deviceOrId, needsReconnect) {
|
|
|
192
210
|
}
|
|
193
211
|
}
|
|
194
212
|
if (!res) {
|
|
213
|
+
tracer.trace(`Service not found`);
|
|
195
214
|
throw new errors_1.TransportError("service not found", "BLEServiceNotFound");
|
|
196
215
|
}
|
|
197
216
|
const { deviceModel, serviceUuid, writeUuid, writeCmdUuid, notifyUuid } = res;
|
|
@@ -199,6 +218,7 @@ function open(deviceOrId, needsReconnect) {
|
|
|
199
218
|
characteristics = yield device.characteristicsForService(serviceUuid);
|
|
200
219
|
}
|
|
201
220
|
if (!characteristics) {
|
|
221
|
+
tracer.trace(`Characteristics not found`);
|
|
202
222
|
throw new errors_1.TransportError("service not found", "BLEServiceNotFound");
|
|
203
223
|
}
|
|
204
224
|
let writeC;
|
|
@@ -232,31 +252,36 @@ function open(deviceOrId, needsReconnect) {
|
|
|
232
252
|
throw new errors_1.TransportError("write cmd characteristic not writableWithoutResponse", "BLECharacteristicInvalid");
|
|
233
253
|
}
|
|
234
254
|
}
|
|
235
|
-
|
|
236
|
-
const notifyObservable = (0, monitorCharacteristic_1.monitorCharacteristic)(notifyC).pipe((0, operators_1.catchError)(e => {
|
|
255
|
+
tracer.trace(`device.mtu=${device.mtu}`);
|
|
256
|
+
const notifyObservable = (0, monitorCharacteristic_1.monitorCharacteristic)(notifyC, context).pipe((0, operators_1.catchError)(e => {
|
|
237
257
|
// LL-9033 fw 2.0.2 introduced this case, we silence the inner unhandled error.
|
|
238
258
|
const msg = String(e);
|
|
239
|
-
return msg.includes("notify change failed")
|
|
259
|
+
return msg.includes("notify change failed")
|
|
260
|
+
? (0, rxjs_1.of)(new errors_1.PairingFailed(msg))
|
|
261
|
+
: (0, rxjs_1.throwError)(() => e);
|
|
240
262
|
}), (0, operators_1.tap)(value => {
|
|
241
263
|
if (value instanceof errors_1.PairingFailed)
|
|
242
264
|
return;
|
|
243
|
-
(0, logs_1.
|
|
265
|
+
(0, logs_1.trace)({ type: "ble-frame", message: `<= ${value.toString("hex")}`, context });
|
|
244
266
|
}), (0, operators_1.share)());
|
|
245
267
|
const notif = notifyObservable.subscribe();
|
|
246
|
-
const transport = new BleTransport(device, writeC, writeCmdC, notifyObservable, deviceModel
|
|
268
|
+
const transport = new BleTransport(device, writeC, writeCmdC, notifyObservable, deviceModel, {
|
|
269
|
+
context,
|
|
270
|
+
});
|
|
271
|
+
tracer.trace(`New BleTransport created`);
|
|
247
272
|
// Keeping it as a comment for now but if no new bluetooth issues occur, we will be able to remove it
|
|
248
273
|
// await transport.requestConnectionPriority("High");
|
|
249
274
|
// eslint-disable-next-line prefer-const
|
|
250
275
|
let disconnectedSub;
|
|
251
|
-
const onDisconnect = (
|
|
276
|
+
const onDisconnect = (error) => {
|
|
252
277
|
transport.isConnected = false;
|
|
253
278
|
transport.notYetDisconnected = false;
|
|
254
279
|
notif.unsubscribe();
|
|
255
280
|
disconnectedSub === null || disconnectedSub === void 0 ? void 0 : disconnectedSub.remove();
|
|
256
281
|
clearDisconnectTimeout(transport.id);
|
|
257
282
|
delete transportsCache[transport.id];
|
|
258
|
-
|
|
259
|
-
transport.emit("disconnect",
|
|
283
|
+
tracer.trace(`On device disconnected callback: cleared cached transport for ${transport.id}, emitting Transport event "disconnect"`, { reason: error });
|
|
284
|
+
transport.emit("disconnect", error);
|
|
260
285
|
};
|
|
261
286
|
// eslint-disable-next-line require-atomic-updates
|
|
262
287
|
transportsCache[transport.id] = transport;
|
|
@@ -280,7 +305,7 @@ function open(deviceOrId, needsReconnect) {
|
|
|
280
305
|
needsReconnect = false;
|
|
281
306
|
}
|
|
282
307
|
else if (deviceModel.id === devices_1.DeviceModelId.stax) {
|
|
283
|
-
|
|
308
|
+
tracer.trace(`Skipping "needsReconnect" strategy for Stax`);
|
|
284
309
|
needsReconnect = false;
|
|
285
310
|
}
|
|
286
311
|
if (needsReconnect) {
|
|
@@ -293,8 +318,8 @@ function open(deviceOrId, needsReconnect) {
|
|
|
293
318
|
}
|
|
294
319
|
}
|
|
295
320
|
if (needsReconnect) {
|
|
296
|
-
|
|
297
|
-
return open(device, false);
|
|
321
|
+
tracer.trace(`Reconnecting`);
|
|
322
|
+
return open(device, false, timeoutMs, context);
|
|
298
323
|
}
|
|
299
324
|
return transport;
|
|
300
325
|
});
|
|
@@ -304,7 +329,6 @@ function open(deviceOrId, needsReconnect) {
|
|
|
304
329
|
* @example
|
|
305
330
|
* import BleTransport from "@ledgerhq/react-native-hw-transport-ble";
|
|
306
331
|
*/
|
|
307
|
-
const TAG = "ble-verbose";
|
|
308
332
|
class BleTransport extends hw_transport_1.default {
|
|
309
333
|
/**
|
|
310
334
|
* Listen to state changes on the bleManagerInstance and notify the
|
|
@@ -329,8 +353,9 @@ class BleTransport extends hw_transport_1.default {
|
|
|
329
353
|
* @param observer Device is partial in order to avoid the live-common/this dep
|
|
330
354
|
* @returns TransportSubscription
|
|
331
355
|
*/
|
|
332
|
-
static listen(observer) {
|
|
333
|
-
|
|
356
|
+
static listen(observer, context) {
|
|
357
|
+
const tracer = new logs_1.LocalTracer(LOG_TYPE, context);
|
|
358
|
+
tracer.trace("Listening for devices ...");
|
|
334
359
|
let unsubscribed;
|
|
335
360
|
const stateSub = bleManagerInstance().onStateChange((state) => __awaiter(this, void 0, void 0, function* () {
|
|
336
361
|
if (state === "PoweredOn") {
|
|
@@ -339,7 +364,7 @@ class BleTransport extends hw_transport_1.default {
|
|
|
339
364
|
if (unsubscribed)
|
|
340
365
|
return;
|
|
341
366
|
if (devices.length) {
|
|
342
|
-
|
|
367
|
+
tracer.trace("Disconnecting from all devices", { deviceCount: devices.length });
|
|
343
368
|
yield Promise.all(devices.map(d => BleTransport.disconnect(d.id).catch(() => { })));
|
|
344
369
|
}
|
|
345
370
|
if (unsubscribed)
|
|
@@ -366,23 +391,26 @@ class BleTransport extends hw_transport_1.default {
|
|
|
366
391
|
unsubscribed = true;
|
|
367
392
|
bleManagerInstance().stopDeviceScan();
|
|
368
393
|
stateSub.remove();
|
|
369
|
-
|
|
394
|
+
tracer.trace("Done listening");
|
|
370
395
|
};
|
|
371
396
|
return {
|
|
372
397
|
unsubscribe,
|
|
373
398
|
};
|
|
374
399
|
}
|
|
375
400
|
/**
|
|
376
|
-
*
|
|
401
|
+
* Opens a BLE transport
|
|
402
|
+
*
|
|
377
403
|
* @param {Device | string} deviceOrId
|
|
404
|
+
* @param timeoutMs TODO: to keep, used in a separate PR
|
|
405
|
+
* @param context An optional context object for log/tracing strategy
|
|
378
406
|
*/
|
|
379
|
-
static open(deviceOrId) {
|
|
407
|
+
static open(deviceOrId, timeoutMs, context) {
|
|
380
408
|
return __awaiter(this, void 0, void 0, function* () {
|
|
381
|
-
return open(deviceOrId, true);
|
|
409
|
+
return open(deviceOrId, true, timeoutMs, context);
|
|
382
410
|
});
|
|
383
411
|
}
|
|
384
|
-
constructor(device, writeCharacteristic, writeCmdCharacteristic, notifyObservable, deviceModel) {
|
|
385
|
-
super();
|
|
412
|
+
constructor(device, writeCharacteristic, writeCmdCharacteristic, notifyObservable, deviceModel, { context } = {}) {
|
|
413
|
+
super({ context, logType: LOG_TYPE });
|
|
386
414
|
this.disconnectTimeout = null;
|
|
387
415
|
this.isConnected = true;
|
|
388
416
|
this.mtuSize = 20;
|
|
@@ -390,29 +418,40 @@ class BleTransport extends hw_transport_1.default {
|
|
|
390
418
|
/**
|
|
391
419
|
* Send data to the device using a low level API.
|
|
392
420
|
* It's recommended to use the "send" method for a higher level API.
|
|
421
|
+
*
|
|
393
422
|
* @param {Buffer} apdu - The data to send.
|
|
394
423
|
* @returns {Promise<Buffer>} A promise that resolves with the response data from the device.
|
|
395
424
|
*/
|
|
396
|
-
this.exchange = (apdu) =>
|
|
397
|
-
|
|
398
|
-
|
|
399
|
-
|
|
400
|
-
|
|
401
|
-
|
|
402
|
-
|
|
403
|
-
|
|
404
|
-
|
|
405
|
-
|
|
406
|
-
|
|
407
|
-
|
|
408
|
-
|
|
409
|
-
yield bleManagerInstance()
|
|
410
|
-
.cancelDeviceConnection(this.id)
|
|
411
|
-
.catch(() => { }); // but we ignore if disconnect worked.
|
|
425
|
+
this.exchange = (apdu) => {
|
|
426
|
+
const tracer = this.tracer.withUpdatedContext({
|
|
427
|
+
function: "exchange",
|
|
428
|
+
});
|
|
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;
|
|
412
438
|
}
|
|
413
|
-
|
|
414
|
-
|
|
415
|
-
|
|
439
|
+
catch (error) {
|
|
440
|
+
tracer.withType("ble-error").trace(`Error while exchanging APDU`, { error });
|
|
441
|
+
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.
|
|
446
|
+
}
|
|
447
|
+
const mappedError = (0, remapErrors_1.remapError)(error);
|
|
448
|
+
tracer.trace("Error while exchanging APDU, mapped and throws following error", {
|
|
449
|
+
mappedError,
|
|
450
|
+
});
|
|
451
|
+
throw mappedError;
|
|
452
|
+
}
|
|
453
|
+
}));
|
|
454
|
+
};
|
|
416
455
|
/**
|
|
417
456
|
* Do not call this directly unless you know what you're doing. Communication
|
|
418
457
|
* with a Ledger device should be through the {@link exchange} method.
|
|
@@ -420,22 +459,18 @@ class BleTransport extends hw_transport_1.default {
|
|
|
420
459
|
* @param txid
|
|
421
460
|
*/
|
|
422
461
|
this.write = (buffer, txid) => __awaiter(this, void 0, void 0, function* () {
|
|
423
|
-
|
|
424
|
-
|
|
425
|
-
try {
|
|
462
|
+
try {
|
|
463
|
+
if (!this.writeCmdCharacteristic) {
|
|
426
464
|
yield this.writeCharacteristic.writeWithResponse(buffer.toString("base64"), txid);
|
|
427
465
|
}
|
|
428
|
-
|
|
429
|
-
throw new errors_1.DisconnectedDeviceDuringOperation(e.message);
|
|
430
|
-
}
|
|
431
|
-
}
|
|
432
|
-
else {
|
|
433
|
-
try {
|
|
466
|
+
else {
|
|
434
467
|
yield this.writeCmdCharacteristic.writeWithoutResponse(buffer.toString("base64"), txid);
|
|
435
468
|
}
|
|
436
|
-
|
|
437
|
-
|
|
438
|
-
|
|
469
|
+
this.tracer.withType("ble-frame").trace("=> " + buffer.toString("hex"));
|
|
470
|
+
}
|
|
471
|
+
catch (error) {
|
|
472
|
+
this.tracer.trace("Error while writing APDU", { error });
|
|
473
|
+
throw new errors_1.DisconnectedDeviceDuringOperation(error instanceof Error ? error.message : `${error}`);
|
|
439
474
|
}
|
|
440
475
|
});
|
|
441
476
|
this.id = device.id;
|
|
@@ -444,8 +479,8 @@ class BleTransport extends hw_transport_1.default {
|
|
|
444
479
|
this.writeCmdCharacteristic = writeCmdCharacteristic;
|
|
445
480
|
this.notifyObservable = notifyObservable;
|
|
446
481
|
this.deviceModel = deviceModel;
|
|
447
|
-
(0, logs_1.log)(TAG, `BleTransport(${String(this.id)}) new instance`);
|
|
448
482
|
clearDisconnectTimeout(this.id);
|
|
483
|
+
this.tracer.trace(`New instance of BleTransport for device ${this.id}`);
|
|
449
484
|
}
|
|
450
485
|
/**
|
|
451
486
|
* Negotiate with the device the maximum transfer unit for the ble frames
|
|
@@ -454,24 +489,32 @@ class BleTransport extends hw_transport_1.default {
|
|
|
454
489
|
inferMTU() {
|
|
455
490
|
return __awaiter(this, void 0, void 0, function* () {
|
|
456
491
|
let { mtu } = this.device;
|
|
492
|
+
this.tracer.trace(`Inferring MTU ...`, { currentDeviceMtu: mtu });
|
|
457
493
|
yield this.exchangeAtomicImpl(() => __awaiter(this, void 0, void 0, function* () {
|
|
458
494
|
try {
|
|
459
|
-
mtu = yield (0, rxjs_1.merge)(this.notifyObservable.pipe((0, operators_1.tap)(maybeError => {
|
|
495
|
+
mtu = yield (0, rxjs_1.firstValueFrom)((0, rxjs_1.merge)(this.notifyObservable.pipe((0, operators_1.tap)(maybeError => {
|
|
460
496
|
if (maybeError instanceof Error)
|
|
461
497
|
throw maybeError;
|
|
462
|
-
}), (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)()))
|
|
498
|
+
}), (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)())));
|
|
463
499
|
}
|
|
464
|
-
catch (
|
|
465
|
-
|
|
500
|
+
catch (error) {
|
|
501
|
+
this.tracer.withType("ble-error").trace("Error while inferring MTU", { mtu });
|
|
466
502
|
yield bleManagerInstance()
|
|
467
503
|
.cancelDeviceConnection(this.id)
|
|
468
504
|
.catch(() => { }); // but we ignore if disconnect worked.
|
|
469
|
-
|
|
505
|
+
const mappedError = (0, remapErrors_1.remapError)(error);
|
|
506
|
+
this.tracer.trace("Error while inferring APDU, mapped and throws following error", {
|
|
507
|
+
mappedError,
|
|
508
|
+
});
|
|
509
|
+
throw mappedError;
|
|
470
510
|
}
|
|
471
511
|
}));
|
|
512
|
+
this.tracer.trace(`Successfully negotiated MTU with device`, {
|
|
513
|
+
mtu,
|
|
514
|
+
mtuSize: this.mtuSize,
|
|
515
|
+
});
|
|
472
516
|
if (mtu > 20) {
|
|
473
517
|
this.mtuSize = mtu;
|
|
474
|
-
(0, logs_1.log)(TAG, `BleTransport(${this.id}) mtu set to ${this.mtuSize}`);
|
|
475
518
|
}
|
|
476
519
|
return this.mtuSize;
|
|
477
520
|
});
|
|
@@ -497,16 +540,15 @@ class BleTransport extends hw_transport_1.default {
|
|
|
497
540
|
*/
|
|
498
541
|
close() {
|
|
499
542
|
return __awaiter(this, void 0, void 0, function* () {
|
|
543
|
+
this.tracer.trace("Closing, queuing a disconnect ...");
|
|
500
544
|
let resolve;
|
|
501
545
|
const disconnectPromise = new Promise(innerResolve => {
|
|
502
546
|
resolve = innerResolve;
|
|
503
547
|
});
|
|
504
548
|
clearDisconnectTimeout(this.id);
|
|
505
|
-
(0, logs_1.log)(TAG, "Queuing a disconnect");
|
|
506
549
|
this.disconnectTimeout = setTimeout(() => {
|
|
507
|
-
(0, logs_1.log)(TAG, `Triggering a disconnect from ${this.id}`);
|
|
508
550
|
if (this.isConnected) {
|
|
509
|
-
BleTransport.disconnect(this.id)
|
|
551
|
+
BleTransport.disconnect(this.id, this.tracer.getContext())
|
|
510
552
|
.catch(() => { })
|
|
511
553
|
.finally(resolve);
|
|
512
554
|
}
|
|
@@ -547,13 +589,22 @@ BleTransport.setLogLevel = (logLevel) => {
|
|
|
547
589
|
}
|
|
548
590
|
};
|
|
549
591
|
/**
|
|
550
|
-
*
|
|
592
|
+
* Exposes method from the ble-plx library to disconnect a device
|
|
593
|
+
*
|
|
551
594
|
* Disconnects from {@link Device} if it's connected or cancels pending connection.
|
|
552
595
|
*/
|
|
553
|
-
BleTransport.disconnect = (id) => __awaiter(void 0, void 0, void 0, function* () {
|
|
554
|
-
(0, logs_1.
|
|
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
|
+
});
|
|
555
602
|
yield bleManagerInstance().cancelDeviceConnection(id);
|
|
556
|
-
(0, logs_1.
|
|
603
|
+
(0, logs_1.trace)({
|
|
604
|
+
type: LOG_TYPE,
|
|
605
|
+
message: `Device ${id} disconnected`,
|
|
606
|
+
context,
|
|
607
|
+
});
|
|
557
608
|
});
|
|
558
609
|
exports.default = BleTransport;
|
|
559
610
|
//# sourceMappingURL=BleTransport.js.map
|
package/lib/BleTransport.js.map
CHANGED
|
@@ -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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"}
|