home *** CD-ROM | disk | FTP | other *** search
/ Computer Shopper 186 / DPCS0803.ISO / Café / Dev-C++ / devcpp4980.exe / $INSTDIR / include / ddk / usb100.h < prev    next >
Encoding:
C/C++ Source or Header  |  2003-05-15  |  6.9 KB  |  234 lines

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