update usb device rst
This commit is contained in:
@@ -4,7 +4,7 @@
|
||||
设备协议栈主要负责枚举和驱动加载,枚举这边就不说了,驱动加载,也就是接口驱动加载,主要是依靠 `usbd_add_interface` 函数,记录传入的接口驱动保存到链表中,当主机进行类请求时就可以查找链表进行访问了。
|
||||
在调用 `usbd_desc_register` 以后需要进行接口注册和端点注册,口诀如下:
|
||||
|
||||
- 有多少个接口就调用多少次 `usbd_add_interface`,参数填各个 class alloc出来的 intf,如果没有 alloc 的intf 表示不需要加载。
|
||||
- 有多少个接口就调用多少次 `usbd_add_interface`,参数填各个 class alloc 出来的 intf,如果没有 alloc 的intf 表示不需要加载。
|
||||
- 有多少个端点就调用多少次 `usbd_add_endpoint`,当中断完成时,会调用到注册的端点回调中。
|
||||
|
||||
CORE
|
||||
@@ -37,24 +37,22 @@ CORE
|
||||
|
||||
struct usbd_interface {
|
||||
usb_slist_t list;
|
||||
/** Handler for USB Class specific commands*/
|
||||
usbd_request_handler class_handler;
|
||||
/** Handler for USB Vendor specific commands */
|
||||
usbd_request_handler class_interface_handler;
|
||||
usbd_request_handler class_endpoint_handler;
|
||||
usbd_request_handler vendor_handler;
|
||||
/** Handler for USB custom specific commands */
|
||||
usbd_request_handler custom_handler;
|
||||
/** Handler for USB event notify commands */
|
||||
usbd_notify_handler notify_handler;
|
||||
uint8_t *hid_report_descriptor;
|
||||
uint8_t *hid_report_descriptor_len;
|
||||
const uint8_t *hid_report_descriptor;
|
||||
uint32_t hid_report_descriptor_len;
|
||||
uint8_t intf_num;
|
||||
};
|
||||
|
||||
- **list** 接口的链表节点
|
||||
- **class_handler** class setup 请求回调函数
|
||||
- **class_interface_handler** class setup 请求回调函数,接收者为接口
|
||||
- **class_endpoint_handler** class setup 请求回调函数,接收者为端点
|
||||
- **vendor_handler** vendor setup 请求回调函数
|
||||
- **custom_handler** custom setup 请求回调函数
|
||||
- **notify_handler** 中断标志、协议栈相关状态回调函数
|
||||
- **hid_report_descriptor** hid 报告描述符
|
||||
- **hid_report_descriptor_len** hid 报告描述符长度
|
||||
- **intf_num** 当前接口偏移
|
||||
- **ep_list** 端点的链表节点
|
||||
|
||||
@@ -102,17 +100,6 @@ usbd_bos_desc_register
|
||||
|
||||
- **desc** 描述符句柄
|
||||
|
||||
usbd_class_register
|
||||
""""""""""""""""""""""""""""""""""""
|
||||
|
||||
``usbd_class_register`` 用来注册一个 class,该 class 中的接口链表成员,用于后续挂载多个接口。
|
||||
|
||||
.. code-block:: C
|
||||
|
||||
void usbd_class_register(usbd_class_t *devclass);
|
||||
|
||||
- **devclass** USB 设备类的句柄
|
||||
|
||||
usbd_add_interface
|
||||
""""""""""""""""""""""""""""""""""""
|
||||
|
||||
@@ -122,7 +109,7 @@ usbd_add_interface
|
||||
|
||||
void usbd_add_interface(struct usbd_interface *intf);
|
||||
|
||||
- **intf** USB 设备接口的句柄
|
||||
- **intf** 接口驱动句柄,通常从不同 class 的 `xxx_alloc_intf` 函数获取
|
||||
|
||||
usbd_add_endpoint
|
||||
""""""""""""""""""""""""""""""""""""
|
||||
@@ -133,7 +120,7 @@ usbd_add_endpoint
|
||||
|
||||
void usbd_add_endpoint(struct usbd_endpoint *ep);;
|
||||
|
||||
- **ep** USB 设备端点的句柄
|
||||
- **ep** 端点句柄
|
||||
|
||||
usb_device_is_configured
|
||||
""""""""""""""""""""""""""""""""""""
|
||||
|
||||
Reference in New Issue
Block a user