c# - OUT 事务的 PING 流量控制

标签 c# c usb libusb

libusb 是否支持 OUT 事务的 PING 流量控制?

根据我正在连接的设备的数据表,“对于每个 OUT 数据包,都会向主机返回 NYET 握手。主机 ping OUT 端点,当设备的内部处理完成时,会在对 PING 的响应。”

是否可以使用libusb来实现这一点?

最佳答案

PING 是一个 token 数据包,由您的 USB 主机 Controller 而不是软件生成。 PING token 由您的主机 Controller 自动处理。

EHCI Controller 为每个队列头保留 PING 状态位(每个队列头将对应于每个端点)。您的主机 Controller 驱动程序将每个队列头的 ping 状态初始化为 0。

Ping 状态 -

0B -(执行OUT)- 主机 Controller 将在到此端点的下一个总线事务期间使用 OUT PID。

1B - (Do Ping) - 主机 Controller 将在下一个总线期间使用 PING PID 交易到此端点。

协议(protocol) -

主机 Controller 将首先发送OUT数据包。如果响应是 NAK 或 NYET, Controller 会将 ping 状态更改为 1 并开始发送 PING token 。 当 PING token 返回 ACK 时,主机 Controller 将引脚状态更改回 0 并重新传输 OUT token 。

所以软件开发者无需担心,您也无需执行任何操作。

关于c# - OUT 事务的 PING 流量控制,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48875338/

相关文章:

c# - 如何将文本移动到列表框的中心?

c - 使用 objdump 查看时,GCC 调试选项不考虑预处理器 #if

linux - usb-skeleton.c 不工作

c# - 多行自动调整大小的可滚动 FlowLayoutPanel

c# - 删除字符串的最佳方法是什么?

C# 未赋值局部变量列表的使用

c - 如何调用函数 glMultiDrawElements::GLenum -> GHC.Ptr.Ptr GLsizei -> GLenum -> GHC.Ptr.Ptr (GHC.Ptr.Ptr a) -> GLsizei -> IO ()

c - 如何从 typedef 生成静态结构

android - 使用 libusb 在 UCG102 上设置采样率

安卓 USB 输入/输出