@onekeyfe/hd-core 1.2.0-alpha.95 → 1.2.0-alpha.97
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 +84 -404
- package/__tests__/firmware-update/device-update-bootloader.test.ts +2 -6
- package/__tests__/firmware-update/firmware-host-binding.test.ts +0 -9
- package/__tests__/firmware-update/firmware-update-bootloader-poll.test.ts +112 -0
- package/__tests__/firmware-update/firmware-update-plan.test.ts +70 -131
- package/__tests__/firmware-update/firmware-update-prepared-plan.test.ts +1 -53
- package/__tests__/protocol-v2-resources.test.ts +232 -148
- package/__tests__/protocol-v2.test.ts +517 -1106
- package/dist/api/CheckAllFirmwareRelease.d.ts +3 -2
- package/dist/api/CheckAllFirmwareRelease.d.ts.map +1 -1
- package/dist/api/CheckBLEFirmwareRelease.d.ts +2 -3
- package/dist/api/CheckBLEFirmwareRelease.d.ts.map +1 -1
- package/dist/api/CheckBootloaderRelease.d.ts +1 -2
- package/dist/api/CheckBootloaderRelease.d.ts.map +1 -1
- package/dist/api/CheckFirmwareRelease.d.ts +2 -3
- package/dist/api/CheckFirmwareRelease.d.ts.map +1 -1
- package/dist/api/FirmwareUpdateV2.d.ts +0 -1
- package/dist/api/FirmwareUpdateV2.d.ts.map +1 -1
- package/dist/api/FirmwareUpdateV3.d.ts.map +1 -1
- package/dist/api/FirmwareUpdateV4.d.ts +8 -6
- package/dist/api/FirmwareUpdateV4.d.ts.map +1 -1
- package/dist/api/UploadPortfolio.d.ts.map +1 -1
- package/dist/api/device/DeviceUpdateBootloader.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/FirmwareUpdateBaseMethod.d.ts.map +1 -1
- package/dist/api/firmware/FirmwareUpdatePlan.d.ts +1 -48
- package/dist/api/firmware/FirmwareUpdatePlan.d.ts.map +1 -1
- package/dist/api/firmware/FirmwareUpdatePreparedPlan.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/data-manager/DataManager.d.ts +3 -4
- package/dist/data-manager/DataManager.d.ts.map +1 -1
- package/dist/index.d.ts +111 -103
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +849 -1301
- package/dist/protocols/protocol-v2/resources.d.ts +28 -10
- package/dist/protocols/protocol-v2/resources.d.ts.map +1 -1
- package/dist/types/api/checkAllFirmwareRelease.d.ts +8 -20
- package/dist/types/api/checkAllFirmwareRelease.d.ts.map +1 -1
- package/dist/types/api/checkBLEFirmwareRelease.d.ts +13 -2
- package/dist/types/api/checkBLEFirmwareRelease.d.ts.map +1 -1
- package/dist/types/api/checkBootloaderRelease.d.ts +6 -2
- package/dist/types/api/checkBootloaderRelease.d.ts.map +1 -1
- package/dist/types/api/checkFirmwareRelease.d.ts +13 -2
- package/dist/types/api/checkFirmwareRelease.d.ts.map +1 -1
- package/dist/types/api/checkFirmwareTypeAvailable.d.ts +2 -2
- package/dist/types/api/checkFirmwareTypeAvailable.d.ts.map +1 -1
- package/dist/types/api/export.d.ts +1 -1
- package/dist/types/api/export.d.ts.map +1 -1
- package/dist/types/api/firmwareUpdate.d.ts +11 -3
- package/dist/types/api/firmwareUpdate.d.ts.map +1 -1
- package/dist/types/settings.d.ts +36 -35
- package/dist/types/settings.d.ts.map +1 -1
- package/package.json +4 -4
- package/src/api/CheckAllFirmwareRelease.ts +80 -108
- package/src/api/CheckBLEFirmwareRelease.ts +5 -37
- package/src/api/CheckBootloaderRelease.ts +3 -35
- package/src/api/CheckFirmwareRelease.ts +7 -35
- package/src/api/FirmwareUpdateV2.ts +3 -15
- package/src/api/FirmwareUpdateV3.ts +6 -13
- package/src/api/FirmwareUpdateV4.ts +407 -824
- package/src/api/UploadPortfolio.ts +0 -18
- package/src/api/device/DeviceUpdateBootloader.ts +5 -26
- package/src/api/firmware/FirmwareHostBinding.ts +3 -16
- package/src/api/firmware/FirmwareUpdateBaseMethod.ts +2 -0
- package/src/api/firmware/FirmwareUpdatePlan.ts +88 -226
- package/src/api/firmware/FirmwareUpdatePreparedPlan.ts +3 -10
- package/src/data-manager/DataManager.ts +19 -35
- package/src/index.ts +0 -10
- package/src/protocols/protocol-v2/resources.ts +341 -157
- package/src/types/api/checkAllFirmwareRelease.ts +12 -27
- package/src/types/api/checkBLEFirmwareRelease.ts +13 -4
- package/src/types/api/checkBootloaderRelease.ts +6 -2
- package/src/types/api/checkFirmwareRelease.ts +13 -2
- package/src/types/api/checkFirmwareTypeAvailable.ts +2 -2
- package/src/types/api/export.ts +1 -6
- package/src/types/api/firmwareUpdate.ts +16 -10
- package/src/types/settings.ts +61 -35
- package/src/utils/deviceFeaturesUtils.ts +2 -2
- package/__tests__/check-firmware-release-protocol-v2.test.ts +0 -199
- package/__tests__/firmware-memory-host.test.ts +0 -112
- package/__tests__/firmware-update/firmware-prepared-host-digest.test.ts +0 -448
- package/dist/api/firmware/FirmwareMemoryHost.d.ts +0 -22
- package/dist/api/firmware/FirmwareMemoryHost.d.ts.map +0 -1
- package/dist/api/firmware/protocolV2Release.d.ts +0 -33
- package/dist/api/firmware/protocolV2Release.d.ts.map +0 -1
- package/src/api/firmware/FirmwareMemoryHost.ts +0 -142
- package/src/api/firmware/protocolV2Release.ts +0 -168
|
@@ -1,168 +0,0 @@
|
|
|
1
|
-
import { EFirmwareType, ERRORS, HardwareErrorCode } from '@onekeyfe/hd-shared';
|
|
2
|
-
|
|
3
|
-
import { DataManager } from '../../data-manager';
|
|
4
|
-
|
|
5
|
-
import type { EDeviceType } from '@onekeyfe/hd-shared';
|
|
6
|
-
import type { Device } from '../../device/Device';
|
|
7
|
-
import type {
|
|
8
|
-
DeviceState,
|
|
9
|
-
Features,
|
|
10
|
-
IFirmwareReleaseInfo,
|
|
11
|
-
IProtocolV2FirmwareComponentTarget,
|
|
12
|
-
} from '../../types';
|
|
13
|
-
import type {
|
|
14
|
-
FirmwareReleaseCheckResult,
|
|
15
|
-
ProtocolV2ComponentReleaseInfo,
|
|
16
|
-
ProtocolV2FirmwareReleaseStatus,
|
|
17
|
-
} from '../../types/api/checkAllFirmwareRelease';
|
|
18
|
-
import type { ProtocolV2FirmwareReleasePlan } from '../CheckAllFirmwareRelease';
|
|
19
|
-
|
|
20
|
-
export const PROTOCOL_V2_MAIN_FIRMWARE_TARGETS: readonly IProtocolV2FirmwareComponentTarget[] = [
|
|
21
|
-
'APPLICATION_P1',
|
|
22
|
-
'APPLICATION_P2',
|
|
23
|
-
'SE01',
|
|
24
|
-
'SE02',
|
|
25
|
-
'SE03',
|
|
26
|
-
'SE04',
|
|
27
|
-
];
|
|
28
|
-
|
|
29
|
-
export const PROTOCOL_V2_BLE_TARGETS: readonly IProtocolV2FirmwareComponentTarget[] = [
|
|
30
|
-
'COPROCESSOR',
|
|
31
|
-
];
|
|
32
|
-
|
|
33
|
-
export const PROTOCOL_V2_BOOTLOADER_TARGETS: readonly IProtocolV2FirmwareComponentTarget[] = [
|
|
34
|
-
'BOOTLOADER',
|
|
35
|
-
];
|
|
36
|
-
|
|
37
|
-
export type ProtocolV2FirmwareReleaseContext = {
|
|
38
|
-
state: Omit<DeviceState, 'identity'> & {
|
|
39
|
-
identity: Omit<DeviceState['identity'], 'deviceType'> & {
|
|
40
|
-
deviceType: EDeviceType.Pro2 | EDeviceType.Neo;
|
|
41
|
-
};
|
|
42
|
-
};
|
|
43
|
-
features: Features;
|
|
44
|
-
firmwareType: EFirmwareType;
|
|
45
|
-
release: IFirmwareReleaseInfo | undefined;
|
|
46
|
-
};
|
|
47
|
-
|
|
48
|
-
export async function loadProtocolV2FirmwareReleaseContext({
|
|
49
|
-
device,
|
|
50
|
-
firmwareType: firmwareTypeParam,
|
|
51
|
-
checkFirmwareHash = false,
|
|
52
|
-
methodName,
|
|
53
|
-
}: {
|
|
54
|
-
device: Device;
|
|
55
|
-
firmwareType?: EFirmwareType;
|
|
56
|
-
checkFirmwareHash?: boolean;
|
|
57
|
-
methodName: string;
|
|
58
|
-
}): Promise<ProtocolV2FirmwareReleaseContext> {
|
|
59
|
-
const state = await device.getDeviceState({
|
|
60
|
-
refreshSections: checkFirmwareHash
|
|
61
|
-
? ['identity', 'versions', 'verification']
|
|
62
|
-
: ['identity', 'versions'],
|
|
63
|
-
});
|
|
64
|
-
if (state.identity.deviceType !== 'pro2' && state.identity.deviceType !== 'neo') {
|
|
65
|
-
throw ERRORS.TypedError(
|
|
66
|
-
HardwareErrorCode.DeviceNotSupportMethod,
|
|
67
|
-
`${methodName} requires a Pro2 or Neo device for Protocol V2`
|
|
68
|
-
);
|
|
69
|
-
}
|
|
70
|
-
|
|
71
|
-
const { features } = device;
|
|
72
|
-
if (!features) {
|
|
73
|
-
throw ERRORS.TypedError(
|
|
74
|
-
HardwareErrorCode.RuntimeError,
|
|
75
|
-
`${methodName} requires initialized device features`
|
|
76
|
-
);
|
|
77
|
-
}
|
|
78
|
-
|
|
79
|
-
const firmwareType = firmwareTypeParam ?? state.identity.firmwareType ?? EFirmwareType.Universal;
|
|
80
|
-
return {
|
|
81
|
-
state: state as ProtocolV2FirmwareReleaseContext['state'],
|
|
82
|
-
features,
|
|
83
|
-
firmwareType,
|
|
84
|
-
release: DataManager.getFirmwareLatestRelease(features, firmwareType),
|
|
85
|
-
};
|
|
86
|
-
}
|
|
87
|
-
|
|
88
|
-
export function summarizeProtocolV2FirmwareRelease(
|
|
89
|
-
plan: ProtocolV2FirmwareReleasePlan,
|
|
90
|
-
componentTargets: readonly IProtocolV2FirmwareComponentTarget[]
|
|
91
|
-
): ProtocolV2FirmwareReleasePlan {
|
|
92
|
-
const targetSet = new Set<IProtocolV2FirmwareComponentTarget>(componentTargets);
|
|
93
|
-
const components = plan.components.filter(component => targetSet.has(component.componentTarget));
|
|
94
|
-
const targetsToUpdate = Array.from(
|
|
95
|
-
new Set(
|
|
96
|
-
components.flatMap(component =>
|
|
97
|
-
component.status === 'outdated' && component.updateTarget ? [component.updateTarget] : []
|
|
98
|
-
)
|
|
99
|
-
)
|
|
100
|
-
);
|
|
101
|
-
const hasUpgrade = targetsToUpdate.length > 0;
|
|
102
|
-
const required = !!plan.release?.required && hasUpgrade;
|
|
103
|
-
let status: ProtocolV2FirmwareReleaseStatus = 'valid';
|
|
104
|
-
if (!plan.release || components.length === 0) {
|
|
105
|
-
status = 'unavailable';
|
|
106
|
-
} else if (required) {
|
|
107
|
-
status = 'required';
|
|
108
|
-
} else if (hasUpgrade) {
|
|
109
|
-
status = 'outdated';
|
|
110
|
-
} else if (components.some(component => component.status === 'unknown')) {
|
|
111
|
-
status = 'unknown';
|
|
112
|
-
} else if (components.every(component => component.status === 'unsupported')) {
|
|
113
|
-
status = 'unavailable';
|
|
114
|
-
}
|
|
115
|
-
|
|
116
|
-
return {
|
|
117
|
-
...plan,
|
|
118
|
-
status,
|
|
119
|
-
hasUpgrade,
|
|
120
|
-
required,
|
|
121
|
-
components,
|
|
122
|
-
targetsToUpdate,
|
|
123
|
-
};
|
|
124
|
-
}
|
|
125
|
-
|
|
126
|
-
export function toProtocolV2FirmwareReleaseInfo({
|
|
127
|
-
plan,
|
|
128
|
-
state,
|
|
129
|
-
release,
|
|
130
|
-
}: {
|
|
131
|
-
plan: ProtocolV2FirmwareReleasePlan;
|
|
132
|
-
state: DeviceState;
|
|
133
|
-
release: FirmwareReleaseCheckResult['release'];
|
|
134
|
-
}): FirmwareReleaseCheckResult {
|
|
135
|
-
return {
|
|
136
|
-
shouldUpdate: plan.hasUpgrade,
|
|
137
|
-
status: plan.status === 'unavailable' ? 'unknown' : plan.status,
|
|
138
|
-
// Protocol V2 components share package-set release notes. The optional
|
|
139
|
-
// bootloaderChangelog field belongs to the legacy Protocol V1 release model.
|
|
140
|
-
changelog: plan.release ? [plan.release.changelog] : [],
|
|
141
|
-
release,
|
|
142
|
-
bootloaderMode: state.status.mode === 'bootloader' || state.status.mode === 'romloader',
|
|
143
|
-
};
|
|
144
|
-
}
|
|
145
|
-
|
|
146
|
-
export function getProtocolV2ComponentReleaseInfo(
|
|
147
|
-
plan: ProtocolV2FirmwareReleasePlan,
|
|
148
|
-
componentTarget: IProtocolV2FirmwareComponentTarget
|
|
149
|
-
): ProtocolV2ComponentReleaseInfo | undefined {
|
|
150
|
-
const componentRelease = plan.components.find(
|
|
151
|
-
component => component.componentTarget === componentTarget
|
|
152
|
-
);
|
|
153
|
-
if (!componentRelease || !plan.release) {
|
|
154
|
-
return undefined;
|
|
155
|
-
}
|
|
156
|
-
const component = plan.release.components?.[componentRelease.configKey];
|
|
157
|
-
if (!component) {
|
|
158
|
-
return undefined;
|
|
159
|
-
}
|
|
160
|
-
return {
|
|
161
|
-
...component,
|
|
162
|
-
protocol: 'V2',
|
|
163
|
-
configKey: componentRelease.configKey,
|
|
164
|
-
componentTarget,
|
|
165
|
-
required: plan.release.required,
|
|
166
|
-
changelog: plan.release.changelog,
|
|
167
|
-
};
|
|
168
|
-
}
|