MAINLOOP.H
上传用户:lyfy_2008
上传日期:2014-07-13
资源大小:3016k
文件大小:6k
源码类别:

USB编程

开发平台:

Visual C++

  1. /*
  2.    //*************************************************************************
  3.    //
  4.    //                  P H I L I P S   P R O P R I E T A R Y
  5.    //
  6.    //           COPYRIGHT (c)   1997 BY PHILIPS SINGAPORE.
  7.    //                     --  ALL RIGHTS RESERVED  --
  8.    //
  9.    // File Name:        MAINLOOP.H
  10.    // Author:           Wenkai Du
  11.    // Created:          19 Dec 97
  12.    // Modified:
  13.    // Revision:  2.3
  14.    //
  15.    //*************************************************************************
  16.    //
  17.    // 98/11/25 Added DMA disable bit. (WK)
  18.    // 99/02/10 bEPPflag.bits.setup_dma changed to 2 bits. (WK)
  19.    //*************************************************************************
  20.    */
  21. #ifndef __MAINLOOP_H__
  22. #define __MAINLOOP_H__
  23. /*
  24.    //*************************************************************************
  25.    // basic #defines
  26.    //*************************************************************************
  27.    */
  28. #define MAX_ENDPOINTS      (unsigned char)0x3
  29. #define EP0_TX_FIFO_SIZE   16
  30. #define EP0_RX_FIFO_SIZE   16
  31. #define EP0_PACKET_SIZE    16
  32. #define EP1_TX_FIFO_SIZE   16
  33. #define EP1_RX_FIFO_SIZE   16
  34. #define EP1_PACKET_SIZE    16
  35. #define EP2_TX_FIFO_SIZE   64
  36. #define EP2_RX_FIFO_SIZE   64
  37. #define EP2_PACKET_SIZE    64
  38. #define USB_IDLE           0
  39. #define USB_TRANSMIT       1
  40. #define USB_RECEIVE        2
  41. #define USB_CLASS_CODE_TEST_CLASS_DEVICE                    0xdc
  42. #define USB_SUBCLASS_CODE_TEST_CLASS_D12                    0xA0
  43. #define USB_PROTOCOL_CODE_TEST_CLASS_D12                    0xB0
  44. /*
  45.    //*************************************************************************
  46.    // masks
  47.    //*************************************************************************
  48. */
  49. #define USB_RECIPIENT            (unsigned char)0x1F
  50. #define USB_RECIPIENT_DEVICE     (unsigned char)0x00
  51. #define USB_RECIPIENT_INTERFACE  (unsigned char)0x01
  52. #define USB_RECIPIENT_ENDPOINT   (unsigned char)0x02
  53. #define USB_REQUEST_TYPE_MASK    (unsigned char)0x60
  54. #define USB_STANDARD_REQUEST     (unsigned char)0x00
  55. #define USB_CLASS_REQUEST        (unsigned char)0x20
  56. #define USB_VENDOR_REQUEST       (unsigned char)0x40
  57. #define USB_REQUEST_MASK         (unsigned char)0x0F
  58. #define DEVICE_ADDRESS_MASK      0x7F
  59. /*
  60.    //*************************************************************************
  61.    // macros
  62.    //*************************************************************************
  63. */
  64. #define SWAP(x)   ((((x) & 0xFF) << 8) | (((x) >> 8) & 0xFF))
  65. #define MSB(x)    (((x) >> 8) & 0xFF)
  66. #define LSB(x)    ((x) & 0xFF)
  67. #define FALSE   0
  68. #define TRUE    (!FALSE)
  69. /*
  70.    //*************************************************************************
  71.    // basic typedefs
  72.    //*************************************************************************
  73. */
  74. typedef unsigned char   UCHAR;
  75. typedef unsigned short  USHORT;
  76. typedef unsigned long   ULONG;
  77. typedef unsigned char   BOOL;
  78. /*
  79.    //*************************************************************************
  80.    // structure and union definitions
  81.    //*************************************************************************
  82. */
  83. typedef union _epp_flags
  84. {
  85. struct _flags
  86. {
  87. unsigned char timer                : 1;
  88. unsigned char bus_reset            : 1;
  89. unsigned char suspend              : 1;
  90. unsigned char setup_packet      : 1;
  91. unsigned char remote_wakeup     : 1;
  92. unsigned char in_isr        : 1;
  93. unsigned char control_state : 2;
  94. unsigned char configuration : 1;
  95. unsigned char verbose : 1;
  96. unsigned char ep1_rxdone : 1;
  97. unsigned char main_rxdone : 1; // V2.3
  98. unsigned char dma_state       : 2;
  99. unsigned char power_down : 1; // Smart Board
  100. } bits;
  101. unsigned short value;
  102. } EPPFLAGS;
  103. typedef struct _device_request
  104. {
  105. unsigned char bmRequestType;
  106. unsigned char bRequest;
  107. unsigned short wValue;
  108. unsigned short wIndex;
  109. unsigned short wLength;
  110. } DEVICE_REQUEST;
  111. typedef struct _IO_REQUEST {
  112. unsigned short uAddressL;
  113. unsigned char bAddressH;
  114. unsigned short uSize;
  115. unsigned char bCommand;
  116. } IO_REQUEST, *PIO_REQUEST;
  117. #define MAX_CONTROLDATA_SIZE 8
  118. typedef struct _control_xfer
  119. {
  120. DEVICE_REQUEST DeviceRequest;
  121. unsigned short wLength;
  122. unsigned short wCount;
  123. unsigned char * pData;
  124. unsigned char dataBuffer[MAX_CONTROLDATA_SIZE];
  125. } CONTROL_XFER;
  126. /*
  127.    //*************************************************************************
  128.    // USB utility functions
  129.    //*************************************************************************
  130. */
  131. void fn_usb_isr();
  132. extern void suspend_change(void);
  133. extern void stall_ep0(void);
  134. extern void disconnect_USB(void);
  135. extern void connect_USB(void);
  136. extern void reconnect_USB(void);
  137. extern void init_unconfig(void);
  138. extern void init_config(void);
  139. extern void single_transmit(unsigned char * pData, unsigned char len);
  140. extern void code_transmit(unsigned char code * pRomData, unsigned short len);
  141. extern void control_handler();
  142. extern void check_key_LED(void);
  143. #define IN_TOKEN_DMA  1
  144. #define OUT_TOKEN_DMA  0
  145. #define DMA_BUFFER_SIZE 256
  146. #define DMA_IDLE 0
  147. #define DMA_RUNNING 1
  148. #define DMA_PENDING 2
  149. #define SETUP_DMA_REQUEST  0x0471
  150. #define GET_FIRMWARE_VERSION    0x0472
  151. #define GET_SET_TWAIN_REQUEST   0x0473
  152. #define GET_BUFFER_SIZE     0x0474
  153. #define LED_CONTROL              0X0475
  154. typedef struct _TWAIN_FILEINFO {
  155. unsigned char bPage;    // bPage bit 7 - 5 map to uSize bit 18 - 16
  156. unsigned char uSizeH;    // uSize bit 15 - 8
  157. unsigned char uSizeL;    // uSize bit 7 - 0
  158. } TWAIN_FILEINFO, *PTWAIN_FILEINFO;
  159. #define DISABLE EA=0
  160. #define ENABLE EA=1
  161. #endif