Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
OpenHarmony
Docs
提交
8655fd36
D
Docs
项目概览
OpenHarmony
/
Docs
1 年多 前同步成功
通知
159
Star
292
Fork
28
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
0
列表
看板
标记
里程碑
合并请求
0
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
D
Docs
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
0
Issue
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
提交
Issue看板
未验证
提交
8655fd36
编写于
5月 13, 2022
作者:
K
king_he
提交者:
Gitee
5月 13, 2022
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
update zh-cn/device-dev/driver/driver-peripherals-light-des.md.
Signed-off-by:
N
king_he
<
6384784@qq.com
>
上级
1c663a96
变更
1
隐藏空白更改
内联
并排
Showing
1 changed file
with
17 addition
and
17 deletion
+17
-17
zh-cn/device-dev/driver/driver-peripherals-light-des.md
zh-cn/device-dev/driver/driver-peripherals-light-des.md
+17
-17
未找到文件。
zh-cn/device-dev/driver/driver-peripherals-light-des.md
浏览文件 @
8655fd36
# L
IGHT
# L
ight
## 概述
### 功能简介
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.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录