Holger Hans Peter Freyther wrote:
I 'reverted' fe88b83e80df8be0351ff38ee6a77b855b0cd0a9 that added sending a ZPL for every thing length % 8 == 0 and the device started to work on OSX. I assume we will need to look at the USB spec. :)
I think that commit is mostly correct, it just overlooks the condition of total data length == requested length, in which case I think no zlp should be sent. Also, hard coding 8 as packet size is not awesome, the value used by the host for this is bMaxPacketSize0 in the device descriptor. (See 9.6.1) At least a define would be good, full-speed devices can choose value here.
The same commit also exists earlier in the branch as 8cc090e310545f7858558f74116f707318daf682 with no merges in between. I'm not sure what happened there.
Holger Hans Peter Freyther wrote:
"8.5.3.2 Variable-length Data Stage"
and 9.4.3 Get Descriptor.
What is a Control Pipe?
USB spec and Windows like to refer to pipes, I think it's a bit redundant, transfers to and from endpoints is good enough imo. :)
//Peter