public:
virtual UInt32 GetBandwidthAvailable();
Returns the available bandwidth (in bytes) per frame for isochronous transfers.
Result: maximum number of bytes that a new iso pipe could transfer per frame given current allocations.public:
virtual UInt64 GetFrameNumber();
Returns the full current frame number of the bus the device is attached to
Result: The frame number.public:
virtual IOReturn abort(void);
abort a pipe, causing all outstanding I/O to complete with return code kIOReturnAborted
public:
virtual USBDeviceAddress address(void);
returns the bus address of the pipe's device
public:
virtual IOReturn clearStall(void);
clear any stall.
public:
// Do a control request over a Control pipe, using a memory descriptor virtual IOReturn controlRequest(IOUSBDevRequestDesc *request, IOUSBCompletion *completion = 0);
Make a control request There are two versions of this method, one uses a simple void * to point to the data portion of the transfer, the other uses an IOMemoryDescriptor to point to the data.
Name Description request parameter block for the control request completion describes action to take when the request has been executed
public:
UInt8 direction();
returns the direction of the pipe:kUSBOut/kUSBIn for a bulk or interrupt pipe, kUSBAnyDirn for a control pipe.
public:
const IOUSBController::Endpoint * endpoint();
returns a pointer to the Endpoint structure for the pipe.
public:
const IOUSBEndpointDescriptor * endpointDescriptor();
returns the endpoint descriptor for the pipe.
public:
UInt8 endpointNumber();
returns the endpoint number in the device that the pipe is connected to.
public:
virtual const IOUSBDescriptorHeader * findNextAssociatedDescriptor(const void *current, UInt8 type);
Find the next descriptor of the requested type associated with the endpoint.
Name Description current Descriptor to start searching from, NULL to start from beginning of list. type Descriptor type to search for, or kUSBAnyDesc to return any descriptor type.
public:
virtual IOReturn read(IOMemoryDescriptor * buffer, UInt64 frameStart, UInt32 numFrames, IOUSBIsocFrame *frameList, IOUSBIsocCompletion * completion = 0);
Read from an isochronous endpoint
Name Description buffer place to put the transferred data frameStart USB frame number of the frame to start transfer numFrames Number of frames to transfer frameList Bytes to transfer and result for each frame completion describes action to take when buffer has been filled
public:
virtual IOReturn read(IOMemoryDescriptor * buffer, IOUSBCompletion * completion = 0, IOByteCount * bytesRead = 0);
Read from an interrupt or bulk endpoint
Name Description buffer place to put the transferred data completion describes action to take when buffer has been filled bytesRead returns total bytes read for synchronous reads
public:
virtual IOReturn reset(void);
reset a pipe, causing all outstanding I/O to complete with return code kIOReturnAborted, and clear any stall.
public:
virtual UInt8 status(void);
Get the current state of the pipe (kIOUSBPipeStalled if stalled or 0 if active). We clear a pipe stall as soon as it is detected, so in practice this routine always returns zero
public:
UInt8 type();
returns the pipe type: kUSBControl, kUSBBulk or kUSBInterrupt.
public:
virtual IOReturn write(IOMemoryDescriptor * buffer, UInt64 frameStart, UInt32 numFrames, IOUSBIsocFrame *frameList, IOUSBIsocCompletion * completion = 0);
Write to an interrupt or bulk endpoint
Name Description buffer place to get the transferred data frameStart USB frame number of the frame to start transfer numFrames Number of frames to transfer frameList Bytes to transfer and result for each frame completion describes action to take when buffer has been emptied
public:
virtual IOReturn write(IOMemoryDescriptor * buffer, IOUSBCompletion * completion = 0);
Write to an interrupt or bulk endpoint
Name Description buffer place to get the transferred data completion describes action to take when buffer has been emptied
© 2000 Apple Computer, Inc. (Last Updated 2/23/2000)