文件最后提交记录最后更新时间
1 个月前
9 个月前
4 年前
4 个月前
4 个月前
1 年前
1 年前
README

Battery

简介

该仓下主要包含Battery模块HDI(Hardware Driver Interface)接口定义及其实现,对上层系统服务提供电池管理驱动能力接口。Battery HDI接口主要包括以下几大类:

  • Battery Info:负责获取电池各种信息,包括电量、电压、温度、健康状态、充电状态等;
  • Battery Config:负责电池配置的管理,支持获取和设置电池配置项;
  • Callback:负责电池事件变化的回调通知。

目录

该仓下源代码目录结构如下所示:

/drivers/peripheral/battery
├── interfaces              # battery模块对上层服务提供的驱动能力接口
│   └── hdi_service        # hdi层框架代码
│       ├── include        # 头文件目录
│       ├── profile        # 配置文件
│       ├── src            # hdi层源代码
│       └── test           # 测试代码
│           ├── unittest   # 单元测试
│           ├── systemtest # 系统测试
│           └── fuzztest   # 模糊测试
└── utils                  # 工具类代码

接口说明

Battery驱动模块通过HDI层对上层系统服务提供接口,主要功能包括:获取电池信息、设置充电限制、电池配置管理等。提供的接口说明如表1 Battery HDI接口列表所示:

表 1 Battery HDI接口列表

头文件

接口名称

功能描述

v2_0/ibattery_interface.h

int32_t Register(const sptr& callback);

注册电池回调

int32_t UnRegister();

注销电池回调

int32_t ChangePath(const std::string& path);

更改电池路径

int32_t GetCapacity(int32_t& capacity);

获取电池电量

int32_t GetTotalEnergy(int32_t& totalEnergy);

获取电池总能量

int32_t GetCurrentAverage(int32_t& curAverage);

获取平均电流

int32_t GetCurrentNow(int32_t& curNow);

获取瞬时电流

int32_t GetRemainEnergy(int32_t& remainEnergy);

获取剩余能量

int32_t GetBatteryInfo(BatteryInfo& info);

获取电池信息

int32_t GetVoltage(int32_t& voltage);

获取电池电压

int32_t GetTemperature(int32_t& temperature);

获取电池温度

int32_t GetHealthState(BatteryHealthState& healthState);

获取电池健康状态

int32_t GetPluggedType(BatteryPluggedType& pluggedType);

获取插入类型

int32_t GetChargeState(BatteryChargeState& chargeState);

获取充电状态

int32_t GetPresent(bool& present);

获取电池是否存在

int32_t GetTechnology(std::string& technology);

获取电池技术

int32_t SetChargingLimit(const std::vector& chargingLimit);

设置充电限制

int32_t GetChargeType(ChargeType& chargeType);

获取充电类型

int32_t SetBatteryConfig(const std::string& sceneName, const std::string& value);

设置电池配置

int32_t GetBatteryConfig(const std::string& sceneName, std::string& value);

获取电池配置

int32_t IsBatteryConfigSupported(const std::string& sceneName, bool& value);

检查电池配置是否支持

使用说明

该仓核心功能是提供电池管理驱动能力接口供上层系统服务调用,提供的驱动能力接口统一归属为HDI接口层。

通过如下简要示例代码说明Battery HDI接口的使用:

#include "v2_0/ibattery_interface.h"
#include "battery_hdi_client.h"

using namespace OHOS::HDI::Battery::V2_0;

class BatteryCallbackImpl : public IBatteryCallback {
public:
    int32_t OnBatteryCallback(const BatteryInfo& event) override
    {
        HDF_LOGI("BatteryCallback: capacity=%{public}d, voltage=%{public}d, temperature=%{public}d", 
                 event.capacity, event.voltage, event.temperature);
        return 0;
    }
};

static int32_t BatteryHdiSample(void)
{
    int32_t ret;
    sptr<IBatteryInterface> g_batteryInterface = BatteryHdiClient::GetInstance();

    if (g_batteryInterface == nullptr) {
        HDF_LOGE("get battery interface failed");
        return HDF_FAILURE;
    }

    // 注册电池回调
    sptr<IBatteryCallback> callback = new (std::nothrow) BatteryCallbackImpl();
    ret = g_batteryInterface->Register(callback);
    if (ret != HDF_SUCCESS) {
        HDF_LOGE("register battery callback failed");
        return ret;
    }

    // 获取电池电量
    int32_t capacity;
    ret = g_batteryInterface->GetCapacity(capacity);
    if (ret != HDF_SUCCESS) {
        HDF_LOGE("get capacity failed");
        return ret;
    }

    // 获取电池电压
    int32_t voltage;
    ret = g_batteryInterface->GetVoltage(voltage);
    if (ret != HDF_SUCCESS) {
        HDF_LOGE("get voltage failed");
        return ret;
    }

    // 获取电池温度
    int32_t temperature;
    ret = g_batteryInterface->GetTemperature(temperature);
    if (ret != HDF_SUCCESS) {
        HDF_LOGE("get temperature failed");
        return ret;
    }

    // 获取健康状态
    BatteryHealthState healthState;
    ret = g_batteryInterface->GetHealthState(healthState);
    if (ret != HDF_SUCCESS) {
        HDF_LOGE("get health state failed");
        return ret;
    }

    // 获取充电状态
    BatteryChargeState chargeState;
    ret = g_batteryInterface->GetChargeState(chargeState);
    if (ret != HDF_SUCCESS) {
        HDF_LOGE("get charge state failed");
        return ret;
    }

    // 获取电池是否存在
    bool present;
    ret = g_batteryInterface->GetPresent(present);
    if (ret != HDF_SUCCESS) {
        HDF_LOGE("get present failed");
        return ret;
    }

    // 获取电池技术
    std::string technology;
    ret = g_batteryInterface->GetTechnology(technology);
    if (ret != HDF_SUCCESS) {
        HDF_LOGE("get technology failed");
        return ret;
    }

    // 获取充电类型
    ChargeType chargeType;
    ret = g_batteryInterface->GetChargeType(chargeType);
    if (ret != HDF_SUCCESS) {
        HDF_LOGE("get charge type failed");
        return ret;
    }

    // 获取平均电流
    int32_t curAverage;
    ret = g_batteryInterface->GetCurrentAverage(curAverage);
    if (ret != HDF_SUCCESS) {
        HDF_LOGE("get current average failed");
        return ret;
    }

    // 获取瞬时电流
    int32_t curNow;
    ret = g_batteryInterface->GetCurrentNow(curNow);
    if (ret != HDF_SUCCESS) {
        HDF_LOGE("get current now failed");
        return ret;
    }

    // 获取电池信息
    BatteryInfo info;
    ret = g_batteryInterface->GetBatteryInfo(info);
    if (ret != HDF_SUCCESS) {
        HDF_LOGE("get battery info failed");
        return ret;
    }

    // 获取电池配置
    std::string value;
    ret = g_batteryInterface->GetBatteryConfig("scene_name", value);
    if (ret != HDF_SUCCESS) {
        HDF_LOGE("get battery config failed");
        return ret;
    }

    // 设置电池配置
    ret = g_batteryInterface->SetBatteryConfig("scene_name", "value");
    if (ret != HDF_SUCCESS) {
        HDF_LOGE("set battery config failed");
        return ret;
    }

    // 检查电池配置是否支持
    bool isSupported;
    ret = g_batteryInterface->IsBatteryConfigSupported("scene_name", isSupported);
    if (ret != HDF_SUCCESS) {
        HDF_LOGE("check battery config supported failed");
        return ret;
    }

    // 注销电池回调
    ret = g_batteryInterface->UnRegister();
    if (ret != HDF_SUCCESS) {
        HDF_LOGE("unregister battery callback failed");
        return ret;
    }

    return HDF_SUCCESS;
}

相关仓

驱动子系统

drivers_framework

drivers_adapter

drivers_interface

drivers_peripheral