@ukeyfe/hardware-core 1.1.24 → 1.1.26
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +1 -1
- package/__tests__/benfen.test.ts +1 -1
- package/__tests__/checkBootloaderReleast.test.ts +3 -2
- package/__tests__/evmSignTransaction.test.ts +3 -2
- package/dist/api/BaseMethod.d.ts +9 -4
- package/dist/api/BaseMethod.d.ts.map +1 -1
- package/dist/api/CheckAllFirmwareRelease.d.ts +1 -1
- package/dist/api/CheckAllFirmwareRelease.d.ts.map +1 -1
- package/dist/api/CheckBLEFirmwareRelease.d.ts.map +1 -1
- package/dist/api/CheckBootloaderRelease.d.ts.map +1 -1
- package/dist/api/CheckBridgeStatus.d.ts.map +1 -1
- package/dist/api/CheckFirmwareRelease.d.ts.map +1 -1
- package/dist/api/CheckFirmwareTypeAvailable.d.ts +6 -0
- package/dist/api/CheckFirmwareTypeAvailable.d.ts.map +1 -0
- package/dist/api/CipherKeyValue.d.ts +2 -2
- package/dist/api/CipherKeyValue.d.ts.map +1 -1
- package/dist/api/FirmwareUpdate.d.ts +1 -1
- package/dist/api/FirmwareUpdate.d.ts.map +1 -1
- package/dist/api/FirmwareUpdateV2.d.ts +3 -2
- package/dist/api/FirmwareUpdateV2.d.ts.map +1 -1
- package/dist/api/FirmwareUpdateV3.d.ts +7 -2
- package/dist/api/FirmwareUpdateV3.d.ts.map +1 -1
- package/dist/api/GetFeatures.d.ts.map +1 -1
- package/dist/api/GetPassphraseState.d.ts.map +1 -1
- package/dist/api/GetUkeyFeatures.d.ts.map +1 -1
- package/dist/api/PromptWebDeviceAccess.d.ts.map +1 -1
- package/dist/api/SearchDevices.d.ts +2 -1
- package/dist/api/SearchDevices.d.ts.map +1 -1
- package/dist/api/alephium/AlephiumGetAddress.d.ts +2 -2
- package/dist/api/alephium/AlephiumGetAddress.d.ts.map +1 -1
- package/dist/api/alephium/AlephiumSignMessage.d.ts +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 +2 -2
- package/dist/api/algo/AlgoGetAddress.d.ts.map +1 -1
- package/dist/api/algo/AlgoSignTransaction.d.ts +1 -1
- package/dist/api/algo/AlgoSignTransaction.d.ts.map +1 -1
- package/dist/api/allnetwork/AllNetworkGetAddress.d.ts +1 -1
- package/dist/api/allnetwork/AllNetworkGetAddress.d.ts.map +1 -1
- package/dist/api/allnetwork/AllNetworkGetAddressBase.d.ts +2 -2
- package/dist/api/allnetwork/AllNetworkGetAddressBase.d.ts.map +1 -1
- package/dist/api/allnetwork/AllNetworkGetAddressByLoop.d.ts.map +1 -1
- package/dist/api/aptos/AptosGetAddress.d.ts +2 -2
- package/dist/api/aptos/AptosGetAddress.d.ts.map +1 -1
- package/dist/api/aptos/AptosGetPublicKey.d.ts +1 -1
- package/dist/api/aptos/AptosGetPublicKey.d.ts.map +1 -1
- package/dist/api/aptos/AptosSignInMessage.d.ts +2 -2
- package/dist/api/aptos/AptosSignInMessage.d.ts.map +1 -1
- package/dist/api/aptos/AptosSignMessage.d.ts +2 -2
- package/dist/api/aptos/AptosSignMessage.d.ts.map +1 -1
- package/dist/api/aptos/AptosSignTransaction.d.ts +1 -1
- package/dist/api/aptos/AptosSignTransaction.d.ts.map +1 -1
- package/dist/api/benfen/BenfenGetAddress.d.ts +2 -2
- package/dist/api/benfen/BenfenGetAddress.d.ts.map +1 -1
- package/dist/api/benfen/BenfenGetPublicKey.d.ts +1 -1
- package/dist/api/benfen/BenfenGetPublicKey.d.ts.map +1 -1
- package/dist/api/benfen/BenfenSignMessage.d.ts +1 -1
- package/dist/api/benfen/BenfenSignMessage.d.ts.map +1 -1
- package/dist/api/benfen/BenfenSignTransaction.d.ts +1 -1
- package/dist/api/benfen/BenfenSignTransaction.d.ts.map +1 -1
- package/dist/api/btc/BTCGetAddress.d.ts +2 -2
- package/dist/api/btc/BTCGetAddress.d.ts.map +1 -1
- package/dist/api/btc/BTCGetPublicKey.d.ts +2 -2
- package/dist/api/btc/BTCGetPublicKey.d.ts.map +1 -1
- package/dist/api/btc/BTCSignMessage.d.ts +1 -1
- package/dist/api/btc/BTCSignMessage.d.ts.map +1 -1
- package/dist/api/btc/BTCSignPsbt.d.ts +1 -1
- package/dist/api/btc/BTCSignPsbt.d.ts.map +1 -1
- package/dist/api/btc/BTCSignTransaction.d.ts +2 -2
- package/dist/api/btc/BTCSignTransaction.d.ts.map +1 -1
- package/dist/api/btc/BTCVerifyMessage.d.ts +1 -1
- package/dist/api/btc/BTCVerifyMessage.d.ts.map +1 -1
- package/dist/api/btc/helpers/btcParamsUtils.d.ts.map +1 -1
- package/dist/api/btc/helpers/signtx.d.ts +2 -2
- package/dist/api/btc/helpers/signtx.d.ts.map +1 -1
- package/dist/api/btc/helpers/signtxLegacy.d.ts +2 -2
- package/dist/api/btc/helpers/signtxLegacy.d.ts.map +1 -1
- package/dist/api/btc/helpers/xpubUtils.d.ts.map +1 -1
- package/dist/api/cardano/CardanoGetAddress.d.ts +1 -1
- package/dist/api/cardano/CardanoGetAddress.d.ts.map +1 -1
- package/dist/api/cardano/CardanoGetPublicKey.d.ts +1 -1
- package/dist/api/cardano/CardanoGetPublicKey.d.ts.map +1 -1
- package/dist/api/cardano/CardanoSignMessage.d.ts +1 -1
- package/dist/api/cardano/CardanoSignMessage.d.ts.map +1 -1
- package/dist/api/cardano/CardanoSignTransaction.d.ts +1 -1
- package/dist/api/cardano/CardanoSignTransaction.d.ts.map +1 -1
- package/dist/api/cardano/helper/addressParameters.d.ts.map +1 -1
- package/dist/api/cardano/helper/auxiliaryData.d.ts +1 -1
- package/dist/api/cardano/helper/auxiliaryData.d.ts.map +1 -1
- package/dist/api/cardano/helper/cardanoInputs.d.ts.map +1 -1
- package/dist/api/cardano/helper/cardanoOutputs.d.ts.map +1 -1
- package/dist/api/cardano/helper/certificate.d.ts +1 -1
- package/dist/api/cardano/helper/certificate.d.ts.map +1 -1
- package/dist/api/cardano/helper/token.d.ts +1 -1
- package/dist/api/cardano/helper/token.d.ts.map +1 -1
- package/dist/api/cardano/helper/witnesses.d.ts +2 -2
- package/dist/api/cardano/helper/witnesses.d.ts.map +1 -1
- package/dist/api/conflux/ConfluxGetAddress.d.ts +2 -2
- package/dist/api/conflux/ConfluxGetAddress.d.ts.map +1 -1
- package/dist/api/conflux/ConfluxSignMessage.d.ts +1 -1
- package/dist/api/conflux/ConfluxSignMessage.d.ts.map +1 -1
- package/dist/api/conflux/ConfluxSignMessageCIP23.d.ts +1 -1
- package/dist/api/conflux/ConfluxSignMessageCIP23.d.ts.map +1 -1
- package/dist/api/conflux/ConfluxSignTransaction.d.ts +2 -2
- package/dist/api/conflux/ConfluxSignTransaction.d.ts.map +1 -1
- package/dist/api/cosmos/CosmosGetAddress.d.ts +2 -2
- package/dist/api/cosmos/CosmosGetAddress.d.ts.map +1 -1
- package/dist/api/cosmos/CosmosGetPublicKey.d.ts.map +1 -1
- package/dist/api/cosmos/CosmosSignTransaction.d.ts +1 -1
- package/dist/api/cosmos/CosmosSignTransaction.d.ts.map +1 -1
- package/dist/api/device/DeviceBackup.d.ts +1 -1
- package/dist/api/device/DeviceBackup.d.ts.map +1 -1
- package/dist/api/device/DeviceCancel.d.ts +1 -1
- package/dist/api/device/DeviceCancel.d.ts.map +1 -1
- package/dist/api/device/DeviceChangePin.d.ts +1 -1
- package/dist/api/device/DeviceChangePin.d.ts.map +1 -1
- package/dist/api/device/DeviceFlags.d.ts +1 -1
- package/dist/api/device/DeviceFlags.d.ts.map +1 -1
- package/dist/api/device/DeviceFullyUploadResource.d.ts +1 -1
- package/dist/api/device/DeviceFullyUploadResource.d.ts.map +1 -1
- package/dist/api/device/DeviceLock.d.ts +1 -1
- package/dist/api/device/DeviceLock.d.ts.map +1 -1
- package/dist/api/device/DeviceRebootToBoardloader.d.ts.map +1 -1
- package/dist/api/device/DeviceRebootToBootloader.d.ts +1 -1
- package/dist/api/device/DeviceRebootToBootloader.d.ts.map +1 -1
- package/dist/api/device/DeviceRecovery.d.ts +1 -1
- package/dist/api/device/DeviceRecovery.d.ts.map +1 -1
- package/dist/api/device/DeviceReset.d.ts +1 -1
- package/dist/api/device/DeviceReset.d.ts.map +1 -1
- package/dist/api/device/DeviceSettings.d.ts +1 -1
- package/dist/api/device/DeviceSettings.d.ts.map +1 -1
- package/dist/api/device/DeviceSupportFeatures.d.ts.map +1 -1
- package/dist/api/device/DeviceUnlock.d.ts +1 -1
- package/dist/api/device/DeviceUnlock.d.ts.map +1 -1
- package/dist/api/device/DeviceUpdateBootloader.d.ts +10 -7
- package/dist/api/device/DeviceUpdateBootloader.d.ts.map +1 -1
- package/dist/api/device/DeviceUpdateReboot.d.ts +1 -1
- package/dist/api/device/DeviceUpdateReboot.d.ts.map +1 -1
- package/dist/api/device/DeviceUploadResource.d.ts +9 -4
- package/dist/api/device/DeviceUploadResource.d.ts.map +1 -1
- package/dist/api/device/DeviceVerify.d.ts +1 -1
- package/dist/api/device/DeviceVerify.d.ts.map +1 -1
- package/dist/api/device/DeviceWipe.d.ts +1 -1
- package/dist/api/device/DeviceWipe.d.ts.map +1 -1
- package/dist/api/dynex/DnxGetAddress.d.ts +1 -1
- package/dist/api/dynex/DnxGetAddress.d.ts.map +1 -1
- package/dist/api/dynex/DnxSignTransaction.d.ts +2 -2
- package/dist/api/dynex/DnxSignTransaction.d.ts.map +1 -1
- package/dist/api/evm/EVMGetAddress.d.ts +2 -2
- package/dist/api/evm/EVMGetAddress.d.ts.map +1 -1
- package/dist/api/evm/EVMGetPublicKey.d.ts +2 -2
- package/dist/api/evm/EVMGetPublicKey.d.ts.map +1 -1
- package/dist/api/evm/EVMSignMessage.d.ts +1 -1
- package/dist/api/evm/EVMSignMessage.d.ts.map +1 -1
- package/dist/api/evm/EVMSignMessageEIP712.d.ts +1 -1
- package/dist/api/evm/EVMSignMessageEIP712.d.ts.map +1 -1
- package/dist/api/evm/EVMSignTransaction.d.ts +1 -1
- package/dist/api/evm/EVMSignTransaction.d.ts.map +1 -1
- package/dist/api/evm/EVMSignTypedData.d.ts +1 -1
- package/dist/api/evm/EVMSignTypedData.d.ts.map +1 -1
- package/dist/api/evm/EVMVerifyMessage.d.ts +1 -1
- package/dist/api/evm/EVMVerifyMessage.d.ts.map +1 -1
- package/dist/api/evm/latest/getAddress.d.ts +1 -1
- package/dist/api/evm/latest/getAddress.d.ts.map +1 -1
- package/dist/api/evm/latest/getPublicKey.d.ts +1 -1
- package/dist/api/evm/latest/getPublicKey.d.ts.map +1 -1
- package/dist/api/evm/latest/signMessage.d.ts +1 -1
- package/dist/api/evm/latest/signMessage.d.ts.map +1 -1
- package/dist/api/evm/latest/signTransaction.d.ts +2 -2
- package/dist/api/evm/latest/signTransaction.d.ts.map +1 -1
- package/dist/api/evm/latest/signTypedData.d.ts +2 -2
- package/dist/api/evm/latest/signTypedData.d.ts.map +1 -1
- package/dist/api/evm/latest/signTypedHash.d.ts +2 -2
- package/dist/api/evm/latest/signTypedHash.d.ts.map +1 -1
- package/dist/api/evm/latest/verifyMessage.d.ts +1 -1
- package/dist/api/evm/latest/verifyMessage.d.ts.map +1 -1
- package/dist/api/evm/legacyV1/getAddress.d.ts +1 -1
- package/dist/api/evm/legacyV1/getAddress.d.ts.map +1 -1
- package/dist/api/evm/legacyV1/getPublicKey.d.ts +1 -1
- package/dist/api/evm/legacyV1/getPublicKey.d.ts.map +1 -1
- package/dist/api/evm/legacyV1/signMessage.d.ts +1 -1
- package/dist/api/evm/legacyV1/signMessage.d.ts.map +1 -1
- package/dist/api/evm/legacyV1/signTransaction.d.ts +2 -2
- package/dist/api/evm/legacyV1/signTransaction.d.ts.map +1 -1
- package/dist/api/evm/legacyV1/signTypedData.d.ts +2 -2
- package/dist/api/evm/legacyV1/signTypedData.d.ts.map +1 -1
- package/dist/api/evm/legacyV1/signTypedHash.d.ts +2 -2
- package/dist/api/evm/legacyV1/signTypedHash.d.ts.map +1 -1
- package/dist/api/evm/legacyV1/verifyMessage.d.ts +1 -1
- package/dist/api/evm/legacyV1/verifyMessage.d.ts.map +1 -1
- package/dist/api/filecoin/FilecoinGetAddress.d.ts +2 -2
- package/dist/api/filecoin/FilecoinGetAddress.d.ts.map +1 -1
- package/dist/api/filecoin/FilecoinSignTransaction.d.ts +1 -1
- package/dist/api/filecoin/FilecoinSignTransaction.d.ts.map +1 -1
- package/dist/api/firmware/FirmwareUpdateBaseMethod.d.ts +8 -6
- package/dist/api/firmware/FirmwareUpdateBaseMethod.d.ts.map +1 -1
- package/dist/api/firmware/bootloaderHelper.d.ts +1 -1
- package/dist/api/firmware/bootloaderHelper.d.ts.map +1 -1
- package/dist/api/firmware/getBinary.d.ts +6 -3
- package/dist/api/firmware/getBinary.d.ts.map +1 -1
- package/dist/api/firmware/releaseHelper.d.ts +7 -2
- package/dist/api/firmware/releaseHelper.d.ts.map +1 -1
- package/dist/api/firmware/updateBootloader.d.ts +8 -3
- package/dist/api/firmware/updateBootloader.d.ts.map +1 -1
- package/dist/api/firmware/uploadFirmware.d.ts +5 -5
- package/dist/api/firmware/uploadFirmware.d.ts.map +1 -1
- package/dist/api/helpers/batchGetPublickeys.d.ts +2 -2
- package/dist/api/helpers/batchGetPublickeys.d.ts.map +1 -1
- package/dist/api/helpers/paramsValidator.d.ts.map +1 -1
- package/dist/api/helpers/pathUtils.d.ts +1 -1
- package/dist/api/helpers/pathUtils.d.ts.map +1 -1
- package/dist/api/helpers/typeNameUtils.d.ts +2 -2
- package/dist/api/helpers/typeNameUtils.d.ts.map +1 -1
- package/dist/api/index.d.ts +1 -1
- package/dist/api/index.d.ts.map +1 -1
- package/dist/api/kaspa/KaspaGetAddress.d.ts +2 -2
- package/dist/api/kaspa/KaspaGetAddress.d.ts.map +1 -1
- package/dist/api/kaspa/KaspaSignTransaction.d.ts +3 -3
- package/dist/api/kaspa/KaspaSignTransaction.d.ts.map +1 -1
- package/dist/api/kaspa/helpers/HashWriter.d.ts.map +1 -1
- package/dist/api/kaspa/helpers/TransferSerialize.d.ts +1 -1
- package/dist/api/kaspa/helpers/TransferSerialize.d.ts.map +1 -1
- package/dist/api/lightning/LnurlAuth.d.ts +1 -1
- package/dist/api/lightning/LnurlAuth.d.ts.map +1 -1
- package/dist/api/near/NearGetAddress.d.ts +2 -2
- package/dist/api/near/NearGetAddress.d.ts.map +1 -1
- package/dist/api/near/NearSignTransaction.d.ts +1 -1
- package/dist/api/near/NearSignTransaction.d.ts.map +1 -1
- package/dist/api/nem/NEMGetAddress.d.ts +2 -2
- package/dist/api/nem/NEMGetAddress.d.ts.map +1 -1
- package/dist/api/nem/NEMSignTransaction.d.ts +2 -2
- package/dist/api/nem/NEMSignTransaction.d.ts.map +1 -1
- package/dist/api/neo/NeoGetAddress.d.ts +2 -2
- package/dist/api/neo/NeoGetAddress.d.ts.map +1 -1
- package/dist/api/neo/NeoSignTransaction.d.ts +1 -1
- package/dist/api/neo/NeoSignTransaction.d.ts.map +1 -1
- package/dist/api/nervos/NervosGetAddress.d.ts +1 -1
- package/dist/api/nervos/NervosGetAddress.d.ts.map +1 -1
- package/dist/api/nervos/NervosSignTransaction.d.ts +1 -1
- package/dist/api/nervos/NervosSignTransaction.d.ts.map +1 -1
- package/dist/api/nexa/NexaGetAddress.d.ts +1 -1
- package/dist/api/nexa/NexaGetAddress.d.ts.map +1 -1
- package/dist/api/nexa/NexaSignTransaction.d.ts +3 -3
- package/dist/api/nexa/NexaSignTransaction.d.ts.map +1 -1
- package/dist/api/nostr/NostrDecryptMessage.d.ts +1 -1
- package/dist/api/nostr/NostrDecryptMessage.d.ts.map +1 -1
- package/dist/api/nostr/NostrEncryptMessage.d.ts +1 -1
- package/dist/api/nostr/NostrEncryptMessage.d.ts.map +1 -1
- package/dist/api/nostr/NostrGetPublicKey.d.ts +2 -2
- package/dist/api/nostr/NostrGetPublicKey.d.ts.map +1 -1
- package/dist/api/nostr/NostrSignEvent.d.ts +1 -1
- package/dist/api/nostr/NostrSignEvent.d.ts.map +1 -1
- package/dist/api/nostr/NostrSignSchnorr.d.ts +1 -1
- package/dist/api/nostr/NostrSignSchnorr.d.ts.map +1 -1
- package/dist/api/nostr/helper/index.d.ts +1 -1
- package/dist/api/nostr/helper/index.d.ts.map +1 -1
- package/dist/api/polkadot/PolkadotGetAddress.d.ts +2 -2
- package/dist/api/polkadot/PolkadotGetAddress.d.ts.map +1 -1
- package/dist/api/polkadot/PolkadotSignTransaction.d.ts +1 -1
- package/dist/api/polkadot/PolkadotSignTransaction.d.ts.map +1 -1
- package/dist/api/polkadot/networks.d.ts +7 -1
- package/dist/api/polkadot/networks.d.ts.map +1 -1
- package/dist/api/scdo/ScdoGetAddress.d.ts +2 -2
- package/dist/api/scdo/ScdoGetAddress.d.ts.map +1 -1
- package/dist/api/scdo/ScdoSignMessage.d.ts +1 -1
- package/dist/api/scdo/ScdoSignMessage.d.ts.map +1 -1
- package/dist/api/scdo/ScdoSignTransaction.d.ts +1 -1
- package/dist/api/scdo/ScdoSignTransaction.d.ts.map +1 -1
- package/dist/api/solana/SolGetAddress.d.ts +2 -2
- package/dist/api/solana/SolGetAddress.d.ts.map +1 -1
- package/dist/api/solana/SolSignMessage.d.ts +1 -1
- package/dist/api/solana/SolSignMessage.d.ts.map +1 -1
- package/dist/api/solana/SolSignOffchainMessage.d.ts +1 -1
- package/dist/api/solana/SolSignOffchainMessage.d.ts.map +1 -1
- package/dist/api/solana/SolSignTransaction.d.ts +2 -2
- package/dist/api/solana/SolSignTransaction.d.ts.map +1 -1
- package/dist/api/starcoin/StarcoinGetAddress.d.ts +2 -2
- package/dist/api/starcoin/StarcoinGetAddress.d.ts.map +1 -1
- package/dist/api/starcoin/StarcoinGetPublicKey.d.ts +2 -2
- package/dist/api/starcoin/StarcoinGetPublicKey.d.ts.map +1 -1
- package/dist/api/starcoin/StarcoinSignMessage.d.ts +1 -1
- package/dist/api/starcoin/StarcoinSignMessage.d.ts.map +1 -1
- package/dist/api/starcoin/StarcoinSignTransaction.d.ts +1 -1
- package/dist/api/starcoin/StarcoinSignTransaction.d.ts.map +1 -1
- package/dist/api/starcoin/StarcoinVerifyMessage.d.ts +1 -1
- package/dist/api/starcoin/StarcoinVerifyMessage.d.ts.map +1 -1
- package/dist/api/stellar/StellarGetAddress.d.ts +2 -2
- package/dist/api/stellar/StellarGetAddress.d.ts.map +1 -1
- package/dist/api/stellar/StellarSignTransaction.d.ts +3 -3
- package/dist/api/stellar/StellarSignTransaction.d.ts.map +1 -1
- package/dist/api/sui/SuiGetAddress.d.ts +2 -2
- package/dist/api/sui/SuiGetAddress.d.ts.map +1 -1
- package/dist/api/sui/SuiGetPublicKey.d.ts +1 -1
- package/dist/api/sui/SuiGetPublicKey.d.ts.map +1 -1
- package/dist/api/sui/SuiSignMessage.d.ts +1 -1
- package/dist/api/sui/SuiSignMessage.d.ts.map +1 -1
- package/dist/api/sui/SuiSignTransaction.d.ts +1 -1
- package/dist/api/sui/SuiSignTransaction.d.ts.map +1 -1
- package/dist/api/ton/TonGetAddress.d.ts +2 -2
- package/dist/api/ton/TonGetAddress.d.ts.map +1 -1
- package/dist/api/ton/TonSignMessage.d.ts +2 -2
- package/dist/api/ton/TonSignMessage.d.ts.map +1 -1
- package/dist/api/ton/TonSignProof.d.ts +1 -1
- package/dist/api/ton/TonSignProof.d.ts.map +1 -1
- package/dist/api/tron/TronGetAddress.d.ts +2 -2
- package/dist/api/tron/TronGetAddress.d.ts.map +1 -1
- package/dist/api/tron/TronSignMessage.d.ts +4 -1
- package/dist/api/tron/TronSignMessage.d.ts.map +1 -1
- package/dist/api/tron/TronSignTransaction.d.ts +3 -3
- package/dist/api/tron/TronSignTransaction.d.ts.map +1 -1
- package/dist/api/u2f/GetNextU2FCounter.d.ts +1 -1
- package/dist/api/u2f/GetNextU2FCounter.d.ts.map +1 -1
- package/dist/api/u2f/SetU2FCounter.d.ts +1 -1
- package/dist/api/u2f/SetU2FCounter.d.ts.map +1 -1
- package/dist/api/utils.d.ts +1 -1
- package/dist/api/utils.d.ts.map +1 -1
- package/dist/api/xrp/XrpGetAddress.d.ts +1 -1
- package/dist/api/xrp/XrpGetAddress.d.ts.map +1 -1
- package/dist/api/xrp/XrpSignTransaction.d.ts +1 -1
- package/dist/api/xrp/XrpSignTransaction.d.ts.map +1 -1
- package/dist/core/RequestQueue.d.ts +1 -1
- package/dist/core/RequestQueue.d.ts.map +1 -1
- package/dist/core/index.d.ts +6 -3
- package/dist/core/index.d.ts.map +1 -1
- package/dist/data/config.d.ts.map +1 -1
- package/dist/data-manager/DataManager.d.ts +18 -10
- package/dist/data-manager/DataManager.d.ts.map +1 -1
- package/dist/data-manager/MessagesConfig.d.ts +2 -2
- package/dist/data-manager/MessagesConfig.d.ts.map +1 -1
- package/dist/data-manager/TransportManager.d.ts +3 -3
- package/dist/data-manager/TransportManager.d.ts.map +1 -1
- package/dist/data-manager/connectSettings.d.ts +1 -1
- package/dist/data-manager/connectSettings.d.ts.map +1 -1
- package/dist/device/Device.d.ts +17 -8
- 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 +3 -2
- package/dist/device/DeviceConnector.d.ts.map +1 -1
- package/dist/device/DeviceList.d.ts +2 -2
- package/dist/device/DeviceList.d.ts.map +1 -1
- package/dist/device/DevicePool.d.ts +3 -2
- package/dist/device/DevicePool.d.ts.map +1 -1
- package/dist/events/call.d.ts +2 -2
- package/dist/events/call.d.ts.map +1 -1
- package/dist/events/core.d.ts +8 -8
- package/dist/events/core.d.ts.map +1 -1
- package/dist/events/device.d.ts +3 -2
- package/dist/events/device.d.ts.map +1 -1
- package/dist/events/firmware.d.ts +2 -2
- package/dist/events/firmware.d.ts.map +1 -1
- package/dist/events/iframe.d.ts +2 -2
- package/dist/events/iframe.d.ts.map +1 -1
- package/dist/events/ui-request.d.ts +9 -1
- package/dist/events/ui-request.d.ts.map +1 -1
- package/dist/events/ui-response.d.ts +8 -1
- package/dist/events/ui-response.d.ts.map +1 -1
- package/dist/index.d.ts +188 -74
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +1647 -634
- package/dist/inject.d.ts +3 -3
- package/dist/inject.d.ts.map +1 -1
- package/dist/lowLevelInject.d.ts +3 -3
- package/dist/lowLevelInject.d.ts.map +1 -1
- package/dist/topLevelInject.d.ts +1 -1
- package/dist/topLevelInject.d.ts.map +1 -1
- package/dist/types/api/alephiumSignMessage.d.ts +1 -1
- package/dist/types/api/alephiumSignMessage.d.ts.map +1 -1
- package/dist/types/api/alephiumSignTransaction.d.ts +1 -1
- package/dist/types/api/alephiumSignTransaction.d.ts.map +1 -1
- package/dist/types/api/algoGetAddress.d.ts +1 -1
- package/dist/types/api/algoGetAddress.d.ts.map +1 -1
- package/dist/types/api/algoSignTransaction.d.ts +1 -1
- package/dist/types/api/algoSignTransaction.d.ts.map +1 -1
- package/dist/types/api/allNetworkGetAddress.d.ts +1 -1
- package/dist/types/api/allNetworkGetAddress.d.ts.map +1 -1
- package/dist/types/api/aptosGetAddress.d.ts +1 -1
- package/dist/types/api/aptosGetAddress.d.ts.map +1 -1
- package/dist/types/api/aptosSignInMessage.d.ts +1 -1
- package/dist/types/api/aptosSignInMessage.d.ts.map +1 -1
- package/dist/types/api/aptosSignMessage.d.ts +1 -1
- package/dist/types/api/aptosSignMessage.d.ts.map +1 -1
- package/dist/types/api/aptosSignTransaction.d.ts +1 -1
- package/dist/types/api/aptosSignTransaction.d.ts.map +1 -1
- package/dist/types/api/benfenGetAddress.d.ts +1 -1
- package/dist/types/api/benfenGetAddress.d.ts.map +1 -1
- package/dist/types/api/benfenSignMessage.d.ts +1 -1
- package/dist/types/api/benfenSignMessage.d.ts.map +1 -1
- package/dist/types/api/benfenSignTransaction.d.ts +1 -1
- package/dist/types/api/benfenSignTransaction.d.ts.map +1 -1
- package/dist/types/api/btcGetAddress.d.ts +1 -1
- package/dist/types/api/btcGetAddress.d.ts.map +1 -1
- package/dist/types/api/btcGetPublicKey.d.ts +1 -1
- package/dist/types/api/btcGetPublicKey.d.ts.map +1 -1
- package/dist/types/api/btcSignMessage.d.ts +1 -1
- package/dist/types/api/btcSignMessage.d.ts.map +1 -1
- package/dist/types/api/btcSignPsbt.d.ts +1 -1
- package/dist/types/api/btcSignPsbt.d.ts.map +1 -1
- package/dist/types/api/btcSignTransaction.d.ts +1 -1
- package/dist/types/api/btcSignTransaction.d.ts.map +1 -1
- package/dist/types/api/btcVerifyMessage.d.ts +1 -1
- package/dist/types/api/btcVerifyMessage.d.ts.map +1 -1
- package/dist/types/api/cardanoGetPublicKey.d.ts +1 -1
- package/dist/types/api/cardanoGetPublicKey.d.ts.map +1 -1
- package/dist/types/api/cardanoSignMessage.d.ts +1 -1
- package/dist/types/api/cardanoSignMessage.d.ts.map +1 -1
- package/dist/types/api/checkAllFirmwareRelease.d.ts +5 -1
- package/dist/types/api/checkAllFirmwareRelease.d.ts.map +1 -1
- package/dist/types/api/checkBLEFirmwareRelease.d.ts +1 -1
- package/dist/types/api/checkBLEFirmwareRelease.d.ts.map +1 -1
- package/dist/types/api/checkBootloaderRelease.d.ts +5 -2
- package/dist/types/api/checkBootloaderRelease.d.ts.map +1 -1
- package/dist/types/api/checkFirmwareRelease.d.ts +6 -2
- package/dist/types/api/checkFirmwareRelease.d.ts.map +1 -1
- package/dist/types/api/checkFirmwareTypeAvailable.d.ts +9 -0
- package/dist/types/api/checkFirmwareTypeAvailable.d.ts.map +1 -0
- package/dist/types/api/cipherKeyValue.d.ts +1 -1
- package/dist/types/api/cipherKeyValue.d.ts.map +1 -1
- package/dist/types/api/confluxGetAddress.d.ts +1 -1
- package/dist/types/api/confluxGetAddress.d.ts.map +1 -1
- package/dist/types/api/confluxSignMessage.d.ts +1 -1
- package/dist/types/api/confluxSignMessage.d.ts.map +1 -1
- package/dist/types/api/confluxSignMessageCIP23.d.ts +1 -1
- package/dist/types/api/confluxSignMessageCIP23.d.ts.map +1 -1
- package/dist/types/api/cosmosGetAddress.d.ts +1 -1
- package/dist/types/api/cosmosGetAddress.d.ts.map +1 -1
- package/dist/types/api/cosmosSignTransaction.d.ts +1 -1
- package/dist/types/api/cosmosSignTransaction.d.ts.map +1 -1
- package/dist/types/api/deviceBackup.d.ts +1 -1
- package/dist/types/api/deviceBackup.d.ts.map +1 -1
- package/dist/types/api/deviceCancel.d.ts +1 -1
- package/dist/types/api/deviceCancel.d.ts.map +1 -1
- package/dist/types/api/deviceChangePin.d.ts +1 -1
- package/dist/types/api/deviceChangePin.d.ts.map +1 -1
- package/dist/types/api/deviceFlags.d.ts +1 -1
- package/dist/types/api/deviceFlags.d.ts.map +1 -1
- package/dist/types/api/deviceFullyUploadResource.d.ts +6 -1
- package/dist/types/api/deviceFullyUploadResource.d.ts.map +1 -1
- package/dist/types/api/deviceLock.d.ts +1 -1
- package/dist/types/api/deviceLock.d.ts.map +1 -1
- package/dist/types/api/deviceRebootToBoardloader.d.ts +1 -1
- package/dist/types/api/deviceRebootToBoardloader.d.ts.map +1 -1
- package/dist/types/api/deviceRebootToBootloader.d.ts +1 -1
- package/dist/types/api/deviceRebootToBootloader.d.ts.map +1 -1
- package/dist/types/api/deviceRecovery.d.ts +1 -1
- package/dist/types/api/deviceRecovery.d.ts.map +1 -1
- package/dist/types/api/deviceReset.d.ts +1 -1
- package/dist/types/api/deviceReset.d.ts.map +1 -1
- package/dist/types/api/deviceSettings.d.ts +4 -1
- 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/deviceUpdateBootloader.d.ts +6 -3
- package/dist/types/api/deviceUpdateBootloader.d.ts.map +1 -1
- package/dist/types/api/deviceUploadResource.d.ts +6 -2
- package/dist/types/api/deviceUploadResource.d.ts.map +1 -1
- package/dist/types/api/deviceWipe.d.ts +1 -1
- package/dist/types/api/deviceWipe.d.ts.map +1 -1
- package/dist/types/api/dnxSignTransaction.d.ts +1 -1
- package/dist/types/api/dnxSignTransaction.d.ts.map +1 -1
- package/dist/types/api/evmGetPublicKey.d.ts +1 -1
- package/dist/types/api/evmGetPublicKey.d.ts.map +1 -1
- package/dist/types/api/evmSignMessage.d.ts +1 -1
- package/dist/types/api/evmSignMessage.d.ts.map +1 -1
- package/dist/types/api/evmSignMessageEIP712.d.ts +1 -1
- package/dist/types/api/evmSignMessageEIP712.d.ts.map +1 -1
- package/dist/types/api/evmSignTypedData.d.ts +1 -1
- package/dist/types/api/evmSignTypedData.d.ts.map +1 -1
- package/dist/types/api/evmVerifyMessage.d.ts +1 -1
- package/dist/types/api/evmVerifyMessage.d.ts.map +1 -1
- package/dist/types/api/export.d.ts +2 -2
- package/dist/types/api/export.d.ts.map +1 -1
- package/dist/types/api/filecoinGetAddress.d.ts +1 -1
- package/dist/types/api/filecoinGetAddress.d.ts.map +1 -1
- package/dist/types/api/filecoinSignTransaction.d.ts +1 -1
- package/dist/types/api/filecoinSignTransaction.d.ts.map +1 -1
- package/dist/types/api/firmwareUpdate.d.ts +3 -1
- package/dist/types/api/firmwareUpdate.d.ts.map +1 -1
- package/dist/types/api/getNextU2FCounter.d.ts +1 -1
- package/dist/types/api/getNextU2FCounter.d.ts.map +1 -1
- package/dist/types/api/index.d.ts +130 -130
- package/dist/types/api/index.d.ts.map +1 -1
- package/dist/types/api/init.d.ts +1 -1
- package/dist/types/api/init.d.ts.map +1 -1
- package/dist/types/api/kaspaGetAddress.d.ts +1 -1
- package/dist/types/api/kaspaGetAddress.d.ts.map +1 -1
- package/dist/types/api/kaspaSignTransaction.d.ts +1 -1
- package/dist/types/api/kaspaSignTransaction.d.ts.map +1 -1
- package/dist/types/api/nearGetAddress.d.ts +1 -1
- package/dist/types/api/nearGetAddress.d.ts.map +1 -1
- package/dist/types/api/nearSignTransaction.d.ts +1 -1
- package/dist/types/api/nearSignTransaction.d.ts.map +1 -1
- package/dist/types/api/nemGetAddress.d.ts +1 -1
- package/dist/types/api/nemGetAddress.d.ts.map +1 -1
- package/dist/types/api/nemSignTransaction.d.ts +1 -1
- package/dist/types/api/nemSignTransaction.d.ts.map +1 -1
- package/dist/types/api/polkadotGetAddress.d.ts +1 -1
- package/dist/types/api/polkadotGetAddress.d.ts.map +1 -1
- package/dist/types/api/polkadotSignTransaction.d.ts +2 -1
- package/dist/types/api/polkadotSignTransaction.d.ts.map +1 -1
- package/dist/types/api/promptWebDeviceAccess.d.ts +2 -2
- package/dist/types/api/promptWebDeviceAccess.d.ts.map +1 -1
- package/dist/types/api/scdoGetAddress.d.ts +1 -1
- package/dist/types/api/scdoGetAddress.d.ts.map +1 -1
- package/dist/types/api/scdoSignMessage.d.ts +1 -1
- package/dist/types/api/scdoSignMessage.d.ts.map +1 -1
- package/dist/types/api/scdoSignTransaction.d.ts +1 -1
- package/dist/types/api/scdoSignTransaction.d.ts.map +1 -1
- package/dist/types/api/searchDevices.d.ts +2 -2
- package/dist/types/api/searchDevices.d.ts.map +1 -1
- package/dist/types/api/setU2FCounter.d.ts +1 -1
- package/dist/types/api/setU2FCounter.d.ts.map +1 -1
- package/dist/types/api/solGetAddress.d.ts +1 -1
- package/dist/types/api/solGetAddress.d.ts.map +1 -1
- package/dist/types/api/solSignOffchainMessage.d.ts +1 -1
- package/dist/types/api/solSignOffchainMessage.d.ts.map +1 -1
- package/dist/types/api/solSignTransaction.d.ts +2 -1
- package/dist/types/api/solSignTransaction.d.ts.map +1 -1
- package/dist/types/api/starcoinGetAddress.d.ts +1 -1
- package/dist/types/api/starcoinGetAddress.d.ts.map +1 -1
- package/dist/types/api/starcoinGetPublicKey.d.ts +1 -1
- package/dist/types/api/starcoinGetPublicKey.d.ts.map +1 -1
- package/dist/types/api/starcoinSignMessage.d.ts +1 -1
- package/dist/types/api/starcoinSignMessage.d.ts.map +1 -1
- package/dist/types/api/starcoinSignTransaction.d.ts +1 -1
- package/dist/types/api/starcoinSignTransaction.d.ts.map +1 -1
- package/dist/types/api/starcoinVerifyMessage.d.ts +1 -1
- package/dist/types/api/starcoinVerifyMessage.d.ts.map +1 -1
- package/dist/types/api/stellarGetAddress.d.ts +1 -1
- package/dist/types/api/stellarGetAddress.d.ts.map +1 -1
- package/dist/types/api/stellarSignTransaction.d.ts +2 -2
- package/dist/types/api/stellarSignTransaction.d.ts.map +1 -1
- package/dist/types/api/suiGetAddress.d.ts +1 -1
- package/dist/types/api/suiGetAddress.d.ts.map +1 -1
- package/dist/types/api/suiSignMessage.d.ts +1 -1
- package/dist/types/api/suiSignMessage.d.ts.map +1 -1
- package/dist/types/api/suiSignTransaction.d.ts +1 -1
- package/dist/types/api/suiSignTransaction.d.ts.map +1 -1
- package/dist/types/api/tonGetAddress.d.ts +1 -1
- package/dist/types/api/tonGetAddress.d.ts.map +1 -1
- package/dist/types/api/tronGetAddress.d.ts +1 -1
- package/dist/types/api/tronGetAddress.d.ts.map +1 -1
- package/dist/types/api/tronSignMessage.d.ts +1 -1
- package/dist/types/api/tronSignMessage.d.ts.map +1 -1
- package/dist/types/api/tronSignTransaction.d.ts +1 -1
- package/dist/types/api/tronSignTransaction.d.ts.map +1 -1
- package/dist/types/device.d.ts +7 -1
- 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 +7 -2
- package/dist/types/settings.d.ts.map +1 -1
- package/dist/utils/bridgeUpdate.d.ts +1 -1
- package/dist/utils/bridgeUpdate.d.ts.map +1 -1
- package/dist/utils/capabilitieUtils.d.ts +2 -2
- package/dist/utils/capabilitieUtils.d.ts.map +1 -1
- package/dist/utils/deviceFeaturesUtils.d.ts +8 -5
- package/dist/utils/deviceFeaturesUtils.d.ts.map +1 -1
- package/dist/utils/deviceInfoUtils.d.ts.map +1 -1
- package/dist/utils/deviceSettings.d.ts +29 -0
- package/dist/utils/deviceSettings.d.ts.map +1 -0
- package/dist/utils/deviceVersionUtils.d.ts.map +1 -1
- package/dist/utils/findDefectiveBatchDevice.d.ts.map +1 -1
- package/dist/utils/homescreen.d.ts.map +1 -1
- package/dist/utils/index.d.ts +2 -0
- package/dist/utils/index.d.ts.map +1 -1
- package/dist/utils/logger.d.ts +3 -1
- package/dist/utils/logger.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/release.d.ts +1 -1
- package/dist/utils/release.d.ts.map +1 -1
- package/dist/utils/tracing.d.ts +34 -0
- package/dist/utils/tracing.d.ts.map +1 -0
- package/package.json +7 -9
- package/src/api/BaseMethod.ts +63 -14
- package/src/api/CheckAllFirmwareRelease.ts +14 -6
- package/src/api/CheckBLEFirmwareRelease.ts +0 -1
- package/src/api/CheckBootloaderRelease.ts +13 -2
- package/src/api/CheckBridgeRelease.ts +1 -1
- package/src/api/CheckBridgeStatus.ts +1 -0
- package/src/api/CheckFirmwareRelease.ts +9 -2
- package/src/api/CheckFirmwareTypeAvailable.tsx +30 -0
- package/src/api/CipherKeyValue.ts +3 -2
- package/src/api/FirmwareUpdate.ts +9 -6
- package/src/api/FirmwareUpdateV2.ts +33 -16
- package/src/api/FirmwareUpdateV3.ts +154 -31
- package/src/api/GetFeatures.ts +1 -0
- package/src/api/GetPassphraseState.ts +1 -0
- package/src/api/GetUkeyFeatures.ts +1 -0
- package/src/api/PromptWebDeviceAccess.ts +4 -2
- package/src/api/SearchDevices.ts +2 -1
- package/src/api/alephium/AlephiumGetAddress.ts +3 -2
- package/src/api/alephium/AlephiumSignMessage.ts +2 -1
- package/src/api/alephium/AlephiumSignTransaction.ts +2 -1
- package/src/api/algo/AlgoGetAddress.ts +3 -3
- package/src/api/algo/AlgoSignTransaction.ts +3 -2
- package/src/api/allnetwork/AllNetworkGetAddress.ts +5 -4
- package/src/api/allnetwork/AllNetworkGetAddressBase.ts +81 -32
- package/src/api/allnetwork/AllNetworkGetAddressByLoop.ts +6 -5
- package/src/api/aptos/AptosGetAddress.ts +4 -3
- package/src/api/aptos/AptosGetPublicKey.ts +2 -1
- package/src/api/aptos/AptosSignInMessage.ts +3 -2
- package/src/api/aptos/AptosSignMessage.ts +3 -2
- package/src/api/aptos/AptosSignTransaction.ts +2 -1
- package/src/api/benfen/BenfenGetAddress.ts +3 -3
- package/src/api/benfen/BenfenGetPublicKey.ts +2 -1
- package/src/api/benfen/BenfenSignMessage.ts +2 -1
- package/src/api/benfen/BenfenSignTransaction.ts +3 -2
- package/src/api/btc/BTCGetAddress.ts +3 -2
- package/src/api/btc/BTCGetPublicKey.ts +5 -3
- package/src/api/btc/BTCSignMessage.ts +2 -1
- package/src/api/btc/BTCSignPsbt.ts +4 -2
- package/src/api/btc/BTCSignTransaction.ts +8 -7
- package/src/api/btc/BTCVerifyMessage.ts +2 -2
- package/src/api/btc/helpers/btcParamsUtils.ts +2 -1
- package/src/api/btc/helpers/signtx.ts +4 -3
- package/src/api/btc/helpers/signtxLegacy.ts +4 -3
- package/src/api/btc/helpers/xpubUtils.ts +1 -0
- package/src/api/cardano/CardanoGetAddress.ts +5 -4
- package/src/api/cardano/CardanoGetPublicKey.ts +2 -1
- package/src/api/cardano/CardanoSignMessage.ts +2 -1
- package/src/api/cardano/CardanoSignTransaction.ts +11 -10
- package/src/api/cardano/helper/addressParameters.ts +2 -0
- package/src/api/cardano/helper/auxiliaryData.ts +5 -3
- package/src/api/cardano/helper/cardanoInputs.ts +1 -0
- package/src/api/cardano/helper/cardanoOutputs.ts +1 -0
- package/src/api/cardano/helper/certificate.ts +7 -5
- package/src/api/cardano/helper/token.ts +2 -1
- package/src/api/cardano/helper/witnesses.ts +3 -2
- package/src/api/conflux/ConfluxGetAddress.ts +3 -2
- package/src/api/conflux/ConfluxSignMessage.ts +2 -1
- package/src/api/conflux/ConfluxSignMessageCIP23.ts +2 -1
- package/src/api/conflux/ConfluxSignTransaction.ts +9 -8
- package/src/api/cosmos/CosmosGetAddress.ts +3 -3
- package/src/api/cosmos/CosmosGetPublicKey.ts +2 -1
- package/src/api/cosmos/CosmosSignTransaction.ts +24 -10
- package/src/api/device/DeviceBackup.ts +2 -1
- package/src/api/device/DeviceCancel.ts +2 -1
- package/src/api/device/DeviceChangePin.ts +2 -1
- package/src/api/device/DeviceFlags.ts +2 -1
- package/src/api/device/DeviceFullyUploadResource.ts +13 -4
- package/src/api/device/DeviceLock.ts +2 -1
- package/src/api/device/DeviceRebootToBoardloader.ts +1 -0
- package/src/api/device/DeviceRebootToBootloader.ts +2 -1
- package/src/api/device/DeviceRecovery.ts +2 -1
- package/src/api/device/DeviceReset.ts +2 -1
- package/src/api/device/DeviceSettings.ts +45 -5
- package/src/api/device/DeviceSupportFeatures.ts +1 -0
- package/src/api/device/DeviceUnlock.ts +2 -1
- package/src/api/device/DeviceUpdateBootloader.ts +72 -39
- package/src/api/device/DeviceUpdateReboot.ts +2 -1
- package/src/api/device/DeviceUploadResource.ts +87 -23
- package/src/api/device/DeviceVerify.ts +3 -1
- package/src/api/device/DeviceWipe.ts +2 -1
- package/src/api/dynex/DnxGetAddress.ts +2 -2
- package/src/api/dynex/DnxSignTransaction.ts +3 -3
- package/src/api/evm/EVMGetAddress.ts +3 -2
- package/src/api/evm/EVMGetPublicKey.ts +3 -2
- package/src/api/evm/EVMSignMessage.ts +2 -1
- package/src/api/evm/EVMSignMessageEIP712.ts +2 -1
- package/src/api/evm/EVMSignTransaction.ts +9 -6
- package/src/api/evm/EVMSignTypedData.ts +25 -22
- package/src/api/evm/EVMVerifyMessage.ts +2 -1
- package/src/api/evm/latest/getAddress.ts +1 -1
- package/src/api/evm/latest/getPublicKey.ts +5 -1
- package/src/api/evm/latest/signMessage.ts +1 -1
- package/src/api/evm/latest/signTransaction.ts +12 -10
- package/src/api/evm/latest/signTypedData.ts +2 -2
- package/src/api/evm/latest/signTypedHash.ts +4 -2
- package/src/api/evm/latest/verifyMessage.ts +1 -1
- package/src/api/evm/legacyV1/getAddress.ts +1 -1
- package/src/api/evm/legacyV1/getPublicKey.ts +5 -1
- package/src/api/evm/legacyV1/signMessage.ts +1 -1
- package/src/api/evm/legacyV1/signTransaction.ts +3 -2
- package/src/api/evm/legacyV1/signTypedData.ts +2 -2
- package/src/api/evm/legacyV1/signTypedHash.ts +4 -2
- package/src/api/evm/legacyV1/verifyMessage.ts +1 -1
- package/src/api/filecoin/FilecoinGetAddress.ts +3 -2
- package/src/api/filecoin/FilecoinSignTransaction.ts +3 -2
- package/src/api/firmware/FirmwareUpdateBaseMethod.ts +87 -28
- package/src/api/firmware/bootloaderHelper.ts +3 -1
- package/src/api/firmware/getBinary.ts +15 -4
- package/src/api/firmware/releaseHelper.ts +22 -11
- package/src/api/firmware/updateBootloader.ts +22 -11
- package/src/api/firmware/uploadFirmware.ts +113 -25
- package/src/api/helpers/batchGetPublickeys.ts +14 -6
- package/src/api/helpers/paramsValidator.ts +23 -6
- package/src/api/helpers/pathUtils.ts +2 -1
- package/src/api/helpers/typeNameUtils.ts +5 -3
- package/src/api/index.ts +1 -1
- package/src/api/kaspa/KaspaGetAddress.ts +3 -2
- package/src/api/kaspa/KaspaSignTransaction.ts +7 -5
- package/src/api/kaspa/helpers/HashWriter.ts +3 -1
- package/src/api/kaspa/helpers/TransferSerialize.ts +5 -4
- package/src/api/lightning/LnurlAuth.ts +2 -1
- package/src/api/near/NearGetAddress.ts +3 -2
- package/src/api/near/NearSignTransaction.ts +2 -1
- package/src/api/nem/NEMGetAddress.ts +4 -3
- package/src/api/nem/NEMSignTransaction.ts +9 -8
- package/src/api/neo/NeoGetAddress.ts +3 -2
- package/src/api/neo/NeoSignTransaction.ts +2 -2
- package/src/api/nervos/NervosGetAddress.ts +2 -2
- package/src/api/nervos/NervosSignTransaction.ts +4 -2
- package/src/api/nexa/NexaGetAddress.ts +3 -2
- package/src/api/nexa/NexaSignTransaction.ts +5 -3
- package/src/api/nostr/NostrDecryptMessage.ts +2 -1
- package/src/api/nostr/NostrEncryptMessage.ts +2 -1
- package/src/api/nostr/NostrGetPublicKey.ts +4 -3
- package/src/api/nostr/NostrSignEvent.ts +3 -1
- package/src/api/nostr/NostrSignSchnorr.ts +2 -1
- package/src/api/nostr/helper/index.ts +1 -1
- package/src/api/polkadot/PolkadotGetAddress.ts +5 -5
- package/src/api/polkadot/PolkadotSignTransaction.ts +8 -5
- package/src/api/polkadot/networks.ts +16 -0
- package/src/api/scdo/ScdoGetAddress.ts +3 -2
- package/src/api/scdo/ScdoSignMessage.ts +2 -1
- package/src/api/scdo/ScdoSignTransaction.ts +9 -3
- package/src/api/solana/SolGetAddress.ts +3 -2
- package/src/api/solana/SolSignMessage.ts +2 -1
- package/src/api/solana/SolSignOffchainMessage.ts +2 -1
- package/src/api/solana/SolSignTransaction.ts +5 -2
- package/src/api/starcoin/StarcoinGetAddress.ts +4 -3
- package/src/api/starcoin/StarcoinGetPublicKey.ts +5 -4
- package/src/api/starcoin/StarcoinSignMessage.ts +2 -1
- package/src/api/starcoin/StarcoinSignTransaction.ts +2 -1
- package/src/api/starcoin/StarcoinVerifyMessage.ts +2 -1
- package/src/api/stellar/StellarGetAddress.ts +3 -2
- package/src/api/stellar/StellarSignTransaction.ts +8 -6
- package/src/api/sui/SuiGetAddress.ts +3 -3
- package/src/api/sui/SuiGetPublicKey.ts +2 -1
- package/src/api/sui/SuiSignMessage.ts +2 -1
- package/src/api/sui/SuiSignTransaction.ts +7 -1
- package/src/api/ton/TonGetAddress.ts +3 -3
- package/src/api/ton/TonSignMessage.ts +10 -7
- package/src/api/ton/TonSignProof.ts +3 -3
- package/src/api/tron/TronGetAddress.ts +3 -2
- package/src/api/tron/TronSignMessage.ts +12 -8
- package/src/api/tron/TronSignTransaction.ts +14 -3
- package/src/api/u2f/GetNextU2FCounter.ts +2 -1
- package/src/api/u2f/SetU2FCounter.ts +2 -1
- package/src/api/utils.ts +3 -1
- package/src/api/xrp/XrpGetAddress.ts +2 -20
- package/src/api/xrp/XrpSignTransaction.ts +2 -1
- package/src/constants/errors.ts +1 -1
- package/src/core/RequestQueue.ts +3 -2
- package/src/core/index.ts +203 -50
- package/src/data/config.ts +4 -4
- package/src/data/messages/messages.json +98 -1
- package/src/data/messages/messages_legacy_v1.json +12 -0
- package/src/data-manager/DataManager.ts +180 -36
- package/src/data-manager/MessagesConfig.ts +12 -4
- package/src/data-manager/TransportManager.ts +12 -6
- package/src/data-manager/connectSettings.ts +3 -2
- package/src/device/Device.ts +54 -28
- package/src/device/DeviceCommands.ts +56 -14
- package/src/device/DeviceConnector.ts +15 -3
- package/src/device/DeviceList.ts +4 -2
- package/src/device/DevicePool.ts +6 -3
- package/src/events/call.ts +3 -2
- package/src/events/core.ts +10 -9
- package/src/events/device.ts +3 -2
- package/src/events/firmware.ts +5 -2
- package/src/events/iframe.ts +3 -2
- package/src/events/ui-request.ts +11 -0
- package/src/events/ui-response.ts +12 -1
- package/src/index.ts +6 -3
- package/src/inject.ts +5 -5
- package/src/lowLevelInject.ts +4 -3
- package/src/topLevelInject.ts +4 -2
- package/src/types/api/alephiumSignMessage.ts +1 -1
- package/src/types/api/alephiumSignTransaction.ts +1 -1
- package/src/types/api/algoGetAddress.ts +1 -1
- package/src/types/api/algoSignTransaction.ts +1 -1
- package/src/types/api/allNetworkGetAddress.ts +2 -1
- package/src/types/api/aptosGetAddress.ts +1 -1
- package/src/types/api/aptosSignInMessage.ts +1 -1
- package/src/types/api/aptosSignMessage.ts +1 -1
- package/src/types/api/aptosSignTransaction.ts +1 -1
- package/src/types/api/benfenGetAddress.ts +1 -1
- package/src/types/api/benfenSignMessage.ts +1 -1
- package/src/types/api/benfenSignTransaction.ts +1 -1
- package/src/types/api/btcGetAddress.ts +1 -1
- package/src/types/api/btcGetPublicKey.ts +1 -1
- package/src/types/api/btcSignMessage.ts +1 -1
- package/src/types/api/btcSignPsbt.ts +1 -1
- package/src/types/api/btcSignTransaction.ts +2 -2
- package/src/types/api/btcVerifyMessage.ts +1 -1
- package/src/types/api/cardanoGetPublicKey.ts +1 -1
- package/src/types/api/cardanoSignMessage.ts +1 -1
- package/src/types/api/checkAllFirmwareRelease.ts +5 -1
- package/src/types/api/checkBLEFirmwareRelease.ts +1 -1
- package/src/types/api/checkBootloaderRelease.ts +7 -3
- package/src/types/api/checkFirmwareRelease.ts +10 -2
- package/src/types/api/checkFirmwareTypeAvailable.ts +12 -0
- package/src/types/api/cipherKeyValue.ts +1 -1
- package/src/types/api/confluxGetAddress.ts +1 -1
- package/src/types/api/confluxSignMessage.ts +1 -1
- package/src/types/api/confluxSignMessageCIP23.ts +1 -1
- package/src/types/api/cosmosGetAddress.ts +1 -1
- package/src/types/api/cosmosSignTransaction.ts +1 -1
- package/src/types/api/deviceBackup.ts +1 -1
- package/src/types/api/deviceCancel.ts +1 -1
- package/src/types/api/deviceChangePin.ts +1 -1
- package/src/types/api/deviceFlags.ts +1 -1
- package/src/types/api/deviceFullyUploadResource.ts +7 -1
- package/src/types/api/deviceLock.ts +1 -1
- package/src/types/api/deviceRebootToBoardloader.ts +1 -1
- package/src/types/api/deviceRebootToBootloader.ts +1 -1
- package/src/types/api/deviceRecovery.ts +1 -1
- package/src/types/api/deviceReset.ts +1 -1
- package/src/types/api/deviceSettings.ts +4 -1
- package/src/types/api/deviceUnlock.ts +1 -1
- package/src/types/api/deviceUpdateBootloader.ts +8 -4
- package/src/types/api/deviceUploadResource.ts +7 -2
- package/src/types/api/deviceWipe.ts +1 -1
- package/src/types/api/dnxSignTransaction.ts +1 -1
- package/src/types/api/evmGetPublicKey.ts +1 -1
- package/src/types/api/evmSignMessage.ts +1 -1
- package/src/types/api/evmSignMessageEIP712.ts +1 -1
- package/src/types/api/evmSignTypedData.ts +1 -1
- package/src/types/api/evmVerifyMessage.ts +1 -1
- package/src/types/api/export.ts +5 -2
- package/src/types/api/filecoinGetAddress.ts +1 -1
- package/src/types/api/filecoinSignTransaction.ts +1 -1
- package/src/types/api/firmwareUpdate.ts +4 -1
- package/src/types/api/getNextU2FCounter.ts +1 -1
- package/src/types/api/index.ts +130 -163
- package/src/types/api/init.ts +1 -1
- package/src/types/api/kaspaGetAddress.ts +1 -1
- package/src/types/api/kaspaSignTransaction.ts +1 -1
- package/src/types/api/nearGetAddress.ts +1 -1
- package/src/types/api/nearSignTransaction.ts +1 -1
- package/src/types/api/nemGetAddress.ts +1 -1
- package/src/types/api/nemSignTransaction.ts +1 -1
- package/src/types/api/polkadotGetAddress.ts +1 -1
- package/src/types/api/polkadotSignTransaction.ts +2 -1
- package/src/types/api/promptWebDeviceAccess.ts +2 -2
- package/src/types/api/scdoGetAddress.ts +1 -1
- package/src/types/api/scdoSignMessage.ts +1 -1
- package/src/types/api/scdoSignTransaction.ts +1 -1
- package/src/types/api/searchDevices.ts +2 -3
- package/src/types/api/setU2FCounter.ts +1 -1
- package/src/types/api/solGetAddress.ts +1 -1
- package/src/types/api/solSignOffchainMessage.ts +4 -1
- package/src/types/api/solSignTransaction.ts +5 -1
- package/src/types/api/starcoinGetAddress.ts +1 -1
- package/src/types/api/starcoinGetPublicKey.ts +1 -1
- package/src/types/api/starcoinSignMessage.ts +1 -1
- package/src/types/api/starcoinSignTransaction.ts +1 -1
- package/src/types/api/starcoinVerifyMessage.ts +1 -1
- package/src/types/api/stellarGetAddress.ts +1 -1
- package/src/types/api/stellarSignTransaction.ts +2 -2
- package/src/types/api/suiGetAddress.ts +1 -1
- package/src/types/api/suiSignMessage.ts +1 -1
- package/src/types/api/suiSignTransaction.ts +1 -1
- package/src/types/api/tonGetAddress.ts +1 -1
- package/src/types/api/tronGetAddress.ts +1 -1
- package/src/types/api/tronSignMessage.ts +1 -1
- package/src/types/api/tronSignTransaction.ts +1 -1
- package/src/types/device.ts +10 -1
- package/src/types/params.ts +5 -0
- package/src/types/settings.ts +51 -11
- package/src/utils/bridgeUpdate.ts +4 -1
- package/src/utils/capabilitieUtils.ts +2 -2
- package/src/utils/deviceFeaturesUtils.ts +27 -15
- package/src/utils/deviceInfoUtils.ts +2 -1
- package/src/utils/deviceSettings.ts +109 -0
- package/src/utils/deviceVersionUtils.ts +1 -0
- package/src/utils/findDefectiveBatchDevice.ts +2 -1
- package/src/utils/homescreen.ts +3 -1
- package/src/utils/index.ts +2 -0
- package/src/utils/logger.ts +5 -2
- package/src/utils/release.ts +2 -1
- package/src/utils/tracing.ts +238 -0
- package/dist/api/EmmcFileWrite.d.ts +0 -13
- package/dist/api/EmmcFileWrite.d.ts.map +0 -1
- package/dist/types/api/emmcFileWrite.d.ts +0 -8
- package/dist/types/api/emmcFileWrite.d.ts.map +0 -1
- package/src/api/EmmcFileWrite.ts +0 -49
- package/src/types/api/emmcFileWrite.ts +0 -12
package/dist/index.js
CHANGED
|
@@ -14,7 +14,6 @@ var blake2s = require('@noble/hashes/blake2s');
|
|
|
14
14
|
var sha256 = require('@noble/hashes/sha256');
|
|
15
15
|
var JSZip = require('jszip');
|
|
16
16
|
var sha3 = require('@noble/hashes/sha3');
|
|
17
|
-
var rippleKeypairs = require('ripple-keypairs');
|
|
18
17
|
var blake2b = require('@noble/hashes/blake2b');
|
|
19
18
|
var buffer = require('buffer');
|
|
20
19
|
|
|
@@ -129,6 +128,7 @@ const createCoreApi = (call) => ({
|
|
|
129
128
|
checkBridgeRelease: (connectId, params) => call(Object.assign(Object.assign({}, params), { connectId, method: 'checkBridgeRelease' })),
|
|
130
129
|
checkBootloaderRelease: (connectId, params) => call(Object.assign(Object.assign({}, params), { connectId, method: 'checkBootloaderRelease' })),
|
|
131
130
|
checkAllFirmwareRelease: (connectId, params) => call(Object.assign(Object.assign({}, params), { connectId, method: 'checkAllFirmwareRelease' })),
|
|
131
|
+
checkFirmwareTypeAvailable: params => call(Object.assign(Object.assign({}, params), { method: 'checkFirmwareTypeAvailable' })),
|
|
132
132
|
cipherKeyValue: (connectId, deviceId, params) => call(Object.assign(Object.assign({}, params), { connectId, deviceId, method: 'cipherKeyValue' })),
|
|
133
133
|
testInitializeDeviceDuration: (connectId, params) => call(Object.assign(Object.assign({}, params), { connectId, method: 'testInitializeDeviceDuration' })),
|
|
134
134
|
deviceBackup: connectId => call({ connectId, method: 'deviceBackup' }),
|
|
@@ -196,7 +196,6 @@ const createCoreApi = (call) => ({
|
|
|
196
196
|
firmwareUpdate: (connectId, params) => call(Object.assign(Object.assign({}, params), { connectId, method: 'firmwareUpdate' })),
|
|
197
197
|
firmwareUpdateV2: (connectId, params) => call(Object.assign(Object.assign({}, params), { connectId, method: 'firmwareUpdateV2' })),
|
|
198
198
|
firmwareUpdateV3: (connectId, params) => call(Object.assign(Object.assign({}, params), { connectId, method: 'firmwareUpdateV3' })),
|
|
199
|
-
emmcFileWrite: (connectId, params) => call(Object.assign(Object.assign({}, params), { connectId, method: 'emmcFileWrite' })),
|
|
200
199
|
promptWebDeviceAccess: params => call(Object.assign(Object.assign({}, params), { method: 'promptWebDeviceAccess' })),
|
|
201
200
|
tronGetAddress: (connectId, deviceId, params) => call(Object.assign(Object.assign({}, params), { connectId, deviceId, method: 'tronGetAddress' })),
|
|
202
201
|
tronSignMessage: (connectId, deviceId, params) => call(Object.assign(Object.assign({}, params), { connectId, deviceId, method: 'tronSignMessage' })),
|
|
@@ -788,7 +787,7 @@ const createLogMessage = (type, payload) => ({
|
|
|
788
787
|
|
|
789
788
|
const MAX_ENTRIES = 500;
|
|
790
789
|
let postMessage$1;
|
|
791
|
-
class Log$
|
|
790
|
+
class Log$g {
|
|
792
791
|
constructor(prefix, enabled) {
|
|
793
792
|
this.prefix = prefix;
|
|
794
793
|
this.enabled = enabled;
|
|
@@ -840,7 +839,7 @@ class Log$e {
|
|
|
840
839
|
}
|
|
841
840
|
const _logs = {};
|
|
842
841
|
const initLog = (prefix, enabled) => {
|
|
843
|
-
const instance = new Log$
|
|
842
|
+
const instance = new Log$g(prefix, !!enabled);
|
|
844
843
|
_logs[prefix] = instance;
|
|
845
844
|
return instance;
|
|
846
845
|
};
|
|
@@ -908,6 +907,7 @@ exports.LoggerNames = void 0;
|
|
|
908
907
|
LoggerNames["HdTransportLowLevel"] = "@ukey/hardware-transport-lowlevel";
|
|
909
908
|
LoggerNames["HdBleTransport"] = "@ukey/hardware-ble-transport";
|
|
910
909
|
LoggerNames["HdWebBleTransport"] = "@ukey/hardware-web-ble-transport";
|
|
910
|
+
LoggerNames["HdTransportWebUsb"] = "@ukey/hardware-transport-webusb";
|
|
911
911
|
LoggerNames["Connect"] = "@ukey/connect";
|
|
912
912
|
LoggerNames["Iframe"] = "IFrame";
|
|
913
913
|
LoggerNames["SendMessage"] = "[SendMessage]";
|
|
@@ -926,6 +926,7 @@ const LoggerMap = {
|
|
|
926
926
|
[exports.LoggerNames.HdBleTransport]: initLog(exports.LoggerNames.HdBleTransport),
|
|
927
927
|
[exports.LoggerNames.HdWebBleTransport]: initLog(exports.LoggerNames.HdWebBleTransport),
|
|
928
928
|
[exports.LoggerNames.HdTransportLowLevel]: initLog(exports.LoggerNames.HdTransportLowLevel),
|
|
929
|
+
[exports.LoggerNames.HdTransportWebUsb]: initLog(exports.LoggerNames.HdTransportWebUsb),
|
|
929
930
|
[exports.LoggerNames.Connect]: initLog(exports.LoggerNames.Connect),
|
|
930
931
|
[exports.LoggerNames.Iframe]: initLog(exports.LoggerNames.Iframe),
|
|
931
932
|
[exports.LoggerNames.SendMessage]: initLog(exports.LoggerNames.SendMessage),
|
|
@@ -1034,6 +1035,108 @@ function patchFeatures(response) {
|
|
|
1034
1035
|
return response;
|
|
1035
1036
|
}
|
|
1036
1037
|
|
|
1038
|
+
const Log$f = getLogger(exports.LoggerNames.Core);
|
|
1039
|
+
let globalInstanceCounter = 0;
|
|
1040
|
+
let sdkInstanceCounter = 0;
|
|
1041
|
+
function generateSdkInstanceId() {
|
|
1042
|
+
sdkInstanceCounter++;
|
|
1043
|
+
const timestamp = Date.now().toString().slice(-6);
|
|
1044
|
+
return `SDK-${sdkInstanceCounter}-${timestamp}`;
|
|
1045
|
+
}
|
|
1046
|
+
function generateInstanceId(type, sdkInstanceId) {
|
|
1047
|
+
globalInstanceCounter++;
|
|
1048
|
+
const timestamp = Date.now().toString().slice(-6);
|
|
1049
|
+
const baseId = `${type}-${globalInstanceCounter}-${timestamp}`;
|
|
1050
|
+
return sdkInstanceId ? `${sdkInstanceId}.${baseId}` : baseId;
|
|
1051
|
+
}
|
|
1052
|
+
const sdkInstances = new Map();
|
|
1053
|
+
const globalActiveRequests = new Map();
|
|
1054
|
+
function createSdkTracingContext() {
|
|
1055
|
+
const sdkInstanceId = generateSdkInstanceId();
|
|
1056
|
+
const context = {
|
|
1057
|
+
sdkInstanceId,
|
|
1058
|
+
createdAt: Date.now(),
|
|
1059
|
+
activeRequests: new Map(),
|
|
1060
|
+
};
|
|
1061
|
+
sdkInstances.set(sdkInstanceId, context);
|
|
1062
|
+
return context;
|
|
1063
|
+
}
|
|
1064
|
+
function createRequestContext(responseID, methodName, options) {
|
|
1065
|
+
const context = {
|
|
1066
|
+
responseID,
|
|
1067
|
+
sdkInstanceId: options === null || options === void 0 ? void 0 : options.sdkInstanceId,
|
|
1068
|
+
methodName,
|
|
1069
|
+
connectId: options === null || options === void 0 ? void 0 : options.connectId,
|
|
1070
|
+
deviceInstanceId: options === null || options === void 0 ? void 0 : options.deviceInstanceId,
|
|
1071
|
+
commandsInstanceId: options === null || options === void 0 ? void 0 : options.commandsInstanceId,
|
|
1072
|
+
parentResponseID: options === null || options === void 0 ? void 0 : options.parentResponseID,
|
|
1073
|
+
startTime: Date.now(),
|
|
1074
|
+
status: 'pending',
|
|
1075
|
+
};
|
|
1076
|
+
globalActiveRequests.set(context.responseID, context);
|
|
1077
|
+
if (options === null || options === void 0 ? void 0 : options.sdkInstanceId) {
|
|
1078
|
+
const sdkContext = sdkInstances.get(options.sdkInstanceId);
|
|
1079
|
+
if (sdkContext) {
|
|
1080
|
+
sdkContext.activeRequests.set(context.responseID, context);
|
|
1081
|
+
}
|
|
1082
|
+
}
|
|
1083
|
+
return context;
|
|
1084
|
+
}
|
|
1085
|
+
function updateRequestContext(responseID, updates) {
|
|
1086
|
+
const context = globalActiveRequests.get(responseID);
|
|
1087
|
+
if (context) {
|
|
1088
|
+
Object.assign(context, updates);
|
|
1089
|
+
}
|
|
1090
|
+
}
|
|
1091
|
+
function completeRequestContext(responseID, error) {
|
|
1092
|
+
const context = globalActiveRequests.get(responseID);
|
|
1093
|
+
if (context) {
|
|
1094
|
+
context.endTime = Date.now();
|
|
1095
|
+
context.status = error ? 'error' : 'success';
|
|
1096
|
+
if (error) {
|
|
1097
|
+
context.error = error.message;
|
|
1098
|
+
Log$f.error(`[RequestContext] [completeRequestContext] Error: ${formatRequestContext(context)}`);
|
|
1099
|
+
}
|
|
1100
|
+
globalActiveRequests.delete(responseID);
|
|
1101
|
+
if (context.sdkInstanceId) {
|
|
1102
|
+
const sdkContext = sdkInstances.get(context.sdkInstanceId);
|
|
1103
|
+
if (sdkContext) {
|
|
1104
|
+
sdkContext.activeRequests.delete(responseID);
|
|
1105
|
+
}
|
|
1106
|
+
}
|
|
1107
|
+
}
|
|
1108
|
+
}
|
|
1109
|
+
function getActiveRequestsByDeviceInstance(deviceInstanceId) {
|
|
1110
|
+
return Array.from(globalActiveRequests.values()).filter(ctx => ctx.deviceInstanceId === deviceInstanceId);
|
|
1111
|
+
}
|
|
1112
|
+
function formatRequestContext(context) {
|
|
1113
|
+
const duration = context.endTime
|
|
1114
|
+
? context.endTime - context.startTime
|
|
1115
|
+
: Date.now() - context.startTime;
|
|
1116
|
+
const parts = [
|
|
1117
|
+
`[req:${context.responseID}]`,
|
|
1118
|
+
context.sdkInstanceId ? `sdk=${context.sdkInstanceId}` : null,
|
|
1119
|
+
`method=${context.methodName}`,
|
|
1120
|
+
context.connectId ? `connectId=${context.connectId}` : null,
|
|
1121
|
+
context.deviceInstanceId ? `deviceInst=${context.deviceInstanceId}` : null,
|
|
1122
|
+
context.commandsInstanceId ? `commandsInst=${context.commandsInstanceId}` : null,
|
|
1123
|
+
context.parentResponseID ? `parent=${context.parentResponseID}` : null,
|
|
1124
|
+
`duration=${duration}ms`,
|
|
1125
|
+
`status=${context.status}`,
|
|
1126
|
+
`error=${context.error}`,
|
|
1127
|
+
].filter(Boolean);
|
|
1128
|
+
return parts.join(' ');
|
|
1129
|
+
}
|
|
1130
|
+
function cleanupSdkInstance(sdkInstanceId) {
|
|
1131
|
+
const sdkContext = sdkInstances.get(sdkInstanceId);
|
|
1132
|
+
if (sdkContext) {
|
|
1133
|
+
for (const responseID of sdkContext.activeRequests.keys()) {
|
|
1134
|
+
globalActiveRequests.delete(responseID);
|
|
1135
|
+
}
|
|
1136
|
+
sdkInstances.delete(sdkInstanceId);
|
|
1137
|
+
}
|
|
1138
|
+
}
|
|
1139
|
+
|
|
1037
1140
|
exports.EUKeyDeviceMode = void 0;
|
|
1038
1141
|
(function (EUKeyDeviceMode) {
|
|
1039
1142
|
EUKeyDeviceMode["bootloader"] = "bootloader";
|
|
@@ -3350,6 +3453,15 @@ var nested$1 = {
|
|
|
3350
3453
|
}
|
|
3351
3454
|
}
|
|
3352
3455
|
},
|
|
3456
|
+
UpgradeFileHeader: {
|
|
3457
|
+
fields: {
|
|
3458
|
+
data: {
|
|
3459
|
+
rule: "required",
|
|
3460
|
+
type: "bytes",
|
|
3461
|
+
id: 1
|
|
3462
|
+
}
|
|
3463
|
+
}
|
|
3464
|
+
},
|
|
3353
3465
|
CardanoDerivationType: {
|
|
3354
3466
|
values: {
|
|
3355
3467
|
LEDGER: 0,
|
|
@@ -7854,6 +7966,22 @@ var nested$1 = {
|
|
|
7854
7966
|
type: "uint32",
|
|
7855
7967
|
id: 520
|
|
7856
7968
|
},
|
|
7969
|
+
product: {
|
|
7970
|
+
type: "string",
|
|
7971
|
+
id: 521
|
|
7972
|
+
},
|
|
7973
|
+
brightness_prcent: {
|
|
7974
|
+
type: "uint32",
|
|
7975
|
+
id: 522
|
|
7976
|
+
},
|
|
7977
|
+
haptic_feedback: {
|
|
7978
|
+
type: "bool",
|
|
7979
|
+
id: 523
|
|
7980
|
+
},
|
|
7981
|
+
auto_shutdown_delay_ms: {
|
|
7982
|
+
type: "uint32",
|
|
7983
|
+
id: 524
|
|
7984
|
+
},
|
|
7857
7985
|
ukey_device_type: {
|
|
7858
7986
|
type: "UKeyDeviceType",
|
|
7859
7987
|
id: 600
|
|
@@ -8252,6 +8380,18 @@ var nested$1 = {
|
|
|
8252
8380
|
fastpay_times: {
|
|
8253
8381
|
type: "uint32",
|
|
8254
8382
|
id: 106
|
|
8383
|
+
},
|
|
8384
|
+
auto_shutdown_delay_ms: {
|
|
8385
|
+
type: "uint32",
|
|
8386
|
+
id: 500
|
|
8387
|
+
},
|
|
8388
|
+
change_brightness: {
|
|
8389
|
+
type: "bool",
|
|
8390
|
+
id: 501
|
|
8391
|
+
},
|
|
8392
|
+
haptic_feedback: {
|
|
8393
|
+
type: "bool",
|
|
8394
|
+
id: 502
|
|
8255
8395
|
}
|
|
8256
8396
|
},
|
|
8257
8397
|
nested: {
|
|
@@ -8915,6 +9055,10 @@ var nested$1 = {
|
|
|
8915
9055
|
file_name_no_ext: {
|
|
8916
9056
|
type: "string",
|
|
8917
9057
|
id: 6
|
|
9058
|
+
},
|
|
9059
|
+
blur_data_length: {
|
|
9060
|
+
type: "uint32",
|
|
9061
|
+
id: 7
|
|
8918
9062
|
}
|
|
8919
9063
|
},
|
|
8920
9064
|
nested: {
|
|
@@ -8939,6 +9083,19 @@ var nested$1 = {
|
|
|
8939
9083
|
}
|
|
8940
9084
|
}
|
|
8941
9085
|
},
|
|
9086
|
+
BlurRequest: {
|
|
9087
|
+
fields: {
|
|
9088
|
+
offset: {
|
|
9089
|
+
type: "uint32",
|
|
9090
|
+
id: 1
|
|
9091
|
+
},
|
|
9092
|
+
data_length: {
|
|
9093
|
+
rule: "required",
|
|
9094
|
+
type: "uint32",
|
|
9095
|
+
id: 2
|
|
9096
|
+
}
|
|
9097
|
+
}
|
|
9098
|
+
},
|
|
8942
9099
|
ResourceRequest: {
|
|
8943
9100
|
fields: {
|
|
8944
9101
|
offset: {
|
|
@@ -10970,6 +11127,10 @@ var nested$1 = {
|
|
|
10970
11127
|
rule: "required",
|
|
10971
11128
|
type: "string",
|
|
10972
11129
|
id: 3
|
|
11130
|
+
},
|
|
11131
|
+
prefix: {
|
|
11132
|
+
type: "uint32",
|
|
11133
|
+
id: 4
|
|
10973
11134
|
}
|
|
10974
11135
|
}
|
|
10975
11136
|
},
|
|
@@ -11232,6 +11393,39 @@ var nested$1 = {
|
|
|
11232
11393
|
}
|
|
11233
11394
|
}
|
|
11234
11395
|
},
|
|
11396
|
+
SolanaTxATADetails: {
|
|
11397
|
+
fields: {
|
|
11398
|
+
owner_address: {
|
|
11399
|
+
rule: "required",
|
|
11400
|
+
type: "string",
|
|
11401
|
+
id: 1
|
|
11402
|
+
},
|
|
11403
|
+
program_id: {
|
|
11404
|
+
rule: "required",
|
|
11405
|
+
type: "string",
|
|
11406
|
+
id: 2
|
|
11407
|
+
},
|
|
11408
|
+
mint_address: {
|
|
11409
|
+
rule: "required",
|
|
11410
|
+
type: "string",
|
|
11411
|
+
id: 3
|
|
11412
|
+
},
|
|
11413
|
+
associated_token_address: {
|
|
11414
|
+
rule: "required",
|
|
11415
|
+
type: "string",
|
|
11416
|
+
id: 4
|
|
11417
|
+
}
|
|
11418
|
+
}
|
|
11419
|
+
},
|
|
11420
|
+
SolanaTxExtraInfo: {
|
|
11421
|
+
fields: {
|
|
11422
|
+
ata_details: {
|
|
11423
|
+
rule: "repeated",
|
|
11424
|
+
type: "SolanaTxATADetails",
|
|
11425
|
+
id: 1
|
|
11426
|
+
}
|
|
11427
|
+
}
|
|
11428
|
+
},
|
|
11235
11429
|
SolanaSignTx: {
|
|
11236
11430
|
fields: {
|
|
11237
11431
|
address_n: {
|
|
@@ -11246,6 +11440,10 @@ var nested$1 = {
|
|
|
11246
11440
|
rule: "required",
|
|
11247
11441
|
type: "bytes",
|
|
11248
11442
|
id: 2
|
|
11443
|
+
},
|
|
11444
|
+
extra_info: {
|
|
11445
|
+
type: "SolanaTxExtraInfo",
|
|
11446
|
+
id: 3
|
|
11249
11447
|
}
|
|
11250
11448
|
}
|
|
11251
11449
|
},
|
|
@@ -13766,6 +13964,7 @@ var nested$1 = {
|
|
|
13766
13964
|
MessageType_NFTWriteData: 10015,
|
|
13767
13965
|
MessageType_ResourceUpload: 10018,
|
|
13768
13966
|
MessageType_ZoomRequest: 10019,
|
|
13967
|
+
MessageType_BlurRequest: 10032,
|
|
13769
13968
|
MessageType_ResourceRequest: 10020,
|
|
13770
13969
|
MessageType_ResourceAck: 10021,
|
|
13771
13970
|
MessageType_ResourceUpdate: 10022,
|
|
@@ -13776,7 +13975,8 @@ var nested$1 = {
|
|
|
13776
13975
|
MessageType_GetPassphraseState: 10028,
|
|
13777
13976
|
MessageType_PassphraseState: 10029,
|
|
13778
13977
|
MessageType_UnLockDevice: 10030,
|
|
13779
|
-
MessageType_UnLockDeviceResponse: 10031
|
|
13978
|
+
MessageType_UnLockDeviceResponse: 10031,
|
|
13979
|
+
MessageType_UpgradeFileHeader: 10050
|
|
13780
13980
|
}
|
|
13781
13981
|
},
|
|
13782
13982
|
google: {
|
|
@@ -19623,6 +19823,18 @@ var nested = {
|
|
|
19623
19823
|
battery_level: {
|
|
19624
19824
|
type: "uint32",
|
|
19625
19825
|
id: 520
|
|
19826
|
+
},
|
|
19827
|
+
brightness_prcent: {
|
|
19828
|
+
type: "uint32",
|
|
19829
|
+
id: 521
|
|
19830
|
+
},
|
|
19831
|
+
haptic_feedback: {
|
|
19832
|
+
type: "bool",
|
|
19833
|
+
id: 522
|
|
19834
|
+
},
|
|
19835
|
+
auto_shutdown_delay_ms: {
|
|
19836
|
+
type: "uint32",
|
|
19837
|
+
id: 523
|
|
19626
19838
|
}
|
|
19627
19839
|
},
|
|
19628
19840
|
nested: {
|
|
@@ -24911,33 +25123,113 @@ const findLatestRelease = (releases) => {
|
|
|
24911
25123
|
};
|
|
24912
25124
|
|
|
24913
25125
|
var _a$1;
|
|
25126
|
+
const Log$e = getLogger(exports.LoggerNames.Core);
|
|
25127
|
+
const FIRMWARE_FIELDS = [
|
|
25128
|
+
'firmware',
|
|
25129
|
+
'firmware-v2',
|
|
25130
|
+
'firmware-v8',
|
|
25131
|
+
'firmware-btc-v8',
|
|
25132
|
+
];
|
|
25133
|
+
const FIRMWARE_FIELD_TYPE_MAP = {
|
|
25134
|
+
firmware: hardwareShared.EFirmwareType.Universal,
|
|
25135
|
+
'firmware-v2': hardwareShared.EFirmwareType.Universal,
|
|
25136
|
+
'firmware-v8': hardwareShared.EFirmwareType.Universal,
|
|
25137
|
+
'firmware-btc-v8': hardwareShared.EFirmwareType.BitcoinOnly,
|
|
25138
|
+
};
|
|
25139
|
+
function getFirmwareTypeFromField(firmwareField) {
|
|
25140
|
+
const firmwareType = FIRMWARE_FIELD_TYPE_MAP[firmwareField];
|
|
25141
|
+
if (firmwareType === undefined) {
|
|
25142
|
+
return hardwareShared.EFirmwareType.Universal;
|
|
25143
|
+
}
|
|
25144
|
+
return firmwareType;
|
|
25145
|
+
}
|
|
24914
25146
|
class DataManager {
|
|
25147
|
+
static enrichFirmwareReleaseInfo(deviceData) {
|
|
25148
|
+
if (!deviceData || typeof deviceData !== 'object') {
|
|
25149
|
+
return {
|
|
25150
|
+
firmware: [],
|
|
25151
|
+
ble: [],
|
|
25152
|
+
};
|
|
25153
|
+
}
|
|
25154
|
+
const enrichedData = Object.assign({}, deviceData);
|
|
25155
|
+
FIRMWARE_FIELDS.forEach(field => {
|
|
25156
|
+
const releases = enrichedData[field];
|
|
25157
|
+
if (!releases || !Array.isArray(releases) || releases.length === 0) {
|
|
25158
|
+
return;
|
|
25159
|
+
}
|
|
25160
|
+
try {
|
|
25161
|
+
enrichedData[field] = releases.map(release => {
|
|
25162
|
+
if (!release || typeof release !== 'object' || !!release.firmwareType) {
|
|
25163
|
+
return release;
|
|
25164
|
+
}
|
|
25165
|
+
const firmwareType = getFirmwareTypeFromField(field);
|
|
25166
|
+
return Object.assign(Object.assign({}, release), { firmwareType });
|
|
25167
|
+
});
|
|
25168
|
+
}
|
|
25169
|
+
catch (error) {
|
|
25170
|
+
console.error(`Error enriching firmware field "${field}":`, error);
|
|
25171
|
+
}
|
|
25172
|
+
});
|
|
25173
|
+
return enrichedData;
|
|
25174
|
+
}
|
|
24915
25175
|
static load(settings) {
|
|
24916
25176
|
return __awaiter(this, void 0, void 0, function* () {
|
|
24917
25177
|
this.settings = settings;
|
|
24918
25178
|
if (!settings.fetchConfig) {
|
|
24919
25179
|
return;
|
|
24920
25180
|
}
|
|
24921
|
-
|
|
24922
|
-
|
|
24923
|
-
|
|
24924
|
-
|
|
24925
|
-
|
|
24926
|
-
|
|
24927
|
-
|
|
25181
|
+
const url = settings.preRelease
|
|
25182
|
+
? 'https://data.ukey.io/pre-config.json'
|
|
25183
|
+
: 'https://data.ukey.io/config.json';
|
|
25184
|
+
const urlWithCache = `${url}?noCache=${getTimeStamp()}`;
|
|
25185
|
+
let data = null;
|
|
25186
|
+
let fetchMethod = 'none';
|
|
25187
|
+
if (settings.configFetcher) {
|
|
25188
|
+
Log$e.debug('[DataConfig] Trying configFetcher (client-side fetcher)...');
|
|
25189
|
+
try {
|
|
25190
|
+
data = yield settings.configFetcher(urlWithCache);
|
|
25191
|
+
if (data) {
|
|
25192
|
+
fetchMethod = 'configFetcher';
|
|
25193
|
+
Log$e.log('[DataConfig] ConfigFetcher success');
|
|
25194
|
+
}
|
|
25195
|
+
else {
|
|
25196
|
+
Log$e.debug('[DataConfig] ConfigFetcher returned null, will fallback to axios');
|
|
25197
|
+
}
|
|
25198
|
+
}
|
|
25199
|
+
catch (e) {
|
|
25200
|
+
Log$e.warn('[DataConfig] ConfigFetcher error, will fallback to axios:', e);
|
|
25201
|
+
}
|
|
25202
|
+
}
|
|
25203
|
+
if (!data) {
|
|
25204
|
+
Log$e.debug('[DataConfig] Trying axios (SDK default fetcher)...');
|
|
25205
|
+
try {
|
|
25206
|
+
const response = yield axios__default["default"].get(urlWithCache, {
|
|
25207
|
+
timeout: 7000,
|
|
25208
|
+
});
|
|
25209
|
+
data = response.data;
|
|
25210
|
+
fetchMethod = 'axios';
|
|
25211
|
+
Log$e.log('[DataConfig] Axios fetch success');
|
|
25212
|
+
}
|
|
25213
|
+
catch (e) {
|
|
25214
|
+
Log$e.warn('[DataConfig] Axios fetch error:', e);
|
|
25215
|
+
}
|
|
25216
|
+
}
|
|
25217
|
+
if (data) {
|
|
25218
|
+
Log$e.log(`[DataConfig] Config loaded successfully via [${fetchMethod}]`);
|
|
24928
25219
|
this.deviceMap = {
|
|
24929
|
-
[hardwareShared.EDeviceType.Classic]: data.classic,
|
|
24930
|
-
[hardwareShared.EDeviceType.Classic1s]: data.classic1s,
|
|
24931
|
-
[hardwareShared.EDeviceType.ClassicPure]: data.classicpure,
|
|
24932
|
-
[hardwareShared.EDeviceType.Mini]: data.mini,
|
|
24933
|
-
[hardwareShared.EDeviceType.Touch]: data.touch,
|
|
24934
|
-
[hardwareShared.EDeviceType.Pro]: data.pro,
|
|
25220
|
+
[hardwareShared.EDeviceType.Classic]: this.enrichFirmwareReleaseInfo(data.classic),
|
|
25221
|
+
[hardwareShared.EDeviceType.Classic1s]: this.enrichFirmwareReleaseInfo(data.classic1s),
|
|
25222
|
+
[hardwareShared.EDeviceType.ClassicPure]: this.enrichFirmwareReleaseInfo(data.classicpure),
|
|
25223
|
+
[hardwareShared.EDeviceType.Mini]: this.enrichFirmwareReleaseInfo(data.mini),
|
|
25224
|
+
[hardwareShared.EDeviceType.Touch]: this.enrichFirmwareReleaseInfo(data.touch),
|
|
25225
|
+
[hardwareShared.EDeviceType.Pro]: this.enrichFirmwareReleaseInfo(data.pro),
|
|
24935
25226
|
};
|
|
24936
25227
|
this.assets = {
|
|
24937
25228
|
bridge: data.bridge,
|
|
24938
25229
|
};
|
|
24939
25230
|
}
|
|
24940
|
-
|
|
25231
|
+
else {
|
|
25232
|
+
Log$e.warn('[DataConfig] All fetch methods failed, using built-in default config');
|
|
24941
25233
|
}
|
|
24942
25234
|
});
|
|
24943
25235
|
}
|
|
@@ -25002,11 +25294,12 @@ DataManager.messages = {
|
|
|
25002
25294
|
v1: MessagesLegacyV1JSON,
|
|
25003
25295
|
};
|
|
25004
25296
|
DataManager.lastCheckTimestamp = 0;
|
|
25005
|
-
DataManager.getFirmwareStatus = (features) => {
|
|
25297
|
+
DataManager.getFirmwareStatus = (features, firmwareType) => {
|
|
25006
25298
|
var _b, _c;
|
|
25007
25299
|
const deviceType = getDeviceType(features);
|
|
25008
25300
|
if (deviceType === hardwareShared.EDeviceType.Unknown)
|
|
25009
25301
|
return 'unknown';
|
|
25302
|
+
const deviceFirmwareType = getFirmwareType(features);
|
|
25010
25303
|
const deviceFirmwareVersion = getDeviceFirmwareVersion(features);
|
|
25011
25304
|
if (features.firmware_present === false) {
|
|
25012
25305
|
return 'none';
|
|
@@ -25014,12 +25307,19 @@ DataManager.getFirmwareStatus = (features) => {
|
|
|
25014
25307
|
if (DeviceModelToTypes.model_mini.includes(deviceType) && features.bootloader_mode) {
|
|
25015
25308
|
return 'unknown';
|
|
25016
25309
|
}
|
|
25017
|
-
const firmwareUpdateField = getFirmwareUpdateField({
|
|
25310
|
+
const firmwareUpdateField = getFirmwareUpdateField({
|
|
25311
|
+
features,
|
|
25312
|
+
updateType: 'firmware',
|
|
25313
|
+
firmwareType,
|
|
25314
|
+
});
|
|
25018
25315
|
const targetDeviceConfigList = (_c = (_b = _a$1.deviceMap[deviceType]) === null || _b === void 0 ? void 0 : _b[firmwareUpdateField]) !== null && _c !== void 0 ? _c : [];
|
|
25019
|
-
|
|
25316
|
+
let currentVersion = deviceFirmwareVersion.join('.');
|
|
25317
|
+
if (targetDeviceConfigList.length > 0 && deviceFirmwareType !== firmwareType) {
|
|
25318
|
+
currentVersion = '0.0.0';
|
|
25319
|
+
}
|
|
25020
25320
|
return getReleaseStatus(targetDeviceConfigList, currentVersion);
|
|
25021
25321
|
};
|
|
25022
|
-
DataManager.getSysResourcesLatestRelease = (features, forcedUpdateRes) => {
|
|
25322
|
+
DataManager.getSysResourcesLatestRelease = ({ features, forcedUpdateRes, firmwareType, }) => {
|
|
25023
25323
|
var _b, _c, _d;
|
|
25024
25324
|
const deviceType = getDeviceType(features);
|
|
25025
25325
|
const deviceFirmwareVersion = getDeviceFirmwareVersion(features);
|
|
@@ -25028,6 +25328,7 @@ DataManager.getSysResourcesLatestRelease = (features, forcedUpdateRes) => {
|
|
|
25028
25328
|
const firmwareUpdateField = getFirmwareUpdateField({
|
|
25029
25329
|
features,
|
|
25030
25330
|
updateType: 'firmware',
|
|
25331
|
+
firmwareType,
|
|
25031
25332
|
});
|
|
25032
25333
|
const targetDeviceConfigList = (_c = (_b = _a$1.deviceMap[deviceType]) === null || _b === void 0 ? void 0 : _b[firmwareUpdateField]) !== null && _c !== void 0 ? _c : [];
|
|
25033
25334
|
const currentVersion = deviceFirmwareVersion.join('.');
|
|
@@ -25036,7 +25337,7 @@ DataManager.getSysResourcesLatestRelease = (features, forcedUpdateRes) => {
|
|
|
25036
25337
|
: semver__default["default"].gt(item.version.join('.'), currentVersion) && !!item.resource);
|
|
25037
25338
|
return (_d = findLatestRelease(targetDeviceConfig)) === null || _d === void 0 ? void 0 : _d.resource;
|
|
25038
25339
|
};
|
|
25039
|
-
DataManager.getSysFullResource = (features) => {
|
|
25340
|
+
DataManager.getSysFullResource = (features, firmwareType) => {
|
|
25040
25341
|
var _b, _c, _d;
|
|
25041
25342
|
const deviceType = getDeviceType(features);
|
|
25042
25343
|
if (deviceType === hardwareShared.EDeviceType.Unknown)
|
|
@@ -25046,12 +25347,13 @@ DataManager.getSysFullResource = (features) => {
|
|
|
25046
25347
|
const firmwareUpdateField = getFirmwareUpdateField({
|
|
25047
25348
|
features,
|
|
25048
25349
|
updateType: 'firmware',
|
|
25350
|
+
firmwareType,
|
|
25049
25351
|
});
|
|
25050
25352
|
const targetDeviceConfigList = (_c = (_b = _a$1.deviceMap[deviceType]) === null || _b === void 0 ? void 0 : _b[firmwareUpdateField]) !== null && _c !== void 0 ? _c : [];
|
|
25051
25353
|
const targetDeviceConfig = targetDeviceConfigList.filter(item => !!item.fullResource);
|
|
25052
25354
|
return (_d = findLatestRelease(targetDeviceConfig)) === null || _d === void 0 ? void 0 : _d.fullResource;
|
|
25053
25355
|
};
|
|
25054
|
-
DataManager.getBootloaderResource = (features) => {
|
|
25356
|
+
DataManager.getBootloaderResource = (features, firmwareType) => {
|
|
25055
25357
|
var _b, _c, _d;
|
|
25056
25358
|
const deviceType = getDeviceType(features);
|
|
25057
25359
|
if (deviceType === hardwareShared.EDeviceType.Unknown)
|
|
@@ -25061,6 +25363,7 @@ DataManager.getBootloaderResource = (features) => {
|
|
|
25061
25363
|
const firmwareUpdateField = getFirmwareUpdateField({
|
|
25062
25364
|
features,
|
|
25063
25365
|
updateType: 'firmware',
|
|
25366
|
+
firmwareType,
|
|
25064
25367
|
});
|
|
25065
25368
|
const targetDeviceConfigList = (_c = (_b = _a$1.deviceMap[deviceType]) === null || _b === void 0 ? void 0 : _b[firmwareUpdateField]) !== null && _c !== void 0 ? _c : [];
|
|
25066
25369
|
if (targetDeviceConfigList.length === 0) {
|
|
@@ -25069,7 +25372,7 @@ DataManager.getBootloaderResource = (features) => {
|
|
|
25069
25372
|
const targetDeviceConfig = targetDeviceConfigList.filter(item => !!item.bootloaderResource);
|
|
25070
25373
|
return (_d = findLatestRelease(targetDeviceConfig)) === null || _d === void 0 ? void 0 : _d.bootloaderResource;
|
|
25071
25374
|
};
|
|
25072
|
-
DataManager.getBootloaderTargetVersion = (features) => {
|
|
25375
|
+
DataManager.getBootloaderTargetVersion = (features, firmwareType) => {
|
|
25073
25376
|
var _b, _c, _d, _e;
|
|
25074
25377
|
const deviceType = getDeviceType(features);
|
|
25075
25378
|
if (deviceType === hardwareShared.EDeviceType.Unknown)
|
|
@@ -25077,12 +25380,13 @@ DataManager.getBootloaderTargetVersion = (features) => {
|
|
|
25077
25380
|
const firmwareUpdateField = getFirmwareUpdateField({
|
|
25078
25381
|
features,
|
|
25079
25382
|
updateType: 'firmware',
|
|
25383
|
+
firmwareType,
|
|
25080
25384
|
});
|
|
25081
25385
|
const targetDeviceConfigList = (_c = (_b = _a$1.deviceMap[deviceType]) === null || _b === void 0 ? void 0 : _b[firmwareUpdateField]) !== null && _c !== void 0 ? _c : [];
|
|
25082
25386
|
const targetDeviceConfig = targetDeviceConfigList.filter(item => !!item.bootloaderResource);
|
|
25083
25387
|
return (_e = (_d = targetDeviceConfig === null || targetDeviceConfig === void 0 ? void 0 : targetDeviceConfig[0]) === null || _d === void 0 ? void 0 : _d.bootloaderVersion) !== null && _e !== void 0 ? _e : undefined;
|
|
25084
25388
|
};
|
|
25085
|
-
DataManager.getBootloaderRelatedFirmwareVersion = (features) => {
|
|
25389
|
+
DataManager.getBootloaderRelatedFirmwareVersion = (features, firmwareType) => {
|
|
25086
25390
|
var _b, _c, _d, _e;
|
|
25087
25391
|
const deviceType = getDeviceType(features);
|
|
25088
25392
|
if (deviceType === hardwareShared.EDeviceType.Unknown)
|
|
@@ -25092,12 +25396,13 @@ DataManager.getBootloaderRelatedFirmwareVersion = (features) => {
|
|
|
25092
25396
|
const firmwareUpdateField = getFirmwareUpdateField({
|
|
25093
25397
|
features,
|
|
25094
25398
|
updateType: 'firmware',
|
|
25399
|
+
firmwareType,
|
|
25095
25400
|
});
|
|
25096
25401
|
const targetDeviceConfigList = (_c = (_b = _a$1.deviceMap[deviceType]) === null || _b === void 0 ? void 0 : _b[firmwareUpdateField]) !== null && _c !== void 0 ? _c : [];
|
|
25097
25402
|
const targetDeviceConfig = targetDeviceConfigList.filter(item => !!item.bootloaderRelatedFirmwareVersion);
|
|
25098
25403
|
return (_e = (_d = targetDeviceConfig === null || targetDeviceConfig === void 0 ? void 0 : targetDeviceConfig[0]) === null || _d === void 0 ? void 0 : _d.bootloaderRelatedFirmwareVersion) !== null && _e !== void 0 ? _e : undefined;
|
|
25099
25404
|
};
|
|
25100
|
-
DataManager.getFirmwareChangelog = (features) => {
|
|
25405
|
+
DataManager.getFirmwareChangelog = (features, firmwareType) => {
|
|
25101
25406
|
var _b, _c;
|
|
25102
25407
|
const deviceType = getDeviceType(features);
|
|
25103
25408
|
if (deviceType === hardwareShared.EDeviceType.Unknown)
|
|
@@ -25106,6 +25411,7 @@ DataManager.getFirmwareChangelog = (features) => {
|
|
|
25106
25411
|
const firmwareUpdateField = getFirmwareUpdateField({
|
|
25107
25412
|
features,
|
|
25108
25413
|
updateType: 'firmware',
|
|
25414
|
+
firmwareType,
|
|
25109
25415
|
});
|
|
25110
25416
|
const targetDeviceConfigList = (_c = (_b = _a$1.deviceMap[deviceType]) === null || _b === void 0 ? void 0 : _b[firmwareUpdateField]) !== null && _c !== void 0 ? _c : [];
|
|
25111
25417
|
if (features.firmware_present === false ||
|
|
@@ -25115,7 +25421,7 @@ DataManager.getFirmwareChangelog = (features) => {
|
|
|
25115
25421
|
const currentVersion = deviceFirmwareVersion.join('.');
|
|
25116
25422
|
return getReleaseChangelog(targetDeviceConfigList, currentVersion);
|
|
25117
25423
|
};
|
|
25118
|
-
DataManager.getFirmwareLatestRelease = (features) => {
|
|
25424
|
+
DataManager.getFirmwareLatestRelease = (features, firmwareType) => {
|
|
25119
25425
|
var _b, _c;
|
|
25120
25426
|
const deviceType = getDeviceType(features);
|
|
25121
25427
|
if (deviceType === hardwareShared.EDeviceType.Unknown)
|
|
@@ -25123,13 +25429,14 @@ DataManager.getFirmwareLatestRelease = (features) => {
|
|
|
25123
25429
|
const firmwareUpdateField = getFirmwareUpdateField({
|
|
25124
25430
|
features,
|
|
25125
25431
|
updateType: 'firmware',
|
|
25432
|
+
firmwareType,
|
|
25126
25433
|
});
|
|
25127
25434
|
const targetDeviceConfigList = (_c = (_b = _a$1.deviceMap[deviceType]) === null || _b === void 0 ? void 0 : _b[firmwareUpdateField]) !== null && _c !== void 0 ? _c : [];
|
|
25128
25435
|
const target = findLatestRelease(targetDeviceConfigList);
|
|
25129
25436
|
if (!target)
|
|
25130
25437
|
return target;
|
|
25131
25438
|
if (!target.resource) {
|
|
25132
|
-
const resource = _a$1.getSysResourcesLatestRelease(features);
|
|
25439
|
+
const resource = _a$1.getSysResourcesLatestRelease({ features, firmwareType });
|
|
25133
25440
|
return Object.assign(Object.assign({}, target), { resource });
|
|
25134
25441
|
}
|
|
25135
25442
|
return target;
|
|
@@ -25178,16 +25485,19 @@ DataManager.getTransportStatus = (localVersion) => {
|
|
|
25178
25485
|
};
|
|
25179
25486
|
DataManager.getBridgeChangelog = () => { var _b; return (_b = _a$1.assets) === null || _b === void 0 ? void 0 : _b.bridge.changelog; };
|
|
25180
25487
|
DataManager.isBleConnect = (env) => env === 'react-native' || env === 'lowlevel' || env === 'desktop-web-ble';
|
|
25181
|
-
DataManager.
|
|
25488
|
+
DataManager.isDesktopWebUsb = (env) => env === 'desktop-webusb';
|
|
25489
|
+
DataManager.isBrowserWebUsb = (env) => env === 'webusb';
|
|
25182
25490
|
|
|
25183
25491
|
const PROTOBUF_MESSAGE_CONFIG = {
|
|
25184
25492
|
model_mini: [
|
|
25185
25493
|
{ minVersion: '3.3.0', messageVersion: 'latest' },
|
|
25186
|
-
{ minVersion: '0.0.
|
|
25494
|
+
{ minVersion: '0.0.1', messageVersion: 'v1' },
|
|
25495
|
+
{ minVersion: '0.0.0', messageVersion: 'latest' },
|
|
25187
25496
|
],
|
|
25188
25497
|
model_touch: [
|
|
25189
25498
|
{ minVersion: '4.5.0', messageVersion: 'latest' },
|
|
25190
|
-
{ minVersion: '0.0.
|
|
25499
|
+
{ minVersion: '0.0.1', messageVersion: 'v1' },
|
|
25500
|
+
{ minVersion: '0.0.0', messageVersion: 'latest' },
|
|
25191
25501
|
],
|
|
25192
25502
|
};
|
|
25193
25503
|
|
|
@@ -25326,28 +25636,35 @@ const supportModifyHomescreen = (features) => {
|
|
|
25326
25636
|
}
|
|
25327
25637
|
return { support: semver__default["default"].gte(currentVersion, '3.4.0') };
|
|
25328
25638
|
};
|
|
25329
|
-
const
|
|
25639
|
+
const getLatestFirmwareField = (firmwareType) => {
|
|
25640
|
+
if (firmwareType === 'bitcoinonly') {
|
|
25641
|
+
return `firmware-btc-v8`;
|
|
25642
|
+
}
|
|
25643
|
+
return `firmware-v8`;
|
|
25644
|
+
};
|
|
25645
|
+
const getFirmwareUpdateField = ({ features, updateType, targetVersion, firmwareType, }) => {
|
|
25330
25646
|
const deviceType = getDeviceType(features);
|
|
25331
25647
|
const deviceFirmwareVersion = getDeviceFirmwareVersion(features);
|
|
25332
25648
|
if (updateType === 'ble') {
|
|
25333
25649
|
return 'ble';
|
|
25334
25650
|
}
|
|
25651
|
+
const latestFirmwareField = getLatestFirmwareField(firmwareType);
|
|
25335
25652
|
if (DeviceModelToTypes.model_mini.includes(deviceType)) {
|
|
25336
|
-
return
|
|
25653
|
+
return latestFirmwareField;
|
|
25337
25654
|
}
|
|
25338
25655
|
if (deviceType === hardwareShared.EDeviceType.Touch) {
|
|
25339
25656
|
if (targetVersion) {
|
|
25340
25657
|
if (semver__default["default"].eq(targetVersion, '4.0.0'))
|
|
25341
25658
|
return 'firmware-v2';
|
|
25342
25659
|
if (semver__default["default"].gt(targetVersion, '4.0.0'))
|
|
25343
|
-
return
|
|
25660
|
+
return latestFirmwareField;
|
|
25344
25661
|
}
|
|
25345
25662
|
if (semver__default["default"].lt(deviceFirmwareVersion.join('.'), '3.4.0'))
|
|
25346
25663
|
return 'firmware';
|
|
25347
|
-
return
|
|
25664
|
+
return latestFirmwareField;
|
|
25348
25665
|
}
|
|
25349
25666
|
if (deviceType === hardwareShared.EDeviceType.Pro) {
|
|
25350
|
-
return
|
|
25667
|
+
return latestFirmwareField;
|
|
25351
25668
|
}
|
|
25352
25669
|
return 'firmware';
|
|
25353
25670
|
};
|
|
@@ -25360,23 +25677,23 @@ const getFirmwareUpdateFieldArray = (features, updateType) => {
|
|
|
25360
25677
|
deviceType === 'classic1s' ||
|
|
25361
25678
|
deviceType === 'mini' ||
|
|
25362
25679
|
deviceType === 'classicpure') {
|
|
25363
|
-
return ['firmware-
|
|
25680
|
+
return ['firmware-v8'];
|
|
25364
25681
|
}
|
|
25365
25682
|
if (deviceType === 'touch') {
|
|
25366
25683
|
const currentVersion = getDeviceFirmwareVersion(features).join('.');
|
|
25367
25684
|
if (semver__default["default"].gt(currentVersion, '4.0.0')) {
|
|
25368
|
-
return ['firmware-
|
|
25685
|
+
return ['firmware-v8', 'firmware'];
|
|
25369
25686
|
}
|
|
25370
25687
|
if (semver__default["default"].gte(currentVersion, '4.0.0')) {
|
|
25371
25688
|
return ['firmware-v2', 'firmware'];
|
|
25372
25689
|
}
|
|
25373
25690
|
if (!currentVersion || semver__default["default"].lt(currentVersion, '3.0.0')) {
|
|
25374
|
-
return ['firmware-
|
|
25691
|
+
return ['firmware-v8', 'firmware-v2', 'firmware'];
|
|
25375
25692
|
}
|
|
25376
25693
|
return ['firmware'];
|
|
25377
25694
|
}
|
|
25378
25695
|
if (deviceType === 'pro') {
|
|
25379
|
-
return ['firmware-
|
|
25696
|
+
return ['firmware-v8'];
|
|
25380
25697
|
}
|
|
25381
25698
|
return ['firmware'];
|
|
25382
25699
|
};
|
|
@@ -25401,13 +25718,13 @@ const fixFeaturesFirmwareVersion = (features) => {
|
|
|
25401
25718
|
|
|
25402
25719
|
const pkg = require('../package.json');
|
|
25403
25720
|
const getSDKVersion = () => pkg.version;
|
|
25404
|
-
const DEFAULT_DOMAIN = `https://jssdk.
|
|
25721
|
+
const DEFAULT_DOMAIN = `https://jssdk.ukey.io/${getSDKVersion()}/`;
|
|
25405
25722
|
const whitelist = [
|
|
25406
25723
|
{ origin: 'file://' },
|
|
25407
25724
|
{ origin: '1key.so' },
|
|
25408
|
-
{ origin: '
|
|
25409
|
-
{ origin: '
|
|
25410
|
-
{ origin: '
|
|
25725
|
+
{ origin: 'ukey.io' },
|
|
25726
|
+
{ origin: 'ukeycn.com' },
|
|
25727
|
+
{ origin: 'ukeytest.com' },
|
|
25411
25728
|
{ origin: 'localhost' },
|
|
25412
25729
|
];
|
|
25413
25730
|
const whitelistExtension = [
|
|
@@ -25454,7 +25771,7 @@ const getEnv = () => {
|
|
|
25454
25771
|
const corsValidator = (url) => {
|
|
25455
25772
|
if (typeof url !== 'string')
|
|
25456
25773
|
return;
|
|
25457
|
-
if (url.match(/^https:\/\/([A-Za-z0-9\-_]+\.)*
|
|
25774
|
+
if (url.match(/^https:\/\/([A-Za-z0-9\-_]+\.)*ukey\.so\//))
|
|
25458
25775
|
return url;
|
|
25459
25776
|
if (url.match(/^https?:\/\/localhost:[58][0-9]{3}\//))
|
|
25460
25777
|
return url;
|
|
@@ -25529,20 +25846,20 @@ function isEnteredManuallyBoot(features, updateType) {
|
|
|
25529
25846
|
return isMini || isBoot183ClassicUpBle;
|
|
25530
25847
|
}
|
|
25531
25848
|
|
|
25532
|
-
function checkNeedUpdateBootForTouch(features) {
|
|
25849
|
+
function checkNeedUpdateBootForTouch(features, firmwareType) {
|
|
25533
25850
|
const deviceType = getDeviceType(features);
|
|
25534
25851
|
if (!DeviceModelToTypes.model_touch.includes(deviceType))
|
|
25535
25852
|
return false;
|
|
25536
25853
|
const currentVersion = getDeviceFirmwareVersion(features).join('.');
|
|
25537
25854
|
const bootloaderVersion = getDeviceBootloaderVersion(features).join('.');
|
|
25538
|
-
const targetBootloaderVersion = DataManager.getBootloaderTargetVersion(features);
|
|
25855
|
+
const targetBootloaderVersion = DataManager.getBootloaderTargetVersion(features, firmwareType);
|
|
25539
25856
|
if (!targetBootloaderVersion)
|
|
25540
25857
|
return false;
|
|
25541
25858
|
return (semver__default["default"].gte(currentVersion, '3.2.0') &&
|
|
25542
25859
|
semver__default["default"].gte(currentVersion, '4.1.0') &&
|
|
25543
25860
|
semver__default["default"].lte(bootloaderVersion, targetBootloaderVersion.join('.')));
|
|
25544
25861
|
}
|
|
25545
|
-
function checkNeedUpdateBootForClassicAndMini(features, willUpdateFirmware) {
|
|
25862
|
+
function checkNeedUpdateBootForClassicAndMini({ features, willUpdateFirmware, firmwareType, }) {
|
|
25546
25863
|
const deviceType = getDeviceType(features);
|
|
25547
25864
|
if (!DeviceModelToTypes.model_mini.includes(deviceType))
|
|
25548
25865
|
return false;
|
|
@@ -25550,11 +25867,11 @@ function checkNeedUpdateBootForClassicAndMini(features, willUpdateFirmware) {
|
|
|
25550
25867
|
return false;
|
|
25551
25868
|
const currentVersion = getDeviceFirmwareVersion(features).join('.');
|
|
25552
25869
|
const bootloaderVersion = getDeviceBootloaderVersion(features).join('.');
|
|
25553
|
-
const targetBootloaderVersion = DataManager.getBootloaderTargetVersion(features);
|
|
25870
|
+
const targetBootloaderVersion = DataManager.getBootloaderTargetVersion(features, firmwareType);
|
|
25554
25871
|
if (targetBootloaderVersion && semver__default["default"].gte(bootloaderVersion, targetBootloaderVersion.join('.'))) {
|
|
25555
25872
|
return false;
|
|
25556
25873
|
}
|
|
25557
|
-
const bootloaderRelatedFirmwareVersion = DataManager.getBootloaderRelatedFirmwareVersion(features);
|
|
25874
|
+
const bootloaderRelatedFirmwareVersion = DataManager.getBootloaderRelatedFirmwareVersion(features, firmwareType);
|
|
25558
25875
|
if (!bootloaderRelatedFirmwareVersion)
|
|
25559
25876
|
return false;
|
|
25560
25877
|
return shouldUpdateBootloaderForClassicAndMini({
|
|
@@ -25581,6 +25898,96 @@ function checkBootloaderLength(data) {
|
|
|
25581
25898
|
return bootloaderLength === data.byteLength;
|
|
25582
25899
|
}
|
|
25583
25900
|
|
|
25901
|
+
const LANGUAGE_LABELS = {
|
|
25902
|
+
en: 'English',
|
|
25903
|
+
zh_cn: '简体中文',
|
|
25904
|
+
zh_hk: '繁體中文',
|
|
25905
|
+
ja: '日本語',
|
|
25906
|
+
ko: '한국어',
|
|
25907
|
+
fr: 'Français',
|
|
25908
|
+
de: 'Deutsch',
|
|
25909
|
+
ru: 'Russian',
|
|
25910
|
+
es: 'Spanish',
|
|
25911
|
+
it: 'Italiano',
|
|
25912
|
+
pt_br: 'Portuguese (Brazil)',
|
|
25913
|
+
};
|
|
25914
|
+
const getLanguageConfig = (deviceType) => {
|
|
25915
|
+
let keys = [];
|
|
25916
|
+
switch (deviceType) {
|
|
25917
|
+
case hardwareShared.EDeviceType.Classic:
|
|
25918
|
+
case hardwareShared.EDeviceType.Mini:
|
|
25919
|
+
keys = ['en', 'zh_cn'];
|
|
25920
|
+
break;
|
|
25921
|
+
case hardwareShared.EDeviceType.Classic1s:
|
|
25922
|
+
case hardwareShared.EDeviceType.ClassicPure:
|
|
25923
|
+
keys = ['en', 'zh_cn', 'zh_hk', 'ja', 'pt_br', 'de', 'ko'];
|
|
25924
|
+
break;
|
|
25925
|
+
case hardwareShared.EDeviceType.Touch:
|
|
25926
|
+
case hardwareShared.EDeviceType.Pro:
|
|
25927
|
+
keys = Object.keys(LANGUAGE_LABELS);
|
|
25928
|
+
break;
|
|
25929
|
+
default:
|
|
25930
|
+
keys = [];
|
|
25931
|
+
break;
|
|
25932
|
+
}
|
|
25933
|
+
return keys.map(key => ({ code: key, label: LANGUAGE_LABELS[key] }));
|
|
25934
|
+
};
|
|
25935
|
+
const getAutoLockOptions = (_deviceType) => {
|
|
25936
|
+
switch (_deviceType) {
|
|
25937
|
+
case hardwareShared.EDeviceType.Mini:
|
|
25938
|
+
case hardwareShared.EDeviceType.Classic:
|
|
25939
|
+
case hardwareShared.EDeviceType.Classic1s:
|
|
25940
|
+
case hardwareShared.EDeviceType.ClassicPure:
|
|
25941
|
+
return [
|
|
25942
|
+
{ seconds: 0, minute: 1, hour: 0, day: 0 },
|
|
25943
|
+
{ seconds: 0, minute: 2, hour: 0, day: 0 },
|
|
25944
|
+
{ seconds: 0, minute: 5, hour: 0, day: 0 },
|
|
25945
|
+
{ seconds: 0, minute: 10, hour: 0, day: 0 },
|
|
25946
|
+
{ seconds: 0, minute: 0, hour: 0, day: 0 },
|
|
25947
|
+
];
|
|
25948
|
+
case hardwareShared.EDeviceType.Touch:
|
|
25949
|
+
case hardwareShared.EDeviceType.Pro:
|
|
25950
|
+
return [
|
|
25951
|
+
{ seconds: 30, minute: 0, hour: 0, day: 0 },
|
|
25952
|
+
{ seconds: 0, minute: 1, hour: 0, day: 0 },
|
|
25953
|
+
{ seconds: 0, minute: 2, hour: 0, day: 0 },
|
|
25954
|
+
{ seconds: 0, minute: 5, hour: 0, day: 0 },
|
|
25955
|
+
{ seconds: 0, minute: 10, hour: 0, day: 0 },
|
|
25956
|
+
{ seconds: 0, minute: 30, hour: 0, day: 0 },
|
|
25957
|
+
{ seconds: 0, minute: 0, hour: 0, day: 0 },
|
|
25958
|
+
];
|
|
25959
|
+
default:
|
|
25960
|
+
return [];
|
|
25961
|
+
}
|
|
25962
|
+
};
|
|
25963
|
+
const getAutoShutDownOptions = (_deviceType) => {
|
|
25964
|
+
switch (_deviceType) {
|
|
25965
|
+
case hardwareShared.EDeviceType.Mini:
|
|
25966
|
+
return [];
|
|
25967
|
+
case hardwareShared.EDeviceType.Classic:
|
|
25968
|
+
case hardwareShared.EDeviceType.Classic1s:
|
|
25969
|
+
case hardwareShared.EDeviceType.ClassicPure:
|
|
25970
|
+
return [
|
|
25971
|
+
{ seconds: 0, minute: 1, hour: 0, day: 0 },
|
|
25972
|
+
{ seconds: 0, minute: 3, hour: 0, day: 0 },
|
|
25973
|
+
{ seconds: 0, minute: 5, hour: 0, day: 0 },
|
|
25974
|
+
{ seconds: 0, minute: 10, hour: 0, day: 0 },
|
|
25975
|
+
{ seconds: 0, minute: 0, hour: 0, day: 0 },
|
|
25976
|
+
];
|
|
25977
|
+
case hardwareShared.EDeviceType.Touch:
|
|
25978
|
+
case hardwareShared.EDeviceType.Pro:
|
|
25979
|
+
return [
|
|
25980
|
+
{ seconds: 0, minute: 1, hour: 0, day: 0 },
|
|
25981
|
+
{ seconds: 0, minute: 2, hour: 0, day: 0 },
|
|
25982
|
+
{ seconds: 0, minute: 5, hour: 0, day: 0 },
|
|
25983
|
+
{ seconds: 0, minute: 10, hour: 0, day: 0 },
|
|
25984
|
+
{ seconds: 0, minute: 0, hour: 0, day: 0 },
|
|
25985
|
+
];
|
|
25986
|
+
default:
|
|
25987
|
+
return [];
|
|
25988
|
+
}
|
|
25989
|
+
};
|
|
25990
|
+
|
|
25584
25991
|
const getT1Data = () => ({
|
|
25585
25992
|
default: {
|
|
25586
25993
|
name: 'default',
|
|
@@ -25950,6 +26357,7 @@ const UI_REQUEST = {
|
|
|
25950
26357
|
REQUEST_PASSPHRASE: 'ui-request_passphrase',
|
|
25951
26358
|
REQUEST_PASSPHRASE_ON_DEVICE: 'ui-request_passphrase_on_device',
|
|
25952
26359
|
REQUEST_DEVICE_IN_BOOTLOADER_FOR_WEB_DEVICE: 'ui-request_select_device_in_bootloader_for_web_device',
|
|
26360
|
+
REQUEST_DEVICE_FOR_SWITCH_FIRMWARE_WEB_DEVICE: 'ui-request_select_device_for_switch_firmware_web_device',
|
|
25953
26361
|
CLOSE_UI_WINDOW: 'ui-close_window',
|
|
25954
26362
|
CLOSE_UI_PIN_WINDOW: 'ui-close_pin_window',
|
|
25955
26363
|
DEVICE_PROGRESS: 'ui-device_progress',
|
|
@@ -25991,6 +26399,7 @@ exports.FirmwareUpdateTipMessage = void 0;
|
|
|
25991
26399
|
FirmwareUpdateTipMessage["AutoRebootToBootloader"] = "AutoRebootToBootloader";
|
|
25992
26400
|
FirmwareUpdateTipMessage["GoToBootloaderSuccess"] = "GoToBootloaderSuccess";
|
|
25993
26401
|
FirmwareUpdateTipMessage["SelectDeviceInBootloaderForWebDevice"] = "SelectDeviceInBootloaderForWebDevice";
|
|
26402
|
+
FirmwareUpdateTipMessage["SwitchFirmwareReconnectDevice"] = "SwitchFirmwareReconnectDevice";
|
|
25994
26403
|
FirmwareUpdateTipMessage["ConfirmOnDevice"] = "ConfirmOnDevice";
|
|
25995
26404
|
FirmwareUpdateTipMessage["FirmwareEraseSuccess"] = "FirmwareEraseSuccess";
|
|
25996
26405
|
FirmwareUpdateTipMessage["StartTransferData"] = "StartTransferData";
|
|
@@ -26035,6 +26444,7 @@ const UI_RESPONSE = {
|
|
|
26035
26444
|
RECEIVE_PIN: 'ui-receive_pin',
|
|
26036
26445
|
RECEIVE_PASSPHRASE: 'ui-receive_passphrase',
|
|
26037
26446
|
SELECT_DEVICE_IN_BOOTLOADER_FOR_WEB_DEVICE: 'ui-receive_select-device-in-bootloader-for-web-device',
|
|
26447
|
+
SELECT_DEVICE_FOR_SWITCH_FIRMWARE_WEB_DEVICE: 'ui-receive_select-device-for-switch-firmware-web-device',
|
|
26038
26448
|
};
|
|
26039
26449
|
const createUiResponse = (type, payload) => ({
|
|
26040
26450
|
event: UI_EVENT,
|
|
@@ -26062,6 +26472,7 @@ const DEVICE = {
|
|
|
26062
26472
|
WORD: 'word',
|
|
26063
26473
|
SUPPORT_FEATURES: 'support_features',
|
|
26064
26474
|
SELECT_DEVICE_IN_BOOTLOADER_FOR_WEB_DEVICE: 'select_device_in_bootloader_for_web_device',
|
|
26475
|
+
SELECT_DEVICE_FOR_SWITCH_FIRMWARE_WEB_DEVICE: 'select_device_for_switch_firmware_web_device',
|
|
26065
26476
|
FEATURES: 'features',
|
|
26066
26477
|
};
|
|
26067
26478
|
const createDeviceMessage = (type, payload) => ({
|
|
@@ -26298,6 +26709,7 @@ const BleLogger = getLogger(exports.LoggerNames.HdBleTransport);
|
|
|
26298
26709
|
const HttpLogger = getLogger(exports.LoggerNames.HdTransportHttp);
|
|
26299
26710
|
const LowLevelLogger = getLogger(exports.LoggerNames.HdTransportLowLevel);
|
|
26300
26711
|
const WebBleLogger = getLogger(exports.LoggerNames.HdWebBleTransport);
|
|
26712
|
+
const WebUsbLogger = getLogger(exports.LoggerNames.HdTransportWebUsb);
|
|
26301
26713
|
class TransportManager {
|
|
26302
26714
|
static load() {
|
|
26303
26715
|
Log$c.debug('transport manager load');
|
|
@@ -26309,7 +26721,7 @@ class TransportManager {
|
|
|
26309
26721
|
return __awaiter(this, void 0, void 0, function* () {
|
|
26310
26722
|
try {
|
|
26311
26723
|
const env = DataManager.getSettings('env');
|
|
26312
|
-
Log$c.debug('Initializing transports');
|
|
26724
|
+
Log$c.debug('Initializing transports', env);
|
|
26313
26725
|
if (env === 'react-native') {
|
|
26314
26726
|
if (!this.reactNativeInit) {
|
|
26315
26727
|
yield this.transport.init(BleLogger, DevicePool.emitter);
|
|
@@ -26326,7 +26738,10 @@ class TransportManager {
|
|
|
26326
26738
|
yield this.transport.init(LowLevelLogger, DevicePool.emitter, this.plugin);
|
|
26327
26739
|
}
|
|
26328
26740
|
else if (env === 'desktop-web-ble') {
|
|
26329
|
-
yield this.transport.init(WebBleLogger);
|
|
26741
|
+
yield this.transport.init(WebBleLogger, DevicePool.emitter);
|
|
26742
|
+
}
|
|
26743
|
+
else if (env === 'webusb' || env === 'desktop-webusb') {
|
|
26744
|
+
yield this.transport.init(WebUsbLogger);
|
|
26330
26745
|
}
|
|
26331
26746
|
else {
|
|
26332
26747
|
yield this.transport.init(HttpLogger);
|
|
@@ -26462,12 +26877,15 @@ const cancelDeviceWithInitialize = (device) => {
|
|
|
26462
26877
|
}));
|
|
26463
26878
|
};
|
|
26464
26879
|
const Log$b = getLogger(exports.LoggerNames.DeviceCommands);
|
|
26880
|
+
const LogCore = getLogger(exports.LoggerNames.Core);
|
|
26465
26881
|
class DeviceCommands {
|
|
26466
26882
|
constructor(device, mainId) {
|
|
26467
26883
|
this.device = device;
|
|
26468
26884
|
this.mainId = mainId;
|
|
26469
26885
|
this.transport = TransportManager.getTransport();
|
|
26470
26886
|
this.disposed = false;
|
|
26887
|
+
this.instanceId = generateInstanceId('DeviceCommands', device.sdkInstanceId);
|
|
26888
|
+
Log$b.debug(`[DeviceCommands] Created: ${this.instanceId}, device: ${this.device.instanceId}`);
|
|
26471
26889
|
}
|
|
26472
26890
|
dispose(_cancelRequest) {
|
|
26473
26891
|
var _a, _b;
|
|
@@ -26540,11 +26958,16 @@ class DeviceCommands {
|
|
|
26540
26958
|
const promise = this.transport.call(this.mainId, type, msg);
|
|
26541
26959
|
this.callPromise = promise;
|
|
26542
26960
|
const res = yield promise;
|
|
26543
|
-
|
|
26961
|
+
if (res.type === 'Failure') {
|
|
26962
|
+
LogCore.debug('[DeviceCommands] [call] Received', res.type, res.message);
|
|
26963
|
+
}
|
|
26964
|
+
else {
|
|
26965
|
+
LogCore.debug('[DeviceCommands] [call] Received', res.type);
|
|
26966
|
+
}
|
|
26544
26967
|
return res;
|
|
26545
26968
|
}
|
|
26546
26969
|
catch (error) {
|
|
26547
|
-
|
|
26970
|
+
LogCore.debug('[DeviceCommands] [call] Received error', error);
|
|
26548
26971
|
if (error.errorCode === hardwareShared.HardwareErrorCode.BleDeviceBondError) {
|
|
26549
26972
|
return {
|
|
26550
26973
|
type: 'BleDeviceBondError',
|
|
@@ -26676,19 +27099,22 @@ class DeviceCommands {
|
|
|
26676
27099
|
(message === null || message === void 0 ? void 0 : message.includes('verify failed'))) {
|
|
26677
27100
|
error = hardwareShared.ERRORS.TypedError(hardwareShared.HardwareErrorCode.FirmwareVerificationFailed, message);
|
|
26678
27101
|
}
|
|
27102
|
+
else if (message === null || message === void 0 ? void 0 : message.includes('Firmware downgrade not allowed')) {
|
|
27103
|
+
error = hardwareShared.ERRORS.TypedError(hardwareShared.HardwareErrorCode.FirmwareDowngradeNotAllowed, message);
|
|
27104
|
+
}
|
|
26679
27105
|
}
|
|
26680
27106
|
if (code === 'Failure_UnexpectedMessage') {
|
|
26681
27107
|
if (callType === 'PassphraseAck') {
|
|
26682
27108
|
error = hardwareShared.ERRORS.TypedError(hardwareShared.HardwareErrorCode.UnexpectPassphrase);
|
|
26683
27109
|
}
|
|
26684
|
-
if (message === 'Not in Signing mode') {
|
|
27110
|
+
else if (message === 'Not in Signing mode') {
|
|
26685
27111
|
error = hardwareShared.ERRORS.TypedError(hardwareShared.HardwareErrorCode.NotInSigningMode);
|
|
26686
27112
|
}
|
|
26687
27113
|
}
|
|
26688
27114
|
if (error) {
|
|
26689
27115
|
return Promise.reject(error);
|
|
26690
27116
|
}
|
|
26691
|
-
return Promise.reject(hardwareShared.ERRORS.TypedError(hardwareShared.HardwareErrorCode.RuntimeError, `${code || 'Failure_UnknownCode'},${message || '
|
|
27117
|
+
return Promise.reject(hardwareShared.ERRORS.TypedError(hardwareShared.HardwareErrorCode.RuntimeError, `${code || 'Failure_UnknownCode'},${message || 'no error message'}`));
|
|
26692
27118
|
}
|
|
26693
27119
|
if (res.type === 'Features') {
|
|
26694
27120
|
return Promise.resolve(patchFeatures(res));
|
|
@@ -26743,7 +27169,7 @@ class DeviceCommands {
|
|
|
26743
27169
|
return new Promise((resolve, reject) => {
|
|
26744
27170
|
const cancelAndReject = (_error) => cancelDeviceInPrompt(this.device, false)
|
|
26745
27171
|
.then(onCancel => {
|
|
26746
|
-
const error = hardwareShared.ERRORS.TypedError(hardwareShared.HardwareErrorCode.
|
|
27172
|
+
const error = hardwareShared.ERRORS.TypedError(hardwareShared.HardwareErrorCode.CallQueueActionCancelled, `${DEVICE.PIN} canceled`);
|
|
26747
27173
|
if (onCancel) {
|
|
26748
27174
|
const { payload } = onCancel || {};
|
|
26749
27175
|
reject(error || new Error(payload === null || payload === void 0 ? void 0 : payload.message));
|
|
@@ -26755,7 +27181,13 @@ class DeviceCommands {
|
|
|
26755
27181
|
.catch(error => {
|
|
26756
27182
|
reject(error);
|
|
26757
27183
|
});
|
|
26758
|
-
|
|
27184
|
+
const listenerCount = this.device.listenerCount(DEVICE.PIN);
|
|
27185
|
+
Log$b.debug(`[${this.instanceId}] _promptPin called`, {
|
|
27186
|
+
responseID: this.currentResponseID,
|
|
27187
|
+
deviceInstanceId: this.device.instanceId,
|
|
27188
|
+
listenerCount,
|
|
27189
|
+
});
|
|
27190
|
+
if (listenerCount > 0) {
|
|
26759
27191
|
this.device.setCancelableAction(cancelAndReject);
|
|
26760
27192
|
this.device.emit(DEVICE.PIN, this.device, type, (err, pin) => {
|
|
26761
27193
|
this.device.clearCancelableAction();
|
|
@@ -26768,8 +27200,16 @@ class DeviceCommands {
|
|
|
26768
27200
|
});
|
|
26769
27201
|
}
|
|
26770
27202
|
else {
|
|
26771
|
-
|
|
26772
|
-
|
|
27203
|
+
const activeRequests = getActiveRequestsByDeviceInstance(this.device.instanceId);
|
|
27204
|
+
const errorInfo = {
|
|
27205
|
+
commandsInstanceId: this.instanceId,
|
|
27206
|
+
deviceInstanceId: this.device.instanceId,
|
|
27207
|
+
currentResponseID: this.currentResponseID,
|
|
27208
|
+
listenerCount,
|
|
27209
|
+
activeRequests: activeRequests.map(formatRequestContext),
|
|
27210
|
+
};
|
|
27211
|
+
LogCore.error('[DeviceCommands] [call] PIN callback not configured, cancelling request', Object.assign({}, errorInfo));
|
|
27212
|
+
reject(hardwareShared.ERRORS.TypedError(hardwareShared.HardwareErrorCode.RuntimeError, `_promptPin: PIN callback not configured: ${JSON.stringify(errorInfo)}`));
|
|
26773
27213
|
}
|
|
26774
27214
|
});
|
|
26775
27215
|
}
|
|
@@ -26777,7 +27217,7 @@ class DeviceCommands {
|
|
|
26777
27217
|
return new Promise((resolve, reject) => {
|
|
26778
27218
|
const cancelAndReject = (_error) => cancelDeviceInPrompt(this.device, false)
|
|
26779
27219
|
.then(onCancel => {
|
|
26780
|
-
const error = hardwareShared.ERRORS.TypedError(hardwareShared.HardwareErrorCode.
|
|
27220
|
+
const error = hardwareShared.ERRORS.TypedError(hardwareShared.HardwareErrorCode.CallQueueActionCancelled, `${DEVICE.PASSPHRASE} canceled`);
|
|
26781
27221
|
if (onCancel) {
|
|
26782
27222
|
const { payload } = onCancel || {};
|
|
26783
27223
|
reject(error || new Error(payload === null || payload === void 0 ? void 0 : payload.message));
|
|
@@ -26802,7 +27242,7 @@ class DeviceCommands {
|
|
|
26802
27242
|
});
|
|
26803
27243
|
}
|
|
26804
27244
|
else {
|
|
26805
|
-
|
|
27245
|
+
LogCore.error('[DeviceCommands] [call] Passphrase callback not configured, cancelling request');
|
|
26806
27246
|
reject(hardwareShared.ERRORS.TypedError(hardwareShared.HardwareErrorCode.RuntimeError, '_promptPassphrase: Passphrase callback not configured'));
|
|
26807
27247
|
}
|
|
26808
27248
|
});
|
|
@@ -26817,7 +27257,7 @@ const parseRunOptions = (options) => {
|
|
|
26817
27257
|
const Log$a = getLogger(exports.LoggerNames.Device);
|
|
26818
27258
|
const deviceSessionCache = {};
|
|
26819
27259
|
class Device extends events.exports {
|
|
26820
|
-
constructor(descriptor) {
|
|
27260
|
+
constructor(descriptor, sdkInstanceId) {
|
|
26821
27261
|
super();
|
|
26822
27262
|
this.deviceConnector = null;
|
|
26823
27263
|
this.deviceAcquired = false;
|
|
@@ -26831,12 +27271,17 @@ class Device extends events.exports {
|
|
|
26831
27271
|
this.keepSession = false;
|
|
26832
27272
|
this.passphraseState = undefined;
|
|
26833
27273
|
this.originalDescriptor = descriptor;
|
|
27274
|
+
this.sdkInstanceId = sdkInstanceId;
|
|
27275
|
+
this.instanceId = generateInstanceId('Device', this.sdkInstanceId);
|
|
27276
|
+
this.createdAt = Date.now();
|
|
27277
|
+
Log$a.debug(`[Device] Created: ${this.instanceId}${this.sdkInstanceId ? ` for SDK: ${this.sdkInstanceId}` : ''}`);
|
|
26834
27278
|
}
|
|
26835
|
-
static fromDescriptor(originalDescriptor) {
|
|
27279
|
+
static fromDescriptor(originalDescriptor, sdkInstanceId) {
|
|
26836
27280
|
const descriptor = Object.assign({}, originalDescriptor);
|
|
26837
|
-
return new Device(descriptor);
|
|
27281
|
+
return new Device(descriptor, sdkInstanceId);
|
|
26838
27282
|
}
|
|
26839
27283
|
toMessageObject() {
|
|
27284
|
+
var _a;
|
|
26840
27285
|
if (this.isUnacquired() || !this.features)
|
|
26841
27286
|
return null;
|
|
26842
27287
|
const env = DataManager.getSettings('env');
|
|
@@ -26846,9 +27291,13 @@ class Device extends events.exports {
|
|
|
26846
27291
|
return {
|
|
26847
27292
|
connectId: DataManager.isBleConnect(env) ? this.mainId || null : getDeviceUUID(this.features),
|
|
26848
27293
|
uuid: getDeviceUUID(this.features),
|
|
27294
|
+
commType: this.originalDescriptor.commType,
|
|
27295
|
+
sdkInstanceId: this.sdkInstanceId,
|
|
27296
|
+
instanceId: this.instanceId,
|
|
27297
|
+
createdAt: this.createdAt,
|
|
26849
27298
|
deviceType,
|
|
26850
27299
|
deviceId: this.features.device_id || null,
|
|
26851
|
-
path: this.originalDescriptor.path,
|
|
27300
|
+
path: (_a = this.originalDescriptor) === null || _a === void 0 ? void 0 : _a.path,
|
|
26852
27301
|
bleName,
|
|
26853
27302
|
name: bleName || label || `UKey ${deviceType === null || deviceType === void 0 ? void 0 : deviceType.toUpperCase()}`,
|
|
26854
27303
|
label: label || 'UKey',
|
|
@@ -27123,6 +27572,7 @@ class Device extends events.exports {
|
|
|
27123
27572
|
});
|
|
27124
27573
|
}
|
|
27125
27574
|
_runInner(fn, options) {
|
|
27575
|
+
var _a;
|
|
27126
27576
|
return __awaiter(this, void 0, void 0, function* () {
|
|
27127
27577
|
if (!this.isUsedHere() || this.commands.disposed) {
|
|
27128
27578
|
const env = DataManager.getSettings('env');
|
|
@@ -27165,14 +27615,10 @@ class Device extends events.exports {
|
|
|
27165
27615
|
this.runPromise.reject(e);
|
|
27166
27616
|
}
|
|
27167
27617
|
if (e instanceof hardwareShared.HardwareError &&
|
|
27168
|
-
(e.errorCode
|
|
27169
|
-
|
|
27170
|
-
|
|
27171
|
-
|
|
27172
|
-
e.errorCode === hardwareShared.HardwareErrorCode.ResponseUnexpectTypeError ||
|
|
27173
|
-
e.errorCode === hardwareShared.HardwareErrorCode.PinInvalid ||
|
|
27174
|
-
e.errorCode === hardwareShared.HardwareErrorCode.PinCancelled ||
|
|
27175
|
-
e.errorCode === hardwareShared.HardwareErrorCode.UnexpectPassphrase)) {
|
|
27618
|
+
hardwareShared.ERROR_CODES_REQUIRE_RELEASE.includes(e.errorCode)) {
|
|
27619
|
+
if (hardwareShared.ERROR_CODES_REQUIRE_DISCONNECT.includes(e.errorCode)) {
|
|
27620
|
+
yield ((_a = this.deviceConnector) === null || _a === void 0 ? void 0 : _a.disconnect(this.mainId));
|
|
27621
|
+
}
|
|
27176
27622
|
yield this.release();
|
|
27177
27623
|
Log$a.debug(`error code ${e.errorCode} release device, mainId: ${this.mainId}`);
|
|
27178
27624
|
}
|
|
@@ -27420,10 +27866,10 @@ class DeviceList extends events.exports {
|
|
|
27420
27866
|
}
|
|
27421
27867
|
}
|
|
27422
27868
|
|
|
27423
|
-
const getFirmwareReleaseInfo = (features) => {
|
|
27424
|
-
const firmwareStatus = DataManager.getFirmwareStatus(features);
|
|
27425
|
-
const changelog = DataManager.getFirmwareChangelog(features);
|
|
27426
|
-
const release = DataManager.getFirmwareLatestRelease(features);
|
|
27869
|
+
const getFirmwareReleaseInfo = (features, firmwareType) => {
|
|
27870
|
+
const firmwareStatus = DataManager.getFirmwareStatus(features, firmwareType);
|
|
27871
|
+
const changelog = DataManager.getFirmwareChangelog(features, firmwareType);
|
|
27872
|
+
const release = DataManager.getFirmwareLatestRelease(features, firmwareType);
|
|
27427
27873
|
const bootloaderMode = !!features.bootloader_mode;
|
|
27428
27874
|
return {
|
|
27429
27875
|
status: firmwareStatus,
|
|
@@ -27444,8 +27890,8 @@ const getBleFirmwareReleaseInfo = (features) => {
|
|
|
27444
27890
|
bootloaderMode,
|
|
27445
27891
|
};
|
|
27446
27892
|
};
|
|
27447
|
-
const getBootloaderReleaseInfo = (features, willUpdateFirmwareVersion) => {
|
|
27448
|
-
const release = DataManager.getFirmwareLatestRelease(features);
|
|
27893
|
+
const getBootloaderReleaseInfo = ({ features, willUpdateFirmwareVersion, firmwareType, }) => {
|
|
27894
|
+
const release = DataManager.getFirmwareLatestRelease(features, firmwareType);
|
|
27449
27895
|
const changelog = [release === null || release === void 0 ? void 0 : release.bootloaderChangelog].filter(item => item != null &&
|
|
27450
27896
|
typeof item === 'object' &&
|
|
27451
27897
|
Object.prototype.hasOwnProperty.call(item, 'zh-CN') &&
|
|
@@ -27454,10 +27900,14 @@ const getBootloaderReleaseInfo = (features, willUpdateFirmwareVersion) => {
|
|
|
27454
27900
|
let shouldUpdate = false;
|
|
27455
27901
|
const deviceType = getDeviceType(features);
|
|
27456
27902
|
if (DeviceModelToTypes.model_mini.includes(deviceType)) {
|
|
27457
|
-
shouldUpdate = !!checkNeedUpdateBootForClassicAndMini(
|
|
27903
|
+
shouldUpdate = !!checkNeedUpdateBootForClassicAndMini({
|
|
27904
|
+
features,
|
|
27905
|
+
willUpdateFirmware: willUpdateFirmwareVersion,
|
|
27906
|
+
firmwareType,
|
|
27907
|
+
});
|
|
27458
27908
|
}
|
|
27459
27909
|
else if (DeviceModelToTypes.model_touch.includes(deviceType)) {
|
|
27460
|
-
shouldUpdate = checkNeedUpdateBootForTouch(features);
|
|
27910
|
+
shouldUpdate = checkNeedUpdateBootForTouch(features, firmwareType);
|
|
27461
27911
|
}
|
|
27462
27912
|
return {
|
|
27463
27913
|
status: shouldUpdate ? 'outdated' : 'valid',
|
|
@@ -27495,13 +27945,36 @@ class BaseMethod {
|
|
|
27495
27945
|
getVersionRange() {
|
|
27496
27946
|
return {};
|
|
27497
27947
|
}
|
|
27948
|
+
setContext(context) {
|
|
27949
|
+
this.sdkInstanceId = context.sdkInstanceId;
|
|
27950
|
+
this.instanceId = generateInstanceId('Method', this.sdkInstanceId);
|
|
27951
|
+
Log$9.debug(`[BaseMethod] Created: ${this.instanceId}, method: ${this.name}, SDK: ${this.sdkInstanceId}`);
|
|
27952
|
+
}
|
|
27498
27953
|
setDevice(device) {
|
|
27954
|
+
var _a, _b;
|
|
27499
27955
|
this.device = device;
|
|
27956
|
+
if (!device.sdkInstanceId && this.sdkInstanceId) {
|
|
27957
|
+
device.sdkInstanceId = this.sdkInstanceId;
|
|
27958
|
+
device.instanceId = generateInstanceId('Device', this.sdkInstanceId);
|
|
27959
|
+
}
|
|
27960
|
+
if (this.requestContext) {
|
|
27961
|
+
this.requestContext.deviceInstanceId = device.instanceId;
|
|
27962
|
+
this.requestContext.commandsInstanceId = (_a = device.commands) === null || _a === void 0 ? void 0 : _a.instanceId;
|
|
27963
|
+
this.requestContext.sdkInstanceId = this.sdkInstanceId;
|
|
27964
|
+
}
|
|
27965
|
+
if (device.commands && this.sdkInstanceId) {
|
|
27966
|
+
device.commands.instanceId = generateInstanceId('DeviceCommands', this.sdkInstanceId);
|
|
27967
|
+
}
|
|
27968
|
+
if (device.commands) {
|
|
27969
|
+
device.commands.currentResponseID = this.responseID;
|
|
27970
|
+
}
|
|
27971
|
+
Log$9.debug(`[${this.instanceId}] setDevice: ${device.instanceId}, commands: ${(_b = device.commands) === null || _b === void 0 ? void 0 : _b.instanceId}`);
|
|
27500
27972
|
}
|
|
27501
27973
|
checkFirmwareRelease() {
|
|
27502
27974
|
if (!this.device || !this.device.features)
|
|
27503
27975
|
return;
|
|
27504
|
-
const
|
|
27976
|
+
const firmwareType = getFirmwareType(this.device.features);
|
|
27977
|
+
const releaseInfo = getFirmwareReleaseInfo(this.device.features, firmwareType);
|
|
27505
27978
|
this.postMessage(createFirmwareMessage(FIRMWARE.RELEASE_INFO, Object.assign(Object.assign({}, releaseInfo), { device: this.device.toMessageObject() })));
|
|
27506
27979
|
const bleReleaseInfo = getBleFirmwareReleaseInfo(this.device.features);
|
|
27507
27980
|
this.postMessage(createFirmwareMessage(FIRMWARE.BLE_RELEASE_INFO, Object.assign(Object.assign({}, bleReleaseInfo), { device: this.device.toMessageObject() })));
|
|
@@ -27526,12 +27999,17 @@ class BaseMethod {
|
|
|
27526
27999
|
const versionRange = getMethodVersionRange(this.device.features, type => getVersionRange()[type]);
|
|
27527
28000
|
if (!versionRange) {
|
|
27528
28001
|
if (options === null || options === void 0 ? void 0 : options.strictCheckDeviceSupport) {
|
|
27529
|
-
throw hardwareShared.
|
|
28002
|
+
throw hardwareShared.createDeviceNotSupportMethodError(this.name, getFirmwareType(this.device.features));
|
|
27530
28003
|
}
|
|
27531
28004
|
return;
|
|
27532
28005
|
}
|
|
27533
28006
|
if (semver__default["default"].valid(firmwareVersion) && semver__default["default"].lt(firmwareVersion, versionRange.min)) {
|
|
27534
|
-
throw hardwareShared.createNeedUpgradeFirmwareHardwareError(
|
|
28007
|
+
throw hardwareShared.createNeedUpgradeFirmwareHardwareError({
|
|
28008
|
+
currentVersion: firmwareVersion,
|
|
28009
|
+
requireVersion: versionRange.min,
|
|
28010
|
+
methodName: this.name,
|
|
28011
|
+
firmwareType: getFirmwareType(this.device.features),
|
|
28012
|
+
});
|
|
27535
28013
|
}
|
|
27536
28014
|
}
|
|
27537
28015
|
checkSafetyLevelOnTestNet() {
|
|
@@ -27701,8 +28179,12 @@ class CheckFirmwareRelease extends BaseMethod {
|
|
|
27701
28179
|
this.skipForceUpdateCheck = true;
|
|
27702
28180
|
}
|
|
27703
28181
|
run() {
|
|
28182
|
+
var _a;
|
|
28183
|
+
const payload = this.payload;
|
|
27704
28184
|
if (this.device.features) {
|
|
27705
|
-
const
|
|
28185
|
+
const deviceFirmwareType = getFirmwareType(this.device.features);
|
|
28186
|
+
const firmwareType = (_a = payload.firmwareType) !== null && _a !== void 0 ? _a : deviceFirmwareType;
|
|
28187
|
+
const releaseInfo = getFirmwareReleaseInfo(this.device.features, firmwareType);
|
|
27706
28188
|
return Promise.resolve(releaseInfo);
|
|
27707
28189
|
}
|
|
27708
28190
|
return Promise.resolve(null);
|
|
@@ -27843,12 +28325,20 @@ class CheckBootloaderRelease extends BaseMethod {
|
|
|
27843
28325
|
this.skipForceUpdateCheck = true;
|
|
27844
28326
|
}
|
|
27845
28327
|
run() {
|
|
28328
|
+
var _a;
|
|
27846
28329
|
return __awaiter(this, void 0, void 0, function* () {
|
|
27847
28330
|
if (!this.device.features) {
|
|
27848
28331
|
return null;
|
|
27849
28332
|
}
|
|
27850
28333
|
const { features } = this.device;
|
|
27851
|
-
const
|
|
28334
|
+
const payload = this.payload;
|
|
28335
|
+
const deviceFirmwareType = getFirmwareType(features);
|
|
28336
|
+
const firmwareType = (_a = payload.firmwareType) !== null && _a !== void 0 ? _a : deviceFirmwareType;
|
|
28337
|
+
const releaseInfo = getBootloaderReleaseInfo({
|
|
28338
|
+
features,
|
|
28339
|
+
willUpdateFirmwareVersion: payload.willUpdateFirmwareVersion,
|
|
28340
|
+
firmwareType,
|
|
28341
|
+
});
|
|
27852
28342
|
return Promise.resolve(releaseInfo);
|
|
27853
28343
|
});
|
|
27854
28344
|
}
|
|
@@ -27864,11 +28354,14 @@ class CheckAllFirmwareRelease extends BaseMethod {
|
|
|
27864
28354
|
var _a, _b;
|
|
27865
28355
|
return __awaiter(this, void 0, void 0, function* () {
|
|
27866
28356
|
const { features } = this.device;
|
|
27867
|
-
const { checkBridgeRelease } = this
|
|
28357
|
+
const { checkBridgeRelease, firmwareType: firmwareTypeParams } = this
|
|
28358
|
+
.payload;
|
|
27868
28359
|
if (!features) {
|
|
27869
28360
|
return Promise.resolve(null);
|
|
27870
28361
|
}
|
|
27871
|
-
const
|
|
28362
|
+
const deviceFirmwareType = getFirmwareType(features);
|
|
28363
|
+
const firmwareType = firmwareTypeParams !== null && firmwareTypeParams !== void 0 ? firmwareTypeParams : deviceFirmwareType;
|
|
28364
|
+
const firmwareRelease = getFirmwareReleaseInfo(features, firmwareType);
|
|
27872
28365
|
const currentFirmwareVersion = getDeviceFirmwareVersion(features).join('.');
|
|
27873
28366
|
const willUpdateFirmwareVersion = (_b = (_a = firmwareRelease.release) === null || _a === void 0 ? void 0 : _a.version) === null || _b === void 0 ? void 0 : _b.join('.');
|
|
27874
28367
|
const deviceType = getDeviceType(features);
|
|
@@ -27881,7 +28374,11 @@ class CheckAllFirmwareRelease extends BaseMethod {
|
|
|
27881
28374
|
willUpdateFirmwareVersion,
|
|
27882
28375
|
});
|
|
27883
28376
|
}
|
|
27884
|
-
const bootloaderRelease = getBootloaderReleaseInfo(
|
|
28377
|
+
const bootloaderRelease = getBootloaderReleaseInfo({
|
|
28378
|
+
features,
|
|
28379
|
+
willUpdateFirmwareVersion,
|
|
28380
|
+
firmwareType,
|
|
28381
|
+
});
|
|
27885
28382
|
const bleFirmwareReleaseInfo = getBleFirmwareReleaseInfo(features);
|
|
27886
28383
|
return {
|
|
27887
28384
|
firmware: firmwareRelease,
|
|
@@ -27895,11 +28392,32 @@ class CheckAllFirmwareRelease extends BaseMethod {
|
|
|
27895
28392
|
release: bridgeReleaseInfo.releaseVersion,
|
|
27896
28393
|
}
|
|
27897
28394
|
: undefined,
|
|
28395
|
+
features,
|
|
27898
28396
|
};
|
|
27899
28397
|
});
|
|
27900
28398
|
}
|
|
27901
28399
|
}
|
|
27902
28400
|
|
|
28401
|
+
class CheckFirmwareTypeAvailable extends BaseMethod {
|
|
28402
|
+
init() {
|
|
28403
|
+
this.useDevice = false;
|
|
28404
|
+
this.useDevicePassphraseState = false;
|
|
28405
|
+
this.skipForceUpdateCheck = true;
|
|
28406
|
+
}
|
|
28407
|
+
run() {
|
|
28408
|
+
var _a, _b;
|
|
28409
|
+
const payload = this.payload;
|
|
28410
|
+
const { deviceType, firmwareType } = payload;
|
|
28411
|
+
if (deviceType === hardwareShared.EDeviceType.Unknown) {
|
|
28412
|
+
return Promise.resolve(undefined);
|
|
28413
|
+
}
|
|
28414
|
+
const latestFirmwareField = getLatestFirmwareField(firmwareType);
|
|
28415
|
+
const releaseInfos = (_b = (_a = DataManager.deviceMap[deviceType]) === null || _a === void 0 ? void 0 : _a[latestFirmwareField]) !== null && _b !== void 0 ? _b : [];
|
|
28416
|
+
const releaseInfo = findLatestRelease(releaseInfos);
|
|
28417
|
+
return Promise.resolve(releaseInfo);
|
|
28418
|
+
}
|
|
28419
|
+
}
|
|
28420
|
+
|
|
27903
28421
|
class DeviceBackup extends BaseMethod {
|
|
27904
28422
|
init() {
|
|
27905
28423
|
this.useDevicePassphraseState = false;
|
|
@@ -28038,12 +28556,25 @@ const validateParams = (values, fields) => {
|
|
|
28038
28556
|
throw invalidParameter(`Parameter [${field.name}] is of type invalid and should be [${field.type}].`);
|
|
28039
28557
|
}
|
|
28040
28558
|
break;
|
|
28041
|
-
case 'buffer':
|
|
28042
|
-
if (typeof value === 'undefined' ||
|
|
28043
|
-
(
|
|
28559
|
+
case 'buffer': {
|
|
28560
|
+
if (typeof value === 'undefined' || value === null) {
|
|
28561
|
+
throw invalidParameter(`Parameter [${field.name}] is of type invalid and should be [buffer].`);
|
|
28562
|
+
}
|
|
28563
|
+
const isNodeBuffer = typeof Buffer !== 'undefined' &&
|
|
28564
|
+
typeof Buffer.isBuffer === 'function' &&
|
|
28565
|
+
Buffer.isBuffer(value);
|
|
28566
|
+
const isCustomBuffer = value.constructor &&
|
|
28567
|
+
typeof value.constructor.isBuffer === 'function' &&
|
|
28568
|
+
value.constructor.isBuffer(value);
|
|
28569
|
+
const isArrayBuffer = typeof ArrayBuffer !== 'undefined' && value instanceof ArrayBuffer;
|
|
28570
|
+
const isArrayBufferView = typeof ArrayBuffer !== 'undefined' &&
|
|
28571
|
+
typeof ArrayBuffer.isView === 'function' &&
|
|
28572
|
+
ArrayBuffer.isView(value);
|
|
28573
|
+
if (!isNodeBuffer && !isCustomBuffer && !isArrayBuffer && !isArrayBufferView) {
|
|
28044
28574
|
throw invalidParameter(`Parameter [${field.name}] is of type invalid and should be [buffer].`);
|
|
28045
28575
|
}
|
|
28046
28576
|
break;
|
|
28577
|
+
}
|
|
28047
28578
|
case 'hexString':
|
|
28048
28579
|
if (typeof value !== 'string' || !isHexString(addHexPrefix(value))) {
|
|
28049
28580
|
throw invalidParameter(`Parameter [${field.name}] is of type invalid and should be [${field.type}].`);
|
|
@@ -28245,19 +28776,13 @@ class DeviceSettings extends BaseMethod {
|
|
|
28245
28776
|
{ name: 'passphraseAlwaysOnDevice', type: 'boolean' },
|
|
28246
28777
|
{ name: 'safetyChecks', type: 'number' },
|
|
28247
28778
|
{ name: 'experimentalFeatures', type: 'boolean' },
|
|
28779
|
+
{ name: 'autoShutdownDelayMs', type: 'number' },
|
|
28780
|
+
{ name: 'changeBrightness', type: 'boolean' },
|
|
28781
|
+
{ name: 'hapticFeedback', type: 'boolean' },
|
|
28248
28782
|
]);
|
|
28249
|
-
this.params = {
|
|
28250
|
-
|
|
28251
|
-
|
|
28252
|
-
use_passphrase: this.payload.usePassphrase,
|
|
28253
|
-
homescreen: this.payload.homescreen,
|
|
28254
|
-
_passphrase_source: this.payload.passphraseSource,
|
|
28255
|
-
auto_lock_delay_ms: this.payload.autoLockDelayMs,
|
|
28256
|
-
display_rotation: this.payload.displayRotation,
|
|
28257
|
-
passphrase_always_on_device: this.payload.passphraseAlwaysOnDevice,
|
|
28258
|
-
safety_checks: this.payload.safetyChecks,
|
|
28259
|
-
experimental_features: this.payload.experimentalFeatures,
|
|
28260
|
-
};
|
|
28783
|
+
this.params = Object.assign(Object.assign({ language: this.payload.language, label: this.payload.label, use_passphrase: this.payload.usePassphrase, homescreen: this.payload.homescreen, _passphrase_source: this.payload.passphraseSource, auto_lock_delay_ms: this.payload.autoLockDelayMs, display_rotation: this.payload.displayRotation, passphrase_always_on_device: this.payload.passphraseAlwaysOnDevice, safety_checks: this.payload.safetyChecks, experimental_features: this.payload.experimentalFeatures, auto_shutdown_delay_ms: this.payload.autoShutdownDelayMs }, (this.payload.changeBrightness
|
|
28784
|
+
? { change_brightness: this.payload.changeBrightness }
|
|
28785
|
+
: undefined)), { haptic_feedback: this.payload.hapticFeedback });
|
|
28261
28786
|
}
|
|
28262
28787
|
getVersionRange() {
|
|
28263
28788
|
if (this.payload.usePassphrase) {
|
|
@@ -28270,9 +28795,31 @@ class DeviceSettings extends BaseMethod {
|
|
|
28270
28795
|
return {};
|
|
28271
28796
|
}
|
|
28272
28797
|
run() {
|
|
28798
|
+
var _a, _b, _c, _d, _e;
|
|
28273
28799
|
return __awaiter(this, void 0, void 0, function* () {
|
|
28274
|
-
|
|
28275
|
-
|
|
28800
|
+
try {
|
|
28801
|
+
const res = yield this.device.commands.typedCall('ApplySettings', 'Success', Object.assign({}, this.params));
|
|
28802
|
+
return res.message;
|
|
28803
|
+
}
|
|
28804
|
+
catch (error) {
|
|
28805
|
+
if ((_a = error.message) === null || _a === void 0 ? void 0 : _a.toLowerCase().includes('no setting provided')) {
|
|
28806
|
+
return Promise.reject(hardwareShared.TypedError(hardwareShared.HardwareErrorCode.DeviceSettingsNotProvided, error.message));
|
|
28807
|
+
}
|
|
28808
|
+
if ((_b = error.message) === null || _b === void 0 ? void 0 : _b.includes('all support ISO_639-1 language keys include')) {
|
|
28809
|
+
const supportedLanguages = (_e = (_d = (_c = error.message) === null || _c === void 0 ? void 0 : _c.replace('all support ISO_639-1 language keys include', '')) === null || _d === void 0 ? void 0 : _d.trim()) === null || _e === void 0 ? void 0 : _e.split(' ');
|
|
28810
|
+
const errorMessage = supportedLanguages.reduce((acc, language) => {
|
|
28811
|
+
const label = LANGUAGE_LABELS === null || LANGUAGE_LABELS === void 0 ? void 0 : LANGUAGE_LABELS[language];
|
|
28812
|
+
if (label) {
|
|
28813
|
+
acc.push(label);
|
|
28814
|
+
}
|
|
28815
|
+
return acc;
|
|
28816
|
+
}, []);
|
|
28817
|
+
return Promise.reject(hardwareShared.TypedError(hardwareShared.HardwareErrorCode.DeviceSettingsLanguageNotSupport, error.message, {
|
|
28818
|
+
languages: errorMessage.join(', '),
|
|
28819
|
+
}));
|
|
28820
|
+
}
|
|
28821
|
+
throw error;
|
|
28822
|
+
}
|
|
28276
28823
|
});
|
|
28277
28824
|
}
|
|
28278
28825
|
}
|
|
@@ -28314,29 +28861,53 @@ class DeviceUploadResource extends BaseMethod {
|
|
|
28314
28861
|
this.paramsData = {
|
|
28315
28862
|
data: new Uint8Array(),
|
|
28316
28863
|
thumbnailData: new Uint8Array(),
|
|
28864
|
+
blurData: new Uint8Array(),
|
|
28865
|
+
};
|
|
28866
|
+
this.uploadProgress = {
|
|
28867
|
+
totalBytes: 0,
|
|
28868
|
+
uploadedBytes: 0,
|
|
28869
|
+
currentFile: 'main',
|
|
28317
28870
|
};
|
|
28318
28871
|
this.processResourceRequest = (res) => __awaiter(this, void 0, void 0, function* () {
|
|
28319
28872
|
if (res.type === 'Success') {
|
|
28320
|
-
|
|
28873
|
+
const response = {
|
|
28874
|
+
message: res.message.message,
|
|
28875
|
+
};
|
|
28876
|
+
response.applyScreen = true;
|
|
28877
|
+
const firmwareVersion = getDeviceFirmwareVersion(this.device.features).join('.');
|
|
28878
|
+
const deviceType = getDeviceType(this.device.features);
|
|
28879
|
+
if (deviceType === hardwareShared.EDeviceType.Pro && semver__default["default"].gte(firmwareVersion, '4.17.0')) {
|
|
28880
|
+
response.applyScreen = false;
|
|
28881
|
+
}
|
|
28882
|
+
return response;
|
|
28321
28883
|
}
|
|
28322
28884
|
const { offset, data_length } = res.message;
|
|
28323
|
-
const { data, thumbnailData } = this.paramsData;
|
|
28885
|
+
const { data, thumbnailData, blurData } = this.paramsData;
|
|
28324
28886
|
if (offset === undefined) {
|
|
28325
28887
|
throw new Error('offset is undefined');
|
|
28326
28888
|
}
|
|
28327
|
-
let
|
|
28328
|
-
|
|
28329
|
-
|
|
28330
|
-
|
|
28331
|
-
|
|
28332
|
-
|
|
28889
|
+
let sourceData;
|
|
28890
|
+
switch (res.type) {
|
|
28891
|
+
case 'ResourceRequest':
|
|
28892
|
+
sourceData = data;
|
|
28893
|
+
break;
|
|
28894
|
+
case 'BlurRequest':
|
|
28895
|
+
sourceData = blurData;
|
|
28896
|
+
break;
|
|
28897
|
+
case 'ZoomRequest':
|
|
28898
|
+
sourceData = thumbnailData;
|
|
28899
|
+
break;
|
|
28900
|
+
default:
|
|
28901
|
+
throw new Error('Invalid request type');
|
|
28333
28902
|
}
|
|
28903
|
+
const payload = this.getDataChunk(sourceData, offset, data_length);
|
|
28334
28904
|
const digest = blake2s.blake2s(payload);
|
|
28905
|
+
this.updateProgress(payload.byteLength, res.type);
|
|
28335
28906
|
const resourceAckParams = {
|
|
28336
28907
|
data_chunk: utils.bytesToHex(payload),
|
|
28337
28908
|
hash: utils.bytesToHex(digest),
|
|
28338
28909
|
};
|
|
28339
|
-
const response = yield this.device.commands.typedCall('ResourceAck', ['ResourceRequest', 'ZoomRequest', 'Success'], resourceAckParams);
|
|
28910
|
+
const response = yield this.device.commands.typedCall('ResourceAck', ['ResourceRequest', 'ZoomRequest', 'BlurRequest', 'Success'], resourceAckParams);
|
|
28340
28911
|
return this.processResourceRequest(response);
|
|
28341
28912
|
});
|
|
28342
28913
|
}
|
|
@@ -28364,16 +28935,23 @@ class DeviceUploadResource extends BaseMethod {
|
|
|
28364
28935
|
{ name: 'suffix', type: 'string', required: true },
|
|
28365
28936
|
{ name: 'dataHex', type: 'string', required: true },
|
|
28366
28937
|
{ name: 'thumbnailDataHex', type: 'string', required: true },
|
|
28938
|
+
{ name: 'blurDataHex', type: 'hexString', required: true },
|
|
28367
28939
|
{ name: 'resType', type: 'number', required: true },
|
|
28368
28940
|
{ name: 'nftMetaData', type: 'string' },
|
|
28369
28941
|
{ name: 'fileNameNoExt', type: 'string' },
|
|
28370
28942
|
]);
|
|
28371
|
-
const { suffix, dataHex, thumbnailDataHex, resType, nftMetaData } = this
|
|
28943
|
+
const { suffix, dataHex, thumbnailDataHex, blurDataHex, resType, nftMetaData } = this
|
|
28372
28944
|
.payload;
|
|
28373
28945
|
this.paramsData = {
|
|
28374
|
-
data: hexToBytes(dataHex),
|
|
28375
|
-
thumbnailData: hexToBytes(thumbnailDataHex),
|
|
28946
|
+
data: new Uint8Array(hexToBytes(dataHex)),
|
|
28947
|
+
thumbnailData: new Uint8Array(hexToBytes(thumbnailDataHex)),
|
|
28948
|
+
blurData: new Uint8Array(hexToBytes(blurDataHex)),
|
|
28376
28949
|
};
|
|
28950
|
+
this.uploadProgress.totalBytes =
|
|
28951
|
+
this.paramsData.data.byteLength +
|
|
28952
|
+
this.paramsData.thumbnailData.byteLength +
|
|
28953
|
+
this.paramsData.blurData.byteLength;
|
|
28954
|
+
this.uploadProgress.uploadedBytes = 0;
|
|
28377
28955
|
const fileHash = utils.bytesToHex(blake2s.blake2s(this.payload.dataHex)).slice(0, 8);
|
|
28378
28956
|
const file_name_no_ext = lodash.isEmpty(this.payload.fileNameNoExt)
|
|
28379
28957
|
? `${resType === 0 ? 'wp' : 'nft'}-${fileHash}-${Math.floor(Date.now() / 1000)}`
|
|
@@ -28382,18 +28960,38 @@ class DeviceUploadResource extends BaseMethod {
|
|
|
28382
28960
|
extension: suffix,
|
|
28383
28961
|
data_length: this.paramsData.data.byteLength,
|
|
28384
28962
|
zoom_data_length: this.paramsData.thumbnailData.byteLength,
|
|
28963
|
+
blur_data_length: this.paramsData.blurData.byteLength,
|
|
28385
28964
|
res_type: resType,
|
|
28386
28965
|
nft_meta_data: nftMetaData,
|
|
28387
28966
|
file_name_no_ext,
|
|
28388
28967
|
};
|
|
28389
28968
|
}
|
|
28969
|
+
getDataChunk(sourceData, offset, length) {
|
|
28970
|
+
const endOffset = Math.min(offset + length, sourceData.byteLength);
|
|
28971
|
+
return sourceData.subarray(offset, endOffset);
|
|
28972
|
+
}
|
|
28973
|
+
updateProgress(chunkSize, requestType) {
|
|
28974
|
+
this.uploadProgress.uploadedBytes += chunkSize;
|
|
28975
|
+
if (requestType === 'ResourceRequest') {
|
|
28976
|
+
this.uploadProgress.currentFile = 'main';
|
|
28977
|
+
}
|
|
28978
|
+
else if (requestType === 'ZoomRequest') {
|
|
28979
|
+
this.uploadProgress.currentFile = 'thumbnail';
|
|
28980
|
+
}
|
|
28981
|
+
else {
|
|
28982
|
+
this.uploadProgress.currentFile = 'blur';
|
|
28983
|
+
}
|
|
28984
|
+
const progress = Math.round((this.uploadProgress.uploadedBytes / this.uploadProgress.totalBytes) * 100);
|
|
28985
|
+
if (process.env.NODE_ENV === 'development') {
|
|
28986
|
+
console.log(`Upload progress: ${progress}% (${this.uploadProgress.currentFile})`);
|
|
28987
|
+
}
|
|
28988
|
+
}
|
|
28390
28989
|
run() {
|
|
28391
28990
|
return __awaiter(this, void 0, void 0, function* () {
|
|
28392
28991
|
if (this.payload.resType === hardwareTransport.Messages.ResourceType.Nft) {
|
|
28393
28992
|
this.checkUploadNFTSupport();
|
|
28394
28993
|
}
|
|
28395
|
-
const res = yield this.device.commands.typedCall('ResourceUpload', ['ResourceRequest', 'ZoomRequest', 'Success'], this.params);
|
|
28396
|
-
this.postMessage(createUiMessage(UI_REQUEST.CLOSE_UI_WINDOW));
|
|
28994
|
+
const res = yield this.device.commands.typedCall('ResourceUpload', ['ResourceRequest', 'ZoomRequest', 'BlurRequest', 'Success'], this.params);
|
|
28397
28995
|
return this.processResourceRequest(res);
|
|
28398
28996
|
});
|
|
28399
28997
|
}
|
|
@@ -28463,8 +29061,13 @@ class DeviceWipe extends BaseMethod {
|
|
|
28463
29061
|
}
|
|
28464
29062
|
}
|
|
28465
29063
|
|
|
28466
|
-
const getBinary = ({ features, updateType, version, isUpdateBootloader, }) => __awaiter(void 0, void 0, void 0, function* () {
|
|
28467
|
-
const releaseInfo = getInfo({
|
|
29064
|
+
const getBinary = ({ features, updateType, version, isUpdateBootloader, firmwareType, }) => __awaiter(void 0, void 0, void 0, function* () {
|
|
29065
|
+
const releaseInfo = getInfo({
|
|
29066
|
+
features,
|
|
29067
|
+
updateType,
|
|
29068
|
+
targetVersion: version === null || version === void 0 ? void 0 : version.join('.'),
|
|
29069
|
+
firmwareType,
|
|
29070
|
+
});
|
|
28468
29071
|
if (!releaseInfo) {
|
|
28469
29072
|
throw hardwareShared.ERRORS.TypedError(hardwareShared.HardwareErrorCode.RuntimeError, 'no firmware found for this device');
|
|
28470
29073
|
}
|
|
@@ -28501,7 +29104,7 @@ const getSysResourceBinary = (url) => __awaiter(void 0, void 0, void 0, function
|
|
|
28501
29104
|
binary: fw,
|
|
28502
29105
|
};
|
|
28503
29106
|
});
|
|
28504
|
-
const getInfo = ({ features, updateType, targetVersion }) => {
|
|
29107
|
+
const getInfo = ({ features, updateType, targetVersion, firmwareType }) => {
|
|
28505
29108
|
var _a, _b;
|
|
28506
29109
|
const deviceType = getDeviceType(features);
|
|
28507
29110
|
if (deviceType === 'unknown') {
|
|
@@ -28512,6 +29115,7 @@ const getInfo = ({ features, updateType, targetVersion }) => {
|
|
|
28512
29115
|
features,
|
|
28513
29116
|
updateType,
|
|
28514
29117
|
targetVersion,
|
|
29118
|
+
firmwareType,
|
|
28515
29119
|
});
|
|
28516
29120
|
const releaseInfo = (_b = (_a = deviceMap === null || deviceMap === void 0 ? void 0 : deviceMap[deviceType]) === null || _a === void 0 ? void 0 : _a[firmwareUpdateField]) !== null && _b !== void 0 ? _b : [];
|
|
28517
29121
|
return findLatestRelease(releaseInfo);
|
|
@@ -28519,8 +29123,14 @@ const getInfo = ({ features, updateType, targetVersion }) => {
|
|
|
28519
29123
|
|
|
28520
29124
|
const NEW_BOOT_UPRATE_FIRMWARE_VERSION = '2.4.5';
|
|
28521
29125
|
const SESSION_ERROR$1 = 'session not found';
|
|
28522
|
-
const FIRMWARE_UPDATE_CONFIRM = 'Firmware install confirmed';
|
|
29126
|
+
const FIRMWARE_UPDATE_CONFIRM$1 = 'Firmware install confirmed';
|
|
28523
29127
|
const Log$8 = getLogger(exports.LoggerNames.Method);
|
|
29128
|
+
const isDeviceDisconnectedError$1 = (error) => {
|
|
29129
|
+
const message = error instanceof Error ? error.message : String(error !== null && error !== void 0 ? error : '');
|
|
29130
|
+
return (message.includes('device was disconnected') ||
|
|
29131
|
+
message.includes('transferIn') ||
|
|
29132
|
+
message.includes('USBDevice'));
|
|
29133
|
+
};
|
|
28524
29134
|
const postConfirmationMessage = (device) => {
|
|
28525
29135
|
var _a;
|
|
28526
29136
|
if ((_a = device.features) === null || _a === void 0 ? void 0 : _a.firmware_present) {
|
|
@@ -28552,27 +29162,80 @@ const waitBleInstall = (updateType) => __awaiter(void 0, void 0, void 0, functio
|
|
|
28552
29162
|
yield wait(10 * 1000);
|
|
28553
29163
|
}
|
|
28554
29164
|
});
|
|
28555
|
-
const uploadFirmware = (updateType, typedCall, postMessage, device, { payload, rebootOnSuccess, }) => __awaiter(void 0, void 0, void 0, function* () {
|
|
29165
|
+
const uploadFirmware = (updateType, typedCall, postMessage, device, { payload, rebootOnSuccess, }, isUpdateBootloader) => __awaiter(void 0, void 0, void 0, function* () {
|
|
29166
|
+
var _a, _b;
|
|
28556
29167
|
const deviceType = getDeviceType(device.features);
|
|
28557
29168
|
if (DeviceModelToTypes.model_mini.includes(deviceType)) {
|
|
28558
29169
|
postConfirmationMessage(device);
|
|
28559
29170
|
postProgressTip(device, 'ConfirmOnDevice', postMessage);
|
|
28560
|
-
const
|
|
29171
|
+
const isFirmware = updateType === 'firmware';
|
|
29172
|
+
if (isFirmware && !isUpdateBootloader) {
|
|
29173
|
+
const newFeatures = yield typedCall('GetFeatures', 'Features', {});
|
|
29174
|
+
const deviceBootloaderVersion = getDeviceBootloaderVersion(newFeatures.message).join('.');
|
|
29175
|
+
const supportUpgradeFileHeader = semver__default["default"].gte(deviceBootloaderVersion, '2.1.0');
|
|
29176
|
+
Log$8.debug('supportUpgradeFileHeader:', supportUpgradeFileHeader);
|
|
29177
|
+
if (supportUpgradeFileHeader) {
|
|
29178
|
+
const HEADER_SIZE = 1024;
|
|
29179
|
+
if (payload.byteLength < HEADER_SIZE) {
|
|
29180
|
+
throw hardwareShared.ERRORS.TypedError(hardwareShared.HardwareErrorCode.RuntimeError, `firmware payload too small: ${payload.byteLength} bytes, expected at least ${HEADER_SIZE} bytes`);
|
|
29181
|
+
}
|
|
29182
|
+
Log$8.debug('Uploading firmware header:', {
|
|
29183
|
+
size: HEADER_SIZE,
|
|
29184
|
+
totalSize: payload.byteLength,
|
|
29185
|
+
});
|
|
29186
|
+
postProgressTip(device, 'UploadingFirmwareHeader', postMessage);
|
|
29187
|
+
const header = new Uint8Array(payload.slice(0, HEADER_SIZE));
|
|
29188
|
+
try {
|
|
29189
|
+
const headerRes = yield typedCall('UpgradeFileHeader', 'Success', {
|
|
29190
|
+
data: bytesToHex(header),
|
|
29191
|
+
});
|
|
29192
|
+
const isUnknownMessage = (_b = (_a = headerRes.message) === null || _a === void 0 ? void 0 : _a.message) === null || _b === void 0 ? void 0 : _b.includes('Failure_UnknownMessage');
|
|
29193
|
+
if (headerRes.type !== 'Success' && !isUnknownMessage) {
|
|
29194
|
+
Log$8.error('Firmware header upload failed:', headerRes);
|
|
29195
|
+
throw hardwareShared.ERRORS.TypedError(hardwareShared.HardwareErrorCode.RuntimeError, 'failed to upload firmware header');
|
|
29196
|
+
}
|
|
29197
|
+
}
|
|
29198
|
+
catch (error) {
|
|
29199
|
+
Log$8.error('Firmware header upload failed:', error);
|
|
29200
|
+
const message = error instanceof Error ? error.message : String(error !== null && error !== void 0 ? error : '');
|
|
29201
|
+
if (!message.includes('Failure_UnknownMessage')) {
|
|
29202
|
+
throw error;
|
|
29203
|
+
}
|
|
29204
|
+
}
|
|
29205
|
+
Log$8.debug('Firmware header uploaded successfully');
|
|
29206
|
+
}
|
|
29207
|
+
}
|
|
29208
|
+
const eraseCommand = isFirmware ? 'FirmwareErase' : 'FirmwareErase_ex';
|
|
28561
29209
|
const eraseRes = yield typedCall(eraseCommand, 'Success', {});
|
|
28562
29210
|
if (eraseRes.type !== 'Success') {
|
|
28563
29211
|
throw hardwareShared.ERRORS.TypedError(hardwareShared.HardwareErrorCode.RuntimeError, 'erase firmware error');
|
|
28564
29212
|
}
|
|
28565
29213
|
postProgressTip(device, 'FirmwareEraseSuccess', postMessage);
|
|
28566
29214
|
postProgressMessage(device, 0, 'installingFirmware', postMessage);
|
|
28567
|
-
|
|
28568
|
-
|
|
28569
|
-
|
|
29215
|
+
let updateResponse;
|
|
29216
|
+
try {
|
|
29217
|
+
updateResponse = yield typedCall('FirmwareUpload', 'Success', {
|
|
29218
|
+
payload,
|
|
29219
|
+
});
|
|
29220
|
+
}
|
|
29221
|
+
catch (error) {
|
|
29222
|
+
if (isDeviceDisconnectedError$1(error)) {
|
|
29223
|
+
Log$8.log('Rebooting device');
|
|
29224
|
+
updateResponse = {
|
|
29225
|
+
type: 'Success',
|
|
29226
|
+
message: { message: FIRMWARE_UPDATE_CONFIRM$1 },
|
|
29227
|
+
};
|
|
29228
|
+
}
|
|
29229
|
+
else {
|
|
29230
|
+
throw error;
|
|
29231
|
+
}
|
|
29232
|
+
}
|
|
28570
29233
|
postProgressMessage(device, 100, 'installingFirmware', postMessage);
|
|
28571
29234
|
yield waitBleInstall(updateType);
|
|
28572
|
-
if (type !== 'Success') {
|
|
29235
|
+
if (updateResponse.type !== 'Success') {
|
|
28573
29236
|
throw hardwareShared.ERRORS.TypedError(hardwareShared.HardwareErrorCode.RuntimeError, 'install firmware error');
|
|
28574
29237
|
}
|
|
28575
|
-
return message;
|
|
29238
|
+
return updateResponse.message;
|
|
28576
29239
|
}
|
|
28577
29240
|
if (DeviceModelToTypes.model_touch.includes(deviceType)) {
|
|
28578
29241
|
if (device.features) {
|
|
@@ -28610,7 +29273,7 @@ const uploadFirmware = (updateType, typedCall, postMessage, device, { payload, r
|
|
|
28610
29273
|
throw hardwareShared.ERRORS.TypedError(hardwareShared.HardwareErrorCode.RuntimeError, 'uploadFirmware: unknown device model');
|
|
28611
29274
|
});
|
|
28612
29275
|
const newTouchUpdateProcess = (updateType, postMessage, device, { payload }, rebootOnSuccess = true) => __awaiter(void 0, void 0, void 0, function* () {
|
|
28613
|
-
var
|
|
29276
|
+
var _c, _d, _e, _f, _g;
|
|
28614
29277
|
let typedCall = device.getCommands().typedCall.bind(device.getCommands());
|
|
28615
29278
|
postProgressTip(device, 'StartTransferData', postMessage);
|
|
28616
29279
|
const filePath = `0:${updateType === 'ble' ? 'ble-' : ''}firmware.bin`;
|
|
@@ -28634,12 +29297,27 @@ const newTouchUpdateProcess = (updateType, postMessage, device, { payload }, reb
|
|
|
28634
29297
|
postProgressTip(device, 'ConfirmOnDevice', postMessage);
|
|
28635
29298
|
postProgressTip(device, 'InstallingFirmware', postMessage);
|
|
28636
29299
|
typedCall = device.getCommands().typedCall.bind(device.getCommands());
|
|
28637
|
-
|
|
28638
|
-
|
|
28639
|
-
|
|
28640
|
-
|
|
29300
|
+
let response;
|
|
29301
|
+
try {
|
|
29302
|
+
response = yield typedCall('FirmwareUpdateEmmc', 'Success', {
|
|
29303
|
+
path: filePath,
|
|
29304
|
+
reboot_on_success: rebootOnSuccess,
|
|
29305
|
+
});
|
|
29306
|
+
}
|
|
29307
|
+
catch (error) {
|
|
29308
|
+
if (isDeviceDisconnectedError$1(error)) {
|
|
29309
|
+
Log$8.log('Rebooting device');
|
|
29310
|
+
response = {
|
|
29311
|
+
type: 'Success',
|
|
29312
|
+
message: { message: FIRMWARE_UPDATE_CONFIRM$1 },
|
|
29313
|
+
};
|
|
29314
|
+
}
|
|
29315
|
+
else {
|
|
29316
|
+
throw error;
|
|
29317
|
+
}
|
|
29318
|
+
}
|
|
28641
29319
|
if (response.type === 'Success' &&
|
|
28642
|
-
((
|
|
29320
|
+
((_c = response === null || response === void 0 ? void 0 : response.message) === null || _c === void 0 ? void 0 : _c.message) === FIRMWARE_UPDATE_CONFIRM$1) {
|
|
28643
29321
|
const timeout = 2 * 60 * 1000;
|
|
28644
29322
|
const startTime = Date.now();
|
|
28645
29323
|
const isBleReconnect = DataManager.isBleConnect(env);
|
|
@@ -28647,7 +29325,7 @@ const newTouchUpdateProcess = (updateType, postMessage, device, { payload }, reb
|
|
|
28647
29325
|
try {
|
|
28648
29326
|
if (isBleReconnect) {
|
|
28649
29327
|
try {
|
|
28650
|
-
yield ((
|
|
29328
|
+
yield ((_d = device.deviceConnector) === null || _d === void 0 ? void 0 : _d.acquire(device.originalDescriptor.id, null, true));
|
|
28651
29329
|
const typedCall = device.getCommands().typedCall.bind(device.getCommands());
|
|
28652
29330
|
yield Promise.race([
|
|
28653
29331
|
typedCall('Initialize', 'Features', {}),
|
|
@@ -28663,14 +29341,14 @@ const newTouchUpdateProcess = (updateType, postMessage, device, { payload }, reb
|
|
|
28663
29341
|
}
|
|
28664
29342
|
}
|
|
28665
29343
|
else {
|
|
28666
|
-
const deviceDiff = yield ((
|
|
28667
|
-
const devicesDescriptor = (
|
|
29344
|
+
const deviceDiff = yield ((_e = device.deviceConnector) === null || _e === void 0 ? void 0 : _e.enumerate());
|
|
29345
|
+
const devicesDescriptor = (_f = deviceDiff === null || deviceDiff === void 0 ? void 0 : deviceDiff.descriptors) !== null && _f !== void 0 ? _f : [];
|
|
28668
29346
|
const { deviceList } = yield DevicePool.getDevices(devicesDescriptor, device.originalDescriptor.id);
|
|
28669
29347
|
if (deviceList.length === 1) {
|
|
28670
29348
|
device.updateFromCache(deviceList[0]);
|
|
28671
29349
|
yield device.acquire();
|
|
28672
29350
|
device.commands.disposed = false;
|
|
28673
|
-
device.getCommands().mainId = (
|
|
29351
|
+
device.getCommands().mainId = (_g = device.mainId) !== null && _g !== void 0 ? _g : '';
|
|
28674
29352
|
}
|
|
28675
29353
|
}
|
|
28676
29354
|
const typedCall = device.getCommands().typedCall.bind(device.getCommands());
|
|
@@ -28688,9 +29366,9 @@ const newTouchUpdateProcess = (updateType, postMessage, device, { payload }, reb
|
|
|
28688
29366
|
return response;
|
|
28689
29367
|
});
|
|
28690
29368
|
const emmcFileWriteWithRetry = (device, filePath, chunkLength, offset, chunk, overwrite, progress) => __awaiter(void 0, void 0, void 0, function* () {
|
|
28691
|
-
var
|
|
29369
|
+
var _h, _j, _k, _l, _m, _o, _p, _q, _r;
|
|
28692
29370
|
const writeFunc = () => __awaiter(void 0, void 0, void 0, function* () {
|
|
28693
|
-
var
|
|
29371
|
+
var _s;
|
|
28694
29372
|
const typedCall = device.getCommands().typedCall.bind(device.getCommands());
|
|
28695
29373
|
const writeRes = yield typedCall('EmmcFileWrite', 'EmmcFile', {
|
|
28696
29374
|
file: {
|
|
@@ -28705,7 +29383,7 @@ const emmcFileWriteWithRetry = (device, filePath, chunkLength, offset, chunk, ov
|
|
|
28705
29383
|
});
|
|
28706
29384
|
if (writeRes.type !== 'EmmcFile') {
|
|
28707
29385
|
if (writeRes.type === 'CallMethodError') {
|
|
28708
|
-
if (((
|
|
29386
|
+
if (((_s = writeRes.message.error) !== null && _s !== void 0 ? _s : '').indexOf(SESSION_ERROR$1) > -1) {
|
|
28709
29387
|
throw hardwareShared.ERRORS.TypedError(hardwareShared.HardwareErrorCode.RuntimeError, SESSION_ERROR$1);
|
|
28710
29388
|
}
|
|
28711
29389
|
}
|
|
@@ -28728,18 +29406,18 @@ const emmcFileWriteWithRetry = (device, filePath, chunkLength, offset, chunk, ov
|
|
|
28728
29406
|
const env = DataManager.getSettings('env');
|
|
28729
29407
|
if (DataManager.isBleConnect(env)) {
|
|
28730
29408
|
yield wait(3000);
|
|
28731
|
-
yield ((
|
|
29409
|
+
yield ((_h = device.deviceConnector) === null || _h === void 0 ? void 0 : _h.acquire(device.originalDescriptor.id, null, true));
|
|
28732
29410
|
yield device.initialize();
|
|
28733
29411
|
}
|
|
28734
|
-
else if (((
|
|
28735
|
-
((
|
|
28736
|
-
const deviceDiff = yield ((
|
|
28737
|
-
const devicesDescriptor = (
|
|
29412
|
+
else if (((_j = error === null || error === void 0 ? void 0 : error.message) === null || _j === void 0 ? void 0 : _j.indexOf(SESSION_ERROR$1)) > -1 ||
|
|
29413
|
+
((_l = (_k = error === null || error === void 0 ? void 0 : error.response) === null || _k === void 0 ? void 0 : _k.data) === null || _l === void 0 ? void 0 : _l.indexOf(SESSION_ERROR$1)) > -1) {
|
|
29414
|
+
const deviceDiff = yield ((_m = device.deviceConnector) === null || _m === void 0 ? void 0 : _m.enumerate());
|
|
29415
|
+
const devicesDescriptor = (_o = deviceDiff === null || deviceDiff === void 0 ? void 0 : deviceDiff.descriptors) !== null && _o !== void 0 ? _o : [];
|
|
28738
29416
|
const { deviceList } = yield DevicePool.getDevices(devicesDescriptor, undefined);
|
|
28739
|
-
if (deviceList.length === 1 && ((
|
|
29417
|
+
if (deviceList.length === 1 && ((_q = (_p = deviceList[0]) === null || _p === void 0 ? void 0 : _p.features) === null || _q === void 0 ? void 0 : _q.bootloader_mode)) {
|
|
28740
29418
|
device.updateFromCache(deviceList[0]);
|
|
28741
29419
|
yield device.acquire();
|
|
28742
|
-
device.getCommands().mainId = (
|
|
29420
|
+
device.getCommands().mainId = (_r = device.mainId) !== null && _r !== void 0 ? _r : '';
|
|
28743
29421
|
}
|
|
28744
29422
|
}
|
|
28745
29423
|
yield wait(3000);
|
|
@@ -28833,15 +29511,19 @@ class DeviceFullyUploadResource extends BaseMethod {
|
|
|
28833
29511
|
return isTouchMode && semver__default["default"].gte(currentVersion, '3.4.0');
|
|
28834
29512
|
}
|
|
28835
29513
|
run() {
|
|
29514
|
+
var _a;
|
|
28836
29515
|
return __awaiter(this, void 0, void 0, function* () {
|
|
28837
29516
|
const { device } = this;
|
|
28838
29517
|
const { features } = device;
|
|
29518
|
+
const payload = this.payload;
|
|
29519
|
+
const deviceFirmwareType = getFirmwareType(features);
|
|
29520
|
+
const firmwareType = (_a = payload.firmwareType) !== null && _a !== void 0 ? _a : deviceFirmwareType;
|
|
28839
29521
|
if (!(features === null || features === void 0 ? void 0 : features.bootloader_mode) && features) {
|
|
28840
29522
|
if (features) {
|
|
28841
29523
|
let { binary } = this.payload;
|
|
28842
29524
|
if (!binary) {
|
|
28843
29525
|
this.postTipMessage('CheckLatestUiResource');
|
|
28844
|
-
const resourceUrl = DataManager.getSysFullResource(features);
|
|
29526
|
+
const resourceUrl = DataManager.getSysFullResource(features, firmwareType);
|
|
28845
29527
|
if (resourceUrl) {
|
|
28846
29528
|
this.postTipMessage('DownloadLatestUiResource');
|
|
28847
29529
|
const resource = yield getSysResourceBinary(resourceUrl);
|
|
@@ -28858,7 +29540,16 @@ class DeviceFullyUploadResource extends BaseMethod {
|
|
|
28858
29540
|
}
|
|
28859
29541
|
}
|
|
28860
29542
|
|
|
28861
|
-
|
|
29543
|
+
const Log$7 = getLogger(exports.LoggerNames.Method);
|
|
29544
|
+
const SESSION_ERROR = 'session not found';
|
|
29545
|
+
const FIRMWARE_UPDATE_CONFIRM = 'Firmware install confirmed';
|
|
29546
|
+
const isDeviceDisconnectedError = (error) => {
|
|
29547
|
+
const message = error instanceof Error ? error.message : String(error !== null && error !== void 0 ? error : '');
|
|
29548
|
+
return (message.includes('device was disconnected') ||
|
|
29549
|
+
message.includes('transferIn') ||
|
|
29550
|
+
message.includes('USBDevice'));
|
|
29551
|
+
};
|
|
29552
|
+
class FirmwareUpdateBaseMethod extends BaseMethod {
|
|
28862
29553
|
constructor() {
|
|
28863
29554
|
super(...arguments);
|
|
28864
29555
|
this.checkPromise = null;
|
|
@@ -28870,45 +29561,389 @@ class DeviceUpdateBootloader extends BaseMethod {
|
|
|
28870
29561
|
},
|
|
28871
29562
|
}));
|
|
28872
29563
|
};
|
|
29564
|
+
this.postProcessingMessage = (type) => {
|
|
29565
|
+
this.postMessage(createUiMessage(UI_REQUEST.FIRMWARE_PROCESSING, {
|
|
29566
|
+
type,
|
|
29567
|
+
}));
|
|
29568
|
+
};
|
|
29569
|
+
this.postProgressMessage = (progress, progressType) => {
|
|
29570
|
+
this.postMessage(createUiMessage(UI_REQUEST.FIRMWARE_PROGRESS, {
|
|
29571
|
+
device: this.device.toMessageObject(),
|
|
29572
|
+
progress,
|
|
29573
|
+
progressType,
|
|
29574
|
+
}));
|
|
29575
|
+
};
|
|
29576
|
+
}
|
|
29577
|
+
init() { }
|
|
29578
|
+
run() {
|
|
29579
|
+
return Promise.resolve();
|
|
29580
|
+
}
|
|
29581
|
+
isBleReconnect() {
|
|
29582
|
+
const env = DataManager.getSettings('env');
|
|
29583
|
+
return this.payload.connectId && DataManager.isBleConnect(env);
|
|
29584
|
+
}
|
|
29585
|
+
_promptDeviceInBootloaderForWebDevice() {
|
|
29586
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
29587
|
+
return new Promise((resolve, reject) => {
|
|
29588
|
+
if (this.device.listenerCount(DEVICE.SELECT_DEVICE_IN_BOOTLOADER_FOR_WEB_DEVICE) > 0) {
|
|
29589
|
+
this.device.emit(DEVICE.SELECT_DEVICE_IN_BOOTLOADER_FOR_WEB_DEVICE, this.device, (err, deviceId) => {
|
|
29590
|
+
if (err) {
|
|
29591
|
+
reject(err);
|
|
29592
|
+
}
|
|
29593
|
+
else {
|
|
29594
|
+
resolve(deviceId);
|
|
29595
|
+
}
|
|
29596
|
+
});
|
|
29597
|
+
}
|
|
29598
|
+
});
|
|
29599
|
+
});
|
|
29600
|
+
}
|
|
29601
|
+
_promptDeviceForSwitchFirmwareWebDevice() {
|
|
29602
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
29603
|
+
return new Promise((resolve, reject) => {
|
|
29604
|
+
if (this.device.listenerCount(DEVICE.SELECT_DEVICE_FOR_SWITCH_FIRMWARE_WEB_DEVICE) > 0) {
|
|
29605
|
+
this.device.emit(DEVICE.SELECT_DEVICE_FOR_SWITCH_FIRMWARE_WEB_DEVICE, this.device, (err, deviceId) => {
|
|
29606
|
+
if (err) {
|
|
29607
|
+
reject(err);
|
|
29608
|
+
}
|
|
29609
|
+
else {
|
|
29610
|
+
resolve(deviceId);
|
|
29611
|
+
}
|
|
29612
|
+
});
|
|
29613
|
+
}
|
|
29614
|
+
});
|
|
29615
|
+
});
|
|
28873
29616
|
}
|
|
29617
|
+
checkDeviceToBootloader(connectId) {
|
|
29618
|
+
var _a, _b;
|
|
29619
|
+
this.checkPromise = hardwareShared.createDeferred();
|
|
29620
|
+
const env = DataManager.getSettings('env');
|
|
29621
|
+
const isBleReconnect = connectId && DataManager.isBleConnect(env);
|
|
29622
|
+
Log$7.log('FirmwareUpdateBaseMethod [checkDeviceToBootloader] isBleReconnect: ', isBleReconnect);
|
|
29623
|
+
let isFirstCheck = true;
|
|
29624
|
+
let checkCount = 0;
|
|
29625
|
+
let timeoutTimer;
|
|
29626
|
+
const isTouchOrProDevice = getDeviceType((_a = this === null || this === void 0 ? void 0 : this.device) === null || _a === void 0 ? void 0 : _a.features) === hardwareShared.EDeviceType.Touch ||
|
|
29627
|
+
getDeviceType((_b = this === null || this === void 0 ? void 0 : this.device) === null || _b === void 0 ? void 0 : _b.features) === hardwareShared.EDeviceType.Pro;
|
|
29628
|
+
const intervalTimer = setInterval(() => __awaiter(this, void 0, void 0, function* () {
|
|
29629
|
+
var _c, _d, _e, _f;
|
|
29630
|
+
checkCount += 1;
|
|
29631
|
+
Log$7.log('FirmwareUpdateBaseMethod [checkDeviceToBootloader] isFirstCheck: ', isFirstCheck);
|
|
29632
|
+
if (isTouchOrProDevice && isFirstCheck) {
|
|
29633
|
+
isFirstCheck = false;
|
|
29634
|
+
Log$7.log('FirmwareUpdateBaseMethod [checkDeviceToBootloader] wait 3000ms');
|
|
29635
|
+
yield wait(3000);
|
|
29636
|
+
}
|
|
29637
|
+
if (checkCount > 4 &&
|
|
29638
|
+
DataManager.isBrowserWebUsb(DataManager.getSettings('env')) &&
|
|
29639
|
+
!this.payload.skipWebDevicePrompt) {
|
|
29640
|
+
clearInterval(intervalTimer);
|
|
29641
|
+
clearTimeout(timeoutTimer);
|
|
29642
|
+
try {
|
|
29643
|
+
this.postTipMessage(exports.FirmwareUpdateTipMessage.SelectDeviceInBootloaderForWebDevice);
|
|
29644
|
+
const confirmed = yield this._promptDeviceInBootloaderForWebDevice();
|
|
29645
|
+
if (confirmed) {
|
|
29646
|
+
yield this._checkDeviceInBootloaderMode(connectId, intervalTimer, timeoutTimer);
|
|
29647
|
+
}
|
|
29648
|
+
}
|
|
29649
|
+
catch (e) {
|
|
29650
|
+
Log$7.log('FirmwareUpdateBaseMethod [checkDeviceToBootloader] _promptDeviceInBootloaderForWebDevice failed: ', e);
|
|
29651
|
+
(_c = this.checkPromise) === null || _c === void 0 ? void 0 : _c.reject(e);
|
|
29652
|
+
}
|
|
29653
|
+
return;
|
|
29654
|
+
}
|
|
29655
|
+
if (isBleReconnect) {
|
|
29656
|
+
try {
|
|
29657
|
+
yield ((_d = this.device.deviceConnector) === null || _d === void 0 ? void 0 : _d.acquire(this.device.originalDescriptor.id, null, true));
|
|
29658
|
+
yield this.device.initialize();
|
|
29659
|
+
if ((_e = this.device.features) === null || _e === void 0 ? void 0 : _e.bootloader_mode) {
|
|
29660
|
+
clearInterval(intervalTimer);
|
|
29661
|
+
(_f = this.checkPromise) === null || _f === void 0 ? void 0 : _f.resolve(true);
|
|
29662
|
+
}
|
|
29663
|
+
}
|
|
29664
|
+
catch (e) {
|
|
29665
|
+
Log$7.log('catch Bluetooth error when device is restarting: ', e);
|
|
29666
|
+
}
|
|
29667
|
+
}
|
|
29668
|
+
else {
|
|
29669
|
+
yield this._checkDeviceInBootloaderMode(connectId, intervalTimer, timeoutTimer);
|
|
29670
|
+
}
|
|
29671
|
+
}), isBleReconnect ? 3000 : 2000);
|
|
29672
|
+
timeoutTimer = setTimeout(() => {
|
|
29673
|
+
if (this.checkPromise) {
|
|
29674
|
+
clearInterval(intervalTimer);
|
|
29675
|
+
this.checkPromise.reject(new Error());
|
|
29676
|
+
}
|
|
29677
|
+
}, 30000);
|
|
29678
|
+
}
|
|
29679
|
+
_checkDeviceInBootloaderMode(connectId, intervalTimer, timeoutTimer) {
|
|
29680
|
+
var _a, _b, _c, _d, _e;
|
|
29681
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
29682
|
+
const deviceDiff = yield ((_a = this.device.deviceConnector) === null || _a === void 0 ? void 0 : _a.enumerate());
|
|
29683
|
+
const devicesDescriptor = (_b = deviceDiff === null || deviceDiff === void 0 ? void 0 : deviceDiff.descriptors) !== null && _b !== void 0 ? _b : [];
|
|
29684
|
+
const { deviceList } = yield DevicePool.getDevices(devicesDescriptor, connectId);
|
|
29685
|
+
if (deviceList.length === 1 && ((_d = (_c = deviceList[0]) === null || _c === void 0 ? void 0 : _c.features) === null || _d === void 0 ? void 0 : _d.bootloader_mode)) {
|
|
29686
|
+
this.device.updateFromCache(deviceList[0]);
|
|
29687
|
+
this.device.commands.disposed = false;
|
|
29688
|
+
if (intervalTimer)
|
|
29689
|
+
clearInterval(intervalTimer);
|
|
29690
|
+
if (timeoutTimer)
|
|
29691
|
+
clearTimeout(timeoutTimer);
|
|
29692
|
+
(_e = this.checkPromise) === null || _e === void 0 ? void 0 : _e.resolve(true);
|
|
29693
|
+
return true;
|
|
29694
|
+
}
|
|
29695
|
+
return false;
|
|
29696
|
+
});
|
|
29697
|
+
}
|
|
29698
|
+
enterBootloaderMode() {
|
|
29699
|
+
var _a;
|
|
29700
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
29701
|
+
const typedCall = this.device.getCommands().typedCall.bind(this.device.getCommands());
|
|
29702
|
+
if (this.device.features && !this.device.features.bootloader_mode) {
|
|
29703
|
+
const uuid = getDeviceUUID(this.device.features);
|
|
29704
|
+
const deviceType = getDeviceType(this.device.features);
|
|
29705
|
+
try {
|
|
29706
|
+
this.postTipMessage(exports.FirmwareUpdateTipMessage.AutoRebootToBootloader);
|
|
29707
|
+
const bootRes = yield typedCall('DeviceBackToBoot', 'Success');
|
|
29708
|
+
if (bootRes.type === 'CallMethodError') {
|
|
29709
|
+
throw hardwareShared.ERRORS.TypedError(hardwareShared.HardwareErrorCode.FirmwareUpdateAutoEnterBootFailure);
|
|
29710
|
+
}
|
|
29711
|
+
this.postTipMessage(exports.FirmwareUpdateTipMessage.GoToBootloaderSuccess);
|
|
29712
|
+
this.checkDeviceToBootloader(this.payload.connectId);
|
|
29713
|
+
if (DeviceModelToTypes.model_classic.includes(deviceType)) {
|
|
29714
|
+
DevicePool.clearDeviceCache(uuid);
|
|
29715
|
+
}
|
|
29716
|
+
delete DevicePool.devicesCache[''];
|
|
29717
|
+
yield ((_a = this.checkPromise) === null || _a === void 0 ? void 0 : _a.promise);
|
|
29718
|
+
this.checkPromise = null;
|
|
29719
|
+
const isTouch = DeviceModelToTypes.model_touch.includes(deviceType);
|
|
29720
|
+
yield wait(isTouch ? 3000 : 1500);
|
|
29721
|
+
yield this.device.acquire();
|
|
29722
|
+
return true;
|
|
29723
|
+
}
|
|
29724
|
+
catch (e) {
|
|
29725
|
+
if (e instanceof hardwareShared.HardwareError) {
|
|
29726
|
+
return Promise.reject(e);
|
|
29727
|
+
}
|
|
29728
|
+
console.log('auto go to bootloader mode failed: ', e);
|
|
29729
|
+
return Promise.reject(hardwareShared.ERRORS.TypedError(hardwareShared.HardwareErrorCode.FirmwareUpdateAutoEnterBootFailure));
|
|
29730
|
+
}
|
|
29731
|
+
}
|
|
29732
|
+
});
|
|
29733
|
+
}
|
|
29734
|
+
startEmmcFirmwareUpdate({ path }) {
|
|
29735
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
29736
|
+
const typedCall = this.device.getCommands().typedCall.bind(this.device.getCommands());
|
|
29737
|
+
let updateResponse;
|
|
29738
|
+
try {
|
|
29739
|
+
updateResponse = yield typedCall('FirmwareUpdateEmmc', 'Success', {
|
|
29740
|
+
path,
|
|
29741
|
+
reboot_on_success: true,
|
|
29742
|
+
});
|
|
29743
|
+
}
|
|
29744
|
+
catch (error) {
|
|
29745
|
+
if (isDeviceDisconnectedError(error)) {
|
|
29746
|
+
Log$7.log('Rebooting device');
|
|
29747
|
+
updateResponse = {
|
|
29748
|
+
type: 'Success',
|
|
29749
|
+
message: { message: FIRMWARE_UPDATE_CONFIRM },
|
|
29750
|
+
};
|
|
29751
|
+
}
|
|
29752
|
+
else {
|
|
29753
|
+
throw error;
|
|
29754
|
+
}
|
|
29755
|
+
}
|
|
29756
|
+
if (updateResponse.type !== 'Success') {
|
|
29757
|
+
throw hardwareShared.ERRORS.TypedError(hardwareShared.HardwareErrorCode.FirmwareError, 'firmware update error');
|
|
29758
|
+
}
|
|
29759
|
+
this.postTipMessage(exports.FirmwareUpdateTipMessage.FirmwareUpdating);
|
|
29760
|
+
});
|
|
29761
|
+
}
|
|
29762
|
+
createUpdatesFolderIfNotExists(path) {
|
|
29763
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
29764
|
+
const typedCall = this.device.getCommands().typedCall.bind(this.device.getCommands());
|
|
29765
|
+
yield typedCall('EmmcDirMake', 'Success', {
|
|
29766
|
+
path,
|
|
29767
|
+
});
|
|
29768
|
+
});
|
|
29769
|
+
}
|
|
29770
|
+
emmcCommonUpdateProcess({ payload, filePath, processedSize, totalSize, }) {
|
|
29771
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
29772
|
+
if (!filePath.startsWith('0:')) {
|
|
29773
|
+
throw new Error('filePath must start with 0:');
|
|
29774
|
+
}
|
|
29775
|
+
const env = DataManager.getSettings('env');
|
|
29776
|
+
const perPackageSize = DataManager.isBleConnect(env) ? 16 : 128;
|
|
29777
|
+
const chunkSize = 1024 * perPackageSize;
|
|
29778
|
+
const totalChunks = Math.ceil(payload.byteLength / chunkSize);
|
|
29779
|
+
let offset = 0;
|
|
29780
|
+
let currentFileProcessed = 0;
|
|
29781
|
+
for (let i = 0; i < totalChunks; i++) {
|
|
29782
|
+
const chunkStart = i * chunkSize;
|
|
29783
|
+
const chunkEnd = Math.min(chunkStart + chunkSize, payload.byteLength);
|
|
29784
|
+
const chunkLength = chunkEnd - chunkStart;
|
|
29785
|
+
const chunk = payload.slice(chunkStart, chunkEnd);
|
|
29786
|
+
const overwrite = i === 0;
|
|
29787
|
+
let progress;
|
|
29788
|
+
if (totalSize !== undefined && processedSize !== undefined) {
|
|
29789
|
+
currentFileProcessed = processedSize + chunkEnd;
|
|
29790
|
+
progress = Math.min(Math.ceil((currentFileProcessed / totalSize) * 100), 99);
|
|
29791
|
+
}
|
|
29792
|
+
else {
|
|
29793
|
+
progress = Math.min(Math.ceil(((i + 1) / totalChunks) * 100), 99);
|
|
29794
|
+
}
|
|
29795
|
+
const writeRes = yield this.emmcFileWriteWithRetry(filePath, chunkLength, offset, chunk, overwrite, progress);
|
|
29796
|
+
offset += writeRes.message.processed_byte;
|
|
29797
|
+
this.postProgressMessage(progress, 'transferData');
|
|
29798
|
+
}
|
|
29799
|
+
return totalSize !== undefined ? (processedSize !== null && processedSize !== void 0 ? processedSize : 0) + payload.byteLength : 0;
|
|
29800
|
+
});
|
|
29801
|
+
}
|
|
29802
|
+
emmcFileWriteWithRetry(filePath, chunkLength, offset, chunk, overwrite, progress) {
|
|
29803
|
+
var _a, _b, _c, _d, _e, _f, _g, _h, _j;
|
|
29804
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
29805
|
+
const writeFunc = () => __awaiter(this, void 0, void 0, function* () {
|
|
29806
|
+
var _k;
|
|
29807
|
+
const typedCall = this.device.getCommands().typedCall.bind(this.device.getCommands());
|
|
29808
|
+
const writeRes = yield typedCall('EmmcFileWrite', 'EmmcFile', {
|
|
29809
|
+
file: {
|
|
29810
|
+
path: filePath,
|
|
29811
|
+
len: chunkLength,
|
|
29812
|
+
offset,
|
|
29813
|
+
data: chunk,
|
|
29814
|
+
},
|
|
29815
|
+
overwrite,
|
|
29816
|
+
append: offset !== 0,
|
|
29817
|
+
ui_percentage: progress,
|
|
29818
|
+
});
|
|
29819
|
+
if (writeRes.type !== 'EmmcFile') {
|
|
29820
|
+
if (writeRes.type === 'CallMethodError') {
|
|
29821
|
+
if (((_k = writeRes.message.error) !== null && _k !== void 0 ? _k : '').indexOf(SESSION_ERROR) > -1) {
|
|
29822
|
+
throw hardwareShared.ERRORS.TypedError(hardwareShared.HardwareErrorCode.RuntimeError, SESSION_ERROR);
|
|
29823
|
+
}
|
|
29824
|
+
}
|
|
29825
|
+
throw hardwareShared.ERRORS.TypedError(hardwareShared.HardwareErrorCode.EmmcFileWriteFirmwareError, 'transfer data error');
|
|
29826
|
+
}
|
|
29827
|
+
return writeRes;
|
|
29828
|
+
});
|
|
29829
|
+
let retryCount = 10;
|
|
29830
|
+
while (retryCount > 0) {
|
|
29831
|
+
try {
|
|
29832
|
+
const result = yield writeFunc();
|
|
29833
|
+
return result;
|
|
29834
|
+
}
|
|
29835
|
+
catch (error) {
|
|
29836
|
+
Log$7.error(`emmcWrite error: `, error);
|
|
29837
|
+
retryCount--;
|
|
29838
|
+
if (retryCount === 0) {
|
|
29839
|
+
throw hardwareShared.ERRORS.TypedError(hardwareShared.HardwareErrorCode.EmmcFileWriteFirmwareError, 'transfer data error');
|
|
29840
|
+
}
|
|
29841
|
+
const env = DataManager.getSettings('env');
|
|
29842
|
+
if (DataManager.isBleConnect(env)) {
|
|
29843
|
+
yield wait(3000);
|
|
29844
|
+
yield ((_a = this.device.deviceConnector) === null || _a === void 0 ? void 0 : _a.acquire(this.device.originalDescriptor.id, null, true));
|
|
29845
|
+
yield this.device.initialize();
|
|
29846
|
+
}
|
|
29847
|
+
else if (((_b = error === null || error === void 0 ? void 0 : error.message) === null || _b === void 0 ? void 0 : _b.indexOf(SESSION_ERROR)) > -1 ||
|
|
29848
|
+
((_d = (_c = error === null || error === void 0 ? void 0 : error.response) === null || _c === void 0 ? void 0 : _c.data) === null || _d === void 0 ? void 0 : _d.indexOf(SESSION_ERROR)) > -1) {
|
|
29849
|
+
const deviceDiff = yield ((_e = this.device.deviceConnector) === null || _e === void 0 ? void 0 : _e.enumerate());
|
|
29850
|
+
const devicesDescriptor = (_f = deviceDiff === null || deviceDiff === void 0 ? void 0 : deviceDiff.descriptors) !== null && _f !== void 0 ? _f : [];
|
|
29851
|
+
const { deviceList } = yield DevicePool.getDevices(devicesDescriptor, undefined);
|
|
29852
|
+
if (deviceList.length === 1 && ((_h = (_g = deviceList[0]) === null || _g === void 0 ? void 0 : _g.features) === null || _h === void 0 ? void 0 : _h.bootloader_mode)) {
|
|
29853
|
+
this.device.updateFromCache(deviceList[0]);
|
|
29854
|
+
yield this.device.acquire();
|
|
29855
|
+
this.device.getCommands().mainId = (_j = this.device.mainId) !== null && _j !== void 0 ? _j : '';
|
|
29856
|
+
}
|
|
29857
|
+
}
|
|
29858
|
+
yield wait(2000);
|
|
29859
|
+
}
|
|
29860
|
+
}
|
|
29861
|
+
});
|
|
29862
|
+
}
|
|
29863
|
+
reboot(rebootType) {
|
|
29864
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
29865
|
+
const typedCall = this.device.getCommands().typedCall.bind(this.device.getCommands());
|
|
29866
|
+
try {
|
|
29867
|
+
const res = yield typedCall('Reboot', 'Success', {
|
|
29868
|
+
reboot_type: rebootType,
|
|
29869
|
+
});
|
|
29870
|
+
return res.message;
|
|
29871
|
+
}
|
|
29872
|
+
catch (error) {
|
|
29873
|
+
if (error instanceof Error &&
|
|
29874
|
+
(error.message.includes('device was disconnected') ||
|
|
29875
|
+
error.message.includes('transferIn') ||
|
|
29876
|
+
error.message.includes('USBDevice'))) {
|
|
29877
|
+
return { message: 'Device rebooted successfully' };
|
|
29878
|
+
}
|
|
29879
|
+
throw error;
|
|
29880
|
+
}
|
|
29881
|
+
});
|
|
29882
|
+
}
|
|
29883
|
+
}
|
|
29884
|
+
|
|
29885
|
+
class DeviceUpdateBootloader extends FirmwareUpdateBaseMethod {
|
|
28874
29886
|
init() {
|
|
28875
29887
|
this.allowDeviceMode = [UI_REQUEST.BOOTLOADER, UI_REQUEST.NOT_INITIALIZE];
|
|
28876
29888
|
this.requireDeviceMode = [];
|
|
28877
29889
|
this.useDevicePassphraseState = false;
|
|
28878
29890
|
this.skipForceUpdateCheck = true;
|
|
28879
29891
|
}
|
|
28880
|
-
|
|
29892
|
+
updateBootloaderWithEmmcFileWrite(_device, binary) {
|
|
28881
29893
|
return __awaiter(this, void 0, void 0, function* () {
|
|
28882
|
-
|
|
28883
|
-
|
|
28884
|
-
|
|
28885
|
-
|
|
28886
|
-
|
|
28887
|
-
|
|
28888
|
-
|
|
28889
|
-
|
|
28890
|
-
|
|
28891
|
-
|
|
28892
|
-
|
|
28893
|
-
|
|
29894
|
+
const filePath = '0:boot/bootloader.bin';
|
|
29895
|
+
this.postTipMessage(exports.FirmwareUpdateTipMessage.StartTransferData);
|
|
29896
|
+
yield this.emmcCommonUpdateProcess({
|
|
29897
|
+
payload: binary,
|
|
29898
|
+
filePath,
|
|
29899
|
+
});
|
|
29900
|
+
this.postTipMessage(exports.FirmwareUpdateTipMessage.ConfirmOnDevice);
|
|
29901
|
+
yield this.reboot(hardwareTransport.RebootType.Normal);
|
|
29902
|
+
this.postTipMessage(exports.FirmwareUpdateTipMessage.UpdateBootloaderSuccess);
|
|
29903
|
+
return true;
|
|
29904
|
+
});
|
|
29905
|
+
}
|
|
29906
|
+
updateTouchBootloader({ device, features, firmwareType, }) {
|
|
29907
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
29908
|
+
let { binary } = this.payload;
|
|
29909
|
+
if (!binary) {
|
|
29910
|
+
this.postTipMessage(exports.FirmwareUpdateTipMessage.CheckLatestUiResource);
|
|
29911
|
+
const resourceUrl = features
|
|
29912
|
+
? DataManager.getBootloaderResource(features, firmwareType)
|
|
29913
|
+
: null;
|
|
29914
|
+
if (resourceUrl) {
|
|
29915
|
+
this.postTipMessage(exports.FirmwareUpdateTipMessage.DownloadLatestBootloaderResource);
|
|
29916
|
+
const resource = yield getSysResourceBinary(resourceUrl);
|
|
29917
|
+
this.postTipMessage(exports.FirmwareUpdateTipMessage.DownloadLatestBootloaderResourceSuccess);
|
|
29918
|
+
if (resource) {
|
|
29919
|
+
binary = resource.binary;
|
|
28894
29920
|
}
|
|
28895
29921
|
}
|
|
28896
|
-
|
|
28897
|
-
|
|
28898
|
-
|
|
29922
|
+
}
|
|
29923
|
+
if (!checkBootloaderLength(binary)) {
|
|
29924
|
+
throw hardwareShared.ERRORS.TypedError(hardwareShared.HardwareErrorCode.CheckDownloadFileError);
|
|
29925
|
+
}
|
|
29926
|
+
if (features && features.bootloader_mode) {
|
|
29927
|
+
this.postTipMessage(exports.FirmwareUpdateTipMessage.UpdateBootloader);
|
|
29928
|
+
return this.updateBootloaderWithEmmcFileWrite(device, binary);
|
|
29929
|
+
}
|
|
29930
|
+
if (features && !features.bootloader_mode) {
|
|
28899
29931
|
yield updateBootloader(this.device.getCommands().typedCall.bind(this.device.getCommands()), this.postMessage, device, binary);
|
|
28900
29932
|
return Promise.resolve(true);
|
|
28901
29933
|
}
|
|
28902
|
-
return Promise.resolve(true);
|
|
28903
29934
|
});
|
|
28904
29935
|
}
|
|
28905
29936
|
run() {
|
|
29937
|
+
var _a;
|
|
28906
29938
|
return __awaiter(this, void 0, void 0, function* () {
|
|
28907
29939
|
const { device } = this;
|
|
28908
29940
|
const { features } = device;
|
|
29941
|
+
const payload = this.payload;
|
|
28909
29942
|
const deviceType = getDeviceType(features);
|
|
29943
|
+
const deviceFirmwareType = getFirmwareType(features);
|
|
29944
|
+
const firmwareType = (_a = payload.firmwareType) !== null && _a !== void 0 ? _a : deviceFirmwareType;
|
|
28910
29945
|
if (DeviceModelToTypes.model_touch.includes(deviceType)) {
|
|
28911
|
-
return this.updateTouchBootloader(device, features);
|
|
29946
|
+
return this.updateTouchBootloader({ device, features, firmwareType });
|
|
28912
29947
|
}
|
|
28913
29948
|
return Promise.resolve(true);
|
|
28914
29949
|
});
|
|
@@ -28977,7 +30012,7 @@ class GetNextU2FCounter extends BaseMethod {
|
|
|
28977
30012
|
}
|
|
28978
30013
|
}
|
|
28979
30014
|
|
|
28980
|
-
const Log$
|
|
30015
|
+
const Log$6 = getLogger(exports.LoggerNames.Method);
|
|
28981
30016
|
class FirmwareUpdate extends BaseMethod {
|
|
28982
30017
|
constructor() {
|
|
28983
30018
|
super(...arguments);
|
|
@@ -29015,7 +30050,7 @@ class FirmwareUpdate extends BaseMethod {
|
|
|
29015
30050
|
this.checkPromise = hardwareShared.createDeferred();
|
|
29016
30051
|
const env = DataManager.getSettings('env');
|
|
29017
30052
|
const isBleReconnect = connectId && DataManager.isBleConnect(env);
|
|
29018
|
-
Log$
|
|
30053
|
+
Log$6.log('FirmwareUpdate [checkDeviceToBootloader] isBleReconnect: ', isBleReconnect);
|
|
29019
30054
|
const intervalTimer = setInterval(() => __awaiter(this, void 0, void 0, function* () {
|
|
29020
30055
|
var _a, _b, _c, _d, _e, _f, _g, _h;
|
|
29021
30056
|
if (isBleReconnect) {
|
|
@@ -29028,7 +30063,7 @@ class FirmwareUpdate extends BaseMethod {
|
|
|
29028
30063
|
}
|
|
29029
30064
|
}
|
|
29030
30065
|
catch (e) {
|
|
29031
|
-
Log$
|
|
30066
|
+
Log$6.log('catch Bluetooth error when device is restarting: ', e);
|
|
29032
30067
|
}
|
|
29033
30068
|
}
|
|
29034
30069
|
else {
|
|
@@ -29082,7 +30117,7 @@ class FirmwareUpdate extends BaseMethod {
|
|
|
29082
30117
|
if (e instanceof hardwareShared.HardwareError) {
|
|
29083
30118
|
return Promise.reject(e);
|
|
29084
30119
|
}
|
|
29085
|
-
Log$
|
|
30120
|
+
Log$6.log('auto go to bootloader mode failed: ', e);
|
|
29086
30121
|
return Promise.reject(hardwareShared.ERRORS.TypedError(hardwareShared.HardwareErrorCode.FirmwareUpdateAutoEnterBootFailure));
|
|
29087
30122
|
}
|
|
29088
30123
|
}
|
|
@@ -29100,6 +30135,7 @@ class FirmwareUpdate extends BaseMethod {
|
|
|
29100
30135
|
features: device.features,
|
|
29101
30136
|
version: params.version,
|
|
29102
30137
|
updateType: params.updateType,
|
|
30138
|
+
firmwareType: hardwareShared.EFirmwareType.Universal,
|
|
29103
30139
|
});
|
|
29104
30140
|
binary = firmware.binary;
|
|
29105
30141
|
this.postTipMessage('DownloadFirmwareSuccess');
|
|
@@ -29109,7 +30145,7 @@ class FirmwareUpdate extends BaseMethod {
|
|
|
29109
30145
|
throw hardwareShared.ERRORS.TypedError(hardwareShared.HardwareErrorCode.FirmwareUpdateDownloadFailed, (_b = err.message) !== null && _b !== void 0 ? _b : err);
|
|
29110
30146
|
}
|
|
29111
30147
|
yield this.device.acquire();
|
|
29112
|
-
const response = yield uploadFirmware(params.updateType, this.device.getCommands().typedCall.bind(this.device.getCommands()), this.postMessage, device, { payload: binary, rebootOnSuccess: this.payload.rebootOnSuccess });
|
|
30148
|
+
const response = yield uploadFirmware(params.updateType, this.device.getCommands().typedCall.bind(this.device.getCommands()), this.postMessage, device, { payload: binary, rebootOnSuccess: this.payload.rebootOnSuccess }, false);
|
|
29113
30149
|
if (this.connectId) {
|
|
29114
30150
|
DevicePool.clearDeviceCache(this.connectId);
|
|
29115
30151
|
}
|
|
@@ -29118,7 +30154,7 @@ class FirmwareUpdate extends BaseMethod {
|
|
|
29118
30154
|
}
|
|
29119
30155
|
}
|
|
29120
30156
|
|
|
29121
|
-
const Log$
|
|
30157
|
+
const Log$5 = getLogger(exports.LoggerNames.Method);
|
|
29122
30158
|
class FirmwareUpdateV2 extends BaseMethod {
|
|
29123
30159
|
constructor() {
|
|
29124
30160
|
super(...arguments);
|
|
@@ -29143,6 +30179,7 @@ class FirmwareUpdateV2 extends BaseMethod {
|
|
|
29143
30179
|
{ name: 'binary', type: 'buffer' },
|
|
29144
30180
|
{ name: 'forcedUpdateRes', type: 'boolean' },
|
|
29145
30181
|
{ name: 'platform', type: 'string', required: true },
|
|
30182
|
+
{ name: 'firmwareType', type: 'string' },
|
|
29146
30183
|
]);
|
|
29147
30184
|
if (!payload.updateType) {
|
|
29148
30185
|
throw hardwareShared.ERRORS.TypedError(hardwareShared.HardwareErrorCode.CallMethodInvalidParameter, 'updateType is required');
|
|
@@ -29153,7 +30190,7 @@ class FirmwareUpdateV2 extends BaseMethod {
|
|
|
29153
30190
|
isUpdateBootloader: payload.isUpdateBootloader,
|
|
29154
30191
|
};
|
|
29155
30192
|
if ('version' in payload) {
|
|
29156
|
-
this.params = Object.assign(Object.assign({}, this.params), { version: payload.version });
|
|
30193
|
+
this.params = Object.assign(Object.assign({}, this.params), { version: payload.version, firmwareType: payload.firmwareType });
|
|
29157
30194
|
}
|
|
29158
30195
|
if ('binary' in payload) {
|
|
29159
30196
|
this.params = Object.assign(Object.assign({}, this.params), { binary: payload.binary });
|
|
@@ -29180,7 +30217,7 @@ class FirmwareUpdateV2 extends BaseMethod {
|
|
|
29180
30217
|
this.checkPromise = hardwareShared.createDeferred();
|
|
29181
30218
|
const env = DataManager.getSettings('env');
|
|
29182
30219
|
const isBleReconnect = connectId && DataManager.isBleConnect(env);
|
|
29183
|
-
Log$
|
|
30220
|
+
Log$5.log('FirmwareUpdateV2 [checkDeviceToBootloader] isBleReconnect: ', isBleReconnect);
|
|
29184
30221
|
let isFirstCheck = true;
|
|
29185
30222
|
let checkCount = 0;
|
|
29186
30223
|
let timeoutTimer;
|
|
@@ -29189,13 +30226,15 @@ class FirmwareUpdateV2 extends BaseMethod {
|
|
|
29189
30226
|
const intervalTimer = setInterval(() => __awaiter(this, void 0, void 0, function* () {
|
|
29190
30227
|
var _c, _d, _e, _f;
|
|
29191
30228
|
checkCount += 1;
|
|
29192
|
-
Log$
|
|
30229
|
+
Log$5.log('FirmwareUpdateV2 [checkDeviceToBootloader] isFirstCheck: ', isFirstCheck);
|
|
29193
30230
|
if (isTouchOrProDevice && isFirstCheck) {
|
|
29194
30231
|
isFirstCheck = false;
|
|
29195
|
-
Log$
|
|
30232
|
+
Log$5.log('FirmwareUpdateV2 [checkDeviceToBootloader] wait 3000ms');
|
|
29196
30233
|
yield wait(3000);
|
|
29197
30234
|
}
|
|
29198
|
-
if (checkCount > 4 &&
|
|
30235
|
+
if (checkCount > 4 &&
|
|
30236
|
+
DataManager.isBrowserWebUsb(DataManager.getSettings('env')) &&
|
|
30237
|
+
!this.payload.skipWebDevicePrompt) {
|
|
29199
30238
|
clearInterval(intervalTimer);
|
|
29200
30239
|
clearTimeout(timeoutTimer);
|
|
29201
30240
|
try {
|
|
@@ -29208,7 +30247,7 @@ class FirmwareUpdateV2 extends BaseMethod {
|
|
|
29208
30247
|
}
|
|
29209
30248
|
}
|
|
29210
30249
|
catch (e) {
|
|
29211
|
-
Log$
|
|
30250
|
+
Log$5.log('FirmwareUpdateV2 [checkDeviceToBootloader] promptDeviceInBootloaderForWebDevice failed: ', e);
|
|
29212
30251
|
(_c = this.checkPromise) === null || _c === void 0 ? void 0 : _c.reject(e);
|
|
29213
30252
|
}
|
|
29214
30253
|
return;
|
|
@@ -29223,7 +30262,7 @@ class FirmwareUpdateV2 extends BaseMethod {
|
|
|
29223
30262
|
}
|
|
29224
30263
|
}
|
|
29225
30264
|
catch (e) {
|
|
29226
|
-
Log$
|
|
30265
|
+
Log$5.log('catch Bluetooth error when device is restarting: ', e);
|
|
29227
30266
|
}
|
|
29228
30267
|
}
|
|
29229
30268
|
else {
|
|
@@ -29272,7 +30311,7 @@ class FirmwareUpdateV2 extends BaseMethod {
|
|
|
29272
30311
|
const currentVersion = getDeviceFirmwareVersion(features).join('.');
|
|
29273
30312
|
return isTouchMode && semver__default["default"].gte(currentVersion, '3.2.0');
|
|
29274
30313
|
}
|
|
29275
|
-
checkVersionForCopyTouchResource(features) {
|
|
30314
|
+
checkVersionForCopyTouchResource(features, firmwareType) {
|
|
29276
30315
|
var _a;
|
|
29277
30316
|
if (!features)
|
|
29278
30317
|
return;
|
|
@@ -29280,7 +30319,7 @@ class FirmwareUpdateV2 extends BaseMethod {
|
|
|
29280
30319
|
const currentVersion = getDeviceFirmwareVersion(features).join('.');
|
|
29281
30320
|
const targetVersion = (_a = this.params.version) === null || _a === void 0 ? void 0 : _a.join('.');
|
|
29282
30321
|
const { updateType } = this.params;
|
|
29283
|
-
const releaseInfo = getInfo({ features, updateType });
|
|
30322
|
+
const releaseInfo = getInfo({ features, updateType, firmwareType });
|
|
29284
30323
|
if (!releaseInfo)
|
|
29285
30324
|
return;
|
|
29286
30325
|
const { fullResourceRange } = releaseInfo;
|
|
@@ -29296,12 +30335,14 @@ class FirmwareUpdateV2 extends BaseMethod {
|
|
|
29296
30335
|
}
|
|
29297
30336
|
}
|
|
29298
30337
|
run() {
|
|
29299
|
-
var _a, _b, _c, _d, _e, _f, _g, _h;
|
|
30338
|
+
var _a, _b, _c, _d, _e, _f, _g, _h, _j;
|
|
29300
30339
|
return __awaiter(this, void 0, void 0, function* () {
|
|
29301
30340
|
const { device, params } = this;
|
|
29302
30341
|
const { features, commands } = device;
|
|
29303
30342
|
const deviceType = getDeviceType(features);
|
|
29304
|
-
|
|
30343
|
+
const deviceFirmwareType = getFirmwareType(device.features);
|
|
30344
|
+
const firmwareType = (_a = params.firmwareType) !== null && _a !== void 0 ? _a : deviceFirmwareType;
|
|
30345
|
+
this.checkVersionForCopyTouchResource(features, firmwareType);
|
|
29305
30346
|
if (!(features === null || features === void 0 ? void 0 : features.bootloader_mode) && features) {
|
|
29306
30347
|
const uuid = getDeviceUUID(features);
|
|
29307
30348
|
if (this.isEnteredManuallyBoot(features)) {
|
|
@@ -29309,7 +30350,11 @@ class FirmwareUpdateV2 extends BaseMethod {
|
|
|
29309
30350
|
}
|
|
29310
30351
|
if (features && this.isSupportResourceUpdate(features, params.updateType)) {
|
|
29311
30352
|
this.postTipMessage('CheckLatestUiResource');
|
|
29312
|
-
const resourceUrl = DataManager.getSysResourcesLatestRelease(
|
|
30353
|
+
const resourceUrl = DataManager.getSysResourcesLatestRelease({
|
|
30354
|
+
features,
|
|
30355
|
+
forcedUpdateRes: params.forcedUpdateRes,
|
|
30356
|
+
firmwareType,
|
|
30357
|
+
});
|
|
29313
30358
|
if (resourceUrl) {
|
|
29314
30359
|
this.postTipMessage('DownloadLatestUiResource');
|
|
29315
30360
|
const resource = yield getSysResourceBinary(resourceUrl);
|
|
@@ -29319,7 +30364,7 @@ class FirmwareUpdateV2 extends BaseMethod {
|
|
|
29319
30364
|
}
|
|
29320
30365
|
}
|
|
29321
30366
|
}
|
|
29322
|
-
(
|
|
30367
|
+
(_c = (_b = this.device) === null || _b === void 0 ? void 0 : _b.commands) === null || _c === void 0 ? void 0 : _c.checkDisposed();
|
|
29323
30368
|
try {
|
|
29324
30369
|
this.postTipMessage('AutoRebootToBootloader');
|
|
29325
30370
|
const bootRes = yield commands.typedCall('DeviceBackToBoot', 'Success');
|
|
@@ -29332,9 +30377,9 @@ class FirmwareUpdateV2 extends BaseMethod {
|
|
|
29332
30377
|
DevicePool.clearDeviceCache(uuid);
|
|
29333
30378
|
}
|
|
29334
30379
|
delete DevicePool.devicesCache[''];
|
|
29335
|
-
yield ((
|
|
30380
|
+
yield ((_d = this.checkPromise) === null || _d === void 0 ? void 0 : _d.promise);
|
|
29336
30381
|
this.checkPromise = null;
|
|
29337
|
-
(
|
|
30382
|
+
(_f = (_e = this.device) === null || _e === void 0 ? void 0 : _e.commands) === null || _f === void 0 ? void 0 : _f.checkDisposed();
|
|
29338
30383
|
const isTouch = DeviceModelToTypes.model_touch.includes(deviceType);
|
|
29339
30384
|
yield wait(isTouch ? 3000 : 1500);
|
|
29340
30385
|
}
|
|
@@ -29361,17 +30406,18 @@ class FirmwareUpdateV2 extends BaseMethod {
|
|
|
29361
30406
|
version: params.version,
|
|
29362
30407
|
updateType: params.updateType,
|
|
29363
30408
|
isUpdateBootloader: params.isUpdateBootloader,
|
|
30409
|
+
firmwareType,
|
|
29364
30410
|
});
|
|
29365
30411
|
binary = firmware.binary;
|
|
29366
30412
|
this.postTipMessage('DownloadFirmwareSuccess');
|
|
29367
30413
|
}
|
|
29368
30414
|
}
|
|
29369
30415
|
catch (err) {
|
|
29370
|
-
throw hardwareShared.ERRORS.TypedError(hardwareShared.HardwareErrorCode.FirmwareUpdateDownloadFailed, (
|
|
30416
|
+
throw hardwareShared.ERRORS.TypedError(hardwareShared.HardwareErrorCode.FirmwareUpdateDownloadFailed, (_g = err.message) !== null && _g !== void 0 ? _g : err);
|
|
29371
30417
|
}
|
|
29372
|
-
(
|
|
30418
|
+
(_j = (_h = this.device) === null || _h === void 0 ? void 0 : _h.commands) === null || _j === void 0 ? void 0 : _j.checkDisposed();
|
|
29373
30419
|
yield this.device.acquire();
|
|
29374
|
-
const response = yield uploadFirmware(params.updateType, this.device.getCommands().typedCall.bind(this.device.getCommands()), this.postMessage, device, { payload: binary, rebootOnSuccess: true });
|
|
30420
|
+
const response = yield uploadFirmware(params.updateType, this.device.getCommands().typedCall.bind(this.device.getCommands()), this.postMessage, device, { payload: binary, rebootOnSuccess: true }, params.isUpdateBootloader);
|
|
29375
30421
|
if (this.connectId) {
|
|
29376
30422
|
DevicePool.clearDeviceCache(this.connectId);
|
|
29377
30423
|
}
|
|
@@ -29380,303 +30426,13 @@ class FirmwareUpdateV2 extends BaseMethod {
|
|
|
29380
30426
|
}
|
|
29381
30427
|
}
|
|
29382
30428
|
|
|
29383
|
-
const Log$5 = getLogger(exports.LoggerNames.Method);
|
|
29384
|
-
const SESSION_ERROR = 'session not found';
|
|
29385
|
-
class FirmwareUpdateBaseMethod extends BaseMethod {
|
|
29386
|
-
constructor() {
|
|
29387
|
-
super(...arguments);
|
|
29388
|
-
this.checkPromise = null;
|
|
29389
|
-
this.postTipMessage = (message) => {
|
|
29390
|
-
this.postMessage(createUiMessage(UI_REQUEST.FIRMWARE_TIP, {
|
|
29391
|
-
device: this.device.toMessageObject(),
|
|
29392
|
-
data: {
|
|
29393
|
-
message,
|
|
29394
|
-
},
|
|
29395
|
-
}));
|
|
29396
|
-
};
|
|
29397
|
-
this.postProcessingMessage = (type) => {
|
|
29398
|
-
this.postMessage(createUiMessage(UI_REQUEST.FIRMWARE_PROCESSING, {
|
|
29399
|
-
type,
|
|
29400
|
-
}));
|
|
29401
|
-
};
|
|
29402
|
-
this.postProgressMessage = (progress, progressType) => {
|
|
29403
|
-
this.postMessage(createUiMessage(UI_REQUEST.FIRMWARE_PROGRESS, {
|
|
29404
|
-
device: this.device.toMessageObject(),
|
|
29405
|
-
progress,
|
|
29406
|
-
progressType,
|
|
29407
|
-
}));
|
|
29408
|
-
};
|
|
29409
|
-
}
|
|
29410
|
-
init() { }
|
|
29411
|
-
run() {
|
|
29412
|
-
return Promise.resolve();
|
|
29413
|
-
}
|
|
29414
|
-
isBleReconnect() {
|
|
29415
|
-
const env = DataManager.getSettings('env');
|
|
29416
|
-
return this.payload.connectId && DataManager.isBleConnect(env);
|
|
29417
|
-
}
|
|
29418
|
-
_promptDeviceInBootloaderForWebDevice() {
|
|
29419
|
-
return __awaiter(this, void 0, void 0, function* () {
|
|
29420
|
-
return new Promise((resolve, reject) => {
|
|
29421
|
-
if (this.device.listenerCount(DEVICE.SELECT_DEVICE_IN_BOOTLOADER_FOR_WEB_DEVICE) > 0) {
|
|
29422
|
-
this.device.emit(DEVICE.SELECT_DEVICE_IN_BOOTLOADER_FOR_WEB_DEVICE, this.device, (err, deviceId) => {
|
|
29423
|
-
if (err) {
|
|
29424
|
-
reject(err);
|
|
29425
|
-
}
|
|
29426
|
-
else {
|
|
29427
|
-
resolve(deviceId);
|
|
29428
|
-
}
|
|
29429
|
-
});
|
|
29430
|
-
}
|
|
29431
|
-
});
|
|
29432
|
-
});
|
|
29433
|
-
}
|
|
29434
|
-
checkDeviceToBootloader(connectId) {
|
|
29435
|
-
var _a, _b;
|
|
29436
|
-
this.checkPromise = hardwareShared.createDeferred();
|
|
29437
|
-
const env = DataManager.getSettings('env');
|
|
29438
|
-
const isBleReconnect = connectId && DataManager.isBleConnect(env);
|
|
29439
|
-
Log$5.log('FirmwareUpdateBaseMethod [checkDeviceToBootloader] isBleReconnect: ', isBleReconnect);
|
|
29440
|
-
let isFirstCheck = true;
|
|
29441
|
-
let checkCount = 0;
|
|
29442
|
-
let timeoutTimer;
|
|
29443
|
-
const isTouchOrProDevice = getDeviceType((_a = this === null || this === void 0 ? void 0 : this.device) === null || _a === void 0 ? void 0 : _a.features) === hardwareShared.EDeviceType.Touch ||
|
|
29444
|
-
getDeviceType((_b = this === null || this === void 0 ? void 0 : this.device) === null || _b === void 0 ? void 0 : _b.features) === hardwareShared.EDeviceType.Pro;
|
|
29445
|
-
const intervalTimer = setInterval(() => __awaiter(this, void 0, void 0, function* () {
|
|
29446
|
-
var _c, _d, _e, _f;
|
|
29447
|
-
checkCount += 1;
|
|
29448
|
-
Log$5.log('FirmwareUpdateBaseMethod [checkDeviceToBootloader] isFirstCheck: ', isFirstCheck);
|
|
29449
|
-
if (isTouchOrProDevice && isFirstCheck) {
|
|
29450
|
-
isFirstCheck = false;
|
|
29451
|
-
Log$5.log('FirmwareUpdateBaseMethod [checkDeviceToBootloader] wait 3000ms');
|
|
29452
|
-
yield wait(3000);
|
|
29453
|
-
}
|
|
29454
|
-
if (checkCount > 4 && DataManager.isWebUsbConnect(DataManager.getSettings('env'))) {
|
|
29455
|
-
clearInterval(intervalTimer);
|
|
29456
|
-
clearTimeout(timeoutTimer);
|
|
29457
|
-
try {
|
|
29458
|
-
this.postTipMessage(exports.FirmwareUpdateTipMessage.SelectDeviceInBootloaderForWebDevice);
|
|
29459
|
-
const confirmed = yield this._promptDeviceInBootloaderForWebDevice();
|
|
29460
|
-
if (confirmed) {
|
|
29461
|
-
yield this._checkDeviceInBootloaderMode(connectId, intervalTimer, timeoutTimer);
|
|
29462
|
-
}
|
|
29463
|
-
}
|
|
29464
|
-
catch (e) {
|
|
29465
|
-
Log$5.log('FirmwareUpdateBaseMethod [checkDeviceToBootloader] promptDeviceInBootloaderForWebDevice failed: ', e);
|
|
29466
|
-
(_c = this.checkPromise) === null || _c === void 0 ? void 0 : _c.reject(e);
|
|
29467
|
-
}
|
|
29468
|
-
return;
|
|
29469
|
-
}
|
|
29470
|
-
if (isBleReconnect) {
|
|
29471
|
-
try {
|
|
29472
|
-
yield ((_d = this.device.deviceConnector) === null || _d === void 0 ? void 0 : _d.acquire(this.device.originalDescriptor.id, null, true));
|
|
29473
|
-
yield this.device.initialize();
|
|
29474
|
-
if ((_e = this.device.features) === null || _e === void 0 ? void 0 : _e.bootloader_mode) {
|
|
29475
|
-
clearInterval(intervalTimer);
|
|
29476
|
-
(_f = this.checkPromise) === null || _f === void 0 ? void 0 : _f.resolve(true);
|
|
29477
|
-
}
|
|
29478
|
-
}
|
|
29479
|
-
catch (e) {
|
|
29480
|
-
Log$5.log('catch Bluetooth error when device is restarting: ', e);
|
|
29481
|
-
}
|
|
29482
|
-
}
|
|
29483
|
-
else {
|
|
29484
|
-
yield this._checkDeviceInBootloaderMode(connectId, intervalTimer, timeoutTimer);
|
|
29485
|
-
}
|
|
29486
|
-
}), isBleReconnect ? 3000 : 2000);
|
|
29487
|
-
timeoutTimer = setTimeout(() => {
|
|
29488
|
-
if (this.checkPromise) {
|
|
29489
|
-
clearInterval(intervalTimer);
|
|
29490
|
-
this.checkPromise.reject(new Error());
|
|
29491
|
-
}
|
|
29492
|
-
}, 30000);
|
|
29493
|
-
}
|
|
29494
|
-
_checkDeviceInBootloaderMode(connectId, intervalTimer, timeoutTimer) {
|
|
29495
|
-
var _a, _b, _c, _d, _e;
|
|
29496
|
-
return __awaiter(this, void 0, void 0, function* () {
|
|
29497
|
-
const deviceDiff = yield ((_a = this.device.deviceConnector) === null || _a === void 0 ? void 0 : _a.enumerate());
|
|
29498
|
-
const devicesDescriptor = (_b = deviceDiff === null || deviceDiff === void 0 ? void 0 : deviceDiff.descriptors) !== null && _b !== void 0 ? _b : [];
|
|
29499
|
-
const { deviceList } = yield DevicePool.getDevices(devicesDescriptor, connectId);
|
|
29500
|
-
if (deviceList.length === 1 && ((_d = (_c = deviceList[0]) === null || _c === void 0 ? void 0 : _c.features) === null || _d === void 0 ? void 0 : _d.bootloader_mode)) {
|
|
29501
|
-
this.device.updateFromCache(deviceList[0]);
|
|
29502
|
-
this.device.commands.disposed = false;
|
|
29503
|
-
if (intervalTimer)
|
|
29504
|
-
clearInterval(intervalTimer);
|
|
29505
|
-
if (timeoutTimer)
|
|
29506
|
-
clearTimeout(timeoutTimer);
|
|
29507
|
-
(_e = this.checkPromise) === null || _e === void 0 ? void 0 : _e.resolve(true);
|
|
29508
|
-
return true;
|
|
29509
|
-
}
|
|
29510
|
-
return false;
|
|
29511
|
-
});
|
|
29512
|
-
}
|
|
29513
|
-
enterBootloaderMode() {
|
|
29514
|
-
var _a;
|
|
29515
|
-
return __awaiter(this, void 0, void 0, function* () {
|
|
29516
|
-
const typedCall = this.device.getCommands().typedCall.bind(this.device.getCommands());
|
|
29517
|
-
if (this.device.features && !this.device.features.bootloader_mode) {
|
|
29518
|
-
const uuid = getDeviceUUID(this.device.features);
|
|
29519
|
-
const deviceType = getDeviceType(this.device.features);
|
|
29520
|
-
try {
|
|
29521
|
-
this.postTipMessage(exports.FirmwareUpdateTipMessage.AutoRebootToBootloader);
|
|
29522
|
-
const bootRes = yield typedCall('DeviceBackToBoot', 'Success');
|
|
29523
|
-
if (bootRes.type === 'CallMethodError') {
|
|
29524
|
-
throw hardwareShared.ERRORS.TypedError(hardwareShared.HardwareErrorCode.FirmwareUpdateAutoEnterBootFailure);
|
|
29525
|
-
}
|
|
29526
|
-
this.postTipMessage(exports.FirmwareUpdateTipMessage.GoToBootloaderSuccess);
|
|
29527
|
-
this.checkDeviceToBootloader(this.payload.connectId);
|
|
29528
|
-
if (DeviceModelToTypes.model_classic.includes(deviceType)) {
|
|
29529
|
-
DevicePool.clearDeviceCache(uuid);
|
|
29530
|
-
}
|
|
29531
|
-
delete DevicePool.devicesCache[''];
|
|
29532
|
-
yield ((_a = this.checkPromise) === null || _a === void 0 ? void 0 : _a.promise);
|
|
29533
|
-
this.checkPromise = null;
|
|
29534
|
-
const isTouch = DeviceModelToTypes.model_touch.includes(deviceType);
|
|
29535
|
-
yield wait(isTouch ? 3000 : 1500);
|
|
29536
|
-
yield this.device.acquire();
|
|
29537
|
-
return true;
|
|
29538
|
-
}
|
|
29539
|
-
catch (e) {
|
|
29540
|
-
if (e instanceof hardwareShared.HardwareError) {
|
|
29541
|
-
return Promise.reject(e);
|
|
29542
|
-
}
|
|
29543
|
-
console.log('auto go to bootloader mode failed: ', e);
|
|
29544
|
-
return Promise.reject(hardwareShared.ERRORS.TypedError(hardwareShared.HardwareErrorCode.FirmwareUpdateAutoEnterBootFailure));
|
|
29545
|
-
}
|
|
29546
|
-
}
|
|
29547
|
-
});
|
|
29548
|
-
}
|
|
29549
|
-
startEmmcFirmwareUpdate({ path }) {
|
|
29550
|
-
return __awaiter(this, void 0, void 0, function* () {
|
|
29551
|
-
const typedCall = this.device.getCommands().typedCall.bind(this.device.getCommands());
|
|
29552
|
-
const updaeteResponse = yield typedCall('FirmwareUpdateEmmc', 'Success', {
|
|
29553
|
-
path,
|
|
29554
|
-
reboot_on_success: true,
|
|
29555
|
-
});
|
|
29556
|
-
if (updaeteResponse.type !== 'Success') {
|
|
29557
|
-
throw hardwareShared.ERRORS.TypedError(hardwareShared.HardwareErrorCode.FirmwareError, 'firmware update error');
|
|
29558
|
-
}
|
|
29559
|
-
this.postTipMessage(exports.FirmwareUpdateTipMessage.FirmwareUpdating);
|
|
29560
|
-
});
|
|
29561
|
-
}
|
|
29562
|
-
createUpdatesFolderIfNotExists(path) {
|
|
29563
|
-
return __awaiter(this, void 0, void 0, function* () {
|
|
29564
|
-
const typedCall = this.device.getCommands().typedCall.bind(this.device.getCommands());
|
|
29565
|
-
yield typedCall('EmmcDirMake', 'Success', {
|
|
29566
|
-
path,
|
|
29567
|
-
});
|
|
29568
|
-
});
|
|
29569
|
-
}
|
|
29570
|
-
emmcCommonUpdateProcess({ payload, filePath, processedSize, totalSize, }) {
|
|
29571
|
-
return __awaiter(this, void 0, void 0, function* () {
|
|
29572
|
-
if (!filePath.startsWith('0:')) {
|
|
29573
|
-
throw new Error('filePath must start with 0:');
|
|
29574
|
-
}
|
|
29575
|
-
const env = DataManager.getSettings('env');
|
|
29576
|
-
const perPackageSize = DataManager.isBleConnect(env) ? 16 : 128;
|
|
29577
|
-
const chunkSize = 1024 * perPackageSize;
|
|
29578
|
-
const totalChunks = Math.ceil(payload.byteLength / chunkSize);
|
|
29579
|
-
let offset = 0;
|
|
29580
|
-
let currentFileProcessed = 0;
|
|
29581
|
-
for (let i = 0; i < totalChunks; i++) {
|
|
29582
|
-
const chunkStart = i * chunkSize;
|
|
29583
|
-
const chunkEnd = Math.min(chunkStart + chunkSize, payload.byteLength);
|
|
29584
|
-
const chunkLength = chunkEnd - chunkStart;
|
|
29585
|
-
const chunk = payload.slice(chunkStart, chunkEnd);
|
|
29586
|
-
const overwrite = i === 0;
|
|
29587
|
-
let progress;
|
|
29588
|
-
if (totalSize !== undefined && processedSize !== undefined) {
|
|
29589
|
-
currentFileProcessed = processedSize + chunkEnd;
|
|
29590
|
-
progress = Math.min(Math.ceil((currentFileProcessed / totalSize) * 100), 99);
|
|
29591
|
-
}
|
|
29592
|
-
else {
|
|
29593
|
-
progress = Math.min(Math.ceil(((i + 1) / totalChunks) * 100), 99);
|
|
29594
|
-
}
|
|
29595
|
-
const writeRes = yield this.emmcFileWriteWithRetry(filePath, chunkLength, offset, chunk, overwrite, progress);
|
|
29596
|
-
offset += writeRes.message.processed_byte;
|
|
29597
|
-
this.postProgressMessage(progress, 'transferData');
|
|
29598
|
-
}
|
|
29599
|
-
return totalSize !== undefined ? (processedSize !== null && processedSize !== void 0 ? processedSize : 0) + payload.byteLength : 0;
|
|
29600
|
-
});
|
|
29601
|
-
}
|
|
29602
|
-
emmcFileWriteWithRetry(filePath, chunkLength, offset, chunk, overwrite, progress) {
|
|
29603
|
-
var _a, _b, _c, _d, _e, _f, _g, _h, _j;
|
|
29604
|
-
return __awaiter(this, void 0, void 0, function* () {
|
|
29605
|
-
const writeFunc = () => __awaiter(this, void 0, void 0, function* () {
|
|
29606
|
-
var _k;
|
|
29607
|
-
const typedCall = this.device.getCommands().typedCall.bind(this.device.getCommands());
|
|
29608
|
-
const writeRes = yield typedCall('EmmcFileWrite', 'EmmcFile', {
|
|
29609
|
-
file: {
|
|
29610
|
-
path: filePath,
|
|
29611
|
-
len: chunkLength,
|
|
29612
|
-
offset,
|
|
29613
|
-
data: chunk,
|
|
29614
|
-
},
|
|
29615
|
-
overwrite,
|
|
29616
|
-
append: offset !== 0,
|
|
29617
|
-
ui_percentage: progress,
|
|
29618
|
-
});
|
|
29619
|
-
if (writeRes.type !== 'EmmcFile') {
|
|
29620
|
-
if (writeRes.type === 'CallMethodError') {
|
|
29621
|
-
if (((_k = writeRes.message.error) !== null && _k !== void 0 ? _k : '').indexOf(SESSION_ERROR) > -1) {
|
|
29622
|
-
throw hardwareShared.ERRORS.TypedError(hardwareShared.HardwareErrorCode.RuntimeError, SESSION_ERROR);
|
|
29623
|
-
}
|
|
29624
|
-
}
|
|
29625
|
-
throw hardwareShared.ERRORS.TypedError(hardwareShared.HardwareErrorCode.EmmcFileWriteFirmwareError, 'transfer data error');
|
|
29626
|
-
}
|
|
29627
|
-
return writeRes;
|
|
29628
|
-
});
|
|
29629
|
-
let retryCount = 10;
|
|
29630
|
-
while (retryCount > 0) {
|
|
29631
|
-
try {
|
|
29632
|
-
const result = yield writeFunc();
|
|
29633
|
-
return result;
|
|
29634
|
-
}
|
|
29635
|
-
catch (error) {
|
|
29636
|
-
Log$5.error(`emmcWrite error: `, error);
|
|
29637
|
-
retryCount--;
|
|
29638
|
-
if (retryCount === 0) {
|
|
29639
|
-
throw hardwareShared.ERRORS.TypedError(hardwareShared.HardwareErrorCode.EmmcFileWriteFirmwareError, 'transfer data error');
|
|
29640
|
-
}
|
|
29641
|
-
const env = DataManager.getSettings('env');
|
|
29642
|
-
if (DataManager.isBleConnect(env)) {
|
|
29643
|
-
yield wait(3000);
|
|
29644
|
-
yield ((_a = this.device.deviceConnector) === null || _a === void 0 ? void 0 : _a.acquire(this.device.originalDescriptor.id, null, true));
|
|
29645
|
-
yield this.device.initialize();
|
|
29646
|
-
}
|
|
29647
|
-
else if (((_b = error === null || error === void 0 ? void 0 : error.message) === null || _b === void 0 ? void 0 : _b.indexOf(SESSION_ERROR)) > -1 ||
|
|
29648
|
-
((_d = (_c = error === null || error === void 0 ? void 0 : error.response) === null || _c === void 0 ? void 0 : _c.data) === null || _d === void 0 ? void 0 : _d.indexOf(SESSION_ERROR)) > -1) {
|
|
29649
|
-
const deviceDiff = yield ((_e = this.device.deviceConnector) === null || _e === void 0 ? void 0 : _e.enumerate());
|
|
29650
|
-
const devicesDescriptor = (_f = deviceDiff === null || deviceDiff === void 0 ? void 0 : deviceDiff.descriptors) !== null && _f !== void 0 ? _f : [];
|
|
29651
|
-
const { deviceList } = yield DevicePool.getDevices(devicesDescriptor, undefined);
|
|
29652
|
-
if (deviceList.length === 1 && ((_h = (_g = deviceList[0]) === null || _g === void 0 ? void 0 : _g.features) === null || _h === void 0 ? void 0 : _h.bootloader_mode)) {
|
|
29653
|
-
this.device.updateFromCache(deviceList[0]);
|
|
29654
|
-
yield this.device.acquire();
|
|
29655
|
-
this.device.getCommands().mainId = (_j = this.device.mainId) !== null && _j !== void 0 ? _j : '';
|
|
29656
|
-
}
|
|
29657
|
-
}
|
|
29658
|
-
yield wait(2000);
|
|
29659
|
-
}
|
|
29660
|
-
}
|
|
29661
|
-
});
|
|
29662
|
-
}
|
|
29663
|
-
reboot(rebootType) {
|
|
29664
|
-
return __awaiter(this, void 0, void 0, function* () {
|
|
29665
|
-
const typedCall = this.device.getCommands().typedCall.bind(this.device.getCommands());
|
|
29666
|
-
const res = yield typedCall('Reboot', 'Success', {
|
|
29667
|
-
reboot_type: rebootType,
|
|
29668
|
-
});
|
|
29669
|
-
return res.message;
|
|
29670
|
-
});
|
|
29671
|
-
}
|
|
29672
|
-
}
|
|
29673
|
-
|
|
29674
30429
|
const Log$4 = getLogger(exports.LoggerNames.Method);
|
|
29675
30430
|
const MIN_UPDATE_V3_BOOTLOADER_VERSION = '2.8.0';
|
|
29676
30431
|
class FirmwareUpdateV3 extends FirmwareUpdateBaseMethod {
|
|
29677
30432
|
constructor() {
|
|
29678
30433
|
super(...arguments);
|
|
29679
30434
|
this.checkPromise = null;
|
|
30435
|
+
this.isSwitchFirmware = false;
|
|
29680
30436
|
}
|
|
29681
30437
|
init() {
|
|
29682
30438
|
this.allowDeviceMode = [UI_REQUEST.BOOTLOADER, UI_REQUEST.NOT_INITIALIZE];
|
|
@@ -29693,6 +30449,7 @@ class FirmwareUpdateV3 extends FirmwareUpdateBaseMethod {
|
|
|
29693
30449
|
{ name: 'forcedUpdateRes', type: 'boolean' },
|
|
29694
30450
|
{ name: 'bootloaderVersion', type: 'array' },
|
|
29695
30451
|
{ name: 'bootloaderBinary', type: 'buffer' },
|
|
30452
|
+
{ name: 'firmwareType', type: 'string' },
|
|
29696
30453
|
{ name: 'platform', type: 'string' },
|
|
29697
30454
|
]);
|
|
29698
30455
|
this.params = {
|
|
@@ -29704,11 +30461,12 @@ class FirmwareUpdateV3 extends FirmwareUpdateBaseMethod {
|
|
|
29704
30461
|
bootloaderBinary: payload.bootloaderBinary,
|
|
29705
30462
|
firmwareVersion: payload.firmwareVersion,
|
|
29706
30463
|
resourceBinary: payload.resourceBinary,
|
|
30464
|
+
firmwareType: payload.firmwareType,
|
|
29707
30465
|
platform: payload.platform,
|
|
29708
30466
|
};
|
|
29709
30467
|
}
|
|
29710
30468
|
run() {
|
|
29711
|
-
var _a;
|
|
30469
|
+
var _a, _b;
|
|
29712
30470
|
return __awaiter(this, void 0, void 0, function* () {
|
|
29713
30471
|
const { device } = this;
|
|
29714
30472
|
const { features } = device;
|
|
@@ -29718,18 +30476,21 @@ class FirmwareUpdateV3 extends FirmwareUpdateBaseMethod {
|
|
|
29718
30476
|
if (!features) {
|
|
29719
30477
|
throw hardwareShared.ERRORS.TypedError(hardwareShared.HardwareErrorCode.RuntimeError, 'Device features not available');
|
|
29720
30478
|
}
|
|
30479
|
+
const deviceFirmwareType = getFirmwareType(features);
|
|
30480
|
+
const firmwareType = (_a = this.params.firmwareType) !== null && _a !== void 0 ? _a : deviceFirmwareType;
|
|
30481
|
+
this.isSwitchFirmware = firmwareType !== deviceFirmwareType;
|
|
29721
30482
|
let resourceBinary = null;
|
|
29722
30483
|
let fwBinaryMap = [];
|
|
29723
30484
|
let bootloaderBinary = null;
|
|
29724
30485
|
try {
|
|
29725
30486
|
this.postTipMessage(exports.FirmwareUpdateTipMessage.StartDownloadFirmware);
|
|
29726
|
-
resourceBinary = yield this.prepareResourceBinary();
|
|
29727
|
-
fwBinaryMap = yield this.prepareFirmwareAndBleBinary();
|
|
29728
|
-
bootloaderBinary = yield this.prepareBootloaderBinary();
|
|
30487
|
+
resourceBinary = yield this.prepareResourceBinary(firmwareType);
|
|
30488
|
+
fwBinaryMap = yield this.prepareFirmwareAndBleBinary(firmwareType);
|
|
30489
|
+
bootloaderBinary = yield this.prepareBootloaderBinary(firmwareType);
|
|
29729
30490
|
this.postTipMessage(exports.FirmwareUpdateTipMessage.FinishDownloadFirmware);
|
|
29730
30491
|
}
|
|
29731
30492
|
catch (err) {
|
|
29732
|
-
throw hardwareShared.ERRORS.TypedError(hardwareShared.HardwareErrorCode.FirmwareUpdateDownloadFailed, (
|
|
30493
|
+
throw hardwareShared.ERRORS.TypedError(hardwareShared.HardwareErrorCode.FirmwareUpdateDownloadFailed, (_b = err.message) !== null && _b !== void 0 ? _b : err);
|
|
29733
30494
|
}
|
|
29734
30495
|
if (!bootloaderBinary && fwBinaryMap.length === 0) {
|
|
29735
30496
|
throw hardwareShared.ERRORS.TypedError(hardwareShared.HardwareErrorCode.FirmwareUpdateDownloadFailed, 'No firmware to update');
|
|
@@ -29754,7 +30515,7 @@ class FirmwareUpdateV3 extends FirmwareUpdateBaseMethod {
|
|
|
29754
30515
|
throw hardwareShared.ERRORS.TypedError(hardwareShared.HardwareErrorCode.RuntimeError, 'bootloader version needs to be updated');
|
|
29755
30516
|
}
|
|
29756
30517
|
}
|
|
29757
|
-
prepareResourceBinary() {
|
|
30518
|
+
prepareResourceBinary(firmwareType) {
|
|
29758
30519
|
return __awaiter(this, void 0, void 0, function* () {
|
|
29759
30520
|
if (this.params.resourceBinary) {
|
|
29760
30521
|
return this.params.resourceBinary;
|
|
@@ -29762,7 +30523,11 @@ class FirmwareUpdateV3 extends FirmwareUpdateBaseMethod {
|
|
|
29762
30523
|
const { features } = this.device;
|
|
29763
30524
|
if (!features)
|
|
29764
30525
|
return null;
|
|
29765
|
-
const resourceUrl = DataManager.getSysResourcesLatestRelease(
|
|
30526
|
+
const resourceUrl = DataManager.getSysResourcesLatestRelease({
|
|
30527
|
+
features,
|
|
30528
|
+
forcedUpdateRes: this.params.forcedUpdateRes,
|
|
30529
|
+
firmwareType,
|
|
30530
|
+
});
|
|
29766
30531
|
if (resourceUrl) {
|
|
29767
30532
|
const resource = (yield getSysResourceBinary(resourceUrl)).binary;
|
|
29768
30533
|
return resource;
|
|
@@ -29771,7 +30536,7 @@ class FirmwareUpdateV3 extends FirmwareUpdateBaseMethod {
|
|
|
29771
30536
|
return null;
|
|
29772
30537
|
});
|
|
29773
30538
|
}
|
|
29774
|
-
prepareBootloaderBinary() {
|
|
30539
|
+
prepareBootloaderBinary(firmwareType) {
|
|
29775
30540
|
return __awaiter(this, void 0, void 0, function* () {
|
|
29776
30541
|
if (this.params.bootloaderBinary) {
|
|
29777
30542
|
return this.params.bootloaderBinary;
|
|
@@ -29780,7 +30545,7 @@ class FirmwareUpdateV3 extends FirmwareUpdateBaseMethod {
|
|
|
29780
30545
|
if (!features)
|
|
29781
30546
|
return null;
|
|
29782
30547
|
if (this.params.bootloaderVersion) {
|
|
29783
|
-
const bootResourceUrl = DataManager.getBootloaderResource(features);
|
|
30548
|
+
const bootResourceUrl = DataManager.getBootloaderResource(features, firmwareType);
|
|
29784
30549
|
if (bootResourceUrl) {
|
|
29785
30550
|
const bootBinary = (yield getSysResourceBinary(bootResourceUrl)).binary;
|
|
29786
30551
|
return bootBinary;
|
|
@@ -29789,7 +30554,7 @@ class FirmwareUpdateV3 extends FirmwareUpdateBaseMethod {
|
|
|
29789
30554
|
return null;
|
|
29790
30555
|
});
|
|
29791
30556
|
}
|
|
29792
|
-
prepareFirmwareAndBleBinary() {
|
|
30557
|
+
prepareFirmwareAndBleBinary(firmwareType) {
|
|
29793
30558
|
return __awaiter(this, void 0, void 0, function* () {
|
|
29794
30559
|
const fwBinaryMap = [];
|
|
29795
30560
|
if (this.params.firmwareBinary) {
|
|
@@ -29806,6 +30571,7 @@ class FirmwareUpdateV3 extends FirmwareUpdateBaseMethod {
|
|
|
29806
30571
|
version: this.params.firmwareVersion,
|
|
29807
30572
|
updateType: 'firmware',
|
|
29808
30573
|
isUpdateBootloader: false,
|
|
30574
|
+
firmwareType,
|
|
29809
30575
|
})).binary;
|
|
29810
30576
|
fwBinaryMap.push({
|
|
29811
30577
|
fileName: 'firmware.bin',
|
|
@@ -29826,6 +30592,7 @@ class FirmwareUpdateV3 extends FirmwareUpdateBaseMethod {
|
|
|
29826
30592
|
features,
|
|
29827
30593
|
version: this.params.bleVersion,
|
|
29828
30594
|
updateType: 'ble',
|
|
30595
|
+
firmwareType,
|
|
29829
30596
|
});
|
|
29830
30597
|
fwBinaryMap.push({
|
|
29831
30598
|
fileName: 'ble-firmware.bin',
|
|
@@ -29837,7 +30604,6 @@ class FirmwareUpdateV3 extends FirmwareUpdateBaseMethod {
|
|
|
29837
30604
|
});
|
|
29838
30605
|
}
|
|
29839
30606
|
executeUpdate({ resourceBinary, fwBinaryMap, bootloaderBinary, }) {
|
|
29840
|
-
var _a;
|
|
29841
30607
|
return __awaiter(this, void 0, void 0, function* () {
|
|
29842
30608
|
let totalSize = 0;
|
|
29843
30609
|
let processedSize = 0;
|
|
@@ -29897,6 +30663,7 @@ class FirmwareUpdateV3 extends FirmwareUpdateBaseMethod {
|
|
|
29897
30663
|
if (error === null || error === void 0 ? void 0 : error.errorCode) {
|
|
29898
30664
|
const unexpectedError = [
|
|
29899
30665
|
hardwareShared.HardwareErrorCode.ActionCancelled,
|
|
30666
|
+
hardwareShared.HardwareErrorCode.CallQueueActionCancelled,
|
|
29900
30667
|
hardwareShared.HardwareErrorCode.FirmwareVerificationFailed,
|
|
29901
30668
|
hardwareShared.HardwareErrorCode.BleDeviceNotBonded,
|
|
29902
30669
|
hardwareShared.HardwareErrorCode.BleServiceNotFound,
|
|
@@ -29921,54 +30688,119 @@ class FirmwareUpdateV3 extends FirmwareUpdateBaseMethod {
|
|
|
29921
30688
|
this.postProgressMessage(0, 'installingFirmware');
|
|
29922
30689
|
const installStartTime = Date.now();
|
|
29923
30690
|
const maxWaitTimeForInstallingFirmware = 5 * 60 * 1000;
|
|
30691
|
+
let getFeaturesTimeoutCount = 0;
|
|
30692
|
+
const maxGetFeaturesTimeoutBeforeReauth = 3;
|
|
29924
30693
|
while (true) {
|
|
29925
30694
|
if (Date.now() - installStartTime > maxWaitTimeForInstallingFirmware) {
|
|
29926
30695
|
throw hardwareShared.ERRORS.TypedError(hardwareShared.HardwareErrorCode.RuntimeError, 'Firmware update process timeout after 5 minutes');
|
|
29927
30696
|
}
|
|
29928
30697
|
try {
|
|
29929
30698
|
const typedCall = this.device.getCommands().typedCall.bind(this.device.getCommands());
|
|
30699
|
+
const timeoutMs = 3000;
|
|
29930
30700
|
const featuresRes = yield Promise.race([
|
|
29931
30701
|
typedCall('GetFeatures', 'Features', {}),
|
|
29932
30702
|
new Promise((_, reject) => {
|
|
29933
|
-
setTimeout(() => reject(
|
|
30703
|
+
setTimeout(() => reject(hardwareShared.ERRORS.TypedError(hardwareShared.HardwareErrorCode.CallMethodNotResponse, 'GetFeatures timeout', { method: 'GetFeatures', timeoutMs })), timeoutMs);
|
|
29934
30704
|
}),
|
|
29935
30705
|
]);
|
|
30706
|
+
getFeaturesTimeoutCount = 0;
|
|
29936
30707
|
const features = featuresRes.message;
|
|
29937
30708
|
const bootloaderVersion = getDeviceBootloaderVersion(features).join('.');
|
|
29938
30709
|
const bleVersion = getDeviceBLEFirmwareVersion(features).join('.');
|
|
29939
30710
|
const firmwareVersion = getDeviceFirmwareVersion(features).join('.');
|
|
29940
|
-
|
|
29941
|
-
|
|
29942
|
-
|
|
29943
|
-
|
|
29944
|
-
|
|
29945
|
-
|
|
29946
|
-
|
|
30711
|
+
if (firmwareVersion !== '0.0.0') {
|
|
30712
|
+
this.postTipMessage(exports.FirmwareUpdateTipMessage.FirmwareUpdateCompleted);
|
|
30713
|
+
DevicePool.resetState();
|
|
30714
|
+
return {
|
|
30715
|
+
bootloaderVersion,
|
|
30716
|
+
bleVersion,
|
|
30717
|
+
firmwareVersion,
|
|
30718
|
+
};
|
|
30719
|
+
}
|
|
30720
|
+
yield hardwareShared.wait(1000);
|
|
29947
30721
|
}
|
|
29948
30722
|
catch (error) {
|
|
29949
|
-
|
|
29950
|
-
|
|
29951
|
-
|
|
29952
|
-
|
|
30723
|
+
Log$4.log('getFeatures error', error);
|
|
30724
|
+
let shouldReconnect = true;
|
|
30725
|
+
const progress = this.extractUpdateModeProgress(error);
|
|
30726
|
+
if (progress !== null) {
|
|
30727
|
+
getFeaturesTimeoutCount = 0;
|
|
29953
30728
|
this.postProgressMessage(progress, 'installingFirmware');
|
|
29954
30729
|
yield hardwareShared.wait(1000);
|
|
30730
|
+
shouldReconnect = false;
|
|
30731
|
+
}
|
|
30732
|
+
else if (this.isGetFeaturesTimeoutError(error)) {
|
|
30733
|
+
getFeaturesTimeoutCount += 1;
|
|
30734
|
+
if (getFeaturesTimeoutCount <= maxGetFeaturesTimeoutBeforeReauth) {
|
|
30735
|
+
yield hardwareShared.wait(1000);
|
|
30736
|
+
shouldReconnect = false;
|
|
30737
|
+
}
|
|
29955
30738
|
}
|
|
29956
30739
|
else {
|
|
30740
|
+
getFeaturesTimeoutCount = 0;
|
|
30741
|
+
}
|
|
30742
|
+
if (shouldReconnect) {
|
|
29957
30743
|
yield hardwareShared.wait(1000);
|
|
29958
30744
|
const reconnectTimeout = this.isBleReconnect() && (this.params.bleBinary || this.params.bleVersion)
|
|
29959
30745
|
? 3 * 60 * 1000
|
|
29960
30746
|
: 60 * 1000;
|
|
30747
|
+
getFeaturesTimeoutCount = 0;
|
|
29961
30748
|
yield this.waitForDeviceReconnect(reconnectTimeout);
|
|
29962
30749
|
}
|
|
29963
30750
|
}
|
|
29964
30751
|
}
|
|
29965
30752
|
});
|
|
29966
30753
|
}
|
|
30754
|
+
extractUpdateModeProgress(error) {
|
|
30755
|
+
const message = this.normalizeErrorMessage(error);
|
|
30756
|
+
if (!message) {
|
|
30757
|
+
return null;
|
|
30758
|
+
}
|
|
30759
|
+
const match = message.match(/Update mode\s*(\d+)/i);
|
|
30760
|
+
if (!match) {
|
|
30761
|
+
return null;
|
|
30762
|
+
}
|
|
30763
|
+
const progress = parseInt(match[1], 10);
|
|
30764
|
+
return Number.isNaN(progress) ? null : progress;
|
|
30765
|
+
}
|
|
30766
|
+
isGetFeaturesTimeoutError(error) {
|
|
30767
|
+
var _a;
|
|
30768
|
+
return (error instanceof hardwareShared.HardwareError &&
|
|
30769
|
+
error.errorCode === hardwareShared.HardwareErrorCode.CallMethodNotResponse &&
|
|
30770
|
+
((_a = error.params) === null || _a === void 0 ? void 0 : _a.method) === 'GetFeatures');
|
|
30771
|
+
}
|
|
30772
|
+
normalizeErrorMessage(error) {
|
|
30773
|
+
if (!error) {
|
|
30774
|
+
return '';
|
|
30775
|
+
}
|
|
30776
|
+
if (typeof error === 'string') {
|
|
30777
|
+
return error;
|
|
30778
|
+
}
|
|
30779
|
+
if (typeof error === 'object') {
|
|
30780
|
+
const { message } = error;
|
|
30781
|
+
if (typeof message === 'string') {
|
|
30782
|
+
return message;
|
|
30783
|
+
}
|
|
30784
|
+
if (message !== undefined && message !== null) {
|
|
30785
|
+
return String(message);
|
|
30786
|
+
}
|
|
30787
|
+
}
|
|
30788
|
+
return '';
|
|
30789
|
+
}
|
|
30790
|
+
canPromptWebUsbSwitchFirmwareReconnect() {
|
|
30791
|
+
if (!this.isSwitchFirmware) {
|
|
30792
|
+
return false;
|
|
30793
|
+
}
|
|
30794
|
+
return (DataManager.isBrowserWebUsb(DataManager.getSettings('env')) &&
|
|
30795
|
+
!this.payload.skipWebDevicePrompt &&
|
|
30796
|
+
this.device.listenerCount(DEVICE.SELECT_DEVICE_FOR_SWITCH_FIRMWARE_WEB_DEVICE) > 0);
|
|
30797
|
+
}
|
|
29967
30798
|
waitForDeviceReconnect(timeout) {
|
|
29968
30799
|
var _a, _b, _c, _d;
|
|
29969
30800
|
return __awaiter(this, void 0, void 0, function* () {
|
|
29970
30801
|
const startTime = Date.now();
|
|
29971
30802
|
const isBleReconnect = this.isBleReconnect();
|
|
30803
|
+
let webUsbCheckCount = 0;
|
|
29972
30804
|
while (Date.now() - startTime < timeout) {
|
|
29973
30805
|
try {
|
|
29974
30806
|
if (isBleReconnect) {
|
|
@@ -29992,6 +30824,23 @@ class FirmwareUpdateV3 extends FirmwareUpdateBaseMethod {
|
|
|
29992
30824
|
else {
|
|
29993
30825
|
const deviceDiff = yield ((_b = this.device.deviceConnector) === null || _b === void 0 ? void 0 : _b.enumerate());
|
|
29994
30826
|
const devicesDescriptor = (_c = deviceDiff === null || deviceDiff === void 0 ? void 0 : deviceDiff.descriptors) !== null && _c !== void 0 ? _c : [];
|
|
30827
|
+
const canPromptSwitchFirmwareReconnect = this.canPromptWebUsbSwitchFirmwareReconnect();
|
|
30828
|
+
if (canPromptSwitchFirmwareReconnect) {
|
|
30829
|
+
webUsbCheckCount += 1;
|
|
30830
|
+
if (webUsbCheckCount > 4) {
|
|
30831
|
+
this.postTipMessage(exports.FirmwareUpdateTipMessage.SwitchFirmwareReconnectDevice);
|
|
30832
|
+
try {
|
|
30833
|
+
yield this._promptDeviceForSwitchFirmwareWebDevice();
|
|
30834
|
+
}
|
|
30835
|
+
catch (e) {
|
|
30836
|
+
Log$4.log('WebUSB re-authorization failed: ', e);
|
|
30837
|
+
}
|
|
30838
|
+
webUsbCheckCount = 0;
|
|
30839
|
+
}
|
|
30840
|
+
}
|
|
30841
|
+
else {
|
|
30842
|
+
webUsbCheckCount = 0;
|
|
30843
|
+
}
|
|
29995
30844
|
const { deviceList } = yield DevicePool.getDevices(devicesDescriptor, this.connectId);
|
|
29996
30845
|
if (deviceList.length === 1) {
|
|
29997
30846
|
this.device.updateFromCache(deviceList[0]);
|
|
@@ -30071,37 +30920,6 @@ class PromptWebDeviceAccess extends BaseMethod {
|
|
|
30071
30920
|
}
|
|
30072
30921
|
}
|
|
30073
30922
|
|
|
30074
|
-
class EmmcFileWrite extends FirmwareUpdateBaseMethod {
|
|
30075
|
-
init() {
|
|
30076
|
-
const { payload } = this;
|
|
30077
|
-
validateParams(payload, [
|
|
30078
|
-
{ name: 'payload', type: 'buffer', required: true },
|
|
30079
|
-
{ name: 'filePath', type: 'string', required: true },
|
|
30080
|
-
]);
|
|
30081
|
-
this.allowDeviceMode = [UI_REQUEST.BOOTLOADER, UI_REQUEST.NOT_INITIALIZE];
|
|
30082
|
-
this.useDevicePassphraseState = false;
|
|
30083
|
-
this.params = {
|
|
30084
|
-
payload: payload.payload,
|
|
30085
|
-
filePath: payload.filePath,
|
|
30086
|
-
};
|
|
30087
|
-
}
|
|
30088
|
-
run() {
|
|
30089
|
-
return __awaiter(this, void 0, void 0, function* () {
|
|
30090
|
-
const { payload, filePath } = this.params;
|
|
30091
|
-
yield this.enterBootloaderMode();
|
|
30092
|
-
yield this.emmcCommonUpdateProcess({ payload, filePath });
|
|
30093
|
-
try {
|
|
30094
|
-
yield this.reboot(hardwareTransport.RebootType.Normal);
|
|
30095
|
-
}
|
|
30096
|
-
catch (e) {
|
|
30097
|
-
}
|
|
30098
|
-
return {
|
|
30099
|
-
filePath,
|
|
30100
|
-
};
|
|
30101
|
-
});
|
|
30102
|
-
}
|
|
30103
|
-
}
|
|
30104
|
-
|
|
30105
30923
|
class CipherKeyValue extends BaseMethod {
|
|
30106
30924
|
constructor() {
|
|
30107
30925
|
super(...arguments);
|
|
@@ -30336,6 +31154,9 @@ const networkConfigMap = {
|
|
|
30336
31154
|
neo: {
|
|
30337
31155
|
methodName: 'neoGetAddress',
|
|
30338
31156
|
},
|
|
31157
|
+
stellar: {
|
|
31158
|
+
methodName: 'stellarGetAddress',
|
|
31159
|
+
},
|
|
30339
31160
|
};
|
|
30340
31161
|
class AllNetworkGetAddressBase extends BaseMethod {
|
|
30341
31162
|
constructor() {
|
|
@@ -30374,7 +31195,7 @@ class AllNetworkGetAddressBase extends BaseMethod {
|
|
|
30374
31195
|
};
|
|
30375
31196
|
}
|
|
30376
31197
|
callMethod(methodName, params, rootFingerprint) {
|
|
30377
|
-
var _a;
|
|
31198
|
+
var _a, _b, _c;
|
|
30378
31199
|
return __awaiter(this, void 0, void 0, function* () {
|
|
30379
31200
|
const method = findMethod({
|
|
30380
31201
|
event: IFRAME.CALL,
|
|
@@ -30383,25 +31204,38 @@ class AllNetworkGetAddressBase extends BaseMethod {
|
|
|
30383
31204
|
});
|
|
30384
31205
|
method.connector = this.connector;
|
|
30385
31206
|
method.postMessage = this.postMessage;
|
|
31207
|
+
if (this.context) {
|
|
31208
|
+
(_a = method.setContext) === null || _a === void 0 ? void 0 : _a.call(method, this.context);
|
|
31209
|
+
}
|
|
31210
|
+
method.requestContext = createRequestContext(method.responseID, methodName, {
|
|
31211
|
+
sdkInstanceId: this.sdkInstanceId,
|
|
31212
|
+
connectId: this.payload.connectId,
|
|
31213
|
+
parentResponseID: this.responseID,
|
|
31214
|
+
});
|
|
31215
|
+
const onSignalAbort = () => {
|
|
31216
|
+
var _a;
|
|
31217
|
+
(_a = this.abortController) === null || _a === void 0 ? void 0 : _a.abort(hardwareShared.HardwareErrorCodeMessage[hardwareShared.HardwareErrorCode.RepeatUnlocking]);
|
|
31218
|
+
};
|
|
31219
|
+
const buttonListener = (...[device, request]) => {
|
|
31220
|
+
if (request.code === 'ButtonRequest_PinEntry' || request.code === 'ButtonRequest_AttachPin') {
|
|
31221
|
+
onSignalAbort();
|
|
31222
|
+
}
|
|
31223
|
+
else {
|
|
31224
|
+
onDeviceButtonHandler(device, request);
|
|
31225
|
+
}
|
|
31226
|
+
};
|
|
30386
31227
|
let result;
|
|
30387
31228
|
try {
|
|
30388
31229
|
method.init();
|
|
30389
|
-
(
|
|
31230
|
+
(_b = method.setDevice) === null || _b === void 0 ? void 0 : _b.call(method, this.device);
|
|
30390
31231
|
method.context = this.context;
|
|
30391
|
-
|
|
30392
|
-
|
|
30393
|
-
|
|
30394
|
-
|
|
30395
|
-
|
|
30396
|
-
|
|
30397
|
-
|
|
30398
|
-
onSignalAbort();
|
|
30399
|
-
}
|
|
30400
|
-
else {
|
|
30401
|
-
onDeviceButtonHandler(device, request);
|
|
30402
|
-
}
|
|
30403
|
-
};
|
|
30404
|
-
this.device.on(DEVICE.BUTTON, _onDeviceButtonHandler);
|
|
31232
|
+
if (method.requestContext && this.device) {
|
|
31233
|
+
updateRequestContext(method.requestContext.responseID, {
|
|
31234
|
+
deviceInstanceId: this.device.instanceId,
|
|
31235
|
+
commandsInstanceId: (_c = this.device.commands) === null || _c === void 0 ? void 0 : _c.instanceId,
|
|
31236
|
+
});
|
|
31237
|
+
}
|
|
31238
|
+
this.device.on(DEVICE.BUTTON, buttonListener);
|
|
30405
31239
|
this.device.on(DEVICE.PIN, onSignalAbort);
|
|
30406
31240
|
this.device.on(DEVICE.PASSPHRASE, onSignalAbort);
|
|
30407
31241
|
preCheckDeviceSupport(this.device, method);
|
|
@@ -30410,6 +31244,9 @@ class AllNetworkGetAddressBase extends BaseMethod {
|
|
|
30410
31244
|
throw new Error('No response');
|
|
30411
31245
|
}
|
|
30412
31246
|
result = response.map((item, index) => (Object.assign(Object.assign({}, params.bundle[index]._originRequestParams), { success: true, payload: Object.assign(Object.assign({}, item), { rootFingerprint }) })));
|
|
31247
|
+
if (method.requestContext) {
|
|
31248
|
+
completeRequestContext(method.requestContext.responseID);
|
|
31249
|
+
}
|
|
30413
31250
|
}
|
|
30414
31251
|
catch (e) {
|
|
30415
31252
|
const error = handleSkippableHardwareError(e, this.device, method);
|
|
@@ -30425,6 +31262,14 @@ class AllNetworkGetAddressBase extends BaseMethod {
|
|
|
30425
31262
|
else {
|
|
30426
31263
|
throw e;
|
|
30427
31264
|
}
|
|
31265
|
+
if (method.requestContext) {
|
|
31266
|
+
completeRequestContext(method.requestContext.responseID, e instanceof Error ? e : new Error(String(e)));
|
|
31267
|
+
}
|
|
31268
|
+
}
|
|
31269
|
+
finally {
|
|
31270
|
+
this.device.off(DEVICE.BUTTON, buttonListener);
|
|
31271
|
+
this.device.off(DEVICE.PIN, onSignalAbort);
|
|
31272
|
+
this.device.off(DEVICE.PASSPHRASE, onSignalAbort);
|
|
30428
31273
|
}
|
|
30429
31274
|
return result;
|
|
30430
31275
|
});
|
|
@@ -30457,14 +31302,19 @@ function preCheckDeviceSupport(device, method) {
|
|
|
30457
31302
|
if (versionRange &&
|
|
30458
31303
|
semver__default["default"].valid(versionRange.min) &&
|
|
30459
31304
|
semver__default["default"].lt(currentVersion, versionRange.min)) {
|
|
30460
|
-
throw hardwareShared.ERRORS.createNeedUpgradeFirmwareHardwareError(
|
|
31305
|
+
throw hardwareShared.ERRORS.createNeedUpgradeFirmwareHardwareError({
|
|
31306
|
+
currentVersion,
|
|
31307
|
+
requireVersion: versionRange.min,
|
|
31308
|
+
methodName: method.name,
|
|
31309
|
+
firmwareType: getFirmwareType(device.features),
|
|
31310
|
+
});
|
|
30461
31311
|
}
|
|
30462
31312
|
else if (method.strictCheckDeviceSupport && !versionRange) {
|
|
30463
|
-
throw hardwareShared.ERRORS.
|
|
31313
|
+
throw hardwareShared.ERRORS.createDeviceNotSupportMethodError(method.name, getFirmwareType(device.features));
|
|
30464
31314
|
}
|
|
30465
31315
|
}
|
|
30466
31316
|
function handleSkippableHardwareError(e, device, method) {
|
|
30467
|
-
var _a, _b, _c, _d, _e;
|
|
31317
|
+
var _a, _b, _c, _d, _e, _f;
|
|
30468
31318
|
let error;
|
|
30469
31319
|
if (e instanceof hardwareShared.HardwareError && e.errorCode !== hardwareShared.HardwareErrorCode.RuntimeError) {
|
|
30470
31320
|
const { errorCode } = e;
|
|
@@ -30475,20 +31325,26 @@ function handleSkippableHardwareError(e, device, method) {
|
|
|
30475
31325
|
error = e;
|
|
30476
31326
|
}
|
|
30477
31327
|
}
|
|
30478
|
-
else if ((_a = e.message) === null || _a === void 0 ? void 0 : _a.includes('Failure_UnexpectedMessage'))
|
|
31328
|
+
else if (((_a = e.message) === null || _a === void 0 ? void 0 : _a.includes('Failure_UnexpectedMessage')) ||
|
|
31329
|
+
((_b = e.message) === null || _b === void 0 ? void 0 : _b.includes('Failure_UnknownMessage'))) {
|
|
30479
31330
|
const versionRange = getMethodVersionRange(device.features, type => method.getVersionRange()[type]);
|
|
30480
31331
|
const currentVersion = getDeviceFirmwareVersion(device.features).join('.');
|
|
30481
31332
|
if (versionRange &&
|
|
30482
31333
|
semver__default["default"].valid(versionRange.min) &&
|
|
30483
31334
|
semver__default["default"].lt(currentVersion, versionRange.min)) {
|
|
30484
|
-
error = hardwareShared.ERRORS.createNeedUpgradeFirmwareHardwareError(
|
|
31335
|
+
error = hardwareShared.ERRORS.createNeedUpgradeFirmwareHardwareError({
|
|
31336
|
+
currentVersion,
|
|
31337
|
+
requireVersion: versionRange.min,
|
|
31338
|
+
methodName: method.name,
|
|
31339
|
+
firmwareType: getFirmwareType(device.features),
|
|
31340
|
+
});
|
|
30485
31341
|
}
|
|
30486
31342
|
else {
|
|
30487
|
-
error = hardwareShared.ERRORS.
|
|
31343
|
+
error = hardwareShared.ERRORS.createDeviceNotSupportMethodError(method.name, getFirmwareType(device.features));
|
|
30488
31344
|
}
|
|
30489
31345
|
}
|
|
30490
|
-
else if (((
|
|
30491
|
-
((
|
|
31346
|
+
else if (((_d = (_c = e.message) === null || _c === void 0 ? void 0 : _c.toLowerCase()) === null || _d === void 0 ? void 0 : _d.includes('forbidden key path')) ||
|
|
31347
|
+
((_f = (_e = e.message) === null || _e === void 0 ? void 0 : _e.toLowerCase()) === null || _f === void 0 ? void 0 : _f.includes('invalid path'))) {
|
|
30492
31348
|
error = hardwareShared.ERRORS.TypedError(hardwareShared.HardwareErrorCode.CallMethodInvalidParameter, e.message);
|
|
30493
31349
|
}
|
|
30494
31350
|
return error;
|
|
@@ -31009,7 +31865,7 @@ function batchGetPublickeys(device, paths, ecdsaCurveName, coinType, options) {
|
|
|
31009
31865
|
}
|
|
31010
31866
|
const supportsBatchPublicKey = supportBatchPublicKey(device.features, options);
|
|
31011
31867
|
if (!supportsBatchPublicKey) {
|
|
31012
|
-
throw hardwareShared.
|
|
31868
|
+
throw hardwareShared.createDeviceNotSupportMethodError('BatchGetPublickeys', getFirmwareType(device.features));
|
|
31013
31869
|
}
|
|
31014
31870
|
const existsPathNotEqualCoinType = paths.find(p => !isEqualBip44CoinType(p.address_n, coinType));
|
|
31015
31871
|
if ((options === null || options === void 0 ? void 0 : options.ignoreCoinType) === false && existsPathNotEqualCoinType) {
|
|
@@ -31035,7 +31891,7 @@ function batchGetPublickeys(device, paths, ecdsaCurveName, coinType, options) {
|
|
|
31035
31891
|
include_node: (_a = options === null || options === void 0 ? void 0 : options.includeNode) !== null && _a !== void 0 ? _a : false,
|
|
31036
31892
|
});
|
|
31037
31893
|
if (res.type !== 'EcdsaPublicKeys') {
|
|
31038
|
-
throw hardwareShared.
|
|
31894
|
+
throw hardwareShared.createDeviceNotSupportMethodError('BatchGetPublickeys', getFirmwareType(device.features));
|
|
31039
31895
|
}
|
|
31040
31896
|
else {
|
|
31041
31897
|
result.root_fingerprint = res.message.root_fingerprint;
|
|
@@ -32909,8 +33765,12 @@ class EVMSignTypedData extends BaseMethod {
|
|
|
32909
33765
|
return false;
|
|
32910
33766
|
let biggerLimit = 1024;
|
|
32911
33767
|
const currentVersion = getDeviceFirmwareVersion(this.device.features).join('.');
|
|
33768
|
+
const currentDeviceType = getDeviceType(this.device.features);
|
|
32912
33769
|
const supportBiggerDataVersion = '4.4.0';
|
|
32913
|
-
|
|
33770
|
+
const supportBiggerData = DeviceModelToTypes.model_classic1s.includes(currentDeviceType) ||
|
|
33771
|
+
(DeviceModelToTypes.model_touch.includes(currentDeviceType) &&
|
|
33772
|
+
semver__default["default"].gte(currentVersion, supportBiggerDataVersion));
|
|
33773
|
+
if (supportBiggerData) {
|
|
32914
33774
|
biggerLimit = 1536;
|
|
32915
33775
|
}
|
|
32916
33776
|
const startIndex = data.startsWith('0x') ? 2 : 0;
|
|
@@ -32957,14 +33817,9 @@ class EVMSignTypedData extends BaseMethod {
|
|
|
32957
33817
|
throw hardwareShared.ERRORS.TypedError('Device_InitializeFailed', 'Device initialization failed. Please try again.');
|
|
32958
33818
|
}
|
|
32959
33819
|
const { addressN, chainId } = this.params;
|
|
33820
|
+
const supportEip712OnClassic = existCapability(this.device.features, hardwareTransport.Enum_Capability.Capability_EthereumTypedData);
|
|
32960
33821
|
const deviceType = getDeviceType(this.device.features);
|
|
32961
|
-
if (DeviceModelToTypes.model_mini.includes(deviceType)) {
|
|
32962
|
-
const currentVersion = getDeviceFirmwareVersion(this.device.features).join('.');
|
|
32963
|
-
const isClassic1sOrPure = deviceType === hardwareShared.EDeviceType.Classic1s || deviceType === hardwareShared.EDeviceType.ClassicPure;
|
|
32964
|
-
if ((isClassic1sOrPure && semver__default["default"].gte(currentVersion, '3.14.0')) ||
|
|
32965
|
-
existCapability(this.device.features, hardwareTransport.Enum_Capability.Capability_EthereumTypedData)) {
|
|
32966
|
-
return this.signTypedData();
|
|
32967
|
-
}
|
|
33822
|
+
if (DeviceModelToTypes.model_mini.includes(deviceType) && !supportEip712OnClassic) {
|
|
32968
33823
|
validateParams(this.params, [
|
|
32969
33824
|
{ name: 'domainHash', type: 'hexString', required: true },
|
|
32970
33825
|
{ name: 'messageHash', type: 'hexString', required: true },
|
|
@@ -33533,11 +34388,9 @@ class SolSignTransaction extends BaseMethod {
|
|
|
33533
34388
|
validateParams(batch, [
|
|
33534
34389
|
{ name: 'path', required: true },
|
|
33535
34390
|
{ name: 'rawTx', type: 'hexString', required: true },
|
|
34391
|
+
{ name: 'extraInfo', type: 'object' },
|
|
33536
34392
|
]);
|
|
33537
|
-
this.params.push({
|
|
33538
|
-
address_n: addressN,
|
|
33539
|
-
raw_tx: formatAnyHex(batch.rawTx),
|
|
33540
|
-
});
|
|
34393
|
+
this.params.push(Object.assign({ address_n: addressN, raw_tx: formatAnyHex(batch.rawTx) }, (batch.extraInfo ? { extra_info: batch.extraInfo } : undefined)));
|
|
33541
34394
|
});
|
|
33542
34395
|
}
|
|
33543
34396
|
getVersionRange() {
|
|
@@ -33971,7 +34824,7 @@ class TronSignMessage extends BaseMethod {
|
|
|
33971
34824
|
const { path, messageHex } = this.payload;
|
|
33972
34825
|
const addressN = validatePath(path, 3);
|
|
33973
34826
|
if (this.payload.messageType === 'V1' || this.payload.messageType == null) {
|
|
33974
|
-
throw hardwareShared.
|
|
34827
|
+
throw hardwareShared.createDeviceNotSupportMethodError('TronSignMessage', getFirmwareType(this.device.features));
|
|
33975
34828
|
}
|
|
33976
34829
|
const messageType = hardwareTransport.TronMessageType.V2;
|
|
33977
34830
|
this.params = {
|
|
@@ -33992,6 +34845,9 @@ class TronSignMessage extends BaseMethod {
|
|
|
33992
34845
|
pro: {
|
|
33993
34846
|
min: '4.16.0',
|
|
33994
34847
|
},
|
|
34848
|
+
touch: {
|
|
34849
|
+
min: '4.12.0',
|
|
34850
|
+
},
|
|
33995
34851
|
classic1s: {
|
|
33996
34852
|
min: '3.13.0',
|
|
33997
34853
|
},
|
|
@@ -34138,6 +34994,9 @@ class TronSignTransaction extends BaseMethod {
|
|
|
34138
34994
|
pro: {
|
|
34139
34995
|
min: '4.13.0',
|
|
34140
34996
|
},
|
|
34997
|
+
touch: {
|
|
34998
|
+
min: '4.12.0',
|
|
34999
|
+
},
|
|
34141
35000
|
model_classic1s: {
|
|
34142
35001
|
min: '3.12.0',
|
|
34143
35002
|
},
|
|
@@ -34153,6 +35012,12 @@ class TronSignTransaction extends BaseMethod {
|
|
|
34153
35012
|
pro: {
|
|
34154
35013
|
min: '4.15.0',
|
|
34155
35014
|
},
|
|
35015
|
+
touch: {
|
|
35016
|
+
min: '4.12.0',
|
|
35017
|
+
},
|
|
35018
|
+
model_classic1s: {
|
|
35019
|
+
min: '3.13.0',
|
|
35020
|
+
},
|
|
34156
35021
|
};
|
|
34157
35022
|
}
|
|
34158
35023
|
checkSupportDelegateContractLockPeriod() {
|
|
@@ -34798,12 +35663,22 @@ class CosmosSignTransaction extends BaseMethod {
|
|
|
34798
35663
|
}
|
|
34799
35664
|
run() {
|
|
34800
35665
|
return __awaiter(this, void 0, void 0, function* () {
|
|
34801
|
-
|
|
34802
|
-
|
|
34803
|
-
|
|
34804
|
-
|
|
34805
|
-
|
|
34806
|
-
|
|
35666
|
+
try {
|
|
35667
|
+
const res = yield this.device.commands.typedCall('CosmosSignTx', 'CosmosSignedTx', Object.assign({}, this.params));
|
|
35668
|
+
const { signature } = res.message;
|
|
35669
|
+
return {
|
|
35670
|
+
path: serializedPath(this.params.address_n),
|
|
35671
|
+
signature,
|
|
35672
|
+
};
|
|
35673
|
+
}
|
|
35674
|
+
catch (error) {
|
|
35675
|
+
const { message } = error;
|
|
35676
|
+
if (message.includes('Failure_DataError,Json parse failed') ||
|
|
35677
|
+
message.includes('Failure_DataError,Invalid message')) {
|
|
35678
|
+
throw hardwareShared.ERRORS.TypedError(hardwareShared.HardwareErrorCode.CosmosInvalidJsonMessage, message);
|
|
35679
|
+
}
|
|
35680
|
+
throw error;
|
|
35681
|
+
}
|
|
34807
35682
|
});
|
|
34808
35683
|
}
|
|
34809
35684
|
}
|
|
@@ -34847,21 +35722,8 @@ class XrpGetAddress$1 extends BaseMethod {
|
|
|
34847
35722
|
};
|
|
34848
35723
|
}
|
|
34849
35724
|
run() {
|
|
34850
|
-
var _a, _b, _c, _d
|
|
35725
|
+
var _a, _b, _c, _d;
|
|
34851
35726
|
return __awaiter(this, void 0, void 0, function* () {
|
|
34852
|
-
if (this.hasBundle && supportBatchPublicKey((_a = this.device) === null || _a === void 0 ? void 0 : _a.features) && !this.shouldConfirm) {
|
|
34853
|
-
const res = yield batchGetPublickeys(this.device, this.params, 'secp256k1', 144);
|
|
34854
|
-
const result = res.public_keys.map((publicKey, index) => ({
|
|
34855
|
-
path: serializedPath(this.params[index].address_n),
|
|
34856
|
-
address: rippleKeypairs.deriveAddress(publicKey),
|
|
34857
|
-
publicKey,
|
|
34858
|
-
pub: publicKey,
|
|
34859
|
-
}));
|
|
34860
|
-
validateResult(result, ['address', 'publicKey'], {
|
|
34861
|
-
expectedLength: this.params.length,
|
|
34862
|
-
});
|
|
34863
|
-
return Promise.resolve(result);
|
|
34864
|
-
}
|
|
34865
35727
|
const responses = [];
|
|
34866
35728
|
for (let i = 0; i < this.params.length; i++) {
|
|
34867
35729
|
const param = this.params[i];
|
|
@@ -34875,8 +35737,8 @@ class XrpGetAddress$1 extends BaseMethod {
|
|
|
34875
35737
|
responses.push({
|
|
34876
35738
|
path,
|
|
34877
35739
|
address,
|
|
34878
|
-
publicKey: (
|
|
34879
|
-
pub: (
|
|
35740
|
+
publicKey: (_b = (_a = publicKey.message) === null || _a === void 0 ? void 0 : _a.public_keys) === null || _b === void 0 ? void 0 : _b[0],
|
|
35741
|
+
pub: (_d = (_c = publicKey.message) === null || _c === void 0 ? void 0 : _c.public_keys) === null || _d === void 0 ? void 0 : _d[0],
|
|
34880
35742
|
});
|
|
34881
35743
|
this.postPreviousAddressMessage({
|
|
34882
35744
|
path,
|
|
@@ -36359,6 +37221,11 @@ var Networks;
|
|
|
36359
37221
|
Networks["Astar"] = "astar";
|
|
36360
37222
|
Networks["JoyStream"] = "joystream";
|
|
36361
37223
|
Networks["Manta"] = "manta";
|
|
37224
|
+
Networks["Hydration"] = "hydration";
|
|
37225
|
+
Networks["Bifrost"] = "bifrost";
|
|
37226
|
+
Networks["BifrostKusama"] = "bifrost-ksm";
|
|
37227
|
+
Networks["PolkadotAssetHub"] = "polkadot-assethub";
|
|
37228
|
+
Networks["KusamaAssetHub"] = "kusama-assethub";
|
|
36362
37229
|
})(Networks || (Networks = {}));
|
|
36363
37230
|
const baseVersionRange = {
|
|
36364
37231
|
model_mini: {
|
|
@@ -36399,6 +37266,16 @@ function getPolkadotVersionRangeWithBundle(networks) {
|
|
|
36399
37266
|
}
|
|
36400
37267
|
return baseVersionRange;
|
|
36401
37268
|
}
|
|
37269
|
+
function parseNetwork(network) {
|
|
37270
|
+
switch (network) {
|
|
37271
|
+
case Networks.PolkadotAssetHub:
|
|
37272
|
+
return Networks.Polkadot;
|
|
37273
|
+
case Networks.KusamaAssetHub:
|
|
37274
|
+
return Networks.Kusama;
|
|
37275
|
+
default:
|
|
37276
|
+
return network;
|
|
37277
|
+
}
|
|
37278
|
+
}
|
|
36402
37279
|
|
|
36403
37280
|
class PolkadotGetAddress extends BaseMethod {
|
|
36404
37281
|
constructor() {
|
|
@@ -36427,7 +37304,7 @@ class PolkadotGetAddress extends BaseMethod {
|
|
|
36427
37304
|
this.params.push({
|
|
36428
37305
|
address_n: addressN,
|
|
36429
37306
|
prefix,
|
|
36430
|
-
network,
|
|
37307
|
+
network: parseNetwork(network),
|
|
36431
37308
|
show_display: showOnUKey,
|
|
36432
37309
|
});
|
|
36433
37310
|
});
|
|
@@ -36474,13 +37351,15 @@ class PolkadotSignTransaction extends BaseMethod {
|
|
|
36474
37351
|
validateParams(this.payload, [
|
|
36475
37352
|
{ name: 'path', required: true },
|
|
36476
37353
|
{ name: 'network', required: true },
|
|
37354
|
+
{ name: 'prefix' },
|
|
36477
37355
|
{ name: 'rawTx', type: 'hexString', required: true },
|
|
36478
37356
|
]);
|
|
36479
|
-
const { path, rawTx, network } = this.payload;
|
|
37357
|
+
const { path, rawTx, network, prefix } = this.payload;
|
|
36480
37358
|
const addressN = validatePath(path, 3);
|
|
36481
37359
|
this.params = {
|
|
36482
37360
|
address_n: addressN,
|
|
36483
|
-
network,
|
|
37361
|
+
network: parseNetwork(network),
|
|
37362
|
+
prefix,
|
|
36484
37363
|
raw_tx: formatAnyHex(rawTx),
|
|
36485
37364
|
};
|
|
36486
37365
|
}
|
|
@@ -38707,6 +39586,7 @@ var ApiMethods = /*#__PURE__*/Object.freeze({
|
|
|
38707
39586
|
checkBridgeRelease: CheckBridgeRelease,
|
|
38708
39587
|
checkBootloaderRelease: CheckBootloaderRelease,
|
|
38709
39588
|
checkAllFirmwareRelease: CheckAllFirmwareRelease,
|
|
39589
|
+
checkFirmwareTypeAvailable: CheckFirmwareTypeAvailable,
|
|
38710
39590
|
deviceBackup: DeviceBackup,
|
|
38711
39591
|
deviceChangePin: DeviceChangePin,
|
|
38712
39592
|
deviceFlags: DeviceFlags,
|
|
@@ -38731,7 +39611,6 @@ var ApiMethods = /*#__PURE__*/Object.freeze({
|
|
|
38731
39611
|
firmwareUpdateV2: FirmwareUpdateV2,
|
|
38732
39612
|
firmwareUpdateV3: FirmwareUpdateV3,
|
|
38733
39613
|
promptWebDeviceAccess: PromptWebDeviceAccess,
|
|
38734
|
-
emmcFileWrite: EmmcFileWrite,
|
|
38735
39614
|
cipherKeyValue: CipherKeyValue,
|
|
38736
39615
|
allNetworkGetAddress: AllNetworkGetAddress,
|
|
38737
39616
|
allNetworkGetAddressByLoop: AllNetworkGetAddressByLoop,
|
|
@@ -38933,6 +39812,18 @@ class DeviceConnector {
|
|
|
38933
39812
|
}
|
|
38934
39813
|
});
|
|
38935
39814
|
}
|
|
39815
|
+
disconnect(session) {
|
|
39816
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
39817
|
+
try {
|
|
39818
|
+
if (this.transport.disconnect && !!session) {
|
|
39819
|
+
yield this.transport.disconnect(session);
|
|
39820
|
+
}
|
|
39821
|
+
}
|
|
39822
|
+
catch (error) {
|
|
39823
|
+
safeThrowError(error);
|
|
39824
|
+
}
|
|
39825
|
+
});
|
|
39826
|
+
}
|
|
38936
39827
|
promptDeviceAccess() {
|
|
38937
39828
|
if (!this.transport.promptDeviceAccess) {
|
|
38938
39829
|
return Promise.resolve(null);
|
|
@@ -39098,7 +39989,33 @@ const pollingState = {};
|
|
|
39098
39989
|
let preConnectCache = {
|
|
39099
39990
|
passphraseState: undefined,
|
|
39100
39991
|
};
|
|
39992
|
+
const toError = (error) => {
|
|
39993
|
+
if (error instanceof Error)
|
|
39994
|
+
return error;
|
|
39995
|
+
if (error == null)
|
|
39996
|
+
return undefined;
|
|
39997
|
+
if (typeof error === 'string')
|
|
39998
|
+
return new Error(error);
|
|
39999
|
+
try {
|
|
40000
|
+
return new Error(JSON.stringify(error));
|
|
40001
|
+
}
|
|
40002
|
+
catch (_a) {
|
|
40003
|
+
return new Error(String(error));
|
|
40004
|
+
}
|
|
40005
|
+
};
|
|
40006
|
+
const updateMethodRequestContext = (method, updates) => {
|
|
40007
|
+
if (method.requestContext) {
|
|
40008
|
+
updateRequestContext(method.requestContext.responseID, updates);
|
|
40009
|
+
}
|
|
40010
|
+
};
|
|
40011
|
+
const completeMethodRequestContext = (method, error) => {
|
|
40012
|
+
if (!method.requestContext) {
|
|
40013
|
+
return;
|
|
40014
|
+
}
|
|
40015
|
+
completeRequestContext(method.requestContext.responseID, toError(error));
|
|
40016
|
+
};
|
|
39101
40017
|
const callAPI = (context, message) => __awaiter(void 0, void 0, void 0, function* () {
|
|
40018
|
+
var _a;
|
|
39102
40019
|
if (!message.id || !message.payload || message.type !== IFRAME.CALL) {
|
|
39103
40020
|
return Promise.reject(hardwareShared.ERRORS.TypedError('on call: message.id or message.payload is missing'));
|
|
39104
40021
|
}
|
|
@@ -39107,6 +40024,12 @@ const callAPI = (context, message) => __awaiter(void 0, void 0, void 0, function
|
|
|
39107
40024
|
method = findMethod(message);
|
|
39108
40025
|
method.connector = _connector;
|
|
39109
40026
|
method.postMessage = postMessage;
|
|
40027
|
+
(_a = method.setContext) === null || _a === void 0 ? void 0 : _a.call(method, context);
|
|
40028
|
+
method.requestContext = createRequestContext(method.responseID, method.name, {
|
|
40029
|
+
sdkInstanceId: context.sdkInstanceId,
|
|
40030
|
+
connectId: method.connectId,
|
|
40031
|
+
});
|
|
40032
|
+
Log.debug(`[${context.sdkInstanceId}] callAPI: ${formatRequestContext(method.requestContext)}`);
|
|
39110
40033
|
method.init();
|
|
39111
40034
|
}
|
|
39112
40035
|
catch (error) {
|
|
@@ -39114,11 +40037,14 @@ const callAPI = (context, message) => __awaiter(void 0, void 0, void 0, function
|
|
|
39114
40037
|
}
|
|
39115
40038
|
DevicePool.emitter.on(DEVICE.CONNECT, onDeviceConnectHandler);
|
|
39116
40039
|
if (!method.useDevice) {
|
|
40040
|
+
updateMethodRequestContext(method, { status: 'running' });
|
|
39117
40041
|
try {
|
|
39118
40042
|
const response = yield method.run();
|
|
40043
|
+
completeMethodRequestContext(method);
|
|
39119
40044
|
return createResponseMessage(method.responseID, true, response);
|
|
39120
40045
|
}
|
|
39121
40046
|
catch (error) {
|
|
40047
|
+
completeMethodRequestContext(method, error);
|
|
39122
40048
|
return createResponseMessage(method.responseID, false, { error });
|
|
39123
40049
|
}
|
|
39124
40050
|
}
|
|
@@ -39158,9 +40084,10 @@ const waitForPendingPromise = (getPrePendingCallPromise, removePrePendingCallPro
|
|
|
39158
40084
|
}
|
|
39159
40085
|
});
|
|
39160
40086
|
const onCallDevice = (context, message, method) => __awaiter(void 0, void 0, void 0, function* () {
|
|
39161
|
-
var
|
|
40087
|
+
var _b, _c, _d, _e;
|
|
39162
40088
|
let messageResponse;
|
|
39163
40089
|
const { requestQueue, getPrePendingCallPromise, setPrePendingCallPromise } = context;
|
|
40090
|
+
updateMethodRequestContext(method, { status: 'running' });
|
|
39164
40091
|
const connectStateChange = preConnectCache.passphraseState !== method.payload.passphraseState;
|
|
39165
40092
|
preConnectCache = {
|
|
39166
40093
|
passphraseState: method.payload.passphraseState,
|
|
@@ -39180,10 +40107,11 @@ const onCallDevice = (context, message, method) => __awaiter(void 0, void 0, voi
|
|
|
39180
40107
|
pollingState[pollingId] = false;
|
|
39181
40108
|
}
|
|
39182
40109
|
pollingId += 1;
|
|
39183
|
-
device = yield ensureConnected(context, method, pollingId, (
|
|
40110
|
+
device = yield ensureConnected(context, method, pollingId, (_b = task.abortController) === null || _b === void 0 ? void 0 : _b.signal);
|
|
39184
40111
|
}
|
|
39185
40112
|
catch (e) {
|
|
39186
40113
|
console.log('ensureConnected error: ', e);
|
|
40114
|
+
completeMethodRequestContext(method, e);
|
|
39187
40115
|
if (e.name === 'AbortError' || e.message === 'Request aborted') {
|
|
39188
40116
|
requestQueue.releaseTask(method.responseID);
|
|
39189
40117
|
return createResponseMessage(method.responseID, false, {
|
|
@@ -39193,22 +40121,35 @@ const onCallDevice = (context, message, method) => __awaiter(void 0, void 0, voi
|
|
|
39193
40121
|
requestQueue.releaseTask(method.responseID);
|
|
39194
40122
|
return createResponseMessage(method.responseID, false, { error: e });
|
|
39195
40123
|
}
|
|
40124
|
+
if ((_c = method.payload) === null || _c === void 0 ? void 0 : _c.onlyConnectBleDevice) {
|
|
40125
|
+
Log.debug('Call API - only connect ble device: ', device === null || device === void 0 ? void 0 : device.mainId);
|
|
40126
|
+
return createResponseMessage(method.responseID, true, null);
|
|
40127
|
+
}
|
|
39196
40128
|
Log.debug('Call API - setDevice: ', device.mainId);
|
|
39197
|
-
(
|
|
40129
|
+
(_d = method.setDevice) === null || _d === void 0 ? void 0 : _d.call(method, device);
|
|
39198
40130
|
method.context = context;
|
|
40131
|
+
updateMethodRequestContext(method, {
|
|
40132
|
+
deviceInstanceId: device.instanceId,
|
|
40133
|
+
commandsInstanceId: (_e = device.commands) === null || _e === void 0 ? void 0 : _e.instanceId,
|
|
40134
|
+
});
|
|
40135
|
+
const activeRequests = getActiveRequestsByDeviceInstance(device.instanceId);
|
|
40136
|
+
if (activeRequests.length > 0) {
|
|
40137
|
+
Log.warn(`[${method.instanceId}] Device ${device.instanceId} has ${activeRequests.length} active requests:`, activeRequests.map(formatRequestContext));
|
|
40138
|
+
}
|
|
39199
40139
|
device.on(DEVICE.PIN, onDevicePinHandler);
|
|
39200
40140
|
device.on(DEVICE.BUTTON, onDeviceButtonHandler);
|
|
39201
40141
|
device.on(DEVICE.PASSPHRASE, message.payload.useEmptyPassphrase ? onEmptyPassphraseHandler : onDevicePassphraseHandler);
|
|
39202
40142
|
device.on(DEVICE.PASSPHRASE_ON_DEVICE, onEnterPassphraseOnDeviceHandler);
|
|
39203
40143
|
device.on(DEVICE.FEATURES, onDeviceFeaturesHandler);
|
|
39204
40144
|
device.on(DEVICE.SELECT_DEVICE_IN_BOOTLOADER_FOR_WEB_DEVICE, onSelectDeviceInBootloaderForWebDeviceHandler);
|
|
40145
|
+
device.on(DEVICE.SELECT_DEVICE_FOR_SWITCH_FIRMWARE_WEB_DEVICE, onSelectDeviceForSwitchFirmwareWebDeviceHandler);
|
|
39205
40146
|
try {
|
|
39206
40147
|
if (method.connectId) {
|
|
39207
40148
|
yield context.waitForCallbackTasks(method.connectId);
|
|
39208
40149
|
}
|
|
39209
40150
|
yield waitForPendingPromise(getPrePendingCallPromise, setPrePendingCallPromise);
|
|
39210
40151
|
const inner = () => __awaiter(void 0, void 0, void 0, function* () {
|
|
39211
|
-
var
|
|
40152
|
+
var _f, _g, _h, _j, _k;
|
|
39212
40153
|
const versionRange = getMethodVersionRange(device.features, type => method.getVersionRange()[type]);
|
|
39213
40154
|
if (device.features) {
|
|
39214
40155
|
yield DataManager.checkAndReloadData();
|
|
@@ -39218,7 +40159,8 @@ const onCallDevice = (context, message, method) => __awaiter(void 0, void 0, voi
|
|
|
39218
40159
|
throw hardwareShared.createDefectiveFirmwareError(defectiveInfo.serialNo, defectiveInfo.seVersion || 'Unknown', defectiveInfo.deviceType, method.connectId, method.deviceId);
|
|
39219
40160
|
}
|
|
39220
40161
|
}
|
|
39221
|
-
const
|
|
40162
|
+
const deviceFirmwareType = getFirmwareType(device.features);
|
|
40163
|
+
const newVersionStatus = DataManager.getFirmwareStatus(device.features, deviceFirmwareType);
|
|
39222
40164
|
const bleVersionStatus = DataManager.getBLEFirmwareStatus(device.features);
|
|
39223
40165
|
const currentFirmwareVersion = getDeviceFirmwareVersion(device.features).join('.');
|
|
39224
40166
|
const currentBleVersion = getDeviceBLEFirmwareVersion(device.features).join('.');
|
|
@@ -39241,9 +40183,19 @@ const onCallDevice = (context, message, method) => __awaiter(void 0, void 0, voi
|
|
|
39241
40183
|
if (semver__default["default"].valid(versionRange.min) &&
|
|
39242
40184
|
semver__default["default"].lt(currentFirmwareVersion, versionRange.min)) {
|
|
39243
40185
|
if (newVersionStatus === 'none' || newVersionStatus === 'valid') {
|
|
39244
|
-
throw hardwareShared.createNewFirmwareUnReleaseHardwareError(
|
|
40186
|
+
throw hardwareShared.createNewFirmwareUnReleaseHardwareError({
|
|
40187
|
+
currentVersion: currentFirmwareVersion,
|
|
40188
|
+
requireVersion: versionRange.min,
|
|
40189
|
+
methodName: method.name,
|
|
40190
|
+
firmwareType: getFirmwareType(device.features),
|
|
40191
|
+
});
|
|
39245
40192
|
}
|
|
39246
|
-
return Promise.reject(hardwareShared.createNeedUpgradeFirmwareHardwareError(
|
|
40193
|
+
return Promise.reject(hardwareShared.createNeedUpgradeFirmwareHardwareError({
|
|
40194
|
+
currentVersion: currentFirmwareVersion,
|
|
40195
|
+
requireVersion: versionRange.min,
|
|
40196
|
+
methodName: method.name,
|
|
40197
|
+
firmwareType: getFirmwareType(device.features),
|
|
40198
|
+
}));
|
|
39247
40199
|
}
|
|
39248
40200
|
if (versionRange.max &&
|
|
39249
40201
|
semver__default["default"].valid(versionRange.max) &&
|
|
@@ -39252,7 +40204,7 @@ const onCallDevice = (context, message, method) => __awaiter(void 0, void 0, voi
|
|
|
39252
40204
|
}
|
|
39253
40205
|
}
|
|
39254
40206
|
else if (method.strictCheckDeviceSupport) {
|
|
39255
|
-
throw hardwareShared.
|
|
40207
|
+
throw hardwareShared.createDeviceNotSupportMethodError(method.name, getFirmwareType(device.features));
|
|
39256
40208
|
}
|
|
39257
40209
|
}
|
|
39258
40210
|
const unexpectedMode = device.hasUnexpectedMode(method.allowDeviceMode, method.requireDeviceMode);
|
|
@@ -39284,7 +40236,7 @@ const onCallDevice = (context, message, method) => __awaiter(void 0, void 0, voi
|
|
|
39284
40236
|
require: support.require,
|
|
39285
40237
|
}));
|
|
39286
40238
|
}
|
|
39287
|
-
const passphraseStateSafety = yield device.checkPassphraseStateSafety((
|
|
40239
|
+
const passphraseStateSafety = yield device.checkPassphraseStateSafety((_f = method.payload) === null || _f === void 0 ? void 0 : _f.passphraseState, (_g = method.payload) === null || _g === void 0 ? void 0 : _g.useEmptyPassphrase, (_h = method.payload) === null || _h === void 0 ? void 0 : _h.skipPassphraseCheck);
|
|
39288
40240
|
checkPassphraseEnableState(method, device.features);
|
|
39289
40241
|
if (!passphraseStateSafety) {
|
|
39290
40242
|
DevicePool.clearDeviceCache(method.payload.connectId);
|
|
@@ -39301,17 +40253,23 @@ const onCallDevice = (context, message, method) => __awaiter(void 0, void 0, voi
|
|
|
39301
40253
|
: hardwareShared.ERRORS.TypedError(hardwareShared.HardwareErrorCode.RuntimeError, 'open safety check failed.');
|
|
39302
40254
|
throw error;
|
|
39303
40255
|
}
|
|
39304
|
-
(
|
|
40256
|
+
(_k = (_j = method.device) === null || _j === void 0 ? void 0 : _j.commands) === null || _k === void 0 ? void 0 : _k.checkDisposed();
|
|
39305
40257
|
try {
|
|
39306
40258
|
const response = yield method.run();
|
|
39307
40259
|
Log.debug('Call API - Inner Method Run: ');
|
|
39308
40260
|
messageResponse = createResponseMessage(method.responseID, true, response);
|
|
39309
40261
|
requestQueue.resolveRequest(method.responseID, messageResponse);
|
|
40262
|
+
completeMethodRequestContext(method);
|
|
39310
40263
|
}
|
|
39311
40264
|
catch (error) {
|
|
39312
|
-
Log.debug(
|
|
40265
|
+
Log.debug(`Call API - Inner Method Run Error`, error);
|
|
39313
40266
|
messageResponse = createResponseMessage(method.responseID, false, { error });
|
|
39314
40267
|
requestQueue.resolveRequest(method.responseID, messageResponse);
|
|
40268
|
+
completeMethodRequestContext(method, error);
|
|
40269
|
+
if (error instanceof hardwareShared.HardwareError &&
|
|
40270
|
+
hardwareShared.ERROR_CODES_REQUIRE_RELEASE.includes(error.errorCode)) {
|
|
40271
|
+
throw error;
|
|
40272
|
+
}
|
|
39315
40273
|
}
|
|
39316
40274
|
});
|
|
39317
40275
|
Log.debug('Call API - Device Run: ', device.mainId);
|
|
@@ -39323,6 +40281,7 @@ const onCallDevice = (context, message, method) => __awaiter(void 0, void 0, voi
|
|
|
39323
40281
|
}
|
|
39324
40282
|
catch (e) {
|
|
39325
40283
|
Log.debug('Device Run Error: ', e);
|
|
40284
|
+
completeMethodRequestContext(method, e);
|
|
39326
40285
|
return createResponseMessage(method.responseID, false, { error: e });
|
|
39327
40286
|
}
|
|
39328
40287
|
}
|
|
@@ -39330,6 +40289,7 @@ const onCallDevice = (context, message, method) => __awaiter(void 0, void 0, voi
|
|
|
39330
40289
|
messageResponse = createResponseMessage(method.responseID, false, { error });
|
|
39331
40290
|
requestQueue.rejectRequest(method.responseID, hardwareShared.ERRORS.TypedError(hardwareShared.HardwareErrorCode.CallMethodError, error.message));
|
|
39332
40291
|
Log.debug('Call API - Run Error: ', error);
|
|
40292
|
+
completeMethodRequestContext(method, error);
|
|
39333
40293
|
}
|
|
39334
40294
|
finally {
|
|
39335
40295
|
const response = messageResponse;
|
|
@@ -39341,7 +40301,19 @@ const onCallDevice = (context, message, method) => __awaiter(void 0, void 0, voi
|
|
|
39341
40301
|
requestQueue.releaseTask(method.responseID);
|
|
39342
40302
|
closePopup();
|
|
39343
40303
|
cleanup();
|
|
39344
|
-
|
|
40304
|
+
if (device) {
|
|
40305
|
+
const stillActive = getActiveRequestsByDeviceInstance(device.instanceId);
|
|
40306
|
+
if (stillActive.length > 1) {
|
|
40307
|
+
Log.warn(`[${method.instanceId}] Removing listeners while ${stillActive.length} requests are active!`, {
|
|
40308
|
+
deviceInstanceId: device.instanceId,
|
|
40309
|
+
activeRequests: stillActive.map(formatRequestContext),
|
|
40310
|
+
pinListeners: device.listenerCount(DEVICE.PIN),
|
|
40311
|
+
});
|
|
40312
|
+
}
|
|
40313
|
+
else {
|
|
40314
|
+
removeDeviceListener(device);
|
|
40315
|
+
}
|
|
40316
|
+
}
|
|
39345
40317
|
}
|
|
39346
40318
|
});
|
|
39347
40319
|
function initDeviceList(method) {
|
|
@@ -39388,10 +40360,7 @@ function initDevice(method) {
|
|
|
39388
40360
|
}
|
|
39389
40361
|
if (!device) {
|
|
39390
40362
|
const env = DataManager.getSettings('env');
|
|
39391
|
-
if (DataManager.
|
|
39392
|
-
if (!method.payload.skipWebDevicePrompt) {
|
|
39393
|
-
postMessage(createUiMessage(UI_REQUEST.WEB_DEVICE_PROMPT_ACCESS_PERMISSION));
|
|
39394
|
-
}
|
|
40363
|
+
if (DataManager.isBrowserWebUsb(env)) {
|
|
39395
40364
|
throw hardwareShared.ERRORS.TypedError(hardwareShared.HardwareErrorCode.WebDeviceNotFoundOrNeedsPermission);
|
|
39396
40365
|
}
|
|
39397
40366
|
throw hardwareShared.ERRORS.TypedError(hardwareShared.HardwareErrorCode.DeviceNotFound);
|
|
@@ -39411,7 +40380,7 @@ function initDeviceForBle(method) {
|
|
|
39411
40380
|
device = deviceCacheMap.get(method.connectId);
|
|
39412
40381
|
}
|
|
39413
40382
|
else {
|
|
39414
|
-
device = Device.fromDescriptor({ id: method.connectId });
|
|
40383
|
+
device = Device.fromDescriptor({ id: method.connectId }, method.sdkInstanceId);
|
|
39415
40384
|
deviceCacheMap.set(method.connectId, device);
|
|
39416
40385
|
}
|
|
39417
40386
|
device.deviceConnector = _connector;
|
|
@@ -39419,9 +40388,13 @@ function initDeviceForBle(method) {
|
|
|
39419
40388
|
}
|
|
39420
40389
|
let bleTimeoutRetry = 0;
|
|
39421
40390
|
function connectDeviceForBle(method, device) {
|
|
40391
|
+
var _a;
|
|
39422
40392
|
return __awaiter(this, void 0, void 0, function* () {
|
|
39423
40393
|
try {
|
|
39424
40394
|
yield device.acquire();
|
|
40395
|
+
if ((_a = method.payload) === null || _a === void 0 ? void 0 : _a.onlyConnectBleDevice) {
|
|
40396
|
+
return;
|
|
40397
|
+
}
|
|
39425
40398
|
yield device.initialize(parseInitOptions(method));
|
|
39426
40399
|
}
|
|
39427
40400
|
catch (err) {
|
|
@@ -39446,12 +40419,13 @@ const ensureConnected = (_context, method, pollingId, abortSignal) => __awaiter(
|
|
|
39446
40419
|
Log.debug(`EnsureConnected function start, MAX_RETRY_COUNT=${MAX_RETRY_COUNT}, POLL_INTERVAL_TIME=${POLL_INTERVAL_TIME} `);
|
|
39447
40420
|
const poll = (time = POLL_INTERVAL_TIME) => __awaiter(void 0, void 0, void 0, function* () {
|
|
39448
40421
|
return new Promise((resolve, reject) => __awaiter(void 0, void 0, void 0, function* () {
|
|
40422
|
+
var _l;
|
|
39449
40423
|
const abort = () => {
|
|
39450
40424
|
if (abortSignal && abortSignal.aborted) {
|
|
39451
40425
|
if (timer) {
|
|
39452
40426
|
clearTimeout(timer);
|
|
39453
40427
|
}
|
|
39454
|
-
reject(hardwareShared.ERRORS.TypedError(hardwareShared.HardwareErrorCode.
|
|
40428
|
+
reject(hardwareShared.ERRORS.TypedError(hardwareShared.HardwareErrorCode.CallQueueActionCancelled));
|
|
39455
40429
|
return true;
|
|
39456
40430
|
}
|
|
39457
40431
|
return false;
|
|
@@ -39539,7 +40513,6 @@ const ensureConnected = (_context, method, pollingId, abortSignal) => __awaiter(
|
|
|
39539
40513
|
hardwareShared.HardwareErrorCode.SelectDevice,
|
|
39540
40514
|
hardwareShared.HardwareErrorCode.DeviceDetectInBootloaderMode,
|
|
39541
40515
|
hardwareShared.HardwareErrorCode.BleCharacteristicNotifyChangeFailure,
|
|
39542
|
-
hardwareShared.HardwareErrorCode.WebDeviceNotFoundOrNeedsPermission,
|
|
39543
40516
|
hardwareShared.HardwareErrorCode.BridgeNeedsPermission,
|
|
39544
40517
|
].includes(error.errorCode)) {
|
|
39545
40518
|
reject(error);
|
|
@@ -39551,7 +40524,13 @@ const ensureConnected = (_context, method, pollingId, abortSignal) => __awaiter(
|
|
|
39551
40524
|
clearTimeout(timer);
|
|
39552
40525
|
}
|
|
39553
40526
|
Log.debug('EnsureConnected get to max try count, will return: ', tryCount);
|
|
39554
|
-
|
|
40527
|
+
if (DataManager.isBrowserWebUsb(env) && !((_l = method.payload) === null || _l === void 0 ? void 0 : _l.skipWebDevicePrompt)) {
|
|
40528
|
+
postMessage(createUiMessage(UI_REQUEST.WEB_DEVICE_PROMPT_ACCESS_PERMISSION));
|
|
40529
|
+
reject(hardwareShared.ERRORS.TypedError(hardwareShared.HardwareErrorCode.WebDeviceNotFoundOrNeedsPermission));
|
|
40530
|
+
}
|
|
40531
|
+
else {
|
|
40532
|
+
reject(hardwareShared.ERRORS.TypedError(hardwareShared.HardwareErrorCode.DeviceNotFound));
|
|
40533
|
+
}
|
|
39555
40534
|
return;
|
|
39556
40535
|
}
|
|
39557
40536
|
if (abort()) {
|
|
@@ -39581,7 +40560,7 @@ const cancel = (context, connectId) => {
|
|
|
39581
40560
|
setPrePendingCallPromise(device === null || device === void 0 ? void 0 : device.interruptionFromUser());
|
|
39582
40561
|
canceledDevices.push(device);
|
|
39583
40562
|
}
|
|
39584
|
-
requestQueue.rejectRequest(requestId, hardwareShared.ERRORS.TypedError(hardwareShared.HardwareErrorCode.
|
|
40563
|
+
requestQueue.rejectRequest(requestId, hardwareShared.ERRORS.TypedError(hardwareShared.HardwareErrorCode.CallQueueActionCancelled));
|
|
39585
40564
|
}
|
|
39586
40565
|
}
|
|
39587
40566
|
requestQueue.abortRequestsByConnectId(connectId);
|
|
@@ -39604,7 +40583,7 @@ const cancel = (context, connectId) => {
|
|
|
39604
40583
|
device === null || device === void 0 ? void 0 : device.interruptionFromUser();
|
|
39605
40584
|
canceledDevices.push(device);
|
|
39606
40585
|
}
|
|
39607
|
-
requestQueue.rejectRequest(requestId, hardwareShared.ERRORS.TypedError(hardwareShared.HardwareErrorCode.
|
|
40586
|
+
requestQueue.rejectRequest(requestId, hardwareShared.ERRORS.TypedError(hardwareShared.HardwareErrorCode.CallQueueActionCancelled));
|
|
39608
40587
|
}
|
|
39609
40588
|
}
|
|
39610
40589
|
}
|
|
@@ -39616,7 +40595,7 @@ const cancel = (context, connectId) => {
|
|
|
39616
40595
|
}
|
|
39617
40596
|
});
|
|
39618
40597
|
requestQueue.getRequestTasksId().forEach(requestId => {
|
|
39619
|
-
requestQueue.rejectRequest(requestId, hardwareShared.ERRORS.TypedError(hardwareShared.HardwareErrorCode.
|
|
40598
|
+
requestQueue.rejectRequest(requestId, hardwareShared.ERRORS.TypedError(hardwareShared.HardwareErrorCode.CallQueueActionCancelled));
|
|
39620
40599
|
});
|
|
39621
40600
|
}
|
|
39622
40601
|
}
|
|
@@ -39723,7 +40702,19 @@ const onSelectDeviceInBootloaderForWebDeviceHandler = (...[device, callback]) =>
|
|
|
39723
40702
|
const uiResp = yield uiPromise.promise;
|
|
39724
40703
|
callback(null, uiResp.payload.deviceId);
|
|
39725
40704
|
});
|
|
40705
|
+
const onSelectDeviceForSwitchFirmwareWebDeviceHandler = (...[device, callback]) => __awaiter(void 0, void 0, void 0, function* () {
|
|
40706
|
+
Log.debug('onSelectDeviceForSwitchFirmwareWebDeviceHandler');
|
|
40707
|
+
const uiPromise = createUiPromise(UI_RESPONSE.SELECT_DEVICE_FOR_SWITCH_FIRMWARE_WEB_DEVICE, device);
|
|
40708
|
+
postMessage(createUiMessage(UI_REQUEST.REQUEST_DEVICE_FOR_SWITCH_FIRMWARE_WEB_DEVICE, {
|
|
40709
|
+
device: device.toMessageObject(),
|
|
40710
|
+
}));
|
|
40711
|
+
const uiResp = yield uiPromise.promise;
|
|
40712
|
+
callback(null, uiResp.payload.deviceId);
|
|
40713
|
+
});
|
|
39726
40714
|
const postMessage = (message) => {
|
|
40715
|
+
if (!_core) {
|
|
40716
|
+
return;
|
|
40717
|
+
}
|
|
39727
40718
|
_core.emit(CORE_EVENT, message);
|
|
39728
40719
|
};
|
|
39729
40720
|
const createUiPromise = (promiseEvent, device) => {
|
|
@@ -39737,12 +40728,17 @@ const removeUiPromise = (promise) => {
|
|
|
39737
40728
|
};
|
|
39738
40729
|
class Core extends events.exports {
|
|
39739
40730
|
constructor() {
|
|
39740
|
-
super(
|
|
40731
|
+
super();
|
|
39741
40732
|
this.requestQueue = new RequestQueue();
|
|
39742
40733
|
this.methodSynchronize = getSynchronize();
|
|
40734
|
+
this.tracingContext = createSdkTracingContext();
|
|
40735
|
+
this.sdkInstanceId = this.tracingContext.sdkInstanceId;
|
|
40736
|
+
Log.debug(`[Core] Created SDK instance: ${this.sdkInstanceId}`);
|
|
39743
40737
|
}
|
|
39744
40738
|
getCoreContext() {
|
|
39745
40739
|
return {
|
|
40740
|
+
sdkInstanceId: this.sdkInstanceId,
|
|
40741
|
+
tracingContext: this.tracingContext,
|
|
39746
40742
|
requestQueue: this.requestQueue,
|
|
39747
40743
|
methodSynchronize: this.methodSynchronize,
|
|
39748
40744
|
getPrePendingCallPromise: () => this.prePendingCallPromise,
|
|
@@ -39762,7 +40758,8 @@ class Core extends events.exports {
|
|
|
39762
40758
|
switch (message.type) {
|
|
39763
40759
|
case UI_RESPONSE.RECEIVE_PIN:
|
|
39764
40760
|
case UI_RESPONSE.RECEIVE_PASSPHRASE:
|
|
39765
|
-
case UI_RESPONSE.SELECT_DEVICE_IN_BOOTLOADER_FOR_WEB_DEVICE:
|
|
40761
|
+
case UI_RESPONSE.SELECT_DEVICE_IN_BOOTLOADER_FOR_WEB_DEVICE:
|
|
40762
|
+
case UI_RESPONSE.SELECT_DEVICE_FOR_SWITCH_FIRMWARE_WEB_DEVICE: {
|
|
39766
40763
|
const uiPromise = findUiPromise(message.type);
|
|
39767
40764
|
if (uiPromise) {
|
|
39768
40765
|
Log.log('receive UI Response: ', message.type);
|
|
@@ -39805,6 +40802,10 @@ class Core extends events.exports {
|
|
|
39805
40802
|
});
|
|
39806
40803
|
}
|
|
39807
40804
|
dispose() {
|
|
40805
|
+
_deviceList = undefined;
|
|
40806
|
+
_connector = undefined;
|
|
40807
|
+
Log.debug(`[Core] Disposing SDK instance: ${this.sdkInstanceId}`);
|
|
40808
|
+
cleanupSdkInstance(this.sdkInstanceId);
|
|
39808
40809
|
}
|
|
39809
40810
|
}
|
|
39810
40811
|
const initCore = () => {
|
|
@@ -39825,7 +40826,7 @@ const init = (settings, Transport, plugin) => __awaiter(void 0, void 0, void 0,
|
|
|
39825
40826
|
yield DataManager.load(settings);
|
|
39826
40827
|
initTransport(Transport, plugin);
|
|
39827
40828
|
}
|
|
39828
|
-
catch (
|
|
40829
|
+
catch (_m) {
|
|
39829
40830
|
Log.error('DataManager.load error');
|
|
39830
40831
|
}
|
|
39831
40832
|
enableLog(DataManager.getSettings('debug'));
|
|
@@ -39899,18 +40900,28 @@ exports.UI_RESPONSE = UI_RESPONSE;
|
|
|
39899
40900
|
exports.checkNeedUpdateBootForClassicAndMini = checkNeedUpdateBootForClassicAndMini;
|
|
39900
40901
|
exports.checkNeedUpdateBootForTouch = checkNeedUpdateBootForTouch;
|
|
39901
40902
|
exports.cleanupCallback = cleanupCallback;
|
|
40903
|
+
exports.cleanupSdkInstance = cleanupSdkInstance;
|
|
40904
|
+
exports.completeRequestContext = completeRequestContext;
|
|
39902
40905
|
exports.corsValidator = corsValidator;
|
|
39903
40906
|
exports.createDeviceMessage = createDeviceMessage;
|
|
39904
40907
|
exports.createErrorMessage = createErrorMessage;
|
|
39905
40908
|
exports.createFirmwareMessage = createFirmwareMessage;
|
|
39906
40909
|
exports.createIFrameMessage = createIFrameMessage;
|
|
39907
40910
|
exports.createLogMessage = createLogMessage;
|
|
40911
|
+
exports.createRequestContext = createRequestContext;
|
|
39908
40912
|
exports.createResponseMessage = createResponseMessage;
|
|
40913
|
+
exports.createSdkTracingContext = createSdkTracingContext;
|
|
39909
40914
|
exports.createUiMessage = createUiMessage;
|
|
39910
40915
|
exports.createUiResponse = createUiResponse;
|
|
39911
40916
|
exports["default"] = HardwareSdk;
|
|
39912
40917
|
exports.enableLog = enableLog;
|
|
39913
40918
|
exports.executeCallback = executeCallback;
|
|
40919
|
+
exports.formatRequestContext = formatRequestContext;
|
|
40920
|
+
exports.generateInstanceId = generateInstanceId;
|
|
40921
|
+
exports.generateSdkInstanceId = generateSdkInstanceId;
|
|
40922
|
+
exports.getActiveRequestsByDeviceInstance = getActiveRequestsByDeviceInstance;
|
|
40923
|
+
exports.getAutoLockOptions = getAutoLockOptions;
|
|
40924
|
+
exports.getAutoShutDownOptions = getAutoShutDownOptions;
|
|
39914
40925
|
exports.getDeviceBLEFirmwareVersion = getDeviceBLEFirmwareVersion;
|
|
39915
40926
|
exports.getDeviceBleName = getDeviceBleName;
|
|
39916
40927
|
exports.getDeviceBoardloaderVersion = getDeviceBoardloaderVersion;
|
|
@@ -39928,6 +40939,7 @@ exports.getHDPath = getHDPath;
|
|
|
39928
40939
|
exports.getHomeScreenDefaultList = getHomeScreenDefaultList;
|
|
39929
40940
|
exports.getHomeScreenHex = getHomeScreenHex;
|
|
39930
40941
|
exports.getHomeScreenSize = getHomeScreenSize;
|
|
40942
|
+
exports.getLanguageConfig = getLanguageConfig;
|
|
39931
40943
|
exports.getLog = getLog;
|
|
39932
40944
|
exports.getLogger = getLogger;
|
|
39933
40945
|
exports.getMethodVersionRange = getMethodVersionRange;
|
|
@@ -39948,6 +40960,7 @@ exports.safeThrowError = safeThrowError;
|
|
|
39948
40960
|
exports.setLoggerPostMessage = setLoggerPostMessage;
|
|
39949
40961
|
exports.supportInputPinOnSoftware = supportInputPinOnSoftware;
|
|
39950
40962
|
exports.switchTransport = switchTransport;
|
|
40963
|
+
exports.updateRequestContext = updateRequestContext;
|
|
39951
40964
|
exports.versionCompare = versionCompare;
|
|
39952
40965
|
exports.versionSplit = versionSplit;
|
|
39953
40966
|
exports.wait = wait;
|