Skip to content

Commit 586371c

Browse files
committed
feat: protobuf v1
1 parent 25ac0d0 commit 586371c

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

48 files changed

+15839
-1744
lines changed

.gitmodules

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,3 @@
1-
[submodule "submodules/firmware"]
2-
path = submodules/firmware
3-
url = https://github.com/OneKeyHQ/firmware.git
1+
[submodule "submodules/onekey-protocol"]
2+
path = submodules/onekey-protocol
3+
url = git@github.com:OneKeyHQ/onekey-protocol.git

packages/connect-examples/expo-example/src/components/BaseTestRunner/Context/TestRunnerProvider.tsx

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
import { createContext, useMemo, useState } from 'react';
22

3-
import type { Features, OnekeyFeatures } from '@onekeyfe/hd-transport';
3+
import type { Features } from '@onekeyfe/hd-transport';
44
import type { TestCaseDataWithKey } from '../types';
55

66
export const TestRunnerContext = createContext<{
@@ -13,8 +13,8 @@ export const TestRunnerContext = createContext<{
1313
runningDeviceFeatures?: Features;
1414
setRunningDeviceFeatures?: React.Dispatch<React.SetStateAction<Features>>;
1515

16-
runningOneKeyDeviceFeatures?: OnekeyFeatures;
17-
setRunningOneKeyDeviceFeatures?: React.Dispatch<React.SetStateAction<OnekeyFeatures>>;
16+
runningOneKeyDeviceFeatures?: any;
17+
setRunningOneKeyDeviceFeatures?: React.Dispatch<React.SetStateAction<any>>;
1818

1919
timestampBeginTest?: number;
2020
setTimestampBeginTest?: React.Dispatch<React.SetStateAction<number>>;
@@ -37,7 +37,7 @@ export function TestRunnerProvider({ children }: { children: React.ReactNode })
3737
const [runnerTestCaseTitle, setRunnerTestCaseTitle] = useState<string>();
3838
const [runnerDone, setRunnerDone] = useState<boolean>();
3939
const [runningDeviceFeatures, setRunningDeviceFeatures] = useState<Features>();
40-
const [runningOneKeyDeviceFeatures, setRunningOneKeyDeviceFeatures] = useState<OnekeyFeatures>();
40+
const [runningOneKeyDeviceFeatures, setRunningOneKeyDeviceFeatures] = useState<any>();
4141
const [timestampBeginTest, setTimestampBeginTest] = useState<number>();
4242
const [timestampEndTest, setTimestampEndTest] = useState<number>();
4343

packages/connect-examples/expo-example/src/components/BaseTestRunner/useRunnerTest.ts

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -153,7 +153,6 @@ export function useRunnerTest<T>(config: RunnerConfig<T>) {
153153

154154
try {
155155
const onekeyFeatures = await SDK.getOnekeyFeatures(connectId);
156-
// @ts-expect-error
157156
setRunningOneKeyDeviceFeatures?.(onekeyFeatures.payload);
158157
} catch (error) {
159158
// ignore
Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,5 @@
1-
import packageJson from '../../package.json';
1+
// import packageJson from '../../package.json';
22

3-
export const CONNECT_SRC =
4-
process.env.CONNECT_SRC || `https://jssdk.onekey.so/${packageJson.version}/`;
3+
// export const CONNECT_SRC =
4+
// process.env.CONNECT_SRC || `https://jssdk.onekey.so/${packageJson.version}/`;
5+
export const CONNECT_SRC = process.env.CONNECT_SRC || `https://jssdk.onekeytest.com/`;
Lines changed: 148 additions & 65 deletions
Original file line numberDiff line numberDiff line change
@@ -1,38 +1,43 @@
11
import {
2-
getDeviceBootloaderVersion,
3-
getDeviceFirmwareVersion,
4-
getDeviceType,
5-
getDeviceUUID,
6-
} from '@onekeyfe/hd-core';
7-
import type { Features, OnekeyFeatures } from '@onekeyfe/hd-transport';
2+
getHardwareInfoFromFeatures,
3+
getFirmwareInfoFromFeatures,
4+
getSeInfoFromFeatures,
5+
EDeviceType,
6+
} from '@onekeyfe/hd-shared';
7+
import type { Features } from '@onekeyfe/hd-transport';
88

99
export const getReleaseUrl = ({ features }: { features?: Features }) => {
10-
const deviceType = getDeviceType(features)?.toUpperCase() || 'UNKNOWN';
11-
// const { firmwareUrl, bleVersion } = getDeviceBasicInfo(features, onekeyFeatures);
10+
if (!features)
11+
return {
12+
onekey_boot_url: '',
13+
onekey_firmware_url: '',
14+
onekey_ble_url: '',
15+
};
16+
const { firmwareVersion, bootloaderVersion, bleVersion } = getFirmwareInfoFromFeatures(features);
17+
const { deviceType } = getHardwareInfoFromFeatures(features);
1218
// classic 类型(包括classci 1s, mini, classic),不需要更新bootloader
13-
const firmwareVersion = getDeviceFirmwareVersion(features).join('.');
14-
const bootloaderVersion = `${getDeviceBootloaderVersion(features)?.join('.')}`;
1519
switch (deviceType) {
16-
case 'CLASSIC1S':
20+
case EDeviceType.Classic1s:
21+
case EDeviceType.ClassicPure:
1722
return {
1823
onekey_boot_url: '',
1924
onekey_firmware_url: firmwareVersion
2025
? `https://github.com/OneKeyHQ/firmware-classic1s/releases/tag/v${firmwareVersion}`
2126
: '',
22-
onekey_ble_url: features?.ble_ver
23-
? `https://github.com/OneKeyHQ/bluetooth-firmware-classic/releases/tag/v${features?.ble_ver}`
27+
onekey_ble_url: bleVersion
28+
? `https://github.com/OneKeyHQ/bluetooth-firmware-classic/releases/tag/v${bleVersion}`
2429
: '',
2530
};
26-
case 'PRO':
31+
case EDeviceType.Pro:
2732
return {
2833
onekey_boot_url: bootloaderVersion
2934
? `https://github.com/OneKeyHQ/firmware-pro/releases/tag/bootloader-v${bootloaderVersion}`
3035
: '',
3136
onekey_firmware_url: firmwareVersion
3237
? `https://github.com/OneKeyHQ/firmware-pro/releases/tag/v${firmwareVersion}`
3338
: '',
34-
onekey_ble_url: features?.ble_ver
35-
? `https://github.com/OneKeyHQ/bluetooth-firmware-pro/releases/tag/v${features?.ble_ver}`
39+
onekey_ble_url: bleVersion
40+
? `https://github.com/OneKeyHQ/bluetooth-firmware-pro/releases/tag/v${bleVersion}`
3641
: '',
3742
};
3843
default:
@@ -44,27 +49,31 @@ export const getReleaseUrl = ({ features }: { features?: Features }) => {
4449
}
4550
};
4651

47-
export function getDeviceBasicInfo(
48-
features: Features | undefined,
49-
onekeyFeatures: OnekeyFeatures | undefined
50-
) {
51-
const deviceType = getDeviceType(features)?.toUpperCase() || 'UNKNOWN';
52-
const serialNumber = features && getDeviceUUID(features);
53-
54-
const bleBuildId = onekeyFeatures?.onekey_ble_build_id || features?.onekey_ble_build_id;
55-
const bleVersion = `${features?.ble_ver}-${bleBuildId}`;
56-
57-
const bootloaderBuildId = onekeyFeatures?.onekey_boot_build_id || features?.onekey_boot_build_id;
58-
const bootloaderVersion =
59-
features && `${getDeviceBootloaderVersion(features)?.join('.')}-${bootloaderBuildId}`;
60-
61-
const boardloaderVersion =
62-
features && `${features?.onekey_board_version}-${onekeyFeatures?.onekey_board_build_id}`;
63-
64-
const firmwareBuildId =
65-
onekeyFeatures?.onekey_firmware_build_id || features?.onekey_firmware_build_id;
66-
const firmwareVersion =
67-
features && `${getDeviceFirmwareVersion(features)?.join('.')}-${firmwareBuildId}`;
52+
export function getDeviceBasicInfo(features: Features | undefined) {
53+
if (!features)
54+
return {
55+
deviceType: '',
56+
serialNumber: '',
57+
bleVersion: '',
58+
bootloaderVersion: '',
59+
boardloaderVersion: '',
60+
firmwareVersion: '',
61+
boardloaderBuildId: '',
62+
bootloaderBuildId: '',
63+
firmwareBuildId: '',
64+
bleBuildId: '',
65+
};
66+
const {
67+
bootloaderVersion,
68+
boardloaderVersion,
69+
firmwareVersion,
70+
firmwareBuildId,
71+
bootloaderBuildId,
72+
boardloaderBuildId,
73+
bleVersion,
74+
bleBuildId,
75+
} = getFirmwareInfoFromFeatures(features);
76+
const { deviceType, serialNumber } = getHardwareInfoFromFeatures(features);
6877

6978
const {
7079
onekey_firmware_url: firmwareUrl,
@@ -81,49 +90,46 @@ export function getDeviceBasicInfo(
8190
bootloaderVersion,
8291
boardloaderVersion,
8392
firmwareVersion,
93+
bootloaderBuildId,
94+
boardloaderBuildId,
95+
firmwareBuildId,
96+
bleBuildId,
8497
bootUrl,
8598
firmwareUrl,
8699
bleUrl,
87100
};
88101
}
89102

90-
export function getDeviceInfo(
91-
features: Features | undefined,
92-
onekeyFeatures: OnekeyFeatures | undefined
93-
) {
103+
export function getDeviceInfo(features: Features | undefined, onekeyFeatures: any | undefined) {
104+
if (!features) throw new Error('features is undefined');
105+
const _features = {
106+
...features,
107+
...onekeyFeatures,
108+
};
109+
console.error('caikaisheng _features', _features);
94110
const {
95111
deviceType,
96112
serialNumber,
97113
bleVersion,
98114
bootloaderVersion,
99115
boardloaderVersion,
100116
firmwareVersion,
101-
} = getDeviceBasicInfo(features, onekeyFeatures);
102-
103-
const firmwareHash = onekeyFeatures?.onekey_firmware_hash || features?.onekey_firmware_hash;
104-
105-
const bootloaderHash =
106-
onekeyFeatures?.onekey_boot_hash || features?.onekey_boot_hash || features?.bootloader_hash;
107-
108-
const se01BuildId = onekeyFeatures?.onekey_se01_build_id || features?.onekey_se01_build_id;
109-
const se01Version = `${features?.onekey_se01_version || features?.se_ver}-${se01BuildId}`;
110-
const se01Hash = onekeyFeatures?.onekey_se01_hash;
111-
112-
const se02BuildId = onekeyFeatures?.onekey_se02_build_id;
113-
const se02Version = `${features?.onekey_se02_version}-${se02BuildId}`;
114-
const se02Hash = onekeyFeatures?.onekey_se02_hash;
115-
116-
const se03BuildId = onekeyFeatures?.onekey_se03_build_id;
117-
const se03Version = `${features?.onekey_se03_version}-${se03BuildId}`;
118-
const se03Hash = onekeyFeatures?.onekey_se03_hash;
119-
120-
const se04BuildId = onekeyFeatures?.onekey_se04_build_id;
121-
const se04Version = `${features?.onekey_se04_version}-${se04BuildId}`;
122-
const se04Hash = onekeyFeatures?.onekey_se04_hash;
117+
} = getDeviceBasicInfo(_features as Features);
123118

124-
const boardloaderHash = onekeyFeatures?.onekey_board_hash || features?.onekey_board_hash;
119+
const { firmwareHash, bootloaderHash, boardloaderHash, bleHash } = getFirmwareInfoFromFeatures(
120+
_features as Features
121+
);
125122

126-
const bleHash = onekeyFeatures?.onekey_ble_hash || features?.onekey_ble_hash;
123+
const {
124+
se01Version,
125+
se01Hash,
126+
se02Version,
127+
se02Hash,
128+
se03Version,
129+
se03Hash,
130+
se04Version,
131+
se04Hash,
132+
} = getSeInfoFromFeatures(_features as Features);
127133

128134
return {
129135
deviceType,
@@ -146,3 +152,80 @@ export function getDeviceInfo(
146152
bleHash,
147153
};
148154
}
155+
156+
export function getFeaturesBetweenProtocol(features: Features | undefined) {
157+
if (!features) return {};
158+
159+
const hardwareInfo = getHardwareInfoFromFeatures(features);
160+
const firmwareInfo = getFirmwareInfoFromFeatures(features);
161+
const seInfo = getSeInfoFromFeatures(features);
162+
163+
return {
164+
...features,
165+
166+
// Firmware info
167+
onekey_firmware_version: firmwareInfo.firmwareVersion,
168+
onekey_firmware_hash: firmwareInfo.firmwareHash,
169+
onekey_firmware_build_id: firmwareInfo.firmwareBuildId,
170+
171+
onekey_boot_version: firmwareInfo.bootloaderVersion,
172+
onekey_boot_build_id: firmwareInfo.bootloaderBuildId,
173+
onekey_boot_hash: firmwareInfo.bootloaderHash,
174+
onekey_board_version: firmwareInfo.boardloaderVersion,
175+
onekey_board_build_id: firmwareInfo.boardloaderBuildId,
176+
onekey_board_hash: firmwareInfo.boardloaderHash,
177+
onekey_ble_version: firmwareInfo.bleVersion,
178+
onekey_ble_name: firmwareInfo.bleName,
179+
onekey_ble_build_id: firmwareInfo.bleBuildId,
180+
onekey_ble_hash: firmwareInfo.bleHash,
181+
bleMac: firmwareInfo.bleMac,
182+
183+
// SE info
184+
onekey_se_type: seInfo.seType,
185+
onekey_se01_type: seInfo.se01Type,
186+
onekey_se02_type: seInfo.se02Type,
187+
onekey_se03_type: seInfo.se03Type,
188+
onekey_se04_type: seInfo.se04Type,
189+
onekey_se01_version: seInfo.se01Version,
190+
onekey_se02_version: seInfo.se02Version,
191+
onekey_se03_version: seInfo.se03Version,
192+
onekey_se04_version: seInfo.se04Version,
193+
onekey_se01_hash: seInfo.se01Hash,
194+
onekey_se02_hash: seInfo.se02Hash,
195+
onekey_se03_hash: seInfo.se03Hash,
196+
onekey_se04_hash: seInfo.se04Hash,
197+
onekey_se01_boot_version: seInfo.se01BootVersion,
198+
onekey_se02_boot_version: seInfo.se02BootVersion,
199+
onekey_se03_boot_version: seInfo.se03BootVersion,
200+
onekey_se04_boot_version: seInfo.se04BootVersion,
201+
onekey_se01_boot_hash: seInfo.se01BootHash,
202+
onekey_se02_boot_hash: seInfo.se02BootHash,
203+
onekey_se03_boot_hash: seInfo.se03BootHash,
204+
onekey_se04_boot_hash: seInfo.se04BootHash,
205+
onekey_se01_boot_build_id: seInfo.se01BootBuildId,
206+
onekey_se02_boot_build_id: seInfo.se02BootBuildId,
207+
onekey_se03_boot_build_id: seInfo.se03BootBuildId,
208+
onekey_se04_boot_build_id: seInfo.se04BootBuildId,
209+
onekey_se01_build_id: seInfo.se01BuildId,
210+
onekey_se02_build_id: seInfo.se02BuildId,
211+
onekey_se03_build_id: seInfo.se03BuildId,
212+
onekey_se04_build_id: seInfo.se04BuildId,
213+
onekey_se01_state: seInfo.se01State,
214+
onekey_se02_state: seInfo.se02State,
215+
onekey_se03_state: seInfo.se03State,
216+
onekey_se04_state: seInfo.se04State,
217+
218+
// Hardware info
219+
device_id: hardwareInfo.serialNumber,
220+
label: hardwareInfo.label,
221+
onekey_device_type: hardwareInfo.deviceType,
222+
hardwareVersion: hardwareInfo.hardwareVersion,
223+
hardwareVersionRawAdc: hardwareInfo.hardwareVersionRawAdc,
224+
onekey_serial: hardwareInfo.serialNumber,
225+
onekey_serial_no: hardwareInfo.serialNumber,
226+
serial_no: hardwareInfo.serialNumber,
227+
init_state: hardwareInfo.init_state,
228+
language: hardwareInfo.language,
229+
passphrase_protection: hardwareInfo.passphrase_protection,
230+
};
231+
}

packages/connect-examples/expo-example/src/views/FirmwareScreen/DeviceField.tsx

Lines changed: 15 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,8 @@
1+
import { Features } from '@onekeyfe/hd-core';
12
import { memo } from 'react';
23
import { Stack, Text, XStack } from 'tamagui';
34
import { useDeviceFieldContext } from './DeviceFieldContext';
4-
import { getReleaseUrl } from '../../utils/deviceUtils';
5+
import { getFeaturesBetweenProtocol, getReleaseUrl } from '../../utils/deviceUtils';
56
import { useMedia } from '../../provider/MediaProvider';
67

78
interface DeviceFieldProps {
@@ -10,15 +11,23 @@ interface DeviceFieldProps {
1011
}
1112

1213
function isNil(value: string | undefined | null): value is string {
13-
return value == null || value.trim() === '' || value.trim() === 'unknown';
14+
return (
15+
value === undefined ||
16+
value == null ||
17+
(value.trim && (value.trim() === '' || value.trim() === 'unknown'))
18+
);
1419
}
1520

1621
function DeviceFieldView({ field, value }: DeviceFieldProps) {
1722
const { features, onekeyFeatures } = useDeviceFieldContext();
1823
const media = useMedia();
1924
const fieldValue =
20-
(onekeyFeatures as Record<string, string>)?.[field] ??
21-
(features as Record<string, any>)?.[field] ??
25+
(
26+
getFeaturesBetweenProtocol({
27+
...features,
28+
...onekeyFeatures,
29+
} as Features) as Record<string, string>
30+
)?.[field] ??
2231
(
2332
getReleaseUrl({
2433
features,
@@ -38,7 +47,7 @@ function DeviceFieldView({ field, value }: DeviceFieldProps) {
3847
{`${field}: `}
3948
</Text>
4049
<Stack flex={1} paddingStart={4}>
41-
{fieldValue?.startsWith('http') ? (
50+
{fieldValue && fieldValue.startsWith && fieldValue?.startsWith('http') ? (
4251
<Text
4352
flex={1}
4453
flexWrap="wrap"
@@ -51,7 +60,7 @@ function DeviceFieldView({ field, value }: DeviceFieldProps) {
5160
window.open(fieldValue, '_blank');
5261
}}
5362
>
54-
{fieldValue}
63+
{fieldValue ?? ''}
5564
</Text>
5665
) : (
5766
<Text

0 commit comments

Comments
 (0)