@onekeyfe/hd-core 1.2.0-alpha.85 → 1.2.0-alpha.86
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__/check-all-firmware-release-protocol-v2.test.ts +74 -37
- package/__tests__/check-firmware-release-protocol-v2.test.ts +1 -2
- package/__tests__/firmware-memory-host.test.ts +3 -0
- package/__tests__/firmware-update/device-update-bootloader.test.ts +4 -1
- package/__tests__/firmware-update/firmware-host-binding.test.ts +9 -0
- package/__tests__/protocol-v2-resources.test.ts +59 -1
- package/__tests__/protocol-v2.test.ts +61 -1
- package/dist/api/CheckAllFirmwareRelease.d.ts.map +1 -1
- package/dist/api/FirmwareUpdateV4.d.ts.map +1 -1
- package/dist/api/firmware/FirmwareHostBinding.d.ts +1 -1
- package/dist/api/firmware/FirmwareHostBinding.d.ts.map +1 -1
- package/dist/api/firmware/FirmwareMemoryHost.d.ts.map +1 -1
- package/dist/data-manager/DataManager.d.ts +3 -1
- package/dist/data-manager/DataManager.d.ts.map +1 -1
- package/dist/index.d.ts +8 -6
- package/dist/index.js +51 -30
- package/dist/types/api/checkAllFirmwareRelease.d.ts +0 -1
- package/dist/types/api/checkAllFirmwareRelease.d.ts.map +1 -1
- package/dist/types/api/firmwareUpdate.d.ts +1 -0
- package/dist/types/api/firmwareUpdate.d.ts.map +1 -1
- package/dist/types/settings.d.ts +3 -4
- package/dist/types/settings.d.ts.map +1 -1
- package/package.json +4 -4
- package/src/api/CheckAllFirmwareRelease.ts +2 -7
- package/src/api/FirmwareUpdateV4.ts +18 -11
- package/src/api/firmware/FirmwareHostBinding.ts +16 -3
- package/src/api/firmware/FirmwareMemoryHost.ts +4 -1
- package/src/data-manager/DataManager.ts +33 -13
- package/src/types/api/checkAllFirmwareRelease.ts +0 -1
- package/src/types/api/firmwareUpdate.ts +2 -0
- package/src/types/settings.ts +3 -5
package/dist/index.js
CHANGED
|
@@ -1347,6 +1347,8 @@ class FirmwareHostBindingRegistry {
|
|
|
1347
1347
|
register(binding) {
|
|
1348
1348
|
var _a;
|
|
1349
1349
|
if (!binding ||
|
|
1350
|
+
typeof binding.preparedPlanDigest !== 'string' ||
|
|
1351
|
+
!/^[0-9a-f]{64}$/i.test(binding.preparedPlanDigest) ||
|
|
1350
1352
|
typeof ((_a = binding.artifactReader) === null || _a === void 0 ? void 0 : _a.open) !== 'function' ||
|
|
1351
1353
|
typeof binding.artifactReader.read !== 'function' ||
|
|
1352
1354
|
typeof binding.artifactReader.close !== 'function') {
|
|
@@ -1367,7 +1369,7 @@ class FirmwareHostBindingRegistry {
|
|
|
1367
1369
|
getGeneration() {
|
|
1368
1370
|
return this.generation;
|
|
1369
1371
|
}
|
|
1370
|
-
resolve(generation) {
|
|
1372
|
+
resolve(generation, preparedPlanDigest) {
|
|
1371
1373
|
if (!Number.isSafeInteger(generation) ||
|
|
1372
1374
|
generation <= 0 ||
|
|
1373
1375
|
generation !== this.generation ||
|
|
@@ -1375,12 +1377,17 @@ class FirmwareHostBindingRegistry {
|
|
|
1375
1377
|
return bindingError(`Firmware host binding generation ${generation} is stale`);
|
|
1376
1378
|
}
|
|
1377
1379
|
const { binding } = this;
|
|
1380
|
+
if (preparedPlanDigest !== undefined &&
|
|
1381
|
+
binding.preparedPlanDigest.toLowerCase() !== preparedPlanDigest.toLowerCase()) {
|
|
1382
|
+
return bindingError(`Firmware host binding generation ${generation} does not match the prepared plan`);
|
|
1383
|
+
}
|
|
1378
1384
|
const assertCurrent = () => {
|
|
1379
1385
|
if (generation !== this.generation || binding !== this.binding) {
|
|
1380
1386
|
bindingError(`Firmware host binding generation ${generation} is stale`);
|
|
1381
1387
|
}
|
|
1382
1388
|
};
|
|
1383
1389
|
return {
|
|
1390
|
+
preparedPlanDigest: binding.preparedPlanDigest,
|
|
1384
1391
|
artifactReader: {
|
|
1385
1392
|
open: (input) => __awaiter(this, void 0, void 0, function* () {
|
|
1386
1393
|
assertCurrent();
|
|
@@ -1413,7 +1420,7 @@ const firmwareHostBindingRegistry = new FirmwareHostBindingRegistry();
|
|
|
1413
1420
|
const registerFirmwareUpdateHostBinding = (binding) => firmwareHostBindingRegistry.register(binding);
|
|
1414
1421
|
const unregisterFirmwareUpdateHostBinding = (generation) => firmwareHostBindingRegistry.unregister(generation);
|
|
1415
1422
|
const getFirmwareUpdateHostBindingGeneration = () => firmwareHostBindingRegistry.getGeneration();
|
|
1416
|
-
const resolveFirmwareUpdateHostBinding = (generation) => firmwareHostBindingRegistry.resolve(generation !== null && generation !== void 0 ? generation : Number.NaN);
|
|
1423
|
+
const resolveFirmwareUpdateHostBinding = (generation, preparedPlanDigest) => firmwareHostBindingRegistry.resolve(generation !== null && generation !== void 0 ? generation : Number.NaN, preparedPlanDigest);
|
|
1417
1424
|
|
|
1418
1425
|
const callbackManager = new Map();
|
|
1419
1426
|
const generateCallbackId = () => `callback_${Date.now()}_${Math.random().toString(36).substring(2, 11)}`;
|
|
@@ -40798,6 +40805,7 @@ class DataManager {
|
|
|
40798
40805
|
return __awaiter(this, void 0, void 0, function* () {
|
|
40799
40806
|
this.settings = settings;
|
|
40800
40807
|
this.protocolV2ResourcesConfigError = undefined;
|
|
40808
|
+
this.protocolV2NeoResourcesConfigError = undefined;
|
|
40801
40809
|
const manifestMode = (_b = settings.firmwareManifestMode) !== null && _b !== void 0 ? _b : (settings.fetchConfig ? 'sdk-managed' : undefined);
|
|
40802
40810
|
if (settings.preloadedConfig) {
|
|
40803
40811
|
this.applyRemoteConfig(settings.preloadedConfig);
|
|
@@ -40858,12 +40866,19 @@ class DataManager {
|
|
|
40858
40866
|
let neoResources;
|
|
40859
40867
|
try {
|
|
40860
40868
|
pro2Resources = parseProtocolV2Resources((_b = data.pro2) === null || _b === void 0 ? void 0 : _b.resources);
|
|
40861
|
-
neoResources = parseProtocolV2Resources((_c = data.neo) === null || _c === void 0 ? void 0 : _c.resources);
|
|
40862
40869
|
}
|
|
40863
40870
|
catch (error) {
|
|
40864
40871
|
this.protocolV2ResourcesConfigError =
|
|
40865
40872
|
error instanceof Error ? error : new Error(String(error));
|
|
40866
|
-
Log$k.warn('[DataConfig] Ignoring invalid
|
|
40873
|
+
Log$k.warn('[DataConfig] Ignoring invalid Pro2 resources config:', error);
|
|
40874
|
+
}
|
|
40875
|
+
try {
|
|
40876
|
+
neoResources = parseProtocolV2Resources((_c = data.neo) === null || _c === void 0 ? void 0 : _c.resources);
|
|
40877
|
+
}
|
|
40878
|
+
catch (error) {
|
|
40879
|
+
this.protocolV2NeoResourcesConfigError =
|
|
40880
|
+
error instanceof Error ? error : new Error(String(error));
|
|
40881
|
+
Log$k.warn('[DataConfig] Ignoring invalid Neo resources config:', error);
|
|
40867
40882
|
}
|
|
40868
40883
|
const enrichedPro2Config = this.enrichFirmwareReleaseInfo(data.pro2);
|
|
40869
40884
|
const enrichedNeoConfig = this.enrichFirmwareReleaseInfo(data.neo);
|
|
@@ -40901,16 +40916,20 @@ class DataManager {
|
|
|
40901
40916
|
}
|
|
40902
40917
|
});
|
|
40903
40918
|
}
|
|
40904
|
-
static forceReloadData({ requireResources = false, } = {}) {
|
|
40919
|
+
static forceReloadData({ requireResources = false, resourceDeviceType = hdShared.EDeviceType.Pro2, } = {}) {
|
|
40905
40920
|
return __awaiter(this, void 0, void 0, function* () {
|
|
40921
|
+
const resourceDeviceName = resourceDeviceType === hdShared.EDeviceType.Pro2 ? 'Pro2' : 'Neo';
|
|
40906
40922
|
if (!this.settings) {
|
|
40907
40923
|
throw new Error('Remote config settings are not initialized');
|
|
40908
40924
|
}
|
|
40909
40925
|
const hasFreshConfig = this.lastCheckTimestamp > 0 &&
|
|
40910
40926
|
getTimeStamp() - this.lastCheckTimestamp <= FIRMWARE_UPDATE_CONFIG_FRESHNESS_MS;
|
|
40911
40927
|
if (hasFreshConfig) {
|
|
40912
|
-
|
|
40913
|
-
|
|
40928
|
+
const resourcesConfigError = resourceDeviceType === hdShared.EDeviceType.Pro2
|
|
40929
|
+
? this.protocolV2ResourcesConfigError
|
|
40930
|
+
: this.protocolV2NeoResourcesConfigError;
|
|
40931
|
+
if (requireResources && resourcesConfigError) {
|
|
40932
|
+
throw hdShared.ERRORS.TypedError(hdShared.HardwareErrorCode.FirmwareUpdateDownloadFailed, `Invalid ${resourceDeviceName} resources config: ${resourcesConfigError.message}`);
|
|
40914
40933
|
}
|
|
40915
40934
|
return;
|
|
40916
40935
|
}
|
|
@@ -40918,8 +40937,11 @@ class DataManager {
|
|
|
40918
40937
|
if (!loaded) {
|
|
40919
40938
|
throw hdShared.ERRORS.TypedError(hdShared.HardwareErrorCode.NetworkError, 'Unable to refresh the latest remote config');
|
|
40920
40939
|
}
|
|
40921
|
-
|
|
40922
|
-
|
|
40940
|
+
const resourcesConfigError = resourceDeviceType === hdShared.EDeviceType.Pro2
|
|
40941
|
+
? this.protocolV2ResourcesConfigError
|
|
40942
|
+
: this.protocolV2NeoResourcesConfigError;
|
|
40943
|
+
if (requireResources && resourcesConfigError) {
|
|
40944
|
+
throw hdShared.ERRORS.TypedError(hdShared.HardwareErrorCode.FirmwareUpdateDownloadFailed, `Invalid ${resourceDeviceName} resources config: ${resourcesConfigError.message}`);
|
|
40923
40945
|
}
|
|
40924
40946
|
this.lastCheckTimestamp = getTimeStamp();
|
|
40925
40947
|
});
|
|
@@ -40963,12 +40985,10 @@ DataManager.deviceMap = {
|
|
|
40963
40985
|
ble: [],
|
|
40964
40986
|
},
|
|
40965
40987
|
[hdShared.EDeviceType.Pro2]: {
|
|
40966
|
-
firmware: [],
|
|
40967
|
-
ble: [],
|
|
40988
|
+
'firmware-v1': [],
|
|
40968
40989
|
},
|
|
40969
40990
|
[hdShared.EDeviceType.Neo]: {
|
|
40970
|
-
firmware: [],
|
|
40971
|
-
ble: [],
|
|
40991
|
+
'firmware-v1': [],
|
|
40972
40992
|
},
|
|
40973
40993
|
[hdShared.EDeviceType.ClassicPure]: {
|
|
40974
40994
|
firmware: [],
|
|
@@ -47750,7 +47770,6 @@ class CheckAllFirmwareRelease extends BaseMethod {
|
|
|
47750
47770
|
const resourceDeviceType = state.identity.deviceType === 'neo' ? hdShared.EDeviceType.Neo : hdShared.EDeviceType.Pro2;
|
|
47751
47771
|
const resourceSource = DataManager.getProtocolV2ResourceSource(resourceDeviceType);
|
|
47752
47772
|
const resourceStatus = 'unknown';
|
|
47753
|
-
const resourcePreparationRequired = !!resourceSource;
|
|
47754
47773
|
const detectedComponentTargets = validatedForceUpdateTargets.includes('firmware')
|
|
47755
47774
|
? plan.components.flatMap(component => component.updateTarget ? [component.updateTarget] : [])
|
|
47756
47775
|
: plan.targetsToUpdate;
|
|
@@ -47762,7 +47781,7 @@ class CheckAllFirmwareRelease extends BaseMethod {
|
|
|
47762
47781
|
validatedProtocolV2ForceUpdateTargets.includes('resource');
|
|
47763
47782
|
const targetsToUpdate = Array.from(new Set([
|
|
47764
47783
|
...componentTargetsToUpdate,
|
|
47765
|
-
...(
|
|
47784
|
+
...(forceResourceUpdate ? ['resource'] : []),
|
|
47766
47785
|
]));
|
|
47767
47786
|
let firmwareUpdatePlan;
|
|
47768
47787
|
try {
|
|
@@ -47802,9 +47821,7 @@ class CheckAllFirmwareRelease extends BaseMethod {
|
|
|
47802
47821
|
const firmwarePlan = summarizeProtocolV2FirmwareRelease(plan, PROTOCOL_V2_MAIN_FIRMWARE_TARGETS);
|
|
47803
47822
|
const blePlan = summarizeProtocolV2FirmwareRelease(plan, PROTOCOL_V2_BLE_TARGETS);
|
|
47804
47823
|
const bootloaderPlan = summarizeProtocolV2FirmwareRelease(plan, PROTOCOL_V2_BOOTLOADER_TARGETS);
|
|
47805
|
-
const
|
|
47806
|
-
? 'unknown'
|
|
47807
|
-
: plan.status;
|
|
47824
|
+
const { status } = plan;
|
|
47808
47825
|
return Object.assign(Object.assign({ firmware: toProtocolV2FirmwareReleaseInfo({ plan: firmwarePlan, state, release }), ble: toProtocolV2FirmwareReleaseInfo({
|
|
47809
47826
|
plan: blePlan,
|
|
47810
47827
|
state,
|
|
@@ -47814,7 +47831,7 @@ class CheckAllFirmwareRelease extends BaseMethod {
|
|
|
47814
47831
|
state,
|
|
47815
47832
|
release: getProtocolV2ComponentReleaseInfo(plan, 'BOOTLOADER'),
|
|
47816
47833
|
}), features, protocol: 'V2', deviceType: state.identity.deviceType }, plan), { status,
|
|
47817
|
-
resourceStatus, resourceArchive: resourceSource,
|
|
47834
|
+
resourceStatus, resourceArchive: resourceSource, hasUpgrade: targetsToUpdate.length > 0, targetsToUpdate,
|
|
47818
47835
|
firmwareUpdatePlan });
|
|
47819
47836
|
});
|
|
47820
47837
|
}
|
|
@@ -51534,14 +51551,16 @@ class FirmwareUpdateV4 extends FirmwareUpdateBaseMethod {
|
|
|
51534
51551
|
(payload.expectedDeviceId.length === 0 || payload.expectedDeviceId.length > 160)) {
|
|
51535
51552
|
throw hdShared.ERRORS.TypedError(hdShared.HardwareErrorCode.CallMethodInvalidParameter, 'Protocol V2 expected device identity is invalid');
|
|
51536
51553
|
}
|
|
51537
|
-
const
|
|
51538
|
-
?
|
|
51554
|
+
const preparedPlan = payload.preparedPlan
|
|
51555
|
+
? validateFirmwareUpdatePreparedPlan(payload.preparedPlan)
|
|
51556
|
+
: undefined;
|
|
51557
|
+
const hostBinding = preparedPlan || payload.componentArtifacts
|
|
51558
|
+
? resolveFirmwareUpdateHostBinding(payload.hostBindingGeneration, preparedPlan === null || preparedPlan === void 0 ? void 0 : preparedPlan.preparedPlanDigest)
|
|
51539
51559
|
: undefined;
|
|
51540
51560
|
if (hostBinding) {
|
|
51541
51561
|
const componentArtifacts = ((_a = payload.componentArtifacts) !== null && _a !== void 0 ? _a : {});
|
|
51542
|
-
const preparedPlan = validateFirmwareUpdatePreparedPlan(payload.preparedPlan);
|
|
51543
51562
|
assertFirmwareUpdatePreparedPlanBinding({
|
|
51544
|
-
preparedPlan,
|
|
51563
|
+
preparedPlan: preparedPlan !== null && preparedPlan !== void 0 ? preparedPlan : payload.preparedPlan,
|
|
51545
51564
|
executor: 'v4',
|
|
51546
51565
|
platform: payload.platform,
|
|
51547
51566
|
scopeTargets: ['boot', 'app_v1', 'app_v2', 'coprocessor', 'se01', 'se02', 'se03', 'se04'],
|
|
@@ -51558,9 +51577,7 @@ class FirmwareUpdateV4 extends FirmwareUpdateBaseMethod {
|
|
|
51558
51577
|
});
|
|
51559
51578
|
}
|
|
51560
51579
|
this.params = {
|
|
51561
|
-
preparedPlan
|
|
51562
|
-
? validateFirmwareUpdatePreparedPlan(payload.preparedPlan)
|
|
51563
|
-
: undefined,
|
|
51580
|
+
preparedPlan,
|
|
51564
51581
|
chunkSize: payload.chunkSize,
|
|
51565
51582
|
forcedUpdateRes: payload.forcedUpdateRes,
|
|
51566
51583
|
bootloaderBinary: payload.bootloaderBinary,
|
|
@@ -52148,7 +52165,7 @@ class FirmwareUpdateV4 extends FirmwareUpdateBaseMethod {
|
|
|
52148
52165
|
return `vol0:${path}`;
|
|
52149
52166
|
return `vol0:/${path}`;
|
|
52150
52167
|
}
|
|
52151
|
-
readProtocolV2DeviceFileHeader(path) {
|
|
52168
|
+
readProtocolV2DeviceFileHeader(path, expectedSize) {
|
|
52152
52169
|
var _a, _b, _c, _d;
|
|
52153
52170
|
return __awaiter(this, void 0, void 0, function* () {
|
|
52154
52171
|
const typedCall = this.device.getCommands().typedCall.bind(this.device.getCommands());
|
|
@@ -52160,7 +52177,8 @@ class FirmwareUpdateV4 extends FirmwareUpdateBaseMethod {
|
|
|
52160
52177
|
if (!((_b = pathInfoRes.message) === null || _b === void 0 ? void 0 : _b.exist) ||
|
|
52161
52178
|
((_c = pathInfoRes.message) === null || _c === void 0 ? void 0 : _c.directory) ||
|
|
52162
52179
|
fileSize === undefined ||
|
|
52163
|
-
fileSize < PROTOCOL_V2_OKPP_HEADER_SIZE
|
|
52180
|
+
fileSize < PROTOCOL_V2_OKPP_HEADER_SIZE ||
|
|
52181
|
+
(expectedSize !== undefined && fileSize !== expectedSize)) {
|
|
52164
52182
|
return null;
|
|
52165
52183
|
}
|
|
52166
52184
|
const chunkSize = this.getProtocolV2FirmwareChunkSize('read');
|
|
@@ -52200,7 +52218,7 @@ class FirmwareUpdateV4 extends FirmwareUpdateBaseMethod {
|
|
|
52200
52218
|
if (!bundle.payloadHash || !bundle.headerHash)
|
|
52201
52219
|
return false;
|
|
52202
52220
|
try {
|
|
52203
|
-
const header = yield this.readProtocolV2DeviceFileHeader(bundle.devicePath);
|
|
52221
|
+
const header = yield this.readProtocolV2DeviceFileHeader(bundle.devicePath, bundle.source.size);
|
|
52204
52222
|
if (!header)
|
|
52205
52223
|
return false;
|
|
52206
52224
|
if (bundle.version) {
|
|
@@ -65103,7 +65121,10 @@ function prepareFirmwareUpdateV4MemoryHost({ sdk, plan, artifacts, }) {
|
|
|
65103
65121
|
return Promise.resolve();
|
|
65104
65122
|
},
|
|
65105
65123
|
};
|
|
65106
|
-
const hostBindingGeneration = sdk.registerFirmwareUpdateHostBinding({
|
|
65124
|
+
const hostBindingGeneration = sdk.registerFirmwareUpdateHostBinding({
|
|
65125
|
+
artifactReader,
|
|
65126
|
+
preparedPlanDigest: preparedPlan.preparedPlanDigest,
|
|
65127
|
+
});
|
|
65107
65128
|
const componentArtifacts = {};
|
|
65108
65129
|
const expectedTargetVersions = {};
|
|
65109
65130
|
for (const artifact of preparedPlan.artifacts) {
|
|
@@ -49,7 +49,6 @@ export type AllFirmwareRelease = {
|
|
|
49
49
|
required?: boolean;
|
|
50
50
|
resourceStatus?: 'valid' | 'outdated' | 'unknown';
|
|
51
51
|
resourceArchive?: IProtocolV2ResourceSource;
|
|
52
|
-
resourcePreparationRequired?: boolean;
|
|
53
52
|
currentVersions?: DeviceStateVersions;
|
|
54
53
|
components?: ProtocolV2FirmwareComponentRelease[];
|
|
55
54
|
targetsToUpdate?: FirmwareUpdateV4Target[];
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"checkAllFirmwareRelease.d.ts","sourceRoot":"","sources":["../../../src/types/api/checkAllFirmwareRelease.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AACzD,OAAO,KAAK,EAAE,YAAY,EAAE,QAAQ,EAAE,MAAM,WAAW,CAAC;AACxD,OAAO,KAAK,EAAE,mBAAmB,EAAE,QAAQ,EAAE,qBAAqB,EAAE,MAAM,WAAW,CAAC;AACtF,OAAO,KAAK,EACV,uBAAuB,EACvB,oBAAoB,EACpB,4BAA4B,EAC5B,kCAAkC,EAClC,yBAAyB,EAC1B,MAAM,aAAa,CAAC;AACrB,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,kBAAkB,CAAC;AAC/D,OAAO,KAAK,EAAE,kBAAkB,EAAE,6BAA6B,EAAE,MAAM,sBAAsB,CAAC;AAE9F,MAAM,MAAM,8BAA8B,GAAG,4BAA4B,GAAG;IAC1E,QAAQ,EAAE,IAAI,CAAC;IACf,SAAS,EAAE,MAAM,CAAC;IAClB,eAAe,EAAE,kCAAkC,CAAC;IACpD,QAAQ,EAAE,OAAO,CAAC;IAClB,SAAS,EAAE,oBAAoB,CAAC,WAAW,CAAC,CAAC;CAC9C,CAAC;AAEF,MAAM,MAAM,0BAA0B,GAAG;IACvC,YAAY,CAAC,EAAE,OAAO,CAAC;IACvB,MAAM,EAAE,qBAAqB,CAAC;IAC9B,SAAS,CAAC,EAAE;QACV,OAAO,EAAE,MAAM,CAAC;QAChB,OAAO,EAAE,MAAM,CAAC;KACjB,EAAE,CAAC;IACJ,OAAO,EACH,uBAAuB,GACvB,oBAAoB,GACpB,8BAA8B,GAC9B,SAAS,CAAC;IACd,cAAc,CAAC,EAAE,OAAO,CAAC;CAC1B,CAAC;AAEF,MAAM,MAAM,wBAAwB,GAAG,IAAI,CAAC,0BAA0B,EAAE,SAAS,CAAC,GAAG;IACnF,OAAO,EAAE,MAAM,GAAG,SAAS,CAAC;CAC7B,CAAC;AAEF,MAAM,MAAM,wCAAwC,GAChD,OAAO,GACP,UAAU,GACV,SAAS,GACT,aAAa,CAAC;AAElB,MAAM,MAAM,+BAA+B,GACvC,aAAa,GACb,OAAO,GACP,SAAS,GACT,UAAU,GACV,UAAU,CAAC;AAEf,MAAM,MAAM,kCAAkC,GAAG;IAC/C,SAAS,EAAE,MAAM,CAAC;IAClB,eAAe,EAAE,kCAAkC,CAAC;IACpD,YAAY,EAAE,sBAAsB,GAAG,IAAI,CAAC;IAC5C,cAAc,EAAE,MAAM,GAAG,IAAI,CAAC;IAC9B,aAAa,EAAE,MAAM,GAAG,IAAI,CAAC;IAC7B,MAAM,EAAE,wCAAwC,CAAC;IACjD,QAAQ,EAAE,OAAO,CAAC;CACnB,CAAC;AAEF,MAAM,MAAM,kBAAkB,GAAG;IAC/B,QAAQ,EAAE,0BAA0B,CAAC;IACrC,GAAG,EAAE,0BAA0B,CAAC;IAChC,UAAU,CAAC,EAAE,0BAA0B,CAAC;IACxC,MAAM,CAAC,EAAE,wBAAwB,CAAC;IAClC,QAAQ,CAAC,EAAE,QAAQ,CAAC;IACpB,QAAQ,CAAC,EAAE,IAAI,GAAG,IAAI,CAAC;IACvB,UAAU,CAAC,EAAE,MAAM,GAAG,KAAK,CAAC;IAC5B,YAAY,CAAC,EAAE,aAAa,CAAC;IAC7B,MAAM,CAAC,EAAE,+BAA+B,CAAC;IACzC,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,cAAc,CAAC,EAAE,OAAO,GAAG,UAAU,GAAG,SAAS,CAAC;IAClD,eAAe,CAAC,EAAE,yBAAyB,CAAC;IAC5C,
|
|
1
|
+
{"version":3,"file":"checkAllFirmwareRelease.d.ts","sourceRoot":"","sources":["../../../src/types/api/checkAllFirmwareRelease.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"firmwareUpdate.d.ts","sourceRoot":"","sources":["../../../src/types/api/firmwareUpdate.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AACzD,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,iBAAiB,CAAC;AAC7C,OAAO,KAAK,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,WAAW,CAAC;AAClD,OAAO,KAAK,EAAE,0BAA0B,EAAE,MAAM,8BAA8B,CAAC;AAE/E,KAAK,WAAW,GAAG,UAAU,GAAG,KAAK,CAAC;AAEtC,MAAM,WAAW,yBAAyB;IACxC,WAAW,EAAE,MAAM,CAAC;IACpB,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,MAAM,CAAC;CAChB;AAED,MAAM,WAAW,sBAAsB;IACrC,IAAI,CAAC,KAAK,EAAE;QAAE,WAAW,EAAE,MAAM,CAAA;KAAE,GAAG,OAAO,CAAC;QAC5C,QAAQ,EAAE,MAAM,CAAC;QACjB,IAAI,EAAE,MAAM,CAAC;KACd,CAAC,CAAC;IACH,IAAI,CAAC,KAAK,EAAE;QAAE,QAAQ,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,CAAA;KAAE,GAAG,OAAO,CAAC;QACzE,IAAI,EAAE,WAAW,CAAC;QAClB,SAAS,EAAE,MAAM,CAAC;QAClB,GAAG,EAAE,OAAO,CAAC;KACd,CAAC,CAAC;IACH,KAAK,CAAC,KAAK,EAAE;QAAE,QAAQ,EAAE,MAAM,CAAA;KAAE,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;CACnD;AAED,MAAM,WAAW,yBAAyB;IACxC,cAAc,EAAE,sBAAsB,CAAC;
|
|
1
|
+
{"version":3,"file":"firmwareUpdate.d.ts","sourceRoot":"","sources":["../../../src/types/api/firmwareUpdate.ts"],"names":[],"mappings":"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"}
|
package/dist/types/settings.d.ts
CHANGED
|
@@ -114,18 +114,17 @@ export type IBLEFirmwareReleaseInfo = {
|
|
|
114
114
|
};
|
|
115
115
|
};
|
|
116
116
|
type IKnownDevice = Exclude<IDeviceType, 'unknown'>;
|
|
117
|
-
type ILegacyKnownDevice = Exclude<IKnownDevice, 'neo'>;
|
|
118
117
|
type IDeviceReleaseInfo = {
|
|
119
|
-
firmware
|
|
118
|
+
firmware?: IFirmwareReleaseInfo[];
|
|
120
119
|
'firmware-v1'?: IFirmwareReleaseInfo[];
|
|
121
120
|
'firmware-v2'?: IFirmwareReleaseInfo[];
|
|
122
121
|
'firmware-v8'?: IFirmwareReleaseInfo[];
|
|
123
122
|
'firmware-btc-v8'?: IFirmwareReleaseInfo[];
|
|
124
|
-
ble
|
|
123
|
+
ble?: IBLEFirmwareReleaseInfo[];
|
|
125
124
|
resources?: IProtocolV2Resources;
|
|
126
125
|
};
|
|
127
126
|
export type DeviceTypeMap = {
|
|
128
|
-
[k in
|
|
127
|
+
[k in Exclude<IKnownDevice, 'neo'>]: IDeviceReleaseInfo;
|
|
129
128
|
} & {
|
|
130
129
|
neo?: IDeviceReleaseInfo;
|
|
131
130
|
};
|
|
@@ -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.86",
|
|
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.86",
|
|
29
|
+
"@onekeyfe/hd-transport": "1.2.0-alpha.86",
|
|
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": "1db5bcce604523bf3b0ee5079c76bdebb328088c"
|
|
48
48
|
}
|
|
@@ -416,7 +416,6 @@ export default class CheckAllFirmwareRelease extends BaseMethod {
|
|
|
416
416
|
state.identity.deviceType === 'neo' ? EDeviceType.Neo : EDeviceType.Pro2;
|
|
417
417
|
const resourceSource = DataManager.getProtocolV2ResourceSource(resourceDeviceType);
|
|
418
418
|
const resourceStatus = 'unknown' as const;
|
|
419
|
-
const resourcePreparationRequired = !!resourceSource;
|
|
420
419
|
const detectedComponentTargets = validatedForceUpdateTargets.includes('firmware')
|
|
421
420
|
? plan.components.flatMap(component =>
|
|
422
421
|
component.updateTarget ? [component.updateTarget] : []
|
|
@@ -434,7 +433,7 @@ export default class CheckAllFirmwareRelease extends BaseMethod {
|
|
|
434
433
|
const targetsToUpdate = Array.from(
|
|
435
434
|
new Set([
|
|
436
435
|
...componentTargetsToUpdate,
|
|
437
|
-
...(
|
|
436
|
+
...(forceResourceUpdate ? (['resource'] as const) : []),
|
|
438
437
|
])
|
|
439
438
|
);
|
|
440
439
|
let firmwareUpdatePlan: FirmwareUpdatePlan | undefined;
|
|
@@ -483,10 +482,7 @@ export default class CheckAllFirmwareRelease extends BaseMethod {
|
|
|
483
482
|
);
|
|
484
483
|
const blePlan = summarizeProtocolV2FirmwareRelease(plan, PROTOCOL_V2_BLE_TARGETS);
|
|
485
484
|
const bootloaderPlan = summarizeProtocolV2FirmwareRelease(plan, PROTOCOL_V2_BOOTLOADER_TARGETS);
|
|
486
|
-
const status =
|
|
487
|
-
resourcePreparationRequired && (plan.status === 'valid' || plan.status === 'unavailable')
|
|
488
|
-
? 'unknown'
|
|
489
|
-
: plan.status;
|
|
485
|
+
const { status } = plan;
|
|
490
486
|
|
|
491
487
|
return {
|
|
492
488
|
firmware: toProtocolV2FirmwareReleaseInfo({ plan: firmwarePlan, state, release }),
|
|
@@ -507,7 +503,6 @@ export default class CheckAllFirmwareRelease extends BaseMethod {
|
|
|
507
503
|
status,
|
|
508
504
|
resourceStatus,
|
|
509
505
|
resourceArchive: resourceSource,
|
|
510
|
-
resourcePreparationRequired,
|
|
511
506
|
hasUpgrade: targetsToUpdate.length > 0,
|
|
512
507
|
targetsToUpdate,
|
|
513
508
|
firmwareUpdatePlan,
|
|
@@ -555,17 +555,22 @@ export default class FirmwareUpdateV4 extends FirmwareUpdateBaseMethod<FirmwareU
|
|
|
555
555
|
'Protocol V2 expected device identity is invalid'
|
|
556
556
|
);
|
|
557
557
|
}
|
|
558
|
+
const preparedPlan = payload.preparedPlan
|
|
559
|
+
? validateFirmwareUpdatePreparedPlan(payload.preparedPlan)
|
|
560
|
+
: undefined;
|
|
558
561
|
const hostBinding =
|
|
559
|
-
|
|
560
|
-
? resolveFirmwareUpdateHostBinding(
|
|
562
|
+
preparedPlan || payload.componentArtifacts
|
|
563
|
+
? resolveFirmwareUpdateHostBinding(
|
|
564
|
+
payload.hostBindingGeneration,
|
|
565
|
+
preparedPlan?.preparedPlanDigest
|
|
566
|
+
)
|
|
561
567
|
: undefined;
|
|
562
568
|
if (hostBinding) {
|
|
563
569
|
const componentArtifacts = (payload.componentArtifacts ?? {}) as NonNullable<
|
|
564
570
|
FirmwareUpdateV4Params['componentArtifacts']
|
|
565
571
|
>;
|
|
566
|
-
const preparedPlan = validateFirmwareUpdatePreparedPlan(payload.preparedPlan);
|
|
567
572
|
assertFirmwareUpdatePreparedPlanBinding({
|
|
568
|
-
preparedPlan,
|
|
573
|
+
preparedPlan: preparedPlan ?? payload.preparedPlan,
|
|
569
574
|
executor: 'v4',
|
|
570
575
|
platform: payload.platform,
|
|
571
576
|
scopeTargets: ['boot', 'app_v1', 'app_v2', 'coprocessor', 'se01', 'se02', 'se03', 'se04'],
|
|
@@ -585,9 +590,7 @@ export default class FirmwareUpdateV4 extends FirmwareUpdateBaseMethod<FirmwareU
|
|
|
585
590
|
}
|
|
586
591
|
|
|
587
592
|
this.params = {
|
|
588
|
-
preparedPlan
|
|
589
|
-
? validateFirmwareUpdatePreparedPlan(payload.preparedPlan)
|
|
590
|
-
: undefined,
|
|
593
|
+
preparedPlan,
|
|
591
594
|
chunkSize: payload.chunkSize,
|
|
592
595
|
forcedUpdateRes: payload.forcedUpdateRes,
|
|
593
596
|
bootloaderBinary: payload.bootloaderBinary,
|
|
@@ -1352,7 +1355,7 @@ export default class FirmwareUpdateV4 extends FirmwareUpdateBaseMethod<FirmwareU
|
|
|
1352
1355
|
return `vol0:/${path}`;
|
|
1353
1356
|
}
|
|
1354
1357
|
|
|
1355
|
-
private async readProtocolV2DeviceFileHeader(path: string) {
|
|
1358
|
+
private async readProtocolV2DeviceFileHeader(path: string, expectedSize?: number) {
|
|
1356
1359
|
const typedCall = this.device.getCommands().typedCall.bind(this.device.getCommands());
|
|
1357
1360
|
const filePath = this.getProtocolV2ResourceFilePath(path);
|
|
1358
1361
|
const pathInfoRes = await typedCall('FilesystemPathInfoQuery', 'FilesystemPathInfo', {
|
|
@@ -1363,7 +1366,8 @@ export default class FirmwareUpdateV4 extends FirmwareUpdateBaseMethod<FirmwareU
|
|
|
1363
1366
|
!pathInfoRes.message?.exist ||
|
|
1364
1367
|
pathInfoRes.message?.directory ||
|
|
1365
1368
|
fileSize === undefined ||
|
|
1366
|
-
fileSize < PROTOCOL_V2_OKPP_HEADER_SIZE
|
|
1369
|
+
fileSize < PROTOCOL_V2_OKPP_HEADER_SIZE ||
|
|
1370
|
+
(expectedSize !== undefined && fileSize !== expectedSize)
|
|
1367
1371
|
) {
|
|
1368
1372
|
return null;
|
|
1369
1373
|
}
|
|
@@ -1401,14 +1405,17 @@ export default class FirmwareUpdateV4 extends FirmwareUpdateBaseMethod<FirmwareU
|
|
|
1401
1405
|
private async isProtocolV2ResourceBundleUpToDate(
|
|
1402
1406
|
bundle: Pick<
|
|
1403
1407
|
ProtocolV2ResourceBundleSource,
|
|
1404
|
-
'name' | 'devicePath' | 'version' | 'payloadHash' | 'headerHash'
|
|
1408
|
+
'name' | 'source' | 'devicePath' | 'version' | 'payloadHash' | 'headerHash'
|
|
1405
1409
|
>
|
|
1406
1410
|
): Promise<boolean> {
|
|
1407
1411
|
if (this.params?.forcedUpdateRes) return false;
|
|
1408
1412
|
if (!bundle.payloadHash || !bundle.headerHash) return false;
|
|
1409
1413
|
|
|
1410
1414
|
try {
|
|
1411
|
-
const header = await this.readProtocolV2DeviceFileHeader(
|
|
1415
|
+
const header = await this.readProtocolV2DeviceFileHeader(
|
|
1416
|
+
bundle.devicePath,
|
|
1417
|
+
bundle.source.size
|
|
1418
|
+
);
|
|
1412
1419
|
if (!header) return false;
|
|
1413
1420
|
|
|
1414
1421
|
if (bundle.version) {
|
|
@@ -16,6 +16,8 @@ class FirmwareHostBindingRegistry {
|
|
|
16
16
|
register(binding: FirmwareUpdateHostBinding): number {
|
|
17
17
|
if (
|
|
18
18
|
!binding ||
|
|
19
|
+
typeof binding.preparedPlanDigest !== 'string' ||
|
|
20
|
+
!/^[0-9a-f]{64}$/i.test(binding.preparedPlanDigest) ||
|
|
19
21
|
typeof binding.artifactReader?.open !== 'function' ||
|
|
20
22
|
typeof binding.artifactReader.read !== 'function' ||
|
|
21
23
|
typeof binding.artifactReader.close !== 'function'
|
|
@@ -40,7 +42,7 @@ class FirmwareHostBindingRegistry {
|
|
|
40
42
|
return this.generation;
|
|
41
43
|
}
|
|
42
44
|
|
|
43
|
-
resolve(generation: number): FirmwareUpdateHostBinding {
|
|
45
|
+
resolve(generation: number, preparedPlanDigest?: string): FirmwareUpdateHostBinding {
|
|
44
46
|
if (
|
|
45
47
|
!Number.isSafeInteger(generation) ||
|
|
46
48
|
generation <= 0 ||
|
|
@@ -50,12 +52,21 @@ class FirmwareHostBindingRegistry {
|
|
|
50
52
|
return bindingError(`Firmware host binding generation ${generation} is stale`);
|
|
51
53
|
}
|
|
52
54
|
const { binding } = this;
|
|
55
|
+
if (
|
|
56
|
+
preparedPlanDigest !== undefined &&
|
|
57
|
+
binding.preparedPlanDigest.toLowerCase() !== preparedPlanDigest.toLowerCase()
|
|
58
|
+
) {
|
|
59
|
+
return bindingError(
|
|
60
|
+
`Firmware host binding generation ${generation} does not match the prepared plan`
|
|
61
|
+
);
|
|
62
|
+
}
|
|
53
63
|
const assertCurrent = () => {
|
|
54
64
|
if (generation !== this.generation || binding !== this.binding) {
|
|
55
65
|
bindingError(`Firmware host binding generation ${generation} is stale`);
|
|
56
66
|
}
|
|
57
67
|
};
|
|
58
68
|
return {
|
|
69
|
+
preparedPlanDigest: binding.preparedPlanDigest,
|
|
59
70
|
artifactReader: {
|
|
60
71
|
open: async input => {
|
|
61
72
|
assertCurrent();
|
|
@@ -96,5 +107,7 @@ export const getFirmwareUpdateHostBindingGeneration = (): number =>
|
|
|
96
107
|
firmwareHostBindingRegistry.getGeneration();
|
|
97
108
|
|
|
98
109
|
export const resolveFirmwareUpdateHostBinding = (
|
|
99
|
-
generation: number | undefined
|
|
100
|
-
|
|
110
|
+
generation: number | undefined,
|
|
111
|
+
preparedPlanDigest?: string
|
|
112
|
+
): FirmwareUpdateHostBinding =>
|
|
113
|
+
firmwareHostBindingRegistry.resolve(generation ?? Number.NaN, preparedPlanDigest);
|
|
@@ -144,7 +144,10 @@ export function prepareFirmwareUpdateV4MemoryHost({
|
|
|
144
144
|
return Promise.resolve();
|
|
145
145
|
},
|
|
146
146
|
};
|
|
147
|
-
const hostBindingGeneration = sdk.registerFirmwareUpdateHostBinding({
|
|
147
|
+
const hostBindingGeneration = sdk.registerFirmwareUpdateHostBinding({
|
|
148
|
+
artifactReader,
|
|
149
|
+
preparedPlanDigest: preparedPlan.preparedPlanDigest,
|
|
150
|
+
});
|
|
148
151
|
const componentArtifacts: FirmwareUpdateV4MemoryHost['componentArtifacts'] = {};
|
|
149
152
|
const expectedTargetVersions: FirmwareUpdateV4MemoryHost['expectedTargetVersions'] = {};
|
|
150
153
|
for (const artifact of preparedPlan.artifacts) {
|
|
@@ -94,12 +94,10 @@ export default class DataManager {
|
|
|
94
94
|
ble: [],
|
|
95
95
|
},
|
|
96
96
|
[EDeviceType.Pro2]: {
|
|
97
|
-
firmware: [],
|
|
98
|
-
ble: [],
|
|
97
|
+
'firmware-v1': [],
|
|
99
98
|
},
|
|
100
99
|
[EDeviceType.Neo]: {
|
|
101
|
-
firmware: [],
|
|
102
|
-
ble: [],
|
|
100
|
+
'firmware-v1': [],
|
|
103
101
|
},
|
|
104
102
|
[EDeviceType.ClassicPure]: {
|
|
105
103
|
firmware: [],
|
|
@@ -121,6 +119,8 @@ export default class DataManager {
|
|
|
121
119
|
|
|
122
120
|
static protocolV2ResourcesConfigError: Error | undefined;
|
|
123
121
|
|
|
122
|
+
private static protocolV2NeoResourcesConfigError: Error | undefined;
|
|
123
|
+
|
|
124
124
|
static getFirmwareStatus = (
|
|
125
125
|
features: Features,
|
|
126
126
|
firmwareType: EFirmwareType
|
|
@@ -410,6 +410,7 @@ export default class DataManager {
|
|
|
410
410
|
static async load(settings: ConnectSettings): Promise<boolean> {
|
|
411
411
|
this.settings = settings;
|
|
412
412
|
this.protocolV2ResourcesConfigError = undefined;
|
|
413
|
+
this.protocolV2NeoResourcesConfigError = undefined;
|
|
413
414
|
const manifestMode =
|
|
414
415
|
settings.firmwareManifestMode ?? (settings.fetchConfig ? 'sdk-managed' : undefined);
|
|
415
416
|
if (settings.preloadedConfig) {
|
|
@@ -476,15 +477,21 @@ export default class DataManager {
|
|
|
476
477
|
pro2Resources = parseProtocolV2Resources(
|
|
477
478
|
(data.pro2 as { resources?: unknown } | undefined)?.resources
|
|
478
479
|
);
|
|
479
|
-
neoResources = parseProtocolV2Resources(
|
|
480
|
-
(data.neo as { resources?: unknown } | undefined)?.resources
|
|
481
|
-
);
|
|
482
480
|
} catch (error) {
|
|
483
481
|
// Firmware resource metadata is not required for base communication. If the
|
|
484
482
|
// remote config is temporarily incomplete, disable this resource update only.
|
|
485
483
|
this.protocolV2ResourcesConfigError =
|
|
486
484
|
error instanceof Error ? error : new Error(String(error));
|
|
487
|
-
Log.warn('[DataConfig] Ignoring invalid
|
|
485
|
+
Log.warn('[DataConfig] Ignoring invalid Pro2 resources config:', error);
|
|
486
|
+
}
|
|
487
|
+
try {
|
|
488
|
+
neoResources = parseProtocolV2Resources(
|
|
489
|
+
(data.neo as { resources?: unknown } | undefined)?.resources
|
|
490
|
+
);
|
|
491
|
+
} catch (error) {
|
|
492
|
+
this.protocolV2NeoResourcesConfigError =
|
|
493
|
+
error instanceof Error ? error : new Error(String(error));
|
|
494
|
+
Log.warn('[DataConfig] Ignoring invalid Neo resources config:', error);
|
|
488
495
|
}
|
|
489
496
|
const enrichedPro2Config = this.enrichFirmwareReleaseInfo(data.pro2);
|
|
490
497
|
const enrichedNeoConfig = this.enrichFirmwareReleaseInfo(data.neo);
|
|
@@ -537,7 +544,12 @@ export default class DataManager {
|
|
|
537
544
|
/** Force a fresh remote config before an update is allowed to mutate the device. */
|
|
538
545
|
static async forceReloadData({
|
|
539
546
|
requireResources = false,
|
|
540
|
-
|
|
547
|
+
resourceDeviceType = EDeviceType.Pro2,
|
|
548
|
+
}: {
|
|
549
|
+
requireResources?: boolean;
|
|
550
|
+
resourceDeviceType?: EDeviceType.Pro2 | EDeviceType.Neo;
|
|
551
|
+
} = {}): Promise<void> {
|
|
552
|
+
const resourceDeviceName = resourceDeviceType === EDeviceType.Pro2 ? 'Pro2' : 'Neo';
|
|
541
553
|
if (!this.settings) {
|
|
542
554
|
throw new Error('Remote config settings are not initialized');
|
|
543
555
|
}
|
|
@@ -545,10 +557,14 @@ export default class DataManager {
|
|
|
545
557
|
this.lastCheckTimestamp > 0 &&
|
|
546
558
|
getTimeStamp() - this.lastCheckTimestamp <= FIRMWARE_UPDATE_CONFIG_FRESHNESS_MS;
|
|
547
559
|
if (hasFreshConfig) {
|
|
548
|
-
|
|
560
|
+
const resourcesConfigError =
|
|
561
|
+
resourceDeviceType === EDeviceType.Pro2
|
|
562
|
+
? this.protocolV2ResourcesConfigError
|
|
563
|
+
: this.protocolV2NeoResourcesConfigError;
|
|
564
|
+
if (requireResources && resourcesConfigError) {
|
|
549
565
|
throw ERRORS.TypedError(
|
|
550
566
|
HardwareErrorCode.FirmwareUpdateDownloadFailed,
|
|
551
|
-
`Invalid
|
|
567
|
+
`Invalid ${resourceDeviceName} resources config: ${resourcesConfigError.message}`
|
|
552
568
|
);
|
|
553
569
|
}
|
|
554
570
|
return;
|
|
@@ -560,10 +576,14 @@ export default class DataManager {
|
|
|
560
576
|
'Unable to refresh the latest remote config'
|
|
561
577
|
);
|
|
562
578
|
}
|
|
563
|
-
|
|
579
|
+
const resourcesConfigError =
|
|
580
|
+
resourceDeviceType === EDeviceType.Pro2
|
|
581
|
+
? this.protocolV2ResourcesConfigError
|
|
582
|
+
: this.protocolV2NeoResourcesConfigError;
|
|
583
|
+
if (requireResources && resourcesConfigError) {
|
|
564
584
|
throw ERRORS.TypedError(
|
|
565
585
|
HardwareErrorCode.FirmwareUpdateDownloadFailed,
|
|
566
|
-
`Invalid
|
|
586
|
+
`Invalid ${resourceDeviceName} resources config: ${resourcesConfigError.message}`
|
|
567
587
|
);
|
|
568
588
|
}
|
|
569
589
|
this.lastCheckTimestamp = getTimeStamp();
|