Hello!
Here is a SCSI mass bulk scenario.
0. We check that the endpoint is shown as an input endpoint according to its status register (as it should be based on the configuration).
1. In response to scsi_inquiry, the CBW data are sent, which is displayed as successful on the analyzer.
2. Now we would like to send the corresponding CSW status data as well.
To do this we wait for the EndOfTransfer interrupt but it does not happen.
3. At last the host resets the USB line, and the EndOfTransfer interrupt suddenly fires. However, now the endpoint
is shown as an output endpoint according to its status register.
If I try to send immediately after the CBW data are sent, by busy waiting for the usb data register to empty,
then I can also see that the endpoint is not shown as an input endpoint by its status register.
Also,sometimes the endpoint gets halted, according to the status register, after the CBW is sent.
What do you make of this fact that the direction of endpoint which is configured as input
suddenly changes in the status register ?