usbdev_trace.h 25 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539
  1. /****************************************************************************
  2. * include/nuttx/usb/usbdev_trace.h
  3. *
  4. * Copyright (C) 2008, 2009-2010, 2012-2013, 2017 Gregory Nutt. All rights reserved.
  5. * Author: Gregory Nutt <gnutt@nuttx.org>
  6. *
  7. * Redistribution and use in source and binary forms, with or without
  8. * modification, are permitted provided that the following conditions
  9. * are met:
  10. *
  11. * 1. Redistributions of source code must retain the above copyright
  12. * notice, this list of conditions and the following disclaimer.
  13. * 2. Redistributions in binary form must reproduce the above copyright
  14. * notice, this list of conditions and the following disclaimer in
  15. * the documentation and/or other materials provided with the
  16. * distribution.
  17. * 3. Neither the name NuttX nor the names of its contributors may be
  18. * used to endorse or promote products derived from this software
  19. * without specific prior written permission.
  20. *
  21. * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
  22. * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
  23. * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
  24. * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
  25. * COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
  26. * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
  27. * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS
  28. * OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED
  29. * AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
  30. * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
  31. * ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
  32. * POSSIBILITY OF SUCH DAMAGE.
  33. *
  34. ****************************************************************************/
  35. #ifndef __INCLUDE_NUTTX_USB_USBDEV_TRACE_H
  36. #define __INCLUDE_NUTTX_USB_USBDEV_TRACE_H
  37. /****************************************************************************
  38. * Included Files
  39. ****************************************************************************/
  40. #include <nuttx/config.h>
  41. #include <stdint.h>
  42. /****************************************************************************
  43. * Preprocessor definitions
  44. ****************************************************************************/
  45. /* Event encoding/decoding macros *******************************************/
  46. #define TRACE_EVENT(id,data) ((uint16_t)(id) | (data))
  47. #define TRACE_ID(event) ((event) & 0xff00)
  48. #define TRACE_DATA(event) ((event) & 0x00ff)
  49. /* Events ******************************************************************/
  50. /* Event class IDs */
  51. #define TRACE_INIT_ID (0x0000) /* Initialization events */
  52. #define TRACE_EP_ID (0x0100) /* Endpoint API calls */
  53. #define TRACE_DEV_ID (0x0200) /* USB device API calls */
  54. #define TRACE_CLASS_ID (0x0300) /* USB class driver API calls */
  55. #define TRACE_CLASSAPI_ID (0x0400) /* Other class driver system API calls */
  56. #define TRACE_CLASSSTATE_ID (0x0500) /* Track class driver state changes */
  57. #define TRACE_INTENTRY_ID (0x0600) /* Interrupt handler entry */
  58. #define TRACE_INTDECODE_ID (0x0700) /* Decoded interrupt event */
  59. #define TRACE_INTEXIT_ID (0x0800) /* Interrupt handler exit */
  60. #define TRACE_OUTREQQUEUED_ID (0x0900) /* Request queued for OUT endpoint */
  61. #define TRACE_INREQQUEUED_ID (0x0a00) /* Request queued for IN endpoint */
  62. #define TRACE_READ_ID (0x0b00) /* Read (OUT) action */
  63. #define TRACE_WRITE_ID (0x0c00) /* Write (IN) action */
  64. #define TRACE_COMPLETE_ID (0x0d00) /* Request completed */
  65. #define TRACE_DEVERROR_ID (0x0e00) /* USB controller driver error event */
  66. #define TRACE_CLSERROR_ID (0x0f00) /* USB class driver error event */
  67. #define TRACE_NIDS 16 /* Cannot exceed bits in usbtrace_idset_t */
  68. /* Bit settings for usbtrace_enable */
  69. #define TRACE_ID2BIT(id) ((1) << ((id) >> 8))
  70. #define TRACE_INIT_BIT TRACE_ID2BIT(TRACE_INIT_ID)
  71. #define TRACE_EP_BIT TRACE_ID2BIT(TRACE_EP_ID)
  72. #define TRACE_DEV_BIT TRACE_ID2BIT(TRACE_DEV_ID)
  73. #define TRACE_CLASS_BIT TRACE_ID2BIT(TRACE_CLASS_ID)
  74. #define TRACE_CLASSAPI_BIT TRACE_ID2BIT(TRACE_CLASSAPI_ID)
  75. #define TRACE_CLASSSTATE_BIT TRACE_ID2BIT(TRACE_CLASSSTATE_ID)
  76. #define TRACE_INTENTRY_BIT TRACE_ID2BIT(TRACE_INTENTRY_ID)
  77. #define TRACE_INTDECODE_BIT TRACE_ID2BIT(TRACE_INTDECODE_ID)
  78. #define TRACE_INTEXIT_BIT TRACE_ID2BIT(TRACE_INTEXIT_ID)
  79. #define TRACE_OUTREQQUEUED_BIT TRACE_ID2BIT(TRACE_OUTREQQUEUED_ID)
  80. #define TRACE_INREQQUEUED_BIT TRACE_ID2BIT(TRACE_INREQQUEUED_ID)
  81. #define TRACE_READ_BIT TRACE_ID2BIT(TRACE_READ_ID)
  82. #define TRACE_WRITE_BIT TRACE_ID2BIT(TRACE_WRITE_ID)
  83. #define TRACE_COMPLETE_BIT TRACE_ID2BIT(TRACE_COMPLETE_ID)
  84. #define TRACE_DEVERROR_BIT TRACE_ID2BIT(TRACE_DEVERROR_ID)
  85. #define TRACE_CLSERROR_BIT TRACE_ID2BIT(TRACE_CLSERROR_ID)
  86. #define TRACE_ALLBITS ((usbtrace_idset_t)-1)
  87. /* Initialization events */
  88. #define TRACE_DEVINIT TRACE_EVENT(TRACE_INIT_ID, 0x0001)
  89. #define TRACE_DEVUNINIT TRACE_EVENT(TRACE_INIT_ID, 0x0002)
  90. #define TRACE_DEVREGISTER TRACE_EVENT(TRACE_INIT_ID, 0x0003)
  91. #define TRACE_DEVUNREGISTER TRACE_EVENT(TRACE_INIT_ID, 0x0004)
  92. #define TRACE_DEVINIT_USER TRACE_EVENT(TRACE_INIT_ID, 0x0005) /* First user-defined */
  93. /* API calls (see usbdev.h) */
  94. #define TRACE_EPCONFIGURE TRACE_EVENT(TRACE_EP_ID, 0x0001)
  95. #define TRACE_EPDISABLE TRACE_EVENT(TRACE_EP_ID, 0x0002)
  96. #define TRACE_EPALLOCREQ TRACE_EVENT(TRACE_EP_ID, 0x0003)
  97. #define TRACE_EPFREEREQ TRACE_EVENT(TRACE_EP_ID, 0x0004)
  98. #define TRACE_EPALLOCBUFFER TRACE_EVENT(TRACE_EP_ID, 0x0005)
  99. #define TRACE_EPFREEBUFFER TRACE_EVENT(TRACE_EP_ID, 0x0006)
  100. #define TRACE_EPSUBMIT TRACE_EVENT(TRACE_EP_ID, 0x0007)
  101. #define TRACE_EPCANCEL TRACE_EVENT(TRACE_EP_ID, 0x0008)
  102. #define TRACE_EPSTALL TRACE_EVENT(TRACE_EP_ID, 0x0009)
  103. #define TRACE_EPRESUME TRACE_EVENT(TRACE_EP_ID, 0x000a)
  104. #define TRACE_EPAPI_USER TRACE_EVENT(TRACE_EP_ID, 0x000b) /* First user-defined */
  105. #define TRACE_DEVALLOCEP TRACE_EVENT(TRACE_DEV_ID, 0x0001)
  106. #define TRACE_DEVFREEEP TRACE_EVENT(TRACE_DEV_ID, 0x0002)
  107. #define TRACE_DEVGETFRAME TRACE_EVENT(TRACE_DEV_ID, 0x0003)
  108. #define TRACE_DEVWAKEUP TRACE_EVENT(TRACE_DEV_ID, 0x0004)
  109. #define TRACE_DEVSELFPOWERED TRACE_EVENT(TRACE_DEV_ID, 0x0005)
  110. #define TRACE_DEVPULLUP TRACE_EVENT(TRACE_DEV_ID, 0x0006)
  111. #define TRACE_DEVAPI_USER TRACE_EVENT(TRACE_DEV_ID, 0x0007) /* First user-defined */
  112. #define TRACE_CLASSBIND TRACE_EVENT(TRACE_CLASS_ID, 0x0001)
  113. #define TRACE_CLASSUNBIND TRACE_EVENT(TRACE_CLASS_ID, 0x0002)
  114. #define TRACE_CLASSDISCONNECT TRACE_EVENT(TRACE_CLASS_ID, 0x0003)
  115. #define TRACE_CLASSSETUP TRACE_EVENT(TRACE_CLASS_ID, 0x0004)
  116. #define TRACE_CLASSSUSPEND TRACE_EVENT(TRACE_CLASS_ID, 0x0005)
  117. #define TRACE_CLASSRESUME TRACE_EVENT(TRACE_CLASS_ID, 0x0006)
  118. #define TRACE_CLASSRDCOMPLETE TRACE_EVENT(TRACE_CLASS_ID, 0x0007)
  119. #define TRACE_CLASSWRCOMPLETE TRACE_EVENT(TRACE_CLASS_ID, 0x0008)
  120. #define TRACE_CLASSAPI_USER TRACE_EVENT(TRACE_CLASS_ID, 0x0009) /* First user-defined */
  121. #define TRACE_CLASSAPI(id) TRACE_EVENT(TRACE_CLASSAPI_ID, id)
  122. #define TRACE_CLASSSTATE(id) TRACE_EVENT(TRACE_CLASSSTATE_ID, id)
  123. /* USB device controller interrupt events. The 'id' is specific to the driver.
  124. * Particular values for 'id' are unique for a given implementation of a
  125. * controller driver
  126. */
  127. #define TRACE_INTENTRY(id) TRACE_EVENT(TRACE_INTENTRY_ID, id)
  128. #define TRACE_INTDECODE(id) TRACE_EVENT(TRACE_INTDECODE_ID, id)
  129. #define TRACE_INTEXIT(id) TRACE_EVENT(TRACE_INTEXIT_ID, id)
  130. /* Controller data transfer */
  131. #define TRACE_OUTREQQUEUED(ep) TRACE_EVENT(TRACE_OUTREQQUEUED_ID, ep)
  132. #define TRACE_INREQQUEUED(ep) TRACE_EVENT(TRACE_INREQQUEUED_ID, ep)
  133. #define TRACE_READ(ep) TRACE_EVENT(TRACE_READ_ID, ep)
  134. #define TRACE_WRITE(ep) TRACE_EVENT(TRACE_WRITE_ID, ep)
  135. #define TRACE_COMPLETE(ep) TRACE_EVENT(TRACE_COMPLETE_ID, ep)
  136. /* USB device controller error events. The 'id' is specific to the driver.
  137. * Particular values for 'id' are unique for a given implementation of a
  138. * controller driver
  139. */
  140. #define TRACE_DEVERROR(id) TRACE_EVENT(TRACE_DEVERROR_ID, id)
  141. /* USB class driver error events. The 'id' is specific to the class driver,
  142. * but common to all driver controller instances.
  143. */
  144. #define TRACE_CLSERROR(id) TRACE_EVENT(TRACE_CLSERROR_ID, id)
  145. /* Event string descriptions ************************************************/
  146. /* Macros for defining the string arrays for display of the traces. */
  147. #ifdef CONFIG_USBDEV_TRACE_STRINGS
  148. # define TRACE_STR(id) {id, #id}
  149. # define TRACE_STR_END {0, NULL}
  150. #endif
  151. /* USB Serial driver class events *******************************************/
  152. /* Used by both the CDC/ACM and the PL2303 serial class drivers */
  153. /* UART interface API calls */
  154. #define USBSER_TRACECLASSAPI_SETUP 0x0001
  155. #define USBSER_TRACECLASSAPI_SHUTDOWN 0x0002
  156. #define USBSER_TRACECLASSAPI_ATTACH 0x0003
  157. #define USBSER_TRACECLASSAPI_DETACH 0x0004
  158. #define USBSER_TRACECLASSAPI_IOCTL 0x0005
  159. #define USBSER_TRACECLASSAPI_RECEIVE 0x0006
  160. #define USBSER_TRACECLASSAPI_RXINT 0x0007
  161. #define USBSER_TRACECLASSAPI_RXAVAILABLE 0x0008
  162. #define USBSER_TRACECLASSAPI_SEND 0x0009
  163. #define USBSER_TRACECLASSAPI_TXINT 0x000a
  164. #define USBSER_TRACECLASSAPI_TXREADY 0x000b
  165. #define USBSER_TRACECLASSAPI_TXEMPTY 0x000c
  166. #define USBSER_TRACECLASSAPI_FLOWCONTROL 0x000d
  167. /* Values of the class error ID used by the USB serial driver */
  168. #define USBSER_TRACEERR_ALLOCCTRLREQ 0x0001
  169. #define USBSER_TRACEERR_ALLOCDEVSTRUCT 0x0002
  170. #define USBSER_TRACEERR_ALREADYCLOSED 0x0003
  171. #define USBSER_TRACEERR_ALREADYCONFIGURED 0x0004
  172. #define USBSER_TRACEERR_CONFIGIDBAD 0x0005
  173. #define USBSER_TRACEERR_CONFIGNONE 0x0006
  174. #define USBSER_TRACEERR_CONSOLEREGISTER 0x0007
  175. #define USBSER_TRACEERR_DEVREGISTER 0x0008
  176. #define USBSER_TRACEERR_EPRESPQ 0x0009
  177. #define USBSER_TRACEERR_GETUNKNOWNDESC 0x000a
  178. #define USBSER_TRACEERR_INVALIDARG 0x000b
  179. #define USBSER_TRACEERR_EP0NOTBOUND 0x000c
  180. #define USBSER_TRACEERR_EPBULKINALLOCFAIL 0x000d
  181. #define USBSER_TRACEERR_EPBULKINCONFIGFAIL 0x000e
  182. #define USBSER_TRACEERR_EPBULKOUTALLOCFAIL 0x000f
  183. #define USBSER_TRACEERR_EPINTINALLOCFAIL 0x0010
  184. #define USBSER_TRACEERR_EPINTINCONFIGFAIL 0x0011
  185. #define USBSER_TRACEERR_EPBULKOUTCONFIGFAIL 0x0012
  186. #define USBSER_TRACEERR_RDALLOCREQ 0x0013
  187. #define USBSER_TRACEERR_RDSHUTDOWN 0x0014
  188. #define USBSER_TRACEERR_RDSUBMIT 0x0015
  189. #define USBSER_TRACEERR_RDUNEXPECTED 0x0016
  190. #define USBSER_TRACEERR_REQRESULT 0x0017
  191. #define USBSER_TRACEERR_RXOVERRUN 0x0018
  192. #define USBSER_TRACEERR_SETUPNOTCONNECTED 0x0019
  193. #define USBSER_TRACEERR_SUBMITFAIL 0x001a
  194. #define USBSER_TRACEERR_UARTREGISTER 0x001b
  195. #define USBSER_TRACEERR_UARTUNREGISTER 0x001c
  196. #define USBSER_TRACEERR_UNSUPPORTEDCTRLREQ 0x001d
  197. #define USBSER_TRACEERR_UNSUPPORTEDCLASSREQ 0x001e
  198. #define USBSER_TRACEERR_UNSUPPORTEDSTDREQ 0x001f
  199. #define USBSER_TRACEERR_UNSUPPORTEDTYPE 0x0020
  200. #define USBSER_TRACEERR_WRALLOCREQ 0x0021
  201. #define USBSER_TRACEERR_WRSHUTDOWN 0x0022
  202. #define USBSER_TRACEERR_WRUNEXPECTED 0x0023
  203. /* USB Storage driver class events ******************************************/
  204. #define USBCOMPOSITE_TRACEERR_REQRESULT 0x0041
  205. #define USBCOMPOSITE_TRACEERR_ALLOCCTRLREQ 0x0042
  206. #define USBCOMPOSITE_TRACEERR_INVALIDARG 0x0043
  207. #define USBCOMPOSITE_TRACEERR_EP0NOTBOUND 0x0044
  208. #define USBCOMPOSITE_TRACEERR_SETUPINVALIDARGS 0x0045
  209. #define USBCOMPOSITE_TRACEERR_EP0NOTBOUND2 0x0046
  210. #define USBCOMPOSITE_TRACEERR_GETUNKNOWNDESC 0x0047
  211. #define USBCOMPOSITE_TRACEERR_UNSUPPORTEDSTDREQ 0x0048
  212. #define USBCOMPOSITE_TRACEERR_EPRESPQ 0x0049
  213. #define USBCOMPOSITE_TRACEERR_ALLOCDEVSTRUCT 0x004a
  214. #define USBCOMPOSITE_TRACEERR_CLASSOBJECT 0x004b
  215. #define USBCOMPOSITE_TRACEERR_DEVREGISTER 0x004c
  216. /* USB Storage driver class events ******************************************/
  217. /* State transitions */
  218. #define USBMSC_CLASSSTATE_IDLECMDPARSE 0x0081
  219. #define USBMSC_CLASSSTATE_CMDPARSECMDFINISH 0x0082
  220. #define USBMSC_CLASSSTATE_CMDPARSECMDREAD6 0x0083
  221. #define USBMSC_CLASSSTATE_CMDPARSECMDREAD10 0x0084
  222. #define USBMSC_CLASSSTATE_CMDPARSECMDREAD12 0x0085
  223. #define USBMSC_CLASSSTATE_CMDPARSECMDWRITE6 0x0086
  224. #define USBMSC_CLASSSTATE_CMDPARSECMDWRITE10 0x0087
  225. #define USBMSC_CLASSSTATE_CMDPARSECMDWRITE12 0x0088
  226. #define USBMSC_CLASSSTATE_CMDREAD 0x0089
  227. #define USBMSC_CLASSSTATE_CMDREADCMDFINISH 0x008a
  228. #define USBMSC_CLASSSTATE_CMDWRITE 0x008b
  229. #define USBMSC_CLASSSTATE_CMDWRITECMDFINISH 0x008c
  230. #define USBMSC_CLASSSTATE_CMDFINISHCMDSTATUS 0x008d
  231. #define USBMSC_CLASSSTATE_CMDSTATUSIDLE 0x008e
  232. /* Values of the class error ID used by the USB storage driver */
  233. #define USBMSC_TRACEERR_ALLOCCTRLREQ 0x0081
  234. #define USBMSC_TRACEERR_ALLOCDEVSTRUCT 0x0082
  235. #define USBMSC_TRACEERR_ALLOCIOBUFFER 0x0083
  236. #define USBMSC_TRACEERR_ALREADYCONFIGURED 0x0084
  237. #define USBMSC_TRACEERR_ALREADYUNINIT 0x0085
  238. #define USBMSC_TRACEERR_BADREQUEST 0x0086
  239. #define USBMSC_TRACEERR_BINDLUNINVALIDARGS2 0x0087
  240. #define USBMSC_TRACEERR_BINDLUNINVALIDARGS3 0x0088
  241. #define USBMSC_TRACEERR_BINDLUNINVALIDARGS4 0x0089
  242. #define USBMSC_TRACEERR_BINLUNINVALIDARGS1 0x008a
  243. #define USBMSC_TRACEERR_BLKDRVEOPEN 0x008b
  244. #define USBMSC_TRACEERR_CMDBADLUN 0x008c
  245. #define USBMSC_TRACEERR_CMDFINISHRESIDUE 0x008d
  246. #define USBMSC_TRACEERR_CMDFINISHRQEMPTY 0x008e
  247. #define USBMSC_TRACEERR_CMDFINISHSHORTPKT 0x008f
  248. #define USBMSC_TRACEERR_CMDFINISHSUBMIT 0x0090
  249. #define USBMSC_TRACEERR_CMDFINSHDIR 0x0091
  250. #define USBMSC_TRACEERR_CMDFINSHSUBMIT 0x0092
  251. #define USBMSC_TRACEERR_CMDPARSEWRREQLISTEMPTY 0x0093
  252. #define USBMSC_TRACEERR_CMDREADREADFAIL 0x0094
  253. #define USBMSC_TRACEERR_CMDREADSUBMIT 0x0095
  254. #define USBMSC_TRACEERR_CMDREADWRRQEMPTY 0x0096
  255. #define USBMSC_TRACEERR_CMDSTATUSWRREQLISTEMPTY 0x0097
  256. #define USBMSC_TRACEERR_CMDUNEVIOLATION 0x0098
  257. #define USBMSC_TRACEERR_CMDWRITERDSUBMIT 0x0099
  258. #define USBMSC_TRACEERR_CMDWRITERDRQEMPTY 0x009a
  259. #define USBMSC_TRACEERR_CMDWRITEWRITEFAIL 0x009b
  260. #define USBMSC_TRACEERR_CONFIGIDBAD 0x009c
  261. #define USBMSC_TRACEERR_CONFIGNONE 0x009d
  262. #define USBMSC_TRACEERR_DEFERREDRESPINVALIDARGS 0x009e
  263. #define USBMSC_TRACEERR_DEFERREDRESPSTALLED 0x009f
  264. #define USBMSC_TRACEERR_DEFERREDRESPSUBMIT 0x00a0
  265. #define USBMSC_TRACEERR_DEVREGISTER 0x00a1
  266. #define USBMSC_TRACEERR_DISCONNECTINVALIDARGS 0x00a2
  267. #define USBMSC_TRACEERR_EP0NOTBOUND1 0x00a3
  268. #define USBMSC_TRACEERR_EP0NOTBOUND2 0x00a4
  269. #define USBMSC_TRACEERR_EP0NOTBOUND3 0x00a5
  270. #define USBMSC_TRACEERR_EPBULKINALLOCFAIL 0x00a6
  271. #define USBMSC_TRACEERR_EPBULKINCONFIGFAIL 0x00a7
  272. #define USBMSC_TRACEERR_EPBULKOUTALLOCFAIL 0x00a8
  273. #define USBMSC_TRACEERR_EPBULKOUTCONFIGFAIL 0x00a9
  274. #define USBMSC_TRACEERR_EPRESPQ 0x00aa
  275. #define USBMSC_TRACEERR_EXPORTLUNSINVALIDARGS 0x00ab
  276. #define USBMSC_TRACEERR_GETMAXLUNNDX 0x00ac
  277. #define USBMSC_TRACEERR_GETUNKNOWNDESC 0x00ad
  278. #define USBMSC_TRACEERR_IDLERDREQLISTEMPTY 0x00ae
  279. #define USBMSC_TRACEERR_IDLERDSUBMIT 0x00af
  280. #define USBMSC_TRACEERR_INQUIRYFLAGS 0x00b0
  281. #define USBMSC_TRACEERR_INTERNALCONFUSION1 0x00b1
  282. #define USBMSC_TRACEERR_INTERNALCONFUSION2 0x00b2
  283. #define USBMSC_TRACEERR_INVALIDCBWCONTENT 0x00b3
  284. #define USBMSC_TRACEERR_INVALIDCBWSIGNATURE 0x00b4
  285. #define USBMSC_TRACEERR_INVALIDSTATE 0x00b5
  286. #define USBMSC_TRACEERR_LUNALREADYBOUND 0x00b6
  287. #define USBMSC_TRACEERR_LUNNOTBOUND 0x00b7
  288. #define USBMSC_TRACEERR_MODEPAGEFLAGS 0x00b8
  289. #define USBMSC_TRACEERR_MODESENSE10FLAGS 0x00b9
  290. #define USBMSC_TRACEERR_MODESENSE6FLAGS 0x00ba
  291. #define USBMSC_TRACEERR_MSRESETNDX 0x00bb
  292. #define USBMSC_TRACEERR_NOGEOMETRY 0x00bc
  293. #define USBMSC_TRACEERR_NOTCONFIGURED 0x00bd
  294. #define USBMSC_TRACEERR_NOTREMOVABLE 0x00be
  295. #define USBMSC_TRACEERR_PCSAVED 0x00bf
  296. #define USBMSC_TRACEERR_PHASEERROR1 0x00c0
  297. #define USBMSC_TRACEERR_PHASEERROR2 0x00c1
  298. #define USBMSC_TRACEERR_PHASEERROR3 0x00c2
  299. #define USBMSC_TRACEERR_PREVENTMEDIUMREMOVALPREVENT 0x00c3
  300. #define USBMSC_TRACEERR_RDALLOCREQ 0x00c4
  301. #define USBMSC_TRACEERR_RDCOMPLETEINVALIDARGS 0x00c5
  302. #define USBMSC_TRACEERR_RDCOMPLETERDSUBMIT 0x00c6
  303. #define USBMSC_TRACEERR_RDSHUTDOWN 0x00c7
  304. #define USBMSC_TRACEERR_RDSUBMIT 0x00c8
  305. #define USBMSC_TRACEERR_RDUNEXPECTED 0x00c9
  306. #define USBMSC_TRACEERR_READ10FLAGS 0x00ca
  307. #define USBMSC_TRACEERR_READ10LBARANGE 0x00cb
  308. #define USBMSC_TRACEERR_READ10MEDIANOTPRESENT 0x00cc
  309. #define USBMSC_TRACEERR_READ12FLAGS 0x00cd
  310. #define USBMSC_TRACEERR_READ12LBARANGE 0x00ce
  311. #define USBMSC_TRACEERR_READ12MEDIANOTPRESENT 0x00cf
  312. #define USBMSC_TRACEERR_READ6LBARANGE 0x00d0
  313. #define USBMSC_TRACEERR_READ6MEDIANOTPRESENT 0x00d1
  314. #define USBMSC_TRACEERR_READCAPACITYFLAGS 0x00d2
  315. #define USBMSC_TRACEERR_REALLOCIOBUFFER 0x00d3
  316. #define USBMSC_TRACEERR_REQRESULT 0x00d4
  317. #define USBMSC_TRACEERR_SCSICMDCONTROL 0x00d5
  318. #define USBMSC_TRACEERR_SETCONFIGINVALIDARGS 0x00d6
  319. #define USBMSC_TRACEERR_SETUPINVALIDARGS 0x00d7
  320. #define USBMSC_TRACEERR_SNDCSWFAIL 0x00d8
  321. #define USBMSC_TRACEERR_SNDPHERROR 0x00d9
  322. #define USBMSC_TRACEERR_SNDSTATUSSUBMIT 0x00da
  323. #define USBMSC_TRACEERR_SYNCCACHEMEDIANOTPRESENT 0x00db
  324. #define USBMSC_TRACEERR_THREADCREATE 0x00dc
  325. #define USBMSC_TRACEERR_DETACH 0x00dd
  326. #define USBMSC_TRACEERR_TOOMANYLUNS 0x00de
  327. #define USBMSC_TRACEERR_UNBINDINVALIDARGS 0x00df
  328. #define USBMSC_TRACEERR_UNBINDLUNINVALIDARGS1 0x00e0
  329. #define USBMSC_TRACEERR_UNBINDLUNINVALIDARGS2 0x00e1
  330. #define USBMSC_TRACEERR_UNINITIALIZEINVALIDARGS 0x00ee
  331. #define USBMSC_TRACEERR_UNSUPPORTEDSTDREQ 0x00e3
  332. #define USBMSC_TRACEERR_VERIFY10FLAGS 0x00e4
  333. #define USBMSC_TRACEERR_VERIFY10LBARANGE 0x00e5
  334. #define USBMSC_TRACEERR_VERIFY10MEDIANOTPRESENT 0x00e6
  335. #define USBMSC_TRACEERR_VERIFY10NOBLOCKS 0x00e7
  336. #define USBMSC_TRACEERR_VERIFY10READFAIL 0x00e8
  337. #define USBMSC_TRACEERR_WRALLOCREQ 0x00e9
  338. #define USBMSC_TRACEERR_WRCOMPLETEINVALIDARGS 0x00ea
  339. #define USBMSC_TRACEERR_WRITE10FLAGS 0x00eb
  340. #define USBMSC_TRACEERR_WRITE10LBARANGE 0x00ec
  341. #define USBMSC_TRACEERR_WRITE10MEDIANOTPRESENT 0x00ed
  342. #define USBMSC_TRACEERR_WRITE10READONLY 0x00ee
  343. #define USBMSC_TRACEERR_WRITE12FLAGS 0x00ef
  344. #define USBMSC_TRACEERR_WRITE12LBARANGE 0x00f0
  345. #define USBMSC_TRACEERR_WRITE12MEDIANOTPRESENT 0x00f1
  346. #define USBMSC_TRACEERR_WRITE12READONLY 0x00f2
  347. #define USBMSC_TRACEERR_WRITE6LBARANGE 0x00f3
  348. #define USBMSC_TRACEERR_WRITE6MEDIANOTPRESENT 0x00f4
  349. #define USBMSC_TRACEERR_WRITE6READONLY 0x00f5
  350. #define USBMSC_TRACEERR_WRSHUTDOWN 0x00f6
  351. #define USBMSC_TRACEERR_WRUNEXPECTED 0x00f7
  352. #define USBMSC_TRACEERR_UNSUPPORTEDTYPE 0x00f8
  353. /****************************************************************************
  354. * Public Types
  355. ****************************************************************************/
  356. /* The reported trace information */
  357. struct usbtrace_s
  358. {
  359. uint16_t event;
  360. uint16_t value;
  361. };
  362. /* Describes on element of a string string for decoding of device-specific
  363. * trace events.
  364. */
  365. #ifdef CONFIG_USBDEV_TRACE_STRINGS
  366. struct trace_msg_t
  367. {
  368. uint16_t id; /* 8-bit ID value */
  369. FAR const char *str; /* String assoiciated with the ID */
  370. };
  371. #endif
  372. /* Enumeration callback function signature */
  373. typedef CODE int (*trace_callback_t)(struct usbtrace_s *trace, void *arg);
  374. /* Bit mask input type for usbtrace_enable(). If TRACE_NIDS grows beyond
  375. * 16, then this will have to be changed to uint32_t
  376. */
  377. typedef uint16_t usbtrace_idset_t;
  378. /* Print routine to use for usbdev_trprint() output */
  379. typedef CODE int (*trprintf_t)(const char *fmt, ...);
  380. /****************************************************************************
  381. * Public Data
  382. ****************************************************************************/
  383. #undef EXTERN
  384. #if defined(__cplusplus)
  385. # define EXTERN extern "C"
  386. extern "C"
  387. {
  388. #else
  389. # define EXTERN extern
  390. #endif
  391. /* If CONFIG_USBDEV_TRACE_STRINGS is defined, then the USB class driver and
  392. * the USB device controller driver must provide these strings to support
  393. * decoding of class- and device-specific trace events.
  394. */
  395. #ifdef CONFIG_USBDEV_TRACE_STRINGS
  396. EXTERN const struct trace_msg_t g_usb_trace_strings_clsapi[];
  397. EXTERN const struct trace_msg_t g_usb_trace_strings_clsstate[];
  398. EXTERN const struct trace_msg_t g_usb_trace_strings_clserror[];
  399. EXTERN const struct trace_msg_t g_usb_trace_strings_deverror[];
  400. EXTERN const struct trace_msg_t g_usb_trace_strings_intdecode[];
  401. #endif
  402. /****************************************************************************
  403. * Public Function Prototypes
  404. ****************************************************************************/
  405. /****************************************************************************
  406. * Name: usbtrace_enable
  407. *
  408. * Description:
  409. * Enable/disable tracing per trace ID. The initial state is all IDs enabled.
  410. *
  411. * Input Parameters:
  412. * idset - The bitset of IDs to be masked. TRACE_ALLIDS enables all IDS; zero
  413. * masks all IDs.
  414. *
  415. * Returned Value:
  416. * The previous idset value.
  417. *
  418. * Assumptions:
  419. * - May be called from an interrupt handler
  420. *
  421. ****************************************************************************/
  422. #if defined(CONFIG_USBDEV_TRACE) || (defined(CONFIG_DEBUG_FEATURES) && defined(CONFIG_DEBUG_USB))
  423. usbtrace_idset_t usbtrace_enable(usbtrace_idset_t idset);
  424. #else
  425. # define usbtrace_enable(idset)
  426. #endif
  427. /****************************************************************************
  428. * Name: usbtrace
  429. *
  430. * Description:
  431. * Record a USB event (tracing must be enabled)
  432. *
  433. * Assumptions:
  434. * May be called from an interrupt handler
  435. *
  436. ****************************************************************************/
  437. #if defined(CONFIG_USBDEV_TRACE) || (defined(CONFIG_DEBUG_FEATURES) && defined(CONFIG_DEBUG_USB))
  438. void usbtrace(uint16_t event, uint16_t value);
  439. #else
  440. # define usbtrace(event, value)
  441. #endif
  442. /****************************************************************************
  443. * Name: usbtrace_enumerate
  444. *
  445. * Description:
  446. * Enumerate all buffer trace data (will temporarily disable tracing)
  447. *
  448. * Assumptions:
  449. * NEVER called from an interrupt handler
  450. *
  451. ****************************************************************************/
  452. #ifdef CONFIG_USBDEV_TRACE
  453. int usbtrace_enumerate(trace_callback_t callback, void *arg);
  454. #else
  455. # define usbtrace_enumerate(event)
  456. #endif
  457. /****************************************************************************
  458. * Name: usbtrace_trprint
  459. *
  460. * Description:
  461. * Print the trace record using the supplied printing function
  462. *
  463. ****************************************************************************/
  464. void usbtrace_trprintf(trprintf_t trprintf, uint16_t event, uint16_t value);
  465. #undef EXTERN
  466. #if defined(__cplusplus)
  467. }
  468. #endif
  469. #endif /* __INCLUDE_NUTTX_USB_USBDEV_TRACE_H */