@onekeyfe/hd-core 1.2.0-alpha.65 → 1.2.0-alpha.66
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/__tests__/AllNetworkGetAddressBase.tracing.test.ts +313 -0
- package/__tests__/DeviceCommands.test.ts +59 -13
- package/__tests__/DeviceEventRegistration.test.ts +6 -0
- package/__tests__/check-all-firmware-release-protocol-v2.test.ts +198 -3
- package/__tests__/connectSettings.test.ts +5 -47
- package/__tests__/core-initialization.test.ts +23 -0
- package/__tests__/device-connector-protocol.test.ts +81 -0
- package/__tests__/device-lifecycle-events.test.ts +105 -3
- package/__tests__/device-pool-state.test.ts +22 -0
- package/__tests__/device-settings.test.ts +39 -18
- package/__tests__/device-state-contract.test.ts +1 -0
- package/__tests__/device-state-mapper.test.ts +13 -1
- package/__tests__/device-utils.test.ts +48 -1
- package/__tests__/deviceSettings.test.ts +11 -1
- package/__tests__/deviceUploadNft.test.ts +316 -0
- package/__tests__/firmware-update/firmware-update-v2-download-before-boot.test.ts +31 -59
- package/__tests__/get-device-state.test.ts +132 -12
- package/__tests__/homescreen.test.ts +41 -1
- package/__tests__/kaspa-use-tweak-pro2.test.ts +2 -2
- package/__tests__/kaspaSignTransaction.test.ts +3 -26
- package/__tests__/logBlockEvent.test.ts +1 -1
- package/__tests__/method-protocol-support.test.ts +19 -0
- package/__tests__/open-wallet-session.test.ts +568 -37
- package/__tests__/pro2Nft.test.ts +108 -0
- package/__tests__/protocol-binding.test.ts +89 -0
- package/__tests__/protocol-v2-resources.test.ts +340 -0
- package/__tests__/protocol-v2-ui-lifecycle.test.ts +91 -0
- package/__tests__/protocol-v2-unlock-policy.test.ts +300 -37
- package/__tests__/protocol-v2.test.ts +1506 -1097
- package/__tests__/protocolV2FileWrite.test.ts +152 -0
- package/__tests__/protocolV2UiInteraction.test.ts +63 -0
- package/__tests__/public-pro2-api-boundary.test.ts +1 -0
- package/__tests__/search-devices.test.ts +12 -3
- package/__tests__/tron-sign-message-init.test.ts +2 -2
- package/__tests__/uiProgressThrottle.test.ts +74 -0
- package/__tests__/uiPromiseRegistry.test.ts +115 -0
- package/dist/api/BaseMethod.d.ts +3 -1
- package/dist/api/BaseMethod.d.ts.map +1 -1
- package/dist/api/CheckAllFirmwareRelease.d.ts +2 -1
- package/dist/api/CheckAllFirmwareRelease.d.ts.map +1 -1
- package/dist/api/DetectDeviceConnectProtocol.d.ts +7 -0
- package/dist/api/DetectDeviceConnectProtocol.d.ts.map +1 -0
- package/dist/api/FirmwareUpdate.d.ts.map +1 -1
- package/dist/api/FirmwareUpdateV2.d.ts +0 -11
- package/dist/api/FirmwareUpdateV2.d.ts.map +1 -1
- package/dist/api/FirmwareUpdateV3.d.ts +3 -7
- package/dist/api/FirmwareUpdateV3.d.ts.map +1 -1
- package/dist/api/FirmwareUpdateV4.d.ts +13 -27
- package/dist/api/FirmwareUpdateV4.d.ts.map +1 -1
- package/dist/api/GetPassphraseState.d.ts.map +1 -1
- package/dist/api/OpenWalletSession.d.ts.map +1 -1
- package/dist/api/SearchDevices.d.ts.map +1 -1
- package/dist/api/allnetwork/AllNetworkGetAddressBase.d.ts.map +1 -1
- package/dist/api/device/DeviceSettings.d.ts.map +1 -1
- package/dist/api/device/DeviceUnlock.d.ts +2 -2
- package/dist/api/device/DeviceUnlock.d.ts.map +1 -1
- package/dist/api/device/DeviceUpdateBootloader.d.ts +1 -5
- package/dist/api/device/DeviceUpdateBootloader.d.ts.map +1 -1
- package/dist/api/firmware/FirmwareUpdateBaseMethod.d.ts +4 -11
- package/dist/api/firmware/FirmwareUpdateBaseMethod.d.ts.map +1 -1
- package/dist/api/firmware/getBinary.d.ts +0 -7
- package/dist/api/firmware/getBinary.d.ts.map +1 -1
- package/dist/api/firmware/updateBootloader.d.ts +0 -2
- package/dist/api/firmware/updateBootloader.d.ts.map +1 -1
- package/dist/api/firmware/uploadFirmware.d.ts +1 -9
- package/dist/api/firmware/uploadFirmware.d.ts.map +1 -1
- package/dist/api/helpers/protocolV2FileWrite.d.ts +9 -0
- package/dist/api/helpers/protocolV2FileWrite.d.ts.map +1 -1
- package/dist/api/index.d.ts +2 -0
- package/dist/api/index.d.ts.map +1 -1
- package/dist/api/kaspa/KaspaGetAddress.d.ts +1 -1
- package/dist/api/kaspa/KaspaSignTransaction.d.ts +1 -1
- package/dist/api/kaspa/KaspaSignTransaction.d.ts.map +1 -1
- package/dist/api/polkadot/PolkadotGetAddress.d.ts +1 -1
- package/dist/api/polkadot/networks.d.ts +1 -1
- package/dist/api/protocol-v2/DeviceUploadNft.d.ts +31 -0
- package/dist/api/protocol-v2/DeviceUploadNft.d.ts.map +1 -0
- package/dist/api/protocol-v2/ProtocolInfoRequest.d.ts.map +1 -1
- package/dist/api/protocol-v2/helpers.d.ts.map +1 -1
- package/dist/api/solana/SolSignMessage.d.ts +1 -1
- package/dist/api/solana/SolSignOffchainMessage.d.ts +1 -1
- package/dist/api/solana/SolSignTransaction.d.ts +2 -2
- package/dist/api/stellar/StellarSignTransaction.d.ts +1 -1
- package/dist/api/sui/SuiGetAddress.d.ts +1 -1
- package/dist/api/sui/SuiGetPublicKey.d.ts +1 -1
- package/dist/api/sui/SuiSignMessage.d.ts +1 -1
- package/dist/api/sui/SuiSignTransaction.d.ts +1 -1
- package/dist/api/ton/TonGetAddress.d.ts +1 -1
- package/dist/api/ton/TonSignMessage.d.ts +1 -1
- package/dist/api/ton/TonSignProof.d.ts +1 -1
- package/dist/api/tron/TronSignMessage.d.ts +2 -2
- package/dist/api/tron/TronSignTransaction.d.ts +1 -1
- package/dist/core/deviceEventRegistration.d.ts +2 -0
- package/dist/core/deviceEventRegistration.d.ts.map +1 -1
- package/dist/core/index.d.ts.map +1 -1
- package/dist/core/uiPromiseRegistry.d.ts +6 -0
- package/dist/core/uiPromiseRegistry.d.ts.map +1 -0
- package/dist/data-manager/DataManager.d.ts +9 -4
- package/dist/data-manager/DataManager.d.ts.map +1 -1
- package/dist/data-manager/TransportManager.d.ts.map +1 -1
- package/dist/data-manager/connectSettings.d.ts.map +1 -1
- package/dist/device/Device.d.ts +29 -6
- package/dist/device/Device.d.ts.map +1 -1
- package/dist/device/DeviceCommands.d.ts +4 -4
- package/dist/device/DeviceCommands.d.ts.map +1 -1
- package/dist/device/DeviceConnector.d.ts +2 -1
- package/dist/device/DeviceConnector.d.ts.map +1 -1
- package/dist/device/DevicePool.d.ts.map +1 -1
- package/dist/deviceProfile/protocolV2DeviceIdentity.d.ts.map +1 -1
- package/dist/events/device.d.ts +4 -0
- package/dist/events/device.d.ts.map +1 -1
- package/dist/events/logBlockEvent.d.ts.map +1 -1
- package/dist/events/ui-promise.d.ts +4 -2
- package/dist/events/ui-promise.d.ts.map +1 -1
- package/dist/events/ui-request.d.ts +31 -2
- package/dist/events/ui-request.d.ts.map +1 -1
- package/dist/events/ui-response.d.ts +10 -2
- package/dist/events/ui-response.d.ts.map +1 -1
- package/dist/index.d.ts +243 -248
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +3051 -3774
- package/dist/inject.d.ts +6 -1
- package/dist/inject.d.ts.map +1 -1
- package/dist/lowLevelInject.d.ts.map +1 -1
- package/dist/protocols/protocol-v2/features.d.ts +0 -4
- package/dist/protocols/protocol-v2/features.d.ts.map +1 -1
- package/dist/protocols/protocol-v2/firmware.d.ts.map +1 -1
- package/dist/protocols/protocol-v2/resources.d.ts +30 -0
- package/dist/protocols/protocol-v2/resources.d.ts.map +1 -0
- package/dist/protocols/protocol-v2/uiInteraction.d.ts +7 -4
- package/dist/protocols/protocol-v2/uiInteraction.d.ts.map +1 -1
- package/dist/protocols/protocol-v2/unlockPolicy.d.ts +1 -3
- package/dist/protocols/protocol-v2/unlockPolicy.d.ts.map +1 -1
- package/dist/protocols/protocol-v2/unlockPolicyRunner.d.ts +22 -0
- package/dist/protocols/protocol-v2/unlockPolicyRunner.d.ts.map +1 -0
- package/dist/protocols/protocol-v2/walletSession.d.ts +6 -1
- package/dist/protocols/protocol-v2/walletSession.d.ts.map +1 -1
- package/dist/topLevelInject.d.ts.map +1 -1
- package/dist/types/api/checkAllFirmwareRelease.d.ts +3 -5
- package/dist/types/api/checkAllFirmwareRelease.d.ts.map +1 -1
- package/dist/types/api/detectDeviceConnectProtocol.d.ts +4 -0
- package/dist/types/api/detectDeviceConnectProtocol.d.ts.map +1 -0
- package/dist/types/api/deviceUnlock.d.ts +5 -1
- package/dist/types/api/deviceUnlock.d.ts.map +1 -1
- package/dist/types/api/deviceUpdateBootloader.d.ts +0 -6
- package/dist/types/api/deviceUpdateBootloader.d.ts.map +1 -1
- package/dist/types/api/export.d.ts +2 -4
- package/dist/types/api/export.d.ts.map +1 -1
- package/dist/types/api/firmwareUpdate.d.ts +4 -71
- package/dist/types/api/firmwareUpdate.d.ts.map +1 -1
- package/dist/types/api/index.d.ts +7 -10
- package/dist/types/api/index.d.ts.map +1 -1
- package/dist/types/api/protocolV2.d.ts +3 -0
- package/dist/types/api/protocolV2.d.ts.map +1 -1
- package/dist/types/device.d.ts +2 -2
- package/dist/types/device.d.ts.map +1 -1
- package/dist/types/params.d.ts +1 -0
- package/dist/types/params.d.ts.map +1 -1
- package/dist/types/settings.d.ts +38 -21
- package/dist/types/settings.d.ts.map +1 -1
- package/dist/utils/deviceFeaturesCompat.d.ts +0 -1
- package/dist/utils/deviceFeaturesCompat.d.ts.map +1 -1
- package/dist/utils/deviceFeaturesUtils.d.ts +4 -0
- package/dist/utils/deviceFeaturesUtils.d.ts.map +1 -1
- package/dist/utils/deviceInfoUtils.d.ts.map +1 -1
- package/dist/utils/deviceSettings.d.ts.map +1 -1
- package/dist/utils/homescreen.d.ts +4 -0
- package/dist/utils/homescreen.d.ts.map +1 -1
- package/dist/utils/index.d.ts +1 -1
- package/dist/utils/index.d.ts.map +1 -1
- package/dist/utils/patch.d.ts +1 -1
- package/dist/utils/patch.d.ts.map +1 -1
- package/dist/utils/pro2Nft.d.ts +31 -0
- package/dist/utils/pro2Nft.d.ts.map +1 -0
- package/dist/utils/pro2Wallpaper.d.ts +10 -0
- package/dist/utils/pro2Wallpaper.d.ts.map +1 -1
- package/dist/utils/uiProgressThrottle.d.ts +3 -0
- package/dist/utils/uiProgressThrottle.d.ts.map +1 -0
- package/package.json +4 -4
- package/src/api/BaseMethod.ts +8 -10
- package/src/api/CheckAllFirmwareRelease.ts +59 -60
- package/src/api/DetectDeviceConnectProtocol.ts +18 -0
- package/src/api/FirmwareUpdate.ts +7 -15
- package/src/api/FirmwareUpdateV2.ts +126 -316
- package/src/api/FirmwareUpdateV3.ts +63 -265
- package/src/api/FirmwareUpdateV4.ts +597 -1005
- package/src/api/GetPassphraseState.ts +7 -1
- package/src/api/OpenWalletSession.ts +71 -17
- package/src/api/SearchDevices.ts +3 -1
- package/src/api/allnetwork/AllNetworkGetAddress.ts +21 -21
- package/src/api/allnetwork/AllNetworkGetAddressBase.ts +36 -11
- package/src/api/device/DeviceSettings.ts +5 -4
- package/src/api/device/DeviceUnlock.ts +8 -3
- package/src/api/device/DeviceUpdateBootloader.ts +6 -125
- package/src/api/firmware/FirmwareUpdateBaseMethod.ts +27 -83
- package/src/api/firmware/updateBootloader.ts +4 -19
- package/src/api/firmware/uploadFirmware.ts +39 -144
- package/src/api/helpers/protocolV2FileWrite.ts +202 -63
- package/src/api/index.ts +2 -0
- package/src/api/kaspa/KaspaGetAddress.ts +1 -1
- package/src/api/kaspa/KaspaSignTransaction.ts +2 -13
- package/src/api/polkadot/networks.ts +3 -3
- package/src/api/protocol-v2/DeviceUploadNft.ts +197 -0
- package/src/api/protocol-v2/ProtocolInfoRequest.ts +3 -1
- package/src/api/protocol-v2/helpers.ts +1 -1
- package/src/api/solana/SolSignMessage.ts +1 -1
- package/src/api/solana/SolSignOffchainMessage.ts +1 -1
- package/src/api/solana/SolSignTransaction.ts +2 -2
- package/src/api/sui/SuiGetAddress.ts +1 -1
- package/src/api/sui/SuiGetPublicKey.ts +1 -1
- package/src/api/sui/SuiSignMessage.ts +1 -1
- package/src/api/sui/SuiSignTransaction.ts +1 -1
- package/src/api/ton/TonGetAddress.ts +1 -1
- package/src/api/ton/TonSignMessage.ts +1 -1
- package/src/api/ton/TonSignProof.ts +1 -1
- package/src/api/tron/TronSignMessage.ts +2 -2
- package/src/api/tron/TronSignTransaction.ts +1 -1
- package/src/core/deviceEventRegistration.ts +4 -0
- package/src/core/index.ts +213 -111
- package/src/core/uiPromiseRegistry.ts +63 -0
- package/src/data/messages/messages-protocol-v2.json +25 -0
- package/src/data-manager/DataManager.ts +113 -41
- package/src/data-manager/TransportManager.ts +6 -0
- package/src/data-manager/connectSettings.ts +0 -11
- package/src/device/Device.ts +274 -49
- package/src/device/DeviceCommands.ts +31 -4
- package/src/device/DeviceConnector.ts +33 -13
- package/src/device/DevicePool.ts +21 -7
- package/src/deviceProfile/buildDeviceFeatures.ts +2 -2
- package/src/deviceProfile/protocolV2DeviceIdentity.ts +3 -0
- package/src/events/device.ts +4 -0
- package/src/events/logBlockEvent.ts +1 -0
- package/src/events/ui-promise.ts +4 -2
- package/src/events/ui-request.ts +36 -2
- package/src/events/ui-response.ts +12 -2
- package/src/index.ts +0 -5
- package/src/inject.ts +60 -24
- package/src/lowLevelInject.ts +7 -8
- package/src/protocols/protocol-v2/features.ts +10 -7
- package/src/protocols/protocol-v2/firmware.ts +2 -0
- package/src/protocols/protocol-v2/resources.ts +390 -0
- package/src/protocols/protocol-v2/uiInteraction.ts +46 -6
- package/src/protocols/protocol-v2/unlockPolicy.ts +1 -105
- package/src/protocols/protocol-v2/unlockPolicyRunner.ts +131 -0
- package/src/protocols/protocol-v2/walletSession.ts +214 -36
- package/src/topLevelInject.ts +7 -8
- package/src/types/api/checkAllFirmwareRelease.ts +3 -5
- package/src/types/api/detectDeviceConnectProtocol.ts +6 -0
- package/src/types/api/deviceUnlock.ts +12 -1
- package/src/types/api/deviceUpdateBootloader.ts +0 -6
- package/src/types/api/export.ts +1 -18
- package/src/types/api/firmwareUpdate.ts +6 -79
- package/src/types/api/index.ts +13 -14
- package/src/types/api/protocolV2.ts +13 -0
- package/src/types/device.ts +15 -3
- package/src/types/params.ts +7 -1
- package/src/types/settings.ts +60 -22
- package/src/utils/deviceFeaturesCompat.ts +5 -6
- package/src/utils/deviceFeaturesUtils.ts +14 -3
- package/src/utils/deviceInfoUtils.ts +2 -0
- package/src/utils/deviceSettings.ts +3 -0
- package/src/utils/homescreen.ts +32 -6
- package/src/utils/index.ts +6 -1
- package/src/utils/pro2Nft.ts +142 -0
- package/src/utils/pro2Wallpaper.ts +35 -8
- package/src/utils/uiProgressThrottle.ts +63 -0
- package/__tests__/device-initialize-timeout.test.ts +0 -56
- package/__tests__/firmware-update/check-all-firmware-release.test.ts +0 -175
- package/__tests__/firmware-update/firmware-artifact-source.test.ts +0 -119
- package/__tests__/firmware-update/firmware-host-binding.test.ts +0 -70
- package/__tests__/firmware-update/firmware-preparation-error.test.ts +0 -27
- package/__tests__/firmware-update/firmware-update-bootloader-poll.test.ts +0 -200
- package/__tests__/firmware-update/firmware-update-capabilities.test.ts +0 -13
- package/__tests__/firmware-update/firmware-update-plan-bootloader-identity.test.ts +0 -394
- package/__tests__/firmware-update/firmware-update-plan.test.ts +0 -593
- package/__tests__/firmware-update/firmware-update-prepared-plan.test.ts +0 -213
- package/__tests__/firmware-update/firmware-update-v3-reconnect.test.ts +0 -58
- package/__tests__/firmware-update/firmware-upload-source.test.ts +0 -70
- package/dist/api/firmware/FirmwareArtifactSource.d.ts +0 -25
- package/dist/api/firmware/FirmwareArtifactSource.d.ts.map +0 -1
- package/dist/api/firmware/FirmwareHostBinding.d.ts +0 -6
- package/dist/api/firmware/FirmwareHostBinding.d.ts.map +0 -1
- package/dist/api/firmware/FirmwarePreparationError.d.ts +0 -3
- package/dist/api/firmware/FirmwarePreparationError.d.ts.map +0 -1
- package/dist/api/firmware/FirmwareUpdateCapabilities.d.ts +0 -3
- package/dist/api/firmware/FirmwareUpdateCapabilities.d.ts.map +0 -1
- package/dist/api/firmware/FirmwareUpdatePlan.d.ts +0 -25
- package/dist/api/firmware/FirmwareUpdatePlan.d.ts.map +0 -1
- package/dist/api/firmware/FirmwareUpdatePreparedPlan.d.ts +0 -32
- package/dist/api/firmware/FirmwareUpdatePreparedPlan.d.ts.map +0 -1
- package/dist/api/firmware/progressThrottle.d.ts +0 -3
- package/dist/api/firmware/progressThrottle.d.ts.map +0 -1
- package/dist/protocols/protocol-v2/lockedError.d.ts +0 -2
- package/dist/protocols/protocol-v2/lockedError.d.ts.map +0 -1
- package/dist/protocols/protocol-v2/unlockRetry.d.ts +0 -10
- package/dist/protocols/protocol-v2/unlockRetry.d.ts.map +0 -1
- package/dist/types/api/firmwareUpdateCapabilities.d.ts +0 -9
- package/dist/types/api/firmwareUpdateCapabilities.d.ts.map +0 -1
- package/dist/types/api/firmwareUpdatePlan.d.ts +0 -28
- package/dist/types/api/firmwareUpdatePlan.d.ts.map +0 -1
- package/dist/types/api/firmwareUpdatePreparedPlan.d.ts +0 -42
- package/dist/types/api/firmwareUpdatePreparedPlan.d.ts.map +0 -1
- package/src/api/firmware/FirmwareArtifactSource.ts +0 -278
- package/src/api/firmware/FirmwareHostBinding.ts +0 -100
- package/src/api/firmware/FirmwarePreparationError.ts +0 -12
- package/src/api/firmware/FirmwareUpdateCapabilities.ts +0 -9
- package/src/api/firmware/FirmwareUpdatePlan.ts +0 -772
- package/src/api/firmware/FirmwareUpdatePreparedPlan.ts +0 -449
- package/src/api/firmware/progressThrottle.ts +0 -44
- package/src/protocols/protocol-v2/lockedError.ts +0 -10
- package/src/protocols/protocol-v2/unlockRetry.ts +0 -109
- package/src/types/api/firmwareUpdateCapabilities.ts +0 -9
- package/src/types/api/firmwareUpdatePlan.ts +0 -38
- package/src/types/api/firmwareUpdatePreparedPlan.ts +0 -53
|
@@ -14,46 +14,18 @@ import { BaseMethod } from './BaseMethod';
|
|
|
14
14
|
import { validateParams } from './helpers/paramsValidator';
|
|
15
15
|
import { DevicePool } from '../device/DevicePool';
|
|
16
16
|
import { getBinary, getInfo, getSysResourceBinary } from './firmware/getBinary';
|
|
17
|
-
import {
|
|
18
|
-
import {
|
|
19
|
-
updateResources,
|
|
20
|
-
updateResourcesFromSources,
|
|
21
|
-
uploadFirmwareFromSource,
|
|
22
|
-
} from './firmware/uploadFirmware';
|
|
23
|
-
import { BOOTLOADER_POLL_INITIALIZE_TIMEOUT_MS } from './firmware/FirmwareUpdateBaseMethod';
|
|
24
|
-
import { LoggerNames, getDeviceType, getDeviceUUID, getLogger, wait } from '../utils';
|
|
25
|
-
import { resolveDeviceBootloaderMode } from '../utils/deviceFeaturesCompat';
|
|
17
|
+
import { updateResources, uploadFirmware } from './firmware/uploadFirmware';
|
|
18
|
+
import { LoggerNames, getLogger, wait } from '../utils';
|
|
26
19
|
import { FirmwareUpdateTipMessage, createUiMessage } from '../events/ui-request';
|
|
27
20
|
import { DeviceModelToTypes } from '../types';
|
|
28
21
|
import { DataManager } from '../data-manager';
|
|
29
22
|
import { DEVICE } from '../events';
|
|
30
|
-
import { type FirmwareByteSource, openFirmwareByteSource } from './firmware/FirmwareArtifactSource';
|
|
31
|
-
import { resolveFirmwareUpdateHostBinding } from './firmware/FirmwareHostBinding';
|
|
32
|
-
import {
|
|
33
|
-
assertFirmwareUpdatePreparedPlanBinding,
|
|
34
|
-
assertFirmwareUpdatePreparedPlanDeviceIdentity,
|
|
35
|
-
getFirmwareUpdateResourceName,
|
|
36
|
-
} from './firmware/FirmwareUpdatePreparedPlan';
|
|
37
23
|
|
|
38
24
|
import type { Features, KnownDevice } from '../types';
|
|
39
25
|
import type { FirmwareBinary } from './firmware/getBinary';
|
|
40
|
-
import type {
|
|
41
|
-
FirmwareArtifactReader,
|
|
42
|
-
FirmwareArtifactReference,
|
|
43
|
-
} from '../types/api/firmwareUpdate';
|
|
44
|
-
import type { FirmwareUpdatePreparedPlan } from '../types/api/firmwareUpdatePreparedPlan';
|
|
45
26
|
|
|
46
27
|
type Params = {
|
|
47
28
|
binary?: ArrayBuffer;
|
|
48
|
-
artifact?: FirmwareArtifactReference;
|
|
49
|
-
resourceArtifact?: FirmwareArtifactReference;
|
|
50
|
-
resourceEntries?: Array<{
|
|
51
|
-
entryName: string;
|
|
52
|
-
artifact: FirmwareArtifactReference;
|
|
53
|
-
}>;
|
|
54
|
-
artifactReader?: FirmwareArtifactReader;
|
|
55
|
-
preparedPlan?: FirmwareUpdatePreparedPlan;
|
|
56
|
-
platform?: FirmwareUpdatePreparedPlan['platform'];
|
|
57
29
|
version?: number[];
|
|
58
30
|
updateType: 'firmware' | 'ble';
|
|
59
31
|
forcedUpdateRes?: boolean;
|
|
@@ -134,13 +106,6 @@ const normalizeFirmwareBinary = (binary: unknown): FirmwareBinary | undefined =>
|
|
|
134
106
|
return normalized.buffer;
|
|
135
107
|
};
|
|
136
108
|
|
|
137
|
-
const toArrayBuffer = (binary: FirmwareBinary): ArrayBuffer => {
|
|
138
|
-
if (binary instanceof ArrayBuffer) {
|
|
139
|
-
return binary;
|
|
140
|
-
}
|
|
141
|
-
return new Uint8Array(binary.buffer, binary.byteOffset, binary.byteLength).slice().buffer;
|
|
142
|
-
};
|
|
143
|
-
|
|
144
109
|
export default class FirmwareUpdateV2 extends BaseMethod<Params> {
|
|
145
110
|
checkPromise: Deferred<any> | null = null;
|
|
146
111
|
|
|
@@ -187,38 +152,6 @@ export default class FirmwareUpdateV2 extends BaseMethod<Params> {
|
|
|
187
152
|
binary: payload.binary,
|
|
188
153
|
};
|
|
189
154
|
}
|
|
190
|
-
|
|
191
|
-
if ('artifact' in payload) {
|
|
192
|
-
const hostBinding = resolveFirmwareUpdateHostBinding(payload.hostBindingGeneration);
|
|
193
|
-
const target = payload.isUpdateBootloader ? 'bootloader' : payload.updateType;
|
|
194
|
-
const resourceBindings = [
|
|
195
|
-
...(payload.resourceArtifact
|
|
196
|
-
? [{ target: 'resource' as const, artifact: payload.resourceArtifact }]
|
|
197
|
-
: []),
|
|
198
|
-
...(payload.resourceEntries ?? []).map(
|
|
199
|
-
(entry: { entryName: string; artifact: FirmwareArtifactReference }) => ({
|
|
200
|
-
target: 'resource' as const,
|
|
201
|
-
entryName: entry.entryName,
|
|
202
|
-
artifact: entry.artifact,
|
|
203
|
-
})
|
|
204
|
-
),
|
|
205
|
-
];
|
|
206
|
-
assertFirmwareUpdatePreparedPlanBinding({
|
|
207
|
-
preparedPlan: payload.preparedPlan,
|
|
208
|
-
executor: 'v2',
|
|
209
|
-
platform: payload.platform,
|
|
210
|
-
scopeTargets: [target, ...(target === 'firmware' ? (['resource'] as const) : [])],
|
|
211
|
-
bindings: [{ target, artifact: payload.artifact }, ...resourceBindings],
|
|
212
|
-
});
|
|
213
|
-
this.params = {
|
|
214
|
-
...this.params,
|
|
215
|
-
preparedPlan: payload.preparedPlan,
|
|
216
|
-
artifact: payload.artifact,
|
|
217
|
-
resourceArtifact: payload.resourceArtifact,
|
|
218
|
-
resourceEntries: payload.resourceEntries,
|
|
219
|
-
artifactReader: hostBinding.artifactReader,
|
|
220
|
-
};
|
|
221
|
-
}
|
|
222
155
|
}
|
|
223
156
|
|
|
224
157
|
postTipMessage = (message: string) => {
|
|
@@ -254,10 +187,6 @@ export default class FirmwareUpdateV2 extends BaseMethod<Params> {
|
|
|
254
187
|
this.checkPromise = createDeferred();
|
|
255
188
|
const env = DataManager.getSettings('env');
|
|
256
189
|
const isBleReconnect = connectId && DataManager.isBleConnect(env);
|
|
257
|
-
// Tracks the in-flight BLE probe so interval ticks never overlap: a superseded
|
|
258
|
-
// Initialize left pending on the V1 transport is exactly what later times out
|
|
259
|
-
// and used to tear down the connection mid-firmware-upload.
|
|
260
|
-
let bleProbeInFlight = false;
|
|
261
190
|
|
|
262
191
|
Log.log('FirmwareUpdateV2 [checkDeviceToBootloader] isBleReconnect: ', isBleReconnect);
|
|
263
192
|
|
|
@@ -305,18 +234,14 @@ export default class FirmwareUpdateV2 extends BaseMethod<Params> {
|
|
|
305
234
|
}
|
|
306
235
|
|
|
307
236
|
if (isBleReconnect) {
|
|
308
|
-
if (bleProbeInFlight) return;
|
|
309
|
-
bleProbeInFlight = true;
|
|
310
237
|
try {
|
|
311
238
|
await this.device.deviceConnector?.acquire(
|
|
312
239
|
this.device.originalDescriptor.id,
|
|
313
240
|
null,
|
|
314
|
-
true
|
|
241
|
+
true,
|
|
242
|
+
this.payload.connectProtocol ?? this.device.originalDescriptor.protocolType
|
|
315
243
|
);
|
|
316
|
-
|
|
317
|
-
// frees the slot for the next tick instead of hanging into the
|
|
318
|
-
// 30s reboot budget.
|
|
319
|
-
await this.device.initialize({ timeoutMs: BOOTLOADER_POLL_INITIALIZE_TIMEOUT_MS });
|
|
244
|
+
await this.device.initialize();
|
|
320
245
|
if (this.device.isBootloader()) {
|
|
321
246
|
clearInterval(intervalTimer);
|
|
322
247
|
this.checkPromise?.resolve(true);
|
|
@@ -324,8 +249,6 @@ export default class FirmwareUpdateV2 extends BaseMethod<Params> {
|
|
|
324
249
|
} catch (e) {
|
|
325
250
|
// ignore error because of device is not connected
|
|
326
251
|
Log.log('catch Bluetooth error when device is restarting: ', e);
|
|
327
|
-
} finally {
|
|
328
|
-
bleProbeInFlight = false;
|
|
329
252
|
}
|
|
330
253
|
} else {
|
|
331
254
|
await this._checkDeviceInBootloaderMode(connectId, intervalTimer, timeoutTimer);
|
|
@@ -350,7 +273,9 @@ export default class FirmwareUpdateV2 extends BaseMethod<Params> {
|
|
|
350
273
|
) {
|
|
351
274
|
const deviceDiff = await this.device.deviceConnector?.enumerate();
|
|
352
275
|
const devicesDescriptor = deviceDiff?.descriptors ?? [];
|
|
353
|
-
const { deviceList } = await DevicePool.getDevices(devicesDescriptor, connectId
|
|
276
|
+
const { deviceList } = await DevicePool.getDevices(devicesDescriptor, connectId, {
|
|
277
|
+
connectProtocol: this.payload.connectProtocol ?? this.device.originalDescriptor.protocolType,
|
|
278
|
+
});
|
|
354
279
|
|
|
355
280
|
if (deviceList.length === 1 && deviceList[0]?.isBootloader()) {
|
|
356
281
|
// should update current device from cache
|
|
@@ -419,266 +344,151 @@ export default class FirmwareUpdateV2 extends BaseMethod<Params> {
|
|
|
419
344
|
const { features, commands } = device;
|
|
420
345
|
const deviceType = device.getCurrentDeviceType();
|
|
421
346
|
|
|
422
|
-
// Protocol V2 (Pro2) uses DeviceFirmwareUpdate and must not enter this legacy flow.
|
|
423
|
-
if (device.isProtocolV2()) {
|
|
424
|
-
throw ERRORS.TypedError(
|
|
425
|
-
HardwareErrorCode.RuntimeError,
|
|
426
|
-
'Protocol V2 firmware update must use firmwareUpdateV4'
|
|
427
|
-
);
|
|
428
|
-
}
|
|
429
|
-
if (params.preparedPlan) {
|
|
430
|
-
assertFirmwareUpdatePreparedPlanDeviceIdentity({
|
|
431
|
-
preparedPlan: params.preparedPlan,
|
|
432
|
-
deviceIdentity: getDeviceUUID(features) || undefined,
|
|
433
|
-
bootloaderMode: resolveDeviceBootloaderMode(features),
|
|
434
|
-
deviceModel: String(getDeviceType(features)),
|
|
435
|
-
});
|
|
436
|
-
}
|
|
437
|
-
|
|
438
347
|
const deviceFirmwareType = device.getCurrentFirmwareType();
|
|
439
348
|
const firmwareType = params.firmwareType ?? deviceFirmwareType;
|
|
440
349
|
|
|
441
350
|
this.checkVersionForCopyTouchResource(features, firmwareType);
|
|
442
351
|
|
|
443
|
-
let
|
|
444
|
-
|
|
445
|
-
|
|
446
|
-
|
|
447
|
-
|
|
448
|
-
|
|
449
|
-
}
|
|
352
|
+
let preparedBinary: FirmwareBinary | undefined;
|
|
353
|
+
const acquireFirmwareBinary = async (): Promise<FirmwareBinary> => {
|
|
354
|
+
try {
|
|
355
|
+
if (preparedBinary) {
|
|
356
|
+
return preparedBinary;
|
|
357
|
+
}
|
|
450
358
|
|
|
451
|
-
|
|
452
|
-
|
|
453
|
-
|
|
454
|
-
|
|
455
|
-
}
|
|
456
|
-
const source = await openFirmwareByteSource({
|
|
457
|
-
binary: toArrayBuffer(binary),
|
|
458
|
-
});
|
|
459
|
-
if (!source) {
|
|
460
|
-
throw new Error('firmware binary is empty or invalid');
|
|
461
|
-
}
|
|
462
|
-
preparedSource = source;
|
|
463
|
-
return source;
|
|
359
|
+
if (params.binary !== undefined) {
|
|
360
|
+
preparedBinary = normalizeFirmwareBinary(params.binary);
|
|
361
|
+
if (!preparedBinary) {
|
|
362
|
+
throw new Error('firmware binary is empty or invalid');
|
|
464
363
|
}
|
|
364
|
+
return preparedBinary;
|
|
365
|
+
}
|
|
465
366
|
|
|
466
|
-
|
|
467
|
-
|
|
468
|
-
|
|
469
|
-
|
|
470
|
-
|
|
471
|
-
|
|
472
|
-
throw new Error('firmware artifact is not prepared');
|
|
473
|
-
}
|
|
474
|
-
preparedSource = source;
|
|
475
|
-
return source;
|
|
476
|
-
}
|
|
367
|
+
if (!device.features) {
|
|
368
|
+
throw ERRORS.TypedError(
|
|
369
|
+
HardwareErrorCode.RuntimeError,
|
|
370
|
+
'no features found for this device'
|
|
371
|
+
);
|
|
372
|
+
}
|
|
477
373
|
|
|
478
|
-
|
|
479
|
-
|
|
480
|
-
|
|
481
|
-
|
|
482
|
-
|
|
483
|
-
|
|
374
|
+
this.postTipMessage('DownloadFirmware');
|
|
375
|
+
const firmware = await getBinary({
|
|
376
|
+
features: device.features,
|
|
377
|
+
version: params.version,
|
|
378
|
+
updateType: params.updateType,
|
|
379
|
+
isUpdateBootloader: params.isUpdateBootloader,
|
|
380
|
+
firmwareType,
|
|
381
|
+
requestOptions: FIRMWARE_DOWNLOAD_REQUEST_OPTIONS,
|
|
382
|
+
});
|
|
383
|
+
preparedBinary = normalizeFirmwareBinary(firmware.binary);
|
|
384
|
+
if (!preparedBinary) {
|
|
385
|
+
throw new Error('downloaded firmware binary is empty or invalid');
|
|
386
|
+
}
|
|
387
|
+
this.postTipMessage('DownloadFirmwareSuccess');
|
|
388
|
+
return preparedBinary;
|
|
389
|
+
} catch (err) {
|
|
390
|
+
throw ERRORS.TypedError(HardwareErrorCode.FirmwareUpdateDownloadFailed, err.message ?? err);
|
|
391
|
+
}
|
|
392
|
+
};
|
|
484
393
|
|
|
485
|
-
|
|
486
|
-
|
|
487
|
-
|
|
488
|
-
|
|
489
|
-
|
|
490
|
-
|
|
491
|
-
'Firmware must be prepared by the external firmware host',
|
|
492
|
-
{
|
|
493
|
-
firmwareUpdateCode: 'FirmwareArtifactsNotPrepared',
|
|
494
|
-
artifactName: 'firmware',
|
|
495
|
-
}
|
|
496
|
-
);
|
|
497
|
-
}
|
|
394
|
+
if (!device.isBootloader() && features) {
|
|
395
|
+
const serialNo = device.getCurrentSerialNo();
|
|
396
|
+
// should go to bootloader mode manually
|
|
397
|
+
if (this.isEnteredManuallyBoot()) {
|
|
398
|
+
return Promise.reject(ERRORS.TypedError(HardwareErrorCode.FirmwareUpdateManuallyEnterBoot));
|
|
399
|
+
}
|
|
498
400
|
|
|
499
|
-
|
|
500
|
-
|
|
501
|
-
|
|
502
|
-
|
|
503
|
-
|
|
504
|
-
|
|
505
|
-
|
|
506
|
-
|
|
507
|
-
|
|
508
|
-
|
|
509
|
-
|
|
510
|
-
|
|
511
|
-
|
|
512
|
-
|
|
513
|
-
|
|
514
|
-
|
|
515
|
-
|
|
516
|
-
|
|
401
|
+
// check & upgrade firmware resource
|
|
402
|
+
if (this.isSupportResourceUpdate(params.updateType)) {
|
|
403
|
+
this.postTipMessage('CheckLatestUiResource');
|
|
404
|
+
const resourceUrl = DataManager.getSysResourcesLatestRelease({
|
|
405
|
+
features,
|
|
406
|
+
forcedUpdateRes: params.forcedUpdateRes,
|
|
407
|
+
firmwareType,
|
|
408
|
+
});
|
|
409
|
+
if (resourceUrl) {
|
|
410
|
+
this.postTipMessage('DownloadLatestUiResource');
|
|
411
|
+
const resource = await getSysResourceBinary(resourceUrl);
|
|
412
|
+
this.postTipMessage('DownloadLatestUiResourceSuccess');
|
|
413
|
+
if (resource) {
|
|
414
|
+
await updateResources(
|
|
415
|
+
this.device.getCommands().typedCall.bind(this.device.getCommands()),
|
|
416
|
+
this.postMessage,
|
|
417
|
+
device,
|
|
418
|
+
resource.binary
|
|
419
|
+
);
|
|
517
420
|
}
|
|
518
|
-
preparedSource = source;
|
|
519
|
-
this.postTipMessage('DownloadFirmwareSuccess');
|
|
520
|
-
return source;
|
|
521
|
-
} catch (err) {
|
|
522
|
-
throw normalizeFirmwarePreparationError(err);
|
|
523
421
|
}
|
|
524
|
-
}
|
|
422
|
+
}
|
|
525
423
|
|
|
526
|
-
if
|
|
527
|
-
|
|
528
|
-
|
|
529
|
-
|
|
530
|
-
|
|
424
|
+
// check if the device commands has been disposed
|
|
425
|
+
this.device?.commands?.checkDisposed();
|
|
426
|
+
|
|
427
|
+
// A failed firmware download must leave the device in normal mode.
|
|
428
|
+
await acquireFirmwareBinary();
|
|
429
|
+
|
|
430
|
+
// The request may outlive the current transport command instance.
|
|
431
|
+
this.device?.commands?.checkDisposed();
|
|
432
|
+
|
|
433
|
+
// auto go to bootloader mode
|
|
434
|
+
try {
|
|
435
|
+
this.postTipMessage('AutoRebootToBootloader');
|
|
436
|
+
const bootRes = await commands.typedCall('DeviceBackToBoot', 'Success');
|
|
437
|
+
// @ts-expect-error
|
|
438
|
+
if (bootRes.type === 'CallMethodError') {
|
|
439
|
+
throw ERRORS.TypedError(HardwareErrorCode.FirmwareUpdateAutoEnterBootFailure);
|
|
531
440
|
}
|
|
441
|
+
this.postTipMessage('GoToBootloaderSuccess');
|
|
442
|
+
this.checkDeviceToBootloader(this.payload.connectId);
|
|
532
443
|
|
|
533
|
-
//
|
|
534
|
-
|
|
535
|
-
|
|
536
|
-
// check & upgrade firmware resource
|
|
537
|
-
if (this.isSupportResourceUpdate(params.updateType)) {
|
|
538
|
-
this.postTipMessage('CheckLatestUiResource');
|
|
539
|
-
const resourceUrl = DataManager.getSysResourcesLatestRelease({
|
|
540
|
-
features,
|
|
541
|
-
forcedUpdateRes: params.forcedUpdateRes,
|
|
542
|
-
firmwareType,
|
|
543
|
-
});
|
|
544
|
-
if (resourceUrl) {
|
|
545
|
-
this.postTipMessage('DownloadLatestUiResource');
|
|
546
|
-
if (params.resourceEntries?.length) {
|
|
547
|
-
const sources: Array<{
|
|
548
|
-
entryName: string;
|
|
549
|
-
source: FirmwareByteSource;
|
|
550
|
-
}> = [];
|
|
551
|
-
try {
|
|
552
|
-
for (const entry of params.resourceEntries) {
|
|
553
|
-
const resourceName = getFirmwareUpdateResourceName(entry.entryName);
|
|
554
|
-
const source = await openFirmwareByteSource({
|
|
555
|
-
artifact: entry.artifact,
|
|
556
|
-
reader: params.artifactReader,
|
|
557
|
-
});
|
|
558
|
-
if (!source) {
|
|
559
|
-
throw new Error('Firmware resource entry is not prepared');
|
|
560
|
-
}
|
|
561
|
-
sources.push({ entryName: resourceName, source });
|
|
562
|
-
}
|
|
563
|
-
await updateResourcesFromSources(
|
|
564
|
-
this.device.getCommands().typedCall.bind(this.device.getCommands()),
|
|
565
|
-
this.postMessage,
|
|
566
|
-
device,
|
|
567
|
-
sources.map(entry => ({
|
|
568
|
-
entryName: entry.entryName,
|
|
569
|
-
source: entry.source,
|
|
570
|
-
}))
|
|
571
|
-
);
|
|
572
|
-
} finally {
|
|
573
|
-
await Promise.all(
|
|
574
|
-
sources.map(entry => entry.source.close().catch(() => undefined))
|
|
575
|
-
);
|
|
576
|
-
}
|
|
577
|
-
this.postTipMessage('DownloadLatestUiResourceSuccess');
|
|
578
|
-
} else {
|
|
579
|
-
let resourceBinary: ArrayBuffer | Buffer;
|
|
580
|
-
if (params.resourceArtifact) {
|
|
581
|
-
throw ERRORS.TypedError(
|
|
582
|
-
HardwareErrorCode.RuntimeError,
|
|
583
|
-
'Firmware resource archive must be materialized into prepared entries',
|
|
584
|
-
{
|
|
585
|
-
firmwareUpdateCode: 'FirmwareArtifactsNotPrepared',
|
|
586
|
-
artifactName: 'resource',
|
|
587
|
-
}
|
|
588
|
-
);
|
|
589
|
-
} else {
|
|
590
|
-
if (
|
|
591
|
-
params.artifactReader ||
|
|
592
|
-
DataManager.getSettings('firmwareManifestMode') === 'external-only'
|
|
593
|
-
) {
|
|
594
|
-
throw ERRORS.TypedError(
|
|
595
|
-
HardwareErrorCode.RuntimeError,
|
|
596
|
-
'Firmware resource must be prepared by the external firmware host',
|
|
597
|
-
{
|
|
598
|
-
firmwareUpdateCode: 'FirmwareArtifactsNotPrepared',
|
|
599
|
-
artifactName: 'resource',
|
|
600
|
-
}
|
|
601
|
-
);
|
|
602
|
-
}
|
|
603
|
-
resourceBinary = (await getSysResourceBinary(resourceUrl)).binary;
|
|
604
|
-
}
|
|
605
|
-
this.postTipMessage('DownloadLatestUiResourceSuccess');
|
|
606
|
-
await updateResources(
|
|
607
|
-
this.device.getCommands().typedCall.bind(this.device.getCommands()),
|
|
608
|
-
this.postMessage,
|
|
609
|
-
device,
|
|
610
|
-
resourceBinary
|
|
611
|
-
);
|
|
612
|
-
}
|
|
613
|
-
}
|
|
444
|
+
// force clean classic device cache so that the device can initialize again
|
|
445
|
+
if (DeviceModelToTypes.model_classic.includes(deviceType)) {
|
|
446
|
+
DevicePool.clearDeviceCache(serialNo);
|
|
614
447
|
}
|
|
448
|
+
delete DevicePool.devicesCache[''];
|
|
449
|
+
await this.checkPromise?.promise;
|
|
450
|
+
this.checkPromise = null;
|
|
615
451
|
|
|
616
|
-
//
|
|
452
|
+
// check if the device commands has been disposed
|
|
617
453
|
this.device?.commands?.checkDisposed();
|
|
618
454
|
|
|
619
|
-
|
|
620
|
-
|
|
621
|
-
|
|
622
|
-
|
|
623
|
-
|
|
624
|
-
|
|
625
|
-
|
|
626
|
-
|
|
627
|
-
this.postTipMessage('GoToBootloaderSuccess');
|
|
628
|
-
this.checkDeviceToBootloader(this.payload.connectId);
|
|
629
|
-
|
|
630
|
-
// force clean classic device cache so that the device can initialize again
|
|
631
|
-
if (DeviceModelToTypes.model_classic.includes(deviceType)) {
|
|
632
|
-
DevicePool.clearDeviceCache(serialNo);
|
|
633
|
-
}
|
|
634
|
-
delete DevicePool.devicesCache[''];
|
|
635
|
-
await this.checkPromise?.promise;
|
|
636
|
-
this.checkPromise = null;
|
|
637
|
-
|
|
638
|
-
// check if the device commands has been disposed
|
|
639
|
-
this.device?.commands?.checkDisposed();
|
|
640
|
-
|
|
641
|
-
/**
|
|
642
|
-
* Touch 1 with bootloader v2.5.0 issue: BLE chip need more time for looking up name, here change the delay time to 3000ms after rebooting.
|
|
643
|
-
*/
|
|
644
|
-
const isTouch = DeviceModelToTypes.model_touch.includes(deviceType);
|
|
645
|
-
await wait(isTouch ? 3000 : 1500);
|
|
646
|
-
} catch (e) {
|
|
647
|
-
if (e instanceof HardwareError) {
|
|
648
|
-
return Promise.reject(e);
|
|
649
|
-
}
|
|
650
|
-
console.log('auto go to bootloader mode failed: ', e);
|
|
651
|
-
return Promise.reject(
|
|
652
|
-
ERRORS.TypedError(HardwareErrorCode.FirmwareUpdateAutoEnterBootFailure)
|
|
653
|
-
);
|
|
455
|
+
/**
|
|
456
|
+
* Touch 1 with bootloader v2.5.0 issue: BLE chip need more time for looking up name, here change the delay time to 3000ms after rebooting.
|
|
457
|
+
*/
|
|
458
|
+
const isTouch = DeviceModelToTypes.model_touch.includes(deviceType);
|
|
459
|
+
await wait(isTouch ? 3000 : 1500);
|
|
460
|
+
} catch (e) {
|
|
461
|
+
if (e instanceof HardwareError) {
|
|
462
|
+
return Promise.reject(e);
|
|
654
463
|
}
|
|
464
|
+
console.log('auto go to bootloader mode failed: ', e);
|
|
465
|
+
return Promise.reject(
|
|
466
|
+
ERRORS.TypedError(HardwareErrorCode.FirmwareUpdateAutoEnterBootFailure)
|
|
467
|
+
);
|
|
655
468
|
}
|
|
469
|
+
}
|
|
656
470
|
|
|
657
|
-
|
|
658
|
-
|
|
659
|
-
|
|
660
|
-
// check if the device commands has been disposed
|
|
661
|
-
this.device?.commands?.checkDisposed();
|
|
471
|
+
// Devices already in bootloader mode still acquire through the same helper.
|
|
472
|
+
const binary = await acquireFirmwareBinary();
|
|
662
473
|
|
|
663
|
-
|
|
474
|
+
// check if the device commands has been disposed
|
|
475
|
+
this.device?.commands?.checkDisposed();
|
|
664
476
|
|
|
665
|
-
|
|
666
|
-
params.updateType,
|
|
667
|
-
this.device.getCommands().typedCall.bind(this.device.getCommands()),
|
|
668
|
-
this.postMessage,
|
|
669
|
-
device,
|
|
670
|
-
source,
|
|
671
|
-
true,
|
|
672
|
-
params.isUpdateBootloader
|
|
673
|
-
);
|
|
477
|
+
await this.device.acquire();
|
|
674
478
|
|
|
675
|
-
|
|
676
|
-
|
|
677
|
-
|
|
479
|
+
const response = await uploadFirmware(
|
|
480
|
+
params.updateType,
|
|
481
|
+
this.device.getCommands().typedCall.bind(this.device.getCommands()),
|
|
482
|
+
this.postMessage,
|
|
483
|
+
device,
|
|
484
|
+
{ payload: binary, rebootOnSuccess: true },
|
|
485
|
+
params.isUpdateBootloader
|
|
486
|
+
);
|
|
678
487
|
|
|
679
|
-
|
|
680
|
-
|
|
681
|
-
await preparedSource?.close().catch(() => undefined);
|
|
488
|
+
if (this.connectId) {
|
|
489
|
+
DevicePool.clearDeviceCache(this.connectId);
|
|
682
490
|
}
|
|
491
|
+
|
|
492
|
+
return response;
|
|
683
493
|
}
|
|
684
494
|
}
|