Wander Lairson Costa wrote:
> I observed that benchmark firmware always expects isochronous transfer
> of a size multiple of packet size. Is this just a convention on the
> firmware or is there something about isochronous that I am missing
> out?

Isochronous requests are different from other requests.  The "multiple
of packet size" thing really only applies to isochronous IN requests. 
The reason is that isochronous data is not packed into your data
buffer.  Instead, each packet in your isoch request stands alone, and
gets mapped directly to a single microframe in time.  If your device has
an interval of 1, so that you get a shot in each microframe, and you
include 16 packets in your request, those 16 packets will span exactly
two milliseconds.  The first packet gets whatever is read in the first
microframe, the second packet gets whatever is read in the second
microframe, and so on.

So, if your device skips one interval, you will have a gap in your
buffer.  If your device sends short data in one interval, again you will
have a gap in your buffer.

Remember, in the USB protocol, a device is never told how large the read
buffer is.  All it sees is a signal that says "GO!".  Thus, at every
interval, the device has the right to send up to its maximum packet
size.  As a result, your buffer has to be ready to accept that much
data, every time.

-- 
Tim Roberts, t...@probo.com
Providenza & Boekelheide, Inc.


------------------------------------------------------------------------------
Master Visual Studio, SharePoint, SQL, ASP.NET, C# 2012, HTML5, CSS,
MVC, Windows 8 Apps, JavaScript and much more. Keep your skills current
with LearnDevNow - 3,200 step-by-step video tutorials by Microsoft
MVPs and experts. ON SALE this month only -- learn more at:
http://p.sf.net/sfu/learnnow-d2d
_______________________________________________
libusbx-devel mailing list
libusbx-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/libusbx-devel

Reply via email to