Just a couple of minor corrections/clarifications:
On Feb 11, 2005, at 7:46 AM, Steve Sisak wrote:
First, USB timeouts on Mac OS X don't work the way -- despite being
able to specify them to millisecond resolution, the actual
implementation has a resolution measured in seconds -- meaning that
they are suitable for detecting a hung device but not for implementing
a communication protocol.
That's correct. We have a timer that fires every second and checks for
potential timeout conditions. We will return a transaction within 1
second of it's timeout expiring.
(For a high speed device, maxPacketSize is almost always going to be
64 bytes, so for the rest of this conversation, assume that "64" means
"the endpoint's maximum packet size" -- similarly, 1024 means the size
of your buffer)
I assume you mean "For a full speed device".
If the device sends less than 1024 bytes but a multiple of 64 bytes,
BulkRead() will hang until the transfer is aborted by the USB stack
which, IIRC, is something like 3 seconds, and therefore not useful.
We do not ever time out a Bulk Read unless the client specified a
timeout with a ReadPipeTO(). Control transactions, on the other hand,
are timed out after 5 seconds, per the USB spec. Interrupt reads are
never timed out -- it wouldn't make sense to do so. Isoch, by its
nature, is also not timed out.
Hope this helps,
-Steve
P.S. Sorry this was long, but this seems to be almost an FAQ and I
haven't seen a clear answer posted in a long time.
Thanks for the FAQ.
--
Fernando Urbina
USB Technology Team
Apple Computer, Inc.
_______________________________________________
Do not post admin requests to the list. They will be ignored.
Usb mailing list (email@hidden)
Help/Unsubscribe/Update your Subscription:
http://lists.apple.com/mailman/options/usb/email@hidden