www.pudn.com > USB100.rar > USB100.H, change:1997-12-31,size:6873b


#ifndef   __USB100_H__ 
#define   __USB100_H__ 
 
 
#define MAXIMUM_USB_STRING_LENGTH 255 
 
// values for the bits returned by the USB GET_STATUS command 
#define USB_GETSTATUS_SELF_POWERED                0x01 
#define USB_GETSTATUS_REMOTE_WAKEUP_ENABLED       0x02 
 
 
#define USB_DEVICE_DESCRIPTOR_TYPE                0x01 
#define USB_CONFIGURATION_DESCRIPTOR_TYPE         0x02 
#define USB_STRING_DESCRIPTOR_TYPE                0x03 
#define USB_INTERFACE_DESCRIPTOR_TYPE             0x04 
#define USB_ENDPOINT_DESCRIPTOR_TYPE              0x05 
#define USB_POWER_DESCRIPTOR_TYPE                 0x06 
 
#define USB_DESCRIPTOR_MAKE_TYPE_AND_INDEX(d, i) ((USHORT)((USHORT)d<<8 | i)) 
 
// 
// Values for bmAttributes field of an 
// endpoint descriptor 
// 
 
#define USB_ENDPOINT_TYPE_MASK                    0x03 
 
#define USB_ENDPOINT_TYPE_CONTROL                 0x00 
#define USB_ENDPOINT_TYPE_ISOCHRONOUS             0x01 
#define USB_ENDPOINT_TYPE_BULK                    0x02 
#define USB_ENDPOINT_TYPE_INTERRUPT               0x03 
 
 
// 
// definitions for bits in the bmAttributes field of a  
// configuration descriptor. 
// 
#define USB_CONFIG_POWERED_MASK                   0xc0 
 
#define USB_CONFIG_BUS_POWERED                    0x80 
#define USB_CONFIG_SELF_POWERED                   0x40 
#define USB_CONFIG_REMOTE_WAKEUP                  0x20 
 
// 
// Endpoint direction bit, stored in address 
// 
 
#define USB_ENDPOINT_DIRECTION_MASK               0x80 
 
// test direction bit in the bEndpointAddress field of 
// an endpoint descriptor. 
#define USB_ENDPOINT_DIRECTION_OUT(addr)          (!((addr) & USB_ENDPOINT_DIRECTION_MASK)) 
#define USB_ENDPOINT_DIRECTION_IN(addr)           ((addr) & USB_ENDPOINT_DIRECTION_MASK) 
 
// 
// USB defined request codes 
// see chapter 9 of the USB 1.0 specifcation for 
// more information. 
// 
 
// These are the correct values based on the USB 1.0 
// specification 
 
#define USB_REQUEST_GET_STATUS                    0x00 
#define USB_REQUEST_CLEAR_FEATURE                 0x01 
 
#define USB_REQUEST_SET_FEATURE                   0x03 
 
#define USB_REQUEST_SET_ADDRESS                   0x05 
#define USB_REQUEST_GET_DESCRIPTOR                0x06 
#define USB_REQUEST_SET_DESCRIPTOR                0x07 
#define USB_REQUEST_GET_CONFIGURATION             0x08 
#define USB_REQUEST_SET_CONFIGURATION             0x09 
#define USB_REQUEST_GET_INTERFACE                 0x0A 
#define USB_REQUEST_SET_INTERFACE                 0x0B 
#define USB_REQUEST_SYNC_FRAME                    0x0C 
 
 
// 
// defined USB device classes 
// 
 
 
#define USB_DEVICE_CLASS_RESERVED           0x00 
#define USB_DEVICE_CLASS_AUDIO              0x01 
#define USB_DEVICE_CLASS_COMMUNICATIONS     0x02 
#define USB_DEVICE_CLASS_HUMAN_INTERFACE    0x03 
#define USB_DEVICE_CLASS_MONITOR            0x04 
#define USB_DEVICE_CLASS_PHYSICAL_INTERFACE 0x05 
#define USB_DEVICE_CLASS_POWER              0x06 
#define USB_DEVICE_CLASS_PRINTER            0x07 
#define USB_DEVICE_CLASS_STORAGE            0x08 
#define USB_DEVICE_CLASS_HUB                0x09 
#define USB_DEVICE_CLASS_VENDOR_SPECIFIC    0xFF 
 
// 
// USB defined Feature selectors 
// 
 
#define USB_FEATURE_ENDPOINT_STALL          0x0000 
#define USB_FEATURE_REMOTE_WAKEUP           0x0001 
#define USB_FEATURE_POWER_D0                0x0002 
#define USB_FEATURE_POWER_D1                0x0003 
#define USB_FEATURE_POWER_D2                0x0004 
#define USB_FEATURE_POWER_D3                0x0005 
 
typedef struct _USB_DEVICE_DESCRIPTOR { 
    UCHAR bLength; 
    UCHAR bDescriptorType; 
    USHORT bcdUSB; 
    UCHAR bDeviceClass; 
    UCHAR bDeviceSubClass; 
    UCHAR bDeviceProtocol; 
    UCHAR bMaxPacketSize0; 
    USHORT idVendor; 
    USHORT idProduct; 
    USHORT bcdDevice; 
    UCHAR iManufacturer; 
    UCHAR iProduct; 
    UCHAR iSerialNumber; 
    UCHAR bNumConfigurations; 
} USB_DEVICE_DESCRIPTOR, *PUSB_DEVICE_DESCRIPTOR; 
 
typedef struct _USB_ENDPOINT_DESCRIPTOR { 
    UCHAR bLength; 
    UCHAR bDescriptorType; 
    UCHAR bEndpointAddress; 
    UCHAR bmAttributes; 
    USHORT wMaxPacketSize; 
    UCHAR bInterval; 
} USB_ENDPOINT_DESCRIPTOR, *PUSB_ENDPOINT_DESCRIPTOR; 
 
// 
// values for bmAttributes Field in 
// USB_CONFIGURATION_DESCRIPTOR 
// 
 
#define BUS_POWERED                           0x80 
#define SELF_POWERED                          0x40 
#define REMOTE_WAKEUP                         0x20 
 
typedef struct _USB_CONFIGURATION_DESCRIPTOR { 
    UCHAR bLength; 
    UCHAR bDescriptorType; 
    USHORT wTotalLength; 
    UCHAR bNumInterfaces; 
    UCHAR bConfigurationValue; 
    UCHAR iConfiguration; 
    UCHAR bmAttributes; 
    UCHAR MaxPower; 
} USB_CONFIGURATION_DESCRIPTOR, *PUSB_CONFIGURATION_DESCRIPTOR; 
 
typedef struct _USB_INTERFACE_DESCRIPTOR { 
    UCHAR bLength; 
    UCHAR bDescriptorType; 
    UCHAR bInterfaceNumber; 
    UCHAR bAlternateSetting; 
    UCHAR bNumEndpoints; 
    UCHAR bInterfaceClass; 
    UCHAR bInterfaceSubClass; 
    UCHAR bInterfaceProtocol; 
    UCHAR iInterface; 
} USB_INTERFACE_DESCRIPTOR, *PUSB_INTERFACE_DESCRIPTOR; 
 
typedef struct _USB_STRING_DESCRIPTOR { 
    UCHAR bLength; 
    UCHAR bDescriptorType; 
    UCHAR bString[1]; 
} USB_STRING_DESCRIPTOR, *PUSB_STRING_DESCRIPTOR; 
 
// 
// USB power descriptor added to core specification 
// 
 
#define USB_SUPPORT_D0_COMMAND      0x01 
#define USB_SUPPORT_D1_COMMAND      0x02 
#define USB_SUPPORT_D2_COMMAND      0x04 
#define USB_SUPPORT_D3_COMMAND      0x08 
 
#define USB_SUPPORT_D1_WAKEUP       0x10 
#define USB_SUPPORT_D2_WAKEUP       0x20 
 
 
typedef struct _USB_POWER_DESCRIPTOR { 
    UCHAR bLength; 
    UCHAR bDescriptorType; 
    UCHAR bCapabilitiesFlags; 
    USHORT EventNotification; 
    USHORT D1LatencyTime; 
    USHORT D2LatencyTime; 
    USHORT D3LatencyTime; 
    UCHAR PowerUnit; 
    USHORT D0PowerConsumption; 
    USHORT D1PowerConsumption; 
    USHORT D2PowerConsumption; 
} USB_POWER_DESCRIPTOR, *PUSB_POWER_DESCRIPTOR; 
 
 
typedef struct _USB_COMMON_DESCRIPTOR { 
    UCHAR bLength; 
    UCHAR bDescriptorType; 
} USB_COMMON_DESCRIPTOR, *PUSB_COMMON_DESCRIPTOR; 
 
 
// 
// Standard USB HUB definitions  
// 
// See Chapter 11 
// 
 
typedef struct _USB_HUB_DESCRIPTOR { 
    UCHAR        bDescriptorLength;      // Length of this descriptor 
    UCHAR        bDescriptorType;        // Hub configuration type 
    UCHAR        bNumberOfPorts;         // number of ports on this hub 
    USHORT       wHubCharacteristics;    // Hub Charateristics 
    UCHAR        bPowerOnToPowerGood;    // port power on till power good in 2ms 
    UCHAR        bHubControlCurrent;     // max current in mA 
    // 
    // room for 255 ports power control and removable bitmask 
    UCHAR        bRemoveAndPowerMask[64]; 
} USB_HUB_DESCRIPTOR, *PUSB_HUB_DESCRIPTOR; 
 
 
#endif   /* __USB100_H__ */