summaryrefslogtreecommitdiff
path: root/usblib/host/usbhostpriv.h
diff options
context:
space:
mode:
authorYuval Adam <yuv.adm@gmail.com>2012-10-29 23:08:53 +0200
committerYuval Adam <yuv.adm@gmail.com>2012-10-29 23:08:53 +0200
commitc241dbd7e78c50327781a35d88d9f2db7ff2b271 (patch)
tree2c84fe512c0cd3ee328244bca2f8ed4f9622074d /usblib/host/usbhostpriv.h
parent4ba8614c006f9828f0796c140bc3e13c9e67938c (diff)
Added usblib
Diffstat (limited to 'usblib/host/usbhostpriv.h')
-rw-r--r--usblib/host/usbhostpriv.h257
1 files changed, 257 insertions, 0 deletions
diff --git a/usblib/host/usbhostpriv.h b/usblib/host/usbhostpriv.h
new file mode 100644
index 0000000..44c0a73
--- /dev/null
+++ b/usblib/host/usbhostpriv.h
@@ -0,0 +1,257 @@
+//*****************************************************************************
+//
+// usbhostpriv.h - Internal header file for USB host functions.
+//
+// Copyright (c) 2011-2012 Texas Instruments Incorporated. All rights reserved.
+// Software License Agreement
+//
+// Texas Instruments (TI) is supplying this software for use solely and
+// exclusively on TI's microcontroller products. The software is owned by
+// TI and/or its suppliers, and is protected under applicable copyright
+// laws. You may not combine this software with "viral" open-source
+// software in order to form a larger program.
+//
+// THIS SOFTWARE IS PROVIDED "AS IS" AND WITH ALL FAULTS.
+// NO WARRANTIES, WHETHER EXPRESS, IMPLIED OR STATUTORY, INCLUDING, BUT
+// NOT LIMITED TO, IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+// A PARTICULAR PURPOSE APPLY TO THIS SOFTWARE. TI SHALL NOT, UNDER ANY
+// CIRCUMSTANCES, BE LIABLE FOR SPECIAL, INCIDENTAL, OR CONSEQUENTIAL
+// DAMAGES, FOR ANY REASON WHATSOEVER.
+//
+// This is part of revision 9453 of the Stellaris USB Library.
+//
+//*****************************************************************************
+
+#ifndef __USBHOSTPRIV_H__
+#define __USBHOSTPRIV_H__
+
+//*****************************************************************************
+//
+// If building with a C++ compiler, make all of the definitions in this header
+// have a C binding.
+//
+//*****************************************************************************
+#ifdef __cplusplus
+extern "C"
+{
+#endif
+
+//*****************************************************************************
+//
+// The states a hub port can be in during device connection.
+//
+//*****************************************************************************
+typedef enum
+{
+ //
+ // The port has no device connected.
+ //
+ PORT_IDLE,
+
+ //
+ // The port has a device present and is waiting for the enumeration
+ // sequence to begin.
+ //
+ PORT_CONNECTED,
+
+ //
+ // A device connection notification has been received and we have initiated
+ // a reset to the port. We are waiting for the reset to complete.
+ //
+ PORT_RESET_ACTIVE,
+
+ //
+ // The Port reset has completed but now the hub is waiting the required
+ // 10ms before accessing the device.
+ //
+ PORT_RESET_WAIT,
+
+ //
+ // A device is connected and the port has been reset. Control has been
+ // passed to the main host handling portion of USBLib to enumerate the
+ // device.
+ //
+ PORT_ACTIVE,
+
+ //
+ // A device has completed enumeration.
+ //
+ PORT_ENUMERATED,
+
+ //
+ // A device is attached to the port but enumeration failed.
+ //
+ PORT_ERROR
+}
+tHubPortState;
+
+//*****************************************************************************
+//
+// The list of valid event flags in the g_sUSBHCD.ulEventEnables member
+// variable.
+//
+//*****************************************************************************
+#define USBHCD_EVFLAG_SOF 0x00000001
+#define USBHCD_EVFLAG_CONNECT 0x00000002
+#define USBHCD_EVFLAG_UNKCNCT 0x00000004
+#define USBHCD_EVFLAG_DISCNCT 0x00000008
+#define USBHCD_EVFLAG_PWRFAULT 0x00000010
+#define USBHCD_EVFLAG_PWRDIS 0x00000020
+#define USBHCD_EVFLAG_PWREN 0x00000040
+
+//*****************************************************************************
+//
+// This structure holds all data specific to a single hub port.
+//
+//*****************************************************************************
+typedef struct
+{
+ //
+ // A pointer to storage for the configuration descriptor of a device
+ // attached to this port.
+ //
+ unsigned char *pucConfigDesc;
+
+ //
+ // The size of the storage pointed to by pucConfigDesc.
+ //
+ unsigned long ulConfigSize;
+
+ //
+ // The handle used by the HCD layer to identify this device.
+ //
+ unsigned long ulDevHandle;
+
+ //
+ // The current state of the port.
+ //
+ volatile tHubPortState sState;
+
+ //
+ // General counter used in various states.
+ //
+ volatile unsigned long ulCount;
+
+ //
+ // A flag used to indicate that the downstream device is a low speed
+ // device.
+ //
+ tBoolean bLowSpeed;
+
+ //
+ // This flag is set if the hub reports that a change is pending on this
+ // port.
+ //
+ volatile tBoolean bChanged;
+}
+tHubPort;
+
+//*****************************************************************************
+//
+// This is the structure that holds all of the data for a given instance of
+// a Hub device.
+//
+//*****************************************************************************
+typedef struct
+{
+ //
+ // Save the device instance.
+ //
+ tUSBHostDevice *pDevice;
+
+ //
+ // Used to save the callback function pointer.
+ //
+ tUSBCallback pfnCallback;
+
+ //
+ // Callback data provided by caller.
+ //
+ unsigned long ulCBData;
+
+ //
+ // Interrupt IN pipe.
+ //
+ unsigned long ulIntInPipe;
+
+ //
+ // Hub characteristics as reported in the class-specific hub descriptor.
+ //
+ unsigned short usHubCharacteristics;
+
+ //
+ // The number of downstream-facing ports the hub supports.
+ //
+ unsigned char ucNumPorts;
+
+ //
+ // The number of ports on the hub that we can actually talk to. This will
+ // be the smaller of the number of ports on the hub and MAX_USB_DEVICES.
+ //
+ unsigned char ucNumPortsInUse;
+
+ //
+ // The size of a status change packet sent by the hub. This is determined
+ // from the number of ports supported by the hub.
+ //
+ unsigned char ucReportSize;
+
+ //
+ // Flag indicating whether the hub is connected.
+ //
+ tBoolean bHubActive;
+
+ //
+ // Flag indicating that a device is currently in process of being
+ // enumerated.
+ //
+ volatile tBoolean bEnumerationBusy;
+
+ //
+ // This is valid if bEnumerationBusy is set and indicates the port
+ // that is in the process of enumeration.
+ //
+ unsigned char ucEnumIdx;
+
+ //
+ // The state of each of the ports we support on the hub.
+ //
+ tHubPort psPorts[MAX_USB_DEVICES];
+}
+tHubInstance;
+
+//*****************************************************************************
+//
+// Functions within the host controller that are called by the hub class driver
+//
+//*****************************************************************************
+extern unsigned long USBHCDHubDeviceConnected(unsigned long ulIndex,
+ unsigned char ucHub,
+ unsigned char ucPort,
+ tBoolean bLowSpeed,
+ unsigned char *pucConfigPool,
+ unsigned long ulConfigSize);
+extern void USBHCDHubDeviceDisconnected(unsigned long ulIndex,
+ unsigned long ulDevIndex);
+
+//*****************************************************************************
+//
+// Functions in the hub class driver that are called by the host controller.
+//
+//*****************************************************************************
+extern void USBHHubMain(void);
+extern void USBHHubInit(void);
+extern void USBHHubEnumerationComplete(unsigned char ucHub,
+ unsigned char ucPort);
+extern void USBHHubEnumerationError(unsigned char ucHub, unsigned char ucPort);
+
+//*****************************************************************************
+//
+// Mark the end of the C bindings section for C++ compilers.
+//
+//*****************************************************************************
+#ifdef __cplusplus
+}
+#endif
+
+#endif // __USBHOSTPRIV_H__