Committer:
sca8er
Date:
Mon Mar 05 04:56:58 2012 +0000
Revision:
3:0c3bcea5b4d0
Parent:
2:5853bf44af9f

        

Who changed what in which revision?

UserRevisionLine numberNew contents of line
sca8er 2:5853bf44af9f 1 /*
sca8er 2:5853bf44af9f 2 * usb100.h
sca8er 2:5853bf44af9f 3 *
sca8er 2:5853bf44af9f 4 * USB 1.0 support
sca8er 2:5853bf44af9f 5 *
sca8er 2:5853bf44af9f 6 * This file is part of the w32api package.
sca8er 2:5853bf44af9f 7 *
sca8er 2:5853bf44af9f 8 * Contributors:
sca8er 2:5853bf44af9f 9 * Created by Casper S. Hornstrup <chorns@users.sourceforge.net>
sca8er 2:5853bf44af9f 10 *
sca8er 2:5853bf44af9f 11 * THIS SOFTWARE IS NOT COPYRIGHTED
sca8er 2:5853bf44af9f 12 *
sca8er 2:5853bf44af9f 13 * This source code is offered for use in the public domain. You may
sca8er 2:5853bf44af9f 14 * use, modify or distribute it freely.
sca8er 2:5853bf44af9f 15 *
sca8er 2:5853bf44af9f 16 * This code is distributed in the hope that it will be useful but
sca8er 2:5853bf44af9f 17 * WITHOUT ANY WARRANTY. ALL WARRANTIES, EXPRESS OR IMPLIED ARE HEREBY
sca8er 2:5853bf44af9f 18 * DISCLAIMED. This includes but is not limited to warranties of
sca8er 2:5853bf44af9f 19 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
sca8er 2:5853bf44af9f 20 *
sca8er 2:5853bf44af9f 21 */
sca8er 2:5853bf44af9f 22
sca8er 2:5853bf44af9f 23 #ifndef __USB100_H
sca8er 2:5853bf44af9f 24 #define __USB100_H
sca8er 2:5853bf44af9f 25
sca8er 2:5853bf44af9f 26 #if __GNUC__ >=3
sca8er 2:5853bf44af9f 27 #pragma GCC system_header
sca8er 2:5853bf44af9f 28 #endif
sca8er 2:5853bf44af9f 29
sca8er 2:5853bf44af9f 30 #ifdef __cplusplus
sca8er 2:5853bf44af9f 31 extern "C" {
sca8er 2:5853bf44af9f 32 #endif
sca8er 2:5853bf44af9f 33
sca8er 2:5853bf44af9f 34 #include "ntddk.h"
sca8er 2:5853bf44af9f 35
sca8er 2:5853bf44af9f 36 #define MAXIMUM_USB_STRING_LENGTH 255
sca8er 2:5853bf44af9f 37
sca8er 2:5853bf44af9f 38 #define USB_DEVICE_CLASS_RESERVED 0x00
sca8er 2:5853bf44af9f 39 #define USB_DEVICE_CLASS_AUDIO 0x01
sca8er 2:5853bf44af9f 40 #define USB_DEVICE_CLASS_COMMUNICATIONS 0x02
sca8er 2:5853bf44af9f 41 #define USB_DEVICE_CLASS_HUMAN_INTERFACE 0x03
sca8er 2:5853bf44af9f 42 #define USB_DEVICE_CLASS_MONITOR 0x04
sca8er 2:5853bf44af9f 43 #define USB_DEVICE_CLASS_PHYSICAL_INTERFACE 0x05
sca8er 2:5853bf44af9f 44 #define USB_DEVICE_CLASS_POWER 0x06
sca8er 2:5853bf44af9f 45 #define USB_DEVICE_CLASS_PRINTER 0x07
sca8er 2:5853bf44af9f 46 #define USB_DEVICE_CLASS_STORAGE 0x08
sca8er 2:5853bf44af9f 47 #define USB_DEVICE_CLASS_HUB 0x09
sca8er 2:5853bf44af9f 48 #define USB_DEVICE_CLASS_VENDOR_SPECIFIC 0xFF
sca8er 2:5853bf44af9f 49
sca8er 2:5853bf44af9f 50 #define USB_RESERVED_DESCRIPTOR_TYPE 0x06
sca8er 2:5853bf44af9f 51 #define USB_CONFIG_POWER_DESCRIPTOR_TYPE 0x07
sca8er 2:5853bf44af9f 52 #define USB_INTERFACE_POWER_DESCRIPTOR_TYPE 0x08
sca8er 2:5853bf44af9f 53
sca8er 2:5853bf44af9f 54 #define USB_REQUEST_GET_STATUS 0x00
sca8er 2:5853bf44af9f 55 #define USB_REQUEST_CLEAR_FEATURE 0x01
sca8er 2:5853bf44af9f 56 #define USB_REQUEST_SET_FEATURE 0x03
sca8er 2:5853bf44af9f 57 #define USB_REQUEST_SET_ADDRESS 0x05
sca8er 2:5853bf44af9f 58 #define USB_REQUEST_GET_DESCRIPTOR 0x06
sca8er 2:5853bf44af9f 59 #define USB_REQUEST_SET_DESCRIPTOR 0x07
sca8er 2:5853bf44af9f 60 #define USB_REQUEST_GET_CONFIGURATION 0x08
sca8er 2:5853bf44af9f 61 #define USB_REQUEST_SET_CONFIGURATION 0x09
sca8er 2:5853bf44af9f 62 #define USB_REQUEST_GET_INTERFACE 0x0A
sca8er 2:5853bf44af9f 63 #define USB_REQUEST_SET_INTERFACE 0x0B
sca8er 2:5853bf44af9f 64 #define USB_REQUEST_SYNC_FRAME 0x0C
sca8er 2:5853bf44af9f 65
sca8er 2:5853bf44af9f 66 #define USB_GETSTATUS_SELF_POWERED 0x01
sca8er 2:5853bf44af9f 67 #define USB_GETSTATUS_REMOTE_WAKEUP_ENABLED 0x02
sca8er 2:5853bf44af9f 68
sca8er 2:5853bf44af9f 69 #define BMREQUEST_HOST_TO_DEVICE 0
sca8er 2:5853bf44af9f 70 #define BMREQUEST_DEVICE_TO_HOST 1
sca8er 2:5853bf44af9f 71
sca8er 2:5853bf44af9f 72 #define BMREQUEST_STANDARD 0
sca8er 2:5853bf44af9f 73 #define BMREQUEST_CLASS 1
sca8er 2:5853bf44af9f 74 #define BMREQUEST_VENDOR 2
sca8er 2:5853bf44af9f 75
sca8er 2:5853bf44af9f 76 #define BMREQUEST_TO_DEVICE 0
sca8er 2:5853bf44af9f 77 #define BMREQUEST_TO_INTERFACE 1
sca8er 2:5853bf44af9f 78 #define BMREQUEST_TO_ENDPOINT 2
sca8er 2:5853bf44af9f 79 #define BMREQUEST_TO_OTHER 3
sca8er 2:5853bf44af9f 80
sca8er 2:5853bf44af9f 81 /* USB_COMMON_DESCRIPTOR.bDescriptorType constants */
sca8er 2:5853bf44af9f 82 #define USB_DEVICE_DESCRIPTOR_TYPE 0x01
sca8er 2:5853bf44af9f 83 #define USB_CONFIGURATION_DESCRIPTOR_TYPE 0x02
sca8er 2:5853bf44af9f 84 #define USB_STRING_DESCRIPTOR_TYPE 0x03
sca8er 2:5853bf44af9f 85 #define USB_INTERFACE_DESCRIPTOR_TYPE 0x04
sca8er 2:5853bf44af9f 86 #define USB_ENDPOINT_DESCRIPTOR_TYPE 0x05
sca8er 2:5853bf44af9f 87
sca8er 2:5853bf44af9f 88 typedef struct _USB_COMMON_DESCRIPTOR {
sca8er 2:5853bf44af9f 89 UCHAR bLength;
sca8er 2:5853bf44af9f 90 UCHAR bDescriptorType;
sca8er 2:5853bf44af9f 91 } USB_COMMON_DESCRIPTOR, *PUSB_COMMON_DESCRIPTOR;
sca8er 2:5853bf44af9f 92
sca8er 2:5853bf44af9f 93 #define USB_DESCRIPTOR_MAKE_TYPE_AND_INDEX(d, i) ((USHORT)((USHORT)d << 8 | i))
sca8er 2:5853bf44af9f 94
sca8er 2:5853bf44af9f 95 /* USB_CONFIGURATION_DESCRIPTOR.bmAttributes constants */
sca8er 2:5853bf44af9f 96 #define USB_CONFIG_POWERED_MASK 0xc0
sca8er 2:5853bf44af9f 97 #define USB_CONFIG_BUS_POWERED 0x80
sca8er 2:5853bf44af9f 98 #define USB_CONFIG_SELF_POWERED 0x40
sca8er 2:5853bf44af9f 99 #define USB_CONFIG_REMOTE_WAKEUP 0x20
sca8er 2:5853bf44af9f 100
sca8er 2:5853bf44af9f 101 #include <pshpack1.h>
sca8er 2:5853bf44af9f 102 typedef struct _USB_CONFIGURATION_DESCRIPTOR {
sca8er 2:5853bf44af9f 103 UCHAR bLength;
sca8er 2:5853bf44af9f 104 UCHAR bDescriptorType;
sca8er 2:5853bf44af9f 105 USHORT wTotalLength;
sca8er 2:5853bf44af9f 106 UCHAR bNumInterfaces;
sca8er 2:5853bf44af9f 107 UCHAR bConfigurationValue;
sca8er 2:5853bf44af9f 108 UCHAR iConfiguration;
sca8er 2:5853bf44af9f 109 UCHAR bmAttributes;
sca8er 2:5853bf44af9f 110 UCHAR MaxPower;
sca8er 2:5853bf44af9f 111 } USB_CONFIGURATION_DESCRIPTOR, *PUSB_CONFIGURATION_DESCRIPTOR;
sca8er 2:5853bf44af9f 112 #include <poppack.h>
sca8er 2:5853bf44af9f 113
sca8er 2:5853bf44af9f 114 typedef struct _USB_DEVICE_DESCRIPTOR {
sca8er 2:5853bf44af9f 115 UCHAR bLength;
sca8er 2:5853bf44af9f 116 UCHAR bDescriptorType;
sca8er 2:5853bf44af9f 117 USHORT bcdUSB;
sca8er 2:5853bf44af9f 118 UCHAR bDeviceClass;
sca8er 2:5853bf44af9f 119 UCHAR bDeviceSubClass;
sca8er 2:5853bf44af9f 120 UCHAR bDeviceProtocol;
sca8er 2:5853bf44af9f 121 UCHAR bMaxPacketSize0;
sca8er 2:5853bf44af9f 122 USHORT idVendor;
sca8er 2:5853bf44af9f 123 USHORT idProduct;
sca8er 2:5853bf44af9f 124 USHORT bcdDevice;
sca8er 2:5853bf44af9f 125 UCHAR iManufacturer;
sca8er 2:5853bf44af9f 126 UCHAR iProduct;
sca8er 2:5853bf44af9f 127 UCHAR iSerialNumber;
sca8er 2:5853bf44af9f 128 UCHAR bNumConfigurations;
sca8er 2:5853bf44af9f 129 } USB_DEVICE_DESCRIPTOR, *PUSB_DEVICE_DESCRIPTOR;
sca8er 2:5853bf44af9f 130
sca8er 2:5853bf44af9f 131 #define USB_ENDPOINT_DIRECTION_MASK 0x80
sca8er 2:5853bf44af9f 132
sca8er 2:5853bf44af9f 133 #define USB_ENDPOINT_DIRECTION_OUT(x) (!((x) & USB_ENDPOINT_DIRECTION_MASK))
sca8er 2:5853bf44af9f 134 #define USB_ENDPOINT_DIRECTION_IN(x) ((x) & USB_ENDPOINT_DIRECTION_MASK)
sca8er 2:5853bf44af9f 135
sca8er 2:5853bf44af9f 136 /* USB_ENDPOINT_DESCRIPTOR.bmAttributes constants */
sca8er 2:5853bf44af9f 137 #define USB_ENDPOINT_TYPE_MASK 0x03
sca8er 2:5853bf44af9f 138 #define USB_ENDPOINT_TYPE_CONTROL 0x00
sca8er 2:5853bf44af9f 139 #define USB_ENDPOINT_TYPE_ISOCHRONOUS 0x01
sca8er 2:5853bf44af9f 140 #define USB_ENDPOINT_TYPE_BULK 0x02
sca8er 2:5853bf44af9f 141 #define USB_ENDPOINT_TYPE_INTERRUPT 0x03
sca8er 2:5853bf44af9f 142
sca8er 2:5853bf44af9f 143 #include <pshpack1.h>
sca8er 2:5853bf44af9f 144 typedef struct _USB_ENDPOINT_DESCRIPTOR {
sca8er 2:5853bf44af9f 145 UCHAR bLength;
sca8er 2:5853bf44af9f 146 UCHAR bDescriptorType;
sca8er 2:5853bf44af9f 147 UCHAR bEndpointAddress;
sca8er 2:5853bf44af9f 148 UCHAR bmAttributes;
sca8er 2:5853bf44af9f 149 USHORT wMaxPacketSize;
sca8er 2:5853bf44af9f 150 UCHAR bInterval;
sca8er 2:5853bf44af9f 151 } USB_ENDPOINT_DESCRIPTOR, *PUSB_ENDPOINT_DESCRIPTOR;
sca8er 2:5853bf44af9f 152 #include <poppack.h>
sca8er 2:5853bf44af9f 153
sca8er 2:5853bf44af9f 154 #define USB_FEATURE_ENDPOINT_STALL 0x0000
sca8er 2:5853bf44af9f 155 #define USB_FEATURE_REMOTE_WAKEUP 0x0001
sca8er 2:5853bf44af9f 156
sca8er 2:5853bf44af9f 157 typedef struct _USB_INTERFACE_DESCRIPTOR {
sca8er 2:5853bf44af9f 158 UCHAR bLength;
sca8er 2:5853bf44af9f 159 UCHAR bDescriptorType;
sca8er 2:5853bf44af9f 160 UCHAR bInterfaceNumber;
sca8er 2:5853bf44af9f 161 UCHAR bAlternateSetting;
sca8er 2:5853bf44af9f 162 UCHAR bNumEndpoints;
sca8er 2:5853bf44af9f 163 UCHAR bInterfaceClass;
sca8er 2:5853bf44af9f 164 UCHAR bInterfaceSubClass;
sca8er 2:5853bf44af9f 165 UCHAR bInterfaceProtocol;
sca8er 2:5853bf44af9f 166 UCHAR iInterface;
sca8er 2:5853bf44af9f 167 } USB_INTERFACE_DESCRIPTOR, *PUSB_INTERFACE_DESCRIPTOR;
sca8er 2:5853bf44af9f 168
sca8er 2:5853bf44af9f 169 typedef struct _USB_STRING_DESCRIPTOR {
sca8er 2:5853bf44af9f 170 UCHAR bLength;
sca8er 2:5853bf44af9f 171 UCHAR bDescriptorType;
sca8er 2:5853bf44af9f 172 WCHAR bString[1];
sca8er 2:5853bf44af9f 173 } USB_STRING_DESCRIPTOR, *PUSB_STRING_DESCRIPTOR;
sca8er 2:5853bf44af9f 174
sca8er 2:5853bf44af9f 175 #include <pshpack1.h>
sca8er 2:5853bf44af9f 176 typedef struct _USB_HUB_DESCRIPTOR {
sca8er 2:5853bf44af9f 177 UCHAR bDescriptorLength;
sca8er 2:5853bf44af9f 178 UCHAR bDescriptorType;
sca8er 2:5853bf44af9f 179 UCHAR bNumberOfPorts;
sca8er 2:5853bf44af9f 180 USHORT wHubCharacteristics;
sca8er 2:5853bf44af9f 181 UCHAR bPowerOnToPowerGood;
sca8er 2:5853bf44af9f 182 UCHAR bHubControlCurrent;
sca8er 2:5853bf44af9f 183 UCHAR bRemoveAndPowerMask[64];
sca8er 2:5853bf44af9f 184 } USB_HUB_DESCRIPTOR, *PUSB_HUB_DESCRIPTOR;
sca8er 2:5853bf44af9f 185 #include <poppack.h>
sca8er 2:5853bf44af9f 186
sca8er 2:5853bf44af9f 187 #define USB_SUPPORT_D0_COMMAND 0x01
sca8er 2:5853bf44af9f 188 #define USB_SUPPORT_D1_COMMAND 0x02
sca8er 2:5853bf44af9f 189 #define USB_SUPPORT_D2_COMMAND 0x04
sca8er 2:5853bf44af9f 190 #define USB_SUPPORT_D3_COMMAND 0x08
sca8er 2:5853bf44af9f 191
sca8er 2:5853bf44af9f 192 #define USB_SUPPORT_D1_WAKEUP 0x10
sca8er 2:5853bf44af9f 193 #define USB_SUPPORT_D2_WAKEUP 0x20
sca8er 2:5853bf44af9f 194
sca8er 2:5853bf44af9f 195 typedef struct _USB_CONFIGURATION_POWER_DESCRIPTOR {
sca8er 2:5853bf44af9f 196 UCHAR bLength;
sca8er 2:5853bf44af9f 197 UCHAR bDescriptorType;
sca8er 2:5853bf44af9f 198 UCHAR SelfPowerConsumedD0[3];
sca8er 2:5853bf44af9f 199 UCHAR bPowerSummaryId;
sca8er 2:5853bf44af9f 200 UCHAR bBusPowerSavingD1;
sca8er 2:5853bf44af9f 201 UCHAR bSelfPowerSavingD1;
sca8er 2:5853bf44af9f 202 UCHAR bBusPowerSavingD2;
sca8er 2:5853bf44af9f 203 UCHAR bSelfPowerSavingD2;
sca8er 2:5853bf44af9f 204 UCHAR bBusPowerSavingD3;
sca8er 2:5853bf44af9f 205 UCHAR bSelfPowerSavingD3;
sca8er 2:5853bf44af9f 206 USHORT TransitionTimeFromD1;
sca8er 2:5853bf44af9f 207 USHORT TransitionTimeFromD2;
sca8er 2:5853bf44af9f 208 USHORT TransitionTimeFromD3;
sca8er 2:5853bf44af9f 209 } USB_CONFIGURATION_POWER_DESCRIPTOR, *PUSB_CONFIGURATION_POWER_DESCRIPTOR;
sca8er 2:5853bf44af9f 210
sca8er 2:5853bf44af9f 211 #define USB_FEATURE_INTERFACE_POWER_D0 0x0002
sca8er 2:5853bf44af9f 212 #define USB_FEATURE_INTERFACE_POWER_D1 0x0003
sca8er 2:5853bf44af9f 213 #define USB_FEATURE_INTERFACE_POWER_D2 0x0004
sca8er 2:5853bf44af9f 214 #define USB_FEATURE_INTERFACE_POWER_D3 0x0005
sca8er 2:5853bf44af9f 215
sca8er 2:5853bf44af9f 216 #include <pshpack1.h>
sca8er 2:5853bf44af9f 217 typedef struct _USB_INTERFACE_POWER_DESCRIPTOR {
sca8er 2:5853bf44af9f 218 UCHAR bLength;
sca8er 2:5853bf44af9f 219 UCHAR bDescriptorType;
sca8er 2:5853bf44af9f 220 UCHAR bmCapabilitiesFlags;
sca8er 2:5853bf44af9f 221 UCHAR bBusPowerSavingD1;
sca8er 2:5853bf44af9f 222 UCHAR bSelfPowerSavingD1;
sca8er 2:5853bf44af9f 223 UCHAR bBusPowerSavingD2;
sca8er 2:5853bf44af9f 224 UCHAR bSelfPowerSavingD2;
sca8er 2:5853bf44af9f 225 UCHAR bBusPowerSavingD3;
sca8er 2:5853bf44af9f 226 UCHAR bSelfPowerSavingD3;
sca8er 2:5853bf44af9f 227 USHORT TransitionTimeFromD1;
sca8er 2:5853bf44af9f 228 USHORT TransitionTimeFromD2;
sca8er 2:5853bf44af9f 229 USHORT TransitionTimeFromD3;
sca8er 2:5853bf44af9f 230 } USB_INTERFACE_POWER_DESCRIPTOR, *PUSB_INTERFACE_POWER_DESCRIPTOR;
sca8er 2:5853bf44af9f 231 #include <poppack.h>
sca8er 2:5853bf44af9f 232
sca8er 2:5853bf44af9f 233 #ifdef __cplusplus
sca8er 2:5853bf44af9f 234 }
sca8er 2:5853bf44af9f 235 #endif
sca8er 2:5853bf44af9f 236
sca8er 2:5853bf44af9f 237 #endif /* __USB100_H */