usb.h
上传用户:poi891205
上传日期:2013-07-15
资源大小:9745k
文件大小:6k
源码类别:

DVD

开发平台:

C/C++

  1. /*--------------------------------------------------------------------------
  2. |  File Name   : usb.h
  3. |
  4. |  Description : This module contains   usb interface
  5. |
  6. |  Version    :  0.1  
  7. |---------------------------------------------------------------------------------
  8. |  Rev Date         Author(s)      Status & Comments
  9. |---------------------------------------------------------------------------------
  10. |  0.1 2003/11/27       wthsin         Creating
  11. |  0.2  2003/12/19       Liweihua       
  12. |--------------------------------------------------------------------------------*/
  13. #ifndef   USB_H
  14. #define   USB_H
  15. //#define USB_DEVICE  0x01  //Maoyong marked 2004-8-12, already defined in gb_def.h
  16. #define uDisk_ADDR  0x02
  17. #define ISO_BIT     0x10
  18. #define MAX_DEV     0x05    //Address #0 + Slave(one device)//0x06     // maximum number of devices (Address #0 + Slave + 4 Hub's device)
  19. #define MAX_EP     0x05    // maximum number of endpoints (Ep0 + max of 4 data endpoints)
  20. #define TIMEOUT_RETRY 0x06 // Maximum no. of timeout retry during USB xfer
  21. #define ep0       0
  22. typedef struct
  23. {
  24.     UINT16  wVID, wPID;       // Vendor ID and Product ID
  25.     UINT8  bClass;           // 
  26.     UINT8  bNumOfEPs;        // actual number endpoint from slave
  27.     UINT8  iMfg; // Manufacturer ID
  28.     UINT8  iPdt; // Product ID
  29.     UINT8  bId1;
  30.     UINT8  bId2;
  31.     UINT8  bEPAddr[MAX_EP];   // bit 7 = 1 = use PID_IN, 
  32.     UINT8  bAttr[MAX_EP];     // ISO | Bulk | Interrupt | Control
  33.     UINT8  wPayLoadL[MAX_EP];  // ISO range: 1-1023, Bulk: 1-64, etc,dayong,but the sl811 only support ISO 255!!!!
  34.     UINT8  wPayLoadH[MAX_EP];  // ISO range: 1-1023, Bulk: 1-64, etc
  35.     UINT16  bInterval[MAX_EP]; // polling interval (for LS)
  36.     UINT8  bData1[MAX_EP];    // DataToggle value
  37. } pUSBDEV, *PUSBDEV;
  38. // USB specific request
  39. typedef struct
  40. {
  41.     UINT8 bmRequest;
  42.     UINT8 bRequest;
  43.     UINT16 wValue;
  44.     UINT16 wIndex;
  45.     UINT16 wLength;
  46. } SetupPKG, *pSetupPKG;
  47. // Standard Device Descriptor
  48. typedef struct
  49. {   UINT8 bLength;
  50.     UINT8 bDescriptorType;
  51.     UINT16 bcdUSB;
  52.     UINT8 bDeviceClass;
  53.     UINT8 bDeviceSubClass;
  54.     UINT8 bDeviceProtocol;
  55.     UINT8 bMaxPacketSize0;
  56.     UINT16 idVendor;
  57.     UINT16 idProduct;
  58.     UINT16 bcdDevice;
  59.     UINT8 iManufacturer;
  60.     UINT8 iProduct;
  61.     UINT8 iSerialNumber;
  62.     UINT8 bNumConfigurations;
  63. } sDevDesc, *pDevDesc;
  64. // Standard Configuration Descriptor
  65. typedef struct
  66. {
  67.     UINT8 bLength;                 // Size of descriptor in Byte
  68. UINT8 bType;  // Configuration type
  69. UINT16 wLength;           // Total length
  70. UINT8 bNumIntf;  // Number of interface
  71. UINT8 bCV;               // bConfigurationValue
  72. UINT8 bIndex;            // iConfiguration
  73. UINT8 bAttr;                  // Configuration Characteristic
  74. UINT8 bMaxPower;  // Power config
  75. } sCfgDesc, *pCfgDesc;
  76. // Standard Interface Descriptor
  77. typedef struct
  78. { UINT8 bLength;
  79. UINT8 bType;
  80. UINT8 iNum;
  81. UINT8 iAltString;
  82. UINT8 bEndPoints;
  83. UINT8 iClass;
  84. UINT8 iSub; 
  85. UINT8 iProto;
  86. UINT8 iIndex; 
  87. } sIntfDesc, *pIntfDesc;
  88. // Standard EndPoint Descriptor
  89. typedef struct
  90. { UINT8 bLength;
  91. UINT8 bType;
  92. UINT8 bEPAdd;
  93. UINT8 bAttr;                  //transfer type
  94. UINT8 wPayLoadL;        // low-speed this must be 0x08
  95. UINT8 wPayLoadH;       //endpoint wPayLoad <=64
  96. UINT8 bInterval;
  97. } sEPDesc, *pEPDesc;
  98. /*-------------------------------------------------------------------------
  99.  * Standard Chapter 9 definition
  100.  *-------------------------------------------------------------------------
  101.  */
  102. #define GET_STATUS         0x00   
  103. #define CLEAR_FEATURE   0x01
  104. #define SET_FEATURE       0x03
  105. #define SET_ADDRESS       0x05
  106. #define GET_DESCRIPTOR  0x06
  107. #define SET_DESCRIPTOR  0x07
  108. #define GET_CONFIG          0x08
  109. #define SET_CONFIG          0x09
  110. #define GET_INTERFACE    0x0a
  111. #define SET_INTERFACE    0x0b
  112. #define SYNCH_FRAME       0x0c
  113. #define DEVICE                  0x01
  114. #define CONFIGURATION   0x02
  115. #define STRING                  0x03
  116. #define INTERFACE            0x04
  117. #define ENDPOINT              0x05
  118. #define STDCLASS              0x00
  119. #define HIDCLASS              0x03
  120. #define HUBCLASS   0x09      // bDeviceClass, bInterfaceClass
  121. #define MassCLASS            0x08     //Mass Storage class
  122. #define USB_IN               0x80
  123. #define HubDescriptorOffset       25
  124. #define HubNbrPortsOffset          2
  125. #define HubDeviceRemovableOffset   7
  126. //*****************************************************************************************
  127. // function  section
  128. //***************************************************************************************** 
  129. int ep0Xfer(UINT8 usbaddr, UINT8 payload, pSetupPKG setup, UINT8 *pData);
  130. int VendorCmd(UINT8 usbaddr,UINT8 bReq, UINT8 bCmd, UINT16 wValue, UINT16 wIndex,UINT16 wLen,UINT8* pData);
  131. int GetDesc(UINT8 usbaddr, UINT16 wValue,  UINT16 wIndex, UINT16 wLen, UINT8 *desc);
  132. int GetStatus(UINT8 usbaddr, UINT8 *desc);
  133. int SetAddress(UINT16 addr);
  134. int Set_Configuration(UINT8 usbaddr,UINT16 wVal);
  135. int EnumUsbDev(UINT8 DevAddr);
  136. UINT16 WordSwap(UINT16 input);
  137. UINT32 DWordSwap(UINT32 input);
  138. int Get_Configuration(UINT8 usbaddr,UINT8 *pdata);
  139. UINT8 GetMaxLUN(UINT8 usbaddr);
  140. UINT8 BulkOnlyReset(UINT8 usbaddr);
  141. UINT8 BulkOnlyClear(UINT8 usbaddr);
  142. UINT8 BulkInClear(UINT8 usbaddr,UINT8 bulkinendp);
  143. UINT8 BulkOutClear(UINT8 usbaddr,UINT8 bulkoutendp);
  144. UINT32 BulkXfer(UINT8 usbaddr,UINT8 pid,UINT16 wLen, UINT8 *buffer);
  145. int  UsbIsPlugIn(); 
  146. BYTE IsUSBCardReader(void);
  147. int HubUDisk_Function(UINT8);
  148. #endif //end USB_H