OpenHarmony子体系开发 - 电源管理(二)

打印 上一主题 下一主题

主题 993|帖子 993|积分 2979

OpenHarmony子体系开发 - 电源管理(二)

三、叫醒源定制开发指导

概述

简介

OpenHarmony支持多种叫醒源,如电源键、键盘、鼠标等,并提供了定制开启和关闭的方式。当设备进入休眠状态后,用户可以通过按电源键、按键盘、鼠标事件、轻触屏幕等,来点亮屏幕并叫醒设备。但差别的产品大概支持差别的外设,好比无手写笔、无皮套等。为此,OpenHarmony提供叫醒源的定制方式,产品可以根据详细的筹划规格来定制此特性。
束缚与限定

设置计谋: 产品定制的设置路径,必要根据设置计谋决定。本开发指导中的定制路径以/vendor进行举例,请开发者根据详细的产品设置计谋,修改定制路径。
开发指导

搭建情况

设备要求:
标准体系开发板,如DAYU200/Hi3516DV300开源套件。
情况要求:
Linux调测情况,相关要求和设置可参考《快速入门》
开发步调

本文以DAYU200为例先容叫醒源的定制方法。

  • 在产品目次/vendor/hihope/rk3568下创建power_manager文件夹。
  • 参考叫醒源文件夹创建目标文件夹,并安装到/vendor/hihope/rk3568/power_manager目次下,文件格式如下:
    1. profile
    2. ├── BUILD.gn
    3. ├── power_wakeup.json
    复制代码
  • 编写定制的power_wakeup.json,包含定制后的叫醒源如下:
    1. {
    2.     "powerkey": {
    3.         "enable": true
    4.     },
    5.     "keyborad": {
    6.         "enable": true
    7.     },
    8.     "mouse": {
    9.         "enable": true
    10.     },
    11.     "touchscreen": {
    12.         "enable": true,
    13.         "click": 2
    14.     },
    15.     "touchpad": {
    16.         "enable": true
    17.     },
    18.     "pen": {
    19.         "enable": true
    20.     },
    21.     "lid": {
    22.         "enable": true
    23.     },
    24.     "switch": {
    25.         "enable": true
    26.     },
    27.     "tp_touch": {
    28.         "enable": true
    29.     }
    30. }
    复制代码
    表1 叫醒源分析
       休眠源形貌powerkey电源键叫醒keyborad键盘叫醒mouse鼠标叫醒touchscreen触摸屏幕叫醒touchpad触摸板叫醒pen手写笔叫醒lid皮套叫醒switch盖子叫醒tp_touch触屏叫醒 表2 叫醒源设置分析
       设置项范例形貌enablebool是否开启叫醒监听clickint点击次数
  • 参考叫醒源的设置文件夹中的BUILD.gn编写BUILD.gn文件,将power_wakeup.json打包到/vendor/etc/power_config目次下,设置如下:
    1. import("//build/ohos.gni")               #引用build/ohos.gni
    2. ohos_prebuilt_etc("wakeup_config") {
    3.     source = "power_wakeup.json"
    4.     relative_install_dir = "power_config"
    5.     install_images = [ chipset_base_dir ] #安装到vendor目录下的必要配置
    6.     part_name = "product_rk3568"          #part_name为product_rk3568,以实现后续编译
    7. }
    复制代码
  • 将编译目标添加到/vendor/hihope/rk3568目次下ohos.build的"module_list"中,比方:
    1. {
    2.     "parts": {
    3.         "product_rk3568": {
    4.             "module_list": [
    5.                 "//vendor/hihope/rk3568/default_app_config:default_app_config",
    6.                 "//vendor/hihope/rk3568/image_conf:custom_image_conf",
    7.                 "//vendor/hihope/rk3568/preinstall-config:preinstall-config",
    8.                 "//vendor/hihope/rk3568/resourceschedule:resourceschedule",
    9.                 "//vendor/hihope/rk3568/etc:product_etc_conf",
    10.                 "//vendor/hihope/rk3568/power_manager/profile:wakeup_config" //添加wakeup_config的编译
    11.             ]
    12.         }
    13.     },
    14.     "subsystem": "product_hihope"
    15. }
    复制代码
    “//vendor/hihope/rk3568/power_manager/”为文件夹路径,“profile”为创建的文件夹名字,“wakeup_config”为编译目标。
  • 参考《快速入门》编译定制版本,编译命令如下:
    1. ./build.sh --product-name rk3568 --ccache
    复制代码
  • 将定制版本烧录到DAYU200开发板中。
调测验证

   分析
  双击亮屏当前暂不支持,即"touchscreen"中的"enable"当前仅支持为false。本领将会在后续版本提供。
  

  • 以新的叫醒源设置文件为例,更改之后:
    1. {
    2.     "powerkey": {
    3.         "enable": true
    4.     },
    5.     "keyborad": {
    6.         "enable": true
    7.     },
    8.     "mouse": {
    9.         "enable": true
    10.     },
    11.     "touchscreen": {
    12.         "enable": false,
    13.         "click": 2
    14.     },
    15.     "touchpad": {
    16.         "enable": false
    17.     },
    18.     "pen": {
    19.         "enable": false
    20.     },
    21.     "lid": {
    22.         "enable": false
    23.     },
    24.     "switch": {
    25.         "enable": false
    26.     },
    27.     "tp_touch": {
    28.         "enable": false
    29.     }
    30. }
    复制代码
  • 开机后,点击电源键使设备进入休眠状态,再次点击电源键。
    设备屏幕点亮,设备被叫醒。
  • 点击电源键使设备进入休眠状态,按下键盘。
    设备屏幕点亮,设备被叫醒。
  • 点击电源键使设备进入休眠状态,滑动鼠标。
    设备屏幕点亮,设备被叫醒。
四、关机振动定制开发指导

概述

简介

OpenHarmony提供了定制电源服务振动提示的本领,产品定制开发者可根据产品筹划规格来定制。在该模式下可通过修改设置文件在手构造机出现弹窗的同时触发振动结果,且当前暂时仅支持在关机弹窗场景下使用。
基本概念

束缚与限定

该功能依赖于设备硬件,设备必要有振动马达器件。
开发指导

搭建情况

设备要求:
标准体系开发板,如DAYU200开源套件,外接振动马达器件。
情况要求:
Linux调测情况,相关要求和设置可参考《快速入门》。
开发步调

本文以power_manager项目开发关机弹窗振动为例。

  • 在power_manager项目中,编写定制的"power_vibrator.json",比方:
    1. {
    2. "shutdown_diag": {
    3.     "enable": true,
    4.     "type": "haptic.long_press.heavy"
    5.     }
    6. }
    复制代码

    • shutdown_diag: 振动场景字符串名称,不可修改。
    • enable: 振动使能开关,设置true则触发振动,false则不触发,默认为false。
    • type: 振动的波形名称,当前模式下的名称默认如上。

  • 参考《快速入门》编译定制版本,编译命令如下:
    1. ./build.sh --product-name rk3568 --ccache
    复制代码
  • 将定制版本烧录到DAYU200开发板中。
调测验证

长按power键,浮现关机弹窗的同时手机触发振动结果。
参考

关机弹窗振动默认设置
五、叫醒后体系动作定制开发指导

概述

简介

OpenHarmony支持体系睡眠时叫醒实举措作,如在睡眠中低电量情况下叫醒使体系关机。当设备进入睡眠状态后,可以根据用户设置的计谋叫醒并实行对应动作。但差别产品可支持的场景大概差别,好比不支持低电量叫醒。为此,OpenHarmony提供叫醒后动作的定制方式,产品可以根据详细的筹划规格来定制此特性。
束缚与限定

束缚: 叫醒后动作特性必要适配:


  • 满足叫醒条件(如电量低于阈值)时触发电源键事件;
  • 叫醒原因(如低电量叫醒)生存到内核节点。
设置计谋: 产品定制的设置路径,必要根据设置计谋决定。本开发指导中的定制路径以/vendor进行举例,请开发者根据详细的产品设置计谋,修改定制路径。
开发指导

搭建情况

设备要求:
标准体系开发板,如DAYU200/Hi3516DV300开源套件。
情况要求:
Linux调测情况,相关要求和设置可参考《快速入门》
开发步调

本文以DAYU200为例先容叫醒源的定制方法。

  • 在产品目次/vendor/hihope/rk3568下创建power_manager文件夹。
  • 参考叫醒源文件夹创建目标文件夹,并安装到/vendor/hihope/rk3568/power_manager目次下,文件格式如下:
    1. profile
    2. ├── BUILD.gn
    3. ├── power_wakeup_action.json
    复制代码
  • 编写定制的power_wakeup_action.json,包含定制后的叫醒原因和动作如下:
    1. {
    2.     "53": {
    3.         "scene": "LowCapacity",
    4.         "action": 2,
    5.         "description": "(such as)53 is a uniquely wakeup reason by reading node through HDI interface(GetWakeupReason)"
    6.     }
    7. }
    复制代码
    表1 叫醒源分析
       叫醒源形貌53低电量叫醒 叫醒源设置泉源于实际场景,如读取节点或其他得到,description用来形貌详细泉源
    表2 叫醒场景分析
       叫醒场景形貌LowCapacity低电量 表3 action分析
       action取值形貌ACTION_NONE0无动作ACTION_HIBERNATE1进入休眠ACTION_SHUTDOWN2关机
  • 参考叫醒源的设置文件夹中的BUILD.gn编写BUILD.gn文件,将power_wakeup_action.json打包到/vendor/etc/power_wakeup_action目次下,设置如下:
    1. import("//build/ohos.gni")               #引用build/ohos.gni
    2. ohos_prebuilt_etc("wakeup_action_config") {
    3.     source = "power_wakeup_action.json"
    4.     relative_install_dir = "power_config"
    5.     install_images = [ chipset_base_dir ] #安装到vendor目录下的必要配置
    6.     part_name = "product_rk3568"          #part_name为product_rk3568,以实现后续编译
    7. }
    复制代码
  • 将编译目标添加到/vendor/hihope/rk3568目次下ohos.build的"module_list"中,比方:
    1. {
    2.     "parts": {
    3.         "product_rk3568": {
    4.             "module_list": [
    5.                 "//vendor/hihope/rk3568/default_app_config:default_app_config",
    6.                 "//vendor/hihope/rk3568/image_conf:custom_image_conf",
    7.                 "//vendor/hihope/rk3568/preinstall-config:preinstall-config",
    8.                 "//vendor/hihope/rk3568/resourceschedule:resourceschedule",
    9.                 "//vendor/hihope/rk3568/etc:product_etc_conf",
    10.                 "//vendor/hihope/rk3568/power_manager/profile:wakeup_action_config" //添加wakeup_action_config的编译
    11.             ]
    12.         }
    13.     },
    14.     "subsystem": "product_hihope"
    15. }
    复制代码
    “//vendor/hihope/rk3568/power_manager/”为文件夹路径,“profile”为创建的文件夹名字,“wakeup_action_config”为编译目标。
  • 参考《快速入门》编译定制版本,编译命令如下:
    1. ./build.sh --product-name rk3568 --ccache
    复制代码
  • 将定制版本烧录到DAYU200开发板中。
调测验证


  • 以新的叫醒源设置文件为例,更改之后:
    1. {
    2.     "53": {
    3.         "scene": "LowCapacity",
    4.         "action": 2,
    5.         "description": "(such as)53 is a uniquely wakeup reason by reading node through HDI interface(GetWakeupReason)"
    6.     }
    7. }
    复制代码
  • 修改powermgr.gni,使能power_manager_feature_wakeup_action特性。
    1. power_manager_feature_wakeup_action = true
    复制代码
  • 参考battery_config.json中添加如下设置
    1. "charge_scene": {
    2.     "low_battery_thers": {
    3.       "set": {
    4.         "path": "xxx"
    5.       }
    6.     }
    7. }
    复制代码
    其中path为生存低电量阈值的节点路径。
  • 修改batterymgr.gni,使能battery_manager_feature_set_low_capacity_threshold特性。
    1. battery_manager_feature_set_low_capacity_threshold = true
    复制代码
  • 在power_config.json中添加如下部分
    1. {
    2.     "scene" :{
    3.         "wakeuo_cause": {
    4.             "get": {
    5.                 "path": "yyy"
    6.             }
    7.         }
    8.     }
    9. }
    复制代码
    其中get为生存低电量叫醒原因的节点路径。
  • 修改power.gni,打开drivers_peripheral_power_wakeup_cause_path特性。
    1. drivers_peripheral_power_wakeup_cause_path = true
    复制代码
  • 在hdf_peripheral.cfg的pre-init修改节点权限为system。
    1. "chown system system xxx",
    2. "chown system system yyy",
    复制代码
  • 使体系在睡眠中电量下降至阈值。
    设备关机。

免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。
回复

使用道具 举报

0 个回复

倒序浏览

快速回复

您需要登录后才可以回帖 登录 or 立即注册

本版积分规则

商道如狼道

金牌会员
这个人很懒什么都没写!
快速回复 返回顶部 返回列表