1# 电源模式定制开发指导 2 3## 概述 4 5### 简介 6 7OpenHarmony默认提供了电源模式(如正常模式、性能模式、省电模式、超级省电模式)的特性。但由于不同产品的部件存在差异,导致在同样场景下电源模式的配置需要也存在差异,为此,OpenHarmony提供了电源管理的定制方式,产品定制开发者可根据产品的设计规格来定制这些特性。 8 9### 基本概念 10 11OpenHarmony支持的可定制的电源模式如下,每种模式对应了不同的电源和性能策略模式。 12 13- 正常模式:默认的电源模式,无特殊需求的情况下,此模式下的系统亮度、灭屏时间,进入睡眠时间等均适合大部分用户的需要。 14 15- 性能模式:强调性能表现的电源模式,如增加系统亮度、关闭灭屏时间、防止进入睡眠等。 16 17- 省电模式:强调省电表现的电源模式,如降低系统亮度、缩短灭屏时间、缩短进入睡眠时间等。 18 19- 超级省电模式:强调超级省电表现的电源模式,如大幅降低系统亮度、大幅缩短灭屏时间,大幅缩短进入睡眠时间等。 20 21 22### 约束与限制 23 24产品定制的配置路径,需要根据[配置策略](https://gitee.com/openharmony/customization_config_policy)决定。本开发指导中的定制路径以`/vendor`进行举例,请开发者根据具体的产品配置策略,修改定制路径。 25 26## 开发指导 27 28### 搭建环境 29 30设备要求: 31 32标准系统开发板,如DAYU200/Hi3516DV300开源套件。 33 34环境要求: 35 36Linux调测环境,相关要求和配置可参考《[快速入门](../quick-start/quickstart-overview.md)》。 37 38### 开发步骤 39 40本文以定制[DAYU200](https://gitee.com/openharmony/vendor_hihope/tree/master/rk3568)的电源模式为例介绍电源模式的定制方法: 41 421. 在[vendor/hihope/rk3568](https://gitee.com/openharmony/vendor_hihope/tree/master/rk3568)下创建power_manager文件夹。 43 442. 参考[默认电源模式配置文件夹](https://gitee.com/openharmony/powermgr_power_manager/tree/master/services/native/profile)创建目标文件夹,并安装到//vendor/hihope/rk3568/power_manager,文件格式如下: 45 46 ```text 47 profile 48 ├── BUILD.gn 49 ├── power_mode_config.xml 50 ``` 51 523. 参考[默认电源模式配置文件夹中的power_mode_config.xml](https://gitee.com/openharmony/powermgr_power_manager/blob/master/services/native/profile/power_mode_config.xml)编写定制的power_mode_config.xml: 53 54 proxy节点的说明是电源模式: 55 56 **表1** proxy节点说明 57 | 电源模式 | ID | 58 | :------ | --- | 59 | 正常模式 | 600 | 60 | 省电模式 | 601 | 61 | 性能模式 | 602 | 62 | 超级省电模式 | 603 | 63 64 switch节点的说明是配置项: 65 66 **表2** switch节点说明 67 | 配置项 | ID | 取值范围 | 68 | :------ | ----- | ----- | 69 | 灭屏时间 | 101 | value是时长,为整数,value>=-1, 单位为毫秒(ms),-1为关闭灭屏功能。 | 70 | 系统自动睡眠时间 | 102 | value是时长,为整数,value>=-1, 单位为毫秒(ms),-1为关闭系统自动睡眠功能。 | 71 | 自动调节亮度 | 103 | value为是否开启,取值范围:<br>-1为关闭自动调节亮度功能, <br>1为开启自动调节亮度功能。 | 72 | 自动调节屏幕旋转 | 107 | value为是否开启,取值范围:<br>-1为关闭自动调节屏幕旋转, <br>1为开启自动调节屏幕旋转。 | 73 | 系统亮度 | 115 | value是亮度,为整数,取值范围:0~255。 | 74 | 震动开关 | 120 | value为是否开启,取值范围:<br>-1为关闭震动, <br>1为开启震动。 | 75 76 以正常模式为例: 77 78 ```xml 79 <switch_proxy version="1"> 80 <proxy id="600"> 81 <switch id="101" value="10000"/> 82 <switch id="102" value="0"/> 83 <switch id="103" value="-1"/> 84 <switch id="107" value="1"/> 85 <switch id="115" value="30"/> 86 <switch id="120" value="1"/> 87 </proxy> 88 ``` 89 904. 参考[默认电源模式配置文件夹中的BUILD.gn](https://gitee.com/openharmony/powermgr_power_manager/blob/master/services/native/profile/BUILD.gn)编写BUILD.gn文件,将power_mode_config.xml打包到 `/vendor/etc/power_config`目录下,例如: 91 92 ```shell 93 import("//base/powermgr/power_manager/powermgr.gni") 94 import("//build/ohos.gni") 95 96 ## Install vendor power_mode_config.xml to /vendor/etc/power_config/power_mode_config.xml 97 ohos_prebuilt_etc("power_mode_config_vendor") { # 自定义名称,例子中用名:power_mode_config_vendor 98 source = "power_mode_config.xml" 99 relative_install_dir = "power_config" 100 install_images = [ chipset_base_dir ] # 安装到vendor目录下的必要配置,chipset_base_dir = "vendor", 如果不配置,默认安装到system目录 101 part_name = "${product_rk3568}" # part_name为product_rk3568,以实现后续编译 102 } 103 104 group("power_service_config") { 105 deps = [ ":power_mode_config_vendor" ] 106 } 107 108 ``` 109 1105. 将编译目标添加到[rk3568默认的ohos.build](https://gitee.com/openharmony/vendor_hihope/blob/master/rk3568/ohos.build)的"module_list"中,例如: 111 112 ```json 113 { 114 "parts": { 115 "product_rk3568": { 116 "module_list": [ 117 "//vendor/hihope/rk3568/default_app_config:default_app_config", 118 "//vendor/hihope/rk3568/image_conf:custom_image_conf", 119 "//vendor/hihope/rk3568/power_manager/profile:power_mode_config_vendor", # 添加power_mode_config_vendor的编译。 120 "//vendor/hihope/rk3568/preinstall-config:preinstall-config", 121 "//vendor/hihope/rk3568/resourceschedule:resourceschedule", 122 "//vendor/hihope/rk3568/etc:product_etc_conf" 123 ] 124 } 125 }, 126 "subsystem": "product_hihope" 127 } 128 ``` 129 130 1316. 参考《[快速入门](../quick-start/Readme-CN.md)》编译定制版本,编译命令如下: 132 133 ```shell 134 ./build.sh --product-name rk3568 --ccache 135 ``` 136 1377. 将定制版本烧录到DAYU200开发板中。 138 139### 调测验证 140 1411. 开机后,先进入shell命令行: 142 143 ```shell 144 hdc shell 145 ``` 146 1472. 设置电源模式为正常模式,并验证。 148 149 1. 执行下列命令,更改电源模式,使设备进入正常模式: 150 151 ```shell 152 power-shell setmode 600 153 ``` 154 155 2. 成功进入正常模式: 156 157 ```shell 158 Set Mode: 600 159 Set Mode Success! 160 161 ``` 162 3. 执行下列命令,获取当前系统自动睡眠时间: 163 164 ```shell 165 hidumper -s 3301 -a -a 166 167 -------------------------------[ability]------------------------------- 168 169 170 ----------------------------------PowerManagerService--------------------------------- 171 POWER STATE DUMP: 172 Current State: INACTIVE Reason: 1 Time: 33227 173 ScreenOffTime: Timeout=10000ms 174 ······(省略其他,只显示系统自动睡眠时间的配置) 175 176 ``` 177 178 4. 点亮屏幕,观察设备屏幕,10秒后灭屏,设置成功。 179 1803. 设置电源模式为省电模式,并验证。 181 182 1. 执行下列命令,更改电源模式,使设备进入省电模式: 183 184 ```shell 185 power-shell setmode 601 186 ``` 187 188 2. 成功进入省电模式: 189 190 ```shell 191 Set Mode: 601 192 Set Mode Success! 193 194 ``` 195 3. 执行下列命令,获取当前系统自动睡眠时间: 196 197 ```shell 198 hidumper -s 3301 -a -a 199 200 -------------------------------[ability]------------------------------- 201 202 203 ----------------------------------PowerManagerService--------------------------------- 204 POWER STATE DUMP: 205 Current State: INACTIVE Reason: 1 Time: 33227 206 ScreenOffTime: Timeout=20000ms 207 ······(省略其他,只显示系统自动睡眠时间的配置) 208 209 ``` 210 211 4. 点亮屏幕,观察设备屏幕,20秒后灭屏,设置成功。 212 2134. 设置电源模式为性能模式,并验证。 214 215 1. 执行下列命令,更改电源模式,使设备进入性能模式: 216 217 ```shell 218 power-shell setmode 602 219 ``` 220 221 2. 成功进入性能模式: 222 223 ```shell 224 Set Mode: 602 225 Set Mode Success! 226 227 ``` 228 3. 执行下列命令,获取当前系统自动睡眠时间: 229 230 ```shell 231 hidumper -s 3301 -a -a 232 233 -------------------------------[ability]------------------------------- 234 235 236 ----------------------------------PowerManagerService--------------------------------- 237 POWER STATE DUMP: 238 Current State: INACTIVE Reason: 1 Time: 33227 239 ScreenOffTime: Timeout=30000ms 240 ······(省略其他,只显示系统自动睡眠时间的配置) 241 242 ``` 243 244 4. 点亮屏幕,观察设备屏幕,30秒后灭屏,设置成功。 245 2465. 设置电源模式为超级省电模式,并验证。 247 248 1. 执行下列命令,更改电源模式,使设备进入超级省电模式: 249 250 ```shell 251 power-shell setmode 603 252 ``` 253 254 2. 成功进入超级省电模式: 255 256 ```shell 257 Set Mode: 603 258 Set Mode Success! 259 260 ``` 261 3. 执行下列命令,获取当前系统自动睡眠时间: 262 263 ```shell 264 hidumper -s 3301 -a -a 265 266 -------------------------------[ability]------------------------------- 267 268 269 ----------------------------------PowerManagerService--------------------------------- 270 POWER STATE DUMP: 271 Current State: INACTIVE Reason: 1 Time: 33227 272 ScreenOffTime: Timeout=40000ms 273 ······(省略其他,只显示系统自动睡眠时间的配置) 274 275 ``` 276 277 4. 点亮屏幕,观察设备屏幕,40秒后灭屏,设置成功。 278 279## 参考 280 281开发过程中可参考的配置文件路径:[系统默认电源模式配置源码路径](https://gitee.com/openharmony/powermgr_power_manager/tree/master/services/native/profile) 282 283[默认配置](https://gitee.com/openharmony/powermgr_power_manager/blob/master/services/native/profile/power_mode_config.xml) 284 285打包路径:`/system/etc/power_config/power_mode_config.xml` 286