From eaefb8ed21ed23f732e8b608ed7948e6b71ab0d8 Mon Sep 17 00:00:00 2001 From: sakumisu <1203593632@qq.com> Date: Fri, 30 Jan 2026 22:10:34 +0800 Subject: docs: update docs and add english version Signed-off-by: sakumisu <1203593632@qq.com> --- docs/source/api/api_config.rst | 163 ------------ docs/source/api/api_device.rst | 502 ------------------------------------ docs/source/api/api_host.rst | 317 ----------------------- docs/source/api/api_port.rst | 266 ------------------- docs/source/api/img/api_device1.png | Bin 296936 -> 0 bytes docs/source/api/img/api_host1.png | Bin 43480 -> 0 bytes docs/source/api/img/api_host2.png | Bin 46429 -> 0 bytes 7 files changed, 1248 deletions(-) delete mode 100644 docs/source/api/api_config.rst delete mode 100644 docs/source/api/api_device.rst delete mode 100644 docs/source/api/api_host.rst delete mode 100644 docs/source/api/api_port.rst delete mode 100644 docs/source/api/img/api_device1.png delete mode 100644 docs/source/api/img/api_host1.png delete mode 100644 docs/source/api/img/api_host2.png (limited to 'docs/source/api') diff --git a/docs/source/api/api_config.rst b/docs/source/api/api_config.rst deleted file mode 100644 index c1fe8603..00000000 --- a/docs/source/api/api_config.rst +++ /dev/null @@ -1,163 +0,0 @@ -USB CONFIG 说明 -========================= - -通用 CONFIG ---------------------- - -CONFIG_USB_PRINTF -^^^^^^^^^^^^^^^^^^^^ - -USB log 功能,默认重定向到 printf,需要注意,USB log 会在中断中使用,因此重定向的 api 不允许阻塞。举例,如果使用的是 rt-thread,请更换成 rt-kprintf - -CONFIG_USB_DBG_LEVEL -^^^^^^^^^^^^^^^^^^^^^^ - -控制 log 的打印级别 - -CONFIG_USB_PRINTF_COLOR_ENABLE -^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - -控制 log 颜色打印,默认开启 - -CONFIG_USB_DCACHE_ENABLE -^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - -不使用 nocache ram 时,开启此宏以保证数据一致性。 **使用 EHCI 时,内部依旧需要使用 nocache ram**。 - -CONFIG_USB_ALIGN_SIZE -^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - -USB buffer 的对齐大小,默认是 4。IP 在 dma 模式下可能对输入的 buffer有对齐要求,一般是4,如果是其他对齐方式,请修改此值。 - -USB_NOCACHE_RAM_SECTION -^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - -如果芯片没有 cache 功能,此宏无效。如果有,则 USB 的输入输出 buffer 必须放在 nocache ram 中,保证数据一致性。 - -设备协议栈 CONFIG ---------------------- - -CONFIG_USBDEV_REQUEST_BUFFER_LEN -^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - -控制传输接收和发送的 buffer 最大长度,默认是 512。 - -CONFIG_USBDEV_SETUP_LOG_PRINT -^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - -使能或者关闭 setup 包的 dump 信息,默认关闭。 - -CONFIG_USBDEV_DESC_CHECK -^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - -暂时没有实现 - -CONFIG_USBDEV_TEST_MODE -^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ -使能或者关闭 usb test mode - -CONFIG_USBDEV_MSC_MAX_BUFSIZE -^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - -msc 缓存的最大长度,缓存越大,USB 的速度越高,因为介质一般多个 block 读写速度比单个 block 高很多,比如 sd 卡。 -默认 512 ,如果是 flash 需要改成 4K, 缓存的大小需要是介质的一个 block size 的整数倍。 - -CONFIG_USBDEV_MSC_MANUFACTURER_STRING -^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - -CONFIG_USBDEV_MSC_PRODUCT_STRING -^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - -CONFIG_USBDEV_MSC_VERSION_STRING -^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - -CONFIG_USBDEV_MSC_POLLING -^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - -将 usbd_msc_sector_read 和 usbd_msc_sector_write 操作放在 while1 中运行,裸机下使用。 - -CONFIG_USBDEV_MSC_THREAD -^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - -使能或者关闭 msc 线程,默认关闭。usbd_msc_sector_read 和 usbd_msc_sector_write 默认是在中断中执行,所以如果开启了 os 建议开启此宏,那么, -usbd_msc_sector_read 和 usbd_msc_sector_write 就会在线程中执行。 - -CONFIG_USBDEV_MSC_PRIO -^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - -MSC 读写线程的优先级,默认是 4,数值越小,优先级越高 - -CONFIG_USBDEV_MSC_STACKSIZE -^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - -MSC 读写线程的堆栈大小,默认 2K 字节 - -CONFIG_USBDEV_RNDIS_RESP_BUFFER_SIZE -^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - -rndis 控制传输最大接收和发送的长度,根据 RNDIS options list 决定最小长度,默认要大于等于 156 - -CONFIG_USBDEV_RNDIS_ETH_MAX_FRAME_SIZE -^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - -rndis 以太网帧的最大长度,默认 1580 - -CONFIG_USBDEV_RNDIS_VENDOR_ID -^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - -CONFIG_USBDEV_RNDIS_VENDOR_DESC -^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - -CONFIG_USBDEV_RNDIS_USING_LWIP -^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - -rndis 与 lwip 接口的对接 - -主机协议栈 CONFIG ---------------------- - -以下参数决定了支持的最大外部hub数量,接口数,每个接口的端点数和 altsetting 数量,更改此值会影响 ram 的大小,建议根据实际情况更改。 - -.. code-block:: C - - #define CONFIG_USBHOST_MAX_RHPORTS 1 - #define CONFIG_USBHOST_MAX_EXTHUBS 1 - #define CONFIG_USBHOST_MAX_EHPORTS 4 - #define CONFIG_USBHOST_MAX_INTERFACES 6 - #define CONFIG_USBHOST_MAX_INTF_ALTSETTINGS 1 - #define CONFIG_USBHOST_MAX_ENDPOINTS 4 - -以下参数决定了支持的 class 数目,更改此值会影响 ram 的大小,建议根据实际情况更改。 - -.. code-block:: C - - #define CONFIG_USBHOST_MAX_SERIAL_CLASS 4 - #define CONFIG_USBHOST_MAX_HID_CLASS 4 - #define CONFIG_USBHOST_MAX_MSC_CLASS 2 - #define CONFIG_USBHOST_MAX_AUDIO_CLASS 1 - #define CONFIG_USBHOST_MAX_VIDEO_CLASS 1 - -CONFIG_USBHOST_PSC_PRIO -^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - -主机插拔线程的优先级,默认是 0,数值越小,优先级越高 - -CONFIG_USBHOST_PSC_STACKSIZE -^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - -主机插拔线程的堆栈大小,默认 2K 字节 - -CONFIG_USBHOST_REQUEST_BUFFER_LEN -^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - -控制传输能够接收或者发送的最大长度 - -CONFIG_USBHOST_CONTROL_TRANSFER_TIMEOUT -^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - -控制传输发送或者接收的超时时间,默认 500 ms - -CONFIG_USBHOST_MSC_TIMEOUT -^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - -MSC 读写传输的超时时间,默认 5s \ No newline at end of file diff --git a/docs/source/api/api_device.rst b/docs/source/api/api_device.rst deleted file mode 100644 index bc8cb100..00000000 --- a/docs/source/api/api_device.rst +++ /dev/null @@ -1,502 +0,0 @@ -设备协议栈 -========================= - -设备协议栈主要负责枚举和驱动加载,枚举这边就不说了,驱动加载,也就是接口驱动加载,主要是依靠 `usbd_add_interface` 函数,用于记录传入的接口驱动并保存到接口数组表,当主机进行类请求时就可以查找接口表进行访问了。 -在调用 `usbd_desc_register` 以后需要进行接口注册和端点注册,口诀如下: - -- 有多少个接口就调用多少次 `usbd_add_interface`,参数填相关 `xxx_init_intf`, 如果没有支持的,手动创建一个 intf 填入 -- 有多少个端点就调用多少次 `usbd_add_endpoint`,当中断完成时,会调用到注册的端点回调中。 - -参考下面这张图: - -.. figure:: img/api_device1.png - -CORE ------------------ - -端点结构体 -"""""""""""""""""""""""""""""""""""" - -端点结构体主要用于注册不同端点地址的中断完成回调函数。 - -.. code-block:: C - - struct usbd_endpoint { - uint8_t ep_addr; - usbd_endpoint_callback ep_cb; - }; - -- **ep_addr** 端点地址(带方向) -- **ep_cb** 端点完成中断回调函数。 - -.. note:: 总结一句话:in 回调函数等价于 dma 发送完成中断回调函数;out 回调函数等价于 dma 接收完成中断回调函数 - -接口结构体 -"""""""""""""""""""""""""""""""""""" - -接口结构体主要用于注册不同类设备除了标准设备请求外的其他请求,包括类设备请求、厂商设备请求和自定义设备请求。以及协议栈中的相关通知回调函数。 - -.. code-block:: C - - struct usbd_interface { - usbd_request_handler class_interface_handler; - usbd_request_handler class_endpoint_handler; - usbd_request_handler vendor_handler; - usbd_notify_handler notify_handler; - const uint8_t *hid_report_descriptor; - uint32_t hid_report_descriptor_len; - uint8_t intf_num; - }; - -- **class_interface_handler** class setup 请求回调函数,接收者为接口 -- **class_endpoint_handler** class setup 请求回调函数,接收者为端点 -- **vendor_handler** vendor setup 请求回调函数 -- **notify_handler** 中断标志、协议栈相关状态回调函数 -- **hid_report_descriptor** hid 报告描述符 -- **hid_report_descriptor_len** hid 报告描述符长度 -- **intf_num** 当前接口偏移 - -usbd_desc_register -"""""""""""""""""""""""""""""""""""" - -``usbd_desc_register`` 用来注册 USB 描述符,描述符种类包括:设备描述符、配置描述符(包含配置描述符、接口描述符、class 类描述符、端点描述符)、字符串描述符、设备限定描述符,其他速度描述符, -bos描述符,winusb 描述符。 - -.. code-block:: C - - // 开启 CONFIG_USBDEV_ADVANCE_DESC - void usbd_desc_register(uint8_t busid, const struct usb_descriptor *desc); - - // 关闭 CONFIG_USBDEV_ADVANCE_DESC - void usbd_desc_register(uint8_t busid, const uint8_t *desc); - void usbd_msosv1_desc_register(uint8_t busid, struct usb_msosv1_descriptor *desc); - void usbd_msosv2_desc_register(uint8_t busid, struct usb_msosv2_descriptor *desc); - void usbd_bos_desc_register(uint8_t busid, struct usb_bos_descriptor *desc); - void usbd_webusb_desc_register(uint8_t busid, struct usb_webusb_descriptor *desc); - -- **desc** 描述符的句柄 - -.. note:: 当前默认开启 CONFIG_USBDEV_ADVANCE_DESC,如果需要使用旧版本 API 请关闭该宏,从 v1.6.0 开始只有开启了 CONFIG_USBDEV_ADVANCE_DESC 的 API - -usbd_add_interface -"""""""""""""""""""""""""""""""""""" - -``usbd_add_interface`` 添加一个接口驱动。 **添加顺序必须按照描述符中接口顺序**。 - -.. code-block:: C - - void usbd_add_interface(uint8_t busid, struct usbd_interface *intf); - -- **busid** USB 总线 id -- **intf** 接口驱动句柄,通常从不同 class 的 `xxx_init_intf` 函数获取 - -usbd_add_endpoint -"""""""""""""""""""""""""""""""""""" - -``usbd_add_endpoint`` 添加一个端点中断完成回调函数。 - -.. code-block:: C - - void usbd_add_endpoint(uint8_t busid, struct usbd_endpoint *ep); - -- **busid** USB 总线 id -- **ep** 端点句柄 - -usbd_initialize -"""""""""""""""""""""""""""""""""""" - -``usbd_initialize`` 用来初始化 usb device 寄存器配置、usb 时钟、中断等,需要注意,此函数必须在注册描述符 API 最后。 **如果使用 os,必须放在线程中执行**。 - -.. code-block:: C - - int usbd_initialize(uint8_t busid, uintptr_t reg_base, usbd_event_handler_t event_handler); - -- **busid** USB 总线 id -- **reg_base** USB 设备寄存器基地址 -- **event_handler** 协议栈中断或者状态回调函数,event 事件 -- **return** 返回 0 表示成功,其他值表示失败 - -event 事件包括: - -.. code-block:: C - - USBD_EVENT_ERROR, /** USB error reported by the controller */ - USBD_EVENT_RESET, /** USB reset */ - USBD_EVENT_SOF, /** Start of Frame received */ - USBD_EVENT_CONNECTED, /** USB connected*/ - USBD_EVENT_DISCONNECTED, /** USB disconnected */ - USBD_EVENT_SUSPEND, /** USB connection suspended by the HOST */ - USBD_EVENT_RESUME, /** USB connection resumed by the HOST */ - - /* USB DEVICE STATUS */ - USBD_EVENT_CONFIGURED, /** USB configuration done */ - USBD_EVENT_SET_INTERFACE, /** USB interface selected */ - USBD_EVENT_SET_REMOTE_WAKEUP, /** USB set remote wakeup */ - USBD_EVENT_CLR_REMOTE_WAKEUP, /** USB clear remote wakeup */ - USBD_EVENT_INIT, /** USB init done when call usbd_initialize */ - USBD_EVENT_DEINIT, /** USB deinit done when call usbd_deinitialize */ - USBD_EVENT_UNKNOWN - -.. note:: 大部分 IP USBD_EVENT_CONNECTED 和 USBD_EVENT_DISCONNECTED 事件都不支持,当前仅 HPM 芯片支持,其余芯片自行设计vbus检测电路替代 - -usbd_deinitialize -"""""""""""""""""""""""""""""""""""" - -``usbd_deinitialize`` 用来反初始化 usb device,关闭 usb 设备时钟、中断等。 - -.. code-block:: C - - int usbd_deinitialize(uint8_t busid); - -- **busid** USB 总线 id -- **return** 返回 0 表示成功,其他值表示失败 - -CDC ACM ------------------ - -usbd_cdc_acm_init_intf -"""""""""""""""""""""""""""""""""""" - -``usbd_cdc_acm_init_intf`` 用来初始化 USB CDC ACM 类接口,并实现该接口相关的函数。 - -- ``cdc_acm_class_interface_request_handler`` 用来处理 USB CDC ACM 类 Setup 请求。 -- ``cdc_notify_handler`` 用来处理 USB CDC 其他中断回调函数。 - -.. code-block:: C - - struct usbd_interface *usbd_cdc_acm_init_intf(uint8_t busid, struct usbd_interface *intf); - -- **busid** USB 总线 id -- **return** 接口句柄 - -usbd_cdc_acm_set_line_coding -"""""""""""""""""""""""""""""""""""" - -``usbd_cdc_acm_set_line_coding`` 用来对串口进行配置,如果仅使用 USB 而不用 串口,该接口不用用户实现,使用默认。 - -.. code-block:: C - - void usbd_cdc_acm_set_line_coding(uint8_t busid, uint8_t intf, struct cdc_line_coding *line_coding); - -- **busid** USB 总线 id -- **intf** 控制接口号 -- **line_coding** 串口配置 - -usbd_cdc_acm_get_line_coding -"""""""""""""""""""""""""""""""""""" - -``usbd_cdc_acm_get_line_coding`` 用来获取串口进行配置,如果仅使用 USB 而不用 串口,该接口不用用户实现,使用默认。 - -.. code-block:: C - - void usbd_cdc_acm_get_line_coding(uint8_t busid, uint8_t intf, struct cdc_line_coding *line_coding); - -- **busid** USB 总线 id -- **intf** 控制接口号 -- **line_coding** 串口配置 - -usbd_cdc_acm_set_dtr -"""""""""""""""""""""""""""""""""""" - -``usbd_cdc_acm_set_dtr`` 用来控制串口 DTR 。如果仅使用 USB 而不用 串口,该接口不用用户实现,使用默认。 - -.. code-block:: C - - void usbd_cdc_acm_set_dtr(uint8_t busid, uint8_t intf, bool dtr); - -- **busid** USB 总线 id -- **intf** 控制接口号 -- **dtr** dtr 为1表示拉低电平,为0表示拉高电平 - -usbd_cdc_acm_set_rts -"""""""""""""""""""""""""""""""""""" - -``usbd_cdc_acm_set_rts`` 用来控制串口 RTS 。如果仅使用 USB 而不用 串口,该接口不用用户实现,使用默认。 - -.. code-block:: C - - void usbd_cdc_acm_set_rts(uint8_t busid, uint8_t intf, bool rts); - -- **busid** USB 总线 id -- **intf** 控制接口号 -- **rts** rts 为1表示拉低电平,为0表示拉高电平 - -CDC_ACM_DESCRIPTOR_INIT -"""""""""""""""""""""""""""""""""""" - -``CDC_ACM_DESCRIPTOR_INIT`` 配置了默认的 cdc acm 需要的描述符以及参数,方便用户使用。总长度为 `CDC_ACM_DESCRIPTOR_LEN` 。 - -.. code-block:: C - - CDC_ACM_DESCRIPTOR_INIT(bFirstInterface, int_ep, out_ep, in_ep, str_idx); - -- **bFirstInterface** 表示该 cdc acm 第一个接口所在所有接口的偏移 -- **int_ep** 表示中断端点地址(带方向) -- **out_ep** 表示 bulk out 端点地址(带方向) -- **in_ep** 表示 bulk in 端点地址(带方向) -- **str_idx** 控制接口对应的字符串 id - -HID ------------------ - -usbd_hid_init_intf -"""""""""""""""""""""""""""""""""""" - -``usbd_hid_init_intf`` 用来初始化 USB HID 类接口,并实现该接口相关的函数: - -- ``hid_class_interface_request_handler`` 用来处理 USB HID 类的 Setup 请求。 -- ``hid_notify_handler`` 用来处理 USB HID 其他中断回调函数。 - -.. code-block:: C - - struct usbd_interface *usbd_hid_init_intf(uint8_t busid, struct usbd_interface *intf, const uint8_t *desc, uint32_t desc_len); - -- **busid** USB 总线 id -- **desc** 报告描述符 -- **desc_len** 报告描述符长度 - -MSC ------------------ - -usbd_msc_init_intf -"""""""""""""""""""""""""""""""""""" -``usbd_msc_init_intf`` 用来初始化 MSC 类接口,并实现该接口相关函数,并且注册端点回调函数。(因为 msc bot 协议是固定的,所以不需要用于实现,因此端点回调函数自然不需要用户实现)。 - -- ``msc_storage_class_interface_request_handler`` 用于处理 USB MSC Setup 中断请求。 -- ``msc_storage_notify_handler`` 用于实现 USB MSC 其他中断回调函数。 - -- ``mass_storage_bulk_out`` 用于处理 USB MSC 端点 out 中断。 -- ``mass_storage_bulk_in`` 用于处理 USB MSC 端点 in 中断。 - -.. code-block:: C - - struct usbd_interface *usbd_msc_init_intf(uint8_t busid, struct usbd_interface *intf, const uint8_t out_ep, const uint8_t in_ep); - -- **busid** USB 总线 id -- **out_ep** out 端点地址 -- **in_ep** in 端点地址 - -usbd_msc_get_cap -"""""""""""""""""""""""""""""""""""" - -``usbd_msc_get_cap`` 用来获取存储器的 lun、扇区个数和每个扇区大小。用户必须实现该函数。 - -.. code-block:: C - - void usbd_msc_get_cap(uint8_t busid, uint8_t lun, uint32_t *block_num, uint16_t *block_size); - -- **busid** USB 总线 id -- **lun** 存储逻辑单元,暂时无用,默认支持一个 -- **block_num** 存储扇区个数 -- **block_size** 存储扇区大小 - -usbd_msc_sector_read -"""""""""""""""""""""""""""""""""""" - -``usbd_msc_sector_read`` 用来对存储器某个扇区开始的地址进行数据读取。用户必须实现该函数。 - -.. code-block:: C - - int usbd_msc_sector_read(uint8_t busid, uint8_t lun, uint32_t sector, uint8_t *buffer, uint32_t length); - -- **busid** USB 总线 id -- **lun** 存储逻辑单元,暂时无用,默认支持一个 -- **sector** 扇区偏移 -- **buffer** 存储读取的数据的指针 -- **length** 读取长度 - - -usbd_msc_sector_write -"""""""""""""""""""""""""""""""""""" - -``usbd_msc_sector_write`` 用来对存储器某个扇区开始写入数据。用户必须实现该函数。 - -.. code-block:: C - - int usbd_msc_sector_write(uint8_t busid, uint8_t lun, uint32_t sector, uint8_t *buffer, uint32_t length); - -- **busid** USB 总线 id -- **lun** 存储逻辑单元,暂时无用,默认支持一个 -- **sector** 扇区偏移 -- **buffer** 写入数据指针 -- **length** 写入长度 - -UAC ------------------ - -usbd_audio_init_intf -"""""""""""""""""""""""""""""""""""" -``usbd_audio_init_intf`` 用来初始化 USB Audio 类接口,并实现该接口相关的函数: - -- ``audio_class_interface_request_handler`` 用于处理 USB Audio Setup 接口接收者中断请求。 -- ``audio_class_endpoint_request_handler`` 用于处理 USB Audio Setup 端点接收者中断请求。 -- ``audio_notify_handler`` 用于实现 USB Audio 其他中断回调函数。 - -.. code-block:: C - - struct usbd_interface *usbd_audio_init_intf(uint8_t busid, struct usbd_interface *intf, - uint16_t uac_version, - struct audio_entity_info *table, - uint8_t num); - -- **busid** USB 总线 id -- **intf** 接口句柄 -- **uac_version** 音频类版本,UAC1.0 或 UAC2.0 -- **table** 音频实体信息表 -- **num** 音频实体信息表长度 - -usbd_audio_open -"""""""""""""""""""""""""""""""""""" - -``usbd_audio_open`` 用来开启音频数据传输。主机发送开启命令的回调函数。 - -.. code-block:: C - - void usbd_audio_open(uint8_t intf); - -- **intf** 开启的接口号 - -usbd_audio_close -"""""""""""""""""""""""""""""""""""" - -``usbd_audio_close`` 用来关闭音频数据传输。主机发送关闭命令的回调函数。 - -.. code-block:: C - - void usbd_audio_close(uint8_t intf); - -- **intf** 关闭的接口号 - -usbd_audio_set_mute -"""""""""""""""""""""""""""""""""""" - -``usbd_audio_set_mute`` 用来设置静音。 - -.. code-block:: C - - void usbd_audio_set_mute(uint8_t busid, uint8_t ep, uint8_t ch, bool mute); - -- **busid** USB 总线 id -- **ep** 要设置静音的端点 -- **ch** 要设置静音的通道 -- **mute** 为1 表示静音,0相反 - -usbd_audio_set_volume -"""""""""""""""""""""""""""""""""""" - -``usbd_audio_set_volume`` 用来设置音量。 - -.. code-block:: C - - void usbd_audio_set_volume(uint8_t busid, uint8_t ep, uint8_t ch, int volume_db); - -- **busid** USB 总线 id -- **ep** 要设置音量的端点 -- **ch** 要设置音量的通道 -- **volume_db** 要设置音量的分贝,单位 -100dB ~ 0dB - -usbd_audio_set_sampling_freq -"""""""""""""""""""""""""""""""""""" - -``usbd_audio_set_sampling_freq`` 用来设置设备上音频模块的采样率 - -.. code-block:: C - - void usbd_audio_set_sampling_freq(uint8_t busid, uint8_t ep, uint32_t sampling_freq); - -- **ep** 要设置采样率的端点 -- **sampling_freq** 要设置的采样率 - -usbd_audio_get_sampling_freq_table -"""""""""""""""""""""""""""""""""""" - -``usbd_audio_get_sampling_freq_table`` 用来获取支持的采样率列表,如果函数没有实现,则使用默认采样率列表。 UAC2 only。 - -.. code-block:: C - - void usbd_audio_get_sampling_freq_table(uint8_t busid, uint8_t ep, uint8_t **sampling_freq_table); - -- **ep** 要获取采样率的端点 -- **sampling_freq_table** 采样率列表地址,格式参考默认采样率列表 - -UVC ------------------ - -usbd_video_init_intf -"""""""""""""""""""""""""""""""""""" -``usbd_video_init_intf`` 用来初始化 USB Video 类接口,并实现该接口相关的函数: - -- ``video_class_interface_request_handler`` 用于处理 USB Video Setup 中断请求。 -- ``video_notify_handler`` 用于实现 USB Video 其他中断回调函数。 - -.. code-block:: C - - struct usbd_interface *usbd_video_init_intf(uint8_t busid, struct usbd_interface *intf, - uint32_t dwFrameInterval, - uint32_t dwMaxVideoFrameSize, - uint32_t dwMaxPayloadTransferSize); -- **busid** USB 总线 id -- **intf** 接口句柄 -- **dwFrameInterval** 视频帧间隔,单位 100ns -- **dwMaxVideoFrameSize** 最大视频帧大小 -- **dwMaxPayloadTransferSize** 最大负载传输大小 - -usbd_video_open -"""""""""""""""""""""""""""""""""""" - -``usbd_video_open`` 用来开启视频数据传输。 - -.. code-block:: C - - void usbd_video_open(uint8_t intf); - -- **intf** 开启的接口号 - -usbd_video_close -"""""""""""""""""""""""""""""""""""" - -``usbd_video_close`` 用来关闭视频数据传输。 - -.. code-block:: C - - void usbd_video_open(uint8_t intf); - -- **intf** 关闭的接口号 - -usbd_video_stream_start_write -"""""""""""""""""""""""""""""""""""" - -``usbd_video_stream_start_write`` 用来启动一帧视频数据流发送。需要搭配 `usbd_video_stream_split_transfer` 使用。 - -.. code-block:: C - - int usbd_video_stream_start_write(uint8_t busid, uint8_t ep, uint8_t *ep_buf, uint8_t *stream_buf, uint32_t stream_len, bool do_copy); - -- **busid** USB 总线 id -- **ep** 视频数据端点地址 -- **ep_buf** 视频数据端点传输缓冲区 -- **stream_buf** 一帧视频数据源缓冲区 -- **stream_len** 一帧视频数据源缓冲区大小 -- **do_copy** 是否需要将 stream_buf 数据复制到 ep_buf 中,当前仅当 stream_buf 在 nocache 区域并且未开启 DCACHE_ENABLE 时该参数才为 false - -usbd_video_stream_split_transfer -"""""""""""""""""""""""""""""""""""" - -``usbd_video_stream_split_transfer`` 用来分割视频数据流发送。需要搭配 `usbd_video_stream_start_write` 使用。 - -.. code-block:: C - - int usbd_video_stream_split_transfer(uint8_t busid, uint8_t ep); - -- **busid** USB 总线 id -- **ep** 视频数据端点地址 -- **return** 返回 true 表示一帧数据发送完成,false 表示数据未发送完成 - -RNDIS ------------------ - -CDC ECM ------------------ - -MTP ------------------ diff --git a/docs/source/api/api_host.rst b/docs/source/api/api_host.rst deleted file mode 100644 index 46d1e428..00000000 --- a/docs/source/api/api_host.rst +++ /dev/null @@ -1,317 +0,0 @@ -主机协议栈 -========================= - -关于主机协议栈中结构体的命名、分类、成员组成,参考下面这两张图: - -.. figure:: img/api_host1.png -.. figure:: img/api_host2.png - -CORE ------------------ - -CLASS 驱动信息结构体 -"""""""""""""""""""""""""""""""""""" - -.. code-block:: C - - struct usbh_class_info { - uint8_t match_flags; /* Used for product specific matches; range is inclusive */ - uint8_t bInterfaceClass; /* Base device class code */ - uint8_t bInterfaceSubClass; /* Sub-class, depends on base class. Eg. */ - uint8_t bInterfaceProtocol; /* Protocol, depends on base class. Eg. */ - const uint16_t (*id_table)[2]; /* List of Vendor/Product ID pairs */ - const struct usbh_class_driver *class_driver; - }; - -端点结构体 -"""""""""""""""""""""""""""""""""""" - -.. code-block:: C - - struct usbh_endpoint { - struct usb_endpoint_descriptor ep_desc; - }; - -接口备用结构体 -"""""""""""""""""""""""""""""""""""" - -.. code-block:: C - - struct usbh_interface_altsetting { - struct usb_interface_descriptor intf_desc; - struct usbh_endpoint ep[CONFIG_USBHOST_MAX_ENDPOINTS]; - }; - -接口结构体 -"""""""""""""""""""""""""""""""""""" - -.. code-block:: C - - struct usbh_interface { - char devname[CONFIG_USBHOST_DEV_NAMELEN]; - struct usbh_class_driver *class_driver; - void *priv; - struct usbh_interface_altsetting altsetting[CONFIG_USBHOST_MAX_INTF_ALTSETTINGS]; - uint8_t altsetting_num; - }; - -配置结构体 -"""""""""""""""""""""""""""""""""""" - -.. code-block:: C - - struct usbh_configuration { - struct usb_configuration_descriptor config_desc; - struct usbh_interface intf[CONFIG_USBHOST_MAX_INTERFACES]; - }; - -hubport 结构体 -"""""""""""""""""""""""""""""""""""" - -.. code-block:: C - - struct usbh_hubport { - bool connected; /* True: device connected; false: disconnected */ - uint8_t port; /* Hub port index */ - uint8_t dev_addr; /* device address */ - uint8_t speed; /* device speed */ - uint8_t depth; /* distance from root hub */ - uint8_t route; /* route string */ - uint8_t slot_id; /* slot id */ - struct usb_device_descriptor device_desc; - struct usbh_configuration config; - const char *iManufacturer; - const char *iProduct; - const char *iSerialNumber; - uint8_t *raw_config_desc; - struct usb_setup_packet *setup; - struct usbh_hub *parent; - struct usbh_hub *self; /* if this hubport is a hub */ - struct usbh_bus *bus; - struct usb_endpoint_descriptor ep0; - struct usbh_urb ep0_urb; - usb_osal_mutex_t mutex; - }; - -hub 结构体 -"""""""""""""""""""""""""""""""""""" - -.. code-block:: C - - struct usbh_hub { - bool connected; - bool is_roothub; - uint8_t index; - uint8_t hub_addr; - uint8_t speed; - uint8_t nports; - uint8_t powerdelay; - uint8_t tt_think; - bool ismtt; - struct usb_hub_descriptor hub_desc; /* USB 2.0 only */ - struct usb_hub_ss_descriptor hub_ss_desc; /* USB 3.0 only */ - struct usbh_hubport child[CONFIG_USBHOST_MAX_EHPORTS]; - struct usbh_hubport *parent; - struct usbh_bus *bus; - struct usb_endpoint_descriptor *intin; - struct usbh_urb intin_urb; - uint8_t *int_buffer; - struct usb_osal_timer *int_timer; - }; - -usbh_initialize -"""""""""""""""""""""""""""""""""""" - -``usbh_initialize`` 用来初始化 usb 主机协议栈,包括:初始化 usb 主机控制器,创建 roothub 设备,创建 hub 检测线程。 - -.. code-block:: C - - int usbh_initialize(uint8_t busid, uint32_t reg_base, usbh_event_handler_t event_handler); - -- **busid** bus id,从 0开始,不能超过 `CONFIG_USBHOST_MAX_BUS` -- **reg_base** hcd 寄存器基地址 -- **event_handler** host 事件回调函数,可以为NULL -- **return** 0 表示正常其他表示错误 - -usbh_find_class_instance -"""""""""""""""""""""""""""""""""""" - -``usbh_find_class_instance`` 根据注册的 class 名称查找对应的 class 结构体句柄。 - -.. code-block:: C - - void *usbh_find_class_instance(const char *devname); - -- **devname** class 名称 -- **return** class 结构体句柄 - -lsusb -"""""""""""""""""""""""""""""""""""" - -``lsusb`` 用来查看和操作 hub 上的设备信息。需要借助 shell 插件使用。 - -.. code-block:: C - - int lsusb(int argc, char **argv); - -SERIAL ------------------ - -usbh_serial_open -"""""""""""""""""""""""""""""""""""" - -``usbh_serial_open`` 根据路径打开一个串口设备。 - -.. code-block:: C - - struct usbh_serial *usbh_serial_open(const char *devname, uint32_t open_flags); - -- **devname** 串口路径 -- **open_flags** 打开标志,参考 `USBH_SERIAL_OFLAG_*` 定义 -- **return** serial 结构体句柄 - -usbh_serial_close -"""""""""""""""""""""""""""""""""""" - -``usbh_serial_close`` 关闭串口设备。 - -.. code-block:: C - - void usbh_serial_close(struct usbh_serial *serial); - -- **serial** serial 结构体句柄 - -usbh_serial_control -"""""""""""""""""""""""""""""""""""" - -``usbh_serial_control`` 对串口进行配置。 - -.. code-block:: C - - int usbh_serial_control(struct usbh_serial *serial, int cmd, void *arg); - -- **serial** serial 结构体句柄 -- **cmd** 控制命令,参考 `USBH_SERIAL_CMD_*` 定义 -- **arg** 控制参数指针 -- **return** 0 表示正常其他表示错误 - -usbh_serial_write -"""""""""""""""""""""""""""""""""""" - -``usbh_serial_write`` 向串口写数据。 - -.. code-block:: C - - int usbh_serial_write(struct usbh_serial *serial, const void *buffer, uint32_t buflen); - -- **serial** serial 结构体句柄 -- **buffer** 数据缓冲区指针 -- **buflen** 要写入的数据长度 -- **return** 实际写入的数据长度或者错误码 - -.. note:: 如果没有开启 CONFIG_USB_DCACHE_ENABLE,则 buffer 需要是 nocache区域,否则需要是对齐到 CONFIG_USB_ALIGN_SIZE 的区域。 - -usbh_serial_read -"""""""""""""""""""""""""""""""""""" - -``usbh_serial_read`` 从串口读数据。 **如果没有设置波特率,不允许使用该 API,设置波特率后,内部会开启 rx 接收并将数据写入 ringbuf **。 - -.. code-block:: C - - int usbh_serial_read(struct usbh_serial *serial, void *buffer, uint32_t buflen); - -- **serial** serial 结构体句柄 -- **buffer** 数据缓冲区指针 -- **buflen** 要读取的最大数据长度 -- **return** 实际读取的数据长度或者错误码 - -.. note:: 由于内部使用了 ringbuffer,对于用户的 buffer 属性没有限制。 - -usbh_serial_cdc_write_async -"""""""""""""""""""""""""""""""""""" - -``usbh_serial_cdc_write_async`` 异步从串口读数据。 **如果设置了波特率,不允许使用该 API**。 - -.. code-block:: C - - int usbh_serial_cdc_write_async(struct usbh_serial *serial, uint8_t *buffer, uint32_t buflen, usbh_complete_callback_t complete, void *arg); - -- **serial** serial 结构体句柄 -- **buffer** 数据缓冲区指针 -- **buflen** 要发送的数据长度 -- **complete** 读数据完成回调函数 -- **arg** 回调函数参数 -- **return** 0 表示正常其他表示错误 - -.. note:: 如果没有开启 CONFIG_USB_DCACHE_ENABLE,则 buffer 需要是 nocache区域,否则需要是对齐到 CONFIG_USB_ALIGN_SIZE 的区域。 - -usbh_serial_cdc_read_async -"""""""""""""""""""""""""""""""""""" - -``usbh_serial_cdc_read_async`` 异步从串口读数据。 **如果设置了波特率,不允许使用该 API,设置波特率后,内部会开启 rx 接收并将数据写入 ringbuf **。 - -.. code-block:: C - - int usbh_serial_cdc_read_async(struct usbh_serial *serial, uint8_t *buffer, uint32_t buflen, usbh_complete_callback_t complete, void *arg); - -- **serial** serial 结构体句柄 -- **buffer** 数据缓冲区指针 -- **buflen** 要读取的最大数据长度,一次最高 16K。并且需要是 wMaxPacketSize 的整数倍 -- **complete** 读数据完成回调函数 -- **arg** 回调函数参数 -- **return** 0 表示正常其他表示错误 - -.. note:: 如果没有开启 CONFIG_USB_DCACHE_ENABLE,则 buffer 需要是 nocache区域,否则需要是对齐到 CONFIG_USB_ALIGN_SIZE 的区域。 - -HID ------------------ - -MSC ------------------ - -usbh_msc_scsi_init -"""""""""""""""""""""""""""""""""""" - -``usbh_msc_scsi_init`` 初始化 msc scsi 设备。获取 MSC 状态和容量信息。 - -.. code-block:: C - - int usbh_msc_scsi_init(struct usbh_msc *msc_class); - -- **msc_class** msc 结构体句柄 -- **return** 0 表示正常其他表示错误 - -usbh_msc_scsi_write10 -"""""""""""""""""""""""""""""""""""" - -``usbh_msc_scsi_write10`` 向 msc 设备写数据。 - -.. code-block:: C - - int usbh_msc_scsi_write10(struct usbh_msc *msc_class, uint32_t start_sector, const uint8_t *buffer, uint32_t nsectors); - -- **msc_class** msc 结构体句柄 -- **start_sector** 起始扇区 -- **buffer** 数据缓冲区指针 -- **nsectors** 要写入的扇区数 -- **return** 返回 0 表示正常其他表示错误 - -usbh_msc_scsi_read10 -"""""""""""""""""""""""""""""""""""" - -``usbh_msc_scsi_read10`` 从 msc 设备读数据。 - -.. code-block:: C - - int usbh_msc_scsi_read10(struct usbh_msc *msc_class, uint32_t start_sector, uint8_t *buffer, uint32_t nsectors); - -- **msc_class** msc 结构体句柄 -- **start_sector** 起始扇区 -- **buffer** 数据缓冲区指针 -- **nsectors** 要读取的扇区数 -- **return** 返回 0 表示正常其他表示错误 - -NETWORK ------------------ - -已对接 lwIP 协议栈或者其他网络协议栈,使用 socket API 即可。 \ No newline at end of file diff --git a/docs/source/api/api_port.rst b/docs/source/api/api_port.rst deleted file mode 100644 index c214daa7..00000000 --- a/docs/source/api/api_port.rst +++ /dev/null @@ -1,266 +0,0 @@ -主从驱动 -========================= - -.. note:: 请注意,v1.1 版本开始增加 busid 形参,其余保持不变,所以 API 说明不做更新 - -device controller(dcd) -------------------------- - -usb_dc_init -"""""""""""""""""""""""""""""""""""" - -``usb_dc_init`` 用于初始化 usb device controller 寄存器,设置 usb 引脚、时钟、中断等等。 **此函数不对用户开放**。 - -.. code-block:: C - - int usb_dc_init(void); - -- **return** 返回 0 表示正确,其他表示错误 - -usb_dc_deinit -"""""""""""""""""""""""""""""""""""" - -``usb_dc_deinit`` 用于反初始化 usb device controller 寄存器。 **此函数不对用户开放**。 - -.. code-block:: C - - int usb_dc_deinit(void); - -- **return** 返回 0 表示正确,其他表示错误 - -usbd_set_address -"""""""""""""""""""""""""""""""""""" - -``usbd_set_address`` 设置设备地址。 **此函数不对用户开放**。 - -.. code-block:: C - - int usbd_set_address(const uint8_t addr); - -- **addr** 设备地址 -- **return** 返回 0 表示正确,其他表示错误 - -usbd_ep_open -"""""""""""""""""""""""""""""""""""" - -``usbd_ep_open`` 设置端点的属性,开启对应端点的中断。 **此函数不对用户开放**。 - -.. code-block:: C - - int usbd_ep_open(const struct usb_endpoint_descriptor *ep); - -- **ep** 端点描述符 -- **return** 返回 0 表示正确,其他表示错误 - -usbd_ep_close -"""""""""""""""""""""""""""""""""""" - -``usbd_ep_close`` 关闭端点。 **此函数不对用户开放**。 - -.. code-block:: C - - int usbd_ep_close(const uint8_t ep); - -- **ep** 端点地址 -- **return** 返回 0 表示正确,其他表示错误 - -usbd_ep_set_stall -"""""""""""""""""""""""""""""""""""" - -``usbd_ep_set_stall`` 将端点设置成 stall 状态并发送 stall 握手包。 **此函数对用户开放**。 - -.. code-block:: C - - int usbd_ep_set_stall(const uint8_t ep); - -- **ep** 端点地址 -- **return** 返回 0 表示正确,其他表示错误 - -usbd_ep_clear_stall -"""""""""""""""""""""""""""""""""""" - -``usbd_ep_clear_stall`` 清除端点的 stall 状态。 **此函数不对用户开放**。 - -.. code-block:: C - - int usbd_ep_clear_stall(const uint8_t ep); - -- **ep** 端点地址 -- **return** 返回 0 表示正确,其他表示错误 - -usbd_ep_is_stalled -"""""""""""""""""""""""""""""""""""" - -``usbd_ep_is_stalled`` 读取当前端点的 stall 状态。 **此函数不对用户开放**。 - -.. code-block:: C - - int usbd_ep_is_stalled(const uint8_t ep, uint8_t *stalled); - -- **ep** 端点地址 -- **return** 返回 1 表示 stalled,0 表示没有 stall - -usbd_ep_start_write -"""""""""""""""""""""""""""""""""""" - -``usbd_ep_start_write`` 启动端点发送,发送完成以后,会调用注册的 in 端点传输完成中断回调函数。该函数为异步发送。 **此函数对用户开放**。 - -.. code-block:: C - - int usbd_ep_start_write(const uint8_t ep, const uint8_t *data, uint32_t data_len); - -- **ep** in 端点地址 -- **data** 发送数据缓冲区 -- **data_len** 发送长度,原则上无限长,推荐 16K 字节以内 -- **return** 返回 0 表示正确,其他表示错误 - -usbd_ep_start_read -"""""""""""""""""""""""""""""""""""" - -``usbd_ep_start_read`` 启动端点接收,接收完成以后,会调用注册的 out 端点传输完成中断回调函数。该函数为异步接收。 **此函数对用户开放**。 - -.. code-block:: C - - int usbd_ep_start_read(const uint8_t ep, uint8_t *data, uint32_t data_len); - -- **ep** out 端点地址 -- **data** 接收数据缓冲区 -- **data_len** 接收长度,原则上无限长,推荐 16K 字节以内,并且推荐是最大包长的整数倍 -- **return** 返回 0 表示正确,其他表示错误 - -.. note:: 启动接收以后,以下两种情况,会进入传输完成中断:1、最后一包为短包(小于 EP MPS);2、接收总长度等于 data_len - -.. note:: 对于 bulk 传输,data_len 通常设计为 EP MPS,以下三种情况可以修改为多个 EP MPS: 固定长度;自定义协议并携带长度(MSC); 主机手动发送 ZLP 或者短包(RNDIS) - -host controller(hcd) ------------------------- - -usb_hc_init -"""""""""""""""""""""""""""""""""""" - -``usb_hc_init`` 用于初始化 usb host controller 寄存器,设置 usb 引脚、时钟、中断等等。 **此函数不对用户开放**。 - -.. code-block:: C - - int usb_hc_init(void); - -- **return** 返回 0 表示正确,其他表示错误 - -usb_hc_deinit -"""""""""""""""""""""""""""""""""""" - -``usb_hc_deinit`` 用于反初始化 usb host controller 寄存器。 **此函数不对用户开放**。 - -.. code-block:: C - - int usb_hc_deinit(void); - -- **return** 返回 0 表示正确,其他表示错误 - -usbh_roothub_control -"""""""""""""""""""""""""""""""""""" - -``usbh_roothub_control`` 用来对 roothub 发起请求, **此函数不对用户开放**。 - -.. code-block:: C - - int usbh_roothub_control(struct usb_setup_packet *setup, uint8_t *buf); - -- **setup** 请求 -- **buf** 接收缓冲区 -- **return** 返回 0 表示正确,其他表示错误 - -usbh_submit_urb -"""""""""""""""""""""""""""""""""""" - -``usbh_submit_urb`` 对某个地址上的端点进行数据请求。 **此函数对用户开放**。 - -.. code-block:: C - - int usbh_submit_urb(struct usbh_urb *urb); - -- **urb** usb 请求块 -- **return** 返回 0 表示正确,其他表示错误 - -其中, `urb` 结构体信息如下: - -.. code-block:: C - - struct usbh_urb { - usb_slist_t list; - void *hcpriv; - struct usbh_hubport *hport; - struct usb_endpoint_descriptor *ep; - uint8_t data_toggle; - uint8_t interval; - struct usb_setup_packet *setup; - uint8_t *transfer_buffer; - uint32_t transfer_buffer_length; - int transfer_flags; - uint32_t actual_length; - uint32_t timeout; - int errorcode; - uint32_t num_of_iso_packets; - uint32_t start_frame; - usbh_complete_callback_t complete; - void *arg; - #if defined(__ICCARM__) || defined(__ICCRISCV__) || defined(__ICCRX__) - struct usbh_iso_frame_packet *iso_packet; - #else - struct usbh_iso_frame_packet iso_packet[0]; - #endif - }; - -- **hcpriv** 主机控制器驱动私有成员 -- **hport** 当前 urb 使用的 hport -- **ep** 当前 urb 使用的 ep -- **data_toggle** 当前 data toggle -- **interval** urb 传输间隔,单位 us,如果 interval 大于 1000us,则需要使用软件定时器来维护 -- **setup** setup 请求缓冲区,端点0使用 -- **transfer_buffer** 传输的数据缓冲区 -- **transfer_buffer_length** 传输长度 -- **transfer_flags** 传输时携带的 flag -- **actual_length** 实际传输长度 -- **timeout** 传输超时时间,为 0 该函数则为非阻塞,可在中断中使用 -- **errorcode** 错误码 -- **num_of_iso_packets** iso 帧或者微帧个数 -- **complete** 传输完成回调函数 -- **arg** 传输完成时携带的参数 -- **iso_packet** iso 数据包 - -.. note:: timeout 如何没有特别对时间的要求,必须设置成 0xffffffff,原则上不允许超时,如果超时了,一般不能再继续工作 - -`errorcode` 可以返回以下值: - -.. code-block:: C - - #define USB_ERR_NOMEM 1 - #define USB_ERR_INVAL 2 - #define USB_ERR_NODEV 3 - #define USB_ERR_NOTCONN 4 - #define USB_ERR_NOTSUPP 5 - #define USB_ERR_BUSY 6 - #define USB_ERR_RANGE 7 - #define USB_ERR_STALL 8 - #define USB_ERR_BABBLE 9 - #define USB_ERR_NAK 10 - #define USB_ERR_DT 11 - #define USB_ERR_IO 12 - #define USB_ERR_SHUTDOWN 13 - #define USB_ERR_TIMEOUT 14 - -其中 `iso_packet` 结构体信息如下: - -.. code-block:: C - - struct usbh_iso_frame_packet { - uint8_t *transfer_buffer; - uint32_t transfer_buffer_length; - uint32_t actual_length; - int errorcode; - }; - -- **transfer_buffer** 传输的数据缓冲区 -- **transfer_buffer_length** 传输长度 -- **actual_length** 实际传输长度 -- **errorcode** 错误码 \ No newline at end of file diff --git a/docs/source/api/img/api_device1.png b/docs/source/api/img/api_device1.png deleted file mode 100644 index ba218b65..00000000 Binary files a/docs/source/api/img/api_device1.png and /dev/null differ diff --git a/docs/source/api/img/api_host1.png b/docs/source/api/img/api_host1.png deleted file mode 100644 index 82932f50..00000000 Binary files a/docs/source/api/img/api_host1.png and /dev/null differ diff --git a/docs/source/api/img/api_host2.png b/docs/source/api/img/api_host2.png deleted file mode 100644 index 7f6d60b8..00000000 Binary files a/docs/source/api/img/api_host2.png and /dev/null differ -- cgit v1.3.1