Mailing Lists: Apple Mailing Lists

Image of Mac OS face in stamp
 
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: Weird IOUSBPipe::GetMaxPacketSize results



Mark,

Are you aware of table 9-13 in the USB 2.0 spec. It details how the wMaxPacketSize field is encoded for high-speed isoc endpoints Bits 10-0 contain the packet size, and bits 12-11 contain an encoding detailing how many "additional" packets may be sent per microframe.

I know we debated whether GetMaxPacketSize should return the value of the wMaxPacketSize field, or the sum of the number of bytes per frame that should be returned. So, we may be helping your confusion.

David Ferguson
USB Software Team



At 11:49 AM -0500 7/6/05, Mark Cookson wrote:
This is weird, and I'm not expecting it to be a IOUSBFamily bug, but I'm
hoping that someone can point me where I should be looking in my code or the
firmware...

The device reports that it has 6 interfaces, and 3 of the 4 that are isoc
streaming seem to work just fine, but the last one seems have a problem with
it's GetMaxPacketSize() result.

The descriptor I get from the device has this for the interface:

 9  4  5  0  0  1  2  0  0 AUDIO STREAM 5 -|
 9  4  5  1  1  1  2  0  0                 |
 7 24  1  4  1  1  0                       |
 e 24  2  1  2  3 18  2 44 ac  0 80 bb  0  |
 9  5 86  d 26  1  1  0  0                 |
 7 25  1  1  0  0  0                       |
 9  4  5  2  1  1  2  0  0                 |
 7 24  1  4  1  1  0                       |
 e 24  2  1  2  2 10  2 44 ac  0 80 bb  0  |
 9  5 86  9 c4  0  1  0  0                 |
 7 25  1  1  0  0  0                       |
 9  4  5  3  1  1  2  0  0                 |
 7 24  1  4  1  1  0                       |
 e 24  2  1  2  3 18  2 88 58  1  0 77  1  |
 9  5 86  9 46  2  1  0  0                 |
 7 25  1  1  0  0  0 ----------------------|

This looks like a perfectly valid interface with valid information for the
endpoints.

When I do GetMaxPacketSize() for alternate setting 1 I get 0 (should be
0x126), when I do it for 2 I get 0x126 (should be 0xc4), and when I do it
for 3 I get 0 (should be 0x246).

Just to make sure I'm on the right interface I call GetInterfaceNumber,
GetAlternateSetting, GetEndpointNumber, GetDirection, and GetType, and they
all report the correct values.  GetInterfaceNumber reports 5,
GetAlternateSetting reports 1 (or 2 or 3), GetEndpointNumber reports 6,
GetDirection reports 1, kUSBIn, GetType reports 1, kUSBIsoc.

The other interfaces are substantially similar to this interface (but have
different endpoint numbers 0x1, 0x81, 0x3, 0x4, 0x85, plus this one, 0x86)
and appear to work (though I don't deal with the audio MIDI interfaces).

Any ideas what might be causing things to go wrong?

Thanks,
Mark
--
Mark Cookson
M-Audio, a part of Avid
225 Locust St.
Hudson, WI 54016


_______________________________________________ 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

This email sent to email@hidden

_______________________________________________ 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

This email sent to email@hidden
References: 
 >Weird IOUSBPipe::GetMaxPacketSize results (From: Mark Cookson <email@hidden>)



Visit the Apple Store online or at retail locations.
1-800-MY-APPLE

Contact Apple | Terms of Use | Privacy Policy

Copyright © 2007 Apple Inc. All rights reserved.