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