usb.h
上传用户:hank9955
上传日期:2022-08-05
资源大小:14k
文件大小:6k
源码类别:

USB编程

开发平台:

C/C++

  1. /****************************************************************
  2.  NAME: usb.h
  3.  DESC: definitions(USB data structure) for USB setup operation.
  4.        Because It's h/w independent file, it may be used without any change in future.
  5.        Reuse the source of S3C2400X u24xmon 
  6.  HISTORY:
  7.  Apr.07.2000:purnnamu: first release. 
  8.  ****************************************************************/
  9. #ifndef __USB_H__
  10. #define __USB_H__
  11. //************************
  12. //       Endpoint 0      
  13. //************************
  14. // Standard bmRequestTyje (Direction) 
  15. #define HOST_TO_DEVICE              (0x00)
  16. #define DEVICE_TO_HOST              (0x80)    
  17. // Standard bmRequestType (Type) 
  18. #define STANDARD_TYPE               (0x00)
  19. #define CLASS_TYPE                  (0x20)
  20. #define VENDOR_TYPE                 (0x40)
  21. #define RESERVED_TYPE               (0x60)
  22. // Standard bmRequestType (Recipient) 
  23. #define DEVICE_RECIPIENT            (0)
  24. #define INTERFACE_RECIPIENT         (1)
  25. #define ENDPOINT_RECIPIENT          (2)
  26. #define OTHER_RECIPIENT             (3)
  27. // Feature Selectors 
  28. #define DEVICE_REMOTE_WAKEUP        (1)
  29. #define EP_STALL                    (0)
  30. // Standard Request Codes 
  31. #define GET_STATUS                  (0)
  32. #define CLEAR_FEATURE               (1)
  33. #define SET_FEATURE                 (3)
  34. #define SET_ADDRESS                 (5)
  35. #define GET_DESCRIPTOR              (6)
  36. #define SET_DESCRIPTOR              (7)
  37. #define GET_CONFIGURATION           (8)
  38. #define SET_CONFIGURATION           (9)
  39. #define GET_INTERFACE               (10)
  40. #define SET_INTERFACE               (11)
  41. #define SYNCH_FRAME                 (12)
  42. /* CDC specific */
  43. #define GET_LINE_CODING           0x21
  44. #define SET_LINE_CODING           0x20
  45. #define SET_CONTROL_LINE_STATE    0x22
  46. #define SEND_BREAK                0x23
  47. #define SEND_ENCAPSULATED_COMMAND 0x00
  48. #define GET_ENCAPSULATED_COMMAND  0x01
  49. /* *** */
  50. // Class-specific Request Codes 
  51. #define GET_DEVICE_ID               (0)
  52. #define GET_PORT_STATUS             (1)
  53. #define SOFT_RESET                  (2)
  54. // Descriptor Types
  55. #define DEVICE_TYPE                 (1)
  56. #define CONFIGURATION_TYPE          (2)
  57. #define STRING_TYPE                 (3)
  58. #define INTERFACE_TYPE              (4)
  59. #define ENDPOINT_TYPE               (5)
  60. //configuration descriptor: bmAttributes 
  61. #define CONF_ATTR_DEFAULT     (0x80) //Spec 1.0 it was BUSPOWERED bit.
  62. #define CONF_ATTR_REMOTE_WAKEUP     (0x20)
  63. #define CONF_ATTR_SELFPOWERED       (0x40)
  64. //endpoint descriptor
  65. #define EP_ADDR_IN     (0x80)
  66. #define EP_ADDR_OUT     (0x00)
  67. #define EP_ATTR_CONTROL     (0x0)
  68. #define EP_ATTR_ISOCHRONOUS     (0x1)
  69. #define EP_ATTR_BULK     (0x2)
  70. #define EP_ATTR_INTERRUPT     (0x3)
  71. //string descriptor
  72. #define LANGID_US_L      (0x09)  
  73. #define LANGID_US_H      (0x04)
  74. struct USB_SETUP_DATA{
  75.     U8 bmRequestType;    
  76.     U8 bRequest;         
  77.     U8 bValueL;          
  78.     U8 bValueH;          
  79.     U8 bIndexL;          
  80.     U8 bIndexH;          
  81.     U8 bLengthL;         
  82.     U8 bLengthH;         
  83. };
  84. struct USB_DEVICE_DESCRIPTOR{
  85.     U8 bLength;    
  86.     U8 bDescriptorType;         
  87.     U8 bcdUSBL;
  88.     U8 bcdUSBH;
  89.     U8 bDeviceClass;          
  90.     U8 bDeviceSubClass;          
  91.     U8 bDeviceProtocol;          
  92.     U8 bMaxPacketSize0;         
  93.     U8 idVendorL;
  94.     U8 idVendorH;
  95.     U8 idProductL;
  96.     U8 idProductH;
  97.     U8 bcdDeviceL;
  98.     U8 bcdDeviceH;
  99.     U8 iManufacturer;
  100.     U8 iProduct;
  101.     U8 iSerialNumber;
  102.     U8 bNumConfigurations;
  103. };
  104. struct USB_CONFIGURATION_DESCRIPTOR{
  105.     U8 bLength;    
  106.     U8 bDescriptorType;         
  107.     U8 wTotalLengthL;
  108.     U8 wTotalLengthH;
  109.     U8 bNumInterfaces;
  110.     U8 bConfigurationValue;
  111.     U8 iConfiguration;
  112.     U8 bmAttributes;
  113.     U8 maxPower;          
  114. };
  115.     
  116. struct USB_INTERFACE_DESCRIPTOR{
  117.     U8 bLength;    
  118.     U8 bDescriptorType;         
  119.     U8 bInterfaceNumber;
  120.     U8 bAlternateSetting;
  121.     U8 bNumEndpoints;
  122.     U8 bInterfaceClass;
  123.     U8 bInterfaceSubClass;
  124.     U8 bInterfaceProtocol;
  125.     U8 iInterface;
  126. };
  127. struct USB_ENDPOINT_DESCRIPTOR{
  128.     U8 bLength;    
  129.     U8 bDescriptorType;         
  130.     U8 bEndpointAddress;
  131.     U8 bmAttributes;
  132.     U8 wMaxPacketSizeL;
  133.     U8 wMaxPacketSizeH;
  134.     U8 bInterval;
  135. };
  136.  struct USB_CONFIGURATION_SET{
  137.      U8 ConfigurationValue;
  138.  };
  139.  struct USB_GET_STATUS{
  140.      U8 Device;
  141.      U8 Interface;
  142.      U8 Endpoint0;
  143.      U8 Endpoint1;
  144.      U8 Endpoint3;
  145.  };
  146.  struct USB_INTERFACE_GET{
  147.      U8 AlternateSetting;
  148.  };
  149.  
  150. #endif /*__USB_H__*/