@onekeyfe/hd-core 1.2.0-alpha.170 → 1.2.0-alpha.171
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.
|
@@ -14,12 +14,12 @@ describe('FirmwareUpdateV4 install polling', () => {
|
|
|
14
14
|
jest.restoreAllMocks();
|
|
15
15
|
});
|
|
16
16
|
|
|
17
|
-
test('
|
|
17
|
+
test('keeps USB on Stage, Request Success, then status polling', async () => {
|
|
18
18
|
const method = new FirmwareUpdateV4({
|
|
19
19
|
id: 1,
|
|
20
20
|
payload: {
|
|
21
21
|
method: 'firmwareUpdateV4',
|
|
22
|
-
connectId: 'pro2-
|
|
22
|
+
connectId: 'pro2-usb',
|
|
23
23
|
},
|
|
24
24
|
});
|
|
25
25
|
const targets = [{ target_id: 4, path: 'vol0:/application_p1.bin' }];
|
|
@@ -43,7 +43,7 @@ describe('FirmwareUpdateV4 install polling', () => {
|
|
|
43
43
|
method.device = {
|
|
44
44
|
getCommands: () => ({ typedCall }),
|
|
45
45
|
createProtocolV2UiPhaseMetadata: jest.fn().mockReturnValue(undefined),
|
|
46
|
-
toMessageObject: jest.fn().mockReturnValue({ connectId: 'pro2-
|
|
46
|
+
toMessageObject: jest.fn().mockReturnValue({ connectId: 'pro2-usb' }),
|
|
47
47
|
setCancelableAction: jest.fn(),
|
|
48
48
|
clearCancelableAction: jest.fn(),
|
|
49
49
|
} as unknown as Device;
|
|
@@ -59,6 +59,7 @@ describe('FirmwareUpdateV4 install polling', () => {
|
|
|
59
59
|
};
|
|
60
60
|
firmwareUpdate.reconnectProtocolV2Device = jest.fn().mockResolvedValue(undefined);
|
|
61
61
|
firmwareUpdate.verifyProtocolV2ReconnectIdentity = jest.fn().mockResolvedValue({});
|
|
62
|
+
(method as any).isBleReconnect = jest.fn(() => false);
|
|
62
63
|
|
|
63
64
|
await firmwareUpdate.protocolV2StartFirmwareUpdate({ targets });
|
|
64
65
|
await firmwareUpdate.waitForProtocolV2FirmwareUpdateComplete(targets);
|
|
@@ -72,6 +73,59 @@ describe('FirmwareUpdateV4 install polling', () => {
|
|
|
72
73
|
);
|
|
73
74
|
});
|
|
74
75
|
|
|
76
|
+
test('writes the BLE Request and consumes its terminal Success from status polling', async () => {
|
|
77
|
+
const method = new FirmwareUpdateV4({
|
|
78
|
+
id: 1,
|
|
79
|
+
payload: {
|
|
80
|
+
method: 'firmwareUpdateV4',
|
|
81
|
+
connectId: 'pro2-ble',
|
|
82
|
+
},
|
|
83
|
+
});
|
|
84
|
+
const targets = [{ target_id: 6, path: 'vol0:/coprocessor.bin' }];
|
|
85
|
+
const typedCall = jest
|
|
86
|
+
.fn()
|
|
87
|
+
.mockResolvedValueOnce({ type: 'Success', message: {} })
|
|
88
|
+
.mockResolvedValueOnce({ type: 'Success', message: {} });
|
|
89
|
+
const call = jest.fn().mockResolvedValue({
|
|
90
|
+
type: 'WriteCompleted',
|
|
91
|
+
message: {},
|
|
92
|
+
});
|
|
93
|
+
|
|
94
|
+
method.device = {
|
|
95
|
+
getCommands: () => ({ typedCall, call }),
|
|
96
|
+
createProtocolV2UiPhaseMetadata: jest.fn().mockReturnValue(undefined),
|
|
97
|
+
toMessageObject: jest.fn().mockReturnValue({ connectId: 'pro2-ble' }),
|
|
98
|
+
setCancelableAction: jest.fn(),
|
|
99
|
+
} as unknown as Device;
|
|
100
|
+
method.postMessage = jest.fn();
|
|
101
|
+
method.postProgressMessage = jest.fn();
|
|
102
|
+
(method as any).isBleReconnect = jest.fn(() => true);
|
|
103
|
+
|
|
104
|
+
const firmwareUpdate = method as unknown as {
|
|
105
|
+
protocolV2StartFirmwareUpdate: (params: { targets: typeof targets }) => Promise<void>;
|
|
106
|
+
waitForProtocolV2FirmwareUpdateComplete: (
|
|
107
|
+
value: typeof targets,
|
|
108
|
+
requireCurrentInstallStatus: boolean
|
|
109
|
+
) => Promise<void>;
|
|
110
|
+
};
|
|
111
|
+
|
|
112
|
+
await firmwareUpdate.protocolV2StartFirmwareUpdate({ targets });
|
|
113
|
+
|
|
114
|
+
expect(typedCall).toHaveBeenCalledTimes(1);
|
|
115
|
+
expect(typedCall).toHaveBeenCalledWith('DeviceFirmwareUpdateStage', 'Success', { targets });
|
|
116
|
+
expect(call).toHaveBeenCalledWith(
|
|
117
|
+
'DeviceFirmwareUpdateRequest',
|
|
118
|
+
{},
|
|
119
|
+
{ returnAfterWrite: true }
|
|
120
|
+
);
|
|
121
|
+
expect(method.postProgressMessage).not.toHaveBeenCalled();
|
|
122
|
+
|
|
123
|
+
await firmwareUpdate.waitForProtocolV2FirmwareUpdateComplete(targets, true);
|
|
124
|
+
|
|
125
|
+
expect(typedCall.mock.calls[1]?.[0]).toBe('DeviceFirmwareUpdateStatusGet');
|
|
126
|
+
expect(method.postProgressMessage).toHaveBeenCalledWith(100, 'installingFirmware');
|
|
127
|
+
});
|
|
128
|
+
|
|
75
129
|
test('does not send Request when Stage is rejected', async () => {
|
|
76
130
|
const method = new FirmwareUpdateV4({
|
|
77
131
|
id: 1,
|
|
@@ -5551,15 +5551,11 @@ describe('Protocol V2 firmware update targets', () => {
|
|
|
5551
5551
|
method: 'firmwareUpdateV4',
|
|
5552
5552
|
},
|
|
5553
5553
|
});
|
|
5554
|
-
const typedCall = jest.fn().
|
|
5555
|
-
|
|
5556
|
-
return Promise.reject(new Error('React Native BLE transport released'));
|
|
5557
|
-
}
|
|
5558
|
-
return Promise.resolve({ type: 'Success', message: {} });
|
|
5559
|
-
});
|
|
5554
|
+
const typedCall = jest.fn().mockResolvedValue({ type: 'Success', message: {} });
|
|
5555
|
+
const call = jest.fn().mockRejectedValue(new Error('React Native BLE transport released'));
|
|
5560
5556
|
|
|
5561
5557
|
(method as any).device = stubDevice({
|
|
5562
|
-
getCommands: () => ({ typedCall }),
|
|
5558
|
+
getCommands: () => ({ typedCall, call }),
|
|
5563
5559
|
createProtocolV2UiPhaseMetadata: jest.fn().mockReturnValue(undefined),
|
|
5564
5560
|
toMessageObject: jest.fn().mockReturnValue({ connectId: 'pro2' }),
|
|
5565
5561
|
});
|
|
@@ -5572,7 +5568,12 @@ describe('Protocol V2 firmware update targets', () => {
|
|
|
5572
5568
|
})
|
|
5573
5569
|
).resolves.toBeUndefined();
|
|
5574
5570
|
|
|
5575
|
-
expect(
|
|
5571
|
+
expect(call).toHaveBeenCalledWith(
|
|
5572
|
+
'DeviceFirmwareUpdateRequest',
|
|
5573
|
+
{},
|
|
5574
|
+
{ returnAfterWrite: true }
|
|
5575
|
+
);
|
|
5576
|
+
expect(typedCall).not.toHaveBeenCalledWith('DeviceFirmwareUpdateRequest', 'Success', {});
|
|
5576
5577
|
expect((method as any).protocolV2InstallNeedsBleReconnect).toBe(true);
|
|
5577
5578
|
});
|
|
5578
5579
|
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"FirmwareUpdateV4.d.ts","sourceRoot":"","sources":["../../src/api/FirmwareUpdateV4.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"FirmwareUpdateV4.d.ts","sourceRoot":"","sources":["../../src/api/FirmwareUpdateV4.ts"],"names":[],"mappings":"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"}
|
package/dist/index.js
CHANGED
|
@@ -53600,6 +53600,12 @@ class FirmwareUpdateV4 extends FirmwareUpdateBaseMethod {
|
|
|
53600
53600
|
},
|
|
53601
53601
|
}, { timeoutMs: PROTOCOL_V2_FIRMWARE_STATUS_RESPONSE_TIMEOUT });
|
|
53602
53602
|
if (statusResponse.type === 'Success') {
|
|
53603
|
+
if (this.isBleReconnect()) {
|
|
53604
|
+
Log$7.log('[FirmwareUpdateV4] BLE firmware install completed by terminal Success response');
|
|
53605
|
+
this.recordProtocolV2AuthoritativeInstallCompletion(expectedTargetIds);
|
|
53606
|
+
this.postProgressMessage(100, 'installingFirmware');
|
|
53607
|
+
return;
|
|
53608
|
+
}
|
|
53603
53609
|
installEvidenceObserved = true;
|
|
53604
53610
|
lastError = new Error('Protocol V2 firmware install acknowledged; waiting for target status');
|
|
53605
53611
|
}
|
|
@@ -53969,6 +53975,21 @@ class FirmwareUpdateV4 extends FirmwareUpdateBaseMethod {
|
|
|
53969
53975
|
this.device.setCancelableAction(() => commands.cancelDevice());
|
|
53970
53976
|
const interaction = this.device.createProtocolV2UiPhaseMetadata('button', 'start');
|
|
53971
53977
|
this.postMessage(createUiMessage(UI_REQUEST.REQUEST_BUTTON, Object.assign({ device: this.device.toMessageObject(), source: 'method-lifecycle', reason: 'firmware-update', completion: 'operation-completed', deviceOnly: true, operation: this.name }, (interaction ? { interaction } : {}))));
|
|
53978
|
+
if (this.isBleReconnect()) {
|
|
53979
|
+
try {
|
|
53980
|
+
yield commands.call('DeviceFirmwareUpdateRequest', {}, { returnAfterWrite: true });
|
|
53981
|
+
Log$7.log('[FirmwareUpdateV4] BLE firmware install request written; continue with status polling');
|
|
53982
|
+
}
|
|
53983
|
+
catch (error) {
|
|
53984
|
+
this.throwIfAborted();
|
|
53985
|
+
if (!isProtocolV2DeviceDisconnectedError(error)) {
|
|
53986
|
+
throw error;
|
|
53987
|
+
}
|
|
53988
|
+
Log$7.log('[FirmwareUpdateV4] BLE transport released while writing install request; continue status polling');
|
|
53989
|
+
this.protocolV2InstallNeedsBleReconnect = true;
|
|
53990
|
+
}
|
|
53991
|
+
return;
|
|
53992
|
+
}
|
|
53972
53993
|
try {
|
|
53973
53994
|
yield commands.typedCall('DeviceFirmwareUpdateRequest', 'Success', {});
|
|
53974
53995
|
this.protocolV2InstallRequestConfirmed = true;
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@onekeyfe/hd-core",
|
|
3
|
-
"version": "1.2.0-alpha.
|
|
3
|
+
"version": "1.2.0-alpha.171",
|
|
4
4
|
"description": "Core processes and APIs for communicating with OneKey hardware devices.",
|
|
5
5
|
"author": "OneKey",
|
|
6
6
|
"homepage": "https://github.com/OneKeyHQ/hardware-js-sdk#readme",
|
|
@@ -25,8 +25,8 @@
|
|
|
25
25
|
"url": "https://github.com/OneKeyHQ/hardware-js-sdk/issues"
|
|
26
26
|
},
|
|
27
27
|
"dependencies": {
|
|
28
|
-
"@onekeyfe/hd-shared": "1.2.0-alpha.
|
|
29
|
-
"@onekeyfe/hd-transport": "1.2.0-alpha.
|
|
28
|
+
"@onekeyfe/hd-shared": "1.2.0-alpha.171",
|
|
29
|
+
"@onekeyfe/hd-transport": "1.2.0-alpha.171",
|
|
30
30
|
"axios": "1.15.2",
|
|
31
31
|
"bignumber.js": "^9.0.2",
|
|
32
32
|
"buffer": "^6.0.3",
|
|
@@ -46,5 +46,5 @@
|
|
|
46
46
|
"@types/w3c-web-usb": "^1.0.10",
|
|
47
47
|
"@types/web-bluetooth": "^0.0.21"
|
|
48
48
|
},
|
|
49
|
-
"gitHead": "
|
|
49
|
+
"gitHead": "68de201cc95fe521936c74f828addb3fb5251c67"
|
|
50
50
|
}
|
|
@@ -2476,6 +2476,14 @@ export default class FirmwareUpdateV4 extends FirmwareUpdateBaseMethod<FirmwareU
|
|
|
2476
2476
|
{ timeoutMs: PROTOCOL_V2_FIRMWARE_STATUS_RESPONSE_TIMEOUT }
|
|
2477
2477
|
);
|
|
2478
2478
|
if (statusResponse.type === 'Success') {
|
|
2479
|
+
if (this.isBleReconnect()) {
|
|
2480
|
+
Log.log(
|
|
2481
|
+
'[FirmwareUpdateV4] BLE firmware install completed by terminal Success response'
|
|
2482
|
+
);
|
|
2483
|
+
this.recordProtocolV2AuthoritativeInstallCompletion(expectedTargetIds);
|
|
2484
|
+
this.postProgressMessage(100, 'installingFirmware');
|
|
2485
|
+
return;
|
|
2486
|
+
}
|
|
2479
2487
|
installEvidenceObserved = true;
|
|
2480
2488
|
lastError = new Error(
|
|
2481
2489
|
'Protocol V2 firmware install acknowledged; waiting for target status'
|
|
@@ -2987,6 +2995,26 @@ export default class FirmwareUpdateV4 extends FirmwareUpdateBaseMethod<FirmwareU
|
|
|
2987
2995
|
...(interaction ? { interaction } : {}),
|
|
2988
2996
|
})
|
|
2989
2997
|
);
|
|
2998
|
+
|
|
2999
|
+
if (this.isBleReconnect()) {
|
|
3000
|
+
try {
|
|
3001
|
+
await commands.call('DeviceFirmwareUpdateRequest', {}, { returnAfterWrite: true });
|
|
3002
|
+
Log.log(
|
|
3003
|
+
'[FirmwareUpdateV4] BLE firmware install request written; continue with status polling'
|
|
3004
|
+
);
|
|
3005
|
+
} catch (error) {
|
|
3006
|
+
this.throwIfAborted();
|
|
3007
|
+
if (!isProtocolV2DeviceDisconnectedError(error)) {
|
|
3008
|
+
throw error;
|
|
3009
|
+
}
|
|
3010
|
+
Log.log(
|
|
3011
|
+
'[FirmwareUpdateV4] BLE transport released while writing install request; continue status polling'
|
|
3012
|
+
);
|
|
3013
|
+
this.protocolV2InstallNeedsBleReconnect = true;
|
|
3014
|
+
}
|
|
3015
|
+
return;
|
|
3016
|
+
}
|
|
3017
|
+
|
|
2990
3018
|
try {
|
|
2991
3019
|
await commands.typedCall('DeviceFirmwareUpdateRequest', 'Success', {});
|
|
2992
3020
|
this.protocolV2InstallRequestConfirmed = true;
|