Skip to content

Commit e5163db

Browse files
authored
fix: firmwareUpdateV2 with new boot (#446)
1 parent 709d827 commit e5163db

File tree

13 files changed

+92
-38
lines changed

13 files changed

+92
-38
lines changed

packages/connect-examples/electron-example/package.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@
22
"name": "hardware-example",
33
"productName": "HardwareExample",
44
"executableName": "onekey-hardware-example",
5-
"version": "1.0.25-alpha.8",
5+
"version": "1.0.25-alpha.9",
66
"author": "OneKey",
77
"description": "End-to-end encrypted workspaces for teams",
88
"main": "dist/index.js",

packages/connect-examples/expo-example/package.json

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
{
22
"name": "expo-example",
3-
"version": "1.0.25-alpha.8",
3+
"version": "1.0.25-alpha.9",
44
"scripts": {
55
"start": "CONNECT_SRC=https://localhost:8087/ yarn expo start --dev-client",
66
"android": "yarn expo run:android",
@@ -19,10 +19,10 @@
1919
"@noble/ed25519": "^2.1.0",
2020
"@noble/hashes": "^1.3.3",
2121
"@noble/secp256k1": "^1.7.1",
22-
"@onekeyfe/hd-ble-sdk": "^1.0.25-alpha.8",
23-
"@onekeyfe/hd-common-connect-sdk": "^1.0.25-alpha.8",
24-
"@onekeyfe/hd-core": "^1.0.25-alpha.8",
25-
"@onekeyfe/hd-web-sdk": "^1.0.25-alpha.8",
22+
"@onekeyfe/hd-ble-sdk": "^1.0.25-alpha.9",
23+
"@onekeyfe/hd-common-connect-sdk": "^1.0.25-alpha.9",
24+
"@onekeyfe/hd-core": "^1.0.25-alpha.9",
25+
"@onekeyfe/hd-web-sdk": "^1.0.25-alpha.9",
2626
"@onekeyfe/react-native-ble-plx": "3.0.0",
2727
"@polkadot/util-crypto": "13.1.1",
2828
"@react-native-async-storage/async-storage": "1.21.0",

packages/core/package.json

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
{
22
"name": "@onekeyfe/hd-core",
3-
"version": "1.0.25-alpha.8",
3+
"version": "1.0.25-alpha.9",
44
"description": "> TODO: description",
55
"author": "OneKey",
66
"homepage": "https://github.com/OneKeyHQ/hardware-js-sdk#readme",
@@ -25,8 +25,8 @@
2525
"url": "https://github.com/OneKeyHQ/hardware-js-sdk/issues"
2626
},
2727
"dependencies": {
28-
"@onekeyfe/hd-shared": "^1.0.25-alpha.8",
29-
"@onekeyfe/hd-transport": "^1.0.25-alpha.8",
28+
"@onekeyfe/hd-shared": "^1.0.25-alpha.9",
29+
"@onekeyfe/hd-transport": "^1.0.25-alpha.9",
3030
"axios": "^0.27.2",
3131
"bignumber.js": "^9.0.2",
3232
"bytebuffer": "^5.0.1",

packages/core/src/api/firmware/uploadFirmware.ts

Lines changed: 54 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -27,6 +27,7 @@ import { DevicePool } from '../../device/DevicePool';
2727

2828
const NEW_BOOT_UPRATE_FIRMWARE_VERSION = '2.4.5';
2929
const SESSION_ERROR = 'session not found';
30+
const FIRMWARE_UPDATE_CONFIRM = 'Firmware install confirmed';
3031

3132
const Log = getLogger(LoggerNames.Core);
3233

@@ -223,6 +224,59 @@ const newTouchUpdateProcess = async (
223224
path: filePath,
224225
reboot_on_success: rebootOnSuccess,
225226
});
227+
228+
if (
229+
response.type === 'Success' &&
230+
(response as any)?.message?.message === FIRMWARE_UPDATE_CONFIRM
231+
) {
232+
const timeout = 2 * 60 * 1000;
233+
// eslint-disable-next-line no-constant-condition
234+
// Check if timeout exceeded
235+
const startTime = Date.now();
236+
const isBleReconnect = DataManager.isBleConnect(env);
237+
while (Date.now() - startTime < timeout) {
238+
try {
239+
if (isBleReconnect) {
240+
try {
241+
await device.deviceConnector?.acquire(device.originalDescriptor.id, null, true);
242+
const typedCall = device.getCommands().typedCall.bind(device.getCommands());
243+
await Promise.race([
244+
typedCall('Initialize', 'Features', {}),
245+
new Promise((_, reject) => {
246+
setTimeout(() => {
247+
reject(ERRORS.TypedError(HardwareErrorCode.DeviceInitializeFailed));
248+
}, 3000);
249+
}),
250+
]);
251+
} catch (e) {
252+
// ignore error because of device is not connected
253+
Log.log('catch Bluetooth error when device is restarting: ', e);
254+
}
255+
} else {
256+
const deviceDiff = await device.deviceConnector?.enumerate();
257+
const devicesDescriptor = deviceDiff?.descriptors ?? [];
258+
const { deviceList } = await DevicePool.getDevices(
259+
devicesDescriptor,
260+
device.originalDescriptor.id
261+
);
262+
if (deviceList.length === 1) {
263+
device.updateFromCache(deviceList[0]);
264+
await device.acquire();
265+
device.commands.disposed = false;
266+
device.getCommands().mainId = device.mainId ?? '';
267+
}
268+
}
269+
const typedCall = device.getCommands().typedCall.bind(device.getCommands());
270+
await typedCall('GetFeatures', 'Features', {});
271+
DevicePool.resetState();
272+
break;
273+
} catch (error) {
274+
console.error('Device reconnect failed: ', error);
275+
Log.error('Device reconnect failed:', error);
276+
await wait(1000);
277+
}
278+
}
279+
}
226280
return response;
227281
};
228282

packages/hd-ble-sdk/package.json

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
{
22
"name": "@onekeyfe/hd-ble-sdk",
3-
"version": "1.0.25-alpha.8",
3+
"version": "1.0.25-alpha.9",
44
"author": "OneKey",
55
"homepage": "https://github.com/OneKeyHQ/hardware-js-sdk#readme",
66
"license": "ISC",
@@ -20,8 +20,8 @@
2020
"lint:fix": "eslint . --fix"
2121
},
2222
"dependencies": {
23-
"@onekeyfe/hd-core": "^1.0.25-alpha.8",
24-
"@onekeyfe/hd-shared": "^1.0.25-alpha.8",
25-
"@onekeyfe/hd-transport-react-native": "^1.0.25-alpha.8"
23+
"@onekeyfe/hd-core": "^1.0.25-alpha.9",
24+
"@onekeyfe/hd-shared": "^1.0.25-alpha.9",
25+
"@onekeyfe/hd-transport-react-native": "^1.0.25-alpha.9"
2626
}
2727
}

packages/hd-common-connect-sdk/package.json

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
{
22
"name": "@onekeyfe/hd-common-connect-sdk",
3-
"version": "1.0.25-alpha.8",
3+
"version": "1.0.25-alpha.9",
44
"author": "OneKey",
55
"homepage": "https://github.com/OneKeyHQ/hardware-js-sdk#readme",
66
"license": "ISC",
@@ -20,10 +20,10 @@
2020
"lint:fix": "eslint . --fix"
2121
},
2222
"dependencies": {
23-
"@onekeyfe/hd-core": "^1.0.25-alpha.8",
24-
"@onekeyfe/hd-shared": "^1.0.25-alpha.8",
25-
"@onekeyfe/hd-transport-http": "^1.0.25-alpha.8",
26-
"@onekeyfe/hd-transport-lowlevel": "^1.0.25-alpha.8",
27-
"@onekeyfe/hd-transport-webusb": "^1.0.25-alpha.8"
23+
"@onekeyfe/hd-core": "^1.0.25-alpha.9",
24+
"@onekeyfe/hd-shared": "^1.0.25-alpha.9",
25+
"@onekeyfe/hd-transport-http": "^1.0.25-alpha.9",
26+
"@onekeyfe/hd-transport-lowlevel": "^1.0.25-alpha.9",
27+
"@onekeyfe/hd-transport-webusb": "^1.0.25-alpha.9"
2828
}
2929
}

packages/hd-transport-http/package.json

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
{
22
"name": "@onekeyfe/hd-transport-http",
3-
"version": "1.0.25-alpha.8",
3+
"version": "1.0.25-alpha.9",
44
"description": "hardware http transport",
55
"author": "OneKey",
66
"homepage": "https://github.com/OneKeyHQ/hardware-js-sdk#readme",
@@ -24,8 +24,8 @@
2424
"url": "https://github.com/OneKeyHQ/hardware-js-sdk/issues"
2525
},
2626
"dependencies": {
27-
"@onekeyfe/hd-shared": "^1.0.25-alpha.8",
28-
"@onekeyfe/hd-transport": "^1.0.25-alpha.8",
27+
"@onekeyfe/hd-shared": "^1.0.25-alpha.9",
28+
"@onekeyfe/hd-transport": "^1.0.25-alpha.9",
2929
"axios": "^0.27.2"
3030
}
3131
}

packages/hd-transport-lowlevel/package.json

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
{
22
"name": "@onekeyfe/hd-transport-lowlevel",
3-
"version": "1.0.25-alpha.8",
3+
"version": "1.0.25-alpha.9",
44
"homepage": "https://github.com/OneKeyHQ/hardware-js-sdk#readme",
55
"license": "MIT",
66
"main": "dist/index.js",
@@ -19,7 +19,7 @@
1919
"lint:fix": "eslint . --fix"
2020
},
2121
"dependencies": {
22-
"@onekeyfe/hd-shared": "^1.0.25-alpha.8",
23-
"@onekeyfe/hd-transport": "^1.0.25-alpha.8"
22+
"@onekeyfe/hd-shared": "^1.0.25-alpha.9",
23+
"@onekeyfe/hd-transport": "^1.0.25-alpha.9"
2424
}
2525
}

packages/hd-transport-react-native/package.json

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
{
22
"name": "@onekeyfe/hd-transport-react-native",
3-
"version": "1.0.25-alpha.8",
3+
"version": "1.0.25-alpha.9",
44
"homepage": "https://github.com/OneKeyHQ/hardware-js-sdk#readme",
55
"license": "MIT",
66
"main": "dist/index.js",
@@ -19,8 +19,8 @@
1919
"lint:fix": "eslint . --fix"
2020
},
2121
"dependencies": {
22-
"@onekeyfe/hd-shared": "^1.0.25-alpha.8",
23-
"@onekeyfe/hd-transport": "^1.0.25-alpha.8",
22+
"@onekeyfe/hd-shared": "^1.0.25-alpha.9",
23+
"@onekeyfe/hd-transport": "^1.0.25-alpha.9",
2424
"@onekeyfe/react-native-ble-plx": "3.0.1",
2525
"react-native-ble-manager": "^8.1.0"
2626
}

packages/hd-transport-webusb/package.json

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
{
22
"name": "@onekeyfe/hd-transport-webusb",
3-
"version": "1.0.25-alpha.8",
3+
"version": "1.0.25-alpha.9",
44
"author": "OneKey",
55
"homepage": "https://github.com/OneKeyHQ/hardware-js-sdk#readme",
66
"license": "MIT",
@@ -20,8 +20,8 @@
2020
"lint:fix": "eslint . --fix"
2121
},
2222
"dependencies": {
23-
"@onekeyfe/hd-shared": "^1.0.25-alpha.8",
24-
"@onekeyfe/hd-transport": "^1.0.25-alpha.8"
23+
"@onekeyfe/hd-shared": "^1.0.25-alpha.9",
24+
"@onekeyfe/hd-transport": "^1.0.25-alpha.9"
2525
},
2626
"devDependencies": {
2727
"@types/w3c-web-usb": "^1.0.6",

0 commit comments

Comments
 (0)