Quando os hosts USB exigem um pacote IN de comprimento zero no final de uma transferência de leitura de controle?

Estou escrevendo código para um dispositivo USB. Suponha que o host USB inicie uma transferência de controle de leitura para ler alguns dados do dispositivo, e a quantidade de dados solicitados (wLength no pacote de instalação) é um múltiplo do tamanho máximo do pacote do Endpoint 0. Depois que o host receber todos os dados (na forma de várias transações IN com pacotes de dados de tamanho máximo), ele iniciará outra transação IN para verificar se há mais dados, mesmo que não possa haver mais?

Aqui está um exemplo de sequência de eventos que eu estou pensando:

Processo de enumeração USB: o tamanho máximo do pacote no terminal 0 é 64.A transação SETUP-DATA-ACK inicia uma transferência de leitura de controle, wLength = 128.A transação IN-DATA-ACK fornece os primeiros 64 bytes de dados para o host.A transação IN-DATA-ACK fornece os últimos 64 bytes de dados para o host.IN-DATA-ACK com pacote de dados de comprimento zero? Essa transação acontece alguma vez?A transação OUT-DATA-ACK completa a fase de status da transferência; a transferência acabou.

Eu testei isso no meu computador (Windows Vista, se houver) e a resposta foinão: o host foi inteligente o suficiente para saber que não é possível receber mais dados do dispositivo, mesmo que todos os pacotes enviados pelo dispositivo estivessem cheios (tamanho máximo permitido no ponto de extremidade 0). Eu estou querendo saber se existem hosts que sãonão inteligente o suficiente e tentará executar outra transação IN e esperará receber um pacote de dados de tamanho zero.

Acho que li as partes relevantes das especificações USB 2.0 e USB 3.0 do usb.org, mas não encontrei esse problema resolvido. Eu apreciaria se alguém pudesse me indicar a seção correta em qualquer um desses documentos.

Eu sei que um pacote de tamanho zero pode ser necessário se o dispositivo optar por enviar menos dados do que o host solicitado em wLength.

Sei que poderia tornar meu código flexível o suficiente para lidar com ambos os casos, mas espero não precisar.

Obrigado a quem puder responder a esta pergunta!

questionAnswers(4)

yourAnswerToTheQuestion