#include <IOKit/usb/IOUSBHostPipe.h>
IOKit/usb/IOUSBHostPipe.h
@header IOUSBHostPipe.h
@brief IOUSBHostPipe is an object representing a USB endpoint.
@discussion
<h3>IOUSBPipe Migration</h3>
IOUSBHostPipe serves as a replacement for IOUSBPipe. Clients that previously used an IOUSBPipe can use the following guide to convert to IOUSBHostPipe.
<code>virtual IOReturn IOUSBPipe::Abort(IOOptionBits, IOReturn);</code><br>
Replacement: <code>abort(...);</code>
<code>virtual IOReturn IOUSBPipe::Reset();<br>
virtual IOReturn IOUSBPipe::ClearStall();</code><br>
Replacement: <code>clearStall(false)</code>
<code>virtual IOReturn IOUSBPipe::ClearPipeStall(bool);</code><br>
Replacement: <code>clearStall(...);</code>
<code>virtual IOReturn IOUSBPipe::Read(IOMemoryDescriptor*, IOUSBCompletion*, UInt32*);<br>
virtual IOReturn IOUSBPipe::Read(IOMemoryDescriptor*, UInt32, UInt32, IOUSBCompletion*, UInt32*);<br>
virtual IOReturn IOUSBPipe::Read(IOMemoryDescriptor*, UInt32, UInt32, IOByteCount, IOUSBCompletion*, UInt32*);<br>
virtual IOReturn IOUSBPipe::Read(IOMemoryDescriptor*, UInt32, UInt32, IOByteCount, IOUSBCompletionWithTimeStamp*, UInt32*);<br>
virtual IOReturn IOUSBPipe::Write(IOMemoryDescriptor*, UInt32, UInt32, IOUSBCompletion*);<br>
virtual IOReturn IOUSBPipe::Write(IOMemoryDescriptor*, UInt32, UInt32, IOByteCount, IOUSBCompletion*);<br>
virtual IOReturn IOUSBPipe::Write(IOMemoryDescriptor*, IOUSBCompletion*);<br>
virtual IOReturn IOUSBPipe::Read(IOMemoryDescriptor*, UInt64, UInt32, IOUSBIsocFrame*, IOUSBIsocCompletion*);<br>
virtual IOReturn IOUSBPipe::Read(IOMemoryDescriptor*, UInt64, UInt32, IOUSBLowLatencyIsocFrame*, IOUSBLowLatencyIsocCompletion*, UInt32);<br>
virtual IOReturn IOUSBPipe::Write(IOMemoryDescriptor*, UInt64, UInt32, IOUSBIsocFrame*, IOUSBIsocCompletion*);<br>
virtual IOReturn IOUSBPipe::Write(IOMemoryDescriptor*, UInt64, UInt32, IOUSBLowLatencyIsocFrame*, IOUSBLowLatencyIsocCompletion*, UInt32);</code><br>
Replacement: <code>io(...);</code>
<code>virtual IOReturn IOUSBPipe::ControlRequest(IOUSBDevRequestDesc*, IOUSBCompletion*, UInt32, UInt32);<br>
virtual IOReturn IOUSBPipe::ControlRequest(IOUSBDevRequest*, IOUSBCompletion*);<br>
virtual IOReturn IOUSBPipe::ControlRequest(IOUSBDevRequestDesc*, UInt32, UInt32, IOUSBCompletion*);<br>
virtual IOReturn IOUSBPipe::ControlRequest(IOUSBDevRequest*, UInt32, UInt32, IOUSBCompletion*);</code><br>
Replacement: <code>controlRequest(...);</code>
<code>virtual const IOUSBController::Endpoint* IOUSBPipe::GetEndpoint();<br>
virtual UInt8 IOUSBPipe::GetDirection();<br>
virtual UInt8 IOUSBPipe::GetType();<br>
virtual UInt8 IOUSBPipe::GetEndpointNumber();<br>
virtual UInt16 IOUSBPipe::GetMaxPacketSize();<br>
virtual UInt8 IOUSBPipe::GetInterval();</code><br>
Replacement: Use <code>getEndpointDescriptor()</code>, <code>getSuperSpeedEndpointCompanionDescriptor()</code>, and <code>getDescriptors()</code> with <code>StandardUSB::getEndpoint*</code> methods to retrieve endpoint characteristics
<code>virtual tUSBHostDeviceAddress IOUSBPipe::GetAddress();</code><br>
Replacement: <code>getDeviceAddress();</code>
<code>virtual UInt8 IOUSBPipe::GetSpeed();</code><br>
Replacement: <code>getSpeed();</code>
<code>virtual IOReturn IOUSBPipe::GetPipeStatus();</code><br>
Replacement: If an endpoint is halted, new IO requests will be rejected with an appropriate error until the condition is cleared.
<code>virtual IOReturn IOUSBPipe::SetPipePolicy(UInt16 maxPacketSize, UInt8 maxInterval);</code><br>
Replacement: <code>adjustPipe(...);</code>
<h3>IOUSBPipeV2 Migration</h3>
IOUSBPipeV2 implemented interfaces for USB 3.0 streaming endpoint support. IOUSBHostPipe provides interfaces to enable or disable streaming, and IOUSBHostStream provides interfaces to perform streaming IO.
<code>virtual IOReturn IOUSBPipeV2::CreateStreams(UInt32);</code><br>
Replacement: <code>enableStreams();</code> and <code>disableStreams();</code>
<code>virtual IOReturn IOUSBPipeV2::Read(UInt32, IOMemoryDescriptor*, UInt32, UInt32, IOByteCount, IOUSBCompletion*, IOByteCount*);<br>
virtual IOReturn IOUSBPipeV2::Write(UInt32, IOMemoryDescriptor*, UInt32, UInt32, IOByteCount, IOUSBCompletion*);<br>
virtual IOReturn IOUSBPipeV2::Abort(UInt32, IOOptionBits, IOReturn);</code><br>
Replacement: Use <code>copyStream</code> and IOUSBHostStream interfaces to perform IO to a streaming endpoint.
<code>virtual UInt32 IOUSBPipeV2::GetConfiguredStreams();</code><br>
Replacement: none
<code>virtual UInt32 IOUSBPipeV2::SupportsStreams();</code><br>
Replacement: <code>StandardUSB::getEndpointMaxStreams(...);</code>
<code>virtual const IOUSBSuperSpeedEndpointCompanionDescriptor* IOUSBPipeV2::GetSuperSpeedEndpointCompanionDescriptor();</code><br>
Replacement: <code>getSuperSpeedEndpointCompanionDescriptor(...);</code>
<code>virtual UInt8 IOUSBPipeV2::GetMult();</code><br>
Replacement: <code>StandardUSB::getEndpointMult(...);</code>
Refer to documentation for this method, as it may not return the same values as <code>IOUSBPipeV2::GetMult()</code>.
<code>virtual UInt8 IOUSBPipeV2::GetMaxBurst();<br>
virtual UInt16 IOUSBPipeV2::GetBytesPerInterval();</code><br>
Replacement: <code>StandardUSB::getEndpointBurstSize(...)</code> or <code>StandardUSB::getEndpointBurstSize32(...)</code>. Refer to documentation for the replacement methods, as they may not return the same values as <code>IOUSBPipeV2::GetMaxBurst()</code> or <code>IOUSBPipeV2::GetBytesPerInterval;</code>
macroIOUSBHostFamily_IOUSBHostPipe_h
#define IOUSBHostFamily_IOUSBHostPipe_h
macroTARGET_OS_HAS_USBDRIVERKIT_IOUSBHOSTPIPE
#define TARGET_OS_HAS_USBDRIVERKIT_IOUSBHOSTPIPE __has_include(<USBDriverKit/IOUSBHostPipe.h>)