1# DeviceInfo适配说明
2
3## 启动子系统设备信息说明
4
5| 系统参数 | 接口名 | 描述 |
6|----------|------- |------|
7| const.product.devicetype | const char\* GetDeviceType(void) | 返回当前设备类型 |
8| const.product.manufacturer | const char\* GetManufacture(void) | 返回当前设备生产厂家信息 |
9| const.product.brand | const char\* GetBrand(void) | 返回当前设备品牌信息 |
10| const.product.name | const char\* GetMarketName(void) | 返回当前设备传播名 |
11| const.build.product | const char\* GetProductSeries(void) | 返回当前设备产品系列名 |
12| const.product.model | const char\* GetProductModel(void) | 返回当前设备认证型号 |
13| const.software.model | const char\* GetSoftwareModel(void) | 返回当前设备内部软件子型号 |
14| const.product.hardwareversion | const char\* GetHardwareModel(void) | 返回当前设备硬件版本号 |
15| const.product.hardwareprofile | const char\* GetHardwareProfile(void) | 返回当前设备硬件profile |
16| ohos.boot.sn | const char\* GetSerial(void) | 返回当前设备序列号(SN号)|
17| const.product.software.version | const char\* GetDisplayVersion(void) | 返回当前设备用户可见的软件版本号 |
18| const.product.bootloader.version | const char\* GetBootloaderVersion(void) | 返回当前设备Bootloader版本号 |
19| const.product.udid | int GetDevUdid(char \*udid, int size) | 获取设备udid(先通过参数获取,获取失败通过计算获取) |
20| | const char *AclGetSerial(void); | 返回当前设备序列号(SN号)(带访问权限检查) |
21| | int AclGetDevUdid(char *udid, int size); | 获取设备udid(带访问权限检查) |
22
23## 设备信息来源
24
25### OHOS 固定值参数的适配
26
27- OHOS 固定值参数:
28
29  ```
30  const.ohos.version.security_patch
31  const.ohos.releasetype
32  const.ohos.apiversion
33  const.ohos.fullname
34  ```
35
36- 适配说明:
37
38  OHOS 固定值参数由OHOS系统填充,厂商不能也不需适配,目前这部分参数主要定义在`/base/startup/init/services/etc/param/ohos_const/ohos.para`文件中。
39
40### 厂商固定值参数的适配:
41
42- 厂商固定值参数:
43
44  ```
45  const.product.devicetype
46  const.product.manufacturer
47  const.product.brand
48  const.product.name
49  const.build.product
50  const.product.model
51  const.software.model
52  const.product.hardwareversion
53  const.product.hardwareprofile
54  const.product.software.version
55  const.product.bootloader.version
56  const.build.characteristics
57  ... ...
58
59  ```
60
61
62- 适配说明:
63
64  由各产品根据自身情况在vendor目录下适配。
65
66  - 标准系统以RK3568为例,在`/vendor/hihope/rk3568/etc/para/hardware_rk3568.para`中适配,并安装到指定目录。
67
68    ```
69    ohos_prebuilt_etc("para_for_chip_prod") {
70        source = "./para/hardware_rk3568.para"
71        install_images = [ chip_prod_base_dir ]
72        relative_install_dir = "para"
73        part_name = "product_rk3568"
74    }
75    ```
76
77  - 轻量系统与小型系统在产品对应的`hals/utils/sys_param/vendor.para`文件中配置。例如:
78
79    ```
80    const.product.manufacturer=Talkweb
81
82    const.product.brand=Talkweb
83
84    const.product.name=Niobe
85
86    const.build.product=Niobe
87
88    const.product.model=Niobe407
89
90    const.software.model="2.0.0"
91
92    const.product.hardwareversion="1.0.0"
93
94    const.product.hardwareprofile="RAM:192K,ROM:1M,ETH:true"
95    ... ...
96    ```
97
98### 厂商动态参数的适配
99
100厂商动态值参数,目前有三种获取形式:cmdline读取,编译宏定义,在BUILD.gn中定义。
101
1021. cmdline中读取的值有:ohos.boot.hardwareohos.boot.bootslotsohos.boot.sn等,其中ohos.boot.sn的获取略有不同,具体如下:
103
104   - 标准系统的Serial从参数ohos.boot.sn读取。
105
106     ohos.boot.sn参数值的获取方式:首先从cmdline(由uboot生成)获取,如果获取到的是sn值则直接读取,若获取的是文件路径,则从文件中读取;当获取不到时从默认的Sn文件读取,默认文件为:`/sys/block/mmcblk0/device/cid/proc/bootdevice/cid`。
107
108   - 轻量系统与小型系统的Serial各产品在实现过程中可能有自己特殊的算法,因此OpenHarmony支持在`hals/utils/sys_param`目录下hal_sys_param.c文件中通过HalGetSerial()接口自定算法来获取Serial。
109
1102. 编译宏定义的形式获取参数,目前主要在轻量系统与小型系统中用到,例如:
111
112     ```
113     defines = [
114         "INCREMENTAL_VERSION=\"${ohos_version}\"",
115         "BUILD_TYPE=\"${ohos_build_type}\"",
116         "BUILD_USER=\"${ohos_build_user}\"",
117         "BUILD_TIME=\"${ohos_build_time}\"",
118         "BUILD_HOST=\"${ohos_build_host}\"",
119         "BUILD_ROOTHASH=\"${ohos_build_roothash}\"",
120     ]
121     ```
1223. 在BUILD.gn中定义,可参考文件`/base/startup/init/services/etc/BUILD.gn`,例如:
123
124     ```
125     if (target_cpu == "arm64") {
126         extra_paras += [ "const.product.cpu.abilist=arm64-v8a" ]
127     }
128     if (build_variant == "user") {
129         extra_paras += [
130             "const.secure=1",
131             "const.debuggable=0",
132         ]
133     } else if (build_variant == "root") {
134         extra_paras += [
135             "const.secure=0",
136             "const.debuggable=1",
137         ]
138     }
139     if (device_type != "default") {
140         extra_paras += [
141             "const.product.devicetype=${device_type}",
142             "const.build.characteristics=${device_type}",
143         ]
144     }
145     module_install_dir = "etc/param"
146
147     ```
148#### 特别说明:
149
1501. 小型系统的产品需要在`hals/utils/sys_param/BUILD.gn`中添加vendor.para的编译,具体如下:
151
152      ```
153      copy("vendor.para") {
154          sources = [ "./vendor.para" ]
155          outputs = [ "$root_out_dir/vendor/etc/param/vendor.para" ]
156      }
157      ```
158
1592. 轻量系统的产品由于没有文件系统,在编译时会把hal_sys_param.cvendor.para文件转化为头文件,编译时直接编译到系统中。