The deviceLocation is an Apple specific property that describes the bus 
topology to which the device is connected.  The most significant byte contains 
the bus number; a unique value given to a host controller and also used when 
generating the interface numbers.  The following nibbles correspond to the port 
number(s) through which the device is connected.  For example:

FaceTime HD Camera (Built-in)@1a110000  <class IOUSBHostDevice, id 0x10000f263, 
registered, matched, active, busy 0 (9 ms), retain 24>
The bus number is 0x1a and the camera is connected to port 1 of the hub that is 
connected to root port 1 on the host controller.

The ioFrameCount field, though not currently supported, is intended to be used 
for isochronous endpoints as their I/O model is slightly different in that you 
pass down a vector describing I/O for multiple USB frames.  On completion you 
would receive the header followed by and ioFrameCount array of isochronous 
header followed by the packet data.  The isochronous header is currently 
defined as follows:
struct
{
    // Control information
    uint32_t frameHeaderLength;
    
    // Frame information
    uint32_t frameLength;
    uint64_t frameNumber;
    uint64_t ioTimestamp;
} __attribute__((packed, aligned (sizeof(uint32_t))));

—scott


> On Dec 10, 2016, at 7:00 PM, Guy Harris <g...@alum.mit.edu> wrote:
> 
> On Dec 9, 2016, at 1:37 PM, Scott Deandrea <sdeand...@apple.com> wrote:
> 
>>   uint32_t deviceLocation;    // locationID of the device
> 
> So is a locationID something defined by a USB specification, by Apple in a 
> fashion specific to Darwin, or something else?  What is the format of a 
> locationID?
> 
>>   uint32_t ioFrameCount;      // number of isoch frames following
> 
> So would that value affect the interpretation of the payload and, if so, how?

_______________________________________________
tcpdump-workers mailing list
tcpdump-workers@lists.tcpdump.org
https://lists.sandelman.ca/mailman/listinfo/tcpdump-workers

Reply via email to