USB/IP:iso 数据包描述符的大小是多少?

问题描述 投票:0回答:1

我正在尝试在 Haskell 中编写虚拟 USB 设备。因此,https://docs.kernel.org/usb/usbip_protocol.html看起来像是协议的规范。

我已经编写了足够的代码来解码发送到服务器的所有数据包(仅此而已),并编写了足够的代码来编写发送到客户端的所有数据包(仅此而已),至少按照以前引用的规范是这样。除了 iso_packet_descriptor 之外,它的大小看起来从未被指定过,而且看起来也不是它的推导说明。

那么,我应该期望什么大小?,如果是数据包的其余大小,我应该如何实现它?

haskell linux-device-driver
1个回答
0
投票

对于非 ISO 端点,字段大小始终为零。对于 ISO 端点,该字段将包含一个 ISO 描述符数组,每个描述符长 16 个字节,数据包中的描述符数量由数据包的

number_of_packets
字段给出。

请注意,尽管文档对于非 ISO 端点应将

number_of_packets
设置为
0xFFFFFFFF
,但 Linux USB/IP 实现不会执行此操作。非 ISO 端点将此值由发送方设置为 0x00000000,并且该值将被接收方忽略。

尽管如此,您应该能够通过检查

number_of_packets
安全地计算字段大小。如果是
0xFFFFFFFF
0
,则该字段的长度为零。不然就是
number_of_packets * 16

请注意,如果您正在为不支持 ISO 传输的虚拟设备编写代码,则该字段的长度将始终为零,您无需担心它。

© www.soinside.com 2019 - 2024. All rights reserved.