Когда USB-хостам требуется IN-пакет нулевой длины в конце передачи управления чтением?

Я пишу код для USB-устройства. Предположим, что хост USB начинает передачу управляющего чтения для чтения некоторых данных с устройства, а объем запрошенных данных (wLength в пакете настройки) кратен максимальному размеру пакета конечной точки 0. Затем, после того как хост получит все данные (в форме нескольких транзакций IN с пакетами данных максимального размера), инициирует ли он другую транзакцию IN, чтобы увидеть, есть ли еще данные, хотя их больше не может быть?

Вот примерная последовательность событий, которая меня интересует:

  1. Процесс перечисления USB: сообщается, что максимальный размер пакета на конечной точке 0 равен 64.
  2. Транзакция SETUP-DATA-ACK запускает передачу управления чтением, wLength = 128.
  3. Транзакция IN-DATA-ACK доставляет хосту первые 64 байта данных.
  4. Транзакция IN-DATA-ACK доставляет на хост последние 64 байта данных.
  5. IN-DATA-ACK с пакетом DATA нулевой длины? Произойдет ли эта транзакция?
  6. Транзакция OUT-DATA-ACK завершает фазу состояния передачи; передача завершена.

Я проверил это на своем компьютере (Windows Vista, если это имеет значение), и получил ответ нет : хост был достаточно умен, чтобы знать, что с устройства больше нельзя получать данные , даже если все пакеты, отправленные устройством, были полными (максимальный размер, разрешенный для конечной точки 0). Мне интересно, есть ли какие-нибудь хосты, которые недостаточно и будут пытаться выполнить другую транзакцию IN и ожидать получения пакета данных нулевой длины.

Я думаю, что прочитал соответствующие части спецификаций USB 2.0 и USB 3.0 с usb.org, но я не нашел решения этой проблемы. Я был бы признателен, если бы кто-нибудь мог указать мне нужный раздел в любом из этих документов.

Я знаю, что может потребоваться пакет нулевой длины, если устройство решит отправить меньше данных, чем хост, запрошенный в wLength.

] Я знаю, что могу сделать свой код достаточно гибким, чтобы справиться с любым случаем, но я надеюсь, что мне не придется этого делать.

Спасибо всем, кто может ответить на этот вопрос!

7
задан David Grayson 18 September 2010 в 00:39
поделиться