From e9c523ac51cd0ef16e3fce6edf7ff40b8035fcb4 Mon Sep 17 00:00:00 2001
From: patacongo <patacongo@42af7a65-404d-4744-a932-0658087f49c3>
Date: Thu, 16 Dec 2010 00:49:02 +0000
Subject: [PATCH] Changes to get USB host driver compile

git-svn-id: svn://svn.code.sf.net/p/nuttx/code/trunk@3185 42af7a65-404d-4744-a932-0658087f49c3
---
 drivers/usbhost/usbhost_findclass.c     |   6 +-
 drivers/usbhost/usbhost_registerclass.c |   3 +-
 drivers/usbhost/usbhost_storage.c       |   3 +
 include/nuttx/usb/usbhost.h             |   2 +
 include/nuttx/usb/usbhost_trace.h       | 478 ++++++++++++++++++++++++
 5 files changed, 489 insertions(+), 3 deletions(-)
 create mode 100755 include/nuttx/usb/usbhost_trace.h

diff --git a/drivers/usbhost/usbhost_findclass.c b/drivers/usbhost/usbhost_findclass.c
index 8d829defe1..1b2a7edae3 100644
--- a/drivers/usbhost/usbhost_findclass.c
+++ b/drivers/usbhost/usbhost_findclass.c
@@ -38,6 +38,8 @@
  ****************************************************************************/
 
 #include <nuttx/config.h>
+
+#include <sys/types.h>
 #include <stdbool.h>
 
 #include <nuttx/usb/usb.h>
@@ -81,14 +83,14 @@
  *
  ****************************************************************************/
 
-static bool usbhost_ismatch(const struct usbhost_id_s *classid,
+static bool usbhost_idmatch(const struct usbhost_id_s *classid,
                             const struct usbhost_id_s *devid)
 {
   /* The base class ID, subclass and protocol have to match up in any event */
 
   if (devid->base     == classid->base &&
       devid->subclass == classid->subclass &&
-      devid->proto    == clsssid->proto)
+      devid->proto    == classid->proto)
     {
       /* If this is a vendor-specific class ID, then the VID and PID have to
        * match as well.
diff --git a/drivers/usbhost/usbhost_registerclass.c b/drivers/usbhost/usbhost_registerclass.c
index d924de932f..0c8d3b20d8 100644
--- a/drivers/usbhost/usbhost_registerclass.c
+++ b/drivers/usbhost/usbhost_registerclass.c
@@ -39,10 +39,11 @@
 
 #include <nuttx/config.h>
 
+#include <sys/types.h>
 #include <errno.h>
 
-#include <nuttx/usb/usbhost.h>
 #include <arch/irq.h>
+#include <nuttx/usb/usbhost.h>
 
 #include "usbhost_registry.h"
 
diff --git a/drivers/usbhost/usbhost_storage.c b/drivers/usbhost/usbhost_storage.c
index 618333b2f3..5142871eb4 100644
--- a/drivers/usbhost/usbhost_storage.c
+++ b/drivers/usbhost/usbhost_storage.c
@@ -49,6 +49,8 @@
 #include <nuttx/usb/usb.h>
 #include <nuttx/usb/usbhost.h>
 
+#if defined(CONFIG_USBHOST) && !defined(CONFIG_DISABLE_MOUNTPOINT) && CONFIG_NFILE_DESCRIPTORS > 0
+
 /****************************************************************************
  * Pre-processor Definitions
  ****************************************************************************/
@@ -1034,3 +1036,4 @@ int usbhost_storageinit(void)
   return usbhost_registerclass(&g_storage);
 }
 
+#endif  /* CONFIG_USBHOST && !CONFIG_DISABLE_MOUNTPOINT && CONFIG_NFILE_DESCRIPTORS > 0 */
diff --git a/include/nuttx/usb/usbhost.h b/include/nuttx/usb/usbhost.h
index 7043c65e76..3dc5311aef 100644
--- a/include/nuttx/usb/usbhost.h
+++ b/include/nuttx/usb/usbhost.h
@@ -48,7 +48,9 @@
  ************************************************************************************/
 
 #include <nuttx/config.h>
+
 #include <stdint.h>
+#include <stdbool.h>
 
 /************************************************************************************
  * Pre-processor Definitions
diff --git a/include/nuttx/usb/usbhost_trace.h b/include/nuttx/usb/usbhost_trace.h
new file mode 100755
index 0000000000..cd14414ed3
--- /dev/null
+++ b/include/nuttx/usb/usbhost_trace.h
@@ -0,0 +1,478 @@
+/****************************************************************************
+ * include/nuttx/usb/usbhost_trace.h
+ *
+ *   Copyright (C) 2010 Gregory Nutt. All rights reserved.
+ *   Author: Gregory Nutt <spudmonkey@racsa.co.cr>
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ *
+ * 1. Redistributions of source code must retain the above copyright
+ *    notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ *    notice, this list of conditions and the following disclaimer in
+ *    the documentation and/or other materials provided with the
+ *    distribution.
+ * 3. Neither the name NuttX nor the names of its contributors may be
+ *    used to endorse or promote products derived from this software
+ *    without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+ * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+ * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
+ * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
+ * COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
+ * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
+ * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS
+ * OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED
+ * AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+ * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
+ * ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+ * POSSIBILITY OF SUCH DAMAGE.
+ *
+ ****************************************************************************/
+
+#ifndef __INCLUDE_NUTTX_USB_USBHOST_TRACE_H
+#define __INCLUDE_NUTTX_USB_USBHOST_TRACE_H
+
+/****************************************************************************
+ * Included Files
+ ****************************************************************************/
+
+#include <nuttx/config.h>
+
+#include <stdint.h>
+
+/****************************************************************************
+ * Preprocessor definitions
+ ****************************************************************************/
+
+/* Event encoding/decoding macros *******************************************/
+
+#define TRACE_EVENT(id,data)     ((uint16_t)(id)|(data))
+#define TRACE_ID(event)          ((event)&0xff00)
+#define TRACE_DATA(event)        ((event)&0x00ff)
+
+/* Events ******************************************************************/
+
+/* Event class IDs */
+
+#define TRACE_INIT_ID            (0x0000) /* Initialization events */
+#define TRACE_EP_ID              (0x0100) /* Endpoint API calls */
+#define TRACE_DEV_ID             (0x0200) /* USB device API calls */
+#define TRACE_CLASS_ID           (0x0300) /* USB class driver API calls */
+#define TRACE_CLASSAPI_ID        (0x0400) /* Other class driver system API calls */
+#define TRACE_CLASSSTATE_ID      (0x0500) /* Track class driver state changes */
+#define TRACE_INTENTRY_ID        (0x0600) /* Interrupt handler entry */
+#define TRACE_INTDECODE_ID       (0x0700) /* Decoded interrupt event */
+#define TRACE_INTEXIT_ID         (0x0800) /* Interrupt handler exit */
+#define TRACE_OUTREQQUEUED_ID    (0x0900) /* Request queued for OUT endpoint */
+#define TRACE_INREQQUEUED_ID     (0x0a00) /* Request queued for IN endpoint */
+#define TRACE_READ_ID            (0x0b00) /* Read (OUT) action */
+#define TRACE_WRITE_ID           (0x0c00) /* Write (IN) action */
+#define TRACE_COMPLETE_ID        (0x0d00) /* Request completed */
+#define TRACE_DEVERROR_ID        (0x0e00) /* USB controller driver error event */
+#define TRACE_CLSERROR_ID        (0x0f00) /* USB class driver error event */
+
+#define TRACE_NIDS               16       /* Cannot exceed bits in usbtrace_idset_t */
+
+/* Bit settings for usbtrace_enable */
+
+#define TRACE_ID2BIT(id)         ((1) << ((id) >> 8))
+#define TRACE_INIT_BIT           TRACE_ID2BIT(TRACE_INIT_ID)
+#define TRACE_EP_BIT             TRACE_ID2BIT(TRACE_EP_ID)
+#define TRACE_DEV_BIT            TRACE_ID2BIT(TRACE_DEV_ID)
+#define TRACE_CLASS_BIT          TRACE_ID2BIT(TRACE_CLASS_ID)
+#define TRACE_CLASSAPI_BIT       TRACE_ID2BIT(TRACE_CLASSAPI_ID)
+#define TRACE_CLASSSTATE_BIT     TRACE_ID2BIT(TRACE_CLASSSTATE_ID)
+#define TRACE_INTENTRY_BIT       TRACE_ID2BIT(TRACE_INTENTRY_ID)
+#define TRACE_INTDECODE_BIT      TRACE_ID2BIT(TRACE_INTDECODE_ID)
+#define TRACE_INTEXIT_BIT        TRACE_ID2BIT(TRACE_INTEXIT_ID)
+#define TRACE_OUTREQQUEUED_BIT   TRACE_ID2BIT(TRACE_OUTREQQUEUED_ID)
+#define TRACE_INREQQUEUED_BIT    TRACE_ID2BIT(TRACE_INREQQUEUED_ID)
+#define TRACE_READ_BIT           TRACE_ID2BIT(TRACE_READ_ID)
+#define TRACE_WRITE_BIT          TRACE_ID2BIT(TRACE_WRITE_ID)
+#define TRACE_COMPLETE_BIT       TRACE_ID2BIT(TRACE_COMPLETE_ID)
+#define TRACE_DEVERROR_BIT       TRACE_ID2BIT(TRACE_DEVERROR_ID)
+#define TRACE_CLSERROR_BIT       TRACE_ID2BIT(TRACE_CLSERROR_ID)
+#define TRACE_ALLBITS            ((usbtrace_idset_t)-1)
+
+/* Initialization events */
+
+#define TRACE_DEVINIT            TRACE_EVENT(TRACE_INIT_ID, 0x0001)
+#define TRACE_DEVUNINIT          TRACE_EVENT(TRACE_INIT_ID, 0x0002)
+#define TRACE_DEVREGISTER        TRACE_EVENT(TRACE_INIT_ID, 0x0003)
+#define TRACE_DEVUNREGISTER      TRACE_EVENT(TRACE_INIT_ID, 0x0004)
+
+/* API calls (see usbdev.h) */
+
+#define TRACE_EPCONFIGURE        TRACE_EVENT(TRACE_EP_ID, 0x0001)
+#define TRACE_EPDISABLE          TRACE_EVENT(TRACE_EP_ID, 0x0002)
+#define TRACE_EPALLOCREQ         TRACE_EVENT(TRACE_EP_ID, 0x0003)
+#define TRACE_EPFREEREQ          TRACE_EVENT(TRACE_EP_ID, 0x0004)
+#define TRACE_EPALLOCBUFFER      TRACE_EVENT(TRACE_EP_ID, 0x0005)
+#define TRACE_EPFREEBUFFER       TRACE_EVENT(TRACE_EP_ID, 0x0006)
+#define TRACE_EPSUBMIT           TRACE_EVENT(TRACE_EP_ID, 0x0007)
+#define TRACE_EPCANCEL           TRACE_EVENT(TRACE_EP_ID, 0x0008)
+#define TRACE_EPSTALL            TRACE_EVENT(TRACE_EP_ID, 0x0009)
+#define TRACE_EPRESUME           TRACE_EVENT(TRACE_EP_ID, 0x000a)
+
+#define TRACE_DEVALLOCEP         TRACE_EVENT(TRACE_DEV_ID, 0x0001)
+#define TRACE_DEVFREEEP          TRACE_EVENT(TRACE_DEV_ID, 0x0002)
+#define TRACE_DEVGETFRAME        TRACE_EVENT(TRACE_DEV_ID, 0x0003)
+#define TRACE_DEVWAKEUP          TRACE_EVENT(TRACE_DEV_ID, 0x0004)
+#define TRACE_DEVSELFPOWERED     TRACE_EVENT(TRACE_DEV_ID, 0x0005)
+#define TRACE_DEVPULLUP          TRACE_EVENT(TRACE_DEV_ID, 0x0006)
+
+#define TRACE_CLASSBIND          TRACE_EVENT(TRACE_CLASS_ID, 0x0001)
+#define TRACE_CLASSUNBIND        TRACE_EVENT(TRACE_CLASS_ID, 0x0002)
+#define TRACE_CLASSDISCONNECT    TRACE_EVENT(TRACE_CLASS_ID, 0x0003)
+#define TRACE_CLASSSETUP         TRACE_EVENT(TRACE_CLASS_ID, 0x0004)
+#define TRACE_CLASSSUSPEND       TRACE_EVENT(TRACE_CLASS_ID, 0x0005)
+#define TRACE_CLASSRESUME        TRACE_EVENT(TRACE_CLASS_ID, 0x0006)
+
+#define TRACE_CLASSRDCOMPLETE    TRACE_EVENT(TRACE_CLASS_ID, 0x0007)
+#define TRACE_CLASSWRCOMPLETE    TRACE_EVENT(TRACE_CLASS_ID, 0x0008)
+
+#define TRACE_CLASSAPI(id)       TRACE_EVENT(TRACE_CLASSAPI_ID, id)
+
+#define TRACE_CLASSSTATE(id)     TRACE_EVENT(TRACE_CLASSSTATE_ID, id)
+
+/* USB device controller interrupt events.  The 'id' is specific to the driver.
+ * Particular values for 'id' are unique for a given implementation of a
+ * controller driver
+ */
+
+#define TRACE_INTENTRY(id)       TRACE_EVENT(TRACE_INTENTRY_ID, id)
+#define TRACE_INTDECODE(id)      TRACE_EVENT(TRACE_INTDECODE_ID, id)
+#define TRACE_INTEXIT(id)        TRACE_EVENT(TRACE_INTEXIT_ID, id)
+
+/* Controller data transfer */
+
+#define TRACE_OUTREQQUEUED(ep)   TRACE_EVENT(TRACE_OUTREQQUEUED_ID, ep)
+#define TRACE_INREQQUEUED(ep)    TRACE_EVENT(TRACE_INREQQUEUED_ID, ep)
+#define TRACE_READ(ep)           TRACE_EVENT(TRACE_READ_ID, ep)
+#define TRACE_WRITE(ep)          TRACE_EVENT(TRACE_WRITE_ID, ep)
+#define TRACE_COMPLETE(ep)       TRACE_EVENT(TRACE_COMPLETE_ID, ep)
+
+/* USB device controller error events.  The 'id' is specific to the driver.
+ * Particular values for 'id' are unique for a given implementation of a
+ * controller driver
+ */
+
+#define TRACE_DEVERROR(id)       TRACE_EVENT(TRACE_DEVERROR_ID, id)
+
+/* USB class driver error events.  The 'id' is specific to the class driver,
+ * but common to all driver controller instances.
+ */
+
+#define TRACE_CLSERROR(id)       TRACE_EVENT(TRACE_CLSERROR_ID, id)
+
+/* USB Serial driver class events *******************************************/
+
+/* UART interface API calls */
+
+#define USBSER_TRACECLASSAPI_SETUP                   0x0001
+#define USBSER_TRACECLASSAPI_SHUTDOWN                0x0002
+#define USBSER_TRACECLASSAPI_ATTACH                  0x0003
+#define USBSER_TRACECLASSAPI_DETACH                  0x0004
+#define USBSER_TRACECLASSAPI_IOCTL                   0x0005
+#define USBSER_TRACECLASSAPI_RECEIVE                 0x0006
+#define USBSER_TRACECLASSAPI_RXINT                   0x0007
+#define USBSER_TRACECLASSAPI_RXAVAILABLE             0x0008
+#define USBSER_TRACECLASSAPI_SEND                    0x0009
+#define USBSER_TRACECLASSAPI_TXINT                   0x000a
+#define USBSER_TRACECLASSAPI_TXREADY                 0x000b
+#define USBSER_TRACECLASSAPI_TXEMPTY                 0x000c
+
+/* Values of the class error ID used by the USB serial driver */
+
+#define USBSER_TRACEERR_ALLOCCTRLREQ                 0x0001
+#define USBSER_TRACEERR_ALLOCDEVSTRUCT               0x0002
+#define USBSER_TRACEERR_ALREADYCLOSED                0x0003
+#define USBSER_TRACEERR_ALREADYCONFIGURED            0x0004
+#define USBSER_TRACEERR_CONFIGIDBAD                  0x0005
+#define USBSER_TRACEERR_CONFIGNONE                   0x0006
+#define USBSER_TRACEERR_CONSOLEREGISTER              0x0007
+#define USBSER_TRACEERR_DEVREGISTER                  0x0008
+#define USBSER_TRACEERR_EPRESPQ                      0x0009
+#define USBSER_TRACEERR_GETUNKNOWNDESC               0x000a
+#define USBSER_TRACEERR_INVALIDARG                   0x000b
+#define USBSER_TRACEERR_EP0NOTBOUND                  0x000c
+#define USBSER_TRACEERR_EPBULKINALLOCFAIL            0x000d
+#define USBSER_TRACEERR_EPBULKINCONFIGFAIL           0x000e
+#define USBSER_TRACEERR_EPBULKOUTALLOCFAIL           0x000f
+#define USBSER_TRACEERR_EPINTINALLOCFAIL             0x0010
+#define USBSER_TRACEERR_EPINTINCONFIGFAIL            0x0011
+#define USBSER_TRACEERR_EPBULKOUTCONFIGFAIL          0x0012
+#define USBSER_TRACEERR_RDALLOCREQ                   0x0013
+#define USBSER_TRACEERR_RDSHUTDOWN                   0x0014
+#define USBSER_TRACEERR_RDSUBMIT                     0x0015
+#define USBSER_TRACEERR_RDUNEXPECTED                 0x0016
+#define USBSER_TRACEERR_REQRESULT                    0x0017
+#define USBSER_TRACEERR_RXOVERRUN                    0x0018
+#define USBSER_TRACEERR_SETUPNOTCONNECTED            0x0019
+#define USBSER_TRACEERR_SUBMITFAIL                   0x001a
+#define USBSER_TRACEERR_UARTREGISTER                 0x001b
+#define USBSER_TRACEERR_UNSUPPORTEDCTRLREQ           0x001c
+#define USBSER_TRACEERR_UNSUPPORTEDRWREQ             0x001d
+#define USBSER_TRACEERR_UNSUPPORTEDSTDREQ            0x001e
+#define USBSER_TRACEERR_UNSUPPORTEDTYPE              0x001f
+#define USBSER_TRACEERR_WRALLOCREQ                   0x0020
+#define USBSER_TRACEERR_WRSHUTDOWN                   0x0021
+#define USBSER_TRACEERR_WRUNEXPECTED                 0x0022
+
+/* USB Storage driver class events ******************************************/
+
+/* State transitions */
+
+#define USBSTRG_CLASSSTATE_IDLECMDPARSE              0x0001
+#define USBSTRG_CLASSSTATE_CMDPARSECMDFINISH         0x0002
+#define USBSTRG_CLASSSTATE_CMDPARSECMDREAD6          0x0003
+#define USBSTRG_CLASSSTATE_CMDPARSECMDREAD10         0x0004
+#define USBSTRG_CLASSSTATE_CMDPARSECMDREAD12         0x0005
+#define USBSTRG_CLASSSTATE_CMDPARSECMDWRITE6         0x0006
+#define USBSTRG_CLASSSTATE_CMDPARSECMDWRITE10        0x0007
+#define USBSTRG_CLASSSTATE_CMDPARSECMDWRITE12        0x0008
+#define USBSTRG_CLASSSTATE_CMDREAD                   0x0009
+#define USBSTRG_CLASSSTATE_CMDREADCMDFINISH          0x000a
+#define USBSTRG_CLASSSTATE_CMDWRITE                  0x000b
+#define USBSTRG_CLASSSTATE_CMDWRITECMDFINISH         0x000c
+#define USBSTRG_CLASSSTATE_CMDFINISHCMDSTATUS        0x000d
+#define USBSTRG_CLASSSTATE_CMDSTATUSIDLE             0x000e
+
+/* Values of the class error ID used by the USB storage driver */
+
+#define USBSTRG_TRACEERR_ALLOCCTRLREQ                0x0001
+#define USBSTRG_TRACEERR_ALLOCDEVSTRUCT              0x0002
+#define USBSTRG_TRACEERR_ALLOCIOBUFFER               0x0003
+#define USBSTRG_TRACEERR_ALREADYCONFIGURED           0x0004
+#define USBSTRG_TRACEERR_ALREADYUNINIT               0x0005
+#define USBSTRG_TRACEERR_BADREQUEST                  0x0006
+#define USBSTRG_TRACEERR_BINDLUNINVALIDARGS2         0x0007
+#define USBSTRG_TRACEERR_BINDLUNINVALIDARGS3         0x0008
+#define USBSTRG_TRACEERR_BINDLUNINVALIDARGS4         0x0009
+#define USBSTRG_TRACEERR_BINLUNINVALIDARGS1          0x000a
+#define USBSTRG_TRACEERR_BLKDRVEOPEN                 0x000b
+#define USBSTRG_TRACEERR_CMDBADLUN                   0x000c
+#define USBSTRG_TRACEERR_CMDFINISHRESIDUE            0x000d
+#define USBSTRG_TRACEERR_CMDFINISHRQEMPTY            0x000e
+#define USBSTRG_TRACEERR_CMDFINISHSHORTPKT           0x000f
+#define USBSTRG_TRACEERR_CMDFINISHSUBMIT             0x0010
+#define USBSTRG_TRACEERR_CMDFINSHDIR                 0x0011
+#define USBSTRG_TRACEERR_CMDFINSHSUBMIT              0x0012
+#define USBSTRG_TRACEERR_CMDPARSEWRREQLISTEMPTY      0x0013
+#define USBSTRG_TRACEERR_CMDREADREADFAIL             0x0014
+#define USBSTRG_TRACEERR_CMDREADSUBMIT               0x0015
+#define USBSTRG_TRACEERR_CMDREADWRRQEMPTY            0x0016
+#define USBSTRG_TRACEERR_CMDSTATUSRDREQLISTEMPTY     0x0017
+#define USBSTRG_TRACEERR_CMDUNEVIOLATION             0x0018
+#define USBSTRG_TRACEERR_CMDWRITERDSUBMIT            0x0019
+#define USBSTRG_TRACEERR_CMDWRITERDRQEMPTY           0x001a
+#define USBSTRG_TRACEERR_CMDWRITEWRITEFAIL           0x001b
+#define USBSTRG_TRACEERR_CONFIGIDBAD                 0x001c
+#define USBSTRG_TRACEERR_CONFIGNONE                  0x001d
+#define USBSTRG_TRACEERR_DEFERREDRESPINVALIDARGS     0x001e
+#define USBSTRG_TRACEERR_DEFERREDRESPSTALLED         0x001f
+#define USBSTRG_TRACEERR_DEFERREDRESPSUBMIT          0x0020
+#define USBSTRG_TRACEERR_DEVREGISTER                 0x0021
+#define USBSTRG_TRACEERR_DISCONNECTINVALIDARGS       0x0022
+#define USBSTRG_TRACEERR_EP0NOTBOUND1                0x0023
+#define USBSTRG_TRACEERR_EP0NOTBOUND2                0x0024
+#define USBSTRG_TRACEERR_EP0NOTBOUND3                0x0025
+#define USBSTRG_TRACEERR_EPBULKINALLOCFAIL           0x0026
+#define USBSTRG_TRACEERR_EPBULKINCONFIGFAIL          0x0027
+#define USBSTRG_TRACEERR_EPBULKOUTALLOCFAIL          0x0028
+#define USBSTRG_TRACEERR_EPBULKOUTCONFIGFAIL         0x0029
+#define USBSTRG_TRACEERR_EPRESPQ                     0x002a
+#define USBSTRG_TRACEERR_EXPORTLUNSINVALIDARGS       0x002b
+#define USBSTRG_TRACEERR_GETMAXLUNNDX                0x002c
+#define USBSTRG_TRACEERR_GETUNKNOWNDESC              0x002d
+#define USBSTRG_TRACEERR_IDLERDREQLISTEMPTY          0x002e
+#define USBSTRG_TRACEERR_IDLERDSUBMIT                0x002f
+#define USBSTRG_TRACEERR_INQUIRYFLAGS                0x0030
+#define USBSTRG_TRACEERR_INTERNALCONFUSION1          0x0031
+#define USBSTRG_TRACEERR_INTERNALCONFUSION2          0x0032
+#define USBSTRG_TRACEERR_INVALIDCBWCONTENT           0x0033
+#define USBSTRG_TRACEERR_INVALIDCBWSIGNATURE         0x0034
+#define USBSTRG_TRACEERR_INVALIDSTATE                0x0035
+#define USBSTRG_TRACEERR_LUNALREADYBOUND             0x0036
+#define USBSTRG_TRACEERR_LUNNOTBOUND                 0x0037
+#define USBSTRG_TRACEERR_MODEPAGEFLAGS               0x0038
+#define USBSTRG_TRACEERR_MODESENSE10FLAGS            0x0039
+#define USBSTRG_TRACEERR_MODESENSE6FLAGS             0x003a
+#define USBSTRG_TRACEERR_MSRESETNDX                  0x003b
+#define USBSTRG_TRACEERR_NOGEOMETRY                  0x003c
+#define USBSTRG_TRACEERR_NOTCONFIGURED               0x003d
+#define USBSTRG_TRACEERR_NOTREMOVABLE                0x003e
+#define USBSTRG_TRACEERR_PCSAVED                     0x003f
+#define USBSTRG_TRACEERR_PHASEERROR1                 0x0040
+#define USBSTRG_TRACEERR_PHASEERROR2                 0x0041
+#define USBSTRG_TRACEERR_PHASEERROR3                 0x0042
+#define USBSTRG_TRACEERR_PREVENTMEDIUMREMOVALPREVENT 0x0043
+#define USBSTRG_TRACEERR_RDALLOCREQ                  0x0044
+#define USBSTRG_TRACEERR_RDCOMPLETEINVALIDARGS       0x0045
+#define USBSTRG_TRACEERR_RDCOMPLETERDSUBMIT          0x0046
+#define USBSTRG_TRACEERR_RDSHUTDOWN                  0x0047
+#define USBSTRG_TRACEERR_RDSUBMIT                    0x0048
+#define USBSTRG_TRACEERR_RDUNEXPECTED                0x0049
+#define USBSTRG_TRACEERR_READ10FLAGS                 0x004a
+#define USBSTRG_TRACEERR_READ10LBARANGE              0x004b
+#define USBSTRG_TRACEERR_READ10MEDIANOTPRESENT       0x004c
+#define USBSTRG_TRACEERR_READ12FLAGS                 0x004d
+#define USBSTRG_TRACEERR_READ12LBARANGE              0x004e
+#define USBSTRG_TRACEERR_READ12MEDIANOTPRESENT       0x004f
+#define USBSTRG_TRACEERR_READ6LBARANGE               0x0050
+#define USBSTRG_TRACEERR_READ6MEDIANOTPRESENT        0x0051
+#define USBSTRG_TRACEERR_READCAPACITYFLAGS           0x0052
+#define USBSTRG_TRACEERR_REALLOCIOBUFFER             0x0053
+#define USBSTRG_TRACEERR_REQRESULT                   0x0054
+#define USBSTRG_TRACEERR_SCSICMDCONTROL              0x0055
+#define USBSTRG_TRACEERR_SETCONFIGINVALIDARGS        0x0056
+#define USBSTRG_TRACEERR_SETUPINVALIDARGS            0x0057
+#define USBSTRG_TRACEERR_SNDCSWFAIL                  0x0058
+#define USBSTRG_TRACEERR_SNDPHERROR                  0x0059
+#define USBSTRG_TRACEERR_SNDSTATUSSUBMIT             0x005a
+#define USBSTRG_TRACEERR_SYNCCACHEMEDIANOTPRESENT    0x005b
+#define USBSTRG_TRACEERR_THREADCREATE                0x005c
+#define USBSTRG_TRACEERR_TOOMANYLUNS                 0x005d
+#define USBSTRG_TRACEERR_UNBINDINVALIDARGS           0x005e
+#define USBSTRG_TRACEERR_UNBINDLUNINVALIDARGS1       0x005f
+#define USBSTRG_TRACEERR_UNBINDLUNINVALIDARGS2       0x0060
+#define USBSTRG_TRACEERR_UNINITIALIZEINVALIDARGS     0x0061
+#define USBSTRG_TRACEERR_UNSUPPORTEDSTDREQ           0x0062
+#define USBSTRG_TRACEERR_VERIFY10FLAGS               0x0063
+#define USBSTRG_TRACEERR_VERIFY10LBARANGE            0x0064
+#define USBSTRG_TRACEERR_VERIFY10MEDIANOTPRESENT     0x0065
+#define USBSTRG_TRACEERR_VERIFY10NOBLOCKS            0x0066
+#define USBSTRG_TRACEERR_VERIFY10READFAIL            0x0067
+#define USBSTRG_TRACEERR_WRALLOCREQ                  0x0068
+#define USBSTRG_TRACEERR_SNDPHERROR                  0x0069
+#define USBSTRG_TRACEERR_WRCOMPLETEINVALIDARGS       0x006a
+#define USBSTRG_TRACEERR_WRITE10FLAGS                0x006b
+#define USBSTRG_TRACEERR_WRITE10LBARANGE             0x006c
+#define USBSTRG_TRACEERR_WRITE10MEDIANOTPRESENT      0x006d
+#define USBSTRG_TRACEERR_WRITE10READONLY             0x006e
+#define USBSTRG_TRACEERR_WRITE12FLAGS                0x006f
+#define USBSTRG_TRACEERR_WRITE12LBARANGE             0x0070
+#define USBSTRG_TRACEERR_WRITE12MEDIANOTPRESENT      0x0071
+#define USBSTRG_TRACEERR_WRITE12READONLY             0x0072
+#define USBSTRG_TRACEERR_WRITE6LBARANGE              0x0073
+#define USBSTRG_TRACEERR_WRITE6MEDIANOTPRESENT       0x0074
+#define USBSTRG_TRACEERR_WRITE6READONLY              0x0075
+#define USBSTRG_TRACEERR_WRSHUTDOWN                  0x0076
+#define USBSTRG_TRACEERR_WRUNEXPECTED                0x0077
+
+/****************************************************************************
+ * Public Types
+ ****************************************************************************/
+
+/* The reported trace information */
+
+struct usbtrace_s
+{
+  uint16_t event;
+  uint16_t value;
+};
+
+/* Enumeration callback function signature */
+
+typedef int (*trace_callback_t)(struct usbtrace_s *trace, void *arg);
+
+/* Bit mask input type for usbtrace_enable().  If  TRACE_NIDS grows beyond
+ * 16, then this will have to be changed to uint32_t
+ */
+
+typedef uint16_t usbtrace_idset_t;
+
+/* Print routine to use for usbdev_trprint() output */
+
+typedef int (*trprintf_t)(const char *fmt, ...);
+
+/****************************************************************************
+ * Public Function Prototypes
+ ****************************************************************************/
+
+#undef EXTERN
+#if defined(__cplusplus)
+# define EXTERN extern "C"
+extern "C" {
+#else
+# define EXTERN extern
+#endif
+
+/*******************************************************************************
+ * Name: usbtrace_enable
+ *
+ * Description:
+ *  Enable/disable tracing per trace ID.  The initial state is all IDs enabled.
+ *
+ * Input Parameters:
+ *  idset - The bitset of IDs to be masked.  TRACE_ALLIDS enables all IDS; zero
+ *  masks all IDs.
+ *
+ * Returned Value:
+ *  The previous idset value.
+ *
+ * Assumptions:
+ * - May be called from an interrupt handler
+ *
+ *******************************************************************************/
+
+#if defined(CONFIG_USBDEV_TRACE) || (defined(CONFIG_DEBUG) && defined(CONFIG_DEBUG_USB))
+EXTERN usbtrace_idset_t usbtrace_enable(usbtrace_idset_t idset);
+#else
+#  define usbtrace_enable(idset)
+#endif
+
+/*******************************************************************************
+ * Name: usbtrace
+ *
+ * Description:
+ *  Record a USB event (tracing must be enabled)
+ *
+ * Assumptions:
+ *   May be called from an interrupt handler
+ *
+ *******************************************************************************/
+
+#if defined(CONFIG_USBDEV_TRACE) || (defined(CONFIG_DEBUG) && defined(CONFIG_DEBUG_USB))
+EXTERN void usbtrace(uint16_t event, uint16_t value);
+#else
+#  define usbtrace(event, value)
+#endif
+
+/*******************************************************************************
+ * Name: usbtrace_enumerate
+ *
+ * Description:
+ *   Enumerate all buffer trace data (will temporarily disable tracing)
+ *
+ * Assumptions:
+ *   NEVER called from an interrupt handler
+ *
+ *******************************************************************************/
+
+#ifdef CONFIG_USBDEV_TRACE
+EXTERN int usbtrace_enumerate(trace_callback_t callback, void *arg);
+#else
+#  define usbtrace_enumerate(event)
+#endif
+
+/*******************************************************************************
+ * Name: usbtrace_trprint
+ *
+ * Description:
+ *   Print the trace record using the supplied printing function
+ *
+ *******************************************************************************/
+
+EXTERN void usbtrace_trprintf(trprintf_t trprintf, uint16_t event, uint16_t value);
+
+#undef EXTERN
+#if defined(__cplusplus)
+}
+#endif
+
+#endif /* __INCLUDE_NUTTX_USB_USBHOST_TRACE_H */
-- 
GitLab