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

news2025/3/26 3:07:39

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.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的"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.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的"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

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

hive 数据简介

Hive介绍 1)Hive简介 Hive是基于Hadoop的一个数据仓库工具,用于结构化数据的查询、分析和汇总。Hive提供类SQL查询功能,它将SQL转换为MapReduce程序。 Hive不支持OLTP,Hive无法提供实时查询。 2)Hive在大数据生态环境…

Win32桌面编程:ACLUI.DLL,EditSecurity(IntPtr hwndOwner, ISecurityInformation psi)

在Windows编程中,我们通常需要借助通用对话框的力量,今天我们就聊一下“安全属性表”通用对话框的使用心得。 当我们调用EditSecurity函数时: 1.EditSecurity将调用ISecurityInformation中的GetObjectInformation函数 在编写 ISecurityInf…

数据分析异步进阶:aiohttp与Asyncio性能提升

一、时间轴呈现方案进程 2023-04-01:需求确认 确定目标:使用aiohttp与Asyncio提升采集性能,目标采集今日头条网站的新闻数据(标题、内容、时间等)。同时要求在程序中加入代理IP、Cookie和UserAgent的设置,…

《AI大模型趣味实战 》第8集:多端适配 个人新闻头条 基于大模型和RSS聚合打造个人新闻电台(Flask WEB版) 2

《AI大模型趣味实战 》第8集:多端适配 个人新闻头条 基于大模型和RSS聚合打造个人新闻电台(Flask WEB版) 2 摘要 本文末尾介绍了如何实现新闻智能体的方法。在信息爆炸的时代,如何高效获取和筛选感兴趣的新闻内容成为一个现实问题。本文将带领读者通过P…

低配电脑畅玩《怪物猎人:荒野》,ToDesk云电脑优化从30帧到144帧?

《怪物猎人:荒野(Monster Hunter Wilds)》自2025年正式发售以来已取得相当亮眼的成绩,仅用三天时间便轻松突破800万销量,目前顺利蝉联周榜冠军;凭借着开放世界的宏大场景和丰富的狩猎玩法,该游戏…

【js逆向入门】图灵爬虫练习平台 第九题

地址:aHR0cHM6Ly9zdHUudHVsaW5ncHl0b24uY24vcHJvYmxlbS1kZXRhaWwvOS8 f12进入了debugger,右击选择一律不在此处暂停, 点击继续执行 查看请求信息 查看载荷,2个加密参数,m和tt 查看启动器,打上断点 进来 往…

NET6 WebApi第5讲:中间件(源码理解,俄罗斯套娃怎么来的?);Web 服务器 (Nginx / IIS / Kestrel)、WSL、SSL/TSL

一、NET6的启动流程 区别: .NET6 WebApi第1讲:VSCode开发.NET项目、区别.NET5框架【两个框架启动流程详解】_vscode webapi-CSDN博客 2、WebApplicationBuilder:是NET6引入的一个类,是建造者模式的典型应用 1>建造者模式的…

Nginx及前端部署全流程:初始化配置到生产环境部署(附Nginx常用命令)

nginx&前端从初始化配置到部署(xshell) 前言下载nginx前端打包与创建具体文件夹路径配置nginx.nginx.conf文件配置项内容 配置nginx.service文件配置项内容 启动nginx常用nginx命令 前言 目标:在xshell中部署前端包。 第一步&#xff1a…

python 实现一个简单的window 任务管理器

import tkinter as tk from tkinter import ttk import psutil# 运行此代码前,请确保已经安装了 psutil 库,可以使用 pip install psutil 进行安装。 # 由于获取进程信息可能会受到权限限制,某些进程的信息可能无法获取,代码中已经…

【xiaozhi赎回之路-2:语音可以自己配置就是用GPT本地API】

固件作用 打通了网络和硬件的沟通 修改固件实现【改变连接到小智服务器的】 回答逻辑LLM自定义 自定义了Coze(比较高级,自定义程度比较高,包括知识库,虚拟脚色-恋人-雅思老师-娃娃玩具{可能需要使用显卡对开源模型进行微调-产…

WX小程序

下载 package com.sky.utils;import com.alibaba.fastjson.JSONObject; import org.apache.http.NameValuePair; import org.apache.http.client.config.RequestConfig; import org.apache.http.client.entity.UrlEncodedFormEntity; import org.apache.http.client.methods.Cl…

Spring boot 3.4 后 SDK 升级,暨 UI API/MCP 计划

PS 写这篇文章后看到 A Deep Dive Into MCP and the Future of AI Tooling | Andreessen HorowitzWe explore what MCP is, how it changes the way AI interacts with tools, what developers are already building, and the challenges that still need solving. https://a1…

Linux下JDK1.8安装配置

目录 1.下载完上传到Linux系统中 2.解压JDK压缩包 3.配置JDK环境变量 4.设置环境变量生效 5.查看环境变量是否配置成功 官网下载地址:Java Downloads | Oracle 1.下载完上传到Linux系统中 2.解压JDK压缩包 tar -zxvf jdk-8u151-linux-x64.tar.gz -C /usr/local (解压…

Python OCR文本识别详细步骤及代码示例

光学字符识别(OCR)是将图像中的文字转换为可编辑文本的技术。在Python中,我们可以利用多种库实现OCR功能。本文将详细介绍使用Tesseract和EasyOCR进行文本识别的步骤,并提供完整的代码示例。 一、OCR简介 OCR(Optical…

Linux固定IP方法(RedHat+Net模式)

1、查看当前网关 ip route | grep default 2、配置静态IP 双击重启 3、验证

210、【图论】课程表(Python)

题目 思路 这道题本质上是一个拓扑排序。每次先统计每个点的入度个数、然后再统计点与点之间的邻接关系,找到入度为0的点作为起始遍历点。之后每遍历到这个点之后,就把这个点后续的邻接关系边的点入度减去一。当某个点入度为0时,继续被加入其…

跟着StatQuest学知识07-张量与PyTorch

一、张量tensor 张量重新命名一些数据概念,存储数据以及权重和偏置。 张量还允许与数据相关的数学计算能够相对快速的完成。 通常,张量及其进行的数学计算会通过成为图形处理单元(GPUs)的特殊芯片来加速。但还有张量处理单元&am…

前端字段名和后端不一致?解锁 JSON 映射的“隐藏规则” !!!

🚀 前端字段名和后端不一致?解锁 JSON 映射的“隐藏规则” 🌟 嘿,技术冒险家们!👋 今天我们要聊一个开发中常见的“坑”:前端传来的 JSON 参数字段名和后端对象字段名不一致,会发生…

基于springboot的新闻推荐系统(045)

摘要 随着信息互联网购物的飞速发展,国内放开了自媒体的政策,一般企业都开始开发属于自己内容分发平台的网站。本文介绍了新闻推荐系统的开发全过程。通过分析企业对于新闻推荐系统的需求,创建了一个计算机管理新闻推荐系统的方案。文章介绍了…

2024年数维杯数学建模C题天然气水合物资源量评价解题全过程论文及程序

2024年数维杯数学建模 C题 天然气水合物资源量评价 原题再现: 天然气水合物(Natural Gas Hydrate/Gas Hydrate)即可燃冰,是天然气与水在高压低温条件下形成的类冰状结晶物质,因其外观像冰,遇火即燃&#…