OpenHarmony子系统开发 - 电池管理(一)
一、电量与LED灯颜色的定制开发指导
概述
简介
OpenHarmony默认提供了电量与LED灯颜色的映射关系。对于部分产品形态(如Pad),会使用LED灯的颜色来展示当前设备充电时的电量信息,如高电量使用绿色、低电量黄色、极低电量使用红色。这种电量与LED灯颜色的映射关系,需要根据产品进行自定义。为此OpenHarmony提供了电量与LED灯颜色映射的定制方式,产品定制开发者可根据产品的设计规格来定制此特性。
约束与限制
配置策略: 产品定制的配置路径,需要根据配置策略决定。本开发指导中的定制路径以/vendor进行举例,请开发者根据具体的产品配置策略,修改定制路径。
开发指导
搭建环境
设备要求:
标准系统开发板,如DAYU200/Hi3516DV300开源套件。
环境要求:
Linux调测环境,相关要求和配置可参考《快速入门》。
开发步骤
本文以DAYU200为例介绍电量与LED灯颜色的定制方法。
-
在产品目录(/vendor/hihope/rk3568)下创建battery文件夹。
-
参考默认电量与LED灯颜色映射的配置文件夹创建目标文件夹,并安装到
//vendor/hihope/rk3568/battery
目录下,文件格式如下:profile ├── BUILD.gn ├── battery_config.json
-
参考默认电量与LED灯颜色映射的配置文件夹中的battery_config.json编写定制的battery_config.json。包含定制后的电量与LED灯颜色映射配置如下:
{"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 电量等级说明
电量等级 描述 low 低电量 normal 正常电量 high 高电量 表2 电量区间与LED灯颜色映射配置说明
配置项 描述 soc 电量区间 rgb LED灯RGB组合 -
参考默认电量与LED灯颜色映射的配置文件夹中的BUILD.gn编写BUILD.gn文件,将battery_config.json打包到
//vendor/etc/battery
目录下,配置如下:import("//build/ohos.gni") #引用build/ohos.gniohos_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,以实现后续编译 }
-
将编译目标添加到
/vendor/hihope/rk3568
目录下ohos.build的"module_list"中,例如:{ "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”为编译目标。
-
参考《快速入门》编译定制版本,编译命令如下:
./build.sh --product-name rk3568 --ccache
-
将定制版本烧录到DAYU200开发板中。
调测验证
-
开机后,进入shell命令行。
hdc shell
-
进入电池电量的节点路径(以当前DAYU开发版路径为例)。
cd /data/service/el0/battery/battery
-
以默认的电量与LED灯颜色的映射配置数据为例,修改电量数值,模拟电池信息上报,并观察LED亮灯颜色变化。
- 修改电量数值
echo 5 > capacity
- 上报电量信息改变,触发LED灯映射
hidumper -s 3302 -a -r
- 修改电量数值
echo 50 > capacity
- 上报电量信息改变,触发LED灯映射
hidumper -s 3302 -a -r
- 修改电量数值
echo 100 > capacity
- 上报电量信息改变,触发LED灯映射
hidumper -s 3302 -a -r
-
以新的电量与LED灯颜色的映射配置数据为例,更改之后:
{"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]}} }
- 修改电量数值
echo 15 > capacity
- 上报电量信息改变,触发LED灯映射
hidumper -s 3302 -a -r
- 修改电量数值
echo 95 > capacity
- 上报电量信息改变,触发LED灯映射
hidumper -s 3302 -a -r
- 修改电量数值
echo 99 > capacity
- 上报电量信息改变,触发LED灯映射
hidumper -s 3302 -a -r
参考
开发过程中可参考的配置文件路径:系统默认亮度范围配置源码路径
默认配置:
{"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提供了电池温度保护的定制方式,产品定制开发者可根据产品的设计规格来定制此特性。
约束与限制
配置策略: 产品定制的配置路径,需要根据配置策略决定。本开发指导中的定制路径以/vendor进行举例,请开发者根据具体的产品配置策略,修改定制路径。
开发指导
搭建环境
设备要求:
标准系统开发板,如DAYU200/Hi3516DV300开源套件。
环境要求:
Linux调测环境,相关要求和配置可参考《快速入门》。
开发步骤
本文以DAYU200为例介绍电池温度保护机制的定制方法。
-
在产品目录(/vendor/hihope/rk3568)下创建battery文件夹。
-
参考默认电池温度保护配置文件夹创建目标文件夹,并安装到
//vendor/hihope/rk3568/battery
目录下,文件格式如下:profile ├── BUILD.gn ├── battery_config.json
-
参考默认电池温度保护的配置文件夹中的battery_config.json编写定制的battery_config.json,包含定制后的电池温度保护配置如下:
{"temperature": {"high": 500,"low": -400} }
表1 温度保护参数说明
温度保护机制阈值 温度(摄氏度) high 600 low -500 -
参考默认电池温度保护的配置文件夹中的BUILD.gn编写BUILD.gn文件,将battery_config.json打包到
//vendor/etc/battery
目录下,配置如下:import("//build/ohos.gni") #引用build/ohos.gniohos_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,以实现后续编译 }
-
将编译目标添加到
/vendor/hihope/rk3568
目录下ohos.build的"module_list"中,例如:{ "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”为编译目标。
-
参考《快速入门》编译定制版本,编译命令如下:
./build.sh --product-name rk3568 --ccache
-
将定制版本烧录到DAYU200开发板中。
调测验证
-
开机后,进入shell命令行。
hdc shell
-
进入电源温度的节点路径(以当前DAYU开发版路径为例)。
cd /data/service/el0/battery/battery
-
以默认的电源温度保护配置数据为例,修改电池温度的模拟节点数值。
echo 700 > temp
-
上报电池信息改变,触发温度保护。
hidumper -s 3302 -a -r
设备进入关机状态
-
重新开机进入shell命令行,进入电源温度的节点路径。
echo -600 > temp
-
上报电池信息改变,触发温度保护。
hidumper -s 3302 -a -r
设备进入关机状态
-
以新的电源温度保护配置数据为例,更改之后:
{"temperature": {"high": 500,"low": -400} }
-
修改电池温度的模拟节点数值。
echo 550 > temp
-
上报电池信息改变,触发温度保护。
hidumper -s 3302 -a -r
设备进入关机状态
-
重新开机进入shell命令行,进入电源温度的节点路径。
echo -450 > temp
-
上报电池信息改变,触发温度保护。
hidumper -s 3302 -a -r
设备进入关机状态
参考
开发过程中可参考的配置文件路径:系统默认电源温度保护范围配置源码路径
默认配置:
{"temperature": {"high": 600,"low": -500}
}
打包路径:/system/etc/battery
三、电量等级定制开发指导
概述
简介
OpenHarmony默认提供了电量等级,根据当前的电量来定义系统统一的电量等级,如满电量、高电量、低电量、极低电量等。系统可以根据当前的电量等级对用户进行提示或处理相关业务。但是电量等级对应的电量值在不同的产品上规格是不同的,产品希望根据产品的设计规格来定制此特性。为此OpenHarmony提供了电量等级的定制方式,产品定制开发者可根据设计规格来定制此特性。
约束与限制
配置策略: 产品定制的配置路径,需要根据配置策略决定。本开发指导中的定制路径以/vendor进行举例,请开发者根据具体的产品配置策略,修改定制路径。
开发指导
搭建环境
设备要求:
标准系统开发板,如DAYU200/Hi3516DV300开源套件。
环境要求:
Linux调测环境,相关要求和配置可参考《快速入门》
开发步骤
本文以DAYU200为例介绍电量等级的定制方法。
-
在产品目录(/vendor/hihope/rk3568)下创建battery文件夹。
-
参考默认电量等级配置文件夹创建目标文件夹,并安装到
//vendor/hihope/rk3568/battery
目录下,文件格式如下:profile ├── BUILD.gn ├── battery_config.json
-
参考默认电量等级的配置文件夹中的battery_config.json编写定制的battery_config.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 满电量 -
参考默认电量等级的配置文件夹中的BUILD.gn编写BUILD.gn文件,将battery_config.json打包到
//vendor/etc/battery
目录下,配置如下:import("//build/ohos.gni") #引用build/ohos.gniohos_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,以实现后续编译 }
-
将编译目标添加到
/vendor/hihope/rk3568
目录下ohos.build的"module_list"中,例如:{ "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”为编译目标。
-
参考《快速入门》编译定制版本,编译命令如下:
./build.sh --product-name rk3568 --ccache
-
将定制版本烧录到DAYU200开发板中。
调测验证
-
开机后,进入shell命令行:
hdc shell
-
进入电池电量的节点路径(以当前DAYU开发版路径为例)。
cd /data/service/el0/battery/battery/
-
默认充电类型的映射配置数据为例,修改充电状态,模拟电池信息上报,观察发送是否发送对应充电类型广播。
- 修改电量信息。
echo 100 > capacity
- 上报电量信息改变,获取当前电量等级。
hidumper -s 3302 -a -i
- 成功获取电量等级如下:
-------------------------------[ability]-----------------------------------------------------------------BatteryService--------------------------------- Current time: 2017-08-05 17:22:48.589······(省略其他,只显示batteryLevel的配置)batteryLevel: 1······
- 修改电量信息。
echo 90 > capacity
- 上报电量信息改变,获取当前电量等级。
hidumper -s 3302 -a -i
- 成功获取电量等级如下:
-------------------------------[ability]-----------------------------------------------------------------BatteryService--------------------------------- Current time: 2017-08-05 17:24:29.716······(省略其他,只显示batteryLevel的配置)batteryLevel: 2······
- 修改电量信息。
echo 60 > capacity
- 上报电量信息改变,获取当前电量等级。
hidumper -s 3302 -a -i
- 成功获取电量等级如下:
-------------------------------[ability]-----------------------------------------------------------------BatteryService--------------------------------- Current time: 2017-08-05 17:25:09.837······(省略其他,只显示batteryLevel的配置)batteryLevel: 3······
- 修改电量信息。
echo 30 > capacity
- 上报电量信息改变,获取当前电量等级。
hidumper -s 3302 -a -i
- 成功获取电量等级如下:
-------------------------------[ability]-----------------------------------------------------------------BatteryService--------------------------------- Current time: 2017-08-05 17:26:20.495······(省略其他,只显示batteryLevel的配置)batteryLevel: 4······
- 修改电量信息。
echo 15 > capacity
- 上报电量信息改变,获取当前电量等级。
hidumper -s 3302 -a -i
- 成功获取电量等级如下:
-------------------------------[ability]-----------------------------------------------------------------BatteryService--------------------------------- Current time: 2017-08-05 17:27:05.312······(省略其他,只显示batteryLevel的配置)batteryLevel: 5······
- 修改电量信息。
echo 10 > capacity
- 上报电量信息改变,获取当前电量等级。
hidumper -s 3302 -a -i
- 成功获取电量等级如下:
-------------------------------[ability]-----------------------------------------------------------------BatteryService--------------------------------- Current time: 2017-08-05 17:27:56.270······(省略其他,只显示batteryLevel的配置)batteryLevel: 6······
- 修改电量信息。
echo 5 > capacity
- 上报电量信息改变,获取当前电量等级。
hidumper -s 3302 -a -i
- 成功获取电量等级如下:
-------------------------------[ability]-----------------------------------------------------------------BatteryService--------------------------------- Current time: 2017-08-05 17:28:38.066······(省略其他,只显示batteryLevel的配置)batteryLevel: 7······
参考
开发过程中可参考的配置文件路径:电量等级配置源码路径
默认配置:
{"soc": {"shutdown": 1,"critical": 5,"warning": 10,"low": 20,"normal": 90,"high": 99,"full": 100}
}
打包路径:/system/etc/battery
四、充电振动定制开发指导
概述
功能简介
OpenHarmony提供定制电池服务振动的能力,产品定制开发者可根据产品设计规格来定制。当前该定制能力仅支持在插入充电器场景下使用,定制时采用修改配置文件的方式,实现电池连接充电器时触发振动效果。
约束与限制
该功能依赖于设备硬件,设备需要有振动马达器件。
开发指导
搭建环境
-
设备要求:
标准系统开发板,如DAYU200开源套件,外接振动马达器件。
-
环境要求:
Linux调测环境,相关要求和配置可参考《快速入门》。
开发步骤
本文以RK3568开发板为例,说明如何实现插入充电器振动的定制方法。
-
修改base\powermgr\battery_manager\services\native\profile路径下的电池服务振动配置文件battery_vibrator.json。
profile ├── BUILD.gn ├── battery_config.json ├── battery_vibrator.json
以如下配置为例:
{"start_charge": {"enable": true, "type": "haptic.charging"} }
-
start_charge:振动场景字符串名称,不可修改。
-
enable:振动使能开关,配置为true则触发振动,为false则不触发振动,默认为false。
-
type:振动波形名,默认为haptic.charging,暂未提供其他波形名。
-
-
参考《快速入门》编译定制版本,编译命令如下:
./build.sh --product-name rk3568 --ccache
-
将定制版本烧录到RK3568开发板中。
调测验证
烧录版本后重启设备,插入充电器观察是否按照预期振动,如按照预期振动则功能测试成功。
参考
开发过程中可参考的配置文件路径:
系统默认插入充电器振动配置源码路径