OpenHarmony Input 驱动框架 精华
一、Hdf Framework
HDF 驱动框架
OpenAtom OpenHarmony(以下简称“OpenHarmony”)系统 HDF 驱动框架采用 C 语言面向对象编程模型构建,通过平台解耦、内核解耦,来达到兼容不同内核,统一平台底座的目的,从而帮助开发者实现驱动一次开发,多系统部署的效果。 (引用原文)
代码目录
二、input 驱动模型
基于HDF驱动框架的Input驱动模型
Input驱动模型介绍
Input驱动模型核心部分由设备管理层、公共驱动层、器件驱动层组成。器件产生的数据借助平台数据通道能力从内核传递到用户态,驱动模型通过配置文件适配不同器件及硬件平台,提高开发者的器件驱动开发效率。如下部分为模型各部分的说明:
- Input设备管理:为各类输入设备驱动提供Input设备的注册、注销接口,同时统一管理Input设备列表。
- Input平台驱动:指各类Input设备的公共抽象驱动(例如触摸屏的公共驱动),负责对板级硬件进行初始化、硬件中断处理、向manager注册Input设备等。
- Input器件驱动:指各器件厂家的差异化驱动,通过适配平台驱动预留的差异化接口,实现器件驱动开发量最小化。
- Input数据通道:提供一套通用的数据上报通道,各类别的Input设备驱动均可用此通道上报Input事件。
- Input配置解析:负责对Input设备的板级配置及器件私有配置进行解析及管理。
Input模型工作流程解析
私有配置信息解析
根据 OSAL 提供的配置解析函数,可以将 hcs 文件中各字段含义进行解析,具体请参考 input_config_parser.c 中各函数的实现。如果提供的模板不能满足需求,在 hcs 文件中添加相应信息后,需要根据添加的字段开发相应的解析函数。
管理驱动层初始化及注册驱动至HDF框架
公共驱动层初始化及注册驱动至HDF框架
器件驱动层初始化及注册驱动至HDF框架
具体请参考适配器件私有驱动器件层驱动初始化及注册驱动至 HDF 框架部分。
具体调用逻辑串联函数
Input 模型管理层驱动 init 函数初始化了设备管理链表**,公共驱动层**初始化函数完成了相关结构体的内存申请。器件驱动相关信息通过 RegisterChipDevice 函数对公共驱动层相关结构体进行信息填充,同时完成了相关硬件信息的初始化(如中断注册等),绑定设备与驱动组成 inputDev 通过 RegisterInputDevice 函数向驱动管理层进行注册,在 RegisterInputDevice 函数中主要实现了将 inputDev 向设备管理链表的添加等功能。如下所示为两个函数的实现部分:
三、Input模块HDI接口层框架
Input模块HDI(Hardware Driver Interface)接口定义及其实现,对上层输入服务提供操作input设备的驱动能力接口,HDI接口主要包括如下三大类:
-
InputManager:管理输入设备,包括输入设备的打开、关闭、设备列表信息获取等;
-
InputReporter:负责输入事件的上报,包括注册、注销数据上报回调函数等;
-
InputController:提供input设备的业务控制接口,包括获取器件信息及设备类型、设置电源状态等
目录
drivers_peripheral 仓下源代码目录结构如下所示
使用说明
**drivers_peripheral**仓核心功能是提供Input驱动能力接口供上层输入系统服务调用,提供的驱动能力接口统一归属为HDI接口层。
通过如下简要示例代码说明Input HDI接口的使用:
学习一波文章,感谢分享。