@onekeyfe/hd-core 1.2.0-alpha.4 → 1.2.0-alpha.40
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 +155 -0
- package/__tests__/DeviceCommands.test.ts +517 -0
- package/__tests__/DeviceEventRegistration.test.ts +49 -0
- package/__tests__/chain-params-onekey-compatibility.test.ts +229 -0
- package/__tests__/check-all-firmware-release-protocol-v2.test.ts +282 -0
- package/__tests__/connectSettings.test.ts +19 -0
- package/__tests__/core-dispose.test.ts +34 -0
- package/__tests__/core-error-output.test.ts +39 -0
- package/__tests__/device-features-state.test.ts +78 -0
- package/__tests__/device-identity.test.ts +52 -0
- package/__tests__/device-lifecycle-events.test.ts +249 -0
- package/__tests__/device-pool-state.test.ts +144 -0
- package/__tests__/device-settings.test.ts +416 -0
- package/__tests__/device-state-contract.test.ts +27 -0
- package/__tests__/device-state-events.test.ts +286 -0
- package/__tests__/device-state-mapper.test.ts +261 -0
- package/__tests__/device-state-projector.test.ts +94 -0
- package/__tests__/device-state-store.test.ts +82 -0
- package/__tests__/device-utils.test.ts +107 -0
- package/__tests__/device-wallet-session-store.test.ts +478 -0
- package/__tests__/deviceFeaturesUtils.test.ts +39 -0
- package/__tests__/deviceSettings.test.ts +103 -0
- package/__tests__/deviceUploadNft.test.ts +187 -0
- package/__tests__/evmLedgerLegacySafety.test.ts +12 -6
- package/__tests__/evmSignTransaction.test.ts +69 -0
- package/__tests__/evmSignTypedData.test.ts +80 -0
- package/__tests__/filesystemValidation.test.ts +53 -0
- package/__tests__/firmware-update/firmware-update-v2-download-before-boot.test.ts +402 -0
- package/__tests__/get-device-state.test.ts +578 -0
- package/__tests__/homescreen.test.ts +64 -0
- package/__tests__/kaspa-public-types.type-test.ts +16 -0
- package/__tests__/kaspa-use-tweak-pro2.test.ts +20 -0
- package/__tests__/kaspaSignTransaction.test.ts +601 -0
- package/__tests__/known-device-public-types.type-test.ts +3 -0
- package/__tests__/logBlockEvent.test.ts +128 -1
- package/__tests__/method-protocol-support.test.ts +113 -0
- package/__tests__/networkUtils.test.ts +406 -0
- package/__tests__/open-wallet-session-error-response.test.ts +43 -0
- package/__tests__/open-wallet-session.test.ts +1609 -0
- package/__tests__/pro2Nft.test.ts +108 -0
- package/__tests__/pro2Wallpaper.test.ts +39 -0
- package/__tests__/protocol-v2-bootloader-mode.test.ts +37 -0
- package/__tests__/protocol-v2-firmware-targets.test.ts +37 -0
- package/__tests__/protocol-v2-ping.test.ts +28 -0
- package/__tests__/protocol-v2-ui-lifecycle.test.ts +56 -0
- package/__tests__/protocol-v2-unlock-policy.test.ts +96 -0
- package/__tests__/protocol-v2.test.ts +5748 -2387
- package/__tests__/protocolV2FileWrite.test.ts +92 -0
- package/__tests__/protocolV2UiInteraction.test.ts +266 -0
- package/__tests__/public-device-state-api.test.ts +275 -0
- package/__tests__/public-pro2-api-boundary.test.ts +107 -0
- package/__tests__/refresh-device-state.test.ts +101 -0
- package/__tests__/request-context-logging.test.ts +16 -0
- package/__tests__/search-devices.test.ts +136 -0
- package/__tests__/tron-sign-message-init.test.ts +74 -0
- package/__tests__/uiProgressThrottle.test.ts +74 -0
- package/dist/api/BaseMethod.d.ts +16 -1
- package/dist/api/BaseMethod.d.ts.map +1 -1
- package/dist/api/CheckAllFirmwareRelease.d.ts +24 -1
- package/dist/api/CheckAllFirmwareRelease.d.ts.map +1 -1
- package/dist/api/CheckBootloaderRelease.d.ts.map +1 -1
- package/dist/api/CheckFirmwareRelease.d.ts.map +1 -1
- package/dist/api/CipherKeyValue.d.ts +1 -0
- package/dist/api/CipherKeyValue.d.ts.map +1 -1
- package/dist/api/ClearSessionCache.d.ts +9 -0
- package/dist/api/ClearSessionCache.d.ts.map +1 -0
- package/dist/api/DirList.d.ts +1 -0
- package/dist/api/DirList.d.ts.map +1 -1
- package/dist/api/DirMake.d.ts +1 -0
- package/dist/api/DirMake.d.ts.map +1 -1
- package/dist/api/DirRemove.d.ts +1 -0
- package/dist/api/DirRemove.d.ts.map +1 -1
- package/dist/api/FileDelete.d.ts +1 -0
- package/dist/api/FileDelete.d.ts.map +1 -1
- package/dist/api/FileRead.d.ts +1 -0
- package/dist/api/FileRead.d.ts.map +1 -1
- package/dist/api/FileWrite.d.ts +2 -0
- package/dist/api/FileWrite.d.ts.map +1 -1
- package/dist/api/FirmwareUpdate.d.ts.map +1 -1
- package/dist/api/FirmwareUpdateV2.d.ts +2 -2
- package/dist/api/FirmwareUpdateV2.d.ts.map +1 -1
- package/dist/api/FirmwareUpdateV3.d.ts.map +1 -1
- package/dist/api/FirmwareUpdateV4.d.ts +23 -14
- package/dist/api/FirmwareUpdateV4.d.ts.map +1 -1
- package/dist/api/GetDeviceState.d.ts +8 -0
- package/dist/api/GetDeviceState.d.ts.map +1 -0
- package/dist/api/GetFeatures.d.ts +1 -1
- package/dist/api/GetFeatures.d.ts.map +1 -1
- package/dist/api/GetOnekeyFeatures.d.ts.map +1 -1
- package/dist/api/GetPassphraseState.d.ts +2 -6
- package/dist/api/GetPassphraseState.d.ts.map +1 -1
- package/dist/api/OpenWalletSession.d.ts +8 -0
- package/dist/api/OpenWalletSession.d.ts.map +1 -0
- package/dist/api/PathInfo.d.ts +1 -0
- package/dist/api/PathInfo.d.ts.map +1 -1
- package/dist/api/PromptWebDeviceAccess.d.ts.map +1 -1
- package/dist/api/SearchDevices.d.ts +3 -0
- package/dist/api/SearchDevices.d.ts.map +1 -1
- package/dist/api/UploadPortfolio.d.ts +17 -0
- package/dist/api/UploadPortfolio.d.ts.map +1 -0
- package/dist/api/alephium/AlephiumGetAddress.d.ts.map +1 -1
- package/dist/api/alephium/AlephiumSignMessage.d.ts.map +1 -1
- package/dist/api/alephium/AlephiumSignTransaction.d.ts.map +1 -1
- package/dist/api/algo/AlgoGetAddress.d.ts +1 -0
- package/dist/api/algo/AlgoGetAddress.d.ts.map +1 -1
- package/dist/api/algo/AlgoSignTransaction.d.ts +1 -0
- package/dist/api/algo/AlgoSignTransaction.d.ts.map +1 -1
- package/dist/api/allnetwork/AllNetworkGetAddressBase.d.ts +1 -0
- package/dist/api/allnetwork/AllNetworkGetAddressBase.d.ts.map +1 -1
- package/dist/api/aptos/AptosGetAddress.d.ts +1 -0
- package/dist/api/aptos/AptosGetAddress.d.ts.map +1 -1
- package/dist/api/aptos/AptosGetPublicKey.d.ts +1 -0
- package/dist/api/aptos/AptosGetPublicKey.d.ts.map +1 -1
- package/dist/api/aptos/AptosSignInMessage.d.ts +1 -0
- package/dist/api/aptos/AptosSignInMessage.d.ts.map +1 -1
- package/dist/api/aptos/AptosSignMessage.d.ts +1 -0
- package/dist/api/aptos/AptosSignMessage.d.ts.map +1 -1
- package/dist/api/aptos/AptosSignTransaction.d.ts +1 -0
- package/dist/api/aptos/AptosSignTransaction.d.ts.map +1 -1
- package/dist/api/benfen/BenfenGetAddress.d.ts.map +1 -1
- package/dist/api/benfen/BenfenGetPublicKey.d.ts.map +1 -1
- package/dist/api/benfen/BenfenSignMessage.d.ts.map +1 -1
- package/dist/api/benfen/BenfenSignTransaction.d.ts.map +1 -1
- package/dist/api/btc/BTCGetAddress.d.ts +1 -0
- package/dist/api/btc/BTCGetAddress.d.ts.map +1 -1
- package/dist/api/btc/BTCGetPublicKey.d.ts +1 -0
- package/dist/api/btc/BTCGetPublicKey.d.ts.map +1 -1
- package/dist/api/btc/BTCSignMessage.d.ts +1 -0
- package/dist/api/btc/BTCSignMessage.d.ts.map +1 -1
- package/dist/api/btc/BTCSignPsbt.d.ts +1 -0
- package/dist/api/btc/BTCSignPsbt.d.ts.map +1 -1
- package/dist/api/btc/BTCSignTransaction.d.ts +1 -0
- package/dist/api/btc/BTCSignTransaction.d.ts.map +1 -1
- package/dist/api/btc/BTCVerifyMessage.d.ts +1 -0
- package/dist/api/btc/BTCVerifyMessage.d.ts.map +1 -1
- package/dist/api/btc/helpers/versionLimit.d.ts +2 -0
- package/dist/api/btc/helpers/versionLimit.d.ts.map +1 -1
- package/dist/api/cardano/CardanoGetAddress.d.ts +1 -0
- package/dist/api/cardano/CardanoGetAddress.d.ts.map +1 -1
- package/dist/api/cardano/CardanoGetPublicKey.d.ts +1 -0
- package/dist/api/cardano/CardanoGetPublicKey.d.ts.map +1 -1
- package/dist/api/cardano/CardanoSignMessage.d.ts +1 -0
- package/dist/api/cardano/CardanoSignMessage.d.ts.map +1 -1
- package/dist/api/cardano/CardanoSignTransaction.d.ts +1 -0
- package/dist/api/cardano/CardanoSignTransaction.d.ts.map +1 -1
- package/dist/api/conflux/ConfluxGetAddress.d.ts +2 -0
- package/dist/api/conflux/ConfluxGetAddress.d.ts.map +1 -1
- package/dist/api/conflux/ConfluxSignMessage.d.ts +2 -0
- package/dist/api/conflux/ConfluxSignMessage.d.ts.map +1 -1
- package/dist/api/conflux/ConfluxSignMessageCIP23.d.ts +2 -0
- package/dist/api/conflux/ConfluxSignMessageCIP23.d.ts.map +1 -1
- package/dist/api/conflux/ConfluxSignTransaction.d.ts +2 -0
- package/dist/api/conflux/ConfluxSignTransaction.d.ts.map +1 -1
- package/dist/api/cosmos/CosmosGetAddress.d.ts +1 -0
- package/dist/api/cosmos/CosmosGetAddress.d.ts.map +1 -1
- package/dist/api/cosmos/CosmosGetPublicKey.d.ts +1 -0
- package/dist/api/cosmos/CosmosGetPublicKey.d.ts.map +1 -1
- package/dist/api/cosmos/CosmosSignTransaction.d.ts +1 -0
- package/dist/api/cosmos/CosmosSignTransaction.d.ts.map +1 -1
- package/dist/api/device/DeviceCancel.d.ts +1 -0
- package/dist/api/device/DeviceCancel.d.ts.map +1 -1
- package/dist/api/device/DeviceChangePin.d.ts +1 -0
- package/dist/api/device/DeviceChangePin.d.ts.map +1 -1
- package/dist/api/device/DeviceFullyUploadResource.d.ts +1 -2
- package/dist/api/device/DeviceFullyUploadResource.d.ts.map +1 -1
- package/dist/api/device/DeviceLock.d.ts +1 -0
- package/dist/api/device/DeviceLock.d.ts.map +1 -1
- package/dist/api/device/DeviceRebootToBoardloader.d.ts +1 -0
- package/dist/api/device/DeviceRebootToBoardloader.d.ts.map +1 -1
- package/dist/api/device/DeviceRebootToBootloader.d.ts +1 -0
- package/dist/api/device/DeviceRebootToBootloader.d.ts.map +1 -1
- package/dist/api/device/DeviceSettings.d.ts +1 -0
- package/dist/api/device/DeviceSettings.d.ts.map +1 -1
- package/dist/api/device/DeviceSupportFeatures.d.ts +1 -0
- package/dist/api/device/DeviceSupportFeatures.d.ts.map +1 -1
- package/dist/api/device/DeviceUnlock.d.ts +1 -0
- package/dist/api/device/DeviceUnlock.d.ts.map +1 -1
- package/dist/api/device/DeviceUpdateBootloader.d.ts.map +1 -1
- package/dist/api/device/DeviceWipe.d.ts +1 -0
- package/dist/api/device/DeviceWipe.d.ts.map +1 -1
- package/dist/api/device/PreInitialize.d.ts +1 -0
- package/dist/api/device/PreInitialize.d.ts.map +1 -1
- package/dist/api/dynex/DnxGetAddress.d.ts.map +1 -1
- package/dist/api/dynex/DnxSignTransaction.d.ts.map +1 -1
- package/dist/api/evm/EVMGetAddress.d.ts +1 -0
- package/dist/api/evm/EVMGetAddress.d.ts.map +1 -1
- package/dist/api/evm/EVMGetPublicKey.d.ts +1 -0
- package/dist/api/evm/EVMGetPublicKey.d.ts.map +1 -1
- package/dist/api/evm/EVMSignMessage.d.ts +1 -0
- package/dist/api/evm/EVMSignMessage.d.ts.map +1 -1
- package/dist/api/evm/EVMSignMessageEIP712.d.ts.map +1 -1
- package/dist/api/evm/EVMSignTransaction.d.ts +1 -0
- package/dist/api/evm/EVMSignTransaction.d.ts.map +1 -1
- package/dist/api/evm/EVMSignTypedData.d.ts +1 -0
- package/dist/api/evm/EVMSignTypedData.d.ts.map +1 -1
- package/dist/api/evm/EVMVerifyMessage.d.ts +1 -0
- package/dist/api/evm/EVMVerifyMessage.d.ts.map +1 -1
- package/dist/api/evm/protocol.d.ts +3 -0
- package/dist/api/evm/protocol.d.ts.map +1 -0
- package/dist/api/filecoin/FilecoinGetAddress.d.ts +1 -0
- package/dist/api/filecoin/FilecoinGetAddress.d.ts.map +1 -1
- package/dist/api/filecoin/FilecoinSignTransaction.d.ts +1 -0
- package/dist/api/filecoin/FilecoinSignTransaction.d.ts.map +1 -1
- package/dist/api/firmware/getBinary.d.ts +8 -4
- package/dist/api/firmware/getBinary.d.ts.map +1 -1
- package/dist/api/helpers/filesystemValidation.d.ts +3 -0
- package/dist/api/helpers/filesystemValidation.d.ts.map +1 -1
- package/dist/api/helpers/paramsValidator.d.ts +1 -0
- package/dist/api/helpers/paramsValidator.d.ts.map +1 -1
- package/dist/api/helpers/protocolV2FileWrite.d.ts +35 -0
- package/dist/api/helpers/protocolV2FileWrite.d.ts.map +1 -0
- package/dist/api/index.d.ts +8 -25
- package/dist/api/index.d.ts.map +1 -1
- package/dist/api/kaspa/KaspaGetAddress.d.ts +4 -0
- package/dist/api/kaspa/KaspaGetAddress.d.ts.map +1 -1
- package/dist/api/kaspa/KaspaSignTransaction.d.ts +9 -1
- package/dist/api/kaspa/KaspaSignTransaction.d.ts.map +1 -1
- package/dist/api/kaspa/helpers/TransferSerialize.d.ts.map +1 -1
- package/dist/api/lightning/LnurlAuth.d.ts +0 -4
- package/dist/api/lightning/LnurlAuth.d.ts.map +1 -1
- package/dist/api/near/NearGetAddress.d.ts +1 -0
- package/dist/api/near/NearGetAddress.d.ts.map +1 -1
- package/dist/api/near/NearSignTransaction.d.ts +1 -0
- package/dist/api/near/NearSignTransaction.d.ts.map +1 -1
- package/dist/api/nem/NEMGetAddress.d.ts +1 -0
- package/dist/api/nem/NEMGetAddress.d.ts.map +1 -1
- package/dist/api/nem/NEMSignTransaction.d.ts +1 -0
- package/dist/api/nem/NEMSignTransaction.d.ts.map +1 -1
- package/dist/api/neo/NeoGetAddress.d.ts.map +1 -1
- package/dist/api/neo/NeoSignTransaction.d.ts.map +1 -1
- package/dist/api/nervos/NervosGetAddress.d.ts.map +1 -1
- package/dist/api/nervos/NervosSignTransaction.d.ts.map +1 -1
- package/dist/api/nexa/NexaGetAddress.d.ts.map +1 -1
- package/dist/api/nexa/NexaSignTransaction.d.ts +1 -0
- package/dist/api/nexa/NexaSignTransaction.d.ts.map +1 -1
- package/dist/api/nostr/NostrDecryptMessage.d.ts +1 -0
- package/dist/api/nostr/NostrDecryptMessage.d.ts.map +1 -1
- package/dist/api/nostr/NostrEncryptMessage.d.ts +1 -0
- package/dist/api/nostr/NostrEncryptMessage.d.ts.map +1 -1
- package/dist/api/nostr/NostrGetPublicKey.d.ts +1 -0
- package/dist/api/nostr/NostrGetPublicKey.d.ts.map +1 -1
- package/dist/api/nostr/NostrSignEvent.d.ts +1 -0
- package/dist/api/nostr/NostrSignEvent.d.ts.map +1 -1
- package/dist/api/nostr/NostrSignSchnorr.d.ts +1 -0
- package/dist/api/nostr/NostrSignSchnorr.d.ts.map +1 -1
- package/dist/api/polkadot/PolkadotGetAddress.d.ts +1 -0
- package/dist/api/polkadot/PolkadotGetAddress.d.ts.map +1 -1
- package/dist/api/polkadot/PolkadotSignTransaction.d.ts +1 -0
- package/dist/api/polkadot/PolkadotSignTransaction.d.ts.map +1 -1
- package/dist/api/protocol-v2/DeviceFactoryInfoGet.d.ts +1 -0
- package/dist/api/protocol-v2/DeviceFactoryInfoGet.d.ts.map +1 -1
- package/dist/api/protocol-v2/DeviceFactoryInfoSet.d.ts +1 -0
- package/dist/api/protocol-v2/DeviceFactoryInfoSet.d.ts.map +1 -1
- package/dist/api/protocol-v2/DeviceFirmwareUpdate.d.ts +1 -0
- package/dist/api/protocol-v2/DeviceFirmwareUpdate.d.ts.map +1 -1
- package/dist/api/protocol-v2/DeviceGetFirmwareUpdateStatus.d.ts +4 -2
- package/dist/api/protocol-v2/DeviceGetFirmwareUpdateStatus.d.ts.map +1 -1
- package/dist/api/protocol-v2/DeviceGetOnboardingStatus.d.ts +7 -0
- package/dist/api/protocol-v2/DeviceGetOnboardingStatus.d.ts.map +1 -0
- package/dist/api/protocol-v2/DeviceInfoGet.d.ts +1 -1
- package/dist/api/protocol-v2/DeviceInfoGet.d.ts.map +1 -1
- package/dist/api/protocol-v2/DeviceReboot.d.ts +1 -0
- package/dist/api/protocol-v2/DeviceReboot.d.ts.map +1 -1
- package/dist/api/protocol-v2/DeviceStatusGet.d.ts +7 -0
- package/dist/api/protocol-v2/DeviceStatusGet.d.ts.map +1 -0
- package/dist/api/protocol-v2/DeviceUploadNft.d.ts +30 -0
- package/dist/api/protocol-v2/DeviceUploadNft.d.ts.map +1 -0
- package/dist/api/protocol-v2/DeviceUploadWallpaper.d.ts +27 -0
- package/dist/api/protocol-v2/DeviceUploadWallpaper.d.ts.map +1 -0
- package/dist/api/protocol-v2/FilesystemFormat.d.ts +1 -0
- package/dist/api/protocol-v2/FilesystemFormat.d.ts.map +1 -1
- package/dist/api/protocol-v2/FilesystemPermissionFix.d.ts +1 -0
- package/dist/api/protocol-v2/FilesystemPermissionFix.d.ts.map +1 -1
- package/dist/api/protocol-v2/Ping.d.ts +3 -0
- package/dist/api/protocol-v2/Ping.d.ts.map +1 -1
- package/dist/api/protocol-v2/ProtocolInfoRequest.d.ts +1 -0
- package/dist/api/protocol-v2/ProtocolInfoRequest.d.ts.map +1 -1
- package/dist/api/protocol-v2/helpers.d.ts +4 -1
- package/dist/api/protocol-v2/helpers.d.ts.map +1 -1
- package/dist/api/scdo/ScdoGetAddress.d.ts.map +1 -1
- package/dist/api/scdo/ScdoSignMessage.d.ts.map +1 -1
- package/dist/api/scdo/ScdoSignTransaction.d.ts.map +1 -1
- package/dist/api/solana/SolGetAddress.d.ts +1 -0
- package/dist/api/solana/SolGetAddress.d.ts.map +1 -1
- package/dist/api/solana/SolSignMessage.d.ts +1 -0
- package/dist/api/solana/SolSignMessage.d.ts.map +1 -1
- package/dist/api/solana/SolSignOffchainMessage.d.ts +1 -0
- package/dist/api/solana/SolSignOffchainMessage.d.ts.map +1 -1
- package/dist/api/solana/SolSignTransaction.d.ts +1 -0
- package/dist/api/solana/SolSignTransaction.d.ts.map +1 -1
- package/dist/api/starcoin/StarcoinGetAddress.d.ts +1 -0
- package/dist/api/starcoin/StarcoinGetAddress.d.ts.map +1 -1
- package/dist/api/starcoin/StarcoinGetPublicKey.d.ts +1 -0
- package/dist/api/starcoin/StarcoinGetPublicKey.d.ts.map +1 -1
- package/dist/api/starcoin/StarcoinSignMessage.d.ts +1 -0
- package/dist/api/starcoin/StarcoinSignMessage.d.ts.map +1 -1
- package/dist/api/starcoin/StarcoinSignTransaction.d.ts +1 -0
- package/dist/api/starcoin/StarcoinSignTransaction.d.ts.map +1 -1
- package/dist/api/starcoin/StarcoinVerifyMessage.d.ts +1 -0
- package/dist/api/starcoin/StarcoinVerifyMessage.d.ts.map +1 -1
- package/dist/api/stellar/StellarGetAddress.d.ts +1 -2
- package/dist/api/stellar/StellarGetAddress.d.ts.map +1 -1
- package/dist/api/stellar/StellarSignTransaction.d.ts +1 -2
- package/dist/api/stellar/StellarSignTransaction.d.ts.map +1 -1
- package/dist/api/sui/SuiGetAddress.d.ts +1 -0
- package/dist/api/sui/SuiGetAddress.d.ts.map +1 -1
- package/dist/api/sui/SuiGetPublicKey.d.ts +1 -0
- package/dist/api/sui/SuiGetPublicKey.d.ts.map +1 -1
- package/dist/api/sui/SuiSignMessage.d.ts +1 -0
- package/dist/api/sui/SuiSignMessage.d.ts.map +1 -1
- package/dist/api/sui/SuiSignTransaction.d.ts +1 -0
- package/dist/api/sui/SuiSignTransaction.d.ts.map +1 -1
- package/dist/api/ton/TonGetAddress.d.ts +1 -0
- package/dist/api/ton/TonGetAddress.d.ts.map +1 -1
- package/dist/api/ton/TonSignData.d.ts +1 -0
- package/dist/api/ton/TonSignData.d.ts.map +1 -1
- package/dist/api/ton/TonSignMessage.d.ts +1 -0
- package/dist/api/ton/TonSignMessage.d.ts.map +1 -1
- package/dist/api/ton/TonSignProof.d.ts +1 -0
- package/dist/api/ton/TonSignProof.d.ts.map +1 -1
- package/dist/api/tron/TronGetAddress.d.ts +1 -0
- package/dist/api/tron/TronGetAddress.d.ts.map +1 -1
- package/dist/api/tron/TronSignMessage.d.ts +5 -0
- package/dist/api/tron/TronSignMessage.d.ts.map +1 -1
- package/dist/api/tron/TronSignTransaction.d.ts +1 -0
- package/dist/api/tron/TronSignTransaction.d.ts.map +1 -1
- package/dist/api/utils.d.ts +2 -1
- package/dist/api/utils.d.ts.map +1 -1
- package/dist/api/xrp/XrpGetAddress.d.ts +1 -0
- package/dist/api/xrp/XrpGetAddress.d.ts.map +1 -1
- package/dist/api/xrp/XrpSignTransaction.d.ts +1 -0
- package/dist/api/xrp/XrpSignTransaction.d.ts.map +1 -1
- package/dist/constants/index.d.ts +1 -1
- package/dist/constants/index.d.ts.map +1 -1
- package/dist/core/RequestQueue.d.ts.map +1 -1
- package/dist/core/deviceEventRegistration.d.ts +13 -0
- package/dist/core/deviceEventRegistration.d.ts.map +1 -0
- package/dist/core/index.d.ts +3 -1
- package/dist/core/index.d.ts.map +1 -1
- package/dist/data-manager/connectSettings.d.ts.map +1 -1
- package/dist/device/Device.d.ts +64 -16
- package/dist/device/Device.d.ts.map +1 -1
- package/dist/device/DeviceCommands.d.ts +8 -6
- package/dist/device/DeviceCommands.d.ts.map +1 -1
- package/dist/device/DeviceConnector.d.ts +1 -1
- package/dist/device/DeviceConnector.d.ts.map +1 -1
- package/dist/device/DeviceFeaturesState.d.ts +3 -0
- package/dist/device/DeviceFeaturesState.d.ts.map +1 -0
- package/dist/device/DevicePool.d.ts +5 -2
- package/dist/device/DevicePool.d.ts.map +1 -1
- package/dist/device/DeviceStateMapper.d.ts +13 -0
- package/dist/device/DeviceStateMapper.d.ts.map +1 -0
- package/dist/device/DeviceStateProjector.d.ts +7 -0
- package/dist/device/DeviceStateProjector.d.ts.map +1 -0
- package/dist/device/DeviceStateStore.d.ts +21 -0
- package/dist/device/DeviceStateStore.d.ts.map +1 -0
- package/dist/device/DeviceWalletSessionStore.d.ts +27 -0
- package/dist/device/DeviceWalletSessionStore.d.ts.map +1 -0
- package/dist/device/cloneDeviceState.d.ts +2 -0
- package/dist/device/cloneDeviceState.d.ts.map +1 -0
- package/dist/device/deviceIdentity.d.ts +5 -0
- package/dist/device/deviceIdentity.d.ts.map +1 -0
- package/dist/deviceProfile/buildDeviceFeatures.d.ts +9 -3
- package/dist/deviceProfile/buildDeviceFeatures.d.ts.map +1 -1
- package/dist/deviceProfile/index.d.ts +0 -1
- package/dist/deviceProfile/index.d.ts.map +1 -1
- package/dist/deviceProfile/protocolV2DeviceIdentity.d.ts +7 -0
- package/dist/deviceProfile/protocolV2DeviceIdentity.d.ts.map +1 -0
- package/dist/events/device.d.ts +16 -2
- package/dist/events/device.d.ts.map +1 -1
- package/dist/events/logBlockEvent.d.ts +2 -0
- package/dist/events/logBlockEvent.d.ts.map +1 -1
- package/dist/events/ui-request.d.ts +46 -4
- package/dist/events/ui-request.d.ts.map +1 -1
- package/dist/index.d.ts +1442 -712
- package/dist/index.js +7497 -3705
- package/dist/inject.d.ts.map +1 -1
- package/dist/protocols/protocol-v2/deviceSession.d.ts +7 -0
- package/dist/protocols/protocol-v2/deviceSession.d.ts.map +1 -0
- package/dist/protocols/protocol-v2/features.d.ts +25 -17
- package/dist/protocols/protocol-v2/features.d.ts.map +1 -1
- package/dist/protocols/protocol-v2/firmware.d.ts +1 -0
- package/dist/protocols/protocol-v2/firmware.d.ts.map +1 -1
- package/dist/protocols/protocol-v2/index.d.ts +3 -2
- package/dist/protocols/protocol-v2/index.d.ts.map +1 -1
- package/dist/protocols/protocol-v2/settingsUnlockPolicy.d.ts +17 -0
- package/dist/protocols/protocol-v2/settingsUnlockPolicy.d.ts.map +1 -0
- package/dist/protocols/protocol-v2/uiInteraction.d.ts +39 -0
- package/dist/protocols/protocol-v2/uiInteraction.d.ts.map +1 -0
- package/dist/protocols/protocol-v2/unlockPolicy.d.ts +2 -0
- package/dist/protocols/protocol-v2/unlockPolicy.d.ts.map +1 -0
- 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 +25 -0
- package/dist/protocols/protocol-v2/walletSession.d.ts.map +1 -0
- package/dist/types/api/checkAllFirmwareRelease.d.ts +25 -4
- package/dist/types/api/checkAllFirmwareRelease.d.ts.map +1 -1
- package/dist/types/api/deviceSettings.d.ts +11 -2
- package/dist/types/api/deviceSettings.d.ts.map +1 -1
- package/dist/types/api/deviceUnlock.d.ts +1 -1
- package/dist/types/api/deviceUnlock.d.ts.map +1 -1
- package/dist/types/api/export.d.ts +3 -2
- package/dist/types/api/export.d.ts.map +1 -1
- package/dist/types/api/firmwareUpdate.d.ts +6 -1
- package/dist/types/api/firmwareUpdate.d.ts.map +1 -1
- package/dist/types/api/getDeviceState.d.ts +12 -0
- package/dist/types/api/getDeviceState.d.ts.map +1 -0
- package/dist/types/api/getFeatures.d.ts.map +1 -1
- package/dist/types/api/getOnekeyFeatures.d.ts.map +1 -1
- package/dist/types/api/getPassphraseState.d.ts +2 -10
- package/dist/types/api/getPassphraseState.d.ts.map +1 -1
- package/dist/types/api/index.d.ts +19 -30
- package/dist/types/api/index.d.ts.map +1 -1
- package/dist/types/api/kaspaSignTransaction.d.ts +42 -4
- package/dist/types/api/kaspaSignTransaction.d.ts.map +1 -1
- package/dist/types/api/openWalletSession.d.ts +35 -0
- package/dist/types/api/openWalletSession.d.ts.map +1 -0
- package/dist/types/api/protocolV2.d.ts +18 -84
- package/dist/types/api/protocolV2.d.ts.map +1 -1
- package/dist/types/api/sessionCache.d.ts +13 -0
- package/dist/types/api/sessionCache.d.ts.map +1 -0
- package/dist/types/device.d.ts +132 -8
- package/dist/types/device.d.ts.map +1 -1
- package/dist/types/params.d.ts.map +1 -1
- package/dist/types/settings.d.ts +7 -14
- package/dist/types/settings.d.ts.map +1 -1
- package/dist/utils/assets.d.ts +2 -1
- package/dist/utils/assets.d.ts.map +1 -1
- package/dist/utils/deviceFeaturesCompat.d.ts +13 -0
- package/dist/utils/deviceFeaturesCompat.d.ts.map +1 -0
- package/dist/utils/deviceFeaturesUtils.d.ts +8 -3
- package/dist/utils/deviceFeaturesUtils.d.ts.map +1 -1
- package/dist/utils/deviceInfoUtils.d.ts +9 -9
- package/dist/utils/deviceInfoUtils.d.ts.map +1 -1
- package/dist/utils/deviceSettings.d.ts +38 -7
- package/dist/utils/deviceSettings.d.ts.map +1 -1
- package/dist/utils/deviceVersionUtils.d.ts +7 -5
- package/dist/utils/deviceVersionUtils.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 +6 -3
- package/dist/utils/index.d.ts.map +1 -1
- package/dist/utils/networkUtils.d.ts +10 -1
- package/dist/utils/networkUtils.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 +29 -0
- package/dist/utils/pro2Nft.d.ts.map +1 -0
- package/dist/utils/pro2Wallpaper.d.ts +22 -0
- package/dist/utils/pro2Wallpaper.d.ts.map +1 -0
- package/dist/utils/tracing.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 +53 -20
- package/src/api/CheckAllFirmwareRelease.ts +296 -1
- package/src/api/CheckBootloaderRelease.ts +1 -2
- package/src/api/CheckFirmwareRelease.ts +1 -2
- package/src/api/CipherKeyValue.ts +4 -0
- package/src/api/ClearSessionCache.ts +32 -0
- package/src/api/DirList.ts +9 -4
- package/src/api/DirMake.ts +7 -4
- package/src/api/DirRemove.ts +7 -4
- package/src/api/FileDelete.ts +7 -4
- package/src/api/FileRead.ts +15 -9
- package/src/api/FileWrite.ts +26 -181
- package/src/api/FirmwareUpdate.ts +11 -12
- package/src/api/FirmwareUpdateV2.ts +132 -52
- package/src/api/FirmwareUpdateV3.ts +3 -11
- package/src/api/FirmwareUpdateV4.ts +693 -535
- package/src/api/GetDeviceState.ts +59 -0
- package/src/api/GetFeatures.ts +6 -4
- package/src/api/GetOnekeyFeatures.ts +1 -75
- package/src/api/GetPassphraseState.ts +36 -21
- package/src/api/OpenWalletSession.ts +251 -0
- package/src/api/PathInfo.ts +9 -4
- package/src/api/PromptWebDeviceAccess.ts +2 -7
- package/src/api/SearchDevices.ts +29 -4
- package/src/api/UploadPortfolio.ts +40 -0
- package/src/api/alephium/AlephiumGetAddress.ts +0 -4
- package/src/api/alephium/AlephiumSignMessage.ts +0 -4
- package/src/api/alephium/AlephiumSignTransaction.ts +2 -6
- package/src/api/algo/AlgoGetAddress.ts +4 -0
- package/src/api/algo/AlgoSignTransaction.ts +4 -0
- package/src/api/allnetwork/AllNetworkGetAddressBase.ts +41 -32
- package/src/api/aptos/AptosGetAddress.ts +4 -0
- package/src/api/aptos/AptosGetPublicKey.ts +4 -0
- package/src/api/aptos/AptosSignInMessage.ts +4 -0
- package/src/api/aptos/AptosSignMessage.ts +4 -0
- package/src/api/aptos/AptosSignTransaction.ts +4 -0
- package/src/api/benfen/BenfenGetAddress.ts +11 -7
- package/src/api/benfen/BenfenGetPublicKey.ts +0 -4
- package/src/api/benfen/BenfenSignMessage.ts +0 -4
- package/src/api/benfen/BenfenSignTransaction.ts +0 -4
- package/src/api/btc/BTCGetAddress.ts +8 -1
- package/src/api/btc/BTCGetPublicKey.ts +9 -2
- package/src/api/btc/BTCSignMessage.ts +8 -1
- package/src/api/btc/BTCSignPsbt.ts +4 -0
- package/src/api/btc/BTCSignTransaction.ts +8 -1
- package/src/api/btc/BTCVerifyMessage.ts +8 -1
- package/src/api/btc/helpers/versionLimit.ts +7 -4
- package/src/api/cardano/CardanoGetAddress.ts +4 -0
- package/src/api/cardano/CardanoGetPublicKey.ts +4 -0
- package/src/api/cardano/CardanoSignMessage.ts +5 -1
- package/src/api/cardano/CardanoSignTransaction.ts +5 -1
- package/src/api/conflux/ConfluxGetAddress.ts +6 -0
- package/src/api/conflux/ConfluxSignMessage.ts +6 -0
- package/src/api/conflux/ConfluxSignMessageCIP23.ts +6 -0
- package/src/api/conflux/ConfluxSignTransaction.ts +8 -5
- package/src/api/cosmos/CosmosGetAddress.ts +4 -0
- package/src/api/cosmos/CosmosGetPublicKey.ts +4 -0
- package/src/api/cosmos/CosmosSignTransaction.ts +4 -0
- package/src/api/device/DeviceCancel.ts +5 -0
- package/src/api/device/DeviceChangePin.ts +28 -0
- package/src/api/device/DeviceFullyUploadResource.ts +4 -5
- package/src/api/device/DeviceLock.ts +5 -0
- package/src/api/device/DeviceRebootToBoardloader.ts +5 -0
- package/src/api/device/DeviceRebootToBootloader.ts +5 -0
- package/src/api/device/DeviceSettings.ts +194 -1
- package/src/api/device/DeviceSupportFeatures.ts +4 -0
- package/src/api/device/DeviceUnlock.ts +14 -1
- package/src/api/device/DeviceUpdateBootloader.ts +1 -2
- package/src/api/device/DeviceWipe.ts +25 -0
- package/src/api/device/PreInitialize.ts +4 -0
- package/src/api/dynex/DnxGetAddress.ts +0 -6
- package/src/api/dynex/DnxSignTransaction.ts +0 -6
- package/src/api/evm/EVMGetAddress.ts +6 -2
- package/src/api/evm/EVMGetPublicKey.ts +6 -2
- package/src/api/evm/EVMSignMessage.ts +6 -2
- package/src/api/evm/EVMSignMessageEIP712.ts +1 -11
- package/src/api/evm/EVMSignTransaction.ts +6 -2
- package/src/api/evm/EVMSignTypedData.ts +42 -50
- package/src/api/evm/EVMVerifyMessage.ts +6 -2
- package/src/api/evm/legacyV1/getAddress.ts +2 -2
- package/src/api/evm/legacyV1/getPublicKey.ts +2 -2
- package/src/api/evm/legacyV1/signMessage.ts +2 -2
- package/src/api/evm/legacyV1/signTypedData.ts +2 -2
- package/src/api/evm/legacyV1/signTypedHash.ts +2 -2
- package/src/api/evm/legacyV1/verifyMessage.ts +2 -2
- package/src/api/evm/protocol.ts +6 -0
- package/src/api/filecoin/FilecoinGetAddress.ts +4 -0
- package/src/api/filecoin/FilecoinSignTransaction.ts +4 -0
- package/src/api/firmware/FirmwareUpdateBaseMethod.ts +3 -3
- package/src/api/firmware/getBinary.ts +8 -3
- package/src/api/helpers/batchGetPublickeys.ts +2 -2
- package/src/api/helpers/filesystemValidation.ts +61 -0
- package/src/api/helpers/paramsValidator.ts +1 -1
- package/src/api/helpers/protocolV2FileWrite.ts +206 -0
- package/src/api/index.ts +9 -26
- package/src/api/kaspa/KaspaGetAddress.ts +7 -0
- package/src/api/kaspa/KaspaSignTransaction.ts +380 -29
- package/src/api/kaspa/helpers/TransferSerialize.ts +17 -7
- package/src/api/lightning/LnurlAuth.ts +0 -4
- package/src/api/near/NearGetAddress.ts +4 -0
- package/src/api/near/NearSignTransaction.ts +4 -0
- package/src/api/nem/NEMGetAddress.ts +4 -0
- package/src/api/nem/NEMSignTransaction.ts +4 -0
- package/src/api/neo/NeoGetAddress.ts +0 -4
- package/src/api/neo/NeoSignTransaction.ts +0 -4
- package/src/api/nervos/NervosGetAddress.ts +0 -4
- package/src/api/nervos/NervosSignTransaction.ts +2 -6
- package/src/api/nexa/NexaGetAddress.ts +0 -4
- package/src/api/nexa/NexaSignTransaction.ts +3 -5
- package/src/api/nostr/NostrDecryptMessage.ts +4 -0
- package/src/api/nostr/NostrEncryptMessage.ts +4 -0
- package/src/api/nostr/NostrGetPublicKey.ts +4 -0
- package/src/api/nostr/NostrSignEvent.ts +4 -0
- package/src/api/nostr/NostrSignSchnorr.ts +4 -0
- package/src/api/polkadot/PolkadotGetAddress.ts +4 -0
- package/src/api/polkadot/PolkadotSignTransaction.ts +4 -0
- package/src/api/protocol-v2/DeviceFactoryInfoGet.ts +5 -2
- package/src/api/protocol-v2/DeviceFactoryInfoSet.ts +5 -2
- package/src/api/protocol-v2/DeviceFirmwareUpdate.ts +8 -5
- package/src/api/protocol-v2/DeviceGetFirmwareUpdateStatus.ts +43 -5
- package/src/api/protocol-v2/DeviceGetOnboardingStatus.ts +21 -0
- package/src/api/protocol-v2/DeviceInfoGet.ts +8 -15
- package/src/api/protocol-v2/DeviceReboot.ts +7 -3
- package/src/api/protocol-v2/DeviceStatusGet.ts +19 -0
- package/src/api/protocol-v2/DeviceUploadNft.ts +166 -0
- package/src/api/protocol-v2/DeviceUploadWallpaper.ts +134 -0
- package/src/api/protocol-v2/FilesystemFormat.ts +9 -3
- package/src/api/protocol-v2/FilesystemPermissionFix.ts +5 -2
- package/src/api/protocol-v2/Ping.ts +37 -3
- package/src/api/protocol-v2/ProtocolInfoRequest.ts +8 -3
- package/src/api/protocol-v2/helpers.ts +21 -16
- package/src/api/scdo/ScdoGetAddress.ts +0 -4
- package/src/api/scdo/ScdoSignMessage.ts +0 -4
- package/src/api/scdo/ScdoSignTransaction.ts +0 -4
- package/src/api/solana/SolGetAddress.ts +4 -0
- package/src/api/solana/SolSignMessage.ts +4 -0
- package/src/api/solana/SolSignOffchainMessage.ts +4 -0
- package/src/api/solana/SolSignTransaction.ts +4 -0
- package/src/api/starcoin/StarcoinGetAddress.ts +4 -0
- package/src/api/starcoin/StarcoinGetPublicKey.ts +4 -0
- package/src/api/starcoin/StarcoinSignMessage.ts +4 -0
- package/src/api/starcoin/StarcoinSignTransaction.ts +4 -0
- package/src/api/starcoin/StarcoinVerifyMessage.ts +4 -0
- package/src/api/stellar/StellarGetAddress.ts +1 -10
- package/src/api/stellar/StellarSignTransaction.ts +1 -14
- package/src/api/sui/SuiGetAddress.ts +4 -0
- package/src/api/sui/SuiGetPublicKey.ts +4 -0
- package/src/api/sui/SuiSignMessage.ts +4 -0
- package/src/api/sui/SuiSignTransaction.ts +4 -0
- package/src/api/ton/TonGetAddress.ts +4 -0
- package/src/api/ton/TonSignData.ts +5 -1
- package/src/api/ton/TonSignMessage.ts +4 -0
- package/src/api/ton/TonSignProof.ts +4 -0
- package/src/api/tron/TronGetAddress.ts +4 -0
- package/src/api/tron/TronSignMessage.ts +18 -7
- package/src/api/tron/TronSignTransaction.ts +4 -0
- package/src/api/utils.ts +7 -3
- package/src/api/xrp/XrpGetAddress.ts +4 -0
- package/src/api/xrp/XrpSignTransaction.ts +5 -1
- package/src/constants/index.ts +1 -4
- package/src/core/RequestQueue.ts +1 -0
- package/src/core/deviceEventRegistration.ts +27 -0
- package/src/core/index.ts +274 -120
- package/src/data/messages/messages-protocol-v2.json +1161 -477
- package/src/data/messages/messages.json +286 -1
- package/src/data-manager/DataManager.ts +6 -6
- package/src/data-manager/TransportManager.ts +1 -1
- package/src/data-manager/connectSettings.ts +4 -0
- package/src/device/Device.ts +820 -282
- package/src/device/DeviceCommands.ts +166 -158
- package/src/device/DeviceConnector.ts +10 -7
- package/src/device/DeviceFeaturesState.ts +25 -0
- package/src/device/DevicePool.ts +66 -16
- package/src/device/DeviceStateMapper.ts +374 -0
- package/src/device/DeviceStateProjector.ts +94 -0
- package/src/device/DeviceStateStore.ts +201 -0
- package/src/device/DeviceWalletSessionStore.ts +144 -0
- package/src/device/cloneDeviceState.ts +39 -0
- package/src/device/deviceIdentity.ts +18 -0
- package/src/deviceProfile/buildDeviceFeatures.ts +224 -190
- package/src/deviceProfile/index.ts +0 -1
- package/src/deviceProfile/protocolV2DeviceIdentity.ts +32 -0
- package/src/events/device.ts +22 -1
- package/src/events/logBlockEvent.ts +80 -2
- package/src/events/ui-request.ts +57 -4
- package/src/inject.ts +16 -41
- package/src/protocols/protocol-v2/deviceSession.ts +24 -0
- package/src/protocols/protocol-v2/features.ts +103 -32
- package/src/protocols/protocol-v2/firmware.ts +2 -1
- package/src/protocols/protocol-v2/index.ts +8 -1
- package/src/protocols/protocol-v2/settingsUnlockPolicy.ts +65 -0
- package/src/protocols/protocol-v2/uiInteraction.ts +236 -0
- package/src/protocols/protocol-v2/unlockPolicy.ts +1 -0
- package/src/protocols/protocol-v2/unlockPolicyRunner.ts +117 -0
- package/src/protocols/protocol-v2/walletSession.ts +360 -0
- package/src/types/api/checkAllFirmwareRelease.ts +46 -4
- package/src/types/api/deviceSettings.ts +26 -2
- package/src/types/api/deviceUnlock.ts +1 -1
- package/src/types/api/export.ts +8 -0
- package/src/types/api/firmwareUpdate.ts +23 -5
- package/src/types/api/getDeviceState.ts +19 -0
- package/src/types/api/getFeatures.ts +3 -0
- package/src/types/api/getOnekeyFeatures.ts +3 -0
- package/src/types/api/getPassphraseState.ts +9 -11
- package/src/types/api/index.ts +27 -64
- package/src/types/api/kaspaSignTransaction.ts +60 -4
- package/src/types/api/openWalletSession.ts +54 -0
- package/src/types/api/protocolV2.ts +33 -139
- package/src/types/api/sessionCache.ts +19 -0
- package/src/types/device.ts +185 -7
- package/src/types/params.ts +3 -2
- package/src/types/settings.ts +17 -16
- package/src/utils/assets.ts +4 -1
- package/src/utils/deviceFeaturesCompat.ts +180 -0
- package/src/utils/deviceFeaturesUtils.ts +56 -45
- package/src/utils/deviceInfoUtils.ts +27 -69
- package/src/utils/deviceSettings.ts +171 -39
- package/src/utils/deviceVersionUtils.ts +25 -44
- package/src/utils/findDefectiveBatchDevice.ts +3 -3
- package/src/utils/homescreen.ts +36 -0
- package/src/utils/index.ts +27 -3
- package/src/utils/networkUtils.ts +274 -16
- package/src/utils/pro2Nft.ts +91 -0
- package/src/utils/pro2Wallpaper.ts +130 -0
- package/src/utils/tracing.ts +3 -1
- package/src/utils/uiProgressThrottle.ts +63 -0
- package/tsconfig.type-tests.json +12 -0
- package/dist/api/GetDeviceInfo.d.ts +0 -9
- package/dist/api/GetDeviceInfo.d.ts.map +0 -1
- package/dist/api/protocol-v2/FilesystemDiskControl.d.ts +0 -13
- package/dist/api/protocol-v2/FilesystemDiskControl.d.ts.map +0 -1
- package/dist/deviceProfile/buildDeviceProfile.d.ts +0 -21
- package/dist/deviceProfile/buildDeviceProfile.d.ts.map +0 -1
- package/dist/types/api/getDeviceInfo.d.ts +0 -87
- package/dist/types/api/getDeviceInfo.d.ts.map +0 -1
- package/src/api/GetDeviceInfo.ts +0 -145
- package/src/api/protocol-v2/FilesystemDiskControl.ts +0 -50
- package/src/deviceProfile/buildDeviceProfile.ts +0 -352
- package/src/types/api/getDeviceInfo.ts +0 -101
package/src/api/FileWrite.ts
CHANGED
|
@@ -1,19 +1,13 @@
|
|
|
1
|
-
import {
|
|
2
|
-
PROTOCOL_V2_BLE_FILE_CHUNK_SIZE,
|
|
3
|
-
PROTOCOL_V2_WEBUSB_FILE_CHUNK_SIZE,
|
|
4
|
-
} from '@onekeyfe/hd-transport';
|
|
5
|
-
import { ERRORS, HardwareErrorCode } from '@onekeyfe/hd-shared';
|
|
6
|
-
|
|
7
1
|
import { BaseMethod } from './BaseMethod';
|
|
8
2
|
import {
|
|
9
|
-
validateNonEmptyString,
|
|
10
3
|
validateNonNegativeInteger,
|
|
11
4
|
validateOptionalNonNegativeInteger,
|
|
12
5
|
validateOptionalPercentage,
|
|
6
|
+
validateProtocolV2FilesystemPath,
|
|
13
7
|
validateRequiredData,
|
|
14
8
|
} from './helpers/filesystemValidation';
|
|
9
|
+
import { writeProtocolV2File } from './helpers/protocolV2FileWrite';
|
|
15
10
|
import { UI_REQUEST, createUiMessage } from '../events/ui-request';
|
|
16
|
-
import { DataManager } from '../data-manager';
|
|
17
11
|
|
|
18
12
|
export type FileWriteParams = {
|
|
19
13
|
path: string;
|
|
@@ -24,87 +18,22 @@ export type FileWriteParams = {
|
|
|
24
18
|
chunkLen?: number;
|
|
25
19
|
overwrite?: boolean;
|
|
26
20
|
append?: boolean;
|
|
21
|
+
emitProgress?: boolean;
|
|
27
22
|
uiPercentage?: number;
|
|
28
23
|
timeoutMs?: number | string;
|
|
29
24
|
};
|
|
30
25
|
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
const env = DataManager.getSettings('env');
|
|
35
|
-
if (env && DataManager.isBleConnect(env)) {
|
|
36
|
-
return PROTOCOL_V2_BLE_FILE_CHUNK_SIZE;
|
|
37
|
-
}
|
|
38
|
-
return PROTOCOL_V2_WEBUSB_FILE_CHUNK_SIZE;
|
|
39
|
-
}
|
|
40
|
-
|
|
41
|
-
async function dataToUint8Array(data: FileWriteParams['data'] | Blob): Promise<Uint8Array> {
|
|
42
|
-
if (typeof data === 'string') {
|
|
43
|
-
return new TextEncoder().encode(data);
|
|
44
|
-
}
|
|
45
|
-
|
|
46
|
-
if (data instanceof ArrayBuffer) {
|
|
47
|
-
return new Uint8Array(data);
|
|
48
|
-
}
|
|
49
|
-
|
|
50
|
-
if (ArrayBuffer.isView(data)) {
|
|
51
|
-
return new Uint8Array(data.buffer, data.byteOffset, data.byteLength);
|
|
52
|
-
}
|
|
53
|
-
|
|
54
|
-
if (typeof Blob !== 'undefined' && data instanceof Blob) {
|
|
55
|
-
return new Uint8Array(await data.arrayBuffer());
|
|
56
|
-
}
|
|
57
|
-
|
|
58
|
-
throw ERRORS.TypedError(
|
|
59
|
-
HardwareErrorCode.CallMethodInvalidParameter,
|
|
60
|
-
'Unsupported FilesystemFileWrite data'
|
|
61
|
-
);
|
|
62
|
-
}
|
|
63
|
-
|
|
64
|
-
function normalizeChunkSize(value: unknown, maxChunkSize: number): number {
|
|
65
|
-
const numeric = Number(value);
|
|
66
|
-
if (!Number.isFinite(numeric) || numeric <= 0) return maxChunkSize;
|
|
67
|
-
return Math.min(Math.max(Math.floor(numeric), MIN_FILE_CHUNK_SIZE), maxChunkSize);
|
|
68
|
-
}
|
|
69
|
-
|
|
70
|
-
function getConfirmedProgress(
|
|
71
|
-
processedByte: number,
|
|
72
|
-
totalSize: number,
|
|
73
|
-
written: number,
|
|
74
|
-
dataLength: number
|
|
75
|
-
) {
|
|
76
|
-
if (Number.isFinite(processedByte) && Number.isFinite(totalSize) && totalSize > 0) {
|
|
77
|
-
if (processedByte >= totalSize) return 100;
|
|
78
|
-
return Math.min(Math.max(Math.floor((processedByte / totalSize) * 100), 0), 99);
|
|
79
|
-
}
|
|
80
|
-
if (dataLength > 0) {
|
|
81
|
-
if (written >= dataLength) return 100;
|
|
82
|
-
return Math.min(Math.max(Math.floor((written / dataLength) * 100), 0), 99);
|
|
83
|
-
}
|
|
84
|
-
return 100;
|
|
85
|
-
}
|
|
86
|
-
|
|
87
|
-
function getDeviceTransferProgress(bytesBeforeChunk: number, bytesAfterChunk: number, totalBytes: number) {
|
|
88
|
-
if (!Number.isFinite(totalBytes) || totalBytes <= 0) {
|
|
89
|
-
return 100;
|
|
90
|
-
}
|
|
91
|
-
if (bytesBeforeChunk <= 0 && bytesAfterChunk < totalBytes) {
|
|
92
|
-
return 0;
|
|
93
|
-
}
|
|
94
|
-
if (bytesAfterChunk >= totalBytes) {
|
|
95
|
-
return 100;
|
|
26
|
+
export default class FileWrite extends BaseMethod<FileWriteParams> {
|
|
27
|
+
getSupportedProtocols() {
|
|
28
|
+
return ['V2'] as const;
|
|
96
29
|
}
|
|
97
|
-
return Math.min(Math.max(Math.ceil((bytesAfterChunk / totalBytes) * 100), 1), 99);
|
|
98
|
-
}
|
|
99
30
|
|
|
100
|
-
export default class FileWrite extends BaseMethod<FileWriteParams> {
|
|
101
31
|
init() {
|
|
102
|
-
// Protocol V2 (Pro2)
|
|
103
|
-
this.requireProtocolV2 = true;
|
|
32
|
+
// Protocol V2 (Pro2) only; Core rejects non-V2 devices.
|
|
104
33
|
this.skipForceUpdateCheck = true;
|
|
105
34
|
this.useDevicePassphraseState = false;
|
|
106
35
|
validateRequiredData(this.payload.data, 'data');
|
|
107
|
-
const path =
|
|
36
|
+
const path = validateProtocolV2FilesystemPath(this.payload.path, 'path');
|
|
108
37
|
const offset = validateNonNegativeInteger(this.payload.offset, 'offset', 0);
|
|
109
38
|
this.params = {
|
|
110
39
|
path,
|
|
@@ -115,115 +44,31 @@ export default class FileWrite extends BaseMethod<FileWriteParams> {
|
|
|
115
44
|
chunkLen: validateOptionalNonNegativeInteger(this.payload.chunkLen, 'chunkLen'),
|
|
116
45
|
overwrite: this.payload.overwrite ?? offset === 0,
|
|
117
46
|
append: this.payload.append ?? false,
|
|
47
|
+
emitProgress: this.payload.emitProgress ?? true,
|
|
118
48
|
uiPercentage: validateOptionalPercentage(this.payload.uiPercentage, 'uiPercentage'),
|
|
119
49
|
timeoutMs: validateOptionalNonNegativeInteger(this.payload.timeoutMs, 'timeoutMs'),
|
|
120
50
|
};
|
|
121
51
|
}
|
|
122
52
|
|
|
123
53
|
async run() {
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
const offsetValue = Number(this.params.offset ?? 0);
|
|
127
|
-
const startOffset = Number.isFinite(offsetValue) && offsetValue > 0 ? offsetValue : 0;
|
|
128
|
-
const payloadTotalSize = Number(this.params.totalSize);
|
|
129
|
-
const totalSize =
|
|
130
|
-
Number.isFinite(payloadTotalSize) && payloadTotalSize > 0
|
|
131
|
-
? payloadTotalSize
|
|
132
|
-
: startOffset + dataLength;
|
|
133
|
-
|
|
134
|
-
if (totalSize < startOffset + dataLength) {
|
|
135
|
-
throw ERRORS.TypedError(
|
|
136
|
-
HardwareErrorCode.RuntimeError,
|
|
137
|
-
`FilesystemFileWrite totalSize ${totalSize} is smaller than offset + data length ${
|
|
138
|
-
startOffset + dataLength
|
|
139
|
-
}`
|
|
140
|
-
);
|
|
141
|
-
}
|
|
142
|
-
|
|
143
|
-
const chunkSize = normalizeChunkSize(
|
|
144
|
-
this.params.chunkSize ?? this.params.chunkLen,
|
|
145
|
-
getProtocolV2FileChunkLimit()
|
|
146
|
-
);
|
|
147
|
-
const overwrite = this.params.overwrite ?? false;
|
|
148
|
-
const append = this.params.append ?? false;
|
|
149
|
-
let written = 0;
|
|
150
|
-
let chunkIndex = 0;
|
|
151
|
-
let lastMessage: Record<string, unknown> | undefined;
|
|
152
|
-
const startTime = Date.now();
|
|
153
|
-
const timeoutMs =
|
|
154
|
-
this.params.timeoutMs === undefined ? undefined : Number(this.params.timeoutMs);
|
|
155
|
-
|
|
156
|
-
while (written < dataLength) {
|
|
157
|
-
const chunkEnd = Math.min(written + chunkSize, dataLength);
|
|
158
|
-
const chunk = data.slice(written, chunkEnd);
|
|
159
|
-
const offset = startOffset + written;
|
|
160
|
-
const isFirstChunk = chunkIndex === 0;
|
|
161
|
-
const progress =
|
|
162
|
-
this.params.uiPercentage ??
|
|
163
|
-
getDeviceTransferProgress(offset, offset + chunk.byteLength, totalSize);
|
|
164
|
-
|
|
165
|
-
const res = await this.device.commands.typedCall(
|
|
166
|
-
'FilesystemFileWrite',
|
|
167
|
-
'FilesystemFile',
|
|
168
|
-
{
|
|
169
|
-
file: {
|
|
170
|
-
path: this.params.path,
|
|
171
|
-
offset,
|
|
172
|
-
total_size: totalSize,
|
|
173
|
-
data: chunk,
|
|
174
|
-
},
|
|
175
|
-
overwrite: isFirstChunk ? overwrite : false,
|
|
176
|
-
append,
|
|
177
|
-
ui_percentage: progress,
|
|
178
|
-
},
|
|
179
|
-
{
|
|
180
|
-
timeoutMs,
|
|
181
|
-
}
|
|
182
|
-
);
|
|
183
|
-
|
|
184
|
-
lastMessage = res.message;
|
|
185
|
-
const processedByte = Number(res.message?.processed_byte);
|
|
186
|
-
if (Number.isFinite(processedByte) && processedByte > offset) {
|
|
187
|
-
written = processedByte - startOffset;
|
|
188
|
-
} else {
|
|
189
|
-
written += chunk.byteLength;
|
|
190
|
-
}
|
|
191
|
-
|
|
192
|
-
if (written > dataLength) {
|
|
193
|
-
throw ERRORS.TypedError(
|
|
194
|
-
HardwareErrorCode.RuntimeError,
|
|
195
|
-
`FilesystemFileWrite invalid processed_byte ${processedByte}`
|
|
196
|
-
);
|
|
197
|
-
}
|
|
198
|
-
|
|
199
|
-
const confirmedProcessedByte =
|
|
200
|
-
Number.isFinite(processedByte) && processedByte > offset
|
|
201
|
-
? processedByte
|
|
202
|
-
: startOffset + written;
|
|
203
|
-
if (typeof this.postMessage === 'function') {
|
|
204
|
-
const elapsedMs = Date.now() - startTime;
|
|
205
|
-
const transferredBytes = Math.min(written, dataLength);
|
|
206
|
-
this.postMessage(
|
|
207
|
-
createUiMessage(UI_REQUEST.DEVICE_PROGRESS, {
|
|
208
|
-
progress: getConfirmedProgress(confirmedProcessedByte, totalSize, written, dataLength),
|
|
209
|
-
transferredBytes,
|
|
210
|
-
totalBytes: dataLength,
|
|
211
|
-
rateBytesPerSecond:
|
|
212
|
-
elapsedMs > 0 ? Math.round((transferredBytes / elapsedMs) * 1000) : undefined,
|
|
213
|
-
elapsedMs,
|
|
214
|
-
})
|
|
215
|
-
);
|
|
216
|
-
}
|
|
217
|
-
chunkIndex += 1;
|
|
218
|
-
}
|
|
219
|
-
|
|
220
|
-
return Promise.resolve({
|
|
221
|
-
...lastMessage,
|
|
54
|
+
return writeProtocolV2File({
|
|
55
|
+
commands: this.device.commands,
|
|
222
56
|
path: this.params.path,
|
|
223
|
-
|
|
224
|
-
|
|
225
|
-
|
|
226
|
-
|
|
57
|
+
data: this.params.data,
|
|
58
|
+
offset: this.params.offset,
|
|
59
|
+
totalSize: this.params.totalSize,
|
|
60
|
+
chunkSize: this.params.chunkSize,
|
|
61
|
+
chunkLen: this.params.chunkLen,
|
|
62
|
+
overwrite: this.params.overwrite,
|
|
63
|
+
append: this.params.append,
|
|
64
|
+
uiPercentage: this.params.uiPercentage,
|
|
65
|
+
timeoutMs: this.params.timeoutMs === undefined ? undefined : Number(this.params.timeoutMs),
|
|
66
|
+
throwIfAborted: () => this.throwIfAborted(),
|
|
67
|
+
onProgress: payload => {
|
|
68
|
+
if (this.params.emitProgress && typeof this.postMessage === 'function') {
|
|
69
|
+
this.postMessage(createUiMessage(UI_REQUEST.DEVICE_PROGRESS, payload));
|
|
70
|
+
}
|
|
71
|
+
},
|
|
227
72
|
});
|
|
228
73
|
}
|
|
229
74
|
}
|
|
@@ -14,7 +14,7 @@ import { uploadFirmware } from './firmware/uploadFirmware';
|
|
|
14
14
|
import { createUiMessage } from '../events';
|
|
15
15
|
import { DeviceModelToTypes, type KnownDevice } from '../types';
|
|
16
16
|
import { isEnteredManuallyBoot } from './firmware/bootloaderHelper';
|
|
17
|
-
import { LoggerNames,
|
|
17
|
+
import { LoggerNames, getLogger, wait } from '../utils';
|
|
18
18
|
import { DataManager } from '../data-manager';
|
|
19
19
|
import { DevicePool } from '../device/DevicePool';
|
|
20
20
|
|
|
@@ -133,16 +133,8 @@ export default class FirmwareUpdate extends BaseMethod<Params> {
|
|
|
133
133
|
const { features, commands } = device;
|
|
134
134
|
const deviceType = device.getCurrentDeviceType();
|
|
135
135
|
|
|
136
|
-
// Protocol V2 (Pro2) 固件升级走 DeviceFirmwareUpdate 流程,禁止进入 legacy 入口
|
|
137
|
-
if (device.isProtocolV2()) {
|
|
138
|
-
throw ERRORS.TypedError(
|
|
139
|
-
HardwareErrorCode.RuntimeError,
|
|
140
|
-
'Protocol V2 firmware update must use firmwareUpdateV4'
|
|
141
|
-
);
|
|
142
|
-
}
|
|
143
|
-
|
|
144
136
|
if (!device.isBootloader() && features) {
|
|
145
|
-
const
|
|
137
|
+
const serialNo = device.getCurrentSerialNo();
|
|
146
138
|
// should go to bootloader mode manually
|
|
147
139
|
if (isEnteredManuallyBoot(features, params.updateType)) {
|
|
148
140
|
return Promise.reject(ERRORS.TypedError(HardwareErrorCode.FirmwareUpdateManuallyEnterBoot));
|
|
@@ -161,7 +153,7 @@ export default class FirmwareUpdate extends BaseMethod<Params> {
|
|
|
161
153
|
|
|
162
154
|
// force clean classic device cache so that the device can initialize again
|
|
163
155
|
if (DeviceModelToTypes.model_classic.includes(deviceType)) {
|
|
164
|
-
DevicePool.clearDeviceCache(
|
|
156
|
+
DevicePool.clearDeviceCache(serialNo);
|
|
165
157
|
}
|
|
166
158
|
delete DevicePool.devicesCache[''];
|
|
167
159
|
await this.checkPromise?.promise;
|
|
@@ -182,7 +174,7 @@ export default class FirmwareUpdate extends BaseMethod<Params> {
|
|
|
182
174
|
}
|
|
183
175
|
}
|
|
184
176
|
|
|
185
|
-
let binary;
|
|
177
|
+
let binary: ArrayBuffer | undefined;
|
|
186
178
|
try {
|
|
187
179
|
if (params.binary) {
|
|
188
180
|
binary = this.params.binary;
|
|
@@ -207,6 +199,13 @@ export default class FirmwareUpdate extends BaseMethod<Params> {
|
|
|
207
199
|
throw ERRORS.TypedError(HardwareErrorCode.FirmwareUpdateDownloadFailed, err.message ?? err);
|
|
208
200
|
}
|
|
209
201
|
|
|
202
|
+
if (!binary) {
|
|
203
|
+
throw ERRORS.TypedError(
|
|
204
|
+
HardwareErrorCode.FirmwareUpdateDownloadFailed,
|
|
205
|
+
'Firmware binary is unavailable'
|
|
206
|
+
);
|
|
207
|
+
}
|
|
208
|
+
|
|
210
209
|
await this.device.acquire();
|
|
211
210
|
|
|
212
211
|
const response = await uploadFirmware(
|
|
@@ -15,20 +15,14 @@ import { validateParams } from './helpers/paramsValidator';
|
|
|
15
15
|
import { DevicePool } from '../device/DevicePool';
|
|
16
16
|
import { getBinary, getInfo, getSysResourceBinary } from './firmware/getBinary';
|
|
17
17
|
import { updateResources, uploadFirmware } from './firmware/uploadFirmware';
|
|
18
|
-
import {
|
|
19
|
-
LoggerNames,
|
|
20
|
-
getDeviceBootloaderVersion,
|
|
21
|
-
getDeviceFirmwareVersion,
|
|
22
|
-
getDeviceUUID,
|
|
23
|
-
getLogger,
|
|
24
|
-
wait,
|
|
25
|
-
} from '../utils';
|
|
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
23
|
|
|
31
24
|
import type { Features, KnownDevice } from '../types';
|
|
25
|
+
import type { FirmwareBinary } from './firmware/getBinary';
|
|
32
26
|
|
|
33
27
|
type Params = {
|
|
34
28
|
binary?: ArrayBuffer;
|
|
@@ -41,6 +35,77 @@ type Params = {
|
|
|
41
35
|
|
|
42
36
|
const Log = getLogger(LoggerNames.Method);
|
|
43
37
|
|
|
38
|
+
const FIRMWARE_DOWNLOAD_REQUEST_OPTIONS = {
|
|
39
|
+
connectTimeoutMs: 60_000,
|
|
40
|
+
readTimeoutMs: 60_000,
|
|
41
|
+
overallTimeoutMs: 180_000,
|
|
42
|
+
maxRetries: 2,
|
|
43
|
+
retryDelayMs: 500,
|
|
44
|
+
} as const;
|
|
45
|
+
|
|
46
|
+
const normalizeFirmwareBinary = (binary: unknown): FirmwareBinary | undefined => {
|
|
47
|
+
if (typeof binary !== 'object' || binary === null) {
|
|
48
|
+
return undefined;
|
|
49
|
+
}
|
|
50
|
+
|
|
51
|
+
const isNodeBuffer =
|
|
52
|
+
typeof Buffer !== 'undefined' &&
|
|
53
|
+
typeof Buffer.isBuffer === 'function' &&
|
|
54
|
+
Buffer.isBuffer(binary);
|
|
55
|
+
if (isNodeBuffer) {
|
|
56
|
+
return binary.byteLength > 0 ? binary : undefined;
|
|
57
|
+
}
|
|
58
|
+
|
|
59
|
+
if (typeof ArrayBuffer !== 'undefined' && binary instanceof ArrayBuffer) {
|
|
60
|
+
return binary.byteLength > 0 ? binary : undefined;
|
|
61
|
+
}
|
|
62
|
+
|
|
63
|
+
if (
|
|
64
|
+
typeof ArrayBuffer !== 'undefined' &&
|
|
65
|
+
typeof ArrayBuffer.isView === 'function' &&
|
|
66
|
+
ArrayBuffer.isView(binary)
|
|
67
|
+
) {
|
|
68
|
+
if (binary.byteLength <= 0) {
|
|
69
|
+
return undefined;
|
|
70
|
+
}
|
|
71
|
+
const source = new Uint8Array(binary.buffer, binary.byteOffset, binary.byteLength);
|
|
72
|
+
const normalized = new Uint8Array(binary.byteLength);
|
|
73
|
+
normalized.set(source);
|
|
74
|
+
return normalized.buffer;
|
|
75
|
+
}
|
|
76
|
+
|
|
77
|
+
const customBuffer = binary as {
|
|
78
|
+
[index: number]: unknown;
|
|
79
|
+
byteLength?: unknown;
|
|
80
|
+
constructor?: {
|
|
81
|
+
isBuffer?: (value: unknown) => boolean;
|
|
82
|
+
};
|
|
83
|
+
length?: unknown;
|
|
84
|
+
};
|
|
85
|
+
if (
|
|
86
|
+
typeof customBuffer.constructor?.isBuffer !== 'function' ||
|
|
87
|
+
!customBuffer.constructor.isBuffer(binary) ||
|
|
88
|
+
typeof customBuffer.byteLength !== 'number' ||
|
|
89
|
+
!Number.isSafeInteger(customBuffer.byteLength) ||
|
|
90
|
+
customBuffer.byteLength <= 0 ||
|
|
91
|
+
typeof customBuffer.length !== 'number' ||
|
|
92
|
+
customBuffer.length !== customBuffer.byteLength
|
|
93
|
+
) {
|
|
94
|
+
return undefined;
|
|
95
|
+
}
|
|
96
|
+
|
|
97
|
+
const { byteLength } = customBuffer;
|
|
98
|
+
const normalized = new Uint8Array(byteLength);
|
|
99
|
+
for (let index = 0; index < byteLength; index += 1) {
|
|
100
|
+
const { [index]: byte } = customBuffer;
|
|
101
|
+
if (typeof byte !== 'number' || !Number.isInteger(byte) || byte < 0 || byte > 255) {
|
|
102
|
+
return undefined;
|
|
103
|
+
}
|
|
104
|
+
normalized[index] = byte;
|
|
105
|
+
}
|
|
106
|
+
return normalized.buffer;
|
|
107
|
+
};
|
|
108
|
+
|
|
44
109
|
export default class FirmwareUpdateV2 extends BaseMethod<Params> {
|
|
45
110
|
checkPromise: Deferred<any> | null = null;
|
|
46
111
|
|
|
@@ -223,22 +288,22 @@ export default class FirmwareUpdateV2 extends BaseMethod<Params> {
|
|
|
223
288
|
return false;
|
|
224
289
|
}
|
|
225
290
|
|
|
226
|
-
isEnteredManuallyBoot(
|
|
291
|
+
isEnteredManuallyBoot() {
|
|
227
292
|
const deviceType = this.device.getCurrentDeviceType();
|
|
228
293
|
const isMini = deviceType === EDeviceType.Mini;
|
|
229
294
|
const isBoot183ClassicUpBle =
|
|
230
295
|
this.params.updateType === 'firmware' &&
|
|
231
296
|
deviceType === EDeviceType.Classic &&
|
|
232
|
-
|
|
297
|
+
this.device.getCurrentBootloaderVersionString() === '1.8.3';
|
|
233
298
|
return isMini || isBoot183ClassicUpBle;
|
|
234
299
|
}
|
|
235
300
|
|
|
236
|
-
isSupportResourceUpdate(
|
|
301
|
+
isSupportResourceUpdate(updateType: string) {
|
|
237
302
|
if (updateType !== 'firmware') return false;
|
|
238
303
|
|
|
239
304
|
const deviceType = this.device.getCurrentDeviceType();
|
|
240
305
|
const isTouchMode = deviceType === EDeviceType.Touch || deviceType === EDeviceType.Pro;
|
|
241
|
-
const currentVersion =
|
|
306
|
+
const currentVersion = this.device.getCurrentFirmwareVersionString() ?? '0.0.0';
|
|
242
307
|
|
|
243
308
|
return isTouchMode && semver.gte(currentVersion, '3.2.0');
|
|
244
309
|
}
|
|
@@ -250,7 +315,7 @@ export default class FirmwareUpdateV2 extends BaseMethod<Params> {
|
|
|
250
315
|
checkVersionForCopyTouchResource(features: Features | undefined, firmwareType: EFirmwareType) {
|
|
251
316
|
if (!features) return;
|
|
252
317
|
const deviceType = this.device.getCurrentDeviceType();
|
|
253
|
-
const currentVersion =
|
|
318
|
+
const currentVersion = this.device.getCurrentFirmwareVersionString() ?? '0.0.0';
|
|
254
319
|
const targetVersion = this.params.version?.join('.');
|
|
255
320
|
const { updateType } = this.params;
|
|
256
321
|
|
|
@@ -276,28 +341,62 @@ export default class FirmwareUpdateV2 extends BaseMethod<Params> {
|
|
|
276
341
|
const { features, commands } = device;
|
|
277
342
|
const deviceType = device.getCurrentDeviceType();
|
|
278
343
|
|
|
279
|
-
// Protocol V2 (Pro2) 固件升级走 DeviceFirmwareUpdate 流程,禁止进入 legacy 入口
|
|
280
|
-
if (device.isProtocolV2()) {
|
|
281
|
-
throw ERRORS.TypedError(
|
|
282
|
-
HardwareErrorCode.RuntimeError,
|
|
283
|
-
'Protocol V2 firmware update must use firmwareUpdateV4'
|
|
284
|
-
);
|
|
285
|
-
}
|
|
286
|
-
|
|
287
344
|
const deviceFirmwareType = device.getCurrentFirmwareType();
|
|
288
345
|
const firmwareType = params.firmwareType ?? deviceFirmwareType;
|
|
289
346
|
|
|
290
347
|
this.checkVersionForCopyTouchResource(features, firmwareType);
|
|
291
348
|
|
|
349
|
+
let preparedBinary: FirmwareBinary | undefined;
|
|
350
|
+
const acquireFirmwareBinary = async (): Promise<FirmwareBinary> => {
|
|
351
|
+
try {
|
|
352
|
+
if (preparedBinary) {
|
|
353
|
+
return preparedBinary;
|
|
354
|
+
}
|
|
355
|
+
|
|
356
|
+
if (params.binary !== undefined) {
|
|
357
|
+
preparedBinary = normalizeFirmwareBinary(params.binary);
|
|
358
|
+
if (!preparedBinary) {
|
|
359
|
+
throw new Error('firmware binary is empty or invalid');
|
|
360
|
+
}
|
|
361
|
+
return preparedBinary;
|
|
362
|
+
}
|
|
363
|
+
|
|
364
|
+
if (!device.features) {
|
|
365
|
+
throw ERRORS.TypedError(
|
|
366
|
+
HardwareErrorCode.RuntimeError,
|
|
367
|
+
'no features found for this device'
|
|
368
|
+
);
|
|
369
|
+
}
|
|
370
|
+
|
|
371
|
+
this.postTipMessage('DownloadFirmware');
|
|
372
|
+
const firmware = await getBinary({
|
|
373
|
+
features: device.features,
|
|
374
|
+
version: params.version,
|
|
375
|
+
updateType: params.updateType,
|
|
376
|
+
isUpdateBootloader: params.isUpdateBootloader,
|
|
377
|
+
firmwareType,
|
|
378
|
+
requestOptions: FIRMWARE_DOWNLOAD_REQUEST_OPTIONS,
|
|
379
|
+
});
|
|
380
|
+
preparedBinary = normalizeFirmwareBinary(firmware.binary);
|
|
381
|
+
if (!preparedBinary) {
|
|
382
|
+
throw new Error('downloaded firmware binary is empty or invalid');
|
|
383
|
+
}
|
|
384
|
+
this.postTipMessage('DownloadFirmwareSuccess');
|
|
385
|
+
return preparedBinary;
|
|
386
|
+
} catch (err) {
|
|
387
|
+
throw ERRORS.TypedError(HardwareErrorCode.FirmwareUpdateDownloadFailed, err.message ?? err);
|
|
388
|
+
}
|
|
389
|
+
};
|
|
390
|
+
|
|
292
391
|
if (!device.isBootloader() && features) {
|
|
293
|
-
const
|
|
392
|
+
const serialNo = device.getCurrentSerialNo();
|
|
294
393
|
// should go to bootloader mode manually
|
|
295
|
-
if (this.isEnteredManuallyBoot(
|
|
394
|
+
if (this.isEnteredManuallyBoot()) {
|
|
296
395
|
return Promise.reject(ERRORS.TypedError(HardwareErrorCode.FirmwareUpdateManuallyEnterBoot));
|
|
297
396
|
}
|
|
298
397
|
|
|
299
398
|
// check & upgrade firmware resource
|
|
300
|
-
if (
|
|
399
|
+
if (this.isSupportResourceUpdate(params.updateType)) {
|
|
301
400
|
this.postTipMessage('CheckLatestUiResource');
|
|
302
401
|
const resourceUrl = DataManager.getSysResourcesLatestRelease({
|
|
303
402
|
features,
|
|
@@ -322,6 +421,12 @@ export default class FirmwareUpdateV2 extends BaseMethod<Params> {
|
|
|
322
421
|
// check if the device commands has been disposed
|
|
323
422
|
this.device?.commands?.checkDisposed();
|
|
324
423
|
|
|
424
|
+
// A failed firmware download must leave the device in normal mode.
|
|
425
|
+
await acquireFirmwareBinary();
|
|
426
|
+
|
|
427
|
+
// The request may outlive the current transport command instance.
|
|
428
|
+
this.device?.commands?.checkDisposed();
|
|
429
|
+
|
|
325
430
|
// auto go to bootloader mode
|
|
326
431
|
try {
|
|
327
432
|
this.postTipMessage('AutoRebootToBootloader');
|
|
@@ -335,7 +440,7 @@ export default class FirmwareUpdateV2 extends BaseMethod<Params> {
|
|
|
335
440
|
|
|
336
441
|
// force clean classic device cache so that the device can initialize again
|
|
337
442
|
if (DeviceModelToTypes.model_classic.includes(deviceType)) {
|
|
338
|
-
DevicePool.clearDeviceCache(
|
|
443
|
+
DevicePool.clearDeviceCache(serialNo);
|
|
339
444
|
}
|
|
340
445
|
delete DevicePool.devicesCache[''];
|
|
341
446
|
await this.checkPromise?.promise;
|
|
@@ -360,33 +465,8 @@ export default class FirmwareUpdateV2 extends BaseMethod<Params> {
|
|
|
360
465
|
}
|
|
361
466
|
}
|
|
362
467
|
|
|
363
|
-
|
|
364
|
-
|
|
365
|
-
try {
|
|
366
|
-
if (params.binary) {
|
|
367
|
-
binary = this.params.binary;
|
|
368
|
-
} else {
|
|
369
|
-
if (!device.features) {
|
|
370
|
-
throw ERRORS.TypedError(
|
|
371
|
-
HardwareErrorCode.RuntimeError,
|
|
372
|
-
'no features found for this device'
|
|
373
|
-
);
|
|
374
|
-
}
|
|
375
|
-
this.postTipMessage('DownloadFirmware');
|
|
376
|
-
|
|
377
|
-
const firmware = await getBinary({
|
|
378
|
-
features: device.features,
|
|
379
|
-
version: params.version,
|
|
380
|
-
updateType: params.updateType,
|
|
381
|
-
isUpdateBootloader: params.isUpdateBootloader,
|
|
382
|
-
firmwareType,
|
|
383
|
-
});
|
|
384
|
-
binary = firmware.binary;
|
|
385
|
-
this.postTipMessage('DownloadFirmwareSuccess');
|
|
386
|
-
}
|
|
387
|
-
} catch (err) {
|
|
388
|
-
throw ERRORS.TypedError(HardwareErrorCode.FirmwareUpdateDownloadFailed, err.message ?? err);
|
|
389
|
-
}
|
|
468
|
+
// Devices already in bootloader mode still acquire through the same helper.
|
|
469
|
+
const binary = await acquireFirmwareBinary();
|
|
390
470
|
|
|
391
471
|
// check if the device commands has been disposed
|
|
392
472
|
this.device?.commands?.checkDisposed();
|
|
@@ -9,8 +9,6 @@ import {
|
|
|
9
9
|
getDeviceBLEFirmwareVersion,
|
|
10
10
|
getDeviceBootloaderVersion,
|
|
11
11
|
getDeviceFirmwareVersion,
|
|
12
|
-
getDeviceType,
|
|
13
|
-
getFirmwareType,
|
|
14
12
|
getLogger,
|
|
15
13
|
} from '../utils';
|
|
16
14
|
import { getBinary, getSysResourceBinary } from './firmware/getBinary';
|
|
@@ -80,12 +78,6 @@ export default class FirmwareUpdateV3 extends FirmwareUpdateBaseMethod<FirmwareU
|
|
|
80
78
|
}
|
|
81
79
|
|
|
82
80
|
async run() {
|
|
83
|
-
if (this.device.isProtocolV2()) {
|
|
84
|
-
throw ERRORS.TypedError(
|
|
85
|
-
HardwareErrorCode.RuntimeError,
|
|
86
|
-
'Protocol V2 firmware update must use firmwareUpdateV4'
|
|
87
|
-
);
|
|
88
|
-
}
|
|
89
81
|
Log.debug('FirmwareUpdateV3 strategy: Protocol V1');
|
|
90
82
|
return this.runProtocolV1();
|
|
91
83
|
}
|
|
@@ -97,8 +89,8 @@ export default class FirmwareUpdateV3 extends FirmwareUpdateBaseMethod<FirmwareU
|
|
|
97
89
|
const { device } = this;
|
|
98
90
|
const { features } = device;
|
|
99
91
|
|
|
100
|
-
const deviceType =
|
|
101
|
-
const bootloaderCurrVersion =
|
|
92
|
+
const deviceType = device.getCurrentDeviceType();
|
|
93
|
+
const bootloaderCurrVersion = device.getCurrentBootloaderVersionString() ?? '0.0.0';
|
|
102
94
|
|
|
103
95
|
this.validateDeviceAndVersion(deviceType, bootloaderCurrVersion);
|
|
104
96
|
|
|
@@ -106,7 +98,7 @@ export default class FirmwareUpdateV3 extends FirmwareUpdateBaseMethod<FirmwareU
|
|
|
106
98
|
throw ERRORS.TypedError(HardwareErrorCode.RuntimeError, 'Device features not available');
|
|
107
99
|
}
|
|
108
100
|
|
|
109
|
-
const deviceFirmwareType =
|
|
101
|
+
const deviceFirmwareType = device.getCurrentFirmwareType();
|
|
110
102
|
const firmwareType = this.params.firmwareType ?? deviceFirmwareType;
|
|
111
103
|
this.isSwitchFirmware = firmwareType !== deviceFirmwareType;
|
|
112
104
|
|