@onekeyfe/hd-core 1.1.26-alpha.12 → 1.1.26-alpha.30

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.
Files changed (145) hide show
  1. package/__tests__/protocol-v2.test.ts +912 -0
  2. package/dist/api/DirList.d.ts +10 -0
  3. package/dist/api/DirList.d.ts.map +1 -0
  4. package/dist/api/DirMake.d.ts +9 -0
  5. package/dist/api/DirMake.d.ts.map +1 -0
  6. package/dist/api/DirRemove.d.ts +9 -0
  7. package/dist/api/DirRemove.d.ts.map +1 -0
  8. package/dist/api/FileDelete.d.ts +9 -0
  9. package/dist/api/FileDelete.d.ts.map +1 -0
  10. package/dist/api/FileRead.d.ts +19 -0
  11. package/dist/api/FileRead.d.ts.map +1 -0
  12. package/dist/api/FileWrite.d.ts +23 -0
  13. package/dist/api/FileWrite.d.ts.map +1 -0
  14. package/dist/api/FirmwareUpdateV3.d.ts +1 -0
  15. package/dist/api/FirmwareUpdateV3.d.ts.map +1 -1
  16. package/dist/api/FirmwareUpdateV4.d.ts +32 -0
  17. package/dist/api/FirmwareUpdateV4.d.ts.map +1 -0
  18. package/dist/api/GetOnekeyFeatures.d.ts.map +1 -1
  19. package/dist/api/PathInfo.d.ts +9 -0
  20. package/dist/api/PathInfo.d.ts.map +1 -0
  21. package/dist/api/SearchDevices.d.ts +2 -1
  22. package/dist/api/SearchDevices.d.ts.map +1 -1
  23. package/dist/api/device/DeviceRebootToBoardloader.d.ts +1 -1
  24. package/dist/api/device/DeviceRebootToBoardloader.d.ts.map +1 -1
  25. package/dist/api/device/DeviceRebootToBootloader.d.ts.map +1 -1
  26. package/dist/api/firmware/FirmwareUpdateBaseMethod.d.ts +10 -2
  27. package/dist/api/firmware/FirmwareUpdateBaseMethod.d.ts.map +1 -1
  28. package/dist/api/index.d.ts +26 -0
  29. package/dist/api/index.d.ts.map +1 -1
  30. package/dist/api/protocol-v2/DevFirmwareUpdate.d.ts +7 -0
  31. package/dist/api/protocol-v2/DevFirmwareUpdate.d.ts.map +1 -0
  32. package/dist/api/protocol-v2/DevGetDeviceInfo.d.ts +7 -0
  33. package/dist/api/protocol-v2/DevGetDeviceInfo.d.ts.map +1 -0
  34. package/dist/api/protocol-v2/DevGetFirmwareUpdateStatus.d.ts +6 -0
  35. package/dist/api/protocol-v2/DevGetFirmwareUpdateStatus.d.ts.map +1 -0
  36. package/dist/api/protocol-v2/DevGetOnboardingStatus.d.ts +6 -0
  37. package/dist/api/protocol-v2/DevGetOnboardingStatus.d.ts.map +1 -0
  38. package/dist/api/protocol-v2/DevReboot.d.ts +7 -0
  39. package/dist/api/protocol-v2/DevReboot.d.ts.map +1 -0
  40. package/dist/api/protocol-v2/FactoryDeviceInfoSettings.d.ts +7 -0
  41. package/dist/api/protocol-v2/FactoryDeviceInfoSettings.d.ts.map +1 -0
  42. package/dist/api/protocol-v2/FactoryGetDeviceInfo.d.ts +6 -0
  43. package/dist/api/protocol-v2/FactoryGetDeviceInfo.d.ts.map +1 -0
  44. package/dist/api/protocol-v2/FilesystemFixPermission.d.ts +6 -0
  45. package/dist/api/protocol-v2/FilesystemFixPermission.d.ts.map +1 -0
  46. package/dist/api/protocol-v2/FilesystemFormat.d.ts +6 -0
  47. package/dist/api/protocol-v2/FilesystemFormat.d.ts.map +1 -0
  48. package/dist/api/protocol-v2/GetProtoVersion.d.ts +6 -0
  49. package/dist/api/protocol-v2/GetProtoVersion.d.ts.map +1 -0
  50. package/dist/api/protocol-v2/Ping.d.ts +8 -0
  51. package/dist/api/protocol-v2/Ping.d.ts.map +1 -0
  52. package/dist/api/protocol-v2/helpers.d.ts +49 -0
  53. package/dist/api/protocol-v2/helpers.d.ts.map +1 -0
  54. package/dist/core/index.d.ts.map +1 -1
  55. package/dist/data-manager/DataManager.d.ts +4 -2
  56. package/dist/data-manager/DataManager.d.ts.map +1 -1
  57. package/dist/data-manager/TransportManager.d.ts +2 -1
  58. package/dist/data-manager/TransportManager.d.ts.map +1 -1
  59. package/dist/device/Device.d.ts +5 -3
  60. package/dist/device/Device.d.ts.map +1 -1
  61. package/dist/device/DeviceCommands.d.ts +8 -8
  62. package/dist/device/DeviceCommands.d.ts.map +1 -1
  63. package/dist/device/DeviceConnector.d.ts +2 -1
  64. package/dist/device/DeviceConnector.d.ts.map +1 -1
  65. package/dist/events/ui-request.d.ts +8 -0
  66. package/dist/events/ui-request.d.ts.map +1 -1
  67. package/dist/index.d.ts +187 -20
  68. package/dist/index.js +2664 -182
  69. package/dist/inject.d.ts.map +1 -1
  70. package/dist/protocols/protocol-v2/features.d.ts +56 -0
  71. package/dist/protocols/protocol-v2/features.d.ts.map +1 -0
  72. package/dist/protocols/protocol-v2/firmware.d.ts +12 -0
  73. package/dist/protocols/protocol-v2/firmware.d.ts.map +1 -0
  74. package/dist/protocols/protocol-v2/index.d.ts +3 -0
  75. package/dist/protocols/protocol-v2/index.d.ts.map +1 -0
  76. package/dist/types/api/export.d.ts +1 -1
  77. package/dist/types/api/export.d.ts.map +1 -1
  78. package/dist/types/api/firmwareUpdate.d.ts +7 -0
  79. package/dist/types/api/firmwareUpdate.d.ts.map +1 -1
  80. package/dist/types/api/index.d.ts +28 -1
  81. package/dist/types/api/index.d.ts.map +1 -1
  82. package/dist/types/api/protocolV2.d.ts +123 -0
  83. package/dist/types/api/protocolV2.d.ts.map +1 -0
  84. package/dist/types/api/searchDevices.d.ts +2 -2
  85. package/dist/types/api/searchDevices.d.ts.map +1 -1
  86. package/dist/types/device.d.ts +1 -1
  87. package/dist/types/device.d.ts.map +1 -1
  88. package/dist/types/params.d.ts +2 -0
  89. package/dist/types/params.d.ts.map +1 -1
  90. package/dist/types/settings.d.ts +1 -1
  91. package/dist/types/settings.d.ts.map +1 -1
  92. package/dist/utils/deviceInfoUtils.d.ts.map +1 -1
  93. package/dist/utils/patch.d.ts +1 -1
  94. package/dist/utils/patch.d.ts.map +1 -1
  95. package/dist/utils/versionUtils.d.ts +1 -1
  96. package/package.json +4 -4
  97. package/src/api/DirList.ts +25 -0
  98. package/src/api/DirMake.ts +20 -0
  99. package/src/api/DirRemove.ts +20 -0
  100. package/src/api/FileDelete.ts +20 -0
  101. package/src/api/FileRead.ts +161 -0
  102. package/src/api/FileWrite.ts +191 -0
  103. package/src/api/FirmwareUpdateV3.ts +21 -4
  104. package/src/api/FirmwareUpdateV4.ts +810 -0
  105. package/src/api/GetOnekeyFeatures.ts +75 -3
  106. package/src/api/PathInfo.ts +24 -0
  107. package/src/api/SearchDevices.ts +7 -2
  108. package/src/api/device/DeviceRebootToBoardloader.ts +10 -1
  109. package/src/api/device/DeviceRebootToBootloader.ts +10 -1
  110. package/src/api/firmware/FirmwareUpdateBaseMethod.ts +27 -4
  111. package/src/api/index.ts +28 -0
  112. package/src/api/protocol-v2/DevFirmwareUpdate.ts +33 -0
  113. package/src/api/protocol-v2/DevGetDeviceInfo.ts +35 -0
  114. package/src/api/protocol-v2/DevGetFirmwareUpdateStatus.ts +18 -0
  115. package/src/api/protocol-v2/DevGetOnboardingStatus.ts +18 -0
  116. package/src/api/protocol-v2/DevReboot.ts +22 -0
  117. package/src/api/protocol-v2/FactoryDeviceInfoSettings.ts +27 -0
  118. package/src/api/protocol-v2/FactoryGetDeviceInfo.ts +18 -0
  119. package/src/api/protocol-v2/FilesystemFixPermission.ts +14 -0
  120. package/src/api/protocol-v2/FilesystemFormat.ts +14 -0
  121. package/src/api/protocol-v2/GetProtoVersion.ts +14 -0
  122. package/src/api/protocol-v2/Ping.ts +16 -0
  123. package/src/api/protocol-v2/helpers.ts +140 -0
  124. package/src/core/index.ts +19 -2
  125. package/src/data/messages/messages-pro2.json +733 -0
  126. package/src/data-manager/DataManager.ts +6 -2
  127. package/src/data-manager/TransportManager.ts +29 -3
  128. package/src/device/Device.ts +66 -8
  129. package/src/device/DeviceCommands.ts +156 -26
  130. package/src/device/DeviceConnector.ts +29 -4
  131. package/src/device/DevicePool.ts +1 -1
  132. package/src/events/ui-request.ts +8 -0
  133. package/src/inject.ts +43 -1
  134. package/src/protocols/protocol-v2/features.ts +259 -0
  135. package/src/protocols/protocol-v2/firmware.ts +26 -0
  136. package/src/protocols/protocol-v2/index.ts +2 -0
  137. package/src/types/api/export.ts +1 -0
  138. package/src/types/api/firmwareUpdate.ts +12 -0
  139. package/src/types/api/index.ts +63 -1
  140. package/src/types/api/protocolV2.ts +221 -0
  141. package/src/types/api/searchDevices.ts +2 -2
  142. package/src/types/device.ts +3 -1
  143. package/src/types/params.ts +7 -0
  144. package/src/types/settings.ts +1 -1
  145. package/src/utils/deviceInfoUtils.ts +9 -5
package/src/inject.ts CHANGED
@@ -103,7 +103,7 @@ export const createCoreApi = (
103
103
  /**
104
104
  * 搜索设备
105
105
  */
106
- searchDevices: () => call({ method: 'searchDevices' }),
106
+ searchDevices: params => call({ ...params, method: 'searchDevices' }),
107
107
 
108
108
  /**
109
109
  * 获取设备信息
@@ -148,6 +148,46 @@ export const createCoreApi = (
148
148
  deviceFlags: (connectId, params) => call({ ...params, connectId, method: 'deviceFlags' }),
149
149
  deviceRebootToBoardloader: connectId => call({ connectId, method: 'deviceRebootToBoardloader' }),
150
150
  deviceRebootToBootloader: connectId => call({ connectId, method: 'deviceRebootToBootloader' }),
151
+
152
+ // File system & device control API (Protocol V2 only)
153
+ getProtoVersion: (connectId, params) =>
154
+ call({ ...params, connectId, method: 'getProtoVersion' }),
155
+ ping: (connectId, params) => call({ ...params, connectId, method: 'ping' }),
156
+ devReboot: (connectId, params) => call({ ...params, connectId, method: 'devReboot' }),
157
+ devGetDeviceInfo: (connectId, params) =>
158
+ call({ ...params, connectId, method: 'devGetDeviceInfo' }),
159
+ devGetOnboardingStatus: (connectId, params) =>
160
+ call({ ...params, connectId, method: 'devGetOnboardingStatus' }),
161
+ devFirmwareUpdate: (connectId, params) =>
162
+ call({ ...params, connectId, method: 'devFirmwareUpdate' }),
163
+ devGetFirmwareUpdateStatus: (connectId, params) =>
164
+ call({ ...params, connectId, method: 'devGetFirmwareUpdateStatus' }),
165
+ factoryDeviceInfoSettings: (connectId, params) =>
166
+ call({ ...params, connectId, method: 'factoryDeviceInfoSettings' }),
167
+ factoryGetDeviceInfo: connectId => call({ connectId, method: 'factoryGetDeviceInfo' }),
168
+ filesystemFixPermission: connectId => call({ connectId, method: 'filesystemFixPermission' }),
169
+ fileRead: (connectId, params) => call({ ...params, connectId, method: 'fileRead' }),
170
+ fileWrite: (connectId, params) => call({ ...params, connectId, method: 'fileWrite' }),
171
+ fileDelete: (connectId, params) => call({ ...params, connectId, method: 'fileDelete' }),
172
+ dirList: (connectId, params) => call({ ...params, connectId, method: 'dirList' }),
173
+ dirMake: (connectId, params) => call({ ...params, connectId, method: 'dirMake' }),
174
+ dirRemove: (connectId, params) => call({ ...params, connectId, method: 'dirRemove' }),
175
+ pathInfo: (connectId, params) => call({ ...params, connectId, method: 'pathInfo' }),
176
+ filesystemFileRead: (connectId, params) =>
177
+ call({ ...params, connectId, method: 'filesystemFileRead' }),
178
+ filesystemFileWrite: (connectId, params) =>
179
+ call({ ...params, connectId, method: 'filesystemFileWrite' }),
180
+ filesystemFileDelete: (connectId, params) =>
181
+ call({ ...params, connectId, method: 'filesystemFileDelete' }),
182
+ filesystemDirList: (connectId, params) =>
183
+ call({ ...params, connectId, method: 'filesystemDirList' }),
184
+ filesystemDirMake: (connectId, params) =>
185
+ call({ ...params, connectId, method: 'filesystemDirMake' }),
186
+ filesystemDirRemove: (connectId, params) =>
187
+ call({ ...params, connectId, method: 'filesystemDirRemove' }),
188
+ filesystemPathInfoQuery: (connectId, params) =>
189
+ call({ ...params, connectId, method: 'filesystemPathInfoQuery' }),
190
+ filesystemFormat: connectId => call({ connectId, method: 'filesystemFormat' }),
151
191
  deviceRecovery: (connectId, params) => call({ ...params, connectId, method: 'deviceRecovery' }),
152
192
  deviceReset: (connectId, params) => call({ ...params, connectId, method: 'deviceReset' }),
153
193
  deviceSettings: (connectId, params) => call({ ...params, connectId, method: 'deviceSettings' }),
@@ -260,6 +300,8 @@ export const createCoreApi = (
260
300
  call({ ...params, connectId, method: 'firmwareUpdateV2' }),
261
301
  firmwareUpdateV3: (connectId, params) =>
262
302
  call({ ...params, connectId, method: 'firmwareUpdateV3' }),
303
+ firmwareUpdateV4: (connectId, params) =>
304
+ call({ ...params, connectId, method: 'firmwareUpdateV4' }),
263
305
  promptWebDeviceAccess: params => call({ ...params, method: 'promptWebDeviceAccess' }),
264
306
 
265
307
  tronGetAddress: (connectId, deviceId, params) =>
@@ -0,0 +1,259 @@
1
+ import { EDeviceType } from '@onekeyfe/hd-shared';
2
+
3
+ import type { Features } from '../../types';
4
+ import type { DeviceCommands } from '../../device/DeviceCommands';
5
+ import type { OneKeyDeviceInfo as DeviceDescriptor, Messages } from '@onekeyfe/hd-transport';
6
+
7
+ type ProtocolV2Bytes = Uint8Array | number[] | string;
8
+
9
+ type ProtocolV2FirmwareImageInfo = {
10
+ version?: string;
11
+ build_id?: string;
12
+ hash?: ProtocolV2Bytes;
13
+ };
14
+
15
+ type ProtocolV2SEInfo = {
16
+ boot?: ProtocolV2FirmwareImageInfo;
17
+ app?: ProtocolV2FirmwareImageInfo;
18
+ type?: number;
19
+ state?: number;
20
+ };
21
+
22
+ type ProtocolV2DeviceInfo = {
23
+ protocol_version?: number;
24
+ hw?: {
25
+ device_type?: number;
26
+ serial_no?: string;
27
+ hardware_version?: string;
28
+ hardware_version_raw_adc?: number;
29
+ };
30
+ fw?: {
31
+ board?: ProtocolV2FirmwareImageInfo;
32
+ boot?: ProtocolV2FirmwareImageInfo;
33
+ app?: ProtocolV2FirmwareImageInfo;
34
+ };
35
+ bt?: {
36
+ boot?: ProtocolV2FirmwareImageInfo;
37
+ app?: ProtocolV2FirmwareImageInfo;
38
+ adv_name?: string;
39
+ mac?: ProtocolV2Bytes;
40
+ };
41
+ se1?: ProtocolV2SEInfo;
42
+ se2?: ProtocolV2SEInfo;
43
+ se3?: ProtocolV2SEInfo;
44
+ se4?: ProtocolV2SEInfo;
45
+ status?: {
46
+ language?: string;
47
+ bt_enable?: boolean;
48
+ init_states?: boolean;
49
+ backup_required?: boolean;
50
+ passphrase_protection?: boolean;
51
+ label?: string;
52
+ };
53
+ };
54
+
55
+ const PROTOCOL_V2_DEVICE_INFO_REQUEST: Messages.MessageType['DevGetDeviceInfo'] = {
56
+ targets: {
57
+ hw: true,
58
+ fw: true,
59
+ bt: true,
60
+ se1: true,
61
+ se2: true,
62
+ se3: true,
63
+ se4: true,
64
+ status: true,
65
+ },
66
+ types: {
67
+ version: true,
68
+ build_id: true,
69
+ hash: true,
70
+ specific: true,
71
+ },
72
+ };
73
+
74
+ function parseVersion(version?: string | null): [number, number, number] {
75
+ if (!version) return [0, 0, 0];
76
+ const [major = 0, minor = 0, patch = 0] = version.split('.').map(part => Number(part) || 0);
77
+ return [major, minor, patch];
78
+ }
79
+
80
+ function bytesToHex(value: unknown): string | undefined {
81
+ if (!value) return undefined;
82
+ if (typeof value === 'string') return value;
83
+ if (value instanceof Uint8Array) {
84
+ return Array.from(value)
85
+ .map(byte => byte.toString(16).padStart(2, '0'))
86
+ .join('');
87
+ }
88
+ if (Array.isArray(value)) {
89
+ return value.map(byte => Number(byte).toString(16).padStart(2, '0')).join('');
90
+ }
91
+ return undefined;
92
+ }
93
+
94
+ function getDescriptorId(descriptor: DeviceDescriptor) {
95
+ return descriptor.path || descriptor.id || '';
96
+ }
97
+
98
+ function getImageVersion(image?: ProtocolV2FirmwareImageInfo) {
99
+ return image?.version || undefined;
100
+ }
101
+
102
+ function getImageBuildId(image?: ProtocolV2FirmwareImageInfo) {
103
+ return image?.build_id || undefined;
104
+ }
105
+
106
+ function getImageHash(image?: ProtocolV2FirmwareImageInfo) {
107
+ return bytesToHex(image?.hash);
108
+ }
109
+
110
+ function getSeState(se?: ProtocolV2SEInfo) {
111
+ switch (se?.state) {
112
+ case 0:
113
+ return 'BOOT';
114
+ case 51:
115
+ return 'APP_FACTORY';
116
+ case 85:
117
+ return 'APP';
118
+ default:
119
+ return null;
120
+ }
121
+ }
122
+
123
+ function createBaseFeatures(descriptor: DeviceDescriptor): Features {
124
+ const descriptorId = getDescriptorId(descriptor);
125
+ return {
126
+ vendor: 'onekey.so',
127
+ major_version: 0,
128
+ minor_version: 0,
129
+ patch_version: 0,
130
+ bootloader_mode: false,
131
+ device_id: descriptorId,
132
+ pin_protection: null,
133
+ passphrase_protection: false,
134
+ language: null,
135
+ label: null,
136
+ initialized: false,
137
+ revision: null,
138
+ bootloader_hash: null,
139
+ imported: null,
140
+ unlocked: false,
141
+ firmware_present: false,
142
+ needs_backup: null,
143
+ flags: null,
144
+ model: 'pro2',
145
+ fw_major: 0,
146
+ fw_minor: 0,
147
+ fw_patch: 0,
148
+ fw_vendor: null,
149
+ unfinished_backup: null,
150
+ no_backup: null,
151
+ recovery_mode: null,
152
+ capabilities: [],
153
+ backup_type: null,
154
+ sd_card_present: null,
155
+ sd_protection: null,
156
+ wipe_code_protection: null,
157
+ session_id: null,
158
+ passphrase_always_on_device: null,
159
+ safety_checks: null,
160
+ auto_lock_delay_ms: null,
161
+ display_rotation: null,
162
+ experimental_features: null,
163
+ onekey_device_type: EDeviceType.Pro2,
164
+ onekey_serial_no: descriptorId,
165
+ serial_no: descriptorId,
166
+ };
167
+ }
168
+
169
+ export function normalizeProtocolV2Features(
170
+ descriptor: DeviceDescriptor,
171
+ deviceInfo?: ProtocolV2DeviceInfo
172
+ ): Features {
173
+ const features = createBaseFeatures(descriptor);
174
+ if (!deviceInfo) return features;
175
+
176
+ const serialNo =
177
+ deviceInfo.hw?.serial_no || features.onekey_serial_no || getDescriptorId(descriptor);
178
+ const firmwareVersion = getImageVersion(deviceInfo.fw?.app);
179
+ const [fwMajor, fwMinor, fwPatch] = parseVersion(firmwareVersion);
180
+
181
+ return {
182
+ ...features,
183
+ major_version: fwMajor,
184
+ minor_version: fwMinor,
185
+ patch_version: fwPatch,
186
+ fw_major: fwMajor,
187
+ fw_minor: fwMinor,
188
+ fw_patch: fwPatch,
189
+ device_id: serialNo,
190
+ serial_no: serialNo,
191
+ onekey_serial_no: serialNo,
192
+ label: deviceInfo.status?.label ?? features.label,
193
+ language: deviceInfo.status?.language ?? features.language,
194
+ initialized: deviceInfo.status?.init_states ?? features.initialized,
195
+ passphrase_protection:
196
+ deviceInfo.status?.passphrase_protection ?? features.passphrase_protection,
197
+ needs_backup: deviceInfo.status?.backup_required ?? features.needs_backup,
198
+ ble_enable: deviceInfo.status?.bt_enable,
199
+ onekey_ble_name: deviceInfo.bt?.adv_name,
200
+ ble_name: deviceInfo.bt?.adv_name,
201
+ onekey_firmware_version: firmwareVersion,
202
+ onekey_firmware_build_id: getImageBuildId(deviceInfo.fw?.app),
203
+ onekey_firmware_hash: getImageHash(deviceInfo.fw?.app),
204
+ onekey_boot_version: getImageVersion(deviceInfo.fw?.boot),
205
+ bootloader_version: getImageVersion(deviceInfo.fw?.boot),
206
+ onekey_boot_build_id: getImageBuildId(deviceInfo.fw?.boot),
207
+ onekey_boot_hash: getImageHash(deviceInfo.fw?.boot),
208
+ onekey_board_version: getImageVersion(deviceInfo.fw?.board),
209
+ onekey_board_hash: getImageHash(deviceInfo.fw?.board),
210
+ onekey_ble_version: getImageVersion(deviceInfo.bt?.app),
211
+ ble_ver: getImageVersion(deviceInfo.bt?.app),
212
+ onekey_ble_build_id: getImageBuildId(deviceInfo.bt?.app),
213
+ onekey_ble_hash: getImageHash(deviceInfo.bt?.app),
214
+ onekey_se01_version: getImageVersion(deviceInfo.se1?.app),
215
+ onekey_se01_hash: getImageHash(deviceInfo.se1?.app),
216
+ onekey_se01_build_id: getImageBuildId(deviceInfo.se1?.app),
217
+ onekey_se01_state: getSeState(deviceInfo.se1),
218
+ onekey_se02_version: getImageVersion(deviceInfo.se2?.app),
219
+ onekey_se02_state: getSeState(deviceInfo.se2),
220
+ onekey_se03_version: getImageVersion(deviceInfo.se3?.app),
221
+ onekey_se03_state: getSeState(deviceInfo.se3),
222
+ onekey_se04_version: getImageVersion(deviceInfo.se4?.app),
223
+ onekey_se04_state: getSeState(deviceInfo.se4),
224
+ };
225
+ }
226
+
227
+ export async function getProtocolV2Features({
228
+ commands,
229
+ descriptor,
230
+ onDeviceInfoError,
231
+ timeoutMs,
232
+ }: {
233
+ commands: DeviceCommands;
234
+ descriptor: DeviceDescriptor;
235
+ onDeviceInfoError?: (error: unknown) => void;
236
+ timeoutMs?: number;
237
+ }) {
238
+ const callOptions = timeoutMs ? { timeoutMs } : undefined;
239
+ if (callOptions) {
240
+ await commands.typedCall('Ping', 'Success', { message: 'init' }, callOptions);
241
+ } else {
242
+ await commands.typedCall('Ping', 'Success', { message: 'init' });
243
+ }
244
+
245
+ try {
246
+ const { message } = callOptions
247
+ ? await commands.typedCall(
248
+ 'DevGetDeviceInfo',
249
+ 'DeviceInfo',
250
+ PROTOCOL_V2_DEVICE_INFO_REQUEST,
251
+ callOptions
252
+ )
253
+ : await commands.typedCall('DevGetDeviceInfo', 'DeviceInfo', PROTOCOL_V2_DEVICE_INFO_REQUEST);
254
+ return normalizeProtocolV2Features(descriptor, message as unknown as ProtocolV2DeviceInfo);
255
+ } catch (error) {
256
+ onDeviceInfoError?.(error);
257
+ throw error;
258
+ }
259
+ }
@@ -0,0 +1,26 @@
1
+ /**
2
+ * Protocol V2 DevFirmwareTargetType enum (from messages-pro2.json).
3
+ */
4
+ export const ProtocolV2FirmwareTargetType = {
5
+ TARGET_MAIN_APP: 0,
6
+ TARGET_MAIN_BOOT: 1,
7
+ TARGET_BT: 2,
8
+ TARGET_SE1: 3,
9
+ TARGET_SE2: 4,
10
+ TARGET_SE3: 5,
11
+ TARGET_SE4: 6,
12
+ TARGET_RESOURCE: 10,
13
+ } as const;
14
+
15
+ /**
16
+ * Map Protocol V2 firmware file name to DevFirmwareUpdate target_id.
17
+ */
18
+ export function protocolV2FileNameToTargetId(fileName: string): number {
19
+ if (fileName.includes('ble')) return ProtocolV2FirmwareTargetType.TARGET_BT;
20
+ if (fileName.includes('bootloader')) return ProtocolV2FirmwareTargetType.TARGET_MAIN_BOOT;
21
+ if (fileName.includes('se1')) return ProtocolV2FirmwareTargetType.TARGET_SE1;
22
+ if (fileName.includes('se2')) return ProtocolV2FirmwareTargetType.TARGET_SE2;
23
+ if (fileName.includes('se3')) return ProtocolV2FirmwareTargetType.TARGET_SE3;
24
+ if (fileName.includes('se4')) return ProtocolV2FirmwareTargetType.TARGET_SE4;
25
+ return ProtocolV2FirmwareTargetType.TARGET_MAIN_APP;
26
+ }
@@ -0,0 +1,2 @@
1
+ export * from './features';
2
+ export * from './firmware';
@@ -28,6 +28,7 @@ export type {
28
28
  FirmwareUpdateParams,
29
29
  FirmwareUpdateBinaryParams,
30
30
  FirmwareUpdateV3Params,
31
+ FirmwareUpdateV4Params,
31
32
  } from './firmwareUpdate';
32
33
  export type { AllFirmwareRelease } from './checkAllFirmwareRelease';
33
34
 
@@ -41,6 +41,7 @@ export declare function firmwareUpdateV2(
41
41
  export interface FirmwareUpdateV3Params {
42
42
  bleVersion?: number[];
43
43
  bleBinary?: ArrayBuffer;
44
+ chunkSize?: number;
44
45
 
45
46
  firmwareVersion?: number[];
46
47
  firmwareBinary?: ArrayBuffer;
@@ -56,6 +57,8 @@ export interface FirmwareUpdateV3Params {
56
57
  platform: IPlatform;
57
58
  }
58
59
 
60
+ export type FirmwareUpdateV4Params = FirmwareUpdateV3Params;
61
+
59
62
  export declare function firmwareUpdateV3(
60
63
  connectId: string | undefined,
61
64
  params: Params<FirmwareUpdateV3Params>
@@ -64,3 +67,12 @@ export declare function firmwareUpdateV3(
64
67
  firmwareVersion: string;
65
68
  bootloaderVersion: string;
66
69
  }>;
70
+
71
+ export declare function firmwareUpdateV4(
72
+ connectId: string | undefined,
73
+ params: Params<FirmwareUpdateV4Params>
74
+ ): Response<{
75
+ bleVersion: string;
76
+ firmwareVersion: string;
77
+ bootloaderVersion: string;
78
+ }>;
@@ -1,3 +1,30 @@
1
+ import type {
2
+ devFirmwareUpdate,
3
+ devGetDeviceInfo,
4
+ devGetFirmwareUpdateStatus,
5
+ devGetOnboardingStatus,
6
+ devReboot,
7
+ dirList,
8
+ dirMake,
9
+ dirRemove,
10
+ factoryDeviceInfoSettings,
11
+ factoryGetDeviceInfo,
12
+ fileDelete,
13
+ fileRead,
14
+ fileWrite,
15
+ filesystemDirList,
16
+ filesystemDirMake,
17
+ filesystemDirRemove,
18
+ filesystemFileDelete,
19
+ filesystemFileRead,
20
+ filesystemFileWrite,
21
+ filesystemFixPermission,
22
+ filesystemFormat,
23
+ filesystemPathInfoQuery,
24
+ getProtoVersion,
25
+ pathInfo,
26
+ ping,
27
+ } from './protocolV2';
1
28
  import type { off, on, removeAllListeners } from './event';
2
29
  import type { uiResponse } from './uiResponse';
3
30
  import type { init, updateSettings } from './init';
@@ -14,7 +41,12 @@ import type { getOnekeyFeatures } from './getOnekeyFeatures';
14
41
  import type { getPassphraseState } from './getPassphraseState';
15
42
  import type { checkFirmwareRelease } from './checkFirmwareRelease';
16
43
  import type { checkBLEFirmwareRelease } from './checkBLEFirmwareRelease';
17
- import type { firmwareUpdate, firmwareUpdateV2, firmwareUpdateV3 } from './firmwareUpdate';
44
+ import type {
45
+ firmwareUpdate,
46
+ firmwareUpdateV2,
47
+ firmwareUpdateV3,
48
+ firmwareUpdateV4,
49
+ } from './firmwareUpdate';
18
50
  import type { promptWebDeviceAccess } from './promptWebDeviceAccess';
19
51
  import type { deviceReset } from './deviceReset';
20
52
  import type { deviceRecovery } from './deviceRecovery';
@@ -195,8 +227,38 @@ export type CoreApi = {
195
227
  firmwareUpdate: typeof firmwareUpdate;
196
228
  firmwareUpdateV2: typeof firmwareUpdateV2;
197
229
  firmwareUpdateV3: typeof firmwareUpdateV3;
230
+ firmwareUpdateV4: typeof firmwareUpdateV4;
198
231
  cipherKeyValue: typeof cipherKeyValue;
199
232
 
233
+ /**
234
+ * File system & device control API (Protocol V2 only)
235
+ */
236
+ getProtoVersion: typeof getProtoVersion;
237
+ ping: typeof ping;
238
+ devReboot: typeof devReboot;
239
+ devGetDeviceInfo: typeof devGetDeviceInfo;
240
+ devGetOnboardingStatus: typeof devGetOnboardingStatus;
241
+ devFirmwareUpdate: typeof devFirmwareUpdate;
242
+ devGetFirmwareUpdateStatus: typeof devGetFirmwareUpdateStatus;
243
+ factoryDeviceInfoSettings: typeof factoryDeviceInfoSettings;
244
+ factoryGetDeviceInfo: typeof factoryGetDeviceInfo;
245
+ filesystemFixPermission: typeof filesystemFixPermission;
246
+ fileRead: typeof fileRead;
247
+ fileWrite: typeof fileWrite;
248
+ fileDelete: typeof fileDelete;
249
+ dirList: typeof dirList;
250
+ dirMake: typeof dirMake;
251
+ dirRemove: typeof dirRemove;
252
+ pathInfo: typeof pathInfo;
253
+ filesystemFileRead: typeof filesystemFileRead;
254
+ filesystemFileWrite: typeof filesystemFileWrite;
255
+ filesystemFileDelete: typeof filesystemFileDelete;
256
+ filesystemDirList: typeof filesystemDirList;
257
+ filesystemDirMake: typeof filesystemDirMake;
258
+ filesystemDirRemove: typeof filesystemDirRemove;
259
+ filesystemPathInfoQuery: typeof filesystemPathInfoQuery;
260
+ filesystemFormat: typeof filesystemFormat;
261
+
200
262
  /**
201
263
  * All network function
202
264
  */
@@ -0,0 +1,221 @@
1
+ import type { CommonParams, Response } from '../params';
2
+ import type {
3
+ DevFirmwareTarget,
4
+ DevFirmwareUpdateStatus,
5
+ DevOnboardingStatus,
6
+ DevInfoTargets,
7
+ DevInfoTypes,
8
+ DevRebootType,
9
+ FactoryDeviceInfo,
10
+ ProtoVersion,
11
+ ProtocolV2DeviceInfo,
12
+ Success,
13
+ } from '@onekeyfe/hd-transport';
14
+
15
+ // ── Shared response shapes (Protocol V2 file system) ────────────────────
16
+
17
+ export type FileOpSuccess = { message?: string };
18
+
19
+ export type FileInfo = {
20
+ path: string;
21
+ offset: number;
22
+ total_size: number;
23
+ data?: Uint8Array;
24
+ data_hash?: number;
25
+ processed_byte?: number;
26
+ chunks?: number;
27
+ };
28
+
29
+ export type DirInfo = {
30
+ path: string;
31
+ child_dirs?: string;
32
+ child_files?: string;
33
+ };
34
+
35
+ export type PathInfoResult = {
36
+ exist: boolean;
37
+ size: number;
38
+ year: number;
39
+ month: number;
40
+ day: number;
41
+ hour: number;
42
+ minute: number;
43
+ second: number;
44
+ readonly?: boolean;
45
+ hidden?: boolean;
46
+ system?: boolean;
47
+ archive?: boolean;
48
+ directory?: boolean;
49
+ };
50
+
51
+ export type DevRebootParams = {
52
+ rebootType?: DevRebootType | string | number;
53
+ reboot_type?: DevRebootType | string | number;
54
+ };
55
+
56
+ export type DevGetDeviceInfoParams = {
57
+ targets?: DevInfoTargets;
58
+ types?: DevInfoTypes;
59
+ targetHw?: boolean;
60
+ targetFw?: boolean;
61
+ targetBt?: boolean;
62
+ targetSe1?: boolean;
63
+ targetSe2?: boolean;
64
+ targetSe3?: boolean;
65
+ targetSe4?: boolean;
66
+ targetStatus?: boolean;
67
+ includeVersion?: boolean;
68
+ includeBuildId?: boolean;
69
+ includeHash?: boolean;
70
+ includeSpecific?: boolean;
71
+ };
72
+
73
+ export type DevFirmwareUpdateParams = {
74
+ targets?: DevFirmwareTarget[];
75
+ targetId?: DevFirmwareTarget['target_id'] | string | number;
76
+ target_id?: DevFirmwareTarget['target_id'] | string | number;
77
+ path?: string;
78
+ };
79
+
80
+ export type FactoryDeviceInfoSettingsParams = {
81
+ serial_no?: string;
82
+ serialNo?: string;
83
+ cpu_info?: string;
84
+ cpuInfo?: string;
85
+ pre_firmware?: string;
86
+ preFirmware?: string;
87
+ };
88
+
89
+ // ── Method signatures ─────────────────────────────────────────────────────
90
+
91
+ export declare function fileRead(
92
+ connectId: string,
93
+ params: {
94
+ path: string;
95
+ offset?: number;
96
+ totalSize?: number;
97
+ chunkLen?: number;
98
+ uiPercentage?: number;
99
+ }
100
+ ): Response<FileInfo>;
101
+
102
+ export declare function fileWrite(
103
+ connectId: string,
104
+ params: {
105
+ path: string;
106
+ offset?: number;
107
+ totalSize?: number;
108
+ chunkSize?: number;
109
+ chunkLen?: number;
110
+ data: ArrayBuffer | Uint8Array | Blob | string;
111
+ overwrite?: boolean;
112
+ append?: boolean;
113
+ uiPercentage?: number;
114
+ }
115
+ ): Response<FileInfo>;
116
+
117
+ export declare function fileDelete(
118
+ connectId: string,
119
+ params: { path: string }
120
+ ): Response<FileOpSuccess>;
121
+
122
+ export declare function dirList(
123
+ connectId: string,
124
+ params: { path: string; depth?: number }
125
+ ): Response<DirInfo>;
126
+
127
+ export declare function dirMake(
128
+ connectId: string,
129
+ params: { path: string }
130
+ ): Response<FileOpSuccess>;
131
+
132
+ export declare function dirRemove(
133
+ connectId: string,
134
+ params: { path: string }
135
+ ): Response<FileOpSuccess>;
136
+
137
+ export declare function pathInfo(
138
+ connectId: string,
139
+ params: { path: string }
140
+ ): Response<PathInfoResult>;
141
+
142
+ export declare function getProtoVersion(
143
+ connectId: string,
144
+ params?: CommonParams
145
+ ): Response<ProtoVersion>;
146
+
147
+ export declare function ping(
148
+ connectId: string,
149
+ params?: CommonParams & { message?: string }
150
+ ): Response<Success>;
151
+
152
+ export declare function devReboot(
153
+ connectId: string,
154
+ params: CommonParams & DevRebootParams
155
+ ): Response<Success>;
156
+
157
+ export declare function devGetDeviceInfo(
158
+ connectId: string,
159
+ params?: CommonParams & DevGetDeviceInfoParams
160
+ ): Response<ProtocolV2DeviceInfo>;
161
+
162
+ export declare function devGetOnboardingStatus(
163
+ connectId: string,
164
+ params?: CommonParams
165
+ ): Response<DevOnboardingStatus>;
166
+
167
+ export declare function devFirmwareUpdate(
168
+ connectId: string,
169
+ params: CommonParams & DevFirmwareUpdateParams
170
+ ): Response<Success | DevFirmwareUpdateStatus>;
171
+
172
+ export declare function devGetFirmwareUpdateStatus(
173
+ connectId: string,
174
+ params?: CommonParams
175
+ ): Response<DevFirmwareUpdateStatus>;
176
+
177
+ export declare function factoryDeviceInfoSettings(
178
+ connectId: string,
179
+ params: FactoryDeviceInfoSettingsParams
180
+ ): Response<Success>;
181
+
182
+ export declare function factoryGetDeviceInfo(connectId: string): Response<FactoryDeviceInfo>;
183
+
184
+ export declare function filesystemFixPermission(connectId: string): Response<Success>;
185
+
186
+ export declare function filesystemFileRead(
187
+ connectId: string,
188
+ params: Parameters<typeof fileRead>[1]
189
+ ): ReturnType<typeof fileRead>;
190
+
191
+ export declare function filesystemFileWrite(
192
+ connectId: string,
193
+ params: Parameters<typeof fileWrite>[1]
194
+ ): ReturnType<typeof fileWrite>;
195
+
196
+ export declare function filesystemFileDelete(
197
+ connectId: string,
198
+ params: Parameters<typeof fileDelete>[1]
199
+ ): ReturnType<typeof fileDelete>;
200
+
201
+ export declare function filesystemDirList(
202
+ connectId: string,
203
+ params: Parameters<typeof dirList>[1]
204
+ ): ReturnType<typeof dirList>;
205
+
206
+ export declare function filesystemDirMake(
207
+ connectId: string,
208
+ params: Parameters<typeof dirMake>[1]
209
+ ): ReturnType<typeof dirMake>;
210
+
211
+ export declare function filesystemDirRemove(
212
+ connectId: string,
213
+ params: Parameters<typeof dirRemove>[1]
214
+ ): ReturnType<typeof dirRemove>;
215
+
216
+ export declare function filesystemPathInfoQuery(
217
+ connectId: string,
218
+ params: Parameters<typeof pathInfo>[1]
219
+ ): ReturnType<typeof pathInfo>;
220
+
221
+ export declare function filesystemFormat(connectId: string): Response<Success>;
@@ -1,4 +1,4 @@
1
1
  import type { SearchDevice } from '../device';
2
- import type { Response } from '../params';
2
+ import type { CommonParams, Response } from '../params';
3
3
 
4
- export declare function searchDevices(): Response<SearchDevice[]>;
4
+ export declare function searchDevices(params?: CommonParams): Response<SearchDevice[]>;