未验证 提交 8655fd36 编写于 作者: K king_he 提交者: Gitee

update zh-cn/device-dev/driver/driver-peripherals-light-des.md.

Signed-off-by: Nking_he <6384784@qq.com>
上级 1c663a96
# LIGHT
# Light
## 概述
### 功能简介
Light驱动模型为上层Light硬件服务层提供稳定的灯控制能力接口,包括获取灯类型、配置点灯模式、配置灯闪烁效果、点灯、熄灯等。基于HDF(Hardware Driver Foundation)驱动框架开发的Light驱动模型,实现跨操作系统迁移,器件差异配置等功能。实现Light驱动“一次开发,多系统部署”的目标。Light驱动模型如图1示:
Light驱动模型为上层Light硬件服务层提供稳定的灯控制能力接口,包括获取灯类型、配置点灯模式、配置灯闪烁效果、点灯、熄灯等。基于HDF(Hardware Driver Foundation)驱动框架开发的Light驱动模型,实现跨操作系统迁移,器件差异配置等功能。实现Light驱动“一次开发,多系统部署”的目标。Light驱动模型如图1示:
**图 1** Light驱动模型图
......@@ -21,8 +21,8 @@
Light驱动模型以标准系统Hi3516DV300为例,介绍整个驱动加载及运行流程:
1. 从device info HCS 的Light Host里读取Light设备管理配置信息。
2. 从light_config HCS读取Light数据配置信息。
1. 从device_info.hcs配置文件的Light Host里读取Light设备管理配置信息。
2. 从light_config.hcs配置文件读取Light数据配置信息。
3. 解析Light设备管理配置信息,并关联对应设备驱动。
4. 客户端下发Light Stub控制到服务端。
5. 服务端调用Light Stub控制。
......@@ -36,7 +36,7 @@ Light驱动模型以标准系统Hi3516DV300为例,介绍整个驱动加载及
### 接口说明
Light驱动模型支持获取系统中所有灯的信息,动态配置闪烁模式和闪烁时间的能力。Light硬件服务调用GetLightInfo获取Light设备的基本信息;调用TurnOnLight接口启动配置的闪烁效果。Light驱动模型对外开放的API接口能力,参考表1。
Light驱动模型支持获取系统中所有灯的信息,动态配置闪烁模式和闪烁时间的能力。Light Hardware服务调用GetLightInfo获取Light设备的基本信息;调用TurnOnLight接口启动配置的闪烁效果。Light驱动模型对外开放的API接口能力,参考表1。
**表1** Light驱动模型对外API接口能力介绍
......@@ -47,10 +47,10 @@ Light驱动模型支持获取系统中所有灯的信息,动态配置闪烁模
| int32_t (*TurnOffLight)(uint32_t type) | 根据指定的灯类型关闭灯列表中可用的灯。 |
### 开发步骤
1. 基于HDF驱动框架,按照驱动Driver Entry程序,完成Light抽象驱动开发(主要由Bind、Init、Release、Dispatch函数接口实现),资源配置及HCS解析。完成Light驱动的设备信息配置。
1. 基于HDF驱动框架,按照驱动Driver Entry程序,完成Light抽象驱动开发(主要由Bind、Init、Release、Dispatch函数接口实现),资源配置及HCS配置文件解析。完成Light驱动的设备信息配置。
- 调用HDF_INIT将驱动入口注册到HDF框架中。在加载驱动时HDF框架会先调用Bind函数,再调用Init函数加载该驱动。当Init调用异常时,HDF框架会调用Release释放驱动资源并退出。
Light驱动模型使用HCS作为配置描述源码,HCS配置字段详细介绍请参考[配置管理](https://gitee.com/openharmony/docs/blob/master/zh-cn/device-dev/driver/driver-hdf-manage.md)
Light驱动模型使用HCS配置文件作为配置描述源码。HCS配置字段详细介绍请参考[配置管理](https://gitee.com/openharmony/docs/blob/master/zh-cn/device-dev/driver/driver-hdf-manage.md)
其Driver Entry入口函数定义如下:
```c
......@@ -153,15 +153,15 @@ Light驱动模型支持获取系统中所有灯的信息,动态配置闪烁模
}
```
- Light设备管理模块负责系统中Light器件接口发布,在系统启动过程中,HDF框架机制通过灯Host里设备HCS配置信息,加载设备管理驱动。
- Light设备管理模块负责系统中Light器件接口发布。在系统启动过程中,HDF框架机制通过Light Host里设备HCS配置信息,加载设备管理驱动。
```
/* 设备HCS配置 */
/* Light设备HCS配置 */
device_light :: device {
device0 :: deviceNode {
policy = 2; // 驱动服务发布的策略(0:不提供服务,1:对内核态发布服务2:对内核态和用户态都发布服务)
policy = 2; // 驱动服务发布的策略(0:不提供服务,1:对内核态发布服务2:对内核态和用户态都发布服务)
priority = 100; // Light驱动启动优先级(0-200),值越大优先级越低,建议配置为100,优先级相同则不保证device的加载顺序
preload = 0; // 驱动按需加载字段,0表示加载,2表示不加载
preload = 0; // 驱动按需加载字段,0:加载;2:不加载
permission = 0664; // 驱动创建设备节点权限
moduleName = "HDF_LIGHT"; // Light驱动名称,该字段的值必须和驱动入口结构的moduleName值一致
serviceName = "hdf_light"; // Light驱动对外发布服务的名称,必须唯一
......@@ -176,11 +176,11 @@ Light驱动模型支持获取系统中所有灯的信息,动态配置闪烁模
static int32_t ParseLightInfo(const struct DeviceResourceNode *node)
{
.....
/* 从HCS获取支持灯的类型个数 */
/* 从HCS配置获取支持灯的类型个数 */
drvData->lightNum = parser->GetElemNum(light, "lightType");
....
for (i = 0; i < drvData->lightNum; ++i) {
/* 获取类型 */
/* 获取灯的类型 */
ret = parser->GetUint32ArrayElem(light, "lightType", i, &temp, 0);
CHECK_LIGHT_PARSER_RESULT_RETURN_VALUE(ret, "lightType");
}
......@@ -210,7 +210,7 @@ Light驱动模型支持获取系统中所有灯的信息,动态配置闪烁模
static int32_t GetAllLightInfo(struct HdfSBuf *data, struct HdfSBuf *reply)
{
.....
/* 获取Light类型个数 */
/* 获取灯的类型个数 */
if (!HdfSbufWriteUint32(reply, drvData->lightNum)) {
HDF_LOGE("%s: write sbuf failed", __func__);
return HDF_FAILURE;
......@@ -253,7 +253,7 @@ Light驱动模型支持获取系统中所有灯的信息,动态配置闪烁模
/* 闪烁模式 */
if (buf->flashEffect.flashMode == LIGHT_FLASH_TIMED) {
drvData->info[lightType]->lightState = LIGHT_STATE_START;
/* 用户设置的闪烁时间小于系统支持的最短时间,采用系统配置的时间(HCS配置) */
/* 用户设置的闪烁时间小于系统支持的最短时间,采用系统配置的时间(HCS配置) */
drvData->info[lightType]->onTime = buf->flashEffect.onTime < drvData->info[lightType]->onTime ?
drvData->info[lightType]->onTime : buf->flashEffect.onTime;
drvData->info[lightType]->offTime = buf->flashEffect.offTime < drvData->info[lightType]->offTime ?
......@@ -298,7 +298,7 @@ Light驱动模型支持获取系统中所有灯的信息,动态配置闪烁模
驱动开发完成后,在灯单元测试里面开发自测试用例,验证驱动基本功能。测试环境采用开发者自测试平台。
```c++
/* 用例执行前,初始化接口实例 */
/* 用例执行前,初始化Light接口实例 */
void HdfLightTest::SetUpTestCase()
{
g_lightDev = NewLightInterfaceInstance();
......@@ -320,7 +320,7 @@ void HdfLightTest::TearDownTestCase()
}
}
/* 测试灯获取类型 */
/* 获取测试灯类型 */
HWTEST_F(HdfLightTest, GetLightList001, TestSize.Level1)
{
struct LightInfo *info = nullptr;
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册