Barry,
To be more precise, my device expects sending 36 bytes in the response of an INQUIRY command.
The MSC compliance test sends 7 INQUIRY commands with the following allocation lengths:
- 1 - Allocation length: 0 byte
- 2 - Allocation length: 1 byte
- 3 - Allocation length: 2 bytes
- 4 - Allocation length: 4 bytes
- 5 - Allocation length: 5 bytes
- 6 - Allocation length: 36 bytes
- 7 - Allocation length: 255 bytes
When receiving the five first INQUIRY commands, my device sends data up to allocation length and returns a CSW status equal to 02h (phase error) as required by the
USB Mass-Storage Bulk-Only Transport protocol (thirteen cases, case 7, Hi < Di). This causes the compliance test to fail (it expects to receive a CSW status of 00h, which is not in line with the specification).
The specification says in the case where the device expects to send more data than the host requested:
If the device either intends to send more data than the host indicated or intends to receive data from
the host, then:
If the device actually transfers less data than the host indicated, then:
The device may end the transfer with a short packet.
The device shall STALL the Bulk-In pipe.
If the device actually transfers dCBWDataTransferLength then:
The device may STALL the Bulk-In pipe.
The device shall set bCSWStatus to 02h
So, my question is, should I design for compliance test (return CSW status 00h even) and thus, not respect the specification?
What do you mean by
REALLYSTRICTVALIDATION?