ADC Home > Reference Library > Reference > Darwin > Kernel Framework Reference

 


USBHub.h

Include Path:

<IOKit/usb/USBHub.h>

Path:

/System/Library/Frameworks/Kernel.framework/Versions/A/Headers/IOKit/usb/USBHub.h

Includes:

Overview

This header contains the constants and definitions used with USB hub devices.



Typedefs


IOUSBHubDescriptor


See Also:

IOUSBHubDescriptor

typedef struct IOUSBHubDescriptor IOUSBHubDescriptor;  
Discussion

USB Hub Descriptor. See the USB HID Specification at http://www.usb.org.


IOUSBHubPortReEnumerateParam


typedef struct IOUSBHubPortReEnumerateParam IOUSBHubPortReEnumerateParam;  
Discussion

Used to specify the port that needs to be reenumerated


IOUSBHubStatus


See Also:

IOUSBHubStatus

typedef struct IOUSBHubStatus IOUSBHubStatus;  
Discussion

Used to get the port status and change flags using GetPortStatus()

Structs and Unions


IOUSBHubDescriptor


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]; 
};  
Discussion

USB Hub Descriptor. See the USB HID Specification at http://www.usb.org.


IOUSBHubStatus


See Also:

IOUSBHubStatus

struct IOUSBHubStatus { 
    UInt16 statusFlags; 
    UInt16 changeFlags; 
};  
Discussion

Used to get the port status and change flags using GetPortStatus()

Enumerations


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))) 
};  
Discussion

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 
};  
Discussion

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 
};  
Discussion

Used to decode the Port Status and Change


HubStatus


enum { 
    kHubLocalPowerStatus = 1, 
    kHubOverCurrentIndicator = 2, 
    kHubLocalPowerStatusChange = 1, 
    kHubOverCurrentIndicatorChange = 2 
};  
Discussion

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 
};  


Did this document help you?
Yes: Tell us what works for you.
It’s good, but: Report typos, inaccuracies, and so forth.
It wasn’t helpful: Tell us what would have helped.

 

Last Updated: 2008-12-19