@onekeyfe/hd-core 1.2.0-alpha.90 → 1.2.0-alpha.92
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__/protocol-v2.test.ts +79 -29
- package/dist/api/FirmwareUpdateV4.d.ts +3 -0
- package/dist/api/FirmwareUpdateV4.d.ts.map +1 -1
- package/dist/api/firmware/getBinary.d.ts +1 -0
- package/dist/api/firmware/getBinary.d.ts.map +1 -1
- package/dist/index.d.ts +14 -1
- package/dist/index.js +142 -25
- package/dist/types/settings.d.ts +11 -0
- package/dist/types/settings.d.ts.map +1 -1
- package/package.json +4 -4
- package/src/api/FirmwareUpdateV4.ts +191 -16
- package/src/types/settings.ts +14 -0
|
@@ -6609,12 +6609,13 @@ describe('Protocol V2 firmware update targets', () => {
|
|
|
6609
6609
|
payload: {
|
|
6610
6610
|
method: 'firmwareUpdateV4',
|
|
6611
6611
|
platform: 'web',
|
|
6612
|
-
targetsToUpdate: ['app_v1'
|
|
6612
|
+
targetsToUpdate: ['app_v1'],
|
|
6613
6613
|
applicationP1Binary,
|
|
6614
6614
|
resourceArchiveBinary,
|
|
6615
6615
|
},
|
|
6616
6616
|
});
|
|
6617
6617
|
method.init();
|
|
6618
|
+
expect((method as any).params.targetsToUpdate).toEqual(['app_v1', 'resource']);
|
|
6618
6619
|
(method as any).captureProtocolV2PhysicalIdentity = jest.fn().mockResolvedValue(undefined);
|
|
6619
6620
|
(method as any).postTipMessage = jest.fn();
|
|
6620
6621
|
(method as any).device = stubDevice({
|
|
@@ -6782,39 +6783,86 @@ describe('Protocol V2 firmware update targets', () => {
|
|
|
6782
6783
|
expect((method as any).params.targetsToUpdate).toEqual(['resource']);
|
|
6783
6784
|
});
|
|
6784
6785
|
|
|
6785
|
-
test
|
|
6786
|
-
|
|
6787
|
-
|
|
6788
|
-
|
|
6789
|
-
|
|
6790
|
-
|
|
6791
|
-
|
|
6792
|
-
|
|
6793
|
-
|
|
6794
|
-
|
|
6795
|
-
|
|
6796
|
-
|
|
6797
|
-
|
|
6798
|
-
artifact: {
|
|
6799
|
-
artifactRef: 'legacy-resource',
|
|
6800
|
-
size: 1,
|
|
6801
|
-
sha256: '1'.repeat(64),
|
|
6786
|
+
test('keeps the deprecated resourceFiles path as a validated local compatibility flow', () => {
|
|
6787
|
+
const binary = new Uint8Array([1]).buffer;
|
|
6788
|
+
const method = new FirmwareUpdateV4({
|
|
6789
|
+
id: 1,
|
|
6790
|
+
payload: {
|
|
6791
|
+
method: 'firmwareUpdateV4',
|
|
6792
|
+
platform: 'web',
|
|
6793
|
+
resourceFiles: [
|
|
6794
|
+
{
|
|
6795
|
+
binary,
|
|
6796
|
+
devicePath: 'vol0:/bundles/images/images.okpkg',
|
|
6797
|
+
size: binary.byteLength,
|
|
6798
|
+
fileHash: bytesToHex(sha256(new Uint8Array(binary))),
|
|
6802
6799
|
},
|
|
6803
|
-
|
|
6804
|
-
|
|
6805
|
-
}
|
|
6806
|
-
|
|
6800
|
+
],
|
|
6801
|
+
},
|
|
6802
|
+
});
|
|
6803
|
+
|
|
6804
|
+
expect(() => method.init()).not.toThrow();
|
|
6805
|
+
expect((method as any).params.targetsToUpdate).toEqual(['resource']);
|
|
6806
|
+
expect((method as any).prepareLegacyProtocolV2ResourceFiles()).toEqual([
|
|
6807
|
+
{
|
|
6808
|
+
name: 'images.okpkg',
|
|
6809
|
+
binary,
|
|
6810
|
+
devicePath: 'vol0:/bundles/images/images.okpkg',
|
|
6811
|
+
},
|
|
6812
|
+
]);
|
|
6813
|
+
});
|
|
6814
|
+
|
|
6815
|
+
test('keeps resourceBundleArtifacts for genuinely non-prepared legacy calls', async () => {
|
|
6816
|
+
const artifact = {
|
|
6817
|
+
artifactRef: 'legacy-resource',
|
|
6818
|
+
size: 1,
|
|
6819
|
+
sha256: '1'.repeat(64),
|
|
6820
|
+
};
|
|
6807
6821
|
const method = new FirmwareUpdateV4({
|
|
6808
6822
|
id: 1,
|
|
6809
6823
|
payload: {
|
|
6810
6824
|
method: 'firmwareUpdateV4',
|
|
6811
6825
|
platform: 'web',
|
|
6812
|
-
|
|
6813
|
-
|
|
6826
|
+
resourceBundleArtifacts: [
|
|
6827
|
+
{
|
|
6828
|
+
name: 'images',
|
|
6829
|
+
artifact,
|
|
6830
|
+
},
|
|
6831
|
+
],
|
|
6814
6832
|
},
|
|
6815
6833
|
});
|
|
6834
|
+
method.init();
|
|
6835
|
+
const source = { size: 1 };
|
|
6836
|
+
(method as any).openProtocolV2PreparedSource = jest.fn().mockResolvedValue(source);
|
|
6837
|
+
const releaseSpy = jest.spyOn(DataManager, 'getFirmwareLatestRelease').mockReturnValue({
|
|
6838
|
+
resourceBundles: [
|
|
6839
|
+
{
|
|
6840
|
+
name: 'images',
|
|
6841
|
+
devicePath: 'vol0:/bundles/images/images.okpkg',
|
|
6842
|
+
version: '1.0.0',
|
|
6843
|
+
payloadHash: '2'.repeat(128),
|
|
6844
|
+
headerHash: '3'.repeat(128),
|
|
6845
|
+
},
|
|
6846
|
+
],
|
|
6847
|
+
} as any);
|
|
6816
6848
|
|
|
6817
|
-
|
|
6849
|
+
try {
|
|
6850
|
+
await expect(
|
|
6851
|
+
(method as any).prepareLegacyProtocolV2ResourceBundleSources(
|
|
6852
|
+
EFirmwareType.Universal,
|
|
6853
|
+
{} as Features
|
|
6854
|
+
)
|
|
6855
|
+
).resolves.toEqual([
|
|
6856
|
+
expect.objectContaining({
|
|
6857
|
+
name: 'images',
|
|
6858
|
+
source,
|
|
6859
|
+
devicePath: 'vol0:/bundles/images/images.okpkg',
|
|
6860
|
+
}),
|
|
6861
|
+
]);
|
|
6862
|
+
expect((method as any).params.targetsToUpdate).toEqual(['resource']);
|
|
6863
|
+
} finally {
|
|
6864
|
+
releaseSpy.mockRestore();
|
|
6865
|
+
}
|
|
6818
6866
|
});
|
|
6819
6867
|
|
|
6820
6868
|
test('keeps the legacy componentArtifacts and artifactReader path without a prepared Plan', async () => {
|
|
@@ -7768,7 +7816,7 @@ describe('Protocol V2 firmware reconnect identity', () => {
|
|
|
7768
7816
|
);
|
|
7769
7817
|
});
|
|
7770
7818
|
|
|
7771
|
-
test('
|
|
7819
|
+
test('uses the connection route when DeviceInfo has no physical serial', async () => {
|
|
7772
7820
|
const method = new FirmwareUpdateV4({
|
|
7773
7821
|
id: 1,
|
|
7774
7822
|
payload: { method: 'firmwareUpdateV4' },
|
|
@@ -7778,12 +7826,14 @@ describe('Protocol V2 firmware reconnect identity', () => {
|
|
|
7778
7826
|
message: { protocol_version: 1, hw: {} },
|
|
7779
7827
|
});
|
|
7780
7828
|
(method as any).device = stubDevice({
|
|
7829
|
+
originalDescriptor: { path: '' },
|
|
7830
|
+
getConnectId: () => '000000000000',
|
|
7781
7831
|
getCommands: () => ({ typedCall }),
|
|
7782
7832
|
});
|
|
7783
7833
|
|
|
7784
|
-
await expect((method as any).captureProtocolV2PhysicalIdentity()).
|
|
7785
|
-
|
|
7786
|
-
|
|
7834
|
+
await expect((method as any).captureProtocolV2PhysicalIdentity()).resolves.toBeUndefined();
|
|
7835
|
+
expect((method as any).protocolV2ExpectedSerialNumber).toBeUndefined();
|
|
7836
|
+
expect((method as any).protocolV2ExpectedPath).toBe('000000000000');
|
|
7787
7837
|
});
|
|
7788
7838
|
|
|
7789
7839
|
test('uses the BLE read limit when reading an existing firmware bundle header', async () => {
|
|
@@ -28,6 +28,8 @@ export default class FirmwareUpdateV4 extends FirmwareUpdateBaseMethod<FirmwareU
|
|
|
28
28
|
private prepareProtocolV2LocalMemoryHost;
|
|
29
29
|
private prepareProtocolV2LocalResourceArchive;
|
|
30
30
|
private prepareProtocolV2ResourceSources;
|
|
31
|
+
private prepareLegacyProtocolV2ResourceBundleSources;
|
|
32
|
+
private prepareLegacyProtocolV2ResourceFiles;
|
|
31
33
|
private prepareProtocolV2ResourceArchiveSources;
|
|
32
34
|
private runProtocolV2PreparedArtifacts;
|
|
33
35
|
private validateExpectedTargetVersions;
|
|
@@ -36,6 +38,7 @@ export default class FirmwareUpdateV4 extends FirmwareUpdateBaseMethod<FirmwareU
|
|
|
36
38
|
private getProtocolV2RequestedTargets;
|
|
37
39
|
private getProtocolV2DeviceFeatures;
|
|
38
40
|
private getProtocolV2SerialNumber;
|
|
41
|
+
private getProtocolV2ConnectionRoute;
|
|
39
42
|
private assertProtocolV2DeviceInfoIdentity;
|
|
40
43
|
private getProtocolV2DeviceInfoTimeout;
|
|
41
44
|
private requestProtocolV2PhysicalIdentity;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"FirmwareUpdateV4.d.ts","sourceRoot":"","sources":["../../src/api/FirmwareUpdateV4.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAkD,MAAM,qBAAqB,CAAC;
|
|
1
|
+
{"version":3,"file":"FirmwareUpdateV4.d.ts","sourceRoot":"","sources":["../../src/api/FirmwareUpdateV4.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAkD,MAAM,qBAAqB,CAAC;AA0BlG,OAAO,EAAE,wBAAwB,EAAE,MAAM,qCAAqC,CAAC;AAkC/E,OAAO,KAAK,EAEV,sBAAsB,EAEvB,MAAM,6BAA6B,CAAC;AA2ErC,wBAAgB,wCAAwC,CACtD,UAAU,EAAE,WAAW,GAAG,MAAM,GAAG,SAAS,EAC5C,MAAM,EAAE,sBAAsB,QAgB/B;AAoWD,eAAO,MAAM,oCAAoC,WACvC,WAAW,GAAG,UAAU,eACnB,MAAM,GAAG,SAAS,YAKhC,CAAC;AAEF,eAAO,MAAM,iCAAiC,0BACrB,MAAM,uBACR,MAAM,iBACZ,MAAM,eACR,MAAM,SAsBpB,CAAC;AAUF,MAAM,CAAC,OAAO,OAAO,gBAAiB,SAAQ,wBAAwB,CAAC,sBAAsB,CAAC;IAC5F,OAAO,CAAC,8BAA8B,CAAC,CAAS;IAEhD,OAAO,CAAC,sBAAsB,CAAC,CAAS;IAExC,qBAAqB;IAIrB,OAAO,CAAC,yBAAyB,CAA4B;IAE7D,OAAO,CAAC,2BAA2B,CAAS;IAE5C,OAAO,CAAC,iCAAiC,CAA6B;IAEtE,OAAO,CAAC,6BAA6B,CAAC,CAAW;IAEjD,OAAO,CAAC,6BAA6B,CAAS;IAE9C,IAAI;IAkLJ,OAAO,CAAC,8BAA8B;IAwBhC,GAAG;;;;;YAKK,aAAa;YAsJb,4BAA4B;YAkB5B,0BAA0B;YAY1B,8BAA8B;YAK9B,+BAA+B;YAqG/B,gCAAgC;YA8HhC,qCAAqC;YA0IrC,gCAAgC;YAsBhC,4CAA4C;IA6D1D,OAAO,CAAC,oCAAoC;YAkD9B,uCAAuC;YAwHvC,8BAA8B;IAsB5C,OAAO,CAAC,8BAA8B;IA0BtC,OAAO,CAAC,kCAAkC;IAc1C,OAAO,CAAC,gCAAgC;IAsDxC,OAAO,CAAC,6BAA6B;YAsBvB,2BAA2B;IAWzC,OAAO,CAAC,yBAAyB;IAKjC,OAAO,CAAC,4BAA4B;IAUpC,OAAO,CAAC,kCAAkC;IAS1C,OAAO,CAAC,8BAA8B;YAMxB,iCAAiC;YAOjC,iCAAiC;YAkBjC,iCAAiC;IAM/C,OAAO,CAAC,uBAAuB;IAI/B,OAAO,CAAC,mCAAmC;IAe3C,OAAO,CAAC,2BAA2B;IAsBnC,OAAO,CAAC,yBAAyB;IAiBjC,OAAO,CAAC,wBAAwB;YAkBlB,iCAAiC;YAuDjC,+BAA+B;IA6E7C,OAAO,CAAC,6BAA6B;YAMvB,8BAA8B;YA+C9B,kCAAkC;IA+BhD,OAAO,CAAC,0BAA0B;IAUlC,OAAO,CAAC,yBAAyB;IAc3B,6BAA6B;YAgCrB,+BAA+B;IAkD7C,OAAO,CAAC,6BAA6B;IAkCrC,OAAO,CAAC,8BAA8B;YA8CxB,uBAAuB;YAiCvB,6BAA6B;YAa7B,uBAAuB;YA6CvB,8BAA8B;YA8D9B,6BAA6B;IAuE3C,OAAO,CAAC,mCAAmC;YAI7B,0BAA0B;IAaxC,OAAO,CAAC,4BAA4B;IAyGpC,OAAO,CAAC,6BAA6B;YAcvB,uCAAuC;YA0JvC,gCAAgC;YAehC,yBAAyB;YAQzB,8BAA8B;IAQ5C,OAAO,CAAC,0BAA0B;YAkBpB,mCAAmC;YAWnC,qCAAqC;YAgDrC,yBAAyB;YA8DzB,8BAA8B;IAU5C,OAAO,CAAC,kCAAkC;YAQ5B,cAAc;YAuCd,6BAA6B;YAW7B,0BAA0B;YAS1B,6BAA6B;YAmB7B,gBAAgB;IAiB9B,OAAO,CAAC,qBAAqB;CAM9B"}
|
|
@@ -35,6 +35,7 @@ export declare const getBinary: ({ features, updateType, version, isUpdateBootlo
|
|
|
35
35
|
upgradeType?: string | undefined;
|
|
36
36
|
components?: Record<string, import("../../types").IProtocolV2FirmwareComponent> | undefined;
|
|
37
37
|
installOrder?: string[] | undefined;
|
|
38
|
+
resourceBundles?: import("../../types").IProtocolV2ResourceBundle[] | undefined;
|
|
38
39
|
bootloaderChangelog?: {
|
|
39
40
|
"zh-CN": string;
|
|
40
41
|
"en-US": string;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"getBinary.d.ts","sourceRoot":"","sources":["../../../src/api/firmware/getBinary.ts"],"names":[],"mappings":";AAQA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAC;AAC5C,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,0BAA0B,CAAC;AACnE,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AAGzD,MAAM,MAAM,cAAc,GAAG,WAAW,GAAG,MAAM,CAAC;AAElD,MAAM,WAAW,YAAY;IAC3B,QAAQ,EAAE,QAAQ,CAAC;IACnB,UAAU,EAAE,UAAU,GAAG,KAAK,CAAC;IAC/B,kBAAkB,CAAC,EAAE,OAAO,CAAC;IAC7B,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,YAAY,EAAE,aAAa,CAAC;CAC7B;AAED,UAAU,cAAe,SAAQ,YAAY;IAC3C,OAAO,CAAC,EAAE,MAAM,EAAE,CAAC;IACnB,cAAc,CAAC,EAAE,kBAAkB,CAAC;CACrC;AAED,eAAO,MAAM,SAAS,yFAOnB,cAAc
|
|
1
|
+
{"version":3,"file":"getBinary.d.ts","sourceRoot":"","sources":["../../../src/api/firmware/getBinary.ts"],"names":[],"mappings":";AAQA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAC;AAC5C,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,0BAA0B,CAAC;AACnE,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AAGzD,MAAM,MAAM,cAAc,GAAG,WAAW,GAAG,MAAM,CAAC;AAElD,MAAM,WAAW,YAAY;IAC3B,QAAQ,EAAE,QAAQ,CAAC;IACnB,UAAU,EAAE,UAAU,GAAG,KAAK,CAAC;IAC/B,kBAAkB,CAAC,EAAE,OAAO,CAAC;IAC7B,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,YAAY,EAAE,aAAa,CAAC;CAC7B;AAED,UAAU,cAAe,SAAQ,YAAY;IAC3C,OAAO,CAAC,EAAE,MAAM,EAAE,CAAC;IACnB,cAAc,CAAC,EAAE,kBAAkB,CAAC;CACrC;AAED,eAAO,MAAM,SAAS,yFAOnB,cAAc;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAsChB,CAAC;AAEF,eAAO,MAAM,oBAAoB,QAAe,MAAM;;EAWrD,CAAC;AAEF,eAAO,MAAM,OAAO,0DAA2D,YAAY,kEAe1F,CAAC"}
|
package/dist/index.d.ts
CHANGED
|
@@ -219,6 +219,17 @@ type IProtocolV2ResourceSource = {
|
|
|
219
219
|
type IProtocolV2Resources = {
|
|
220
220
|
source: IProtocolV2ResourceSource;
|
|
221
221
|
};
|
|
222
|
+
/** @deprecated Legacy per-bundle resource descriptor retained for published V4 callers. */
|
|
223
|
+
type IProtocolV2ResourceBundle = {
|
|
224
|
+
name: string;
|
|
225
|
+
url: string;
|
|
226
|
+
fingerprint?: string;
|
|
227
|
+
expectedSize?: number;
|
|
228
|
+
devicePath: string;
|
|
229
|
+
version?: IVersionArray;
|
|
230
|
+
payloadHash?: string;
|
|
231
|
+
headerHash?: string;
|
|
232
|
+
};
|
|
222
233
|
type IProtocolV2ResourceManifestFile = {
|
|
223
234
|
archive_path: string;
|
|
224
235
|
original_name: string;
|
|
@@ -274,6 +285,8 @@ type IFirmwareReleaseInfo = {
|
|
|
274
285
|
upgradeType?: 'payload-package-set' | string;
|
|
275
286
|
components?: Record<string, IProtocolV2FirmwareComponent>;
|
|
276
287
|
installOrder?: string[];
|
|
288
|
+
/** @deprecated New Protocol V2 releases use the independent signed resource ZIP. */
|
|
289
|
+
resourceBundles?: IProtocolV2ResourceBundle[];
|
|
277
290
|
bootloaderChangelog?: {
|
|
278
291
|
[k in ILocale]: string;
|
|
279
292
|
};
|
|
@@ -4915,4 +4928,4 @@ declare const HardwareSdk: ({ init, call, dispose, eventEmitter, uiResponse, can
|
|
|
4915
4928
|
declare const HardwareSDKLowLevel: ({ init, call, dispose, eventEmitter, addHardwareGlobalEventListener, uiResponse, cancel, updateSettings, switchTransport, }: LowLevelInjectApi) => LowLevelCoreApi;
|
|
4916
4929
|
declare const HardwareTopLevelSdk: () => CoreApi;
|
|
4917
4930
|
|
|
4918
|
-
export { AccountAddress, AccountAddresses, AlephiumAddress, AlephiumGetAddressParams, AlephiumSignMessageParams, AlephiumSignTransactionParams, AlephiumSignedTx, AlgoAddress, AlgoGetAddressParams, AlgoSignTransactionParams, AlgoSignedTx, AllFirmwareRelease, AllNetworkAddressParams, AllNetworkGetAddressParams, AptosAddress, AptosGetAddressParams, AptosGetPublicKeyParams, AptosMessageSignature, AptosPublicKey, AptosSignInMessageParams, AptosSignInMessageSignature, AptosSignMessageParams, AptosSignTransactionParams, AptosSignedTx, AssetsMap, BTCAddress, BTCGetAddressParams, BTCGetPublicKeyParams, BTCPublicKey, BTCSignMessageParams, BTCSignTransactionParams, BTCVerifyMessageParams, BenfenAddress, BenfenGetAddressParams, BenfenGetPublicKeyParams, BenfenPublicKey, BenfenSignMessageParams, BenfenSignTransactionParams, BenfenSignedTx, BleReleaseInfoEvent, BleReleaseInfoPayload, BridgeReleaseCheckResult, CORE_EVENT, CallMethod, CallMethodAnyResponse, CallMethodKeys, CallMethodPayload, CallMethodResponse, CallMethodUnion, CardanoAddress, CardanoGetAddressMethodParams, CardanoGetAddressParams, CardanoSignMessageMethodParams, CardanoSignMessageParams, CardanoSignTransaction, CardanoSignedTxData, CipheredKeyValue, CipheredKeyValueParams, ClearSessionCacheParams, ClearSessionCachePayload, CommonParams, ConfluxAddress, ConfluxGetAddressParams, ConfluxSignMessageCIP23Params, ConfluxSignMessageParams, ConfluxSignTransactionParams, ConfluxSignedTx, ConfluxTransaction, ConnectSettings, Core, CoreApi, CoreMessage, CosmosAddress, CosmosGetAddressParams, CosmosGetPublicKeyParams, CosmosPublicKey, CosmosSignTransactionParams, CosmosSignedTx, DEFAULT_PRIORITY, DEVICE, DEVICE_EVENT, DEVICE_SETTINGS_SHARED_FIELDS, DEVICE_SETTINGS_V1_ONLY_FIELDS, DEVICE_SETTINGS_V2_ONLY_FIELDS, DataManager, Device$1 as Device, DeviceButtonRequest, DeviceButtonRequestPayload, DeviceChangePinParams, DeviceConnnectRequest, DeviceDisconnnectRequest, DeviceEvent, DeviceEventListenerFn, DeviceEventMessage, DeviceFeaturesMode, DeviceFeaturesPayload, DeviceFeaturesProtocol, DeviceFeaturesRaw, DeviceFeaturesRawPatch, DeviceFeaturesVerify, DeviceFirmwareRange, DeviceFlagsParams, DeviceModelToTypes, DeviceProgress, DeviceRecoveryParams, DeviceResetParams, DeviceSendFeatures, DeviceSendState, DeviceSendSupportFeatures, DeviceSettingsCapabilities, DeviceSettingsDurationOption, DeviceSettingsField, DeviceSettingsParams, DeviceSettingsProtocol, DeviceSettingsValueOption, DeviceState, DeviceStateEvent, DeviceStateIdentity, DeviceStateMode, DeviceStatePatch, DeviceStateProtocol, DeviceStateScope, DeviceStateSection, DeviceStateSecurityElement, DeviceStateSecurityElements, DeviceStateSecurityElementsPatch, DeviceStateSettings, DeviceStateStatus, DeviceStateUpdateSource, DeviceStateVersions, DeviceStatus, DeviceSupportFeatures, DeviceSupportFeaturesPayload, DeviceTypeMap, DeviceTypeToModels, DeviceUnlockParams, DeviceUploadResourceParams, DeviceUploadResourceResponse, DeviceVerifyParams, DeviceVerifySignature, DnxAddress, DnxGetAddressParams, DnxSignTransactionParams, DnxSignature, DnxTxKey, EOneKeyDeviceMode, EVMAccessList, EVMAddress, EVMAuthorization, EVMAuthorizationSignature, EVMGetAddressParams, EVMGetPublicKeyParams, EVMPublicKey, EVMSignMessageEIP712Params, EVMSignMessageParams, EVMSignTransactionParams, EVMSignTypedDataParams, EVMSignedTx, EVMTransaction, EVMTransactionEIP1559, EVMTransactionEIP7702, EVMVerifyMessageParams, EthereumSignTypedDataMessage, EthereumSignTypedDataTypeProperty, EthereumSignTypedDataTypes, FIRMWARE, FIRMWARE_EVENT, Features, FilecoinAddress, FilecoinGetAddressParams, FilecoinSignTransactionParams, FilecoinSignedTx, FirmwareArtifactReader, FirmwareArtifactReference, FirmwareEvent, FirmwareMemoryArtifact, FirmwareMemoryArtifactEntry, FirmwareMessage, FirmwareProcessing, FirmwareProgress, FirmwareRange, FirmwareRelease, FirmwareReleaseCheckResult, FirmwareTip, FirmwareUpdateArtifactParams, FirmwareUpdateBinaryParams, FirmwareUpdateCapabilities, FirmwareUpdateHostBinding, FirmwareUpdateParams, FirmwareUpdatePlan, FirmwareUpdatePlanArtifact, FirmwareUpdatePlanArtifactRole, FirmwareUpdatePlanForceTarget, FirmwareUpdatePlanTarget, FirmwareUpdatePreparedArtifact, FirmwareUpdatePreparedArtifactInput, FirmwareUpdatePreparedEntry, FirmwareUpdatePreparedPlan, FirmwareUpdateTipMessage, FirmwareUpdateV3Params, FirmwareUpdateV4MemoryHost, FirmwareUpdateV4Params, FirmwareUpdateV4Target, GetDeviceStateParams, GetPassphraseStateParams, HardwareSDKLowLevel, HardwareTopLevelSdk, HardwareUiInteractionMeta, IBLEFirmwareReleaseInfo, IDeviceBLEFirmwareStatus, IDeviceFirmwareStatus, IDeviceModel, IDeviceType, IFRAME, IFirmwareField, IFirmwareReleaseInfo, IFirmwareUpdateProgressType, IFirmwareUpdateTipMessage, IFrameBridge, IFrameCallMessage, IFrameCallback, IFrameCallbackMessage, IFrameCancelMessage, IFrameEvent, IFrameEventMessage, IFrameInit, IFrameSwitchTransport, IFrameSwitchTransportMessage, ILocale, IProtocolV2FirmwareComponent, IProtocolV2FirmwareComponentTarget, IProtocolV2ResourceManifest, IProtocolV2ResourceManifestFile, IProtocolV2ResourceSource, IProtocolV2Resources, ITransportStatus, IVersionArray, IVersionRange, KaspaAddress, KaspaGetAddressParams, KaspaSignInputParams, KaspaSignOutputParams, KaspaSignTransactionParams, KaspaSignature, KaspaStreamingSignInputParams, KaspaStreamingSignOutputParams, KnownDevice, LOG, LOG_EVENT, LogBlockEvent, LogEvent, LogEventMessage, LogOutput, LoggerNames, LowLevelCoreApi, LowLevelInjectApi, MajorVersion, MethodResponseMessage, NEMAddress, NEMAggregateModificationTransaction, NEMGetAddressParams, NEMImportanceTransaction, NEMMosaic, NEMMosaicCreationTransaction, NEMMultisigTransaction, NEMProvisionNamespaceTransaction, NEMSignTransactionParams, NEMSupplyChangeTransaction, NEMTransaction, NEMTransferTransaction, NearAddress, NearGetAddressParams, NearSignTransactionParams, NervosAddress, NervosGetAddressParams, NervosSignTransactionParams, NervosSignedTx, NexaAddress, NexaGetAddressParams, NexaSignInputParams, NexaSignOutputParams, NexaSignTransactionParams, NexaSignature, NormalizedFeatures, OnekeyFeatures, OpenWalletSessionMode, OpenWalletSessionModeValue, OpenWalletSessionParams, OpenWalletSessionPayload, PRO2_WALLPAPER_HEIGHT, PRO2_WALLPAPER_WIDTH, PROTOCOL_V2_NEVER_TIMEOUT_MS, Params, PassphraseRequestPayload, PolkadotAddress, PolkadotGetAddressParams, PolkadotSignTransactionParams, PolkadotSignedTx, PostMessageEvent, PreviousAddressResult, Pro2WallpaperColorFormat, ProtocolV2ComponentReleaseInfo, ProtocolV2FirmwareComponentRelease, ProtocolV2FirmwareComponentReleaseStatus, ProtocolV2FirmwareReleaseStatus, ProtocolV2UiCompletion, ProtocolV2UiEventMetadata, ProtocolV2UiEventSource, RESPONSE_EVENT, RefTransaction, ReleaseInfo, ReleaseInfoEvent, ReleaseInfoPayload, RemoteConfigResponse, RequestContext, Response, ScdoAddress, ScdoGetAddressParams, ScdoSignMessageParams, ScdoSignTransactionParams, ScdoSignedTx, SdkTracingContext, SearchDevice, SignedTransaction, SolSignMessageParams, SolSignMessageResponse, SolSignOffchainMessageParams, SolSignOffchainMessageResponse, SolanaAddress, SolanaGetAddressParams, SolanaSignTransactionParams, SolanaSignedTx, StarcoinAddress, StarcoinGetAddressParams, StarcoinGetPublicKeyParams, StarcoinPublicKey, StarcoinSignMessageParams, StarcoinSignTransactionParams, StarcoinVerifyMessageParams, StellarAddress, StellarAsset, StellarGetAddressParams, StellarOperation, StellarSignTransactionParams, StellarTransaction, StrictFeatures, Success, SuiAddress, SuiGetAddressParams, SuiGetPublicKeyParams, SuiPublicKey, SuiSignMessageParams, SuiSignTransactionParams, SuiSignedTx, SupportFeatureType, SupportFeatures, TestProtocolV2PingParams, TonAddress, TonGetAddressParams, TonSignDataParams, TonSignMessageParams, TonSignProofParams, TopLevelInjectApi, TransactionOptions, TransportReleaseStatus, TronAddress, TronDelegateResourceContract, TronFreezeBalanceV2Contract, TronGetAddressParams, TronSignMessageParams, TronSignTransactionParams, TronTransaction, TronTransactionContract, TronTransferContract, TronTriggerSmartContract, TronUnDelegateResourceContract, TronUnfreezeBalanceV2Contract, TronWithdrawBalanceContract, TronWithdrawExpireUnfreezeContract, UI_EVENT, UI_REQUEST, UI_RESPONSE, UiEvent, UiEventMessage, UiPromise, UiPromiseResponse, UiRequestButton, UiRequestDeviceAction, UiRequestFirmwareProgressing, UiRequestPassphrase, UiRequestPassphraseOnDevice, UiRequestSelectDeviceForSwitchFirmwareWebDevice, UiRequestSelectDeviceInBootloaderForWebDevice, UiRequestWindowClose, UiRequestWithoutPayload, UiResponseCorrelation, UiResponseCorrelationFields, UiResponseEvent, UiResponseMessage, UiResponsePassphrase, UiResponsePin, UiResponseSelectDeviceForSwitchFirmwareWebDevice, UiResponseSelectDeviceInBootloaderForWebDevice, UnavailableCapabilities, UnavailableCapability, Unsuccessful, VersionArray, checkNeedUpdateBootForClassicAndMini, checkNeedUpdateBootForTouch, cleanupCallback, cleanupSdkInstance, completeRequestContext, corsValidator, createDeviceMessage, createErrorMessage, createFirmwareMessage, createIFrameMessage, createLogMessage, createRequestContext, createResponseMessage, createSdkTracingContext, createUiMessage, createUiResponse, HardwareSdk as default, enableLog, encodePro2Wallpaper, executeCallback, formatLogMethodLabel, formatRequestContext, generateInstanceId, generateSdkInstanceId, getActiveRequestsByDeviceInstance, getAutoLockOptions, getAutoShutDownOptions, getDeviceBLEFirmwareVersion, getDeviceBleName, getDeviceBoardloaderVersion, getDeviceBootloaderVersion, getDeviceFirmwareVersion, getDeviceLabel, getDeviceSerialNo, getDeviceSettingsCapabilities, getDeviceType, getDeviceTypeByBleName, getDeviceUUID, getEnv, getFirmwareType, getFirmwareUpdateField, getFirmwareUpdateFieldArray, getFirmwareUpdateHostBindingGeneration, getHDPath, getHomeScreenDefaultList, getHomeScreenHex, getHomeScreenSize, getLanguageConfig, getLog, getLogBlockLabel, getLogger, getMethodSupportedProtocols, getMethodVersionRange, getNftSize, getOutputScriptType, getSDKVersion, getSafeLogPayload, getScriptType, getTimeStamp, httpRequest, init$1 as initCore, isBleConnect, isValidVersionArray, isValidVersionString, normalizeSafetyCheckLevel, normalizeVersionArray, parseConnectSettings, parseMessage, parseProtocolV2ResourceManifest, patchFeatures, preloadSessionCache, prepareFirmwareUpdateV4MemoryHost, projectFeatures as projectDeviceStateFeatures, registerFirmwareUpdateHostBinding, safeThrowError, selectProtocolV2ResourceManifestFiles, setLoggerPostMessage, supportInputPinOnSoftware, switchTransport, transportEnv, unregisterFirmwareUpdateHostBinding, updateRequestContext, versionCompare, versionSplit, wait, whitelist, whitelistExtension };
|
|
4931
|
+
export { AccountAddress, AccountAddresses, AlephiumAddress, AlephiumGetAddressParams, AlephiumSignMessageParams, AlephiumSignTransactionParams, AlephiumSignedTx, AlgoAddress, AlgoGetAddressParams, AlgoSignTransactionParams, AlgoSignedTx, AllFirmwareRelease, AllNetworkAddressParams, AllNetworkGetAddressParams, AptosAddress, AptosGetAddressParams, AptosGetPublicKeyParams, AptosMessageSignature, AptosPublicKey, AptosSignInMessageParams, AptosSignInMessageSignature, AptosSignMessageParams, AptosSignTransactionParams, AptosSignedTx, AssetsMap, BTCAddress, BTCGetAddressParams, BTCGetPublicKeyParams, BTCPublicKey, BTCSignMessageParams, BTCSignTransactionParams, BTCVerifyMessageParams, BenfenAddress, BenfenGetAddressParams, BenfenGetPublicKeyParams, BenfenPublicKey, BenfenSignMessageParams, BenfenSignTransactionParams, BenfenSignedTx, BleReleaseInfoEvent, BleReleaseInfoPayload, BridgeReleaseCheckResult, CORE_EVENT, CallMethod, CallMethodAnyResponse, CallMethodKeys, CallMethodPayload, CallMethodResponse, CallMethodUnion, CardanoAddress, CardanoGetAddressMethodParams, CardanoGetAddressParams, CardanoSignMessageMethodParams, CardanoSignMessageParams, CardanoSignTransaction, CardanoSignedTxData, CipheredKeyValue, CipheredKeyValueParams, ClearSessionCacheParams, ClearSessionCachePayload, CommonParams, ConfluxAddress, ConfluxGetAddressParams, ConfluxSignMessageCIP23Params, ConfluxSignMessageParams, ConfluxSignTransactionParams, ConfluxSignedTx, ConfluxTransaction, ConnectSettings, Core, CoreApi, CoreMessage, CosmosAddress, CosmosGetAddressParams, CosmosGetPublicKeyParams, CosmosPublicKey, CosmosSignTransactionParams, CosmosSignedTx, DEFAULT_PRIORITY, DEVICE, DEVICE_EVENT, DEVICE_SETTINGS_SHARED_FIELDS, DEVICE_SETTINGS_V1_ONLY_FIELDS, DEVICE_SETTINGS_V2_ONLY_FIELDS, DataManager, Device$1 as Device, DeviceButtonRequest, DeviceButtonRequestPayload, DeviceChangePinParams, DeviceConnnectRequest, DeviceDisconnnectRequest, DeviceEvent, DeviceEventListenerFn, DeviceEventMessage, DeviceFeaturesMode, DeviceFeaturesPayload, DeviceFeaturesProtocol, DeviceFeaturesRaw, DeviceFeaturesRawPatch, DeviceFeaturesVerify, DeviceFirmwareRange, DeviceFlagsParams, DeviceModelToTypes, DeviceProgress, DeviceRecoveryParams, DeviceResetParams, DeviceSendFeatures, DeviceSendState, DeviceSendSupportFeatures, DeviceSettingsCapabilities, DeviceSettingsDurationOption, DeviceSettingsField, DeviceSettingsParams, DeviceSettingsProtocol, DeviceSettingsValueOption, DeviceState, DeviceStateEvent, DeviceStateIdentity, DeviceStateMode, DeviceStatePatch, DeviceStateProtocol, DeviceStateScope, DeviceStateSection, DeviceStateSecurityElement, DeviceStateSecurityElements, DeviceStateSecurityElementsPatch, DeviceStateSettings, DeviceStateStatus, DeviceStateUpdateSource, DeviceStateVersions, DeviceStatus, DeviceSupportFeatures, DeviceSupportFeaturesPayload, DeviceTypeMap, DeviceTypeToModels, DeviceUnlockParams, DeviceUploadResourceParams, DeviceUploadResourceResponse, DeviceVerifyParams, DeviceVerifySignature, DnxAddress, DnxGetAddressParams, DnxSignTransactionParams, DnxSignature, DnxTxKey, EOneKeyDeviceMode, EVMAccessList, EVMAddress, EVMAuthorization, EVMAuthorizationSignature, EVMGetAddressParams, EVMGetPublicKeyParams, EVMPublicKey, EVMSignMessageEIP712Params, EVMSignMessageParams, EVMSignTransactionParams, EVMSignTypedDataParams, EVMSignedTx, EVMTransaction, EVMTransactionEIP1559, EVMTransactionEIP7702, EVMVerifyMessageParams, EthereumSignTypedDataMessage, EthereumSignTypedDataTypeProperty, EthereumSignTypedDataTypes, FIRMWARE, FIRMWARE_EVENT, Features, FilecoinAddress, FilecoinGetAddressParams, FilecoinSignTransactionParams, FilecoinSignedTx, FirmwareArtifactReader, FirmwareArtifactReference, FirmwareEvent, FirmwareMemoryArtifact, FirmwareMemoryArtifactEntry, FirmwareMessage, FirmwareProcessing, FirmwareProgress, FirmwareRange, FirmwareRelease, FirmwareReleaseCheckResult, FirmwareTip, FirmwareUpdateArtifactParams, FirmwareUpdateBinaryParams, FirmwareUpdateCapabilities, FirmwareUpdateHostBinding, FirmwareUpdateParams, FirmwareUpdatePlan, FirmwareUpdatePlanArtifact, FirmwareUpdatePlanArtifactRole, FirmwareUpdatePlanForceTarget, FirmwareUpdatePlanTarget, FirmwareUpdatePreparedArtifact, FirmwareUpdatePreparedArtifactInput, FirmwareUpdatePreparedEntry, FirmwareUpdatePreparedPlan, FirmwareUpdateTipMessage, FirmwareUpdateV3Params, FirmwareUpdateV4MemoryHost, FirmwareUpdateV4Params, FirmwareUpdateV4Target, GetDeviceStateParams, GetPassphraseStateParams, HardwareSDKLowLevel, HardwareTopLevelSdk, HardwareUiInteractionMeta, IBLEFirmwareReleaseInfo, IDeviceBLEFirmwareStatus, IDeviceFirmwareStatus, IDeviceModel, IDeviceType, IFRAME, IFirmwareField, IFirmwareReleaseInfo, IFirmwareUpdateProgressType, IFirmwareUpdateTipMessage, IFrameBridge, IFrameCallMessage, IFrameCallback, IFrameCallbackMessage, IFrameCancelMessage, IFrameEvent, IFrameEventMessage, IFrameInit, IFrameSwitchTransport, IFrameSwitchTransportMessage, ILocale, IProtocolV2FirmwareComponent, IProtocolV2FirmwareComponentTarget, IProtocolV2ResourceBundle, IProtocolV2ResourceManifest, IProtocolV2ResourceManifestFile, IProtocolV2ResourceSource, IProtocolV2Resources, ITransportStatus, IVersionArray, IVersionRange, KaspaAddress, KaspaGetAddressParams, KaspaSignInputParams, KaspaSignOutputParams, KaspaSignTransactionParams, KaspaSignature, KaspaStreamingSignInputParams, KaspaStreamingSignOutputParams, KnownDevice, LOG, LOG_EVENT, LogBlockEvent, LogEvent, LogEventMessage, LogOutput, LoggerNames, LowLevelCoreApi, LowLevelInjectApi, MajorVersion, MethodResponseMessage, NEMAddress, NEMAggregateModificationTransaction, NEMGetAddressParams, NEMImportanceTransaction, NEMMosaic, NEMMosaicCreationTransaction, NEMMultisigTransaction, NEMProvisionNamespaceTransaction, NEMSignTransactionParams, NEMSupplyChangeTransaction, NEMTransaction, NEMTransferTransaction, NearAddress, NearGetAddressParams, NearSignTransactionParams, NervosAddress, NervosGetAddressParams, NervosSignTransactionParams, NervosSignedTx, NexaAddress, NexaGetAddressParams, NexaSignInputParams, NexaSignOutputParams, NexaSignTransactionParams, NexaSignature, NormalizedFeatures, OnekeyFeatures, OpenWalletSessionMode, OpenWalletSessionModeValue, OpenWalletSessionParams, OpenWalletSessionPayload, PRO2_WALLPAPER_HEIGHT, PRO2_WALLPAPER_WIDTH, PROTOCOL_V2_NEVER_TIMEOUT_MS, Params, PassphraseRequestPayload, PolkadotAddress, PolkadotGetAddressParams, PolkadotSignTransactionParams, PolkadotSignedTx, PostMessageEvent, PreviousAddressResult, Pro2WallpaperColorFormat, ProtocolV2ComponentReleaseInfo, ProtocolV2FirmwareComponentRelease, ProtocolV2FirmwareComponentReleaseStatus, ProtocolV2FirmwareReleaseStatus, ProtocolV2UiCompletion, ProtocolV2UiEventMetadata, ProtocolV2UiEventSource, RESPONSE_EVENT, RefTransaction, ReleaseInfo, ReleaseInfoEvent, ReleaseInfoPayload, RemoteConfigResponse, RequestContext, Response, ScdoAddress, ScdoGetAddressParams, ScdoSignMessageParams, ScdoSignTransactionParams, ScdoSignedTx, SdkTracingContext, SearchDevice, SignedTransaction, SolSignMessageParams, SolSignMessageResponse, SolSignOffchainMessageParams, SolSignOffchainMessageResponse, SolanaAddress, SolanaGetAddressParams, SolanaSignTransactionParams, SolanaSignedTx, StarcoinAddress, StarcoinGetAddressParams, StarcoinGetPublicKeyParams, StarcoinPublicKey, StarcoinSignMessageParams, StarcoinSignTransactionParams, StarcoinVerifyMessageParams, StellarAddress, StellarAsset, StellarGetAddressParams, StellarOperation, StellarSignTransactionParams, StellarTransaction, StrictFeatures, Success, SuiAddress, SuiGetAddressParams, SuiGetPublicKeyParams, SuiPublicKey, SuiSignMessageParams, SuiSignTransactionParams, SuiSignedTx, SupportFeatureType, SupportFeatures, TestProtocolV2PingParams, TonAddress, TonGetAddressParams, TonSignDataParams, TonSignMessageParams, TonSignProofParams, TopLevelInjectApi, TransactionOptions, TransportReleaseStatus, TronAddress, TronDelegateResourceContract, TronFreezeBalanceV2Contract, TronGetAddressParams, TronSignMessageParams, TronSignTransactionParams, TronTransaction, TronTransactionContract, TronTransferContract, TronTriggerSmartContract, TronUnDelegateResourceContract, TronUnfreezeBalanceV2Contract, TronWithdrawBalanceContract, TronWithdrawExpireUnfreezeContract, UI_EVENT, UI_REQUEST, UI_RESPONSE, UiEvent, UiEventMessage, UiPromise, UiPromiseResponse, UiRequestButton, UiRequestDeviceAction, UiRequestFirmwareProgressing, UiRequestPassphrase, UiRequestPassphraseOnDevice, UiRequestSelectDeviceForSwitchFirmwareWebDevice, UiRequestSelectDeviceInBootloaderForWebDevice, UiRequestWindowClose, UiRequestWithoutPayload, UiResponseCorrelation, UiResponseCorrelationFields, UiResponseEvent, UiResponseMessage, UiResponsePassphrase, UiResponsePin, UiResponseSelectDeviceForSwitchFirmwareWebDevice, UiResponseSelectDeviceInBootloaderForWebDevice, UnavailableCapabilities, UnavailableCapability, Unsuccessful, VersionArray, checkNeedUpdateBootForClassicAndMini, checkNeedUpdateBootForTouch, cleanupCallback, cleanupSdkInstance, completeRequestContext, corsValidator, createDeviceMessage, createErrorMessage, createFirmwareMessage, createIFrameMessage, createLogMessage, createRequestContext, createResponseMessage, createSdkTracingContext, createUiMessage, createUiResponse, HardwareSdk as default, enableLog, encodePro2Wallpaper, executeCallback, formatLogMethodLabel, formatRequestContext, generateInstanceId, generateSdkInstanceId, getActiveRequestsByDeviceInstance, getAutoLockOptions, getAutoShutDownOptions, getDeviceBLEFirmwareVersion, getDeviceBleName, getDeviceBoardloaderVersion, getDeviceBootloaderVersion, getDeviceFirmwareVersion, getDeviceLabel, getDeviceSerialNo, getDeviceSettingsCapabilities, getDeviceType, getDeviceTypeByBleName, getDeviceUUID, getEnv, getFirmwareType, getFirmwareUpdateField, getFirmwareUpdateFieldArray, getFirmwareUpdateHostBindingGeneration, getHDPath, getHomeScreenDefaultList, getHomeScreenHex, getHomeScreenSize, getLanguageConfig, getLog, getLogBlockLabel, getLogger, getMethodSupportedProtocols, getMethodVersionRange, getNftSize, getOutputScriptType, getSDKVersion, getSafeLogPayload, getScriptType, getTimeStamp, httpRequest, init$1 as initCore, isBleConnect, isValidVersionArray, isValidVersionString, normalizeSafetyCheckLevel, normalizeVersionArray, parseConnectSettings, parseMessage, parseProtocolV2ResourceManifest, patchFeatures, preloadSessionCache, prepareFirmwareUpdateV4MemoryHost, projectFeatures as projectDeviceStateFeatures, registerFirmwareUpdateHostBinding, safeThrowError, selectProtocolV2ResourceManifestFiles, setLoggerPostMessage, supportInputPinOnSoftware, switchTransport, transportEnv, unregisterFirmwareUpdateHostBinding, updateRequestContext, versionCompare, versionSplit, wait, whitelist, whitelistExtension };
|
package/dist/index.js
CHANGED
|
@@ -51637,7 +51637,7 @@ class FirmwareUpdateV4 extends FirmwareUpdateBaseMethod {
|
|
|
51637
51637
|
return ['V2'];
|
|
51638
51638
|
}
|
|
51639
51639
|
init() {
|
|
51640
|
-
var _a, _b, _c, _d, _e;
|
|
51640
|
+
var _a, _b, _c, _d, _e, _f, _g, _h, _j;
|
|
51641
51641
|
this.allowDeviceMode = [UI_REQUEST.BOOTLOADER, UI_REQUEST.NOT_INITIALIZE];
|
|
51642
51642
|
this.requireDeviceMode = [];
|
|
51643
51643
|
this.unlockPolicy = 'unlock-before-run';
|
|
@@ -51680,9 +51680,6 @@ class FirmwareUpdateV4 extends FirmwareUpdateBaseMethod {
|
|
|
51680
51680
|
(payload.expectedDeviceId.length === 0 || payload.expectedDeviceId.length > 160)) {
|
|
51681
51681
|
throw hdShared.ERRORS.TypedError(hdShared.HardwareErrorCode.CallMethodInvalidParameter, 'Protocol V2 expected device identity is invalid');
|
|
51682
51682
|
}
|
|
51683
|
-
if (((_a = payload.resourceFiles) === null || _a === void 0 ? void 0 : _a.length) || ((_b = payload.resourceBundleArtifacts) === null || _b === void 0 ? void 0 : _b.length)) {
|
|
51684
|
-
throw hdShared.ERRORS.TypedError(hdShared.HardwareErrorCode.CallMethodInvalidParameter, 'Protocol V2 resourceFiles and resourceBundleArtifacts are deprecated; provide a complete signed resource ZIP through resourceArchiveBinary or preparedPlan');
|
|
51685
|
-
}
|
|
51686
51683
|
const preparedPlan = payload.preparedPlan
|
|
51687
51684
|
? validateFirmwareUpdatePreparedPlan(payload.preparedPlan)
|
|
51688
51685
|
: undefined;
|
|
@@ -51697,9 +51694,10 @@ class FirmwareUpdateV4 extends FirmwareUpdateBaseMethod {
|
|
|
51697
51694
|
payload.se03Binary,
|
|
51698
51695
|
payload.se04Binary,
|
|
51699
51696
|
payload.resourceArchiveBinary,
|
|
51697
|
+
(_a = payload.resourceFiles) === null || _a === void 0 ? void 0 : _a.length,
|
|
51700
51698
|
].some(Boolean);
|
|
51701
|
-
if (preparedPlan && hasLocalArtifacts) {
|
|
51702
|
-
throw hdShared.ERRORS.TypedError(hdShared.HardwareErrorCode.CallMethodInvalidParameter, 'Prepared firmware plans cannot be combined with local firmware
|
|
51699
|
+
if (preparedPlan && (hasLocalArtifacts || ((_b = payload.resourceBundleArtifacts) === null || _b === void 0 ? void 0 : _b.length))) {
|
|
51700
|
+
throw hdShared.ERRORS.TypedError(hdShared.HardwareErrorCode.CallMethodInvalidParameter, 'Prepared firmware plans cannot be combined with legacy or local firmware inputs');
|
|
51703
51701
|
}
|
|
51704
51702
|
const hostBinding = payload.hostBindingGeneration !== undefined
|
|
51705
51703
|
? resolveFirmwareUpdateHostBinding(payload.hostBindingGeneration, preparedPlan === null || preparedPlan === void 0 ? void 0 : preparedPlan.preparedPlanDigest)
|
|
@@ -51739,6 +51737,19 @@ class FirmwareUpdateV4 extends FirmwareUpdateBaseMethod {
|
|
|
51739
51737
|
}
|
|
51740
51738
|
return result;
|
|
51741
51739
|
}, {});
|
|
51740
|
+
const localTargetsToUpdate = (_c = payload.targetsToUpdate) === null || _c === void 0 ? void 0 : _c.map((target) => target === 'boot_resources' ? 'resource' : target);
|
|
51741
|
+
if ((payload.resourceArchiveBinary ||
|
|
51742
|
+
((_d = payload.resourceFiles) === null || _d === void 0 ? void 0 : _d.length) ||
|
|
51743
|
+
((_e = payload.resourceBundleArtifacts) === null || _e === void 0 ? void 0 : _e.length)) &&
|
|
51744
|
+
localTargetsToUpdate &&
|
|
51745
|
+
!localTargetsToUpdate.includes('resource')) {
|
|
51746
|
+
localTargetsToUpdate.push('resource');
|
|
51747
|
+
}
|
|
51748
|
+
const resolvedLocalTargetsToUpdate = localTargetsToUpdate !== null && localTargetsToUpdate !== void 0 ? localTargetsToUpdate : (payload.resourceArchiveBinary ||
|
|
51749
|
+
((_f = payload.resourceFiles) === null || _f === void 0 ? void 0 : _f.length) ||
|
|
51750
|
+
((_g = payload.resourceBundleArtifacts) === null || _g === void 0 ? void 0 : _g.length)
|
|
51751
|
+
? ['resource']
|
|
51752
|
+
: undefined);
|
|
51742
51753
|
this.params = {
|
|
51743
51754
|
preparedPlan,
|
|
51744
51755
|
chunkSize: payload.chunkSize,
|
|
@@ -51753,17 +51764,19 @@ class FirmwareUpdateV4 extends FirmwareUpdateBaseMethod {
|
|
|
51753
51764
|
se03Binary: payload.se03Binary,
|
|
51754
51765
|
se04Binary: payload.se04Binary,
|
|
51755
51766
|
resourceArchiveBinary: payload.resourceArchiveBinary,
|
|
51756
|
-
|
|
51767
|
+
resourceFiles: payload.resourceFiles,
|
|
51768
|
+
firmwareType: (_h = preparedPlan === null || preparedPlan === void 0 ? void 0 : preparedPlan.firmwareType) !== null && _h !== void 0 ? _h : payload.firmwareType,
|
|
51757
51769
|
targetsToUpdate: preparedPlan
|
|
51758
51770
|
? [...preparedPlan.targetsToUpdate]
|
|
51759
|
-
:
|
|
51771
|
+
: resolvedLocalTargetsToUpdate,
|
|
51760
51772
|
expectedTargetVersions: preparedPlan
|
|
51761
51773
|
? preparedExpectedTargetVersions
|
|
51762
51774
|
: payload.expectedTargetVersions,
|
|
51763
51775
|
platform: payload.platform,
|
|
51764
51776
|
expectedDeviceId: payload.expectedDeviceId,
|
|
51765
|
-
artifactReader: (
|
|
51777
|
+
artifactReader: (_j = hostBinding === null || hostBinding === void 0 ? void 0 : hostBinding.artifactReader) !== null && _j !== void 0 ? _j : payload.artifactReader,
|
|
51766
51778
|
componentArtifacts: preparedPlan ? undefined : payload.componentArtifacts,
|
|
51779
|
+
resourceBundleArtifacts: preparedPlan ? undefined : payload.resourceBundleArtifacts,
|
|
51767
51780
|
};
|
|
51768
51781
|
}
|
|
51769
51782
|
getProtocolV2FirmwareChunkSize(direction, filePath) {
|
|
@@ -51794,7 +51807,7 @@ class FirmwareUpdateV4 extends FirmwareUpdateBaseMethod {
|
|
|
51794
51807
|
});
|
|
51795
51808
|
}
|
|
51796
51809
|
runProtocolV2() {
|
|
51797
|
-
var _a, _b, _c, _d, _e, _f;
|
|
51810
|
+
var _a, _b, _c, _d, _e, _f, _g, _h, _j;
|
|
51798
51811
|
return __awaiter(this, void 0, void 0, function* () {
|
|
51799
51812
|
yield this.captureProtocolV2PhysicalIdentity();
|
|
51800
51813
|
const deviceFeatures = yield this.getProtocolV2DeviceFeatures();
|
|
@@ -51806,9 +51819,29 @@ class FirmwareUpdateV4 extends FirmwareUpdateBaseMethod {
|
|
|
51806
51819
|
const deviceFirmwareType = getFirmwareType(deviceFeatures);
|
|
51807
51820
|
const firmwareType = (_a = this.params.firmwareType) !== null && _a !== void 0 ? _a : deviceFirmwareType;
|
|
51808
51821
|
this.validateExpectedTargetVersions();
|
|
51822
|
+
if (!this.params.preparedPlan && ((_b = this.params.resourceFiles) === null || _b === void 0 ? void 0 : _b.length)) {
|
|
51823
|
+
if (this.params.resourceArchiveBinary || ((_c = this.params.resourceBundleArtifacts) === null || _c === void 0 ? void 0 : _c.length)) {
|
|
51824
|
+
throw hdShared.ERRORS.TypedError(hdShared.HardwareErrorCode.CallMethodInvalidParameter, 'Legacy resourceFiles cannot be combined with another Protocol V2 resource input');
|
|
51825
|
+
}
|
|
51826
|
+
this.postTipMessage(exports.FirmwareUpdateTipMessage.StartDownloadFirmware);
|
|
51827
|
+
const installItems = this.buildProtocolV2InstallItems({
|
|
51828
|
+
bootloaderBinary: this.prepareBootloaderBinary(),
|
|
51829
|
+
fwBinaryMap: this.collectExplicitTargetBinaries(),
|
|
51830
|
+
});
|
|
51831
|
+
const missingFirmwareTarget = this.getMissingProtocolV2FirmwareTargets(installItems)[0];
|
|
51832
|
+
if (missingFirmwareTarget) {
|
|
51833
|
+
throw hdShared.ERRORS.TypedError(hdShared.HardwareErrorCode.RuntimeError, `Protocol V2 legacy local update has no binary for requested target ${missingFirmwareTarget}`, {
|
|
51834
|
+
firmwareUpdateCode: 'FirmwareArtifactsNotPrepared',
|
|
51835
|
+
artifactName: missingFirmwareTarget,
|
|
51836
|
+
});
|
|
51837
|
+
}
|
|
51838
|
+
const resourceBundles = this.prepareLegacyProtocolV2ResourceFiles();
|
|
51839
|
+
this.postTipMessage(exports.FirmwareUpdateTipMessage.FinishDownloadFirmware);
|
|
51840
|
+
return this.executeProtocolV2Update({ installItems, resourceBundles });
|
|
51841
|
+
}
|
|
51809
51842
|
if (!this.params.preparedPlan &&
|
|
51810
51843
|
this.params.resourceArchiveBinary &&
|
|
51811
|
-
((
|
|
51844
|
+
((_d = this.params.targetsToUpdate) === null || _d === void 0 ? void 0 : _d.includes('resource'))) {
|
|
51812
51845
|
const localMemoryHost = yield this.prepareProtocolV2LocalMemoryHost({
|
|
51813
51846
|
features: deviceFeatures,
|
|
51814
51847
|
firmwareType,
|
|
@@ -51820,11 +51853,13 @@ class FirmwareUpdateV4 extends FirmwareUpdateBaseMethod {
|
|
|
51820
51853
|
localMemoryHost.release();
|
|
51821
51854
|
}
|
|
51822
51855
|
}
|
|
51823
|
-
const hasPreparedComponentArtifacts = Object.values((
|
|
51824
|
-
if (this.params.preparedPlan ||
|
|
51856
|
+
const hasPreparedComponentArtifacts = Object.values((_e = this.params.componentArtifacts) !== null && _e !== void 0 ? _e : {}).some(Boolean);
|
|
51857
|
+
if (this.params.preparedPlan ||
|
|
51858
|
+
hasPreparedComponentArtifacts ||
|
|
51859
|
+
((_f = this.params.resourceBundleArtifacts) === null || _f === void 0 ? void 0 : _f.length)) {
|
|
51825
51860
|
return this.runProtocolV2PreparedArtifacts(deviceFeatures, firmwareType);
|
|
51826
51861
|
}
|
|
51827
|
-
const wantsResources = !!((
|
|
51862
|
+
const wantsResources = !!((_g = this.params.targetsToUpdate) === null || _g === void 0 ? void 0 : _g.includes('resource'));
|
|
51828
51863
|
let fwBinaryMap = [];
|
|
51829
51864
|
let bootloaderBinary = null;
|
|
51830
51865
|
let installItems;
|
|
@@ -51837,7 +51872,7 @@ class FirmwareUpdateV4 extends FirmwareUpdateBaseMethod {
|
|
|
51837
51872
|
fwBinaryMap,
|
|
51838
51873
|
});
|
|
51839
51874
|
const missingFirmwareTargets = this.getMissingProtocolV2FirmwareTargets(explicitInstallItems);
|
|
51840
|
-
const needsRemoteFirmware = ((
|
|
51875
|
+
const needsRemoteFirmware = ((_h = this.params.targetsToUpdate) === null || _h === void 0 ? void 0 : _h.length)
|
|
51841
51876
|
? missingFirmwareTargets.length > 0
|
|
51842
51877
|
: explicitInstallItems.length === 0;
|
|
51843
51878
|
if (wantsResources) {
|
|
@@ -51867,7 +51902,7 @@ class FirmwareUpdateV4 extends FirmwareUpdateBaseMethod {
|
|
|
51867
51902
|
if (typeof err === 'object' &&
|
|
51868
51903
|
err !== null &&
|
|
51869
51904
|
'params' in err &&
|
|
51870
|
-
((
|
|
51905
|
+
((_j = err.params) === null || _j === void 0 ? void 0 : _j.firmwareUpdateCode) === 'FirmwareArtifactsNotPrepared') {
|
|
51871
51906
|
throw err;
|
|
51872
51907
|
}
|
|
51873
51908
|
if (err instanceof hdShared.HardwareError && err.errorCode === hdShared.HardwareErrorCode.NetworkError) {
|
|
@@ -52148,8 +52183,8 @@ class FirmwareUpdateV4 extends FirmwareUpdateBaseMethod {
|
|
|
52148
52183
|
return { binary, materializedEntries };
|
|
52149
52184
|
});
|
|
52150
52185
|
}
|
|
52151
|
-
prepareProtocolV2ResourceSources() {
|
|
52152
|
-
var _a, _b;
|
|
52186
|
+
prepareProtocolV2ResourceSources(firmwareType, features) {
|
|
52187
|
+
var _a, _b, _c;
|
|
52153
52188
|
return __awaiter(this, void 0, void 0, function* () {
|
|
52154
52189
|
const resourceRequested = (_b = (_a = this.params.targetsToUpdate) === null || _a === void 0 ? void 0 : _a.includes('resource')) !== null && _b !== void 0 ? _b : false;
|
|
52155
52190
|
if (!resourceRequested) {
|
|
@@ -52159,9 +52194,83 @@ class FirmwareUpdateV4 extends FirmwareUpdateBaseMethod {
|
|
|
52159
52194
|
if (archiveSources) {
|
|
52160
52195
|
return archiveSources;
|
|
52161
52196
|
}
|
|
52197
|
+
if (!this.params.preparedPlan && ((_c = this.params.resourceBundleArtifacts) === null || _c === void 0 ? void 0 : _c.length)) {
|
|
52198
|
+
return this.prepareLegacyProtocolV2ResourceBundleSources(firmwareType, features);
|
|
52199
|
+
}
|
|
52162
52200
|
throw hdShared.ERRORS.TypedError(hdShared.HardwareErrorCode.RuntimeError, 'Protocol V2 resource archive is not prepared', { firmwareUpdateCode: 'FirmwareArtifactsNotPrepared' });
|
|
52163
52201
|
});
|
|
52164
52202
|
}
|
|
52203
|
+
prepareLegacyProtocolV2ResourceBundleSources(firmwareType, features) {
|
|
52204
|
+
var _a, _b;
|
|
52205
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
52206
|
+
const artifacts = (_a = this.params.resourceBundleArtifacts) !== null && _a !== void 0 ? _a : [];
|
|
52207
|
+
if (artifacts.length > PROTOCOL_V2_RESOURCE_FILE_MAX_COUNT) {
|
|
52208
|
+
throw hdShared.ERRORS.TypedError(hdShared.HardwareErrorCode.RuntimeError, 'Protocol V2 legacy resource artifact count exceeds the allowed limit', { firmwareUpdateCode: 'FirmwareArtifactsNotPrepared' });
|
|
52209
|
+
}
|
|
52210
|
+
const names = new Set();
|
|
52211
|
+
const release = DataManager.getFirmwareLatestRelease(features, firmwareType);
|
|
52212
|
+
const descriptors = new Map(((_b = release === null || release === void 0 ? void 0 : release.resourceBundles) !== null && _b !== void 0 ? _b : []).map(descriptor => [descriptor.name, descriptor]));
|
|
52213
|
+
const sources = [];
|
|
52214
|
+
let totalSize = 0;
|
|
52215
|
+
for (const [index, item] of artifacts.entries()) {
|
|
52216
|
+
if (!item.name || names.has(item.name)) {
|
|
52217
|
+
throw hdShared.ERRORS.TypedError(hdShared.HardwareErrorCode.RuntimeError, `Protocol V2 legacy resource artifact name is invalid: ${item.name || index}`, { firmwareUpdateCode: 'FirmwareArtifactsNotPrepared' });
|
|
52218
|
+
}
|
|
52219
|
+
names.add(item.name);
|
|
52220
|
+
const descriptor = descriptors.get(item.name);
|
|
52221
|
+
if (!descriptor) {
|
|
52222
|
+
throw hdShared.ERRORS.TypedError(hdShared.HardwareErrorCode.RuntimeError, `Protocol V2 release does not contain legacy resource bundle ${item.name}`, { firmwareUpdateCode: 'FirmwareArtifactsNotPrepared', artifactName: item.name });
|
|
52223
|
+
}
|
|
52224
|
+
const source = yield this.openProtocolV2PreparedSource(item.artifact);
|
|
52225
|
+
totalSize += source.size;
|
|
52226
|
+
if (source.size <= 0 || totalSize > PROTOCOL_V2_RESOURCE_TOTAL_MAX_BYTES) {
|
|
52227
|
+
throw hdShared.ERRORS.TypedError(hdShared.HardwareErrorCode.RuntimeError, 'Protocol V2 legacy resource artifacts exceed the allowed size limit', { firmwareUpdateCode: 'FirmwareArtifactsNotPrepared' });
|
|
52228
|
+
}
|
|
52229
|
+
const devicePath = validateProtocolV2FilesystemPath(descriptor.devicePath, `resourceBundleArtifacts[${index}].devicePath`);
|
|
52230
|
+
sources.push({
|
|
52231
|
+
name: descriptor.name,
|
|
52232
|
+
source,
|
|
52233
|
+
devicePath,
|
|
52234
|
+
version: descriptor.version,
|
|
52235
|
+
payloadHash: descriptor.payloadHash,
|
|
52236
|
+
headerHash: descriptor.headerHash,
|
|
52237
|
+
});
|
|
52238
|
+
}
|
|
52239
|
+
return sources;
|
|
52240
|
+
});
|
|
52241
|
+
}
|
|
52242
|
+
prepareLegacyProtocolV2ResourceFiles() {
|
|
52243
|
+
var _a;
|
|
52244
|
+
const files = (_a = this.params.resourceFiles) !== null && _a !== void 0 ? _a : [];
|
|
52245
|
+
if (files.length === 0 || files.length > PROTOCOL_V2_RESOURCE_FILE_MAX_COUNT) {
|
|
52246
|
+
throw hdShared.ERRORS.TypedError(hdShared.HardwareErrorCode.CallMethodInvalidParameter, 'Protocol V2 legacy resource file count is invalid');
|
|
52247
|
+
}
|
|
52248
|
+
const paths = new Set();
|
|
52249
|
+
let totalSize = 0;
|
|
52250
|
+
return files.map((file, index) => {
|
|
52251
|
+
var _a;
|
|
52252
|
+
const devicePath = validateProtocolV2FilesystemPath(file.devicePath, `resourceFiles[${index}].devicePath`);
|
|
52253
|
+
if (paths.has(devicePath)) {
|
|
52254
|
+
throw hdShared.ERRORS.TypedError(hdShared.HardwareErrorCode.CallMethodInvalidParameter, `Protocol V2 resourceFiles contain duplicate devicePath: ${devicePath}`);
|
|
52255
|
+
}
|
|
52256
|
+
paths.add(devicePath);
|
|
52257
|
+
totalSize += file.binary.byteLength;
|
|
52258
|
+
if (file.binary.byteLength <= 0 ||
|
|
52259
|
+
totalSize > PROTOCOL_V2_RESOURCE_TOTAL_MAX_BYTES ||
|
|
52260
|
+
(file.size !== undefined && file.size !== file.binary.byteLength)) {
|
|
52261
|
+
throw hdShared.ERRORS.TypedError(hdShared.HardwareErrorCode.CallMethodInvalidParameter, `Protocol V2 resourceFiles[${index}] size is invalid`);
|
|
52262
|
+
}
|
|
52263
|
+
if (file.fileHash &&
|
|
52264
|
+
bytesToHex(sha256.sha256(new Uint8Array(file.binary))) !== file.fileHash.toLowerCase()) {
|
|
52265
|
+
throw hdShared.ERRORS.TypedError(hdShared.HardwareErrorCode.CallMethodInvalidParameter, `Protocol V2 resourceFiles[${index}] SHA-256 mismatch`);
|
|
52266
|
+
}
|
|
52267
|
+
return {
|
|
52268
|
+
name: (_a = devicePath.split('/').pop()) !== null && _a !== void 0 ? _a : devicePath,
|
|
52269
|
+
binary: file.binary,
|
|
52270
|
+
devicePath,
|
|
52271
|
+
};
|
|
52272
|
+
});
|
|
52273
|
+
}
|
|
52165
52274
|
prepareProtocolV2ResourceArchiveSources() {
|
|
52166
52275
|
var _a, _b, _c, _d;
|
|
52167
52276
|
return __awaiter(this, void 0, void 0, function* () {
|
|
@@ -52238,7 +52347,7 @@ class FirmwareUpdateV4 extends FirmwareUpdateBaseMethod {
|
|
|
52238
52347
|
try {
|
|
52239
52348
|
this.postTipMessage(exports.FirmwareUpdateTipMessage.StartDownloadFirmware);
|
|
52240
52349
|
const installSources = yield this.prepareProtocolV2InstallSources(firmwareType, features);
|
|
52241
|
-
const resourceSources = yield this.prepareProtocolV2ResourceSources();
|
|
52350
|
+
const resourceSources = yield this.prepareProtocolV2ResourceSources(firmwareType, features);
|
|
52242
52351
|
if (installSources.length === 0 && resourceSources.length === 0) {
|
|
52243
52352
|
throw hdShared.ERRORS.TypedError(hdShared.HardwareErrorCode.FirmwareUpdateDownloadFailed, 'No firmware to update');
|
|
52244
52353
|
}
|
|
@@ -52367,8 +52476,16 @@ class FirmwareUpdateV4 extends FirmwareUpdateBaseMethod {
|
|
|
52367
52476
|
const serialNumber = (_b = (_a = deviceInfo.hw) === null || _a === void 0 ? void 0 : _a.serial_no) === null || _b === void 0 ? void 0 : _b.trim();
|
|
52368
52477
|
return serialNumber || undefined;
|
|
52369
52478
|
}
|
|
52479
|
+
getProtocolV2ConnectionRoute() {
|
|
52480
|
+
var _a, _b, _c, _d, _e;
|
|
52481
|
+
const descriptor = this.device.originalDescriptor;
|
|
52482
|
+
return (((_a = descriptor === null || descriptor === void 0 ? void 0 : descriptor.path) === null || _a === void 0 ? void 0 : _a.trim()) ||
|
|
52483
|
+
((_d = (_c = (_b = this.device).getConnectId) === null || _c === void 0 ? void 0 : _c.call(_b)) === null || _d === void 0 ? void 0 : _d.trim()) ||
|
|
52484
|
+
((_e = descriptor === null || descriptor === void 0 ? void 0 : descriptor.id) === null || _e === void 0 ? void 0 : _e.trim()) ||
|
|
52485
|
+
undefined);
|
|
52486
|
+
}
|
|
52370
52487
|
assertProtocolV2DeviceInfoIdentity(deviceInfo) {
|
|
52371
|
-
assertProtocolV2ReconnectIdentity(this.protocolV2ExpectedSerialNumber, this.getProtocolV2SerialNumber(deviceInfo), this.protocolV2ExpectedPath, this.
|
|
52488
|
+
assertProtocolV2ReconnectIdentity(this.protocolV2ExpectedSerialNumber, this.getProtocolV2SerialNumber(deviceInfo), this.protocolV2ExpectedPath, this.getProtocolV2ConnectionRoute());
|
|
52372
52489
|
}
|
|
52373
52490
|
getProtocolV2DeviceInfoTimeout() {
|
|
52374
52491
|
var _a;
|
|
@@ -52385,19 +52502,19 @@ class FirmwareUpdateV4 extends FirmwareUpdateBaseMethod {
|
|
|
52385
52502
|
});
|
|
52386
52503
|
}
|
|
52387
52504
|
captureProtocolV2PhysicalIdentity() {
|
|
52388
|
-
var _a, _b, _c
|
|
52505
|
+
var _a, _b, _c;
|
|
52389
52506
|
return __awaiter(this, void 0, void 0, function* () {
|
|
52390
52507
|
const deviceInfo = yield this.requestProtocolV2PhysicalIdentity();
|
|
52391
52508
|
const serialNumber = this.getProtocolV2SerialNumber(deviceInfo);
|
|
52392
|
-
const path =
|
|
52393
|
-
if ((
|
|
52509
|
+
const path = this.getProtocolV2ConnectionRoute();
|
|
52510
|
+
if ((_a = this.params) === null || _a === void 0 ? void 0 : _a.preparedPlan) {
|
|
52394
52511
|
assertFirmwareUpdatePreparedPlanDeviceIdentity({
|
|
52395
52512
|
preparedPlan: this.params.preparedPlan,
|
|
52396
52513
|
deviceIdentity: serialNumber,
|
|
52397
52514
|
});
|
|
52398
52515
|
}
|
|
52399
|
-
else if ((
|
|
52400
|
-
assertProtocolV2ReconnectIdentity((
|
|
52516
|
+
else if ((_b = this.params) === null || _b === void 0 ? void 0 : _b.expectedDeviceId) {
|
|
52517
|
+
assertProtocolV2ReconnectIdentity((_c = this.params) === null || _c === void 0 ? void 0 : _c.expectedDeviceId, serialNumber);
|
|
52401
52518
|
}
|
|
52402
52519
|
else {
|
|
52403
52520
|
assertProtocolV2ReconnectIdentity(serialNumber, serialNumber, path, path);
|
package/dist/types/settings.d.ts
CHANGED
|
@@ -43,6 +43,16 @@ export type IProtocolV2ResourceSource = {
|
|
|
43
43
|
export type IProtocolV2Resources = {
|
|
44
44
|
source: IProtocolV2ResourceSource;
|
|
45
45
|
};
|
|
46
|
+
export type IProtocolV2ResourceBundle = {
|
|
47
|
+
name: string;
|
|
48
|
+
url: string;
|
|
49
|
+
fingerprint?: string;
|
|
50
|
+
expectedSize?: number;
|
|
51
|
+
devicePath: string;
|
|
52
|
+
version?: IVersionArray;
|
|
53
|
+
payloadHash?: string;
|
|
54
|
+
headerHash?: string;
|
|
55
|
+
};
|
|
46
56
|
export type IProtocolV2ResourceManifestFile = {
|
|
47
57
|
archive_path: string;
|
|
48
58
|
original_name: string;
|
|
@@ -91,6 +101,7 @@ export type IFirmwareReleaseInfo = {
|
|
|
91
101
|
upgradeType?: 'payload-package-set' | string;
|
|
92
102
|
components?: Record<string, IProtocolV2FirmwareComponent>;
|
|
93
103
|
installOrder?: string[];
|
|
104
|
+
resourceBundles?: IProtocolV2ResourceBundle[];
|
|
94
105
|
bootloaderChangelog?: {
|
|
95
106
|
[k in ILocale]: string;
|
|
96
107
|
};
|
|
@@ -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":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@onekeyfe/hd-core",
|
|
3
|
-
"version": "1.2.0-alpha.
|
|
3
|
+
"version": "1.2.0-alpha.92",
|
|
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.
|
|
29
|
-
"@onekeyfe/hd-transport": "1.2.0-alpha.
|
|
28
|
+
"@onekeyfe/hd-shared": "1.2.0-alpha.92",
|
|
29
|
+
"@onekeyfe/hd-transport": "1.2.0-alpha.92",
|
|
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": "
|
|
47
|
+
"gitHead": "451cf48c34c896033474163f7eaf2b4bf1a0ec55"
|
|
48
48
|
}
|
|
@@ -10,6 +10,7 @@ import {
|
|
|
10
10
|
import { sha256 } from '@noble/hashes/sha256';
|
|
11
11
|
|
|
12
12
|
import { FirmwareUpdateTipMessage, UI_REQUEST } from '../events/ui-request';
|
|
13
|
+
import { validateProtocolV2FilesystemPath } from './helpers/filesystemValidation';
|
|
13
14
|
import { validateParams } from './helpers/paramsValidator';
|
|
14
15
|
import {
|
|
15
16
|
LoggerNames,
|
|
@@ -625,12 +626,6 @@ export default class FirmwareUpdateV4 extends FirmwareUpdateBaseMethod<FirmwareU
|
|
|
625
626
|
'Protocol V2 expected device identity is invalid'
|
|
626
627
|
);
|
|
627
628
|
}
|
|
628
|
-
if (payload.resourceFiles?.length || payload.resourceBundleArtifacts?.length) {
|
|
629
|
-
throw ERRORS.TypedError(
|
|
630
|
-
HardwareErrorCode.CallMethodInvalidParameter,
|
|
631
|
-
'Protocol V2 resourceFiles and resourceBundleArtifacts are deprecated; provide a complete signed resource ZIP through resourceArchiveBinary or preparedPlan'
|
|
632
|
-
);
|
|
633
|
-
}
|
|
634
629
|
const preparedPlan = payload.preparedPlan
|
|
635
630
|
? validateFirmwareUpdatePreparedPlan(payload.preparedPlan)
|
|
636
631
|
: undefined;
|
|
@@ -645,11 +640,12 @@ export default class FirmwareUpdateV4 extends FirmwareUpdateBaseMethod<FirmwareU
|
|
|
645
640
|
payload.se03Binary,
|
|
646
641
|
payload.se04Binary,
|
|
647
642
|
payload.resourceArchiveBinary,
|
|
643
|
+
payload.resourceFiles?.length,
|
|
648
644
|
].some(Boolean);
|
|
649
|
-
if (preparedPlan && hasLocalArtifacts) {
|
|
645
|
+
if (preparedPlan && (hasLocalArtifacts || payload.resourceBundleArtifacts?.length)) {
|
|
650
646
|
throw ERRORS.TypedError(
|
|
651
647
|
HardwareErrorCode.CallMethodInvalidParameter,
|
|
652
|
-
'Prepared firmware plans cannot be combined with local firmware
|
|
648
|
+
'Prepared firmware plans cannot be combined with legacy or local firmware inputs'
|
|
653
649
|
);
|
|
654
650
|
}
|
|
655
651
|
const hostBinding =
|
|
@@ -706,6 +702,26 @@ export default class FirmwareUpdateV4 extends FirmwareUpdateBaseMethod<FirmwareU
|
|
|
706
702
|
}
|
|
707
703
|
return result;
|
|
708
704
|
}, {});
|
|
705
|
+
const localTargetsToUpdate = payload.targetsToUpdate?.map((target: FirmwareUpdateV4Target) =>
|
|
706
|
+
target === 'boot_resources' ? 'resource' : target
|
|
707
|
+
);
|
|
708
|
+
if (
|
|
709
|
+
(payload.resourceArchiveBinary ||
|
|
710
|
+
payload.resourceFiles?.length ||
|
|
711
|
+
payload.resourceBundleArtifacts?.length) &&
|
|
712
|
+
localTargetsToUpdate &&
|
|
713
|
+
!localTargetsToUpdate.includes('resource')
|
|
714
|
+
) {
|
|
715
|
+
localTargetsToUpdate.push('resource');
|
|
716
|
+
}
|
|
717
|
+
// 本地 ZIP 本身就是明确的资源升级请求,不要求调用方重复声明 target。
|
|
718
|
+
const resolvedLocalTargetsToUpdate =
|
|
719
|
+
localTargetsToUpdate ??
|
|
720
|
+
(payload.resourceArchiveBinary ||
|
|
721
|
+
payload.resourceFiles?.length ||
|
|
722
|
+
payload.resourceBundleArtifacts?.length
|
|
723
|
+
? ['resource']
|
|
724
|
+
: undefined);
|
|
709
725
|
|
|
710
726
|
this.params = {
|
|
711
727
|
preparedPlan,
|
|
@@ -721,12 +737,11 @@ export default class FirmwareUpdateV4 extends FirmwareUpdateBaseMethod<FirmwareU
|
|
|
721
737
|
se03Binary: payload.se03Binary,
|
|
722
738
|
se04Binary: payload.se04Binary,
|
|
723
739
|
resourceArchiveBinary: payload.resourceArchiveBinary,
|
|
740
|
+
resourceFiles: payload.resourceFiles,
|
|
724
741
|
firmwareType: preparedPlan?.firmwareType ?? payload.firmwareType,
|
|
725
742
|
targetsToUpdate: preparedPlan
|
|
726
743
|
? ([...preparedPlan.targetsToUpdate] as FirmwareUpdateV4Target[])
|
|
727
|
-
:
|
|
728
|
-
target === 'boot_resources' ? 'resource' : target
|
|
729
|
-
),
|
|
744
|
+
: resolvedLocalTargetsToUpdate,
|
|
730
745
|
expectedTargetVersions: preparedPlan
|
|
731
746
|
? preparedExpectedTargetVersions
|
|
732
747
|
: payload.expectedTargetVersions,
|
|
@@ -734,6 +749,7 @@ export default class FirmwareUpdateV4 extends FirmwareUpdateBaseMethod<FirmwareU
|
|
|
734
749
|
expectedDeviceId: payload.expectedDeviceId,
|
|
735
750
|
artifactReader: hostBinding?.artifactReader ?? payload.artifactReader,
|
|
736
751
|
componentArtifacts: preparedPlan ? undefined : payload.componentArtifacts,
|
|
752
|
+
resourceBundleArtifacts: preparedPlan ? undefined : payload.resourceBundleArtifacts,
|
|
737
753
|
};
|
|
738
754
|
}
|
|
739
755
|
|
|
@@ -779,6 +795,34 @@ export default class FirmwareUpdateV4 extends FirmwareUpdateBaseMethod<FirmwareU
|
|
|
779
795
|
const firmwareType = this.params.firmwareType ?? deviceFirmwareType;
|
|
780
796
|
this.validateExpectedTargetVersions();
|
|
781
797
|
|
|
798
|
+
if (!this.params.preparedPlan && this.params.resourceFiles?.length) {
|
|
799
|
+
if (this.params.resourceArchiveBinary || this.params.resourceBundleArtifacts?.length) {
|
|
800
|
+
throw ERRORS.TypedError(
|
|
801
|
+
HardwareErrorCode.CallMethodInvalidParameter,
|
|
802
|
+
'Legacy resourceFiles cannot be combined with another Protocol V2 resource input'
|
|
803
|
+
);
|
|
804
|
+
}
|
|
805
|
+
this.postTipMessage(FirmwareUpdateTipMessage.StartDownloadFirmware);
|
|
806
|
+
const installItems = this.buildProtocolV2InstallItems({
|
|
807
|
+
bootloaderBinary: this.prepareBootloaderBinary(),
|
|
808
|
+
fwBinaryMap: this.collectExplicitTargetBinaries(),
|
|
809
|
+
});
|
|
810
|
+
const missingFirmwareTarget = this.getMissingProtocolV2FirmwareTargets(installItems)[0];
|
|
811
|
+
if (missingFirmwareTarget) {
|
|
812
|
+
throw ERRORS.TypedError(
|
|
813
|
+
HardwareErrorCode.RuntimeError,
|
|
814
|
+
`Protocol V2 legacy local update has no binary for requested target ${missingFirmwareTarget}`,
|
|
815
|
+
{
|
|
816
|
+
firmwareUpdateCode: 'FirmwareArtifactsNotPrepared',
|
|
817
|
+
artifactName: missingFirmwareTarget,
|
|
818
|
+
}
|
|
819
|
+
);
|
|
820
|
+
}
|
|
821
|
+
const resourceBundles = this.prepareLegacyProtocolV2ResourceFiles();
|
|
822
|
+
this.postTipMessage(FirmwareUpdateTipMessage.FinishDownloadFirmware);
|
|
823
|
+
return this.executeProtocolV2Update({ installItems, resourceBundles });
|
|
824
|
+
}
|
|
825
|
+
|
|
782
826
|
if (
|
|
783
827
|
!this.params.preparedPlan &&
|
|
784
828
|
this.params.resourceArchiveBinary &&
|
|
@@ -798,7 +842,11 @@ export default class FirmwareUpdateV4 extends FirmwareUpdateBaseMethod<FirmwareU
|
|
|
798
842
|
const hasPreparedComponentArtifacts = Object.values(this.params.componentArtifacts ?? {}).some(
|
|
799
843
|
Boolean
|
|
800
844
|
);
|
|
801
|
-
if (
|
|
845
|
+
if (
|
|
846
|
+
this.params.preparedPlan ||
|
|
847
|
+
hasPreparedComponentArtifacts ||
|
|
848
|
+
this.params.resourceBundleArtifacts?.length
|
|
849
|
+
) {
|
|
802
850
|
return this.runProtocolV2PreparedArtifacts(deviceFeatures, firmwareType);
|
|
803
851
|
}
|
|
804
852
|
const wantsResources = !!this.params.targetsToUpdate?.includes('resource');
|
|
@@ -1284,7 +1332,10 @@ export default class FirmwareUpdateV4 extends FirmwareUpdateBaseMethod<FirmwareU
|
|
|
1284
1332
|
return { binary, materializedEntries };
|
|
1285
1333
|
}
|
|
1286
1334
|
|
|
1287
|
-
private async prepareProtocolV2ResourceSources(
|
|
1335
|
+
private async prepareProtocolV2ResourceSources(
|
|
1336
|
+
firmwareType: EFirmwareType,
|
|
1337
|
+
features: Features
|
|
1338
|
+
): Promise<ProtocolV2ResourceBundleSource[]> {
|
|
1288
1339
|
const resourceRequested = this.params.targetsToUpdate?.includes('resource') ?? false;
|
|
1289
1340
|
if (!resourceRequested) {
|
|
1290
1341
|
return [];
|
|
@@ -1293,6 +1344,9 @@ export default class FirmwareUpdateV4 extends FirmwareUpdateBaseMethod<FirmwareU
|
|
|
1293
1344
|
if (archiveSources) {
|
|
1294
1345
|
return archiveSources;
|
|
1295
1346
|
}
|
|
1347
|
+
if (!this.params.preparedPlan && this.params.resourceBundleArtifacts?.length) {
|
|
1348
|
+
return this.prepareLegacyProtocolV2ResourceBundleSources(firmwareType, features);
|
|
1349
|
+
}
|
|
1296
1350
|
throw ERRORS.TypedError(
|
|
1297
1351
|
HardwareErrorCode.RuntimeError,
|
|
1298
1352
|
'Protocol V2 resource archive is not prepared',
|
|
@@ -1300,6 +1354,117 @@ export default class FirmwareUpdateV4 extends FirmwareUpdateBaseMethod<FirmwareU
|
|
|
1300
1354
|
);
|
|
1301
1355
|
}
|
|
1302
1356
|
|
|
1357
|
+
private async prepareLegacyProtocolV2ResourceBundleSources(
|
|
1358
|
+
firmwareType: EFirmwareType,
|
|
1359
|
+
features: Features
|
|
1360
|
+
): Promise<ProtocolV2ResourceBundleSource[]> {
|
|
1361
|
+
const artifacts = this.params.resourceBundleArtifacts ?? [];
|
|
1362
|
+
if (artifacts.length > PROTOCOL_V2_RESOURCE_FILE_MAX_COUNT) {
|
|
1363
|
+
throw ERRORS.TypedError(
|
|
1364
|
+
HardwareErrorCode.RuntimeError,
|
|
1365
|
+
'Protocol V2 legacy resource artifact count exceeds the allowed limit',
|
|
1366
|
+
{ firmwareUpdateCode: 'FirmwareArtifactsNotPrepared' }
|
|
1367
|
+
);
|
|
1368
|
+
}
|
|
1369
|
+
const names = new Set<string>();
|
|
1370
|
+
const release = DataManager.getFirmwareLatestRelease(features, firmwareType);
|
|
1371
|
+
const descriptors = new Map(
|
|
1372
|
+
(release?.resourceBundles ?? []).map(descriptor => [descriptor.name, descriptor] as const)
|
|
1373
|
+
);
|
|
1374
|
+
const sources: ProtocolV2ResourceBundleSource[] = [];
|
|
1375
|
+
let totalSize = 0;
|
|
1376
|
+
for (const [index, item] of artifacts.entries()) {
|
|
1377
|
+
if (!item.name || names.has(item.name)) {
|
|
1378
|
+
throw ERRORS.TypedError(
|
|
1379
|
+
HardwareErrorCode.RuntimeError,
|
|
1380
|
+
`Protocol V2 legacy resource artifact name is invalid: ${item.name || index}`,
|
|
1381
|
+
{ firmwareUpdateCode: 'FirmwareArtifactsNotPrepared' }
|
|
1382
|
+
);
|
|
1383
|
+
}
|
|
1384
|
+
names.add(item.name);
|
|
1385
|
+
const descriptor = descriptors.get(item.name);
|
|
1386
|
+
if (!descriptor) {
|
|
1387
|
+
throw ERRORS.TypedError(
|
|
1388
|
+
HardwareErrorCode.RuntimeError,
|
|
1389
|
+
`Protocol V2 release does not contain legacy resource bundle ${item.name}`,
|
|
1390
|
+
{ firmwareUpdateCode: 'FirmwareArtifactsNotPrepared', artifactName: item.name }
|
|
1391
|
+
);
|
|
1392
|
+
}
|
|
1393
|
+
const source = await this.openProtocolV2PreparedSource(item.artifact);
|
|
1394
|
+
totalSize += source.size;
|
|
1395
|
+
if (source.size <= 0 || totalSize > PROTOCOL_V2_RESOURCE_TOTAL_MAX_BYTES) {
|
|
1396
|
+
throw ERRORS.TypedError(
|
|
1397
|
+
HardwareErrorCode.RuntimeError,
|
|
1398
|
+
'Protocol V2 legacy resource artifacts exceed the allowed size limit',
|
|
1399
|
+
{ firmwareUpdateCode: 'FirmwareArtifactsNotPrepared' }
|
|
1400
|
+
);
|
|
1401
|
+
}
|
|
1402
|
+
const devicePath = validateProtocolV2FilesystemPath(
|
|
1403
|
+
descriptor.devicePath,
|
|
1404
|
+
`resourceBundleArtifacts[${index}].devicePath`
|
|
1405
|
+
);
|
|
1406
|
+
sources.push({
|
|
1407
|
+
name: descriptor.name,
|
|
1408
|
+
source,
|
|
1409
|
+
devicePath,
|
|
1410
|
+
version: descriptor.version,
|
|
1411
|
+
payloadHash: descriptor.payloadHash,
|
|
1412
|
+
headerHash: descriptor.headerHash,
|
|
1413
|
+
});
|
|
1414
|
+
}
|
|
1415
|
+
return sources;
|
|
1416
|
+
}
|
|
1417
|
+
|
|
1418
|
+
private prepareLegacyProtocolV2ResourceFiles(): ProtocolV2ResourceBundleBinary[] {
|
|
1419
|
+
const files = this.params.resourceFiles ?? [];
|
|
1420
|
+
if (files.length === 0 || files.length > PROTOCOL_V2_RESOURCE_FILE_MAX_COUNT) {
|
|
1421
|
+
throw ERRORS.TypedError(
|
|
1422
|
+
HardwareErrorCode.CallMethodInvalidParameter,
|
|
1423
|
+
'Protocol V2 legacy resource file count is invalid'
|
|
1424
|
+
);
|
|
1425
|
+
}
|
|
1426
|
+
const paths = new Set<string>();
|
|
1427
|
+
let totalSize = 0;
|
|
1428
|
+
return files.map((file, index) => {
|
|
1429
|
+
const devicePath = validateProtocolV2FilesystemPath(
|
|
1430
|
+
file.devicePath,
|
|
1431
|
+
`resourceFiles[${index}].devicePath`
|
|
1432
|
+
);
|
|
1433
|
+
if (paths.has(devicePath)) {
|
|
1434
|
+
throw ERRORS.TypedError(
|
|
1435
|
+
HardwareErrorCode.CallMethodInvalidParameter,
|
|
1436
|
+
`Protocol V2 resourceFiles contain duplicate devicePath: ${devicePath}`
|
|
1437
|
+
);
|
|
1438
|
+
}
|
|
1439
|
+
paths.add(devicePath);
|
|
1440
|
+
totalSize += file.binary.byteLength;
|
|
1441
|
+
if (
|
|
1442
|
+
file.binary.byteLength <= 0 ||
|
|
1443
|
+
totalSize > PROTOCOL_V2_RESOURCE_TOTAL_MAX_BYTES ||
|
|
1444
|
+
(file.size !== undefined && file.size !== file.binary.byteLength)
|
|
1445
|
+
) {
|
|
1446
|
+
throw ERRORS.TypedError(
|
|
1447
|
+
HardwareErrorCode.CallMethodInvalidParameter,
|
|
1448
|
+
`Protocol V2 resourceFiles[${index}] size is invalid`
|
|
1449
|
+
);
|
|
1450
|
+
}
|
|
1451
|
+
if (
|
|
1452
|
+
file.fileHash &&
|
|
1453
|
+
bytesToHex(sha256(new Uint8Array(file.binary))) !== file.fileHash.toLowerCase()
|
|
1454
|
+
) {
|
|
1455
|
+
throw ERRORS.TypedError(
|
|
1456
|
+
HardwareErrorCode.CallMethodInvalidParameter,
|
|
1457
|
+
`Protocol V2 resourceFiles[${index}] SHA-256 mismatch`
|
|
1458
|
+
);
|
|
1459
|
+
}
|
|
1460
|
+
return {
|
|
1461
|
+
name: devicePath.split('/').pop() ?? devicePath,
|
|
1462
|
+
binary: file.binary,
|
|
1463
|
+
devicePath,
|
|
1464
|
+
};
|
|
1465
|
+
});
|
|
1466
|
+
}
|
|
1467
|
+
|
|
1303
1468
|
private async prepareProtocolV2ResourceArchiveSources(): Promise<
|
|
1304
1469
|
ProtocolV2ResourceBundleSource[] | undefined
|
|
1305
1470
|
> {
|
|
@@ -1424,7 +1589,7 @@ export default class FirmwareUpdateV4 extends FirmwareUpdateBaseMethod<FirmwareU
|
|
|
1424
1589
|
try {
|
|
1425
1590
|
this.postTipMessage(FirmwareUpdateTipMessage.StartDownloadFirmware);
|
|
1426
1591
|
const installSources = await this.prepareProtocolV2InstallSources(firmwareType, features);
|
|
1427
|
-
const resourceSources = await this.prepareProtocolV2ResourceSources();
|
|
1592
|
+
const resourceSources = await this.prepareProtocolV2ResourceSources(firmwareType, features);
|
|
1428
1593
|
if (installSources.length === 0 && resourceSources.length === 0) {
|
|
1429
1594
|
throw ERRORS.TypedError(
|
|
1430
1595
|
HardwareErrorCode.FirmwareUpdateDownloadFailed,
|
|
@@ -1574,12 +1739,22 @@ export default class FirmwareUpdateV4 extends FirmwareUpdateBaseMethod<FirmwareU
|
|
|
1574
1739
|
return serialNumber || undefined;
|
|
1575
1740
|
}
|
|
1576
1741
|
|
|
1742
|
+
private getProtocolV2ConnectionRoute() {
|
|
1743
|
+
const descriptor = this.device.originalDescriptor;
|
|
1744
|
+
return (
|
|
1745
|
+
descriptor?.path?.trim() ||
|
|
1746
|
+
this.device.getConnectId?.()?.trim() ||
|
|
1747
|
+
descriptor?.id?.trim() ||
|
|
1748
|
+
undefined
|
|
1749
|
+
);
|
|
1750
|
+
}
|
|
1751
|
+
|
|
1577
1752
|
private assertProtocolV2DeviceInfoIdentity(deviceInfo: ProtocolV2DeviceInfo) {
|
|
1578
1753
|
assertProtocolV2ReconnectIdentity(
|
|
1579
1754
|
this.protocolV2ExpectedSerialNumber,
|
|
1580
1755
|
this.getProtocolV2SerialNumber(deviceInfo),
|
|
1581
1756
|
this.protocolV2ExpectedPath,
|
|
1582
|
-
this.
|
|
1757
|
+
this.getProtocolV2ConnectionRoute()
|
|
1583
1758
|
);
|
|
1584
1759
|
}
|
|
1585
1760
|
|
|
@@ -1599,7 +1774,7 @@ export default class FirmwareUpdateV4 extends FirmwareUpdateBaseMethod<FirmwareU
|
|
|
1599
1774
|
private async captureProtocolV2PhysicalIdentity() {
|
|
1600
1775
|
const deviceInfo = await this.requestProtocolV2PhysicalIdentity();
|
|
1601
1776
|
const serialNumber = this.getProtocolV2SerialNumber(deviceInfo);
|
|
1602
|
-
const path = this.
|
|
1777
|
+
const path = this.getProtocolV2ConnectionRoute();
|
|
1603
1778
|
if (this.params?.preparedPlan) {
|
|
1604
1779
|
assertFirmwareUpdatePreparedPlanDeviceIdentity({
|
|
1605
1780
|
preparedPlan: this.params.preparedPlan,
|
package/src/types/settings.ts
CHANGED
|
@@ -74,6 +74,18 @@ export type IProtocolV2Resources = {
|
|
|
74
74
|
source: IProtocolV2ResourceSource;
|
|
75
75
|
};
|
|
76
76
|
|
|
77
|
+
/** @deprecated Legacy per-bundle resource descriptor retained for published V4 callers. */
|
|
78
|
+
export type IProtocolV2ResourceBundle = {
|
|
79
|
+
name: string;
|
|
80
|
+
url: string;
|
|
81
|
+
fingerprint?: string;
|
|
82
|
+
expectedSize?: number;
|
|
83
|
+
devicePath: string;
|
|
84
|
+
version?: IVersionArray;
|
|
85
|
+
payloadHash?: string;
|
|
86
|
+
headerHash?: string;
|
|
87
|
+
};
|
|
88
|
+
|
|
77
89
|
export type IProtocolV2ResourceManifestFile = {
|
|
78
90
|
archive_path: string;
|
|
79
91
|
original_name: string;
|
|
@@ -131,6 +143,8 @@ export type IFirmwareReleaseInfo = {
|
|
|
131
143
|
upgradeType?: 'payload-package-set' | string;
|
|
132
144
|
components?: Record<string, IProtocolV2FirmwareComponent>;
|
|
133
145
|
installOrder?: string[];
|
|
146
|
+
/** @deprecated New Protocol V2 releases use the independent signed resource ZIP. */
|
|
147
|
+
resourceBundles?: IProtocolV2ResourceBundle[];
|
|
134
148
|
bootloaderChangelog?: {
|
|
135
149
|
[k in ILocale]: string;
|
|
136
150
|
};
|