DDK API是什么?它有哪些独特功能和应用场景?

DDK API 是指滴滴出行的开发者接口,它允许开发者通过编程方式接入滴滴的服务,实现诸如叫车、支付等功能。

DDK API详解

一、USB DDK

DDK API是什么?它有哪些独特功能和应用场景?

USB(Universal Serial Bus)通用串行总线,用于规范电脑与外部设备的连接和通讯,包含了主机端(Host)和设备端(Device),主机端负责USB总线中的数据传输及端口管理,设备端则可以连接各种外设,USB驱动开发又分为主机端驱动开发和设备端驱动开发。

由于基于内核态开发的USB驱动功能扩展性较差,目前开发者通常选择Libusb库进行USB驱动开发,该库是一种跨平台的用户态开源USB通信库,可以满足开发者基于用户态开发功能驱动的需求,由于Libusb库是完全按照USB协议来封装接口的,所以需要开发者对USB协议有较深的了解才能很好地使用,这对初学者来说门槛较高,为了让更多的开发者都能进行基于用户态的USB驱动开发,HDF引入了USB DDK开发套件。

USB DDK(USB Driver Development Kit)是HDF驱动框架为开发者提供的USB驱动程序开发套件,包括USB Host DDK及USB Device DDK两部分,它支持基于用户态开发USB设备驱动的同时,还提供了丰富的USB驱动开发能力,让广大开发者能精准且高效地开发USB驱动程序。

二、USB Host DDK

USB Host DDK给开发者提供了主机端USB驱动开发能力,按照功能分类三大类,分别是DDK初始化类、interface对象操作类及request对象操作类,并为开发者提供了普通模式和专家模式两种开发模式,普通模式下,开发者可通过USBDDK API直接完成相关USB数据读写操作,不需要过多关注底层传输细节,专家模式下,开发者通过USB RAW API直接访问OS平台USB通道的接口,自定义实现更加复杂的功能。

1、USB Interface Pool:负责USBInterface管理,提供USB Interface申请和回收,记录设备端口信息以及资源,此模块还提供了USB DDK API,方便开发者进行USB数据读写操作。

2、USB Protocol Layer:提供USB协议封装,根据USB协议对设备IO/控制命令进行“翻译/解析”,同时负责设备描述符的管理,匹配对应的描述符并构建对应的USB Interface,加入到USB Interface Pool中管理。

3、Device IO Manager:负责USBIO请求管理,提供同步IO和异步IO管理机制,对于异步IO,IO Manager负责将请求记录下来,然后通过Raw API Library提供的接口依次处理待发送的IO请求;当收到USB控制器应答的处理结果后,IO接收线程负责解析并上报处理结果给上层调用者。

4、Raw API Library:抽象了底层OS能力,定义了统一的OS能力接口,对外提供了USB RAW API,让开发者自定义实现更加复杂的驱动功能。

5、OS Adapter:用于封装与平台(Linux和LiteOS)相关的操作,根据不同平台配置编译对应平台的封装接口,在Linux平台上,访问USBFS的操作全部都封装在这个模块中;而在LiteOS平台上,基于FreeBSD USB框架的设备访问操作也全部封装在这个模块中。

6、PNP Notify:用于动态监测USB状态变化,当有新设备添加/移除时,变化设备信息,同时将所有USB设备信息都通过KHDF上报给UHDF侧的PNPNotify Manager模块来完成加载/卸载第三方功能驱动。

三、USB Device DDK

USB Device DDK给开发者提供了设备端USB驱动开发能力,USB端口动态注册和去注册能力,开发者可以基于能力实现USB端口的动态添加和组合;动态实例化能力,支持根据动态下发设备、配置、接口及端点描述符创建设备实例及传输通道;用户态的数据发送及接收能力,支持用户态下发送及接收数据;复合设备能力,支持一个物理设备上多个逻辑设备,实现多个逻辑设备间隔离,并支持不同逻辑设备同时被不同的应用进程访问。

1、SDK IF:负责将USB设备按照设备、接口、管道进行逻辑划分,对配置管理、设备管理、IO管理进行封装,此模块还向开发者提供了设备创建、获取接口、接收Event事件、收发数据等设备测驱动开发的能力接口。

DDK API是什么?它有哪些独特功能和应用场景?

2、Configuration Manager:负责解析HCS文件描述的USB描述符信息,得到的USB描述符信息用于设备创建,同时模块还提供了自定义属性的读取、创建、删除、修改等操作。

3、Device Manager:负责根据配置模块解析的USB描述符,并根据USB描述符创建设备,同时模块还负责获取设备、删除设备、获取设备状态,获取设备上面接口信息。

4、IO Manager:负责数据的读写,包括Events事件、数据读写完成事件的接受,支持同步和异步模式数据读写。

5、Adapter IF:主要是对复合设备配置驱动及通用功能驱动设备节点操作进行封装,为上层提供统一的设备管理接口。

6、Adapter:该模块由复合设备配置驱动及通用功能驱动提供。

四、USB DDK开发指导

USB Host(主机端驱动)主要完成协议封装、设备管理、驱动安装与卸载等,通过上文的介绍,开发者可通过USB DDK API和USB RAW API来实现主机端驱动。

1、USB DDK API的使用

配置驱动匹配表,完成主机端驱动总体信息的配置。

使用OH_Usb_Init接口初始化DDK。

使用OH_Usb_GetDeviceDescriptor获取设备描述符。

根据设备描述符找到所需要通信的interfaceIndex并声明接口。

使用OH_Usb_ClaimInterface声明"认领"接口并获取interfaceHandle。

使用OH_Usb_SelectInterfaceSetting激活备用设置。

DDK API是什么?它有哪些独特功能和应用场景?

使用OH_Usb_SendControlReadRequest和OH_Usb_SendControlWriteRequest发送控制读写请求。

使用OH_Usb_ReleaseInterface释放接口。

使用OH_Usb_SendPipeRequest发送管道请求。

使用OH_Usb_CreateDeviceMemMap创建缓冲区并在使用完后销毁缓冲区以避免资源泄露。

五、FAQs

1、Q: 如何选择合适的USB DDK版本?

A: 根据项目需求和硬件平台选择合适的USB DDK版本,确保所选版本与目标硬件平台兼容,并满足项目的功能需求,建议参考官方文档或社区论坛以获取更多关于版本选择的信息。

2、Q: USB DDK在不同操作系统上的兼容性如何?

A: USB DDK旨在提供跨平台的USB驱动开发能力,由于不同操作系统的API和驱动模型存在差异,因此在某些特定平台上可能需要进行额外的适配工作,建议在开始项目前详细了解目标操作系统对USB DDK的支持情况,并进行必要的测试和验证。

六、小编有话说

USB DDK作为一款强大的USB驱动开发工具,为开发者提供了丰富的功能和灵活的开发模式,通过深入了解其架构和API接口,开发者可以更加高效地进行USB驱动的开发工作,希望本文能帮助大家更好地理解和使用这款工具。

原创文章,作者:未希,如若转载,请注明出处:https://www.kdun.com/ask/1487553.html

本网站发布或转载的文章及图片均来自网络,其原创性以及文中表达的观点和判断不代表本网站。如有问题,请联系客服处理。

(0)
未希
上一篇 2025-01-14 14:16
下一篇 2025-01-14 14:19

相关推荐

发表回复

您的电子邮箱地址不会被公开。 必填项已用 * 标注

产品购买 QQ咨询 微信咨询 SEO优化
分享本页
返回顶部
云产品限时秒杀。精选云产品高防服务器,20M大带宽限量抢购 >>点击进入