OpenHarmony子系统开发 - 电池管理(二)

embedded/2025/3/29 16:58:02/

OpenHarmony子系统开发 - 电池管理(二)

五、充电限流限压定制开发指导

概述

简介

OpenHarmony默认提供了充电限流限压的特性。在对终端设备进行充电时,由于环境影响,可能会导致电池温度过高,因此需要对充电电流或电压进行限制,从而保证终端设备使用的安全性。但是充电时的电流电压对安全性的影响在不同的产品上规格是不同的,产品希望根据产品的设计规格来定制此特性。为此OpenHarmony提供了充电限流限压的定制方式,产品定制开发者可根据产品的设计规格来定制此特性。

约束与限制

配置策略: 产品定制的配置路径,需要根据配置策略决定。本开发指导中的定制路径以/vendor进行举例,请开发者根据具体的产品配置策略,修改定制路径。

开发指导

搭建环境

设备要求:

标准系统开发板,如DAYU200/Hi3516DV300开源套件。

环境要求:

Linux调测环境,相关要求和配置可参考《快速入门》。

开发步骤

本文以DAYU200为例介绍充电限流限压的定制方法。

  1. 在产品目录(/vendor/hihope/rk3568)下创建battery文件夹。

  2. 参考默认充电限流限压配置文件夹创建目标文件夹,并安装到//vendor/hihope/rk3568/battery目录下,文件格式如下:

    profile
    ├── BUILD.gn
    ├── battery_config.json
    
  3. 参考默认充电限流限压的配置文件夹中的battery_config.json编写定制的battery_config.json,包含定制后的充电限流限压配置如下:

    {"charger": {"current_limit":{"path": "/data/service/el0/battery/current_limit"},"voltage_limit":{"path": "/data/service/el0/battery/voltage_limit"}}
    }
    
  4. 参考默认充电限流限压的配置文件夹中的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,以实现后续编译
    }
    
  5. 将编译目标添加到/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”为编译目标。

  6. 参考《快速入门》编译定制版本,编译命令如下:

    ./build.sh --product-name rk3568 --ccache
    
  7. 将定制版本烧录到DAYU200开发板中。

调测验证

  1. 编译battery对应的hats测试用例,编译命令与框架搭建参考XTS子系统。

  2. 用框架执行测试,输出测试报告。

    battery_limit_current_test_report

参考

开发过程中可参考默认充电限流限压的配置文件夹中的battery_config.json

默认配置:

{"charger": {"current_limit":{"path": "/data/service/el0/battery/current_limit"},"voltage_limit":{"path": "/data/service/el0/battery/voltage_limit"}}
}

打包路径:/system/etc/battery

六、充电类型定制开发指导

概述

简介

OpenHarmony默认提供了充电类型的特性。在对终端设备进行充电时,可以使用不同的充电器类型,如有线快充、无线快充等。系统可以根据当前的充电类型展示相应的动画或处理相关业务,但是不同产品支持的充电类型不同,需要根据产品的设计规格来定制此特性。为此OpenHarmony提供了充电类型的定制方式,产品定制开发者可根据产品的设计规格来定制此特性。

约束与限制

配置策略: 产品定制的配置路径,需要根据配置策略决定。本开发指导中的定制路径以/vendor进行举例,请开发者根据具体的产品配置策略,修改定制路径。

开发指导

搭建环境

设备要求:

标准系统开发板,如DAYU200/Hi3516DV300开源套件。

环境要求:

Linux调测环境,相关要求和配置可参考《快速入门》。

开发步骤

本文以DAYU200为例介绍充电类型的定制方法。

  1. 在产品目录(/vendor/hihope/rk3568)下创建battery文件夹。

  2. 参考默认充电类型配置文件夹创建目标文件夹,并安装到//vendor/hihope/rk3568/battery目录下,文件格式如下:

    profile
    ├── BUILD.gn
    ├── battery_config.json
    
  3. 参考默认充电类型的配置文件夹中的battery_config.json编写定制的battery_config.json,包含定制后的充电类型配置如下:

    {"charger": {"type": {"path": "/data/service/el0/battery/charger_type"}}
    }
    
  4. 参考默认充电类型的配置文件夹中的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,以实现后续编译
    }
    
  5. 将编译目标添加到/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”为编译目标。

  6. 参考《快速入门》编译定制版本,编译命令如下:

    ./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
    
    1. 上报改变充电状态,触发映射
    hidumper -s 3302 -a -r
    
    1. 输出定制后的充电类型
    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

参考

开发过程中可参考的配置文件路径:充电类型的配置bundle.json

默认配置

```shell
{"charger": {"type": {"path": "/data/service/el0/battery/charger_type"}}
}
``` 

打包路径:/system/etc/battery

文章来源:https://blog.csdn.net/benco1986/article/details/146360250
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.ppmy.cn/embedded/176557.html

相关文章

『 C++ 』原生字符串:让字符串处理更轻松

文章目录 前言一、什么是原生字符串?二、原生字符串的优势2.1 无需转义特殊字符2.2 支持多行字符串2.3 使用原生字符串的注意事项 三、总结 前言 在C编程中,字符串是常用的数据类型之一,但处理包含特殊字符的字符串(如JSON、正则表…

dify1.1.1安装

1、 按照GitHub上操作 下载源码,没有安装git的,可以下载成zip包, unzip 解压 git clone https://github.com/langgenius/dify.git cd dify cd docker cp .env.example .env2、启动前 ,先改下 docker-compose.yaml,…

Python实现deepseek接口的调用

简介:DeepSeek 是一个强大的大语言模型,提供 API 接口供开发者调用。在 Python 中,可以使用 requests 或 httpx 库向 DeepSeek API 发送请求,实现文本生成、代码补全,知识问答等功能。本文将介绍如何在 Python 中调用 …

23种设计模式中的策略模式

在策略模式定义了一系列算法或策略,并将每个算法封装在独立的类中,使得它们可以互相替换。通过使用策略模式,可以在运行时根据需要选择不同的算法,而不需要修改客户端代码。 策略模式:Strategy。指的是,定义…

第四章 表单(2)- 输入组件

在 Blazor 框架中,微软对 HTML 输入元素进行了封装,称为输入组件。使用输入组件相较于原生 HTML 输入元素,在编码和安全性方面具有显著优势。 输入组件简介 Blazor框架提供了用于接收和验证用户输入的内置输入组件,这些组件可以…

vue java 实现大地图切片上传

文章目录 一、项目背景二、页面三、代码1.前端2.mock-i18n.js文件3.xx.js文件定义方法4.配置文件 application.properties5.后端方法 四、易错点易错点1:前端要进行分片切割,然后再分片上传。易错点2:后端配置文件要配置。易错点3&#xff1a…

如何在百度搜索上删除与自己名字相关的资料

个人信息的网络足迹如同一张无形的网,将我们与世界的每一个角落紧密相连。然而,当某些与自己名字相关的资料不再希望被公众轻易检索到时,如何在百度搜索中有效“隐身”,成为了一个亟待解决的问题。面对复杂多变的网络环境&#xf…

蓝桥杯,冬奥大抽奖

在日常的网页开发中,抽奖功能是一种常见的交互设计,它可以增加用户的参与感和趣味性。今天,我将分享一个简单的抽奖转盘实现,它使用了HTML、CSS和JavaScript,非常适合初学者学习和理解前端开发的基本概念。 一、项目背…