@onekeyfe/hd-core 1.2.0-alpha.70 → 1.2.0-alpha.72

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.
@@ -1 +1 @@
1
- {"version":3,"file":"resources.d.ts","sourceRoot":"","sources":["../../../src/protocols/protocol-v2/resources.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAEV,mBAAmB,EACnB,uBAAuB,EACvB,uBAAuB,EACvB,oBAAoB,EACrB,MAAM,aAAa,CAAC;AACrB,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,6BAA6B,CAAC;AAElE,eAAO,MAAM,0BAA0B,kFAOgB,CAAC;AAExD,eAAO,MAAM,iCAAiC,EAAE,QAAQ,CAAC,MAAM,CAAC,uBAAuB,EAAE,MAAM,CAAC,CAQ7F,CAAC;AAaJ,eAAO,MAAM,yCAAyC,QAAW,CAAC;AAElE,MAAM,MAAM,+BAA+B,GAAG;IAC5C,IAAI,EAAE,uBAAuB,CAAC;IAC9B,IAAI,EAAE,MAAM,CAAC;IACb,UAAU,EAAE,MAAM,CAAC;CACpB,CAAC;AAEF,MAAM,MAAM,4BAA4B,GAAG,aAAa,GAAG,qBAAqB,CAAC;AAEjF,MAAM,MAAM,4BAA4B,GAAG;IACzC,MAAM,EAAE,OAAO,GAAG,UAAU,GAAG,SAAS,CAAC;IACzC,SAAS,EAAE,mBAAmB,EAAE,CAAC;CAClC,CAAC;AAwHF,wBAAsB,+BAA+B,CAAC,EACpD,QAAQ,EACR,SAAS,EACT,SAAgD,EAChD,SAAqD,GACtD,EAAE;IACD,QAAQ,EAAE,IAAI,CAAC,cAAc,EAAE,WAAW,CAAC,CAAC;IAC5C,SAAS,EAAE,SAAS,mBAAmB,EAAE,CAAC;IAC1C,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB,GAAG,OAAO,CAAC,+BAA+B,EAAE,CAAC,CAmB7C;AAiGD,wBAAgB,wBAAwB,CAAC,KAAK,EAAE,OAAO,GAAG,oBAAoB,GAAG,SAAS,CAgCzF;AAGD,wBAAgB,iCAAiC,CAAC,EAChD,SAAS,EACT,SAAS,EACT,IAAI,EACJ,MAAc,GACf,EAAE;IACD,SAAS,EAAE,SAAS,mBAAmB,EAAE,CAAC;IAC1C,SAAS,CAAC,EAAE,SAAS,+BAA+B,EAAE,CAAC;IACvD,IAAI,EAAE,4BAA4B,CAAC;IACnC,MAAM,CAAC,EAAE,OAAO,CAAC;CAClB,GAAG,4BAA4B,CA8B/B;AAOD,wBAAgB,6BAA6B,CAC3C,MAAM,EAAE,WAAW,EACnB,QAAQ,EAAE,IAAI,CAAC,uBAAuB,EAAE,MAAM,GAAG,UAAU,CAAC,GAC3D,OAAO,CAGT"}
1
+ {"version":3,"file":"resources.d.ts","sourceRoot":"","sources":["../../../src/protocols/protocol-v2/resources.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAEV,mBAAmB,EACnB,uBAAuB,EACvB,uBAAuB,EACvB,oBAAoB,EACrB,MAAM,aAAa,CAAC;AACrB,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,6BAA6B,CAAC;AAElE,eAAO,MAAM,0BAA0B,mGAQgB,CAAC;AAExD,eAAO,MAAM,iCAAiC,EAAE,QAAQ,CAAC,MAAM,CAAC,uBAAuB,EAAE,MAAM,CAAC,CAS7F,CAAC;AAaJ,eAAO,MAAM,yCAAyC,QAAW,CAAC;AAElE,MAAM,MAAM,+BAA+B,GAAG;IAC5C,IAAI,EAAE,uBAAuB,CAAC;IAC9B,IAAI,EAAE,MAAM,CAAC;IACb,UAAU,EAAE,MAAM,CAAC;CACpB,CAAC;AAEF,MAAM,MAAM,4BAA4B,GAAG,aAAa,GAAG,qBAAqB,CAAC;AAEjF,MAAM,MAAM,4BAA4B,GAAG;IACzC,MAAM,EAAE,OAAO,GAAG,UAAU,GAAG,SAAS,CAAC;IACzC,SAAS,EAAE,mBAAmB,EAAE,CAAC;CAClC,CAAC;AAwHF,wBAAsB,+BAA+B,CAAC,EACpD,QAAQ,EACR,SAAS,EACT,SAAgD,EAChD,SAAqD,GACtD,EAAE;IACD,QAAQ,EAAE,IAAI,CAAC,cAAc,EAAE,WAAW,CAAC,CAAC;IAC5C,SAAS,EAAE,SAAS,mBAAmB,EAAE,CAAC;IAC1C,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB,GAAG,OAAO,CAAC,+BAA+B,EAAE,CAAC,CAmB7C;AAiGD,wBAAgB,wBAAwB,CAAC,KAAK,EAAE,OAAO,GAAG,oBAAoB,GAAG,SAAS,CAkCzF;AAGD,wBAAgB,iCAAiC,CAAC,EAChD,SAAS,EACT,SAAS,EACT,IAAI,EACJ,MAAc,GACf,EAAE;IACD,SAAS,EAAE,SAAS,mBAAmB,EAAE,CAAC;IAC1C,SAAS,CAAC,EAAE,SAAS,+BAA+B,EAAE,CAAC;IACvD,IAAI,EAAE,4BAA4B,CAAC;IACnC,MAAM,CAAC,EAAE,OAAO,CAAC;CAClB,GAAG,4BAA4B,CA8B/B;AAOD,wBAAgB,6BAA6B,CAC3C,MAAM,EAAE,WAAW,EACnB,QAAQ,EAAE,IAAI,CAAC,uBAAuB,EAAE,MAAM,GAAG,UAAU,CAAC,GAC3D,OAAO,CAGT"}
@@ -1 +1 @@
1
- {"version":3,"file":"firmwareUpdate.d.ts","sourceRoot":"","sources":["../../../src/types/api/firmwareUpdate.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"firmwareUpdate.d.ts","sourceRoot":"","sources":["../../../src/types/api/firmwareUpdate.ts"],"names":[],"mappings":"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"}
@@ -35,7 +35,7 @@ export type IProtocolV2FirmwareComponent = {
35
35
  expectedSize?: number;
36
36
  version?: IVersionArray;
37
37
  };
38
- export type IProtocolV2ResourceType = 'images' | 'animation' | 'wallpaper' | 'translations' | 'roobert' | 'noto';
38
+ export type IProtocolV2ResourceType = 'images' | 'animation' | 'wallpaper' | 'translations' | 'roobert' | 'noto' | 'firmware_logo';
39
39
  export type IProtocolV2Resource = {
40
40
  type: IProtocolV2ResourceType;
41
41
  url: string;
@@ -1 +1 @@
1
- {"version":3,"file":"settings.d.ts","sourceRoot":"","sources":["../../src/types/settings.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"settings.d.ts","sourceRoot":"","sources":["../../src/types/settings.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AACzD,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,UAAU,CAAC;AAE5C,MAAM,MAAM,YAAY,GACpB,MAAM,GACN,KAAK,GACL,cAAc,GACd,UAAU,GACV,cAAc,GACd,QAAQ,GACR,gBAAgB,GAChB,iBAAiB,GACjB,UAAU,GACV,UAAU,GACV,UAAU,CAAC;AACf,MAAM,MAAM,eAAe,GAAG;IAC5B,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,kBAAkB,CAAC,EAAE,OAAO,CAAC;IAC7B,QAAQ,CAAC,EAAE,OAAO,CAAC;IAEnB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,EAAE,MAAM,CAAC;IAClB,OAAO,EAAE,MAAM,CAAC;IAChB,QAAQ,EAAE,MAAM,CAAC;IACjB,WAAW,EAAE,OAAO,CAAC;IACrB,gBAAgB,CAAC,EAAE,OAAO,CAAC;IAC3B,GAAG,EAAE,YAAY,CAAC;IAClB,SAAS,EAAE,MAAM,CAAC;IAClB,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,oBAAoB,CAAC,EAAE,aAAa,GAAG,eAAe,CAAC;IACvD,eAAe,CAAC,EAAE,oBAAoB,CAAC;IACvC,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,aAAa,CAAC,EAAE,CAAC,GAAG,EAAE,MAAM,KAAK,OAAO,CAAC,oBAAoB,GAAG,IAAI,CAAC,CAAC;CACvE,CAAC;AAEF,MAAM,MAAM,aAAa,GAAG,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,CAAC;AAErD,MAAM,MAAM,OAAO,GAAG,OAAO,GAAG,OAAO,CAAC;AAExC,MAAM,MAAM,kCAAkC,GAC1C,WAAW,GACX,YAAY,GACZ,gBAAgB,GAChB,gBAAgB,GAChB,aAAa,GACb,MAAM,GACN,MAAM,GACN,MAAM,GACN,MAAM,CAAC;AAEX,MAAM,MAAM,4BAA4B,GAAG;IACzC,MAAM,EAAE,kCAAkC,CAAC;IAC3C,GAAG,EAAE,MAAM,CAAC;IAEZ,WAAW,CAAC,EAAE,MAAM,CAAC;IAErB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,OAAO,CAAC,EAAE,aAAa,CAAC;CACzB,CAAC;AAEF,MAAM,MAAM,uBAAuB,GAC/B,QAAQ,GACR,WAAW,GACX,WAAW,GACX,cAAc,GACd,SAAS,GACT,MAAM,GACN,eAAe,CAAC;AAGpB,MAAM,MAAM,mBAAmB,GAAG;IAChC,IAAI,EAAE,uBAAuB,CAAC;IAC9B,GAAG,EAAE,MAAM,CAAC;IAEZ,IAAI,EAAE,MAAM,CAAC;IAEb,QAAQ,EAAE,MAAM,CAAC;IAEjB,UAAU,EAAE,MAAM,CAAC;CACpB,CAAC;AAGF,MAAM,MAAM,uBAAuB,GAAG;IACpC,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,GAAG,EAAE,MAAM,CAAC;IACZ,UAAU,EAAE,MAAM,CAAC;IACnB,IAAI,EAAE,MAAM,CAAC;IAEb,QAAQ,EAAE,MAAM,CAAC;CAClB,CAAC;AAGF,MAAM,MAAM,wBAAwB,GAAG;IACrC,QAAQ,EAAE,KAAK,CAAC;IAChB,MAAM,EAAE,KAAK,CAAC;IACd,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,KAAK,EAAE,uBAAuB,EAAE,CAAC;CAClC,CAAC;AAEF,MAAM,MAAM,oBAAoB,GAAG;IACjC,MAAM,EAAE,mBAAmB,EAAE,CAAC;IAC9B,IAAI,CAAC,EAAE,wBAAwB,CAAC;CACjC,CAAC;AAGF,MAAM,MAAM,yBAAyB,GAAG;IAEtC,IAAI,EAAE,MAAM,CAAC;IAEb,GAAG,EAAE,MAAM,CAAC;IACZ,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,YAAY,CAAC,EAAE,MAAM,CAAC;IAEtB,UAAU,EAAE,MAAM,CAAC;IAEnB,OAAO,CAAC,EAAE,aAAa,CAAC;IAExB,WAAW,CAAC,EAAE,MAAM,CAAC;IAErB,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB,CAAC;AAGF,MAAM,MAAM,oBAAoB,GAAG;IACjC,QAAQ,EAAE,OAAO,CAAC;IAClB,GAAG,EAAE,MAAM,CAAC;IAKZ,YAAY,CAAC,EAAE,aAAa,CAAC;IAE7B,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,mBAAmB,CAAC,EAAE,MAAM,CAAC;IAC7B,oBAAoB,CAAC,EAAE,MAAM,CAAC;IAE9B,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,uBAAuB,CAAC,EAAE,MAAM,CAAC;IACjC,wBAAwB,CAAC,EAAE,MAAM,CAAC;IAClC,iBAAiB,CAAC,EAAE,MAAM,EAAE,CAAC;IAC7B,kBAAkB,CAAC,EAAE,MAAM,CAAC;IAC5B,qBAAqB,CAAC,EAAE,MAAM,CAAC;IAC/B,sBAAsB,CAAC,EAAE,MAAM,CAAC;IAChC,iBAAiB,CAAC,EAAE,aAAa,CAAC;IAClC,wBAAwB,CAAC,EAAE,aAAa,CAAC;IACzC,gCAAgC,CAAC,EAAE,aAAa,CAAC;IACjD,WAAW,CAAC,EAAE,qBAAqB,GAAG,MAAM,CAAC;IAC7C,UAAU,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,4BAA4B,CAAC,CAAC;IAC1D,YAAY,CAAC,EAAE,MAAM,EAAE,CAAC;IAExB,eAAe,CAAC,EAAE,yBAAyB,EAAE,CAAC;IAC9C,mBAAmB,CAAC,EAAE;SACnB,CAAC,IAAI,OAAO,GAAG,MAAM;KACvB,CAAC;IACF,WAAW,EAAE,MAAM,CAAC;IACpB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,OAAO,EAAE,aAAa,CAAC;IACvB,SAAS,EAAE;SACR,CAAC,IAAI,OAAO,GAAG,MAAM;KACvB,CAAC;CACH,CAAC;AAGF,MAAM,MAAM,uBAAuB,GAAG;IACpC,QAAQ,EAAE,OAAO,CAAC;IAElB,GAAG,EAAE,MAAM,CAAC;IAEZ,SAAS,EAAE,MAAM,CAAC;IAClB,WAAW,EAAE,MAAM,CAAC;IACpB,cAAc,EAAE,MAAM,CAAC;IACvB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,OAAO,EAAE,aAAa,CAAC;IACvB,SAAS,EAAE;SACR,CAAC,IAAI,OAAO,GAAG,MAAM;KACvB,CAAC;CACH,CAAC;AAEF,KAAK,YAAY,GAAG,OAAO,CAAC,WAAW,EAAE,SAAS,CAAC,CAAC;AACpD,KAAK,kBAAkB,GAAG,OAAO,CAAC,YAAY,EAAE,KAAK,CAAC,CAAC;AAEvD,KAAK,kBAAkB,GAAG;IACxB,QAAQ,EAAE,oBAAoB,EAAE,CAAC;IAEjC,aAAa,CAAC,EAAE,oBAAoB,EAAE,CAAC;IACvC,aAAa,CAAC,EAAE,oBAAoB,EAAE,CAAC;IACvC,aAAa,CAAC,EAAE,oBAAoB,EAAE,CAAC;IACvC,iBAAiB,CAAC,EAAE,oBAAoB,EAAE,CAAC;IAC3C,GAAG,EAAE,uBAAuB,EAAE,CAAC;IAE/B,SAAS,CAAC,EAAE,oBAAoB,CAAC;CAClC,CAAC;AAEF,MAAM,MAAM,aAAa,GAAG;KACzB,CAAC,IAAI,kBAAkB,GAAG,kBAAkB;CAC9C,GAAG;IAEF,GAAG,CAAC,EAAE,kBAAkB,CAAC;CAC1B,CAAC;AAEF,MAAM,MAAM,SAAS,GAAG;IACtB,MAAM,EAAE;QACN,OAAO,EAAE,aAAa,CAAC;QACvB,UAAU,EAAE,MAAM,CAAC;QACnB,UAAU,EAAE,MAAM,CAAC;QACnB,UAAU,EAAE,MAAM,CAAC;QACnB,UAAU,EAAE,MAAM,CAAC;QACnB,GAAG,EAAE,MAAM,CAAC;QACZ,GAAG,EAAE,MAAM,CAAC;QACZ,YAAY,EAAE,MAAM,CAAC;QACrB,SAAS,EAAE;aACR,CAAC,IAAI,OAAO,GAAG,MAAM;SACvB,CAAC;KACH,CAAC;CACH,CAAC;AAEF,MAAM,MAAM,oBAAoB,GAAG;IACjC,MAAM,EAAE,SAAS,CAAC,QAAQ,CAAC,CAAC;CAC7B,GAAG,aAAa,CAAC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@onekeyfe/hd-core",
3
- "version": "1.2.0-alpha.70",
3
+ "version": "1.2.0-alpha.72",
4
4
  "description": "Core processes and APIs for communicating with OneKey hardware devices.",
5
5
  "author": "OneKey",
6
6
  "homepage": "https://github.com/OneKeyHQ/hardware-js-sdk#readme",
@@ -25,8 +25,8 @@
25
25
  "url": "https://github.com/OneKeyHQ/hardware-js-sdk/issues"
26
26
  },
27
27
  "dependencies": {
28
- "@onekeyfe/hd-shared": "1.2.0-alpha.70",
29
- "@onekeyfe/hd-transport": "1.2.0-alpha.70",
28
+ "@onekeyfe/hd-shared": "1.2.0-alpha.72",
29
+ "@onekeyfe/hd-transport": "1.2.0-alpha.72",
30
30
  "axios": "1.15.2",
31
31
  "bignumber.js": "^9.0.2",
32
32
  "bytebuffer": "^5.0.1",
@@ -44,5 +44,5 @@
44
44
  "@types/w3c-web-usb": "^1.0.10",
45
45
  "@types/web-bluetooth": "^0.0.21"
46
46
  },
47
- "gitHead": "d86b033cf970f97e060c49fe4cf618f38b9ce666"
47
+ "gitHead": "76311ccd3753eca8e492b5324f93542bd38525ba"
48
48
  }
@@ -191,6 +191,7 @@ export function buildProtocolV2FirmwareRelease({
191
191
  remotePayloadHashes = {},
192
192
  firmwareType,
193
193
  release,
194
+ deviceType,
194
195
  }: {
195
196
  currentVersions: DeviceStateVersions;
196
197
  currentVerification?: Partial<DeviceFeaturesVerify>;
@@ -198,6 +199,7 @@ export function buildProtocolV2FirmwareRelease({
198
199
  remotePayloadHashes?: Readonly<Record<string, string | null>>;
199
200
  firmwareType: EFirmwareType;
200
201
  release: IFirmwareReleaseInfo | undefined;
202
+ deviceType?: 'pro2' | 'neo';
201
203
  }): ProtocolV2FirmwareReleasePlan {
202
204
  if (!release) {
203
205
  return {
@@ -212,8 +214,8 @@ export function buildProtocolV2FirmwareRelease({
212
214
  };
213
215
  }
214
216
 
215
- let components = getOrderedComponentEntries(release).map(([configKey, component]) =>
216
- buildComponentRelease({
217
+ let components = getOrderedComponentEntries(release).map(([configKey, component]) => {
218
+ const result = buildComponentRelease({
217
219
  configKey,
218
220
  component,
219
221
  currentVersions,
@@ -223,8 +225,20 @@ export function buildProtocolV2FirmwareRelease({
223
225
  ? remotePayloadHashes[configKey]
224
226
  : normalizeHex(component.payloadHash),
225
227
  releaseRequired: release.required,
226
- })
227
- );
228
+ });
229
+ if (
230
+ deviceType === 'neo' &&
231
+ (result.componentTarget === 'SE03' || result.componentTarget === 'SE04')
232
+ ) {
233
+ return {
234
+ ...result,
235
+ updateTarget: null,
236
+ status: 'unsupported' as const,
237
+ required: false,
238
+ };
239
+ }
240
+ return result;
241
+ });
228
242
  if (!currentVersions.applicationP2) {
229
243
  const applicationP1 = components.find(
230
244
  component => component.componentTarget === 'APPLICATION_P1'
@@ -401,6 +415,7 @@ export default class CheckAllFirmwareRelease extends BaseMethod {
401
415
  checkFirmwareHash,
402
416
  firmwareType,
403
417
  release,
418
+ deviceType: state.identity.deviceType,
404
419
  });
405
420
  const resourceDeviceType =
406
421
  state.identity.deviceType === 'neo' ? EDeviceType.Neo : EDeviceType.Pro2;
@@ -3,6 +3,7 @@ import {
3
3
  DeviceRebootType,
4
4
  PROTOCOL_V2_BLE_FILE_READ_CHUNK_SIZE,
5
5
  PROTOCOL_V2_BLE_FILE_CHUNK_SIZE,
6
+ PROTOCOL_V2_BLE_FIRMWARE_FILE_CHUNK_SIZE,
6
7
  PROTOCOL_V2_WEBUSB_FILE_CHUNK_SIZE,
7
8
  } from '@onekeyfe/hd-transport';
8
9
  import { sha256 } from '@noble/hashes/sha256';
@@ -15,6 +16,7 @@ import {
15
16
  getDeviceBLEFirmwareVersion,
16
17
  getDeviceBootloaderVersion,
17
18
  getDeviceFirmwareVersion,
19
+ getDeviceType,
18
20
  getFirmwareType,
19
21
  getLogger,
20
22
  } from '../utils';
@@ -90,6 +92,28 @@ const PROTOCOL_V2_OKPP_PAYLOAD_HASH_OFFSET = 0x200;
90
92
  const PROTOCOL_V2_OKPP_HEADER_HASH_OFFSET = 0x240;
91
93
  const PROTOCOL_V2_OKPP_HASH_SIZE = 64;
92
94
 
95
+ const PROTOCOL_V2_NEO_UNSUPPORTED_TARGETS = new Set<FirmwareUpdateV4Target>(['se03', 'se04']);
96
+
97
+ export function assertProtocolV2FirmwareTargetsSupported(
98
+ deviceType: EDeviceType | string | undefined,
99
+ params: FirmwareUpdateV4Params
100
+ ) {
101
+ const unsupportedTargets = new Set(
102
+ (params.targetsToUpdate ?? []).filter(target => PROTOCOL_V2_NEO_UNSUPPORTED_TARGETS.has(target))
103
+ );
104
+ if (params.se03Binary) unsupportedTargets.add('se03');
105
+ if (params.se04Binary) unsupportedTargets.add('se04');
106
+
107
+ if (!unsupportedTargets.size || deviceType === EDeviceType.Pro2) return;
108
+
109
+ const targetList = Array.from(unsupportedTargets).join(', ');
110
+ const message =
111
+ deviceType === EDeviceType.Neo
112
+ ? `Neo only supports SE01 and SE02; unsupported firmware targets: ${targetList}`
113
+ : `Cannot safely update ${targetList} without a confirmed Pro2 device type`;
114
+ throw ERRORS.TypedError(HardwareErrorCode.DeviceNotSupportMethod, message);
115
+ }
116
+
93
117
  const getProtocolV2DeviceTransferProgress = (
94
118
  bytesBeforeChunk: number,
95
119
  bytesAfterChunk: number,
@@ -218,6 +242,12 @@ const PROTOCOL_V2_REMOTE_COMPONENT_TARGETS: Readonly<
218
242
  },
219
243
  };
220
244
 
245
+ const PROTOCOL_V2_FIRMWARE_STAGING_PATHS = new Set(
246
+ Object.values(PROTOCOL_V2_REMOTE_COMPONENT_TARGETS).map(
247
+ target => `${PROTOCOL_V2_FIRMWARE_STAGING_VOLUME}${target.fileName}`
248
+ )
249
+ );
250
+
221
251
  const PROTOCOL_V2_UPDATE_TARGET_BY_TARGET_ID = new Map<number, FirmwareUpdateV4Target>([
222
252
  [ProtocolV2FirmwareTargetType.FW_MGMT_TARGET_BOOTLOADER, 'boot'],
223
253
  [ProtocolV2FirmwareTargetType.FW_MGMT_TARGET_APPLICATION_P1, 'app_v1'],
@@ -582,16 +612,20 @@ export default class FirmwareUpdateV4 extends FirmwareUpdateBaseMethod<FirmwareU
582
612
  };
583
613
  }
584
614
 
585
- private getProtocolV2FirmwareChunkSize(direction: 'read' | 'write' = 'write') {
615
+ private getProtocolV2FirmwareChunkSize(direction: 'read' | 'write' = 'write', filePath?: string) {
586
616
  const payloadChunkSize = Number(this.params?.chunkSize);
587
617
  const env = DataManager.getSettings('env');
588
618
  const isBle = this.params?.platform === 'native' || (env && DataManager.isBleConnect(env));
589
619
  let maxChunkSize = PROTOCOL_V2_WEBUSB_FILE_CHUNK_SIZE;
590
620
  if (isBle) {
591
- maxChunkSize =
592
- direction === 'read'
593
- ? PROTOCOL_V2_BLE_FILE_READ_CHUNK_SIZE
621
+ if (direction === 'read') {
622
+ maxChunkSize = PROTOCOL_V2_BLE_FILE_READ_CHUNK_SIZE;
623
+ } else {
624
+ // Firmware staging writes tolerate a larger BLE chunk than generic filesystem writes.
625
+ maxChunkSize = PROTOCOL_V2_FIRMWARE_STAGING_PATHS.has(filePath ?? '')
626
+ ? PROTOCOL_V2_BLE_FIRMWARE_FILE_CHUNK_SIZE
594
627
  : PROTOCOL_V2_BLE_FILE_CHUNK_SIZE;
628
+ }
595
629
  }
596
630
  if (!Number.isFinite(payloadChunkSize) || payloadChunkSize <= 0) {
597
631
  return maxChunkSize;
@@ -610,6 +644,12 @@ export default class FirmwareUpdateV4 extends FirmwareUpdateBaseMethod<FirmwareU
610
644
  private async runProtocolV2() {
611
645
  await this.captureProtocolV2PhysicalIdentity();
612
646
  const deviceFeatures = await this.getProtocolV2DeviceFeatures();
647
+ const currentDeviceType = this.device.getCurrentDeviceType();
648
+ const capabilityDeviceType =
649
+ currentDeviceType === EDeviceType.Pro2 || currentDeviceType === EDeviceType.Neo
650
+ ? currentDeviceType
651
+ : getDeviceType(deviceFeatures);
652
+ assertProtocolV2FirmwareTargetsSupported(capabilityDeviceType, this.params);
613
653
  const deviceFirmwareType = getFirmwareType(deviceFeatures);
614
654
  const firmwareType = this.params.firmwareType ?? deviceFirmwareType;
615
655
  this.validateExpectedTargetVersions();
@@ -620,9 +660,12 @@ export default class FirmwareUpdateV4 extends FirmwareUpdateBaseMethod<FirmwareU
620
660
  ) {
621
661
  return this.runProtocolV2PreparedArtifacts(deviceFeatures, firmwareType);
622
662
  }
623
- const needsRemoteResources =
624
- !this.params.resourceFiles?.length && !!this.params.targetsToUpdate?.includes('resource');
625
- const needsRemoteBootResources = !!this.params.targetsToUpdate?.includes('boot_resources');
663
+ const hasExplicitResourceFiles = !!this.params.resourceFiles?.length;
664
+ const wantsStableResources = !!this.params.targetsToUpdate?.includes('resource');
665
+ const wantsBootResources = !!this.params.targetsToUpdate?.includes('boot_resources');
666
+ const needsRemoteResources = !hasExplicitResourceFiles && wantsStableResources;
667
+ const needsRemoteBootResources =
668
+ !hasExplicitResourceFiles && (wantsBootResources || wantsStableResources);
626
669
 
627
670
  let fwBinaryMap: ProtocolV2TargetBinary[] = [];
628
671
  let bootloaderBinary: ArrayBuffer | null = null;
@@ -664,7 +707,7 @@ export default class FirmwareUpdateV4 extends FirmwareUpdateBaseMethod<FirmwareU
664
707
  }
665
708
  const bootResourceFiles = await this.prepareProtocolV2BootResources();
666
709
  if (bootResourceFiles?.length) {
667
- resourceBundles = [...(resourceBundles ?? []), ...bootResourceFiles];
710
+ resourceBundles = this.mergeProtocolV2ResourceBundles(resourceBundles, bootResourceFiles);
668
711
  }
669
712
  if (!needsRemoteResources) {
670
713
  this.postTipMessage(FirmwareUpdateTipMessage.FinishDownloadFirmware);
@@ -693,7 +736,7 @@ export default class FirmwareUpdateV4 extends FirmwareUpdateBaseMethod<FirmwareU
693
736
  const enteredBootloader = await this.enterProtocolV2BootloaderMode();
694
737
  try {
695
738
  const stableResources = await this.prepareProtocolV2ResourceBundles();
696
- resourceBundles = [...(resourceBundles ?? []), ...(stableResources ?? [])];
739
+ resourceBundles = this.mergeProtocolV2ResourceBundles(resourceBundles, stableResources);
697
740
  this.postTipMessage(FirmwareUpdateTipMessage.FinishDownloadFirmware);
698
741
  } catch (err) {
699
742
  if (enteredBootloader) {
@@ -1223,26 +1266,108 @@ export default class FirmwareUpdateV4 extends FirmwareUpdateBaseMethod<FirmwareU
1223
1266
  private async prepareProtocolV2BootResources(): Promise<
1224
1267
  ProtocolV2ResourceBundleBinary[] | undefined
1225
1268
  > {
1226
- if (!this.params.targetsToUpdate?.includes('boot_resources')) return undefined;
1269
+ const wantsStableResources = !!this.params.targetsToUpdate?.includes('resource');
1270
+ const wantsBootResources = !!this.params.targetsToUpdate?.includes('boot_resources');
1271
+ if (!wantsStableResources && !wantsBootResources) {
1272
+ return undefined;
1273
+ }
1274
+ if (this.params.resourceFiles?.length) {
1275
+ return undefined;
1276
+ }
1227
1277
  const resource = DataManager.getProtocolV2BootResources(this.getProtocolV2DeviceType());
1228
- if (!resource) throw new Error('Missing Protocol V2 boot resources configuration');
1278
+ if (!resource) {
1279
+ if (wantsBootResources) {
1280
+ throw new Error('Missing Protocol V2 boot resources configuration');
1281
+ }
1282
+ Log.debug('[FirmwareUpdateV4] no boot resources configured; continue with stable resources');
1283
+ return undefined;
1284
+ }
1229
1285
 
1230
1286
  const files: ProtocolV2ResourceBundleBinary[] = [];
1231
1287
  for (const file of resource.files) {
1232
- Log.log(`[FirmwareUpdateV4] downloading boot resource ${file.devicePath}`);
1233
- const { binary } = await getSysResourceBinary(file.url);
1234
- if (!isProtocolV2ResourceFileValid(binary, file)) {
1235
- throw new Error(`Boot resource file verification failed: ${file.devicePath}`);
1288
+ const isCurrent =
1289
+ !this.params.forcedUpdateRes && (await this.isProtocolV2BootResourceCurrent(file));
1290
+ if (isCurrent) {
1291
+ Log.log(`[FirmwareUpdateV4] boot resource unchanged, skipping ${file.devicePath}`);
1292
+ } else {
1293
+ Log.log(`[FirmwareUpdateV4] downloading boot resource ${file.devicePath}`);
1294
+ const { binary } = await getSysResourceBinary(file.url);
1295
+ if (!isProtocolV2ResourceFileValid(binary, file)) {
1296
+ throw new Error(`Boot resource file verification failed: ${file.devicePath}`);
1297
+ }
1298
+ files.push({
1299
+ name: file.name ?? file.devicePath.split('/').pop() ?? file.devicePath,
1300
+ binary,
1301
+ devicePath: file.devicePath,
1302
+ });
1236
1303
  }
1237
- files.push({
1238
- name: file.name ?? file.devicePath.split('/').pop() ?? file.devicePath,
1239
- binary,
1240
- devicePath: file.devicePath,
1241
- });
1242
1304
  }
1243
1305
  return files;
1244
1306
  }
1245
1307
 
1308
+ private async isProtocolV2BootResourceCurrent(file: IProtocolV2ResourceFile) {
1309
+ try {
1310
+ const commands = this.device.getCommands();
1311
+ const pathInfo = await commands.typedCall(
1312
+ 'FilesystemPathInfoQuery',
1313
+ 'FilesystemPathInfo',
1314
+ { path: file.devicePath },
1315
+ { timeoutMs: PROTOCOL_V2_SHORT_RESPONSE_TIMEOUT }
1316
+ );
1317
+ const size = toProtocolV2FiniteNumber(pathInfo.message?.size);
1318
+ if (
1319
+ !pathInfo.message?.exist ||
1320
+ pathInfo.message?.directory ||
1321
+ !Number.isSafeInteger(size) ||
1322
+ size !== file.size
1323
+ ) {
1324
+ return false;
1325
+ }
1326
+
1327
+ const digest = sha256.create();
1328
+ const chunkSize = this.getProtocolV2FirmwareChunkSize();
1329
+ let offset = 0;
1330
+ while (offset < file.size) {
1331
+ const response = await commands.typedCall(
1332
+ 'FilesystemFileRead',
1333
+ 'FilesystemFile',
1334
+ {
1335
+ file: { path: file.devicePath, offset, total_size: 0 },
1336
+ chunk_len: Math.min(chunkSize, file.size - offset),
1337
+ },
1338
+ { timeoutMs: PROTOCOL_V2_SHORT_RESPONSE_TIMEOUT }
1339
+ );
1340
+ const data = toProtocolV2Bytes(response.message?.data);
1341
+ if (data.byteLength === 0) return false;
1342
+ const consumed = data.subarray(0, Math.min(data.byteLength, file.size - offset));
1343
+ digest.update(consumed);
1344
+ offset += consumed.byteLength;
1345
+ }
1346
+ return bytesToHex(digest.digest()) === normalizeProtocolV2Hex(file.fileHash);
1347
+ } catch (error) {
1348
+ Log.debug(
1349
+ `[FirmwareUpdateV4] unable to compare boot resource ${file.devicePath}; scheduling rewrite`,
1350
+ error
1351
+ );
1352
+ return false;
1353
+ }
1354
+ }
1355
+
1356
+ private mergeProtocolV2ResourceBundles(
1357
+ ...groups: Array<ProtocolV2ResourceBundleBinary[] | undefined>
1358
+ ): ProtocolV2ResourceBundleBinary[] | undefined {
1359
+ const merged = groups.flatMap(group => group ?? []);
1360
+ if (!merged.length) return undefined;
1361
+ const seenPaths = new Set<string>();
1362
+ for (const bundle of merged) {
1363
+ if (seenPaths.has(bundle.devicePath)) {
1364
+ throw new Error(`Duplicate Protocol V2 resource devicePath: ${bundle.devicePath}`);
1365
+ }
1366
+ seenPaths.add(bundle.devicePath);
1367
+ }
1368
+ return merged;
1369
+ }
1370
+
1246
1371
  private prepareExplicitProtocolV2ResourceFiles(): ProtocolV2ResourceBundleBinary[] | undefined {
1247
1372
  const files = this.params.resourceFiles ?? [];
1248
1373
  if (!files?.length) return undefined;
@@ -1764,7 +1889,7 @@ export default class FirmwareUpdateV4 extends FirmwareUpdateBaseMethod<FirmwareU
1764
1889
  const transferStartedAt = Date.now();
1765
1890
  await writeFirmwareByteSource({
1766
1891
  source,
1767
- chunkSize: this.getProtocolV2FirmwareChunkSize(),
1892
+ chunkSize: this.getProtocolV2FirmwareChunkSize('write', filePath),
1768
1893
  write: async ({ data, sourceOffset, length, first }) => {
1769
1894
  const chunkEnd = sourceOffset + length;
1770
1895
  const deviceProgress = getProtocolV2DeviceTransferProgress(
@@ -2289,7 +2414,11 @@ export default class FirmwareUpdateV4 extends FirmwareUpdateBaseMethod<FirmwareU
2289
2414
  }
2290
2415
 
2291
2416
  private isProtocolV2ReconnectIdentityError(error: unknown) {
2292
- return this.normalizeErrorMessage(error).includes('Protocol V2 reconnect physical identity');
2417
+ // A serial can be temporarily unavailable while Loader starts, and BLE has no stable path.
2418
+ // Keep polling unless the device explicitly reports a different serial.
2419
+ return this.normalizeErrorMessage(error).includes(
2420
+ 'Protocol V2 reconnect physical identity mismatch'
2421
+ );
2293
2422
  }
2294
2423
 
2295
2424
  private async fileWriteChunk(
@@ -2315,7 +2444,10 @@ export default class FirmwareUpdateV4 extends FirmwareUpdateBaseMethod<FirmwareU
2315
2444
  append: false,
2316
2445
  ui_percentage: progress ?? undefined,
2317
2446
  },
2318
- { writeWithResponse: true }
2447
+ {
2448
+ writeWithResponse: false,
2449
+ onWriteCompleted: () => undefined,
2450
+ }
2319
2451
  );
2320
2452
  if (writeRes.type !== 'FilesystemFile') {
2321
2453
  if ((writeRes as any).type === 'CallMethodError') {
@@ -9,7 +9,7 @@ import { LoggerNames, getLogger } from '../../utils/logger';
9
9
 
10
10
  import type { DeviceCommands } from '../../device/DeviceCommands';
11
11
 
12
- const Log = getLogger(LoggerNames.Method);
12
+ const Log = getLogger(LoggerNames.Core);
13
13
 
14
14
  export type ProtocolV2FileWriteData = ArrayBuffer | Uint8Array | Blob | string;
15
15
 
@@ -35,6 +35,7 @@ export type ProtocolV2FileWriteOptions = {
35
35
  totalSize?: number;
36
36
  chunkSize?: number;
37
37
  chunkLen?: number;
38
+ chunkSizeLimit?: number;
38
39
  overwrite?: boolean;
39
40
  append?: boolean;
40
41
  uiPercentage?: number;
@@ -69,22 +70,36 @@ function getFileTransferTransport() {
69
70
  function logFileTransferMetrics({
70
71
  transport,
71
72
  status,
73
+ path,
72
74
  transferredBytes,
73
75
  totalBytes,
74
76
  elapsedMs,
75
77
  rateBytesPerSecond,
78
+ hostWriteElapsedMs,
79
+ responseWaitElapsedMs,
80
+ measuredAttempts,
76
81
  }: {
77
82
  transport: string;
78
83
  status: 'progress' | 'completed' | 'failed';
84
+ path: string;
79
85
  transferredBytes: number;
80
86
  totalBytes: number;
81
87
  elapsedMs: number;
82
88
  rateBytesPerSecond: number;
89
+ hostWriteElapsedMs: number;
90
+ responseWaitElapsedMs: number;
91
+ measuredAttempts: number;
83
92
  }) {
93
+ const segmentedMetrics =
94
+ measuredAttempts > 0
95
+ ? ` hostWriteTotal=${(hostWriteElapsedMs / 1000).toFixed(2)}s responseWaitTotal=${(
96
+ responseWaitElapsedMs / 1000
97
+ ).toFixed(2)}s measuredAttempts=${measuredAttempts}`
98
+ : '';
84
99
  Log.log(
85
- `[FileWrite] metrics transport=${transport} status=${status} bytes=${transferredBytes}/${totalBytes} elapsed=${(
100
+ `[FileWrite] metrics transport=${transport} status=${status} path=${path} bytes=${transferredBytes}/${totalBytes} elapsed=${(
86
101
  elapsedMs / 1000
87
- ).toFixed(2)}s speed=${formatFileTransferRate(rateBytesPerSecond)} KiB/s`
102
+ ).toFixed(2)}s speed=${formatFileTransferRate(rateBytesPerSecond)} KiB/s${segmentedMetrics}`
88
103
  );
89
104
  }
90
105
 
@@ -163,10 +178,13 @@ export async function writeProtocolV2File(options: ProtocolV2FileWriteOptions) {
163
178
  );
164
179
  }
165
180
 
166
- const chunkSize = normalizeChunkSize(
167
- options.chunkSize ?? options.chunkLen,
168
- getProtocolV2FileChunkLimit()
169
- );
181
+ const defaultChunkSizeLimit = getProtocolV2FileChunkLimit();
182
+ const configuredChunkSizeLimit = Number(options.chunkSizeLimit);
183
+ const chunkSizeLimit =
184
+ Number.isFinite(configuredChunkSizeLimit) && configuredChunkSizeLimit > 0
185
+ ? Math.floor(configuredChunkSizeLimit)
186
+ : defaultChunkSizeLimit;
187
+ const chunkSize = normalizeChunkSize(options.chunkSize ?? options.chunkLen, chunkSizeLimit);
170
188
  let written = 0;
171
189
  let chunks = 0;
172
190
  let lastMessage: Record<string, unknown> | undefined;
@@ -177,7 +195,13 @@ export async function writeProtocolV2File(options: ProtocolV2FileWriteOptions) {
177
195
  let lastConfirmedAt = startTime;
178
196
  let logWindowStartedAt = startTime;
179
197
  let logWindowStartedBytes = 0;
198
+ let hostWriteElapsedMs = 0;
199
+ let responseWaitElapsedMs = 0;
200
+ let measuredAttempts = 0;
180
201
  const transport = getFileTransferTransport();
202
+ Log.log(
203
+ `[FileWrite] started transport=${transport} path=${options.path} bytes=${dataLength} offset=${startOffset} chunk=${chunkSize}`
204
+ );
181
205
 
182
206
  try {
183
207
  while (written < dataLength) {
@@ -203,13 +227,25 @@ export async function writeProtocolV2File(options: ProtocolV2FileWriteOptions) {
203
227
  let response;
204
228
  let isWritePending = true;
205
229
  while (isWritePending) {
230
+ let currentHostWriteElapsedMs: number | undefined;
231
+ let responseWaitStartedAt: number | undefined;
206
232
  try {
207
233
  const callOptions =
208
234
  options.writeWithResponse === undefined
209
- ? { timeoutMs: options.timeoutMs }
235
+ ? {
236
+ timeoutMs: options.timeoutMs,
237
+ onWriteCompleted: ({ elapsedMs }: { elapsedMs: number }) => {
238
+ currentHostWriteElapsedMs = elapsedMs;
239
+ responseWaitStartedAt = Date.now();
240
+ },
241
+ }
210
242
  : {
211
243
  ...(options.timeoutMs === undefined ? {} : { timeoutMs: options.timeoutMs }),
212
244
  writeWithResponse: options.writeWithResponse,
245
+ onWriteCompleted: ({ elapsedMs }: { elapsedMs: number }) => {
246
+ currentHostWriteElapsedMs = elapsedMs;
247
+ responseWaitStartedAt = Date.now();
248
+ },
213
249
  };
214
250
  response = await options.commands.typedCall(
215
251
  'FilesystemFileWrite',
@@ -222,6 +258,12 @@ export async function writeProtocolV2File(options: ProtocolV2FileWriteOptions) {
222
258
  if (retryCount >= maxChunkRetries || !isProtocolV2ResponseTimeout(error)) throw error;
223
259
  retryCount += 1;
224
260
  options.throwIfAborted?.();
261
+ } finally {
262
+ if (currentHostWriteElapsedMs !== undefined && responseWaitStartedAt !== undefined) {
263
+ hostWriteElapsedMs += currentHostWriteElapsedMs;
264
+ responseWaitElapsedMs += Math.max(Date.now() - responseWaitStartedAt, 0);
265
+ measuredAttempts += 1;
266
+ }
225
267
  }
226
268
  }
227
269
  if (!response) {
@@ -285,10 +327,14 @@ export async function writeProtocolV2File(options: ProtocolV2FileWriteOptions) {
285
327
  logFileTransferMetrics({
286
328
  transport,
287
329
  status: 'progress',
330
+ path: options.path,
288
331
  transferredBytes,
289
332
  totalBytes: dataLength,
290
333
  elapsedMs,
291
334
  rateBytesPerSecond: getAverageFileTransferRate(logWindowBytes, logWindowElapsedMs),
335
+ hostWriteElapsedMs,
336
+ responseWaitElapsedMs,
337
+ measuredAttempts,
292
338
  });
293
339
  logWindowStartedAt = now;
294
340
  logWindowStartedBytes = transferredBytes;
@@ -307,10 +353,14 @@ export async function writeProtocolV2File(options: ProtocolV2FileWriteOptions) {
307
353
  logFileTransferMetrics({
308
354
  transport,
309
355
  status: 'failed',
356
+ path: options.path,
310
357
  transferredBytes: written,
311
358
  totalBytes: dataLength,
312
359
  elapsedMs,
313
360
  rateBytesPerSecond: getAverageFileTransferRate(logWindowBytes, logWindowElapsedMs),
361
+ hostWriteElapsedMs,
362
+ responseWaitElapsedMs,
363
+ measuredAttempts,
314
364
  });
315
365
  throw error;
316
366
  }
@@ -321,10 +371,14 @@ export async function writeProtocolV2File(options: ProtocolV2FileWriteOptions) {
321
371
  logFileTransferMetrics({
322
372
  transport,
323
373
  status: 'completed',
374
+ path: options.path,
324
375
  transferredBytes: written,
325
376
  totalBytes: dataLength,
326
377
  elapsedMs,
327
378
  rateBytesPerSecond: getAverageFileTransferRate(logWindowBytes, logWindowElapsedMs),
379
+ hostWriteElapsedMs,
380
+ responseWaitElapsedMs,
381
+ measuredAttempts,
328
382
  });
329
383
 
330
384
  return {
@@ -17,6 +17,7 @@ export const PROTOCOL_V2_RESOURCE_TYPES = [
17
17
  'translations',
18
18
  'roobert',
19
19
  'noto',
20
+ 'firmware_logo',
20
21
  ] as const satisfies readonly IProtocolV2ResourceType[];
21
22
 
22
23
  export const PROTOCOL_V2_RESOURCE_DEVICE_PATHS: Readonly<Record<IProtocolV2ResourceType, string>> =
@@ -27,6 +28,7 @@ export const PROTOCOL_V2_RESOURCE_DEVICE_PATHS: Readonly<Record<IProtocolV2Resou
27
28
  translations: 'vol0:/bundles/translations/translations.okpkg',
28
29
  roobert: 'vol0:/bundles/font/roobert.okpkg',
29
30
  noto: 'vol0:/bundles/font/noto.okpkg',
31
+ firmware_logo: 'vol0:/bundles/firmware_logo.okpkg',
30
32
  };
31
33
 
32
34
  const RESOURCE_TYPE_SET = new Set<string>(PROTOCOL_V2_RESOURCE_TYPES);
@@ -313,7 +315,9 @@ export function parseProtocolV2Resources(value: unknown): IProtocolV2Resources |
313
315
  const stable = config.stable.map(validateResource);
314
316
  const types = new Set(stable.map(resource => resource.type));
315
317
  if (stable.length !== PROTOCOL_V2_RESOURCE_TYPES.length || types.size !== stable.length) {
316
- throw new Error('Invalid Pro2 resources config: stable must contain six unique resource types');
318
+ throw new Error(
319
+ `Invalid Pro2 resources config: stable must contain ${PROTOCOL_V2_RESOURCE_TYPES.length} unique resource types`
320
+ );
317
321
  }
318
322
  for (const type of PROTOCOL_V2_RESOURCE_TYPES) {
319
323
  if (!types.has(type)) {
@@ -157,6 +157,7 @@ export interface FirmwareUpdateV4Params {
157
157
  /**
158
158
  * Arbitrary Protocol V2 resource files written directly with FilesystemFileWrite.
159
159
  * Use this for manifest-driven boot resources and other non-RESC files.
160
+ * When provided, these files are authoritative for resource and boot_resources targets.
160
161
  */
161
162
  resourceFiles?: Array<{
162
163
  binary: ArrayBuffer;
@@ -70,7 +70,8 @@ export type IProtocolV2ResourceType =
70
70
  | 'wallpaper'
71
71
  | 'translations'
72
72
  | 'roobert'
73
- | 'noto';
73
+ | 'noto'
74
+ | 'firmware_logo';
74
75
 
75
76
  /** Pro2 RES package descriptor. Hashes identify content without a human-managed version. */
76
77
  export type IProtocolV2Resource = {