@onekeyfe/hd-transport-react-native 1.2.3-alpha.1 → 1.2.3-alpha.11
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/README.md +1 -1
- package/dist/BleManager.d.ts +1 -1
- package/dist/BleManager.d.ts.map +1 -1
- package/dist/bleNativeDisconnect.d.ts +3 -0
- package/dist/bleNativeDisconnect.d.ts.map +1 -0
- package/dist/index.d.ts +44 -3
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +714 -147
- package/package.json +6 -6
- package/src/BleManager.ts +73 -5
- package/src/__tests__/bleNativeDisconnect.test.ts +33 -0
- package/src/__tests__/connectTimeout.test.ts +427 -3
- package/src/__tests__/protocolReprobe.test.ts +93 -1
- package/src/__tests__/protocolV2Link.test.ts +976 -62
- package/src/__tests__/staleCallTimeout.test.ts +34 -5
- package/src/bleNativeDisconnect.ts +40 -0
- package/src/index.ts +806 -161
package/README.md
CHANGED
|
@@ -26,4 +26,4 @@ yar update:protobuf to generate new ./messages.json and ./src/types/messages.ts
|
|
|
26
26
|
|
|
27
27
|
## Docs
|
|
28
28
|
|
|
29
|
-
Documentation is available [
|
|
29
|
+
Documentation is available [Hardware SDK Getting Started](https://developer.onekey.so/en/hardware-sdk/getting-started)
|
package/dist/BleManager.d.ts
CHANGED
|
@@ -5,5 +5,5 @@ export declare const pairDevice: (macAddress: string) => Promise<{
|
|
|
5
5
|
bonded: boolean;
|
|
6
6
|
bonding: boolean;
|
|
7
7
|
}>;
|
|
8
|
-
export declare const onDeviceBondState: (bleMacAddress: string) => Promise<Peripheral | undefined>;
|
|
8
|
+
export declare const onDeviceBondState: (bleMacAddress: string, signal?: AbortSignal) => Promise<Peripheral | undefined>;
|
|
9
9
|
//# sourceMappingURL=BleManager.d.ts.map
|
package/dist/BleManager.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"BleManager.d.ts","sourceRoot":"","sources":["../src/BleManager.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,kCAAkC,CAAC;
|
|
1
|
+
{"version":3,"file":"BleManager.d.ts","sourceRoot":"","sources":["../src/BleManager.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,kCAAkC,CAAC;AAsBnE,eAAO,MAAM,qBAAqB,iBAAkB,MAAM,EAAE,0BACZ,CAAC;AAEjD,eAAO,MAAM,gBAAgB,6BAAwC,CAAC;AAEtE,eAAO,MAAM,UAAU,eAAgB,MAAM;;;EAAoC,CAAC;AAElF,eAAO,MAAM,iBAAiB,kBACb,MAAM,WACZ,WAAW,KACnB,QAAQ,UAAU,GAAG,SAAS,CAmF7B,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"bleNativeDisconnect.d.ts","sourceRoot":"","sources":["../src/bleNativeDisconnect.ts"],"names":[],"mappings":"AAiBA,eAAO,MAAM,0BAA0B,UAAW,OAAO,KAAG,OAU3D,CAAC;AAEF,eAAO,MAAM,4BAA4B,UAAW,OAAO,UAU1D,CAAC"}
|
package/dist/index.d.ts
CHANGED
|
@@ -74,6 +74,16 @@ declare function getProtocolV2BleTuning(): {
|
|
|
74
74
|
iosPacketLength: number;
|
|
75
75
|
androidPacketLength: number;
|
|
76
76
|
};
|
|
77
|
+
/**
|
|
78
|
+
* With no cached GATT table the stack runs its own discovery (up to ~8s) before the MTU
|
|
79
|
+
* exchange, so the bound sits above that; a stuck exchange never completes.
|
|
80
|
+
*/
|
|
81
|
+
declare const ANDROID_MTU_EXCHANGE_TIMEOUT_MS = 12000;
|
|
82
|
+
/**
|
|
83
|
+
* Android keeps an LE link, with per-link ATT state such as a pending MTU exchange, for its
|
|
84
|
+
* 4s GATT link idle timer after the last client closes; a reconnect inside it reuses the link.
|
|
85
|
+
*/
|
|
86
|
+
declare const ANDROID_LINK_DROP_QUIET_MS = 5000;
|
|
77
87
|
/**
|
|
78
88
|
* JS backstop for connect. The native adapter applies its own 3s budget, but it
|
|
79
89
|
* schedules that timeout on its serial queue, so a busy queue (e.g. right after a
|
|
@@ -109,6 +119,7 @@ declare class ReactNativeBleTransport {
|
|
|
109
119
|
name: string;
|
|
110
120
|
configured: boolean;
|
|
111
121
|
stopped: boolean;
|
|
122
|
+
private readonly bondAbortController;
|
|
112
123
|
scanTimeout: number;
|
|
113
124
|
runPromise: Deferred<any> | null;
|
|
114
125
|
private runPromiseDeviceId;
|
|
@@ -134,6 +145,17 @@ declare class ReactNativeBleTransport {
|
|
|
134
145
|
private confirmedProtocolV2;
|
|
135
146
|
/** Consecutive detections that failed while trusting sessionProtocols. */
|
|
136
147
|
private protocolReprobeFailures;
|
|
148
|
+
/** Endpoints whose last detection got no answer; 'woken' once their Initialize wake is spent. */
|
|
149
|
+
private silentDetections;
|
|
150
|
+
/**
|
|
151
|
+
* iOS can report a reset Pro2 as a generic peripheral disconnect instead of
|
|
152
|
+
* CBErrorPeerRemovedPairingInformation. Keep that first probe failure across
|
|
153
|
+
* the automatic cold reconnect and require a second failed probe before
|
|
154
|
+
* classifying the OS bond as invalid.
|
|
155
|
+
*/
|
|
156
|
+
private iosProbeDisconnectEvidence;
|
|
157
|
+
/** Android endpoints whose cached GATT table is suspect; the next connect refreshes it. */
|
|
158
|
+
private androidGattCacheRefreshes;
|
|
137
159
|
/**
|
|
138
160
|
* Native encryption/pairing failures seen before Protocol V2 probe starts.
|
|
139
161
|
* Pro2/Neo GATT connect can succeed on a stale iOS bond; the CCCD write then
|
|
@@ -154,12 +176,15 @@ declare class ReactNativeBleTransport {
|
|
|
154
176
|
private nextMonitorToken;
|
|
155
177
|
/** Serializes transport lifecycle changes for the same physical device. */
|
|
156
178
|
private lifecycleOperations;
|
|
179
|
+
private stopPromise?;
|
|
180
|
+
private scanCleanups;
|
|
157
181
|
constructor(options: TransportOptions);
|
|
158
182
|
init(logger: any, emitter: EventEmitter): void;
|
|
159
183
|
configure(signedData: any): void;
|
|
160
184
|
configureProtocolV2(signedData: any): void;
|
|
161
185
|
listen(): void;
|
|
162
186
|
getPlxManager(): Promise<BleManager>;
|
|
187
|
+
private waitForManagerReset;
|
|
163
188
|
resolveCharacteristics(device: Device): Promise<ResolvedBleCharacteristics>;
|
|
164
189
|
attachDisconnectSubscription(transport: BleTransport, device: Device, uuid: string): void;
|
|
165
190
|
private emitDeviceDisconnect;
|
|
@@ -183,13 +208,20 @@ declare class ReactNativeBleTransport {
|
|
|
183
208
|
post(session: string, name: string, data: Record<string, unknown>): Promise<void>;
|
|
184
209
|
call(uuid: string, name: string, data: Record<string, unknown>, options?: TransportCallOptions): Promise<transport.MessageFromOneKey>;
|
|
185
210
|
private callProtocolV1;
|
|
186
|
-
stop(): void
|
|
211
|
+
stop(): Promise<void>;
|
|
187
212
|
disconnect(session: string): Promise<void>;
|
|
188
213
|
private disconnectUnlocked;
|
|
189
214
|
private runNativeTeardown;
|
|
190
215
|
private runBestEffortNativeOperation;
|
|
191
216
|
private runLifecycleOperation;
|
|
192
|
-
cancel(): void
|
|
217
|
+
cancel(): Promise<void>;
|
|
218
|
+
/**
|
|
219
|
+
* Android: request the MTU with nothing queued ahead and never close the client while it is
|
|
220
|
+
* outstanding; a link that times out or stays at MTU 23 is dropped.
|
|
221
|
+
*/
|
|
222
|
+
private negotiateAndroidMtu;
|
|
223
|
+
/** Close the client and wait out the link idle timer so the next connect gets a fresh link. */
|
|
224
|
+
private dropAndroidLink;
|
|
193
225
|
/** Run a native connect under the JS backstop budget. */
|
|
194
226
|
private connectWithTimeout;
|
|
195
227
|
/** Resolve the complete GATT shape under a budget so acquire() always settles. */
|
|
@@ -220,10 +252,19 @@ declare class ReactNativeBleTransport {
|
|
|
220
252
|
private resetPlxManager;
|
|
221
253
|
private createProtocolMismatchError;
|
|
222
254
|
private createProtocolDetectionError;
|
|
255
|
+
private rememberIosProbeDisconnect;
|
|
256
|
+
private consumeIosProbeDisconnect;
|
|
223
257
|
private clearProbeProtocol;
|
|
224
258
|
/** Protocol to route a call with: confirmed if known, otherwise the one being probed. */
|
|
225
259
|
private getActiveProtocol;
|
|
226
260
|
private detectProtocol;
|
|
261
|
+
/**
|
|
262
|
+
* A sleeping Classic drops GetFeatures/Ping and only leaves its screensaver on Initialize, which
|
|
263
|
+
* resets the wallet session, so it is sent once after a fully silent detection. The firmware does
|
|
264
|
+
* not reliably answer it, so its timeout must not drop the link. It only runs when V1 is probed
|
|
265
|
+
* first, so a late reply lands on the V1 probe rather than on a V2 one.
|
|
266
|
+
*/
|
|
267
|
+
private wakeSilentProtocolV1Device;
|
|
227
268
|
private resetProbeStateAfterProtocolProbe;
|
|
228
269
|
private probeProtocolV1;
|
|
229
270
|
private probeProtocolV2;
|
|
@@ -247,4 +288,4 @@ declare class ReactNativeBleTransport {
|
|
|
247
288
|
getProtocolType(path: string): ProtocolType | undefined;
|
|
248
289
|
}
|
|
249
290
|
|
|
250
|
-
export { BLE_CONNECT_TIMEOUT_MANAGER_RESET_THRESHOLD, BLE_CONNECT_TIMEOUT_MS, BLE_GATT_SETUP_TIMEOUT_MS, BLE_NATIVE_TEARDOWN_TIMEOUT_MS, BLE_SETUP_WEDGED_MESSAGE, BLE_WRITE_PACKET_TIMEOUT_MS, BLE_WRITE_TIMEOUT_MANAGER_RESET_THRESHOLD, IOneKeyDevice, PROTOCOL_REPROBE_FALLBACK_ATTEMPTS, ProtocolV2BleTuning, configureProtocolV2BleTuning, ReactNativeBleTransport as default, getFirmwareUploadWriteRetryType, getProtocolV2BleTuning, resetProtocolV2BleTuning };
|
|
291
|
+
export { ANDROID_LINK_DROP_QUIET_MS, ANDROID_MTU_EXCHANGE_TIMEOUT_MS, BLE_CONNECT_TIMEOUT_MANAGER_RESET_THRESHOLD, BLE_CONNECT_TIMEOUT_MS, BLE_GATT_SETUP_TIMEOUT_MS, BLE_NATIVE_TEARDOWN_TIMEOUT_MS, BLE_SETUP_WEDGED_MESSAGE, BLE_WRITE_PACKET_TIMEOUT_MS, BLE_WRITE_TIMEOUT_MANAGER_RESET_THRESHOLD, IOneKeyDevice, PROTOCOL_REPROBE_FALLBACK_ATTEMPTS, ProtocolV2BleTuning, configureProtocolV2BleTuning, ReactNativeBleTransport as default, getFirmwareUploadWriteRetryType, getProtocolV2BleTuning, resetProtocolV2BleTuning };
|
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";AAEA,OAAO,EAGL,UAAU,IAAI,aAAa,EAG5B,MAAM,sBAAsB,CAAC;AAE9B,OAAO,SAAS,EAAE,EAChB,KAAK,oBAAoB,EAIzB,KAAK,YAAY,EAKjB,KAAK,oBAAoB,EAI1B,MAAM,wBAAwB,CAAC;
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|