| 文件 | 最后提交记录 | 最后更新时间 |
|---|---|---|
| 1 个月前 | ||
| 9 个月前 | ||
| 4 年前 | ||
| 4 个月前 | ||
| 4 个月前 | ||
| 1 年前 | ||
| 1 年前 |
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接口列表
使用说明
该仓核心功能是提供电池管理驱动能力接口供上层系统服务调用,提供的驱动能力接口统一归属为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;
}