USBHub.h |
Includes: |
Constants and definitions used with Hub devices.
IOUSBHubDescriptor |
typedef struct IOUSBHubDescriptor IOUSBHubDescriptor;
USB Hub Descriptor. See the USB HID Specification at http://www.usb.org.
See Also
IOUSBHubPortReEnumerateParam |
typedef struct IOUSBHubPortReEnumerateParam IOUSBHubPortReEnumerateParam;
Used to specify the port that needs to be reenumerated
IOUSBHubStatus |
typedef struct IOUSBHubStatus IOUSBHubStatus;
Used to get the port status and change flags using GetPortStatus()
See Also
IOUSBHubDescriptor |
struct IOUSBHubDescriptor { UInt8 length; UInt8 hubType; UInt8 numPorts; UInt16 characteristics __attribute__((packed)); UInt8 powerOnToGood; /* Port settling time, in 2ms */ UInt8 hubCurrent; /* These are received packed, will have to be unpacked */ UInt8 removablePortFlags[8]; UInt8 pwrCtlPortFlags[8]; };
USB Hub Descriptor. See the USB HID Specification at http://www.usb.org.
See Also
IOUSBHubStatus |
struct IOUSBHubStatus { UInt16 statusFlags; UInt16 changeFlags; };
Used to get the port status and change flags using GetPortStatus()
See Also
Hub Descriptor Type |
enum { kUSBHubDescriptorType = 0x29 };
Hub Device Requests |
enum { kClearHubFeature = ( ( ( UInt16)kUSBRqClearFeature << 8) + ( ( UInt16) kUSBDevice + ( ( UInt16) kUSBClass << kUSBRqTypeShift) + ( ( UInt16) kUSBOut << kUSBRqDirnShift))), kClearPortFeature = ( ( ( UInt16)kUSBRqClearFeature << 8) + ( ( UInt16) kUSBOther + ( ( UInt16) kUSBClass << kUSBRqTypeShift) + ( ( UInt16) kUSBOut << kUSBRqDirnShift))), kGetPortState = ( ( ( UInt16)kUSBRqGetState << 8) + ( ( UInt16) kUSBOther + ( ( UInt16) kUSBClass << kUSBRqTypeShift) + ( ( UInt16) kUSBIn << kUSBRqDirnShift))), kGetHubDescriptor = ( ( ( UInt16)kUSBRqGetDescriptor << 8) + ( ( UInt16) kUSBDevice + ( ( UInt16) kUSBClass << kUSBRqTypeShift) + ( ( UInt16) kUSBIn << kUSBRqDirnShift))), kGetHubStatus = ( ( ( UInt16)kUSBRqGetStatus << 8) + ( ( UInt16) kUSBDevice + ( ( UInt16) kUSBClass << kUSBRqTypeShift) + ( ( UInt16) kUSBIn << kUSBRqDirnShift))), kGetPortStatus = ( ( ( UInt16)kUSBRqGetStatus << 8) + ( ( UInt16) kUSBOther + ( ( UInt16) kUSBClass << kUSBRqTypeShift) + ( ( UInt16) kUSBIn << kUSBRqDirnShift))), kSetHubDescriptor = ( ( ( UInt16)kUSBRqGetDescriptor << 8) + ( ( UInt16) kUSBDevice + ( ( UInt16) kUSBClass << kUSBRqTypeShift) + ( ( UInt16) kUSBOut << kUSBRqDirnShift))), kSetHubFeature = ( ( ( UInt16)kUSBRqSetFeature << 8) + ( ( UInt16) kUSBDevice + ( ( UInt16) kUSBClass << kUSBRqTypeShift) + ( ( UInt16) kUSBOut << kUSBRqDirnShift))), kSetPortFeature = ( ( ( UInt16)kUSBRqSetFeature << 8) + ( ( UInt16) kUSBOther + ( ( UInt16) kUSBClass << kUSBRqTypeShift) + ( ( UInt16) kUSBOut << kUSBRqDirnShift))) };
Encoding of the hub specific standard requests
Request bmRequestType bRequest wValue wIndex wLength Data ClearHubFeature 0010 0000B CLEAR_FEATURE Feature Zero Zero None ClearPortFeature 0010 0011B Feature Port Zero None GetBusState 1010 0011B GET_STATE Zero Port One Port Bus State GetHubDescriptor 1010 0000B GET_DESCRIPTOR Type Zero Length Descriptor GetHubStatus 1010 0000B GET_STATUS Zero Zero Four Hub Status GetPortStatus 1010 0011B Zero Port Four Port Status SetHubDescriptor 0010 0000B SET_DESCRIPTOR Type Zero Length Descriptor SetHubFeature 0010 0000B SET_FEATURE Feature Zero Zero None SetPortFeature 0010 0011B Feature Port Zero None
HubCharacteristics |
enum { kPerPortSwitchingBit = ( 1 << 0), kNoPowerSwitchingBit = ( 1 << 1), kCompoundDeviceBit = ( 1 << 2), kPerPortOverCurrentBit = ( 1 << 3), kNoOverCurrentBit = ( 1 << 4), kHubPortIndicatorBit = 7, kHubPortIndicatorMask = 0x0080 };
HubFeatures |
enum { kUSBHubLocalPowerChangeFeature = 0, /* Hub features */ kUSBHubOverCurrentChangeFeature = 1, kUSBHubPortConnectionFeature = 0, /* port features */ kUSBHubPortEnableFeature = 1, kUSBHubPortSuspendFeature = 2, kUSBHubPortOverCurrentFeature = 3, kUSBHubPortResetFeature = 4, kUSBHubPortPowerFeature = 8, kUSBHubPortLowSpeedFeature = 9, kUSBHubPortConnectionChangeFeature = 16, kUSBHubPortEnableChangeFeature = 17, kUSBHubPortSuspendChangeFeature = 18, kUSBHubPortOverCurrentChangeFeature = 19, kUSBHubPortResetChangeFeature = 20, kUSBHubPortTestFeature = 21, kUSBHubPortIndicatorFeature = 22 };
Used with SET_FEATURE to set hub and port features
HubPortStatus |
enum { kHubPortConnection = 0x0001, kHubPortEnabled = 0x0002, kHubPortSuspend = 0x0004, kHubPortOverCurrent = 0x0008, kHubPortBeingReset = 0x0010, kHubPortPower = 0x0100, kHubPortLowSpeed = 0x0200, kHubPortHighSpeed = 0x0400, kHubPortTestMode = 0x0800, kHubPortIndicator = 0x1000, // these are the bits which cause the hub port state machine to keep moving kHubPortStateChangeMask = kHubPortConnection | kHubPortEnabled | kHubPortSuspend | kHubPortOverCurrent | kHubPortBeingReset };
Used to decode the Port Status and Change
HubStatus |
enum { kHubLocalPowerStatus = 1, kHubOverCurrentIndicator = 2, kHubLocalPowerStatusChange = 1, kHubOverCurrentIndicatorChange = 2 };
Used to decode the Hub Status and Change
PortIndicatorSelectors |
enum { kHubPortIndicatorAutomatic = 0, kHubPortIndicatorAmber, kHubPortIndicatorGreen, kHubPortIndicatorOff };
PowerSwitching |
enum { kHubSupportsGangPower = 0, kHubSupportsIndividualPortPower = 1, kHubPortSetPowerOff = 0, kHubPortSetPowerOn = 1 };
Root Hub specific |
enum { kPrdRootHubApple = 0x8005, // ProductID for classic speed root hubs kPrdRootHubAppleE = 0x8006, // ProductID for high speed root hubs kUSBRootHubPollingRate = 32 // Enpoint polling rate interval for root hubs };
Last Updated: 2010-07-29