USB18.inc
Upload User: wang202020
Upload Date: 2021-02-07
Package Size: 182k
Code Size: 9k
Category:

SCM

Development Platform:

HTML/CSS

  1. ; MUID = Microchip USB Class ID
  2. ; Used to identify which of the USB classes owns the current
  3. ; session of control transfer over EP0
  4. #define MUID_NULL 0
  5. #define MUID_USB9 1
  6. #define MUID_HID 2
  7. #define MUID_CDC 3
  8. #define MUID_MSD 4
  9. ; Buffer Descriptor Status Register Initialization Parameters
  10. #define _BSTALL 0x04 ; Buffer Stall enable
  11. #define _DTSEN 0x08 ; Data Toggle Synch enable
  12. #define _INCDIS 0x10 ; Address increment disable
  13. #define _KEN 0x20 ; SIE keeps buff descriptors enable
  14. #define _DAT0 0x00 ; DATA0 packet expected next
  15. #define _DAT1 0x40 ; DATA1 packet expected next
  16. #define _DTSMASK 0x40 ; DTS Mask
  17. #define _USIE 0x80 ; SIE owns buffer
  18. #define _UCPU 0x00 ; CPU owns buffer
  19. ; USB Device States - To be used with [byte usb_device_state]
  20. #define DETACHED_STATE 0
  21. #define ATTACHED_STATE 1
  22. #define POWERED_STATE 2
  23. #define DEFAULT_STATE 3
  24. #define ADR_PENDING_STATE 4
  25. #define ADDRESS_STATE 5
  26. #define CONFIGURED_STATE 6
  27. ; Memory Types for Control Transfer - used in USB_DEVICE_STATUS
  28. ;#define _RAM 0
  29. ;#define _ROM 1
  30. ; From usbdefs_std_dsc.h
  31. ; Descriptor Types
  32. #define DSC_DEV     0x01
  33. #define DSC_CFG     0x02
  34. #define DSC_STR     0x03
  35. #define DSC_INTF    0x04
  36. #define DSC_EP      0x05
  37. ; USB Endpoint Definitions
  38. #define _EP01_OUT   0x01
  39. #define _EP01_IN    0x81
  40. #define _EP02_OUT   0x02
  41. #define _EP02_IN    0x82
  42. #define _EP03_OUT   0x03
  43. #define _EP03_IN    0x83
  44. #define _EP04_OUT   0x04
  45. #define _EP04_IN    0x84
  46. #define _EP05_OUT   0x05
  47. #define _EP05_IN    0x85
  48. #define _EP06_OUT   0x06
  49. #define _EP06_IN    0x86
  50. #define _EP07_OUT   0x07
  51. #define _EP07_IN    0x87
  52. #define _EP08_OUT   0x08
  53. #define _EP08_IN    0x88
  54. #define _EP09_OUT   0x09
  55. #define _EP09_IN    0x89
  56. #define _EP10_OUT   0x0A
  57. #define _EP10_IN    0x8A
  58. #define _EP11_OUT   0x0B
  59. #define _EP11_IN    0x8B
  60. #define _EP12_OUT   0x0C
  61. #define _EP12_IN    0x8C
  62. #define _EP13_OUT   0x0D
  63. #define _EP13_IN    0x8D
  64. #define _EP14_OUT   0x0E
  65. #define _EP14_IN    0x8E
  66. #define _EP15_OUT   0x0F
  67. #define _EP15_IN    0x8F
  68. ; Configuration Attributes
  69. ;#define _DEFAULT 0x01<<7 ; Default Value (Bit 7 is set)
  70. ;#define _SELF 0x01<<6 ; Self-powered (Supports if set)
  71. ;#define _RWU 0x01<<5 ; Remote Wakeup (Supports if set)
  72. ; Endpoint Transfer Type
  73. ;#define _CTRL 0x00 ; Control Transfer
  74. ;#define _ISO 0x01 ; Isochronous Transfer
  75. ;#define _BULK 0x02 ; Bulk Transfer
  76. ;#define _INT 0x03 ; Interrupt Transfer
  77. ; Isochronous Endpoint Synchronization Type
  78. ;#define _NS 0x00<<2 ; No Synchronization
  79. ;#define _AS 0x01<<2 ; Asynchronous
  80. ;#define _AD 0x02<<2 ; Adaptive
  81. ;#define _SY 0x03<<2 ; Synchronous
  82. ; Isochronous Endpoint Usage Type
  83. ;#define _DE 0x00<<4 ; Data endpoint
  84. ;#define _FE 0x01<<4 ; Feedback endpoint
  85. ;#define _IE 0x02<<4 ; Implicit feedback Data endpoint
  86. ; From usb9.h
  87. ; Standard Request Codes
  88. ; USB 2.0 Spec Ref Table 9-4
  89. #define GET_STATUS 0
  90. #define CLR_FEATURE 1
  91. #define SET_FEATURE 3
  92. #define SET_ADR 5
  93. #define GET_DSC 6
  94. #define SET_DSC 7
  95. #define GET_CFG 8
  96. #define SET_CFG 9
  97. #define GET_INTF 10
  98. #define SET_INTF 11
  99. #define SYNCH_FRAME 12
  100. ; Standard Feature Selectors
  101. #define DEVICE_REMOTE_WAKEUP 0x01
  102. #define ENDPOINT_HALT 0x00
  103. ; From hid.h
  104. ; Class-Specific Requests
  105. #define GET_REPORT 0x01
  106. #define GET_IDLE 0x02
  107. #define GET_PROTOCOL 0x03
  108. #define SET_REPORT 0x09
  109. #define SET_IDLE 0x0A
  110. #define SET_PROTOCOL 0x0B
  111. ; Class Descriptor Types
  112. #define DSC_HID 0x21
  113. #define DSC_RPT 0x22
  114. #define DSC_PHY 0x23
  115. ; Protocol Selection
  116. #define BOOT_PROTOCOL 0x00
  117. #define RPT_PROTOCOL 0x01
  118. ; HID Interface Class Code
  119. #define HID_INTF 0x03
  120. ; HID Interface Class SubClass Codes
  121. #define BOOT_INTF_SUBCLASS 0x01
  122. ; HID Interface Class Protocol Codes
  123. #define HID_PROTOCOL_NONE 0x00
  124. #define HID_PROTOCOL_KEYBOAD 0x01
  125. #define HID_PROTOCOL_MOUSE 0x02
  126. ; HID Report codes used in GET_REPORT and SET_REPORT requests
  127. #define HID_INPUT_REPORT 1
  128. #define HID_OUTPUT_REPORT 2
  129. #define HID_FEATURE_REPORT 3
  130. ; From cdc.h
  131. ; Class-Specific Requests
  132. #define SEND_ENCAPSULATED_COMMAND 0x00
  133. #define GET_ENCAPSULATED_RESPONSE 0x01
  134. #define SET_COMM_FEATURE 0x02
  135. #define GET_COMM_FEATURE 0x03
  136. #define CLEAR_COMM_FEATURE 0x04
  137. #define SET_LINE_CODING 0x20
  138. #define GET_LINE_CODING 0x21
  139. #define SET_CONTROL_LINE_STATE 0x22
  140. #define SEND_BREAK 0x23
  141. ; Notifications
  142. ;  Note: Notifications are polled over
  143. ;  Communication Interface (Interrupt Endpoint)
  144. #define NETWORK_CONNECTION 0x00
  145. #define RESPONSE_AVAILABLE 0x01
  146. #define SERIAL_STATE 0x20
  147. ; Device Class Code
  148. #define CDC_DEVICE 0x02
  149. ; Communication Interface Class Code
  150. #define COMM_INTF 0x02
  151. ; Communication Interface Class SubClass Codes
  152. #define ABSTRACT_CONTROL_MODEL 0x02
  153. ; Communication Interface Class Control Protocol Codes
  154. #define V25TER 0x01 ; Common AT commands ("Hayes(TM)")
  155. ; Data Interface Class Codes
  156. #define DATA_INTF 0x0A
  157. ; Data Interface Class Protocol Codes
  158. #define NO_PROTOCOL 0x00 ; No class specific protocol required
  159. ; Communication Feature Selector Codes
  160. #define ABSTRACT_STATE 0x01
  161. #define COUNTRY_SETTING 0x02
  162. ; Functional Descriptors
  163. ; Type Values for the bDscType Field
  164. #define CS_INTERFACE 0x24
  165. #define CS_ENDPOINT 0x25
  166. ; bDscSubType in Functional Descriptors
  167. #define DSC_FN_HEADER 0x00
  168. #define DSC_FN_CALL_MGT 0x01
  169. #define DSC_FN_ACM 0x02 ; ACM - Abstract Control Management
  170. #define DSC_FN_DLM 0x03 ; DLM - Direct Line Managment
  171. #define DSC_FN_TELEPHONE_RINGER 0x04
  172. #define DSC_FN_RPT_CAPABILITIES 0x05
  173. #define DSC_FN_UNION 0x06
  174. #define DSC_FN_COUNTRY_SELECTION 0x07
  175. #define DSC_FN_TEL_OP_MODES 0x08
  176. #define DSC_FN_USB_TERMINAL 0x09
  177. ; more.... see Table 25 in USB CDC Specification 1.1
  178. ; CDC Bulk IN transfer states
  179. #define CDC_TX_READY 0
  180. #define CDC_TX_BUSY 1
  181. #define CDC_TX_BUSY_ZLP 2 ; ZLP: Zero Length Packet
  182. #define CDC_TX_COMPLETING 3
  183. #define LINE_CODING_LENGTH 0x07
  184. #define dummy_length 0x08
  185. ; From usbctrltrf.h
  186. ; Control Transfer States
  187. #define WAIT_SETUP 0
  188. #define CTRL_TRF_TX 1
  189. #define CTRL_TRF_RX 2
  190. ; USB PID: Token Types - See chapter 8 in the USB specification
  191. #define SETUP_TOKEN 0x0d
  192. #define OUT_TOKEN 0x01
  193. #define IN_TOKEN 0x09
  194. ; bmRequestType Definitions
  195. #define HOST_TO_DEV 0
  196. #define DEV_TO_HOST 1
  197. #define STANDARD 0x00
  198. #define CLASS 0x01
  199. #define VENDOR 0x02
  200. #define RCPT_DEV 0
  201. #define RCPT_INTF 1
  202. #define RCPT_EP 2
  203. #define RCPT_OTH 3
  204. ; From usbdrv.h
  205. ; UCFG Initialization Parameters
  206. #define _PPBM0 0x00 ; Pingpong Buffer Mode 0
  207. #define _PPBM1 0x01 ; Pingpong Buffer Mode 1
  208. #define _PPBM2 0x02 ; Pingpong Buffer Mode 2
  209. #define _LS 0x00 ; Use Low-Speed USB Mode
  210. #define _FS 0x04 ; Use Full-Speed USB Mode
  211. #define _TRINT 0x00 ; Use internal transceiver
  212. #define _TREXT 0x08 ; Use external transceiver
  213. #define _PUEN 0x10 ; Use internal pull-up resistor
  214. #define _OEMON 0x40 ; Use SIE output indicator
  215. #define _UTEYE 0x80 ; Use Eye-Pattern test
  216. ; UEPn Initialization Parameters
  217. #define EP_CTRL 0x06 ; Cfg Control pipe for this ep
  218. #define EP_OUT 0x0C ; Cfg OUT only pipe for this ep
  219. #define EP_IN 0x0A ; Cfg IN only pipe for this ep
  220. #define EP_OUT_IN 0x0E ; Cfg both OUT & IN pipes for this ep
  221. #define HSHK_EN 0x10 ; Enable handshake packet
  222. #define OUT 0
  223. #define IN 1
  224. #define PIC_EP_NUM_MASK 0b01111000
  225. #define PIC_EP_DIR_MASK 0b00000100
  226. #define EP00_OUT ((0x00<<3)|(OUT<<2))
  227. #define EP00_IN ((0x00<<3)|(IN<<2))
  228. #define EP01_OUT ((0x01<<3)|(OUT<<2))
  229. #define EP01_IN ((0x01<<3)|(IN<<2))
  230. #define EP02_OUT ((0x02<<3)|(OUT<<2))
  231. #define EP02_IN ((0x02<<3)|(IN<<2))
  232. #define EP03_OUT ((0x03<<3)|(OUT<<2))
  233. #define EP03_IN ((0x03<<3)|(IN<<2))
  234. #define EP04_OUT ((0x04<<3)|(OUT<<2))
  235. #define EP04_IN ((0x04<<3)|(IN<<2))
  236. #define EP05_OUT ((0x05<<3)|(OUT<<2))
  237. #define EP05_IN ((0x05<<3)|(IN<<2))
  238. #define EP06_OUT ((0x06<<3)|(OUT<<2))
  239. #define EP06_IN ((0x06<<3)|(IN<<2))
  240. #define EP07_OUT ((0x07<<3)|(OUT<<2))
  241. #define EP07_IN ((0x07<<3)|(IN<<2))
  242. #define EP08_OUT ((0x08<<3)|(OUT<<2))
  243. #define EP08_IN ((0x08<<3)|(IN<<2))
  244. #define EP09_OUT ((0x09<<3)|(OUT<<2))
  245. #define EP09_IN ((0x09<<3)|(IN<<2))
  246. #define EP10_OUT ((0x0A<<3)|(OUT<<2))
  247. #define EP10_IN ((0x0A<<3)|(IN<<2))
  248. #define EP11_OUT ((0x0B<<3)|(OUT<<2))
  249. #define EP11_IN ((0x0B<<3)|(IN<<2))
  250. #define EP12_OUT ((0x0C<<3)|(OUT<<2))
  251. #define EP12_IN ((0x0C<<3)|(IN<<2))
  252. #define EP13_OUT ((0x0D<<3)|(OUT<<2))
  253. #define EP13_IN ((0x0D<<3)|(IN<<2))
  254. #define EP14_OUT ((0x0E<<3)|(OUT<<2))
  255. #define EP14_IN ((0x0E<<3)|(IN<<2))
  256. #define EP15_OUT ((0x0F<<3)|(OUT<<2))
  257. #define EP15_IN ((0x0F<<3)|(IN<<2))