diff --git a/docs/source/api/api_device.rst b/docs/source/api/api_device.rst index c991c40f..7b8f545b 100644 --- a/docs/source/api/api_device.rst +++ b/docs/source/api/api_device.rst @@ -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 """"""""""""""""""""""""""""""""""""