未验证 提交 5241b375 编写于 作者: O openharmony_ci 提交者: Gitee

!1670 modify sensor/vibrator des

Merge pull request !1670 from sunxuejiao/master
...@@ -15,7 +15,7 @@ ...@@ -15,7 +15,7 @@
### 功能简介 ### 功能简介
Sensor设备作为外接设备重要组成模块,通过Sensor驱动模型屏蔽硬件器件差异,为上层Sensor服务系统提供稳定的Sensor基础能力接口,包括Sensor列表查询、Sensor启停、Sensor订阅及取消订阅,Sensor参数配置等功能;Sensor设备驱动的开发是基于HDF驱动框架基础上,结合操作系统适配层(OSAL)和平台驱动接口(比如I2C/SPI/UART总线等平台资源)能力,屏蔽不同操作系统和平台总线资源差异,实现Sensor驱动“一次开发,多系统部署”的目标。Sensor驱动模型如[图1](#fig10451455446)所示:<a name="section3634112111"></a> Sensor驱动模型屏蔽硬件器件差异,为上层Sensor服务系统提供稳定的Sensor基础能力接口,包括Sensor列表查询、Sensor启停、Sensor订阅及取消订阅,Sensor参数配置等功能;Sensor设备驱动的开发是基于HDF驱动框架基础上,结合操作系统适配层(OSAL)和平台驱动接口(比如I2C/SPI/UART总线等平台资源)能力,屏蔽不同操作系统和平台总线资源差异,实现Sensor驱动“一次开发,多系统部署”的目标。Sensor驱动模型如[图1](#fig10451455446)所示:<a name="section3634112111"></a>
**图 1** Sensor驱动模型图<a name="fig10451455446"></a> **图 1** Sensor驱动模型图<a name="fig10451455446"></a>
![Sensor驱动模型图](figures/Sensor%E9%A9%B1%E5%8A%A8%E6%A8%A1%E5%9E%8B%E5%9B%BE.png) ![Sensor驱动模型图](figures/Sensor%E9%A9%B1%E5%8A%A8%E6%A8%A1%E5%9E%8B%E5%9B%BE.png)
...@@ -24,9 +24,9 @@ Sensor设备作为外接设备重要组成模块,通过Sensor驱动模型屏 ...@@ -24,9 +24,9 @@ Sensor设备作为外接设备重要组成模块,通过Sensor驱动模型屏
通过介绍Sensor驱动模型的加载以及运行流程,对模型内部关键组件以及关联组件之间的关系进行了划分,整体加载流程如[图2](#Sensor驱动模型图)所示: 通过介绍Sensor驱动模型的加载以及运行流程,对模型内部关键组件以及关联组件之间的关系进行了划分,整体加载流程如[图2](#Sensor驱动模型图)所示:
**图 2** Sensor驱动模型运行图 **图 2** Sensor驱动运行图
![Sensor驱动模型运行图](figures/Sensor%E9%A9%B1%E5%8A%A8%E6%A8%A1%E5%9E%8B%E8%BF%90%E8%A1%8C%E5%9B%BE.png) ![Sensor驱动运行图](figures/Sensor%E9%A9%B1%E5%8A%A8%E8%BF%90%E8%A1%8C%E5%9B%BE.png)
Sensor驱动模型以标准系统Hi3516DV300产品中的加速度传感器驱动为例,介绍整个驱动加载及运行流程: Sensor驱动模型以标准系统Hi3516DV300产品中的加速度传感器驱动为例,介绍整个驱动加载及运行流程:
...@@ -249,6 +249,7 @@ Sensor驱动模型要求驱动开发者实现的接口功能,参考[表3](#tab ...@@ -249,6 +249,7 @@ Sensor驱动模型要求驱动开发者实现的接口功能,参考[表3](#tab
</tr> </tr>
</tbody> </tbody>
</table> </table>
接口实现参考[开发实例](#section257750691)章节。 接口实现参考[开发实例](#section257750691)章节。
### 开发步骤<a name="section7893102915819"></a> ### 开发步骤<a name="section7893102915819"></a>
...@@ -438,7 +439,7 @@ Sensor驱动模型要求驱动开发者实现的接口功能,参考[表3](#tab ...@@ -438,7 +439,7 @@ Sensor驱动模型要求驱动开发者实现的接口功能,参考[表3](#tab
return HDF_SUCCESS; return HDF_SUCCESS;
} }
/* 挂载加速度计传感器驱动归一化的接口函数 */ /* 注册加速度计传感器驱动归一化的接口函数 */
static int32_t InitAccelOps(struct SensorCfgData *config, struct SensorDeviceInfo *deviceInfo) static int32_t InitAccelOps(struct SensorCfgData *config, struct SensorDeviceInfo *deviceInfo)
{ {
CHECK_NULL_PTR_RETURN_VALUE(config, HDF_ERR_INVALID_PARAM); CHECK_NULL_PTR_RETURN_VALUE(config, HDF_ERR_INVALID_PARAM);
...@@ -513,7 +514,7 @@ Sensor驱动模型要求驱动开发者实现的接口功能,参考[表3](#tab ...@@ -513,7 +514,7 @@ Sensor驱动模型要求驱动开发者实现的接口功能,参考[表3](#tab
return drvData->accelCfg; return drvData->accelCfg;
…… ……
} }
/* 加速度计传感器驱动初始化入口函数,主要功能为对传感器私有数据的结构体对象进行初始化,传感器HCS数据配置对象空间分配,传感器HCS数据配置初始化入口函数调用,传感器设备探测是否在位功能,传感器数据上报定时器创建,传感器归一化接口挂载,传感器设备注册功能 */ /* 加速度计传感器驱动初始化入口函数,主要功能为对传感器私有数据的结构体对象进行初始化,传感器HCS数据配置对象空间分配,传感器HCS数据配置初始化入口函数调用,传感器设备探测是否在位功能,传感器数据上报定时器创建,传感器归一化接口注册,传感器设备注册功能 */
int32_t InitAccelDriver(struct HdfDeviceObject *device) int32_t InitAccelDriver(struct HdfDeviceObject *device)
{ {
int32_t AccelInitDriver(struct HdfDeviceObject *device) int32_t AccelInitDriver(struct HdfDeviceObject *device)
...@@ -530,7 +531,7 @@ Sensor驱动模型要求驱动开发者实现的接口功能,参考[表3](#tab ...@@ -530,7 +531,7 @@ Sensor驱动模型要求驱动开发者实现的接口功能,参考[表3](#tab
HDF_LOGE("%s: Malloc accel config data failed", __func__); HDF_LOGE("%s: Malloc accel config data failed", __func__);
return HDF_FAILURE; return HDF_FAILURE;
} }
/* 挂接寄存器分组信息 */ /* 注册寄存器分组信息 */
drvData->accelCfg->regCfgGroup = &g_regCfgGroup[0]; drvData->accelCfg->regCfgGroup = &g_regCfgGroup[0];
…… ……
return HDF_SUCCESS; return HDF_SUCCESS;
...@@ -557,7 +558,7 @@ Sensor驱动模型要求驱动开发者实现的接口功能,参考[表3](#tab ...@@ -557,7 +558,7 @@ Sensor驱动模型要求驱动开发者实现的接口功能,参考[表3](#tab
4. 加速度传感器差异化驱动私有HCS配置实现 4. 加速度传感器差异化驱动私有HCS配置实现
- 为了方便开发者使用传感器HCS私有配置,在sensor_common.hcs里面定义通用的传感器配置模板,加速度传感器直接引用模板修改对应的属性值即可 - 为了方便开发者使用传感器HCS私有配置,在sensor_common.hcs里面定义通用的传感器配置模板。
``` ```
accel sensor common config template accel sensor common config template
...@@ -595,7 +596,7 @@ Sensor驱动模型要求驱动开发者实现的接口功能,参考[表3](#tab ...@@ -595,7 +596,7 @@ Sensor驱动模型要求驱动开发者实现的接口功能,参考[表3](#tab
} }
``` ```
- 开发者使用传感器HCS配置,在accel_config.hcs里面配置通用的传感器模板,加速度传感器直接引用模板并修改对应的属性值,在此基础上新增寄存器配置,生成accel_bmi160_config.hcs配置文件 - 开发者配置accel_bmi160_config.hcs文件时,引用加速度传感器的模板,并根据需要修改模板中继承的字段。如果需要新增寄存器配置字段,在配置传感器HCS后扩展
``` ```
/* 根据不同器件硬件差异,修改模板配置,不修改的就会默认采用模板配置 */ /* 根据不同器件硬件差异,修改模板配置,不修改的就会默认采用模板配置 */
...@@ -612,7 +613,7 @@ Sensor驱动模型要求驱动开发者实现的接口功能,参考[表3](#tab ...@@ -612,7 +613,7 @@ Sensor驱动模型要求驱动开发者实现的接口功能,参考[表3](#tab
busType = 0; // 0:i2c 1:spi busType = 0; // 0:i2c 1:spi
busNum = 6; busNum = 6;
busAddr = 0x68; busAddr = 0x68;
regWidth = 1; // 1btye regWidth = 1; // 1 btye
} }
sensorIdAttr :: sensorIdInfo{ sensorIdAttr :: sensorIdInfo{
chipName = "bmi160"; chipName = "bmi160";
...@@ -711,7 +712,7 @@ Sensor驱动模型要求驱动开发者实现的接口功能,参考[表3](#tab ...@@ -711,7 +712,7 @@ Sensor驱动模型要求驱动开发者实现的接口功能,参考[表3](#tab
HDF_LOGE("%s: Register BMI160 accel failed", __func__); HDF_LOGE("%s: Register BMI160 accel failed", __func__);
return HDF_FAILURE; return HDF_FAILURE;
} }
/* 初始化器件配置 * /* 初始化器件配置 */
ret = InitBmi160(drvData->sensorCfg); ret = InitBmi160(drvData->sensorCfg);
if (ret != HDF_SUCCESS) { if (ret != HDF_SUCCESS) {
HDF_LOGE("%s: Init BMI160 accel failed", __func__); HDF_LOGE("%s: Init BMI160 accel failed", __func__);
......
...@@ -11,11 +11,11 @@ ...@@ -11,11 +11,11 @@
### 功能简介 ### 功能简介
为了快速开发传感器驱动,基于HDF(Hardware Driver Foundation)驱动框架开发了马达驱动模型。马达设备模型抽象,屏蔽设备驱动与系统交互的实现,为硬件服务层提供统一稳定的驱动接口能力,为驱动开发者提供开放的接口实现和抽象的配置接口能力。用于不同操作系统马达设备部件的部署指导和马达设备部件驱动的开发。马达驱动模型如[图1](马达驱动模型图)所示: 为了快速开发传感器驱动,基于HDF(Hardware Driver Foundation)驱动框架开发了马达驱动模型。马达驱动模型,屏蔽设备驱动与系统交互的实现,为硬件服务层提供统一稳定的驱动接口能力,为驱动开发者提供开放的接口和解析接口的能力。用于不同操作系统马达设备部件的部署指导和马达设备部件驱动的开发。马达驱动模型如[图1](马达驱动模型图)所示:
**图 1** 马达驱动模型图 **图 1** 马达驱动模型图
![Vibrator驱动模型](figures/Vibrator%E9%A9%B1%E5%8A%A8%E6%A8%A1%E5%9E%8B.png) ![Vibrator驱动模型](figures/Vibrator%E9%A9%B1%E5%8A%A8%E6%A8%A1%E5%9E%8B%E5%9B%BE.png)
### 运作机制 ### 运作机制
...@@ -28,12 +28,12 @@ ...@@ -28,12 +28,12 @@
马达驱动模型以标准系统Hi3516DV300产品为例,介绍整个驱动加载及运行流程: 马达驱动模型以标准系统Hi3516DV300产品为例,介绍整个驱动加载及运行流程:
1. 从device info HCS 的Vibrator Host读取Vibrator管理配置信息。 1. 从device info HCS 的Vibrator Host读取Vibrator管理配置信息。
2. 解析Vibrator配置信息,并关联对应设备驱动。 2. 解析Vibrator管理配置信息,并关联对应马达抽象驱动。
3. 从linear_vibrator_config HCS读取Vibrator数据配置信息。 3. 从linear_vibrator_config HCS读取Vibrator数据配置信息。
4. 解析Vibrator数据配置信息,并关联对应Haptic驱动。 4. 解析Vibrator数据配置信息,并关联对应Haptic驱动。
5. 客户端下发Vibrator Stub控制到服务端。 5. 客户端下发Vibrator Stub控制到服务端。
6. 服务端调用Vibrator Stub控制 6. Vibrator Stub控制调用马达服务
7. 启动马达抽象驱动接口。 7. 初始化马达抽象驱动接口。
8. Haptic中起线程,解析效果模块。 8. Haptic中起线程,解析效果模块。
9. Haptic调用马达抽象驱动中的Start接口。 9. Haptic调用马达抽象驱动中的Start接口。
10. 马达抽象驱动调用马达差异化驱动中的Start接口。 10. 马达抽象驱动调用马达差异化驱动中的Start接口。
...@@ -143,7 +143,7 @@ Vibrator驱动模型为上层马达硬件服务层提供稳定的马达控制能 ...@@ -143,7 +143,7 @@ Vibrator驱动模型为上层马达硬件服务层提供稳定的马达控制能
} }
``` ```
- 马达设备管理模块负责系统中马达器件接口发布,在系统启动过程中,HDF框架机制通过马达 Host里设备HCS配置信息,加载设备管理驱动 - 在系统启动过程中,HDF设备管理模块通过设备HCS配置信息,加载马达抽象驱动,并对外发布马达驱动接口
``` ```
/* 马达设备HCS配置 */ /* 马达设备HCS配置 */
...@@ -167,7 +167,7 @@ Vibrator驱动模型为上层马达硬件服务层提供稳定的马达控制能 ...@@ -167,7 +167,7 @@ Vibrator驱动模型为上层马达硬件服务层提供稳定的马达控制能
- 创建马达效果模型。 - 创建马达效果模型。
``` ```
/* 创建马达效果模型,分配资源,解析马达HCS配置 */ /* 创建马达效果模型,分配资源,解析马达效果HCS配置 */
int32_t CreateVibratorHaptic(struct HdfDeviceObject *device) int32_t CreateVibratorHaptic(struct HdfDeviceObject *device)
{ {
struct VibratorHapticData *hapticData = NULL; struct VibratorHapticData *hapticData = NULL;
...@@ -245,7 +245,7 @@ Vibrator驱动模型为上层马达硬件服务层提供稳定的马达控制能 ...@@ -245,7 +245,7 @@ Vibrator驱动模型为上层马达硬件服务层提供稳定的马达控制能
config.cfgMode = VIBRATOR_MODE_ONCE; config.cfgMode = VIBRATOR_MODE_ONCE;
config.duration = duration; config.duration = duration;
config.effect = NULL; config.effect = NULL;
/* 据振动效果的模式创建 */ /* 根据振动效果的模式创建定时器 */
ret = StartHaptic(&config); ret = StartHaptic(&config);
if (ret != HDF_SUCCESS) { if (ret != HDF_SUCCESS) {
HDF_LOGE("%s: start haptic fail!", __func__); HDF_LOGE("%s: start haptic fail!", __func__);
...@@ -302,7 +302,7 @@ Vibrator驱动模型为上层马达硬件服务层提供稳定的马达控制能 ...@@ -302,7 +302,7 @@ Vibrator驱动模型为上层马达硬件服务层提供稳定的马达控制能
4. 马达驱动模型提供给开发者马达驱动差异化接口,开发者实现差异化接口。 4. 马达驱动模型提供给开发者马达驱动差异化接口,开发者实现差异化接口。
- 此接口在差异化器件驱动初始化成功时,注册差异实现接口,方便实现器件差异的驱动接口。 - 在差异化器件驱动初始化成功时,注册差异实现接口,方便实现器件差异的驱动接口。
``` ```
/* 注册马达差异化实现接口 */ /* 注册马达差异化实现接口 */
...@@ -326,7 +326,7 @@ Vibrator驱动模型为上层马达硬件服务层提供稳定的马达控制能 ...@@ -326,7 +326,7 @@ Vibrator驱动模型为上层马达硬件服务层提供稳定的马达控制能
- 马达驱动模型提供给开发者马达驱动差异化接口,具体实现如下: - 马达驱动模型提供给开发者马达驱动差异化接口,具体实现如下:
``` ```
/* 按照指定持续时间触发马达线性驱动 */ /* 按照指定持续时间触发线性马达的振动 */
static int32_t StartLinearVibrator() static int32_t StartLinearVibrator()
{ {
int32_t ret; int32_t ret;
...@@ -341,7 +341,7 @@ Vibrator驱动模型为上层马达硬件服务层提供稳定的马达控制能 ...@@ -341,7 +341,7 @@ Vibrator驱动模型为上层马达硬件服务层提供稳定的马达控制能
return HDF_SUCCESS; return HDF_SUCCESS;
} }
/* 按照预置振动效果启动马达线性驱动 */ /* 按照预置振动效果触发线性马达的振动 */
static int32_t StartEffectLinearVibrator(uint32_t effectType) static int32_t StartEffectLinearVibrator(uint32_t effectType)
{ {
(void)effectType; (void)effectType;
...@@ -349,7 +349,7 @@ Vibrator驱动模型为上层马达硬件服务层提供稳定的马达控制能 ...@@ -349,7 +349,7 @@ Vibrator驱动模型为上层马达硬件服务层提供稳定的马达控制能
return HDF_SUCCESS; return HDF_SUCCESS;
} }
/* 按照指定的振动模式停止马达线性驱动 */ /* 按照指定的振动模式停止线性马达的振动 */
static int32_t StopLinearVibrator() static int32_t StopLinearVibrator()
{ {
int32_t ret; int32_t ret;
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册