@onekeyfe/hd-core 1.2.0-alpha.2 → 1.2.0-alpha.20
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/__tests__/AllNetworkGetAddressBase.tracing.test.ts +75 -0
- package/__tests__/DeviceCommands.test.ts +285 -0
- package/__tests__/DeviceEventRegistration.test.ts +43 -0
- package/__tests__/RequestQueue.test.ts +140 -0
- package/__tests__/UploadPortfolio.test.ts +46 -0
- package/__tests__/connectSettings.test.ts +19 -0
- package/__tests__/core-dispose.test.ts +34 -0
- package/__tests__/core-error-output.test.ts +39 -0
- package/__tests__/device-features-state.test.ts +78 -0
- package/__tests__/device-identity.test.ts +30 -0
- package/__tests__/device-lifecycle-events.test.ts +117 -0
- package/__tests__/device-pool-state.test.ts +132 -0
- package/__tests__/device-settings.test.ts +286 -0
- package/__tests__/device-state-contract.test.ts +27 -0
- package/__tests__/device-state-events.test.ts +162 -0
- package/__tests__/device-state-mapper.test.ts +229 -0
- package/__tests__/device-state-projector.test.ts +94 -0
- package/__tests__/device-state-store.test.ts +82 -0
- package/__tests__/device-utils.test.ts +106 -0
- package/__tests__/device-wallet-session-store.test.ts +213 -0
- package/__tests__/deviceFeaturesUtils.test.ts +39 -0
- package/__tests__/deviceSettings.test.ts +63 -0
- package/__tests__/evmLedgerLegacySafety.test.ts +4 -1
- package/__tests__/evmSignTypedData.test.ts +80 -0
- package/__tests__/filesystemValidation.test.ts +53 -0
- package/__tests__/firmware-update/firmware-update-v2-download-before-boot.test.ts +402 -0
- package/__tests__/get-device-state.test.ts +403 -0
- package/__tests__/homescreen.test.ts +24 -0
- package/__tests__/kaspaSignTransaction.test.ts +591 -0
- package/__tests__/logBlockEvent.test.ts +26 -0
- package/__tests__/networkUtils.test.ts +386 -0
- package/__tests__/open-wallet-session-error-response.test.ts +43 -0
- package/__tests__/open-wallet-session.test.ts +559 -0
- package/__tests__/preInitialize.test.ts +33 -0
- package/__tests__/pro2Wallpaper.test.ts +50 -0
- package/__tests__/protocol-v2-bootloader-mode.test.ts +37 -0
- package/__tests__/protocol-v2-firmware-targets.test.ts +19 -0
- package/__tests__/protocol-v2.test.ts +4054 -1178
- package/__tests__/protocolV2FileWrite.test.ts +92 -0
- package/__tests__/protocolV2UiInteraction.test.ts +266 -0
- package/__tests__/public-device-state-api.test.ts +253 -0
- package/__tests__/public-pro2-api-boundary.test.ts +91 -0
- package/__tests__/refresh-device-state.test.ts +101 -0
- package/__tests__/request-context-logging.test.ts +16 -0
- package/__tests__/search-devices.test.ts +136 -0
- package/dist/api/BaseMethod.d.ts +11 -0
- package/dist/api/BaseMethod.d.ts.map +1 -1
- package/dist/api/CheckBootloaderRelease.d.ts.map +1 -1
- package/dist/api/CheckFirmwareRelease.d.ts.map +1 -1
- package/dist/api/ClearSessionCache.d.ts +9 -0
- package/dist/api/ClearSessionCache.d.ts.map +1 -0
- package/dist/api/DirList.d.ts.map +1 -1
- package/dist/api/FileRead.d.ts.map +1 -1
- package/dist/api/FileWrite.d.ts +1 -0
- package/dist/api/FileWrite.d.ts.map +1 -1
- package/dist/api/FirmwareUpdateV2.d.ts +2 -2
- package/dist/api/FirmwareUpdateV2.d.ts.map +1 -1
- package/dist/api/FirmwareUpdateV3.d.ts.map +1 -1
- package/dist/api/FirmwareUpdateV4.d.ts +25 -5
- package/dist/api/FirmwareUpdateV4.d.ts.map +1 -1
- package/dist/api/GetDeviceState.d.ts +7 -0
- package/dist/api/GetDeviceState.d.ts.map +1 -0
- package/dist/api/GetFeatures.d.ts +1 -1
- package/dist/api/GetFeatures.d.ts.map +1 -1
- package/dist/api/GetOnekeyFeatures.d.ts.map +1 -1
- package/dist/api/GetPassphraseState.d.ts +1 -6
- package/dist/api/GetPassphraseState.d.ts.map +1 -1
- package/dist/api/OpenWalletSession.d.ts +14 -0
- package/dist/api/OpenWalletSession.d.ts.map +1 -0
- package/dist/api/PathInfo.d.ts.map +1 -1
- package/dist/api/PromptWebDeviceAccess.d.ts.map +1 -1
- package/dist/api/SearchDevices.d.ts +3 -0
- package/dist/api/SearchDevices.d.ts.map +1 -1
- package/dist/api/UploadPortfolio.d.ts +18 -0
- package/dist/api/UploadPortfolio.d.ts.map +1 -0
- package/dist/api/allnetwork/AllNetworkGetAddressBase.d.ts.map +1 -1
- package/dist/api/device/DeviceCancel.d.ts.map +1 -1
- package/dist/api/device/DeviceChangePin.d.ts.map +1 -1
- package/dist/api/device/DeviceFullyUploadResource.d.ts +1 -2
- package/dist/api/device/DeviceFullyUploadResource.d.ts.map +1 -1
- package/dist/api/device/DeviceLock.d.ts.map +1 -1
- package/dist/api/device/DeviceRebootToBoardloader.d.ts.map +1 -1
- package/dist/api/device/DeviceRebootToBootloader.d.ts.map +1 -1
- package/dist/api/device/DeviceSettings.d.ts.map +1 -1
- package/dist/api/device/DeviceUnlock.d.ts.map +1 -1
- package/dist/api/device/DeviceUpdateBootloader.d.ts.map +1 -1
- package/dist/api/device/DeviceWipe.d.ts.map +1 -1
- package/dist/api/evm/EVMSignTypedData.d.ts.map +1 -1
- package/dist/api/firmware/FirmwareUpdateBaseMethod.d.ts +1 -0
- package/dist/api/firmware/FirmwareUpdateBaseMethod.d.ts.map +1 -1
- package/dist/api/firmware/getBinary.d.ts +11 -3
- package/dist/api/firmware/getBinary.d.ts.map +1 -1
- package/dist/api/firmware/progressThrottle.d.ts +3 -0
- package/dist/api/firmware/progressThrottle.d.ts.map +1 -0
- package/dist/api/helpers/filesystemValidation.d.ts +3 -0
- package/dist/api/helpers/filesystemValidation.d.ts.map +1 -1
- package/dist/api/helpers/paramsValidator.d.ts +1 -0
- package/dist/api/helpers/paramsValidator.d.ts.map +1 -1
- package/dist/api/helpers/protocolV2FileWrite.d.ts +33 -0
- package/dist/api/helpers/protocolV2FileWrite.d.ts.map +1 -0
- package/dist/api/index.d.ts +15 -19
- package/dist/api/index.d.ts.map +1 -1
- package/dist/api/kaspa/KaspaSignTransaction.d.ts +5 -1
- package/dist/api/kaspa/KaspaSignTransaction.d.ts.map +1 -1
- package/dist/api/kaspa/helpers/TransferSerialize.d.ts.map +1 -1
- package/dist/api/protocol-v2/DeviceFactoryInfoGet.d.ts +6 -0
- package/dist/api/protocol-v2/DeviceFactoryInfoGet.d.ts.map +1 -0
- package/dist/api/protocol-v2/DeviceFactoryInfoSet.d.ts +7 -0
- package/dist/api/protocol-v2/DeviceFactoryInfoSet.d.ts.map +1 -0
- package/dist/api/protocol-v2/DeviceFirmwareUpdate.d.ts +1 -1
- package/dist/api/protocol-v2/DeviceFirmwareUpdate.d.ts.map +1 -1
- package/dist/api/protocol-v2/DeviceGetFirmwareUpdateStatus.d.ts +3 -2
- package/dist/api/protocol-v2/DeviceGetFirmwareUpdateStatus.d.ts.map +1 -1
- package/dist/api/protocol-v2/DeviceGetOnboardingStatus.d.ts +1 -1
- package/dist/api/protocol-v2/DeviceGetOnboardingStatus.d.ts.map +1 -1
- package/dist/api/protocol-v2/DeviceInfoGet.d.ts +28 -0
- package/dist/api/protocol-v2/DeviceInfoGet.d.ts.map +1 -0
- package/dist/api/protocol-v2/DeviceReboot.d.ts.map +1 -1
- package/dist/api/protocol-v2/DeviceSettingsGet.d.ts +6 -0
- package/dist/api/protocol-v2/DeviceSettingsGet.d.ts.map +1 -0
- package/dist/api/protocol-v2/DeviceSettingsPageShow.d.ts +16 -0
- package/dist/api/protocol-v2/DeviceSettingsPageShow.d.ts.map +1 -0
- package/dist/api/protocol-v2/DeviceSettingsSet.d.ts +12 -0
- package/dist/api/protocol-v2/DeviceSettingsSet.d.ts.map +1 -0
- package/dist/api/protocol-v2/DeviceStatusGet.d.ts +6 -0
- package/dist/api/protocol-v2/DeviceStatusGet.d.ts.map +1 -0
- package/dist/api/protocol-v2/DeviceUploadWallpaper.d.ts +26 -0
- package/dist/api/protocol-v2/DeviceUploadWallpaper.d.ts.map +1 -0
- package/dist/api/protocol-v2/FilesystemFormat.d.ts.map +1 -1
- package/dist/api/protocol-v2/{FilesystemFixPermission.d.ts → FilesystemPermissionFix.d.ts} +2 -2
- package/dist/api/protocol-v2/FilesystemPermissionFix.d.ts.map +1 -0
- package/dist/api/protocol-v2/ProtocolInfoRequest.d.ts +6 -0
- package/dist/api/protocol-v2/ProtocolInfoRequest.d.ts.map +1 -0
- package/dist/api/protocol-v2/helpers.d.ts +27 -19
- package/dist/api/protocol-v2/helpers.d.ts.map +1 -1
- package/dist/api/ton/TonSignData.d.ts +1 -5
- package/dist/api/ton/TonSignData.d.ts.map +1 -1
- package/dist/api/utils.d.ts +2 -1
- package/dist/api/utils.d.ts.map +1 -1
- package/dist/constants/index.d.ts +2 -1
- package/dist/constants/index.d.ts.map +1 -1
- package/dist/core/RequestQueue.d.ts +19 -1
- package/dist/core/RequestQueue.d.ts.map +1 -1
- package/dist/core/deviceEventRegistration.d.ts +11 -0
- package/dist/core/deviceEventRegistration.d.ts.map +1 -0
- package/dist/core/index.d.ts +4 -1
- package/dist/core/index.d.ts.map +1 -1
- package/dist/data-manager/DataManager.d.ts +1 -1
- package/dist/data-manager/DataManager.d.ts.map +1 -1
- package/dist/data-manager/connectSettings.d.ts.map +1 -1
- package/dist/device/Device.d.ts +34 -10
- 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/DeviceFeaturesState.d.ts +4 -0
- package/dist/device/DeviceFeaturesState.d.ts.map +1 -0
- package/dist/device/DevicePool.d.ts +4 -2
- package/dist/device/DevicePool.d.ts.map +1 -1
- package/dist/device/DeviceStateMapper.d.ts +13 -0
- package/dist/device/DeviceStateMapper.d.ts.map +1 -0
- package/dist/device/DeviceStateProjector.d.ts +7 -0
- package/dist/device/DeviceStateProjector.d.ts.map +1 -0
- package/dist/device/DeviceStateStore.d.ts +21 -0
- package/dist/device/DeviceStateStore.d.ts.map +1 -0
- package/dist/device/DeviceWalletSessionStore.d.ts +20 -0
- package/dist/device/DeviceWalletSessionStore.d.ts.map +1 -0
- package/dist/device/cloneDeviceState.d.ts +2 -0
- package/dist/device/cloneDeviceState.d.ts.map +1 -0
- package/dist/device/deviceIdentity.d.ts +5 -0
- package/dist/device/deviceIdentity.d.ts.map +1 -0
- package/dist/deviceProfile/buildDeviceFeatures.d.ts +9 -3
- package/dist/deviceProfile/buildDeviceFeatures.d.ts.map +1 -1
- package/dist/deviceProfile/index.d.ts +0 -1
- package/dist/deviceProfile/index.d.ts.map +1 -1
- package/dist/events/call.d.ts +7 -0
- package/dist/events/call.d.ts.map +1 -1
- package/dist/events/core.d.ts +2 -2
- package/dist/events/core.d.ts.map +1 -1
- package/dist/events/device.d.ts +11 -2
- package/dist/events/device.d.ts.map +1 -1
- package/dist/events/iframe.d.ts +1 -0
- package/dist/events/iframe.d.ts.map +1 -1
- package/dist/events/logBlockEvent.d.ts.map +1 -1
- package/dist/events/ui-request.d.ts +18 -2
- package/dist/events/ui-request.d.ts.map +1 -1
- package/dist/index.d.ts +1351 -603
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +5995 -2816
- package/dist/inject.d.ts +3 -2
- package/dist/inject.d.ts.map +1 -1
- package/dist/lowLevelInject.d.ts +2 -1
- package/dist/lowLevelInject.d.ts.map +1 -1
- package/dist/protocols/protocol-v2/deviceSession.d.ts +7 -0
- package/dist/protocols/protocol-v2/deviceSession.d.ts.map +1 -0
- package/dist/protocols/protocol-v2/features.d.ts +23 -28
- package/dist/protocols/protocol-v2/features.d.ts.map +1 -1
- package/dist/protocols/protocol-v2/firmware.d.ts +11 -9
- package/dist/protocols/protocol-v2/firmware.d.ts.map +1 -1
- package/dist/protocols/protocol-v2/index.d.ts +3 -2
- package/dist/protocols/protocol-v2/index.d.ts.map +1 -1
- package/dist/protocols/protocol-v2/lockedError.d.ts +2 -0
- package/dist/protocols/protocol-v2/lockedError.d.ts.map +1 -0
- package/dist/protocols/protocol-v2/settingsUnlockPolicy.d.ts +16 -0
- package/dist/protocols/protocol-v2/settingsUnlockPolicy.d.ts.map +1 -0
- package/dist/protocols/protocol-v2/uiInteraction.d.ts +39 -0
- package/dist/protocols/protocol-v2/uiInteraction.d.ts.map +1 -0
- package/dist/protocols/protocol-v2/unlockRetry.d.ts +11 -0
- package/dist/protocols/protocol-v2/unlockRetry.d.ts.map +1 -0
- package/dist/protocols/protocol-v2/walletSession.d.ts +19 -0
- package/dist/protocols/protocol-v2/walletSession.d.ts.map +1 -0
- package/dist/topLevelInject.d.ts.map +1 -1
- package/dist/types/api/checkAllFirmwareRelease.d.ts +1 -2
- package/dist/types/api/checkAllFirmwareRelease.d.ts.map +1 -1
- package/dist/types/api/deviceSettings.d.ts +9 -0
- 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/firmwareUpdate.d.ts +6 -6
- package/dist/types/api/firmwareUpdate.d.ts.map +1 -1
- package/dist/types/api/getDeviceState.d.ts +12 -0
- package/dist/types/api/getDeviceState.d.ts.map +1 -0
- package/dist/types/api/getFeatures.d.ts.map +1 -1
- package/dist/types/api/getOnekeyFeatures.d.ts.map +1 -1
- package/dist/types/api/getPassphraseState.d.ts +2 -10
- package/dist/types/api/getPassphraseState.d.ts.map +1 -1
- package/dist/types/api/index.d.ts +26 -25
- package/dist/types/api/index.d.ts.map +1 -1
- package/dist/types/api/kaspaSignTransaction.d.ts +27 -2
- package/dist/types/api/kaspaSignTransaction.d.ts.map +1 -1
- package/dist/types/api/openWalletSession.d.ts +41 -0
- package/dist/types/api/openWalletSession.d.ts.map +1 -0
- package/dist/types/api/protocolV2.d.ts +31 -28
- package/dist/types/api/protocolV2.d.ts.map +1 -1
- package/dist/types/api/sessionCache.d.ts +10 -0
- package/dist/types/api/sessionCache.d.ts.map +1 -0
- package/dist/types/device.d.ts +120 -4
- 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 +21 -1
- package/dist/types/settings.d.ts.map +1 -1
- package/dist/utils/assets.d.ts +2 -1
- package/dist/utils/assets.d.ts.map +1 -1
- package/dist/utils/deviceFeaturesCompat.d.ts +13 -0
- package/dist/utils/deviceFeaturesCompat.d.ts.map +1 -0
- package/dist/utils/deviceFeaturesUtils.d.ts +13 -3
- package/dist/utils/deviceFeaturesUtils.d.ts.map +1 -1
- package/dist/utils/deviceInfoUtils.d.ts +9 -8
- package/dist/utils/deviceInfoUtils.d.ts.map +1 -1
- package/dist/utils/deviceSettings.d.ts +2 -0
- package/dist/utils/deviceSettings.d.ts.map +1 -1
- package/dist/utils/deviceVersionUtils.d.ts +6 -5
- package/dist/utils/deviceVersionUtils.d.ts.map +1 -1
- package/dist/utils/homescreen.d.ts.map +1 -1
- package/dist/utils/index.d.ts +3 -1
- package/dist/utils/index.d.ts.map +1 -1
- package/dist/utils/networkUtils.d.ts +9 -1
- package/dist/utils/networkUtils.d.ts.map +1 -1
- package/dist/utils/patch.d.ts +1 -1
- package/dist/utils/patch.d.ts.map +1 -1
- package/dist/utils/pro2Wallpaper.d.ts +12 -0
- package/dist/utils/pro2Wallpaper.d.ts.map +1 -0
- package/dist/utils/tracing.d.ts.map +1 -1
- package/package.json +4 -4
- package/src/api/BaseMethod.ts +40 -7
- package/src/api/CheckBootloaderRelease.ts +1 -2
- package/src/api/CheckFirmwareRelease.ts +1 -2
- package/src/api/ClearSessionCache.ts +28 -0
- package/src/api/DirList.ts +5 -3
- package/src/api/DirMake.ts +3 -3
- package/src/api/DirRemove.ts +3 -3
- package/src/api/FileDelete.ts +3 -3
- package/src/api/FileRead.ts +23 -7
- package/src/api/FileWrite.ts +23 -168
- package/src/api/FirmwareUpdate.ts +4 -4
- package/src/api/FirmwareUpdateV2.ts +133 -45
- package/src/api/FirmwareUpdateV3.ts +3 -5
- package/src/api/FirmwareUpdateV4.ts +1138 -357
- package/src/api/GetDeviceState.ts +55 -0
- package/src/api/GetFeatures.ts +8 -3
- package/src/api/GetOnekeyFeatures.ts +3 -72
- package/src/api/GetPassphraseState.ts +11 -18
- package/src/api/OpenWalletSession.ts +221 -0
- package/src/api/PathInfo.ts +5 -3
- package/src/api/PromptWebDeviceAccess.ts +2 -3
- package/src/api/SearchDevices.ts +29 -4
- package/src/api/UploadPortfolio.ts +50 -0
- package/src/api/alephium/AlephiumSignTransaction.ts +2 -2
- package/src/api/allnetwork/AllNetworkGetAddressBase.ts +4 -8
- package/src/api/benfen/BenfenGetAddress.ts +1 -1
- package/src/api/btc/BTCGetPublicKey.ts +1 -1
- package/src/api/cardano/CardanoSignMessage.ts +1 -1
- package/src/api/cardano/CardanoSignTransaction.ts +1 -1
- package/src/api/device/DeviceCancel.ts +1 -0
- package/src/api/device/DeviceChangePin.ts +24 -0
- package/src/api/device/DeviceFullyUploadResource.ts +4 -5
- package/src/api/device/DeviceLock.ts +1 -0
- package/src/api/device/DeviceRebootToBoardloader.ts +5 -4
- package/src/api/device/DeviceRebootToBootloader.ts +5 -4
- package/src/api/device/DeviceSettings.ts +121 -0
- package/src/api/device/DeviceUnlock.ts +9 -0
- package/src/api/device/DeviceUpdateBootloader.ts +1 -2
- package/src/api/device/DeviceWipe.ts +19 -0
- package/src/api/evm/EVMSignTypedData.ts +3 -5
- package/src/api/evm/legacyV1/getAddress.ts +2 -2
- package/src/api/evm/legacyV1/getPublicKey.ts +2 -2
- package/src/api/evm/legacyV1/signMessage.ts +2 -2
- package/src/api/evm/legacyV1/signTypedData.ts +2 -2
- package/src/api/evm/legacyV1/signTypedHash.ts +2 -2
- package/src/api/evm/legacyV1/verifyMessage.ts +2 -2
- package/src/api/firmware/FirmwareUpdateBaseMethod.ts +21 -7
- package/src/api/firmware/getBinary.ts +8 -3
- package/src/api/firmware/progressThrottle.ts +44 -0
- package/src/api/helpers/batchGetPublickeys.ts +2 -2
- package/src/api/helpers/filesystemValidation.ts +61 -0
- package/src/api/helpers/paramsValidator.ts +1 -1
- package/src/api/helpers/protocolV2FileWrite.ts +193 -0
- package/src/api/index.ts +17 -20
- package/src/api/kaspa/KaspaSignTransaction.ts +341 -22
- package/src/api/kaspa/helpers/TransferSerialize.ts +14 -0
- package/src/api/nervos/NervosSignTransaction.ts +2 -2
- package/src/api/nexa/NexaSignTransaction.ts +1 -1
- package/src/api/protocol-v2/{FactoryGetDeviceInfo.ts → DeviceFactoryInfoGet.ts} +4 -4
- package/src/api/protocol-v2/DeviceFactoryInfoSet.ts +32 -0
- package/src/api/protocol-v2/DeviceFirmwareUpdate.ts +7 -9
- package/src/api/protocol-v2/DeviceGetFirmwareUpdateStatus.ts +41 -6
- package/src/api/protocol-v2/DeviceGetOnboardingStatus.ts +6 -4
- package/src/api/protocol-v2/DeviceInfoGet.ts +145 -0
- package/src/api/protocol-v2/DeviceReboot.ts +5 -3
- package/src/api/protocol-v2/DeviceSettingsGet.ts +18 -0
- package/src/api/protocol-v2/DeviceSettingsPageShow.ts +70 -0
- package/src/api/protocol-v2/DeviceSettingsSet.ts +44 -0
- package/src/api/protocol-v2/DeviceStatusGet.ts +16 -0
- package/src/api/protocol-v2/DeviceUploadWallpaper.ts +131 -0
- package/src/api/protocol-v2/FilesystemFormat.ts +5 -2
- package/src/api/protocol-v2/{FilesystemFixPermission.ts → FilesystemPermissionFix.ts} +3 -3
- package/src/api/protocol-v2/Ping.ts +1 -1
- package/src/api/protocol-v2/{GetProtoVersion.ts → ProtocolInfoRequest.ts} +3 -3
- package/src/api/protocol-v2/helpers.ts +58 -62
- package/src/api/ton/TonSignData.ts +1 -5
- package/src/api/utils.ts +7 -3
- package/src/constants/index.ts +7 -1
- package/src/core/RequestQueue.ts +124 -4
- package/src/core/deviceEventRegistration.ts +23 -0
- package/src/core/index.ts +171 -60
- package/src/data/messages/messages-protocol-v2.json +825 -709
- package/src/data/messages/messages.json +286 -1
- package/src/data-manager/DataManager.ts +13 -6
- package/src/data-manager/connectSettings.ts +4 -0
- package/src/device/Device.ts +480 -192
- package/src/device/DeviceCommands.ts +81 -25
- package/src/device/DeviceFeaturesState.ts +34 -0
- package/src/device/DevicePool.ts +67 -19
- package/src/device/DeviceStateMapper.ts +348 -0
- package/src/device/DeviceStateProjector.ts +95 -0
- package/src/device/DeviceStateStore.ts +201 -0
- package/src/device/DeviceWalletSessionStore.ts +105 -0
- package/src/device/cloneDeviceState.ts +39 -0
- package/src/device/deviceIdentity.ts +18 -0
- package/src/deviceProfile/buildDeviceFeatures.ts +233 -209
- package/src/deviceProfile/index.ts +0 -1
- package/src/events/call.ts +6 -0
- package/src/events/core.ts +2 -0
- package/src/events/device.ts +17 -1
- package/src/events/iframe.ts +1 -0
- package/src/events/logBlockEvent.ts +8 -1
- package/src/events/ui-request.ts +24 -2
- package/src/index.ts +4 -0
- package/src/inject.ts +33 -34
- package/src/lowLevelInject.ts +3 -0
- package/src/protocols/protocol-v2/deviceSession.ts +24 -0
- package/src/protocols/protocol-v2/features.ts +68 -82
- package/src/protocols/protocol-v2/firmware.ts +12 -36
- package/src/protocols/protocol-v2/index.ts +3 -1
- package/src/protocols/protocol-v2/lockedError.ts +10 -0
- package/src/protocols/protocol-v2/settingsUnlockPolicy.ts +61 -0
- package/src/protocols/protocol-v2/uiInteraction.ts +210 -0
- package/src/protocols/protocol-v2/unlockRetry.ts +76 -0
- package/src/protocols/protocol-v2/walletSession.ts +107 -0
- package/src/topLevelInject.ts +2 -0
- package/src/types/api/checkAllFirmwareRelease.ts +1 -2
- package/src/types/api/deviceSettings.ts +9 -0
- package/src/types/api/deviceUnlock.ts +1 -1
- package/src/types/api/firmwareUpdate.ts +28 -20
- package/src/types/api/getDeviceState.ts +19 -0
- package/src/types/api/getFeatures.ts +3 -0
- package/src/types/api/getOnekeyFeatures.ts +3 -0
- package/src/types/api/getPassphraseState.ts +8 -11
- package/src/types/api/index.ts +37 -53
- package/src/types/api/kaspaSignTransaction.ts +40 -2
- package/src/types/api/openWalletSession.ts +64 -0
- package/src/types/api/protocolV2.ts +88 -54
- package/src/types/api/sessionCache.ts +14 -0
- package/src/types/device.ts +167 -3
- package/src/types/params.ts +4 -0
- package/src/types/settings.ts +42 -30
- package/src/utils/assets.ts +4 -1
- package/src/utils/deviceFeaturesCompat.ts +173 -0
- package/src/utils/deviceFeaturesUtils.ts +68 -24
- package/src/utils/deviceInfoUtils.ts +26 -64
- package/src/utils/deviceSettings.ts +48 -0
- package/src/utils/deviceVersionUtils.ts +25 -44
- package/src/utils/findDefectiveBatchDevice.ts +3 -3
- package/src/utils/homescreen.ts +10 -0
- package/src/utils/index.ts +3 -0
- package/src/utils/networkUtils.ts +270 -14
- package/src/utils/pro2Wallpaper.ts +109 -0
- package/src/utils/tracing.ts +3 -1
- package/dist/api/GetDeviceInfo.d.ts +0 -9
- package/dist/api/GetDeviceInfo.d.ts.map +0 -1
- package/dist/api/protocol-v2/DevReboot.d.ts +0 -7
- package/dist/api/protocol-v2/DevReboot.d.ts.map +0 -1
- package/dist/api/protocol-v2/DeviceGetDeviceInfo.d.ts +0 -29
- package/dist/api/protocol-v2/DeviceGetDeviceInfo.d.ts.map +0 -1
- package/dist/api/protocol-v2/FactoryDeviceInfoSettings.d.ts +0 -7
- package/dist/api/protocol-v2/FactoryDeviceInfoSettings.d.ts.map +0 -1
- package/dist/api/protocol-v2/FactoryGetDeviceInfo.d.ts +0 -6
- package/dist/api/protocol-v2/FactoryGetDeviceInfo.d.ts.map +0 -1
- package/dist/api/protocol-v2/FilesystemDiskControl.d.ts +0 -13
- package/dist/api/protocol-v2/FilesystemDiskControl.d.ts.map +0 -1
- package/dist/api/protocol-v2/FilesystemFixPermission.d.ts.map +0 -1
- package/dist/api/protocol-v2/GetProtoVersion.d.ts +0 -6
- package/dist/api/protocol-v2/GetProtoVersion.d.ts.map +0 -1
- package/dist/deviceProfile/buildDeviceProfile.d.ts +0 -21
- package/dist/deviceProfile/buildDeviceProfile.d.ts.map +0 -1
- package/dist/types/api/getDeviceInfo.d.ts +0 -85
- package/dist/types/api/getDeviceInfo.d.ts.map +0 -1
- package/src/api/GetDeviceInfo.ts +0 -145
- package/src/api/protocol-v2/DevReboot.ts +0 -24
- package/src/api/protocol-v2/DeviceGetDeviceInfo.ts +0 -118
- package/src/api/protocol-v2/FactoryDeviceInfoSettings.ts +0 -29
- package/src/api/protocol-v2/FilesystemDiskControl.ts +0 -50
- package/src/deviceProfile/buildDeviceProfile.ts +0 -334
- package/src/types/api/getDeviceInfo.ts +0 -99
package/src/events/device.ts
CHANGED
|
@@ -1,6 +1,11 @@
|
|
|
1
1
|
import type { MessageFactoryFn } from './utils';
|
|
2
2
|
import type { PROTO } from '../constants';
|
|
3
|
-
import type {
|
|
3
|
+
import type {
|
|
4
|
+
KnownDevice as Device,
|
|
5
|
+
DeviceStateEvent,
|
|
6
|
+
Features,
|
|
7
|
+
SupportFeatures,
|
|
8
|
+
} from '../types/device';
|
|
4
9
|
|
|
5
10
|
export const DEVICE_EVENT = 'DEVICE_EVENT';
|
|
6
11
|
export const DEVICE = {
|
|
@@ -23,12 +28,14 @@ export const DEVICE = {
|
|
|
23
28
|
PIN: 'pin',
|
|
24
29
|
PASSPHRASE: 'passphrase',
|
|
25
30
|
PASSPHRASE_ON_DEVICE: 'passphrase_on_device',
|
|
31
|
+
ATTACH_PIN_ON_DEVICE: 'attach_pin_on_device',
|
|
26
32
|
WORD: 'word',
|
|
27
33
|
SUPPORT_FEATURES: 'support_features',
|
|
28
34
|
SELECT_DEVICE_IN_BOOTLOADER_FOR_WEB_DEVICE: 'select_device_in_bootloader_for_web_device',
|
|
29
35
|
SELECT_DEVICE_FOR_SWITCH_FIRMWARE_WEB_DEVICE: 'select_device_for_switch_firmware_web_device',
|
|
30
36
|
|
|
31
37
|
FEATURES: 'features',
|
|
38
|
+
STATE: 'state',
|
|
32
39
|
} as const;
|
|
33
40
|
|
|
34
41
|
export interface DeviceConnnectRequest {
|
|
@@ -47,6 +54,9 @@ export interface DeviceButtonRequestPayload extends Omit<PROTO.ButtonRequest, 'c
|
|
|
47
54
|
|
|
48
55
|
export type PassphraseRequestPayload = {
|
|
49
56
|
existsAttachPinUser?: boolean;
|
|
57
|
+
source?: 'wallet-session-coordinator';
|
|
58
|
+
reason?: 'open-wallet' | 'session-recovery';
|
|
59
|
+
expectedPassphraseState?: string;
|
|
50
60
|
};
|
|
51
61
|
|
|
52
62
|
export interface DeviceButtonRequest {
|
|
@@ -61,6 +71,11 @@ export interface DeviceSendFeatures {
|
|
|
61
71
|
payload: DeviceFeaturesPayload;
|
|
62
72
|
}
|
|
63
73
|
|
|
74
|
+
export interface DeviceSendState {
|
|
75
|
+
type: typeof DEVICE.STATE;
|
|
76
|
+
payload: DeviceStateEvent;
|
|
77
|
+
}
|
|
78
|
+
|
|
64
79
|
export type DeviceSupportFeaturesPayload = SupportFeatures & { device: Device | null };
|
|
65
80
|
export interface DeviceSendSupportFeatures {
|
|
66
81
|
type: typeof DEVICE.SUPPORT_FEATURES;
|
|
@@ -69,6 +84,7 @@ export interface DeviceSendSupportFeatures {
|
|
|
69
84
|
|
|
70
85
|
export type DeviceEvent =
|
|
71
86
|
| DeviceButtonRequest
|
|
87
|
+
| DeviceSendState
|
|
72
88
|
| DeviceSendFeatures
|
|
73
89
|
| DeviceSendSupportFeatures
|
|
74
90
|
| DeviceDisconnnectRequest
|
package/src/events/iframe.ts
CHANGED
|
@@ -5,7 +5,14 @@ export const LogBlockEvent: Set<string> = new Set([
|
|
|
5
5
|
UI_RESPONSE.RECEIVE_PASSPHRASE,
|
|
6
6
|
]);
|
|
7
7
|
|
|
8
|
-
const LogBlockMethod: Set<string> = new Set([
|
|
8
|
+
const LogBlockMethod: Set<string> = new Set([
|
|
9
|
+
'evmSignTypedData',
|
|
10
|
+
'openWalletSession',
|
|
11
|
+
'deviceUploadWallpaper',
|
|
12
|
+
'uploadPortfolio',
|
|
13
|
+
'fileWrite',
|
|
14
|
+
'fileRead',
|
|
15
|
+
]);
|
|
9
16
|
|
|
10
17
|
export function getLogBlockLabel(message: unknown): string | undefined {
|
|
11
18
|
if (!message || typeof message !== 'object') return undefined;
|
package/src/events/ui-request.ts
CHANGED
|
@@ -49,6 +49,23 @@ export const UI_REQUEST = {
|
|
|
49
49
|
NOT_USE_ONEKEY_DEVICE: 'ui-device_please_use_onekey_device',
|
|
50
50
|
} as const;
|
|
51
51
|
|
|
52
|
+
export type ProtocolV2UiEventSource =
|
|
53
|
+
| 'unlock-coordinator'
|
|
54
|
+
| 'wallet-session-coordinator'
|
|
55
|
+
| 'method-lifecycle';
|
|
56
|
+
|
|
57
|
+
export type ProtocolV2UiCompletion = 'page-accepted' | 'operation-completed';
|
|
58
|
+
|
|
59
|
+
export type ProtocolV2UiEventMetadata = {
|
|
60
|
+
source?: ProtocolV2UiEventSource;
|
|
61
|
+
reason?: string;
|
|
62
|
+
deviceOnly?: boolean;
|
|
63
|
+
completion?: ProtocolV2UiCompletion;
|
|
64
|
+
method?: string;
|
|
65
|
+
page?: string | number;
|
|
66
|
+
operation?: string;
|
|
67
|
+
};
|
|
68
|
+
|
|
52
69
|
export interface UiRequestWithoutPayload {
|
|
53
70
|
type:
|
|
54
71
|
| typeof UI_REQUEST.CLOSE_UI_WINDOW
|
|
@@ -73,7 +90,7 @@ export interface UiRequestFirmwareProgressing {
|
|
|
73
90
|
|
|
74
91
|
export type UiRequestDeviceAction = {
|
|
75
92
|
type: typeof UI_REQUEST.REQUEST_PIN;
|
|
76
|
-
payload: {
|
|
93
|
+
payload: ProtocolV2UiEventMetadata & {
|
|
77
94
|
device: Device;
|
|
78
95
|
type?: PROTO.PinMatrixRequestType | 'ButtonRequest_PinEntry' | 'ButtonRequest_AttachPin';
|
|
79
96
|
};
|
|
@@ -81,7 +98,7 @@ export type UiRequestDeviceAction = {
|
|
|
81
98
|
|
|
82
99
|
export interface UiRequestButton {
|
|
83
100
|
type: typeof UI_REQUEST.REQUEST_BUTTON;
|
|
84
|
-
payload: DeviceButtonRequest['payload'];
|
|
101
|
+
payload: DeviceButtonRequest['payload'] & ProtocolV2UiEventMetadata;
|
|
85
102
|
}
|
|
86
103
|
|
|
87
104
|
export interface UiRequestPassphrase {
|
|
@@ -90,6 +107,9 @@ export interface UiRequestPassphrase {
|
|
|
90
107
|
device: Device;
|
|
91
108
|
passphraseState?: string;
|
|
92
109
|
existsAttachPinUser?: boolean;
|
|
110
|
+
source?: 'wallet-session-coordinator';
|
|
111
|
+
reason?: 'open-wallet' | 'session-recovery';
|
|
112
|
+
expectedPassphraseState?: string;
|
|
93
113
|
};
|
|
94
114
|
}
|
|
95
115
|
|
|
@@ -98,6 +118,8 @@ export interface UiRequestPassphraseOnDevice {
|
|
|
98
118
|
payload: {
|
|
99
119
|
device: Device;
|
|
100
120
|
passphraseState?: string;
|
|
121
|
+
source?: 'wallet-session-coordinator';
|
|
122
|
+
reason?: 'open-wallet' | 'session-recovery';
|
|
101
123
|
};
|
|
102
124
|
}
|
|
103
125
|
|
package/src/index.ts
CHANGED
|
@@ -27,6 +27,7 @@ const HardwareSdk = ({
|
|
|
27
27
|
eventEmitter,
|
|
28
28
|
uiResponse,
|
|
29
29
|
cancel,
|
|
30
|
+
cancelOperation,
|
|
30
31
|
updateSettings,
|
|
31
32
|
switchTransport,
|
|
32
33
|
}: InjectApi): CoreApi =>
|
|
@@ -37,6 +38,7 @@ const HardwareSdk = ({
|
|
|
37
38
|
eventEmitter,
|
|
38
39
|
uiResponse,
|
|
39
40
|
cancel,
|
|
41
|
+
cancelOperation,
|
|
40
42
|
updateSettings,
|
|
41
43
|
switchTransport,
|
|
42
44
|
});
|
|
@@ -49,6 +51,7 @@ const HardwareSDKLowLevel = ({
|
|
|
49
51
|
addHardwareGlobalEventListener,
|
|
50
52
|
uiResponse,
|
|
51
53
|
cancel,
|
|
54
|
+
cancelOperation,
|
|
52
55
|
updateSettings,
|
|
53
56
|
switchTransport,
|
|
54
57
|
}: LowLevelInjectApi): LowLevelCoreApi =>
|
|
@@ -60,6 +63,7 @@ const HardwareSDKLowLevel = ({
|
|
|
60
63
|
addHardwareGlobalEventListener,
|
|
61
64
|
uiResponse,
|
|
62
65
|
cancel,
|
|
66
|
+
cancelOperation,
|
|
63
67
|
updateSettings,
|
|
64
68
|
switchTransport,
|
|
65
69
|
});
|
package/src/inject.ts
CHANGED
|
@@ -36,12 +36,14 @@ export interface InjectApi {
|
|
|
36
36
|
dispose: CoreApi['dispose'];
|
|
37
37
|
uiResponse: CoreApi['uiResponse'];
|
|
38
38
|
cancel: CoreApi['cancel'];
|
|
39
|
+
cancelOperation: CoreApi['cancelOperation'];
|
|
39
40
|
switchTransport: CoreApi['switchTransport'];
|
|
40
41
|
}
|
|
41
42
|
|
|
42
43
|
export const inject = ({
|
|
43
44
|
call,
|
|
44
45
|
cancel,
|
|
46
|
+
cancelOperation,
|
|
45
47
|
dispose,
|
|
46
48
|
eventEmitter,
|
|
47
49
|
init,
|
|
@@ -73,6 +75,7 @@ export const inject = ({
|
|
|
73
75
|
uiResponse,
|
|
74
76
|
|
|
75
77
|
cancel,
|
|
78
|
+
cancelOperation,
|
|
76
79
|
|
|
77
80
|
updateSettings,
|
|
78
81
|
|
|
@@ -96,10 +99,12 @@ export const createCoreApi = (
|
|
|
96
99
|
| 'dispose'
|
|
97
100
|
| 'uiResponse'
|
|
98
101
|
| 'cancel'
|
|
102
|
+
| 'cancelOperation'
|
|
99
103
|
| 'updateSettings'
|
|
100
104
|
| 'switchTransport'
|
|
101
105
|
> => ({
|
|
102
106
|
getLogs: () => call({ method: 'getLogs' }),
|
|
107
|
+
clearSessionCache: params => call({ ...params, method: 'clearSessionCache' }),
|
|
103
108
|
/**
|
|
104
109
|
* 搜索设备
|
|
105
110
|
*/
|
|
@@ -109,7 +114,10 @@ export const createCoreApi = (
|
|
|
109
114
|
* 获取设备信息
|
|
110
115
|
*/
|
|
111
116
|
getFeatures: (connectId, params) => call({ ...params, connectId, method: 'getFeatures' }),
|
|
112
|
-
|
|
117
|
+
getDeviceState: (connectId, params) => {
|
|
118
|
+
const { refresh: _refresh, includeRaw: _includeRaw, ...commonParams } = (params ?? {}) as any;
|
|
119
|
+
return call({ ...commonParams, connectId, method: 'getDeviceState' });
|
|
120
|
+
},
|
|
113
121
|
getOnekeyFeatures: (connectId, params) =>
|
|
114
122
|
call({ ...params, connectId, method: 'getOnekeyFeatures' }),
|
|
115
123
|
|
|
@@ -150,29 +158,35 @@ export const createCoreApi = (
|
|
|
150
158
|
deviceRebootToBoardloader: connectId => call({ connectId, method: 'deviceRebootToBoardloader' }),
|
|
151
159
|
deviceRebootToBootloader: connectId => call({ connectId, method: 'deviceRebootToBootloader' }),
|
|
152
160
|
|
|
153
|
-
//
|
|
154
|
-
getProtoVersion: (connectId, params) => call({ ...params, connectId, method: 'getProtoVersion' }),
|
|
155
|
-
ping: (connectId, params) => call({ ...params, connectId, method: 'ping' }),
|
|
161
|
+
// Pro2 business API
|
|
156
162
|
deviceReboot: (connectId, params) => call({ ...params, connectId, method: 'deviceReboot' }),
|
|
157
|
-
deviceGetDeviceInfo: (connectId, params) =>
|
|
158
|
-
call({ ...params, connectId, method: 'deviceGetDeviceInfo' }),
|
|
159
163
|
deviceGetOnboardingStatus: (connectId, params) =>
|
|
160
164
|
call({ ...params, connectId, method: 'deviceGetOnboardingStatus' }),
|
|
165
|
+
deviceUploadWallpaper: (connectId, params) =>
|
|
166
|
+
call({ ...params, connectId, method: 'deviceUploadWallpaper' }),
|
|
167
|
+
deviceInfoGet: (connectId, params) => call({ ...params, connectId, method: 'deviceInfoGet' }),
|
|
168
|
+
deviceStatusGet: (connectId, params) => call({ ...params, connectId, method: 'deviceStatusGet' }),
|
|
169
|
+
deviceSettingsGet: (connectId, params) =>
|
|
170
|
+
call({ ...params, connectId, method: 'deviceSettingsGet' }),
|
|
171
|
+
protocolInfoRequest: (connectId, params) =>
|
|
172
|
+
call({ ...params, connectId, method: 'protocolInfoRequest' }),
|
|
173
|
+
ping: (connectId, params) => call({ ...params, connectId, method: 'ping' }),
|
|
161
174
|
deviceFirmwareUpdate: (connectId, params) =>
|
|
162
175
|
call({ ...params, connectId, method: 'deviceFirmwareUpdate' }),
|
|
163
176
|
deviceGetFirmwareUpdateStatus: (connectId, params) =>
|
|
164
177
|
call({ ...params, connectId, method: 'deviceGetFirmwareUpdateStatus' }),
|
|
165
|
-
|
|
166
|
-
|
|
167
|
-
|
|
168
|
-
|
|
169
|
-
|
|
170
|
-
|
|
171
|
-
|
|
172
|
-
|
|
173
|
-
|
|
174
|
-
|
|
175
|
-
|
|
178
|
+
deviceFactoryInfoSet: (connectId, params) =>
|
|
179
|
+
call({ ...params, connectId, method: 'deviceFactoryInfoSet' }),
|
|
180
|
+
deviceFactoryInfoGet: (connectId, params) =>
|
|
181
|
+
call({ ...params, connectId, method: 'deviceFactoryInfoGet' }),
|
|
182
|
+
deviceSettingsSet: (connectId, params) =>
|
|
183
|
+
call({ ...params, connectId, method: 'deviceSettingsSet' }),
|
|
184
|
+
deviceSettingsPageShow: (connectId, params) =>
|
|
185
|
+
call({ ...params, connectId, method: 'deviceSettingsPageShow' }),
|
|
186
|
+
filesystemPermissionFix: (connectId, params) =>
|
|
187
|
+
call({ ...params, connectId, method: 'filesystemPermissionFix' }),
|
|
188
|
+
filesystemFormat: connectId => call({ connectId, method: 'filesystemFormat' }),
|
|
189
|
+
uploadPortfolio: (connectId, params) => call({ ...params, connectId, method: 'uploadPortfolio' }),
|
|
176
190
|
fileRead: (connectId, params) => call({ ...params, connectId, method: 'fileRead' }),
|
|
177
191
|
fileWrite: (connectId, params) => call({ ...params, connectId, method: 'fileWrite' }),
|
|
178
192
|
fileDelete: (connectId, params) => call({ ...params, connectId, method: 'fileDelete' }),
|
|
@@ -180,23 +194,6 @@ export const createCoreApi = (
|
|
|
180
194
|
dirMake: (connectId, params) => call({ ...params, connectId, method: 'dirMake' }),
|
|
181
195
|
dirRemove: (connectId, params) => call({ ...params, connectId, method: 'dirRemove' }),
|
|
182
196
|
pathInfo: (connectId, params) => call({ ...params, connectId, method: 'pathInfo' }),
|
|
183
|
-
filesystemFileRead: (connectId, params) =>
|
|
184
|
-
call({ ...params, connectId, method: 'filesystemFileRead' }),
|
|
185
|
-
filesystemFileWrite: (connectId, params) =>
|
|
186
|
-
call({ ...params, connectId, method: 'filesystemFileWrite' }),
|
|
187
|
-
filesystemFileDelete: (connectId, params) =>
|
|
188
|
-
call({ ...params, connectId, method: 'filesystemFileDelete' }),
|
|
189
|
-
filesystemDirList: (connectId, params) =>
|
|
190
|
-
call({ ...params, connectId, method: 'filesystemDirList' }),
|
|
191
|
-
filesystemDirMake: (connectId, params) =>
|
|
192
|
-
call({ ...params, connectId, method: 'filesystemDirMake' }),
|
|
193
|
-
filesystemDirRemove: (connectId, params) =>
|
|
194
|
-
call({ ...params, connectId, method: 'filesystemDirRemove' }),
|
|
195
|
-
filesystemPathInfoQuery: (connectId, params) =>
|
|
196
|
-
call({ ...params, connectId, method: 'filesystemPathInfoQuery' }),
|
|
197
|
-
filesystemFormat: connectId => call({ connectId, method: 'filesystemFormat' }),
|
|
198
|
-
filesystemDiskControl: (connectId, params) =>
|
|
199
|
-
call({ ...params, connectId, method: 'filesystemDiskControl' }),
|
|
200
197
|
deviceRecovery: (connectId, params) => call({ ...params, connectId, method: 'deviceRecovery' }),
|
|
201
198
|
deviceReset: (connectId, params) => call({ ...params, connectId, method: 'deviceReset' }),
|
|
202
199
|
deviceSettings: (connectId, params) => call({ ...params, connectId, method: 'deviceSettings' }),
|
|
@@ -212,6 +209,8 @@ export const createCoreApi = (
|
|
|
212
209
|
call({ ...params, connectId, method: 'deviceUpdateBootloader' }),
|
|
213
210
|
getPassphraseState: (connectId, params) =>
|
|
214
211
|
call({ ...params, connectId, method: 'getPassphraseState' }),
|
|
212
|
+
openWalletSession: (connectId, params) =>
|
|
213
|
+
call({ ...params, connectId, method: 'openWalletSession' }),
|
|
215
214
|
deviceCancel: (connectId, params) => call({ ...params, connectId, method: 'deviceCancel' }),
|
|
216
215
|
deviceLock: (connectId, params) => call({ ...params, connectId, method: 'deviceLock' }),
|
|
217
216
|
deviceUnlock: (connectId, params) =>
|
package/src/lowLevelInject.ts
CHANGED
|
@@ -13,6 +13,7 @@ export interface LowLevelInjectApi {
|
|
|
13
13
|
dispose: CoreApi['dispose'];
|
|
14
14
|
uiResponse: CoreApi['uiResponse'];
|
|
15
15
|
cancel: CoreApi['cancel'];
|
|
16
|
+
cancelOperation: CoreApi['cancelOperation'];
|
|
16
17
|
updateSettings: CoreApi['updateSettings'];
|
|
17
18
|
switchTransport: CoreApi['switchTransport'];
|
|
18
19
|
addHardwareGlobalEventListener: (listener: IAddHardwareGlobalEventListener) => void;
|
|
@@ -25,6 +26,7 @@ export type LowLevelCoreApi = Omit<CoreApi, 'on' | 'off'> & {
|
|
|
25
26
|
export const lowLevelInject = ({
|
|
26
27
|
call,
|
|
27
28
|
cancel,
|
|
29
|
+
cancelOperation,
|
|
28
30
|
dispose,
|
|
29
31
|
eventEmitter,
|
|
30
32
|
init,
|
|
@@ -48,6 +50,7 @@ export const lowLevelInject = ({
|
|
|
48
50
|
uiResponse,
|
|
49
51
|
|
|
50
52
|
cancel,
|
|
53
|
+
cancelOperation,
|
|
51
54
|
|
|
52
55
|
updateSettings,
|
|
53
56
|
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
import { ERRORS, HardwareErrorCode } from '@onekeyfe/hd-shared';
|
|
2
|
+
|
|
3
|
+
import type { DeviceSession } from '@onekeyfe/hd-transport';
|
|
4
|
+
|
|
5
|
+
export type CompleteDeviceSession = DeviceSession & {
|
|
6
|
+
session_id: string;
|
|
7
|
+
btc_test_address: string;
|
|
8
|
+
};
|
|
9
|
+
|
|
10
|
+
export function assertCompleteDeviceSession(
|
|
11
|
+
message: DeviceSession
|
|
12
|
+
): asserts message is CompleteDeviceSession {
|
|
13
|
+
if (
|
|
14
|
+
typeof message.session_id !== 'string' ||
|
|
15
|
+
!message.session_id ||
|
|
16
|
+
typeof message.btc_test_address !== 'string' ||
|
|
17
|
+
!message.btc_test_address
|
|
18
|
+
) {
|
|
19
|
+
throw ERRORS.TypedError(
|
|
20
|
+
HardwareErrorCode.RuntimeError,
|
|
21
|
+
'DeviceSessionGet returned an incomplete DeviceSession response.'
|
|
22
|
+
);
|
|
23
|
+
}
|
|
24
|
+
}
|
|
@@ -1,19 +1,23 @@
|
|
|
1
|
-
import {
|
|
2
|
-
|
|
3
|
-
import type {
|
|
1
|
+
import { DeviceSEState, DeviceSeType } from '@onekeyfe/hd-transport';
|
|
2
|
+
|
|
3
|
+
import type {
|
|
4
|
+
DeviceInfoGet,
|
|
5
|
+
DeviceSEInfo,
|
|
6
|
+
DeviceStatus,
|
|
7
|
+
ProtocolV2DeviceInfo,
|
|
8
|
+
} from '@onekeyfe/hd-transport';
|
|
4
9
|
import type { DeviceCommands } from '../../device/DeviceCommands';
|
|
5
10
|
|
|
6
|
-
//
|
|
7
|
-
// DevFirmwareImageInfo(与 firmware-pro2 proto 一致),不再维护手写副本。
|
|
11
|
+
// Use hd-transport generated Protocol V2 types as the single source of truth.
|
|
8
12
|
export type { ProtocolV2DeviceInfo };
|
|
9
|
-
export type {
|
|
10
|
-
export type {
|
|
13
|
+
export type { DeviceFirmwareImageInfo as ProtocolV2FirmwareImageInfo } from '@onekeyfe/hd-transport';
|
|
14
|
+
export type { DeviceSEInfo as ProtocolV2SEInfo } from '@onekeyfe/hd-transport';
|
|
11
15
|
|
|
12
16
|
export type ProtocolV2SeStateLabel = 'BOOT' | 'APP_FACTORY' | 'APP';
|
|
13
17
|
|
|
14
18
|
/**
|
|
15
|
-
*
|
|
16
|
-
*
|
|
19
|
+
* The transport historically decodes scalar proto enums as name strings.
|
|
20
|
+
* Accept both that SDK representation and numeric enums for low-level callers.
|
|
17
21
|
*/
|
|
18
22
|
const normalizeEnumValue = <T extends Record<string | number, string | number>>(
|
|
19
23
|
enumObject: T,
|
|
@@ -26,11 +30,11 @@ const normalizeEnumValue = <T extends Record<string | number, string | number>>(
|
|
|
26
30
|
};
|
|
27
31
|
|
|
28
32
|
/**
|
|
29
|
-
*
|
|
30
|
-
*
|
|
33
|
+
* Map DeviceSEInfo.state to a readable label. This is the SDK's canonical mapping
|
|
34
|
+
* used by DeviceState and the legacy Features projection.
|
|
31
35
|
*/
|
|
32
|
-
export const getProtocolV2SeState = (se?:
|
|
33
|
-
const label = normalizeEnumValue(
|
|
36
|
+
export const getProtocolV2SeState = (se?: DeviceSEInfo): ProtocolV2SeStateLabel | null => {
|
|
37
|
+
const label = normalizeEnumValue(DeviceSEState, se?.state);
|
|
34
38
|
switch (label) {
|
|
35
39
|
case 'BOOT':
|
|
36
40
|
return 'BOOT';
|
|
@@ -44,36 +48,41 @@ export const getProtocolV2SeState = (se?: DevSEInfo): ProtocolV2SeStateLabel | n
|
|
|
44
48
|
};
|
|
45
49
|
|
|
46
50
|
/**
|
|
47
|
-
*
|
|
48
|
-
* 的 SE 类型归一化从这里取。
|
|
51
|
+
* Map DeviceSEInfo.type to a readable label such as `THD89`.
|
|
49
52
|
*/
|
|
50
|
-
export const getProtocolV2SeType = (se?:
|
|
51
|
-
normalizeEnumValue(
|
|
53
|
+
export const getProtocolV2SeType = (se?: DeviceSEInfo): string | null =>
|
|
54
|
+
normalizeEnumValue(DeviceSeType, se?.type);
|
|
52
55
|
|
|
53
|
-
export
|
|
54
|
-
targets: {
|
|
55
|
-
hw: true,
|
|
56
|
-
fw: true,
|
|
57
|
-
bt: true,
|
|
58
|
-
status: true,
|
|
59
|
-
},
|
|
60
|
-
types: {
|
|
61
|
-
version: true,
|
|
62
|
-
specific: true,
|
|
63
|
-
},
|
|
64
|
-
};
|
|
56
|
+
export type ProtocolV2RuntimeMode = 'normal' | 'bootloader';
|
|
65
57
|
|
|
66
58
|
/**
|
|
67
|
-
*
|
|
59
|
+
* TODO: Once firmware-pro2 exposes ProtocolInfo.build_fingerprint, parse the running
|
|
60
|
+
* binary name and remove the temporary DeviceStatusGet-failure heuristic. romloader
|
|
61
|
+
* is a separate recovery flow and is excluded until its contract is defined.
|
|
68
62
|
*
|
|
69
|
-
*
|
|
70
|
-
*
|
|
63
|
+
* The temporary contract has two states: DeviceStatusGet success means normal and
|
|
64
|
+
* failure means bootloader. Do not infer mode from application/SE/romloader fields.
|
|
71
65
|
*/
|
|
72
|
-
export const
|
|
66
|
+
export const getProtocolV2RuntimeMode = ({
|
|
67
|
+
deviceInfo: _deviceInfo,
|
|
68
|
+
deviceStatusAvailable,
|
|
69
|
+
}: {
|
|
70
|
+
deviceInfo?: ProtocolV2DeviceInfo | null;
|
|
71
|
+
deviceStatusAvailable: boolean;
|
|
72
|
+
}): ProtocolV2RuntimeMode => {
|
|
73
|
+
if (deviceStatusAvailable) return 'normal';
|
|
74
|
+
return 'bootloader';
|
|
75
|
+
};
|
|
76
|
+
|
|
77
|
+
export const PROTOCOL_V2_FEATURES_DEVICE_INFO_REQUEST = {
|
|
73
78
|
targets: {
|
|
74
79
|
hw: true,
|
|
75
|
-
|
|
76
|
-
|
|
80
|
+
fw: true,
|
|
81
|
+
coprocessor: true,
|
|
82
|
+
se1: true,
|
|
83
|
+
se2: true,
|
|
84
|
+
se3: true,
|
|
85
|
+
se4: true,
|
|
77
86
|
},
|
|
78
87
|
types: {
|
|
79
88
|
version: true,
|
|
@@ -81,16 +90,19 @@ export const PROTOCOL_V2_STATUS_DEVICE_INFO_REQUEST = {
|
|
|
81
90
|
},
|
|
82
91
|
};
|
|
83
92
|
|
|
93
|
+
/**
|
|
94
|
+
* Version probe used after firmware update completion.
|
|
95
|
+
* It reads hardware and firmware component data without requesting DeviceStatus.
|
|
96
|
+
*/
|
|
84
97
|
export const PROTOCOL_V2_VERSIONS_DEVICE_INFO_REQUEST = {
|
|
85
98
|
targets: {
|
|
86
99
|
hw: true,
|
|
87
100
|
fw: true,
|
|
88
|
-
|
|
101
|
+
coprocessor: true,
|
|
89
102
|
se1: true,
|
|
90
103
|
se2: true,
|
|
91
104
|
se3: true,
|
|
92
105
|
se4: true,
|
|
93
|
-
status: true,
|
|
94
106
|
},
|
|
95
107
|
types: {
|
|
96
108
|
version: true,
|
|
@@ -102,12 +114,11 @@ export const PROTOCOL_V2_FULL_DEVICE_INFO_REQUEST = {
|
|
|
102
114
|
targets: {
|
|
103
115
|
hw: true,
|
|
104
116
|
fw: true,
|
|
105
|
-
|
|
117
|
+
coprocessor: true,
|
|
106
118
|
se1: true,
|
|
107
119
|
se2: true,
|
|
108
120
|
se3: true,
|
|
109
121
|
se4: true,
|
|
110
|
-
status: true,
|
|
111
122
|
},
|
|
112
123
|
types: {
|
|
113
124
|
version: true,
|
|
@@ -120,42 +131,6 @@ export const PROTOCOL_V2_FULL_DEVICE_INFO_REQUEST = {
|
|
|
120
131
|
export const PROTOCOL_V2_DEVICE_INFO_REQUEST = PROTOCOL_V2_FULL_DEVICE_INFO_REQUEST;
|
|
121
132
|
export const PROTOCOL_V2_DEVICE_INFO_TIMEOUT_MS = 10 * 1000;
|
|
122
133
|
|
|
123
|
-
/**
|
|
124
|
-
* 临时开关(默认开启):当前 Pro2 测试固件 / 早期工程板尚未实现 DevGetDeviceInfo,
|
|
125
|
-
* 真实调用只会超时失败。开启时跳过 wire 调用,直接返回 mock DeviceInfo;
|
|
126
|
-
* DevGetDeviceInfo 尚未返回的字段保持为空,不再用 transport path 兜底成设备身份。
|
|
127
|
-
*
|
|
128
|
-
* 固件实现 DevGetDeviceInfo 后:把默认值改回 false(或直接删除开关与 mock)。
|
|
129
|
-
* 注意:开启期间 FirmwareUpdateV4 的“升级完成版本比对”拿到的也是 mock 版本,
|
|
130
|
-
* 不能作为升级成功的依据。
|
|
131
|
-
*/
|
|
132
|
-
let protocolV2DeviceInfoMockEnabled = true;
|
|
133
|
-
|
|
134
|
-
export const setProtocolV2DeviceInfoMock = (enabled: boolean) => {
|
|
135
|
-
protocolV2DeviceInfoMockEnabled = enabled;
|
|
136
|
-
};
|
|
137
|
-
|
|
138
|
-
export const isProtocolV2DeviceInfoMockEnabled = () => protocolV2DeviceInfoMockEnabled;
|
|
139
|
-
|
|
140
|
-
/** 每次调用返回新对象,避免调用方原地修改互相污染。 */
|
|
141
|
-
export const buildMockProtocolV2DeviceInfo = (): ProtocolV2DeviceInfo => ({
|
|
142
|
-
protocol_version: 2,
|
|
143
|
-
hw: {
|
|
144
|
-
// 留空:协议未上报时 SDK 不再用 transport path 伪造身份字段
|
|
145
|
-
serial_no: '',
|
|
146
|
-
},
|
|
147
|
-
fw: {
|
|
148
|
-
app: { version: '0.1.0' },
|
|
149
|
-
},
|
|
150
|
-
bt: {},
|
|
151
|
-
status: {
|
|
152
|
-
init_states: true,
|
|
153
|
-
language: 'en_US',
|
|
154
|
-
passphrase_protection: false,
|
|
155
|
-
bt_enable: true,
|
|
156
|
-
},
|
|
157
|
-
});
|
|
158
|
-
|
|
159
134
|
export async function requestProtocolV2DeviceInfo({
|
|
160
135
|
commands,
|
|
161
136
|
timeoutMs = PROTOCOL_V2_DEVICE_INFO_TIMEOUT_MS,
|
|
@@ -163,15 +138,26 @@ export async function requestProtocolV2DeviceInfo({
|
|
|
163
138
|
}: {
|
|
164
139
|
commands: DeviceCommands;
|
|
165
140
|
timeoutMs?: number;
|
|
166
|
-
request?:
|
|
141
|
+
request?: DeviceInfoGet;
|
|
167
142
|
}): Promise<ProtocolV2DeviceInfo> {
|
|
168
|
-
|
|
169
|
-
return buildMockProtocolV2DeviceInfo();
|
|
170
|
-
}
|
|
171
|
-
const { message } = await commands.typedCall('DevGetDeviceInfo', 'DeviceInfo', request, {
|
|
143
|
+
const { message } = await commands.typedCall('DeviceInfoGet', 'DeviceInfo', request, {
|
|
172
144
|
timeoutMs,
|
|
173
145
|
});
|
|
174
|
-
//
|
|
175
|
-
// DevGetDeviceInfo 是 V2-only 消息,这里收窄到 V2 形态。
|
|
146
|
+
// Generated DeviceInfo is a V1/V2 union; DeviceInfoGet narrows it to the V2 shape.
|
|
176
147
|
return message as ProtocolV2DeviceInfo;
|
|
177
148
|
}
|
|
149
|
+
|
|
150
|
+
export async function requestProtocolV2DeviceStatus({
|
|
151
|
+
commands,
|
|
152
|
+
timeoutMs,
|
|
153
|
+
}: {
|
|
154
|
+
commands: DeviceCommands;
|
|
155
|
+
timeoutMs?: number;
|
|
156
|
+
}): Promise<DeviceStatus> {
|
|
157
|
+
const response =
|
|
158
|
+
timeoutMs === undefined
|
|
159
|
+
? await commands.typedCall('DeviceStatusGet', 'DeviceStatus', {})
|
|
160
|
+
: await commands.typedCall('DeviceStatusGet', 'DeviceStatus', {}, { timeoutMs });
|
|
161
|
+
const { message } = response;
|
|
162
|
+
return message;
|
|
163
|
+
}
|
|
@@ -1,43 +1,19 @@
|
|
|
1
1
|
/**
|
|
2
|
-
*
|
|
3
|
-
*
|
|
4
|
-
* 注意:仓库里的 hd-transport 生成物暂时仍带旧 target 名称;这里显式按
|
|
5
|
-
* submodules/firmware-pro2/sys/protobuf/onekey_protocol/latest/messages_device.proto
|
|
6
|
-
* 对齐当前子模块,避免运行时取到 undefined。
|
|
2
|
+
* DeviceFirmwareTargetType from the current firmware-pro2 submodule.
|
|
7
3
|
*/
|
|
8
4
|
export const ProtocolV2FirmwareTargetType = {
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
5
|
+
FW_MGMT_TARGET_INVALID: 0,
|
|
6
|
+
FW_MGMT_TARGET_CRATE: 1,
|
|
7
|
+
FW_MGMT_TARGET_ROMLOADER: 2,
|
|
8
|
+
FW_MGMT_TARGET_BOOTLOADER: 3,
|
|
9
|
+
FW_MGMT_TARGET_APPLICATION_P1: 4,
|
|
10
|
+
FW_MGMT_TARGET_APPLICATION_P2: 5,
|
|
11
|
+
FW_MGMT_TARGET_COPROCESSOR: 6,
|
|
12
|
+
FW_MGMT_TARGET_SE01: 7,
|
|
13
|
+
FW_MGMT_TARGET_SE02: 8,
|
|
14
|
+
FW_MGMT_TARGET_SE03: 9,
|
|
15
|
+
FW_MGMT_TARGET_SE04: 10,
|
|
17
16
|
} as const;
|
|
18
17
|
|
|
19
18
|
export type ProtocolV2FirmwareTargetType =
|
|
20
19
|
(typeof ProtocolV2FirmwareTargetType)[keyof typeof ProtocolV2FirmwareTargetType];
|
|
21
|
-
|
|
22
|
-
/**
|
|
23
|
-
* Map Protocol V2 firmware file name to DevFirmwareUpdate target_id.
|
|
24
|
-
*/
|
|
25
|
-
export function protocolV2FileNameToTargetId(fileName: string): ProtocolV2FirmwareTargetType {
|
|
26
|
-
const normalized = fileName.toLowerCase();
|
|
27
|
-
if (normalized.includes('bootloader') || normalized.includes('update_rom')) {
|
|
28
|
-
return ProtocolV2FirmwareTargetType.TARGET_MAIN_BOOT;
|
|
29
|
-
}
|
|
30
|
-
if (
|
|
31
|
-
normalized.includes('coprocessor') ||
|
|
32
|
-
normalized.includes('ble') ||
|
|
33
|
-
normalized.includes('bluetooth') ||
|
|
34
|
-
normalized.includes('bt')
|
|
35
|
-
) {
|
|
36
|
-
return ProtocolV2FirmwareTargetType.TARGET_BT;
|
|
37
|
-
}
|
|
38
|
-
if (normalized.includes('se4')) return ProtocolV2FirmwareTargetType.TARGET_SE4;
|
|
39
|
-
if (normalized.includes('se3')) return ProtocolV2FirmwareTargetType.TARGET_SE3;
|
|
40
|
-
if (normalized.includes('se2')) return ProtocolV2FirmwareTargetType.TARGET_SE2;
|
|
41
|
-
if (normalized.includes('se')) return ProtocolV2FirmwareTargetType.TARGET_SE1;
|
|
42
|
-
return ProtocolV2FirmwareTargetType.TARGET_MAIN_APP;
|
|
43
|
-
}
|
|
@@ -2,8 +2,8 @@ export {
|
|
|
2
2
|
PROTOCOL_V2_DEVICE_INFO_REQUEST,
|
|
3
3
|
PROTOCOL_V2_DEVICE_INFO_TIMEOUT_MS,
|
|
4
4
|
PROTOCOL_V2_FEATURES_DEVICE_INFO_REQUEST,
|
|
5
|
-
PROTOCOL_V2_STATUS_DEVICE_INFO_REQUEST,
|
|
6
5
|
PROTOCOL_V2_VERSIONS_DEVICE_INFO_REQUEST,
|
|
6
|
+
getProtocolV2RuntimeMode,
|
|
7
7
|
getProtocolV2SeState,
|
|
8
8
|
getProtocolV2SeType,
|
|
9
9
|
} from './features';
|
|
@@ -12,5 +12,7 @@ export type {
|
|
|
12
12
|
ProtocolV2FirmwareImageInfo,
|
|
13
13
|
ProtocolV2SEInfo,
|
|
14
14
|
ProtocolV2SeStateLabel,
|
|
15
|
+
ProtocolV2RuntimeMode,
|
|
15
16
|
} from './features';
|
|
16
17
|
export * from './firmware';
|
|
18
|
+
export * from './walletSession';
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import { HardwareErrorCode } from '@onekeyfe/hd-shared';
|
|
2
|
+
|
|
3
|
+
export function isDeviceLockedError(error: unknown): boolean {
|
|
4
|
+
return (
|
|
5
|
+
typeof error === 'object' &&
|
|
6
|
+
error !== null &&
|
|
7
|
+
'errorCode' in error &&
|
|
8
|
+
error.errorCode === HardwareErrorCode.DeviceLocked
|
|
9
|
+
);
|
|
10
|
+
}
|