00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023 #ifndef __USB100_H
00024 #define __USB100_H
00025
00026 #if __GNUC__ >=3
00027 #pragma GCC system_header
00028 #endif
00029
00030 #ifdef __cplusplus
00031 extern "C" {
00032 #endif
00033
00034 #include "ntddk.h"
00035
00036 #define MAXIMUM_USB_STRING_LENGTH 255
00037
00038 #define USB_DEVICE_CLASS_RESERVED 0x00
00039 #define USB_DEVICE_CLASS_AUDIO 0x01
00040 #define USB_DEVICE_CLASS_COMMUNICATIONS 0x02
00041 #define USB_DEVICE_CLASS_HUMAN_INTERFACE 0x03
00042 #define USB_DEVICE_CLASS_MONITOR 0x04
00043 #define USB_DEVICE_CLASS_PHYSICAL_INTERFACE 0x05
00044 #define USB_DEVICE_CLASS_POWER 0x06
00045 #define USB_DEVICE_CLASS_PRINTER 0x07
00046 #define USB_DEVICE_CLASS_STORAGE 0x08
00047 #define USB_DEVICE_CLASS_HUB 0x09
00048 #define USB_DEVICE_CLASS_VENDOR_SPECIFIC 0xFF
00049
00050 #define USB_RESERVED_DESCRIPTOR_TYPE 0x06
00051 #define USB_CONFIG_POWER_DESCRIPTOR_TYPE 0x07
00052 #define USB_INTERFACE_POWER_DESCRIPTOR_TYPE 0x08
00053
00054 #define USB_REQUEST_GET_STATUS 0x00
00055 #define USB_REQUEST_CLEAR_FEATURE 0x01
00056 #define USB_REQUEST_SET_FEATURE 0x03
00057 #define USB_REQUEST_SET_ADDRESS 0x05
00058 #define USB_REQUEST_GET_DESCRIPTOR 0x06
00059 #define USB_REQUEST_SET_DESCRIPTOR 0x07
00060 #define USB_REQUEST_GET_CONFIGURATION 0x08
00061 #define USB_REQUEST_SET_CONFIGURATION 0x09
00062 #define USB_REQUEST_GET_INTERFACE 0x0A
00063 #define USB_REQUEST_SET_INTERFACE 0x0B
00064 #define USB_REQUEST_SYNC_FRAME 0x0C
00065
00066 #define USB_GETSTATUS_SELF_POWERED 0x01
00067 #define USB_GETSTATUS_REMOTE_WAKEUP_ENABLED 0x02
00068
00069 #define BMREQUEST_HOST_TO_DEVICE 0
00070 #define BMREQUEST_DEVICE_TO_HOST 1
00071
00072 #define BMREQUEST_STANDARD 0
00073 #define BMREQUEST_CLASS 1
00074 #define BMREQUEST_VENDOR 2
00075
00076 #define BMREQUEST_TO_DEVICE 0
00077 #define BMREQUEST_TO_INTERFACE 1
00078 #define BMREQUEST_TO_ENDPOINT 2
00079 #define BMREQUEST_TO_OTHER 3
00080
00081
00082 #define USB_DEVICE_DESCRIPTOR_TYPE 0x01
00083 #define USB_CONFIGURATION_DESCRIPTOR_TYPE 0x02
00084 #define USB_STRING_DESCRIPTOR_TYPE 0x03
00085 #define USB_INTERFACE_DESCRIPTOR_TYPE 0x04
00086 #define USB_ENDPOINT_DESCRIPTOR_TYPE 0x05
00087
00088 typedef struct _USB_COMMON_DESCRIPTOR {
00089 UCHAR bLength;
00090 UCHAR bDescriptorType;
00091 } USB_COMMON_DESCRIPTOR, *PUSB_COMMON_DESCRIPTOR;
00092
00093 #define USB_DESCRIPTOR_MAKE_TYPE_AND_INDEX(d, i) ((USHORT)((USHORT)d << 8 | i))
00094
00095
00096 #define USB_CONFIG_POWERED_MASK 0xc0
00097 #define USB_CONFIG_BUS_POWERED 0x80
00098 #define USB_CONFIG_SELF_POWERED 0x40
00099 #define USB_CONFIG_REMOTE_WAKEUP 0x20
00100
00101 #include <pshpack1.h>
00102 typedef struct _USB_CONFIGURATION_DESCRIPTOR {
00103 UCHAR bLength;
00104 UCHAR bDescriptorType;
00105 USHORT wTotalLength;
00106 UCHAR bNumInterfaces;
00107 UCHAR bConfigurationValue;
00108 UCHAR iConfiguration;
00109 UCHAR bmAttributes;
00110 UCHAR MaxPower;
00111 } USB_CONFIGURATION_DESCRIPTOR, *PUSB_CONFIGURATION_DESCRIPTOR;
00112 #include <poppack.h>
00113
00114 typedef struct _USB_DEVICE_DESCRIPTOR {
00115 UCHAR bLength;
00116 UCHAR bDescriptorType;
00117 USHORT bcdUSB;
00118 UCHAR bDeviceClass;
00119 UCHAR bDeviceSubClass;
00120 UCHAR bDeviceProtocol;
00121 UCHAR bMaxPacketSize0;
00122 USHORT idVendor;
00123 USHORT idProduct;
00124 USHORT bcdDevice;
00125 UCHAR iManufacturer;
00126 UCHAR iProduct;
00127 UCHAR iSerialNumber;
00128 UCHAR bNumConfigurations;
00129 } USB_DEVICE_DESCRIPTOR, *PUSB_DEVICE_DESCRIPTOR;
00130
00131 #define USB_ENDPOINT_DIRECTION_MASK 0x80
00132
00133 #define USB_ENDPOINT_DIRECTION_OUT(x) (!((x) & USB_ENDPOINT_DIRECTION_MASK))
00134 #define USB_ENDPOINT_DIRECTION_IN(x) ((x) & USB_ENDPOINT_DIRECTION_MASK)
00135
00136
00137 #define USB_ENDPOINT_TYPE_MASK 0x03
00138 #define USB_ENDPOINT_TYPE_CONTROL 0x00
00139 #define USB_ENDPOINT_TYPE_ISOCHRONOUS 0x01
00140 #define USB_ENDPOINT_TYPE_BULK 0x02
00141 #define USB_ENDPOINT_TYPE_INTERRUPT 0x03
00142
00143 #include <pshpack1.h>
00144 typedef struct _USB_ENDPOINT_DESCRIPTOR {
00145 UCHAR bLength;
00146 UCHAR bDescriptorType;
00147 UCHAR bEndpointAddress;
00148 UCHAR bmAttributes;
00149 USHORT wMaxPacketSize;
00150 UCHAR bInterval;
00151 } USB_ENDPOINT_DESCRIPTOR, *PUSB_ENDPOINT_DESCRIPTOR;
00152 #include <poppack.h>
00153
00154 #define USB_FEATURE_ENDPOINT_STALL 0x0000
00155 #define USB_FEATURE_REMOTE_WAKEUP 0x0001
00156
00157 typedef struct _USB_INTERFACE_DESCRIPTOR {
00158 UCHAR bLength;
00159 UCHAR bDescriptorType;
00160 UCHAR bInterfaceNumber;
00161 UCHAR bAlternateSetting;
00162 UCHAR bNumEndpoints;
00163 UCHAR bInterfaceClass;
00164 UCHAR bInterfaceSubClass;
00165 UCHAR bInterfaceProtocol;
00166 UCHAR iInterface;
00167 } USB_INTERFACE_DESCRIPTOR, *PUSB_INTERFACE_DESCRIPTOR;
00168
00169 typedef struct _USB_STRING_DESCRIPTOR {
00170 UCHAR bLength;
00171 UCHAR bDescriptorType;
00172 WCHAR bString[1];
00173 } USB_STRING_DESCRIPTOR, *PUSB_STRING_DESCRIPTOR;
00174
00175 #include <pshpack1.h>
00176 typedef struct _USB_HUB_DESCRIPTOR {
00177 UCHAR bDescriptorLength;
00178 UCHAR bDescriptorType;
00179 UCHAR bNumberOfPorts;
00180 USHORT wHubCharacteristics;
00181 UCHAR bPowerOnToPowerGood;
00182 UCHAR bHubControlCurrent;
00183 UCHAR bRemoveAndPowerMask[64];
00184 } USB_HUB_DESCRIPTOR, *PUSB_HUB_DESCRIPTOR;
00185 #include <poppack.h>
00186
00187 #define USB_SUPPORT_D0_COMMAND 0x01
00188 #define USB_SUPPORT_D1_COMMAND 0x02
00189 #define USB_SUPPORT_D2_COMMAND 0x04
00190 #define USB_SUPPORT_D3_COMMAND 0x08
00191
00192 #define USB_SUPPORT_D1_WAKEUP 0x10
00193 #define USB_SUPPORT_D2_WAKEUP 0x20
00194
00195 typedef struct _USB_CONFIGURATION_POWER_DESCRIPTOR {
00196 UCHAR bLength;
00197 UCHAR bDescriptorType;
00198 UCHAR SelfPowerConsumedD0[3];
00199 UCHAR bPowerSummaryId;
00200 UCHAR bBusPowerSavingD1;
00201 UCHAR bSelfPowerSavingD1;
00202 UCHAR bBusPowerSavingD2;
00203 UCHAR bSelfPowerSavingD2;
00204 UCHAR bBusPowerSavingD3;
00205 UCHAR bSelfPowerSavingD3;
00206 USHORT TransitionTimeFromD1;
00207 USHORT TransitionTimeFromD2;
00208 USHORT TransitionTimeFromD3;
00209 } USB_CONFIGURATION_POWER_DESCRIPTOR, *PUSB_CONFIGURATION_POWER_DESCRIPTOR;
00210
00211 #define USB_FEATURE_INTERFACE_POWER_D0 0x0002
00212 #define USB_FEATURE_INTERFACE_POWER_D1 0x0003
00213 #define USB_FEATURE_INTERFACE_POWER_D2 0x0004
00214 #define USB_FEATURE_INTERFACE_POWER_D3 0x0005
00215
00216 #include <pshpack1.h>
00217 typedef struct _USB_INTERFACE_POWER_DESCRIPTOR {
00218 UCHAR bLength;
00219 UCHAR bDescriptorType;
00220 UCHAR bmCapabilitiesFlags;
00221 UCHAR bBusPowerSavingD1;
00222 UCHAR bSelfPowerSavingD1;
00223 UCHAR bBusPowerSavingD2;
00224 UCHAR bSelfPowerSavingD2;
00225 UCHAR bBusPowerSavingD3;
00226 UCHAR bSelfPowerSavingD3;
00227 USHORT TransitionTimeFromD1;
00228 USHORT TransitionTimeFromD2;
00229 USHORT TransitionTimeFromD3;
00230 } USB_INTERFACE_POWER_DESCRIPTOR, *PUSB_INTERFACE_POWER_DESCRIPTOR;
00231 #include <poppack.h>
00232
00233 #ifdef __cplusplus
00234 }
00235 #endif
00236
00237 #endif