提交 106c4991 编写于 作者: Y yangziyong

docs:add battery_manger docs

Signed-off-by: Nyangziyong <nsyangziyong@huawei.com>
上级 049c8b5f
......@@ -108,3 +108,10 @@
- 电源管理
- 显示管理
- [系统亮度范围定制开发指导](subsys-power-brightness-customization.md)
- 电池管理
- [电量与LED灯颜色的定制开发指导](subsys-power-level-LED-color.md)
- [电池温度保护定制开发指导](subsys-power-temperature-protection.md)
- [电量等级定制开发指导](subsys-power-battery-level-customization.md)
- [充电限流限压定制开发指导](subsys-power-charge-current-voltage-limit.md)
- [充电类型定制开发指导](subsys-power-charge-type-customization.md)
- [关机充电动画开发指导](subsys-power-poweroff-charge-animation.md)
# 电量等级定制开发指导
## 概述
### 简介
OpenHarmony默认提供了电量等级,根据当前的电量来定义系统统一的电量等级,如满电量、高电量、低电量、极低电量等。系统可以根据当前的电量等级对用户进行提示或处理相关业务。但是电量等级对应的电量值在不同的产品上规格是不同的,产品希望根据产品的设计规格来定制此特性。为此OpenHarmony提供了电量等级的定制方式,产品定制开发者可根据设计规格来定制此特性。
### 约束与限制
配置策略:
产品定制的配置路径,需要根据[配置策略](https://gitee.com/openharmony/customization_config_policy)决定。本开发指导中的定制路径以/vendor进行举例,请开发者根据具体的产品配置策略,修改定制路径。
## 开发指导
### 搭建环境
设备要求:
标准系统开发板,如DAYU200/Hi3516DV300开源套件。
环境要求:
Linux调测环境,相关要求和配置可参考《[快速入门](../quick-start/quickstart-overview.md)
### 开发步骤
本文以[DAYU200](https://gitee.com/openharmony/vendor_hihope/tree/master/rk3568)为例介绍电池温度保护机制的定制方法。
1. 在产品目录[(/vendor/hihope/rk3568)](https://gitee.com/openharmony/vendor_hihope/tree/master/rk3568)下创建battery文件夹。
2. 参考[默认电量等级配置文件夹](https://gitee.com/openharmony/powermgr_battery_manager/tree/master/services/native/profile)创建目标文件夹,并安装到`//vendor/hihope/rk3568/battery`目录下,文件格式如下:
```text
profile
├── BUILD.gn
├── battery_config.json
```
3. 参考[默认电量等级的配置文件夹中的battery_config.json](https://gitee.com/openharmony/powermgr_battery_manager/blob/master/services/native/profile/battery_config.json)编写定制的battery_config.json,包含定制后的电量等级配置如下:
```json
{
"soc": {
"shutdown": 5,
"critical": 10,
"warning": 15,
"low": 30,
"normal": 60,
"high": 90,
"full": 100
}
}
```
**表1** 电量等级配置说明
| 电量等级 | 电量 | 说明 |
| -------- | -------- | -------- |
| shutdown | 5 | 关机电量 |
| critical | 10 | 极低电量 |
| warning | 15 | 告警电量 |
| low | 30 | 低电量 |
| normal | 60 | 正常电量 |
| high | 90 | 高电量 |
| full | 100 | 满电量 |
4. 参考[默认电量等级的配置文件夹中的BUILD.gn](https://gitee.com/openharmony/powermgr_battery_manager/blob/master/services/native/profile/BUILD.gn)编写BUILD.gn文件,将battery_config.json打包到`//vendor/etc/battery`目录下,配置如下:
```shell
import("//build/ohos.gni") #引用build/ohos.gni
ohos_prebuilt_etc("battery_config") {
source = "battery_config.json"
relative_install_dir = "battery"
install_images = [ chipset_base_dir ] #安装到vendor目录下的必要配置
part_name = "product_rk3568" #part_name为product_rk3568,以实现后续编译
}
```
5. 将编译目标添加到`/vendor/hihope/rk3568`目录下[ohos.build](https://gitee.com/openharmony/vendor_hihope/blob/master/rk3568/ohos.build)的"module_list"中,例如:
```json
{
"parts": {
"product_rk3568": {
"module_list": [
"//vendor/hihope/rk3568/default_app_config:default_app_config",
"//vendor/hihope/rk3568/image_conf:custom_image_conf",
"//vendor/hihope/rk3568/preinstall-config:preinstall-config",
"//vendor/hihope/rk3568/resourceschedule:resourceschedule",
"//vendor/hihope/rk3568/etc:product_etc_conf",
"//vendor/hihope/rk3568/battery/profile:battery_config" #添加battery_config的编译
]
}
},
"subsystem": "product_hihope"
}
```
“//vendor/hihope/rk3568/battery/”为文件夹路径,“profile”为创建的文件夹名字,“battery_config”为编译目标。
6. 参考《[快速入门](../quick-start/quickstart-overview.md)》编译定制版本,编译命令如下:
```shell
./build.sh --product-name rk3568 --ccache
```
7. 将定制版本烧录到DAYU200开发板中。
### 调测验证
1. 开机后,进入shell命令行:
```
hdc shell
```
2. 进入电池电量的节点路径(以当前DAYU开发版路径为例)。
```
cd /data/service/el0/battery/battery/
```
3. 默认充电类型的映射配置数据为例,修改充电状态,模拟电池信息上报,观察发送是否发送对应充电类型广播。
1. 修改电量信息。
```
echo 100 > capacity
```
2. 上报电量信息改变,获取当前电量等级。
```
hidumper -s 3302 -a -i
```
3. 成功获取电量等级如下:
```
-------------------------------[ability]-------------------------------
----------------------------------BatteryService---------------------------------
Current time: 2017-08-05 17:22:48.589
······(省略其他,只显示batteryLevel的配置)
batteryLevel: 1
······
```
4. 修改电量信息。
```
echo 90 > capacity
```
5. 上报电量信息改变,获取当前电量等级。
```
hidumper -s 3302 -a -i
```
6. 成功获取电量等级如下:
```
-------------------------------[ability]-------------------------------
----------------------------------BatteryService---------------------------------
Current time: 2017-08-05 17:24:29.716
······(省略其他,只显示batteryLevel的配置)
batteryLevel: 2
······
```
7. 修改电量信息。
```
echo 60 > capacity
```
8. 上报电量信息改变,获取当前电量等级。
```
hidumper -s 3302 -a -i
```
9. 成功获取电量等级如下:
```
-------------------------------[ability]-------------------------------
----------------------------------BatteryService---------------------------------
Current time: 2017-08-05 17:25:09.837
······(省略其他,只显示batteryLevel的配置)
batteryLevel: 3
······
```
10. 修改电量信息。
```
echo 30 > capacity
```
11. 上报电量信息改变,获取当前电量等级。
```
hidumper -s 3302 -a -i
```
12. 成功获取电量等级如下:
```
-------------------------------[ability]-------------------------------
----------------------------------BatteryService---------------------------------
Current time: 2017-08-05 17:26:20.495
······(省略其他,只显示batteryLevel的配置)
batteryLevel: 4
······
```
13. 修改电量信息。
```
echo 15 > capacity
```
14. 上报电量信息改变,获取当前电量等级。
```
hidumper -s 3302 -a -i
```
15. 成功获取电量等级如下:
```
-------------------------------[ability]-------------------------------
----------------------------------BatteryService---------------------------------
Current time: 2017-08-05 17:27:05.312
······(省略其他,只显示batteryLevel的配置)
batteryLevel: 5
······
```
16. 修改电量信息。
```
echo 10 > capacity
```
17. 上报电量信息改变,获取当前电量等级。
```
hidumper -s 3302 -a -i
```
18. 成功获取电量等级如下:
```
-------------------------------[ability]-------------------------------
----------------------------------BatteryService---------------------------------
Current time: 2017-08-05 17:27:56.270
······(省略其他,只显示batteryLevel的配置)
batteryLevel: 6
······
```
19. 修改电量信息。
```
echo 5 > capacity
```
20. 上报电量信息改变,获取当前电量等级。
```
hidumper -s 3302 -a -i
```
21. 成功获取电量等级如下:
```
-------------------------------[ability]-------------------------------
----------------------------------BatteryService---------------------------------
Current time: 2017-08-05 17:28:38.066
······(省略其他,只显示batteryLevel的配置)
batteryLevel: 7
······
```
## 参考
开发过程中可参考的配置文件路径:[电量等级配置源码路径](https://gitee.com/openharmony/powermgr_battery_manager/tree/master/services/native/profile/)
默认配置:
```json
{
"soc": {
"shutdown": 1,
"critical": 5,
"warning": 10,
"low": 20,
"normal": 90,
"high": 99,
"full": 100
}
}
```
打包路径:/system/etc/battery
# 充电限流限压定制开发指导
## 概述
### 简介
OpenHarmony默认提供了充电限流限压的特性。在对终端设备进行充电时,由于环境影响,可能会导致电池温度过高,因此需要对充电电流或电压进行限制,从而保证终端设备使用的安全性。但是充电时的电流电压对安全性的影响在不同的产品上规格是不同的,产品希望根据产品的设计规格来定制此特性。为此OpenHarmony提供了充电限流限压的定制方式,产品定制开发者可根据产品的设计规格来定制此特性。
### 约束与限制
配置策略:
产品定制的配置路径,需要根据[配置策略](https://gitee.com/openharmony/customization_config_policy)决定。本开发指导中的定制路径以/vendor进行举例,请开发者根据具体的产品配置策略,修改定制路径。
## 开发指导
### 搭建环境
设备要求:
标准系统开发板,如DAYU200/Hi3516DV300开源套件。
环境要求:
Linux调测环境,相关要求和配置可参考《[快速入门](../quick-start/quickstart-overview.md)》。
### 开发步骤
本文以[DAYU200](https://gitee.com/openharmony/vendor_hihope/tree/master/rk3568)为例介绍电池温度保护机制的定制方法。
1. 在产品目录[(/vendor/hihope/rk3568)](https://gitee.com/openharmony/vendor_hihope/tree/master/rk3568)下创建battery文件夹。
2. 参考[默认充电限流限压配置文件夹](https://gitee.com/openharmony/powermgr_battery_manager/tree/master/services/native/profile)创建目标文件夹,并安装到`//vendor/hihope/rk3568/battery`目录下,文件格式如下:
```text
profile
├── BUILD.gn
├── battery_config.json
```
3. 参考[默认充电限流限压的配置文件夹中的battery_config.json](https://gitee.com/openharmony/powermgr_battery_manager/blob/master/services/native/profile/battery_config.json)编写定制的battery_config.json,包含定制后的充电限流限压配置如下:
```json
{
"charger": {
"current_limit":{
"path": "/data/service/el0/battery/current_limit"
},
"voltage_limit":{
"path": "/data/service/el0/battery/voltage_limit"
}
}
}
```
4. 参考[默认充电限流限压的配置文件夹中的BUILD.gn](https://gitee.com/openharmony/powermgr_battery_manager/blob/master/services/native/profile/BUILD.gn)编写BUILD.gn文件,将battery_config.json打包到`//vendor/etc/battery`目录下,配置如下:
```shell
import("//build/ohos.gni") #引用build/ohos.gni
ohos_prebuilt_etc("battery_config") {
source = "battery_config.json"
relative_install_dir = "battery"
install_images = [ chipset_base_dir ] #安装到vendor目录下的必要配置
part_name = "product_rk3568" #part_name为product_rk3568,以实现后续编译
}
```
5. 将编译目标添加到`/vendor/hihope/rk3568`目录下[ohos.build](https://gitee.com/openharmony/vendor_hihope/blob/master/rk3568/ohos.build)的"module_list"中,例如:
```json
{
"parts": {
"product_rk3568": {
"module_list": [
"//vendor/hihope/rk3568/default_app_config:default_app_config",
"//vendor/hihope/rk3568/image_conf:custom_image_conf",
"//vendor/hihope/rk3568/preinstall-config:preinstall-config",
"//vendor/hihope/rk3568/resourceschedule:resourceschedule",
"//vendor/hihope/rk3568/etc:product_etc_conf",
"//vendor/hihope/rk3568/battery/profile:battery_config" #添加battery_config的编译
]
}
},
"subsystem": "product_hihope"
}
```
“//vendor/hihope/rk3568/battery/”为文件夹路径,“profile”为创建的文件夹名字,“battery_config”为编译目标。
6. 参考《[快速入门](../quick-start/quickstart-overview.md)》编译定制版本,编译命令如下:
```shell
./build.sh --product-name rk3568 --ccache
```
7. 将定制版本烧录到DAYU200开发板中。
### 调测验证
1. 编译battery对应的hats测试用例,编译命令与框架搭建参考[XTS子系统](https://gitee.com/openharmony/xts_hats)
2. 用框架执行测试,输出测试报告。
![battery_limit_current_test_report](figures/battery_limit_current_test_report.jpg)
## 参考
开发过程中可参考[默认充电限流限压的配置文件夹中的battery_config.json](https://gitee.com/openharmony/powermgr_battery_manager/blob/master/services/native/profile/battery_config.json)
默认配置:
```json
{
"charger": {
"current_limit":{
"path": "/data/service/el0/battery/current_limit"
},
"voltage_limit":{
"path": "/data/service/el0/battery/voltage_limit"
}
}
}
```
打包路径:/system/etc/battery
\ No newline at end of file
# 充电类型定制开发指导
## 概述
### 简介
OpenHarmony默认提供了充电类型的特性。在对终端设备进行充电时,可以使用不同的充电器类型,如有线快充、无线快充等。系统可以根据当前的充电类型展示相应的动画或处理相关业务,但是不同产品支持的充电类型不同,需要根据产品的设计规格来定制此特性。为此OpenHarmony提供了充电类型的定制方式,产品定制开发者可根据产品的设计规格来定制此特性。
### 约束与限制
配置策略:
产品定制的配置路径,需要根据[配置策略](https://gitee.com/openharmony/customization_config_policy)决定。本开发指导中的定制路径以/vendor进行举例,请开发者根据具体的产品配置策略,修改定制路径。
## 开发指导
### 搭建环境
设备要求:
标准系统开发板,如DAYU200/Hi3516DV300开源套件。
环境要求:
Linux调测环境,相关要求和配置可参考《[快速入门](../quick-start/quickstart-overview.md)》。
### 开发步骤
本文以[DAYU200](https://gitee.com/openharmony/vendor_hihope/tree/master/rk3568)为例介绍电池温度保护机制的定制方法。
1. 在产品目录[(/vendor/hihope/rk3568)](https://gitee.com/openharmony/vendor_hihope/tree/master/rk3568)下创建battery文件夹。
2. 参考[默认充电类型配置文件夹](https://gitee.com/openharmony/powermgr_battery_manager/tree/master/services/native/profile)创建目标文件夹,并安装到`//vendor/hihope/rk3568/battery`目录下,文件格式如下:
```text
profile
├── BUILD.gn
├── battery_config.json
```
3. 参考[默认充电类型的配置文件夹中的battery_config.json](https://gitee.com/openharmony/powermgr_battery_manager/blob/master/services/native/profile/battery_config.json)编写定制的battery_config.json,包含定制后的充电类型配置如下:
```shell
{
"charger": {
"type": {
"path": "/data/service/el0/battery/charger_type"
}
}
}
```
4. 参考[默认充电类型的配置文件夹中的BUILD.gn](https://gitee.com/openharmony/powermgr_battery_manager/blob/master/services/native/profile/BUILD.gn)编写BUILD.gn文件,将battery_config.json打包到`//vendor/etc/battery`目录下,配置如下:
```shell
import("//build/ohos.gni") #引用build/ohos.gni
ohos_prebuilt_etc("battery_config") {
source = "battery_config.json"
relative_install_dir = "battery"
install_images = [ chipset_base_dir ] #安装到vendor目录下的必要配置
part_name = "product_rk3568" #part_name为product_rk3568,以实现后续编译
}
```
5. 将编译目标添加到`/vendor/hihope/rk3568`目录下[ohos.build](https://gitee.com/openharmony/vendor_hihope/blob/master/rk3568/ohos.build)的"module_list"中,例如:
```json
{
"parts": {
"product_rk3568": {
"module_list": [
"//vendor/hihope/rk3568/default_app_config:default_app_config",
"//vendor/hihope/rk3568/image_conf:custom_image_conf",
"//vendor/hihope/rk3568/preinstall-config:preinstall-config",
"//vendor/hihope/rk3568/resourceschedule:resourceschedule",
"//vendor/hihope/rk3568/etc:product_etc_conf",
"//vendor/hihope/rk3568/battery/profile:battery_config" #添加battery_config的编译
]
}
},
"subsystem": "product_hihope"
}
```
“//vendor/hihope/rk3568/battery/”为文件夹路径,“profile”为创建的文件夹名字,“battery_config”为编译目标。
6. 参考《[快速入门](../quick-start/quickstart-overview.md)》编译定制版本,编译命令如下:
```shell
./build.sh --product-name rk3568 --ccache
```
7. 将定制版本烧录到DAYU200开发板中。
### 调测验证
1. 开机后,进入shell命令行:
```
hdc shell
```
2. 进入电池电量的节点路径(以当前DAYU开发版路径为例)。
```
cd /data/service/el0/battery/
```
3. 默认充电类型的映射配置数据为例,修改充电状态,模拟电池信息上报,观察发送是否发送对应充电类型广播。
1. 修改充电类型
```
echo 1 > charger_type
```
2. 上报改变充电状态,触发映射
```
hidumper -s 3302 -a -r
```
3. 输出定制后的充电类型
```
hidumper -s 3302 -a -i
```
```
-------------------------------[ability]----------------------------
------------------------------BatteryService------------------------
capacity: 11
batteryLevel: 4
chargingStatus: 1
healthState: 1
pluggedType: 2
voltage: 4123456
present: 0
technology: Li-ion
nowCurrent: 1000
currentAverage: 1000
totalEnergy: 4000000
remainingEnergy: 4000000
remainingChargeTime: 0
temperature: 222
chargeType: 1
```
![charger_type1](figures/charger_type1.jpg)
## 参考
开发过程中可参考的配置文件路径:[充电类型的配置bundle.json](https://gitee.com/openharmony/powermgr_battery_manager/tree/master/services/native/profile/)
默认配置
```shell
{
"charger": {
"type": {
"path": "/data/service/el0/battery/charger_type"
}
}
}
```
打包路径:/system/etc/battery
# 电量与LED灯颜色的定制开发指导
## 概述
### 简介
OpenHarmony默认提供了电量与LED灯颜色的映射关系。对于部分产品形态(如Pad),会使用LED灯的颜色来展示当前设备充电时的电量信息,如高电量使用绿色、低电量黄色、极低电量使用红色。这种电量与LED灯颜色的映射关系,需要根据产品进行自定义。为此OpenHarmony提供了电量与LED灯颜色映射的定制方式,产品定制开发者可根据产品的设计规格来定制此特性。
### 约束与限制
配置策略:
产品定制的配置路径,需要根据[配置策略](https://gitee.com/openharmony/customization_config_policy)决定。本开发指导中的定制路径以/vendor进行举例,请开发者根据具体的产品配置策略,修改定制路径。
## 开发指导
### 搭建环境
设备要求:
标准系统开发板,如DAYU200/Hi3516DV300开源套件。
环境要求:
Linux调测环境,相关要求和配置可参考《[快速入门](../quick-start/quickstart-overview.md)》。
### 开发步骤
本文以[DAYU200](https://gitee.com/openharmony/vendor_hihope/tree/master/rk3568)为例介绍电池温度保护机制的定制方法。
1. 在产品目录[(/vendor/hihope/rk3568)](https://gitee.com/openharmony/vendor_hihope/tree/master/rk3568)下创建battery文件夹。
2. 参考[默认电量与LED灯颜色映射的配置文件夹](https://gitee.com/openharmony/powermgr_battery_manager/tree/master/services/native/profile)创建目标文件夹,并安装到`//vendor/hihope/rk3568/battery`目录下,文件格式如下:
```text
profile
├── BUILD.gn
├── battery_config.json
```
3. 参考[默认电量与LED灯颜色映射的配置文件夹中的battery_config.json](https://gitee.com/openharmony/powermgr_battery_manager/blob/master/services/native/profile/battery_config.json)编写定制的battery_config.json。包含定制后的电量与LED灯颜色映射配置如下:
```json
{
"light": {
"low": {
"soc": [0, 20],
"rgb": [255, 192, 203]
},
"normal": {
"soc": [20, 95],
"rgb": [255, 0, 255]
},
"high": {
"soc": [95, 100],
"rgb": [0, 0, 255]
}
}
}
```
**表1** 电量与LED灯颜色映射配置说明
| 节点名称 | 作用 |
| -------- | -------- |
| low | 低电量 |
| normal | 正常电量 |
| high | 高电量 |
| soc | 电量区间 |
| rgb | LED灯RGB组合 |
4. 参考[默认电量与LED灯颜色映射的配置文件夹中的BUILD.gn](https://gitee.com/openharmony/powermgr_battery_manager/blob/master/services/native/profile/BUILD.gn)编写BUILD.gn文件,将battery_config.json打包到`//vendor/etc/battery`目录下,配置如下:
```shell
import("//build/ohos.gni") #引用build/ohos.gni
ohos_prebuilt_etc("battery_config") {
source = "battery_config.json"
relative_install_dir = "battery"
install_images = [ chipset_base_dir ] #安装到vendor目录下的必要配置
part_name = "product_rk3568" #part_name为product_rk3568,以实现后续编译
}
```
5. 将编译目标添加到`/vendor/hihope/rk3568`目录下[ohos.build](https://gitee.com/openharmony/vendor_hihope/blob/master/rk3568/ohos.build)的"module_list"中,例如:
```json
{
"parts": {
"product_rk3568": {
"module_list": [
"//vendor/hihope/rk3568/default_app_config:default_app_config",
"//vendor/hihope/rk3568/image_conf:custom_image_conf",
"//vendor/hihope/rk3568/preinstall-config:preinstall-config",
"//vendor/hihope/rk3568/resourceschedule:resourceschedule",
"//vendor/hihope/rk3568/etc:product_etc_conf",
"//vendor/hihope/rk3568/battery/profile:battery_config" #添加battery_config的编译
]
}
},
"subsystem": "product_hihope"
}
```
“//vendor/hihope/rk3568/battery/”为文件夹路径,“profile”为创建的文件夹名字,“battery_config”为编译目标。
6. 参考《[快速入门](../quick-start/quickstart-overview.md)》编译定制版本,编译命令如下:
```shell
./build.sh --product-name rk3568 --ccache
```
7. 将定制版本烧录到DAYU200开发板中。
### 调测验证
1. 开机后,进入shell命令行。
```
hdc shell
```
2. 进入电池电量的节点路径(以当前DAYU开发版路径为例)。
```
cd /data/service/el0/battery/battery
```
3. 以默认的电量与LED灯颜色的映射配置数据为例,修改电量数值,模拟电池信息上报,并观察LED亮灯颜色变化。
1. 修改电量数值
```
echo 5 > capacity
```
2. 上报电量信息改变,触发LED灯映射
```
hidumper -s 3302 -a -r
```
![low_power_led](figures/low_power_led.jpg)
3. 修改电量数值
```
echo 50 > capacity
```
4. 上报电量信息改变,触发LED灯映射
```
hidumper -s 3302 -a -r
```
![normal_power_led](figures/normal_power_led.jpg)
5. 修改电量数值
```
echo 100 > capacity
```
6. 上报电量信息改变,触发LED灯映射
```
hidumper -s 3302 -a -r
```
![high_power_led](figures/high_power_led.jpg)
4. 以新的电量与LED灯颜色的映射配置数据为例,更改之后:
```json
{
"light": {
"low": {
"soc": [0, 20],
"rgb": [255, 192, 203]
},
"normal": {
"soc": [20, 95],
"rgb": [255, 0, 255]
},
"high": {
"soc": [95, 100],
"rgb": [0, 0, 255]
}
}
}
```
1. 修改电量数值
```
echo 15 > capacity
```
2. 上报电量信息改变,触发LED灯映射
```
hidumper -s 3302 -a -r
```
![low_power_led_alter](figures/low_power_led_alter.jpg)
3. 修改电量数值
```
echo 95 > capacity
```
4. 上报电量信息改变,触发LED灯映射
```
hidumper -s 3302 -a -r
```
![normal_power_led_alter](figures/normal_power_led_alter.jpg)
5. 修改电量数值
```
echo 99 > capacity
```
6. 上报电量信息改变,触发LED灯映射
```
hidumper -s 3302 -a -r
```
![high_power_led_alter](figures/high_power_led_alter.jpg)
## 参考
开发过程中可参考的配置文件路径:[系统默认亮度范围配置源码路径](https://gitee.com/openharmony/powermgr_battery_manager/tree/master/services/native/profile/)
默认配置:
```json
{
"light": {
"low": {
"soc": [0, 10],
"rgb": [255, 0, 0]
},
"normal": {
"soc": [10, 90],
"rgb": [255, 255, 0]
},
"high": {
"soc": [90, 100],
"rgb": [0, 255, 0]
}
}
}
```
打包路径:/system/etc/battery
# 关机充电动画开发指导
## 概述
### 简介
OpenHarmony默认提供了关机充电动画的特性,展示关机状态下的充电电量、充电动画等信息。由于定制厂商希望定制符合自身规则和特点的显示样式,希望根据产品的设计规格来定制此特性。为此OpenHarmony提供了关机充电动画的定制方式,产品定制开发者可根据产品的设计规格来定制此特性。
### 约束与限制
配置策略:
产品定制的配置路径,需要根据[配置策略](https://gitee.com/openharmony/customization_config_policy)决定。本开发指导中的定制路径以/vendor进行举例,请开发者根据具体的产品配置策略,修改定制路径。
## 开发指导
### 搭建环境
设备要求:
标准系统开发板,如DAYU200/Hi3516DV300开源套件。
环境要求:
Linux调测环境,相关要求和配置可参考《[快速入门](../quick-start/quickstart-overview.md)》。
### 开发步骤
本文以[DAYU200](https://gitee.com/openharmony/vendor_hihope/tree/master/rk3568)为例介绍电池温度保护机制的定制方法。
1. 在产品目录[(/vendor/hihope/rk3568)](https://gitee.com/openharmony/vendor_hihope/tree/master/rk3568)下创建animation文件夹。
2. 参考[默认关机充电动画配置文件夹](https://gitee.com/openharmony/powermgr_battery_manager/tree/master/charger/sa_profile)创建目标文件夹,并安装到`//vendor/hihope/rk3568/animation`目录下,文件格式如下:
```text
profile
├── BUILD.gn
├── animation.json
```
3. 参考[关机充电动画图片资源](https://gitee.com/openharmony/powermgr_battery_manager/tree/master/charger/resources)创建resources文件夹放置构成动画的图片文件,并安装到`//vendor/hihope/rk3568/animation`目录下,文件格式如下:
```text
animation
├── resources
├── profile
```
4. 参考[关机充电动画图片资源中的BUILD.gn](https://gitee.com/openharmony/powermgr_battery_manager/blob/master/charger/resources/BUILD.gn)编写BUILD.gn文件,放入`//vendor/hihope/rk3568/animation/resource`目录下,例如:
```shell
import("//build/ohos.gni")
ohos_prebuilt_etc("resources_config0") {
source = "loop00000.png" #图片资源
relative_install_dir = "poweroff_charger_animation/resources"
install_images = [ chipset_base_dir ] #安装到vendor目录下的必要配置
part_name = "product_rk3568"
}
5. 参考[默认关机充电动画的配置文件夹中的animation.json](https://gitee.com/openharmony/powermgr_battery_manager/blob/master/charger/sa_profile/animation.json)编写定制的animation.json。包含定制后的关机充电动画配置如下:
```json
{
"id": "Charger",
"screenWidth": 720,
"screenHeight": 1280,
"dir": "/vendor/etc/charger/resources",
"bgColor": "#000000ff",
"subpages": [
{
"id": "Animation",
"coms": [
"Charging_Animation_Image",
"Charging_Percent_Label"
],
"bgColor": "#000000ff"
},
{
"id": "Lackpower_Charging_Prompt",
"coms": [
"LackPower_Charging_Label"
],
"bgColor": "#000000ff"
},
{
"id": "Lackpower_Not_Charging_Prompt",
"coms": [
"LackPower_Not_Charging_Label"
],
"bgColor": "#000000ff"
}
],
"default": {
"Common": {
"visible": false
},
"UILabel": {
"bgColor": "#00000000",
"fontColor": "#ffffffe6",
"align": "center"
},
"UIImageView": {
"imgCnt": 1,
"updInterval": 0,
"filePrefix": ""
}
},
"coms": [
{
"type": "UIImageView",
"id": "Charging_Animation_Image",
"x": 180,
"y": 410,
"w": 400,
"h": 400,
"resPath": "/vendor/etc/charger/resources/",
"imgCnt": 62,
"updInterval": 60,
"filePrefix": "loop"
},
{
"type": "UILabel",
"id": "Charging_Percent_Label",
"text": "",
"x": 365,
"y": 580,
"w": 65,
"h": 43,
"fontSize": 32
},
{
"type": "UILabel",
"id": "LackPower_Charging_Label",
"text": "电池电量低",
"x": 229,
"y": 1037,
"w": 250,
"h": 45,
"fontSize": 42,
"fontColor": "#ff0000ff"
},
{
"type": "UILabel",
"id": "LackPower_Not_Charging_Label",
"text": "电池电量低,请连接电源",
"x": 110,
"y": 1037,
"w": 500,
"h": 45,
"fontSize": 42,
"fontColor": "#ff0000ff"
}
]
}
```
**表1** 关机充电动画配置说明
| 节点名称 | 作用 |
| -------- | -------- |
| id | 充电界面的唯一标识符 |
| screenWidth | 充电界面的屏幕宽度(像素点) |
| screenHeight | 充电界面的屏幕高度(像素点) |
| dir | 资源路径 |
| bgColor | 充电界面的背景颜色 |
| subpages | 充电界面的子页面 |
| coms | 充电界面的所有组件 |
| visible | 元素是否可见 |
| text | 组件的文本内容 |
| x | 组件的X轴坐标 |
| y | 组件的Y轴坐标 |
| w | 组件的宽度(像素点) |
| h | 组件的高度(像素点) |
| fontSize | 组件的字体大小 |
| fontColor | 文本的字体颜色 |
| align | 文本对齐方式 |
| imgCnt | 图片数量 |
| updInterval | 图片更新的时间间隔(毫秒) |
| filePrefix | 图片文件名的前缀 |
| type | 组件的类型 |
| resPath | 组件的资源文件路径 |
6. 参考[默认关机充电动画的配置文件夹中的BUILD.gn](https://gitee.com/openharmony/powermgr_battery_manager/blob/master/charger/sa_profile/BUILD.gn)编写BUILD.gn文件,将animation.json打包到`/vendor/etc/charger`目录下,配置如下:
```shell
import("//build/ohos.gni")
ohos_prebuilt_etc("animation_config") {
source = "animation.json" #引用build/ohos.gni
relative_install_dir = "animation/resources"
install_images = [ chipset_base_dir ] #安装到vendor目录下的必要配置
part_name = "product_rk3568" #part_name为product_rk3568,以实现后续编译
}
```
7. 将编译目标添加到`/vendor/hihope/rk3568`目录下[ohos.build](https://gitee.com/openharmony/vendor_hihope/blob/master/rk3568/ohos.build)的"module_list"中,例如:
```json
{
"parts": {
"product_rk3568": {
"module_list": [
"//vendor/hihope/rk3568/default_app_config:default_app_config",
"//vendor/hihope/rk3568/image_conf:custom_image_conf",
"//vendor/hihope/rk3568/preinstall-config:preinstall-config",
"//vendor/hihope/rk3568/resourceschedule:resourceschedule",
"//vendor/hihope/rk3568/etc:product_etc_conf",
"//vendor/hihope/rk3568/battery/profile:battery_config",
"//vendor/hihope/rk3568/animation/profile:animation_config" #添加animation_config的编译
"//vendor/hihope/rk3568/animation/resource/resources_config0" #添加图片资源的编译
]
}
},
"subsystem": "product_hihope"
}
```
“//vendor/hihope/rk3568/animation/”为文件夹路径,“profile”为创建的文件夹名字,“animation_config”为编译目标。
8. 参考《[快速入门](../quick-start/quickstart-overview.md)》编译定制版本,编译命令如下:
```shell
./build.sh --product-name rk3568 --ccache
```
9. 将定制版本烧录到DAYU200开发板中。
### 调测验证
1. 修改代码配置:
修改代码路径:base/startup/init/services/init/init_config.c
修改函数:ReadConfig
```
修改后:
void ReadConfig(void)
{
// parse cfg
char buffer[32] = {0}; // 32 reason max leb
uint32_t len = sizeof(buffer);
SystemReadParam("ohos.boot.reboot_reason", buffer, &len);
INIT_LOGV("ohos.boot.reboot_reason %s", buffer);
ParseInitCfg(INIT_CONFIGURATION_FILE, NULL); //新增代码
ReadFileInDir(OTHER_CHARGE_PATH, ".cfg", ParseInitCfg, NULL); //新增代码
if (strcmp(buffer, "poweroff_charge") == 0) {
ParseInitCfg(INIT_CONFIGURATION_FILE, NULL);
ReadFileInDir(OTHER_CHARGE_PATH, ".cfg", ParseInitCfg, NULL);
} else if (InUpdaterMode() == 0) {
ParseInitCfg(INIT_CONFIGURATION_FILE, NULL);
ParseInitCfgByPriority();
} else {
ReadFileInDir("/etc", ".cfg", ParseInitCfg, NULL);
}
}
```
2. 使用hdc执行如下命令,使开发板进入关机充电状态。
```
hdc shell
reboot charger
```
![animation_initial_power](figures/animation_initial_power.jpg)
3. 进入电池电量的节点路径(以当前DAYU开发版路径为例)。
```
cd /data/service/el0/battery/battery
```
4. 修改电量数值,并观察充电动画数值变化。
```
cat capacity
```
修改当前电量为3
```
echo 3 > capacity
```
![animation_charing_power](figures/animation_charing_power.jpg)
5. 在极低电量时(此处默认1%)修改充电状态,不同的充电状态对应显示动画或关机。
1. 进入电池电量的节点路径。
```
cd /data/service/el0/battery/battery
```
```
cat capacity
```
2. 修改当前电量为1。
```
echo 1 > capacity
```
3. 查看当前状态。
```
cat status
```
当前状态为Charging
![animation_low_power](figures/animation_low_power.jpg)
4. 改变当前状态,为未连接电源状态。
```
echo Not charging > status
```
![animation_low_power2](figures/animation_low_power2.jpg)
5. 切为Discharging状态,直接进入关机状态。
```
echo Discharging > status
```
6. 以下对关机动画的图片进行可定制化的测试修改,步骤与上方相同,只是图片作出替换。
1. 初始状态。
![animation_charging_power2](figures/animation_charging_power2.jpg)
2. %3电量状态。
![animation_initial_power2](figures/animation_initial_power2.jpg)
3. 1%电量,充电状态。
![animation_low_power](figures/animation_low_power.jpg)
4. 1%电量,未充电状态。
![animation_low_power2](figures/animation_low_power2.jpg)
5. 1%电量,Discharing状态。
设备进入关机状态
## 参考
开发过程中可参考的配置文件路径:[默认关机充电动画配置源码路径](https://gitee.com/openharmony/powermgr_battery_manager/blob/master/charger/sa_profile/animation.json)
默认配置:
```json
{
"id": "Charger",
"screenWidth": 720,
"screenHeight": 1280,
"dir": "/vendor/etc/charger/resources",
"bgColor": "#000000ff",
"subpages": [
{
"id": "Animation",
"coms": [
"Charging_Animation_Image",
"Charging_Percent_Label"
],
"bgColor": "#000000ff"
},
{
"id": "Lackpower_Charging_Prompt",
"coms": [
"LackPower_Charging_Label"
],
"bgColor": "#000000ff"
},
{
"id": "Lackpower_Not_Charging_Prompt",
"coms": [
"LackPower_Not_Charging_Label"
],
"bgColor": "#000000ff"
}
],
"default": {
"Common": {
"visible": false
},
"UILabel": {
"bgColor": "#00000000",
"fontColor": "#ffffffe6",
"align": "center"
},
"UIImageView": {
"imgCnt": 1,
"updInterval": 0,
"filePrefix": ""
}
},
"coms": [
{
"type": "UIImageView",
"id": "Charging_Animation_Image",
"x": 180,
"y": 410,
"w": 400,
"h": 400,
"resPath": "/vendor/etc/charger/resources/",
"imgCnt": 62,
"updInterval": 60,
"filePrefix": "loop"
},
{
"type": "UILabel",
"id": "Charging_Percent_Label",
"text": "",
"x": 365,
"y": 580,
"w": 65,
"h": 43,
"fontSize": 32
},
{
"type": "UILabel",
"id": "LackPower_Charging_Label",
"text": "电池电量低",
"x": 229,
"y": 1037,
"w": 250,
"h": 45,
"fontSize": 42,
"fontColor": "#ff0000ff"
},
{
"type": "UILabel",
"id": "LackPower_Not_Charging_Label",
"text": "电池电量低,请连接电源",
"x": 110,
"y": 1037,
"w": 500,
"h": 45,
"fontSize": 42,
"fontColor": "#ff0000ff"
}
]
}
```
打包路径:/system/etc/charger/resource
# 电池温度保护定制开发指导
## 概述
### 简介
OpenHarmony默认提供了电池温度保护的特性。终端设备会在不同的温度环境中使用,当温度过高或过低时,都会影响到电池的安全性,因此需要进行一定的温度保护措施,如当温度过高或过低时,将设备关机。但是不同的电池设备支持的温度范围不同,需要根据产品的设计规格来定制此特性。为此OpenHarmony提供了电池温度保护的定制方式,产品定制开发者可根据产品的设计规格来定制此特性。
### 约束与限制
配置策略:
产品定制的配置路径,需要根据[配置策略](https://gitee.com/openharmony/customization_config_policy)决定。本开发指导中的定制路径以/vendor进行举例,请开发者根据具体的产品配置策略,修改定制路径。
## 开发指导
### 搭建环境
设备要求:
标准系统开发板,如DAYU200/Hi3516DV300开源套件。
环境要求:
Linux调测环境,相关要求和配置可参考《[快速入门](../quick-start/quickstart-overview.md)》。
### 开发步骤
本文以[DAYU200](https://gitee.com/openharmony/vendor_hihope/tree/master/rk3568)为例介绍电池温度保护机制的定制方法。
1. 在产品目录[(/vendor/hihope/rk3568)](https://gitee.com/openharmony/vendor_hihope/tree/master/rk3568)下创建battery文件夹。
2. 参考[默认电池温度保护配置文件夹](https://gitee.com/openharmony/powermgr_battery_manager/tree/master/services/native/profile)创建目标文件夹,并安装到`//vendor/hihope/rk3568/battery`目录下,文件格式如下:
```text
profile
├── BUILD.gn
├── battery_config.json
```
3. 参考[默认电池温度保护的配置文件夹中的battery_config.json](https://gitee.com/openharmony/powermgr_battery_manager/blob/master/services/native/profile/battery_config.json)编写定制的battery_config.json,包含定制后的电池温度保护配置如下:
```json
{
"temperature": {
"high": 500,
"low": -400
}
}
```
**表1** 温度保护参数说明
| 温度保护机制阈值 | 温度(摄氏度)|
| -------- | -------- |
| high | 600 |
| low | -500 |
4. 参考[默认电池温度保护的配置文件夹中的BUILD.gn](https://gitee.com/openharmony/powermgr_battery_manager/blob/master/services/native/profile/BUILD.gn)编写BUILD.gn文件,将battery_config.json打包到`//vendor/etc/battery`目录下,配置如下:
```shell
import("//build/ohos.gni") #引用build/ohos.gni
ohos_prebuilt_etc("battery_config") {
source = "battery_config.json"
relative_install_dir = "battery"
install_images = [ chipset_base_dir ] #安装到vendor目录下的必要配置
part_name = "product_rk3568" #part_name为product_rk3568,以实现后续编译
}
```
5. 将编译目标添加到`/vendor/hihope/rk3568`目录下[ohos.build](https://gitee.com/openharmony/vendor_hihope/blob/master/rk3568/ohos.build)的"module_list"中,例如:
```json
{
"parts": {
"product_rk3568": {
"module_list": [
"//vendor/hihope/rk3568/default_app_config:default_app_config",
"//vendor/hihope/rk3568/image_conf:custom_image_conf",
"//vendor/hihope/rk3568/preinstall-config:preinstall-config",
"//vendor/hihope/rk3568/resourceschedule:resourceschedule",
"//vendor/hihope/rk3568/etc:product_etc_conf",
"//vendor/hihope/rk3568/battery/profile:battery_config" #添加battery_config的编译
]
}
},
"subsystem": "product_hihope"
}
```
“//vendor/hihope/rk3568/battery/”为文件夹路径,“profile”为创建的文件夹名字,“battery_config”为编译目标。
6. 参考《[快速入门](../quick-start/quickstart-overview.md)》编译定制版本,编译命令如下:
```shell
./build.sh --product-name rk3568 --ccache
```
7. 将定制版本烧录到DAYU200开发板中。
### 调测验证
1. 开机后,进入shell命令行。
```
hdc shell
```
2. 进入电源温度的节点路径(以当前DAYU开发版路径为例)。
```
cd /data/service/el0/battery/battery
```
3. 以默认的电源温度保护配置数据为例,修改电池温度的模拟节点数值。
```
echo 700 > temp
```
4. 上报电池信息改变,触发温度保护。
```
hidumper -s 3302 -a -r
```
设备进入关机状态
5. 重新开机进入shell命令行,进入电源温度的节点路径。
```
echo -600 > temp
```
6. 上报电池信息改变,触发温度保护。
```
hidumper -s 3302 -a -r
```
设备进入关机状态
7. 以新的电源温度保护配置数据为例,更改之后:
```json
{
"temperature": {
"high": 500,
"low": -400
}
}
```
8. 修改电池温度的模拟节点数值。
```
echo 550 > temp
```
9. 上报电池信息改变,触发温度保护。
```
hidumper -s 3302 -a -r
```
设备进入关机状态
10. 重新开机进入shell命令行,进入电源温度的节点路径。
```
echo -450 > temp
```
11. 上报电池信息改变,触发温度保护。
```
hidumper -s 3302 -a -r
```
设备进入关机状态
## 参考
开发过程中可参考的配置文件路径:[系统默认电源温度保护范围配置源码路径](https://gitee.com/openharmony/powermgr_battery_manager/tree/master/services/native/profile/)
默认配置:
```json
{
"temperature": {
"high": 600,
"low": -500
}
}
```
打包路径:/system/etc/battery
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册