usbdevice.h
Go to the documentation of this file.
1 //*****************************************************************************
2 //
3 // usbdevice.h - types and definitions used during USB enumeration.
4 //
5 // Copyright (c) 2008-2017 Texas Instruments Incorporated. All rights reserved.
6 // Software License Agreement
7 //
8 // Texas Instruments (TI) is supplying this software for use solely and
9 // exclusively on TI's microcontroller products. The software is owned by
10 // TI and/or its suppliers, and is protected under applicable copyright
11 // laws. You may not combine this software with "viral" open-source
12 // software in order to form a larger program.
13 //
14 // THIS SOFTWARE IS PROVIDED "AS IS" AND WITH ALL FAULTS.
15 // NO WARRANTIES, WHETHER EXPRESS, IMPLIED OR STATUTORY, INCLUDING, BUT
16 // NOT LIMITED TO, IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
17 // A PARTICULAR PURPOSE APPLY TO THIS SOFTWARE. TI SHALL NOT, UNDER ANY
18 // CIRCUMSTANCES, BE LIABLE FOR SPECIAL, INCIDENTAL, OR CONSEQUENTIAL
19 // DAMAGES, FOR ANY REASON WHATSOEVER.
20 //
21 //*****************************************************************************
22 
23 #ifndef __USBDEVICE_H__
24 #define __USBDEVICE_H__
25 
26 //*****************************************************************************
27 //
28 // If building with a C++ compiler, make all of the definitions in this header
29 // have a C binding.
30 //
31 //*****************************************************************************
32 #ifdef __cplusplus
33 extern "C"
34 {
35 #endif
36 
37 //*****************************************************************************
38 //
41 //
42 //*****************************************************************************
43 
44 //*****************************************************************************
45 //
51 //
52 //*****************************************************************************
53 #define USB_MAX_INTERFACES_PER_DEVICE 8
54 
55 #include "usbdevicepriv.h"
56 
57 //*****************************************************************************
58 //
64 //
65 //*****************************************************************************
67 {
68  //
71  //
73 
74  //
76  //
77  const uint8_t *pui8DeviceDescriptor;
78 
79  //
85  //
87 
88  //
115  //
116  const uint8_t * const *ppui8StringDescriptors;
117 
118  //
121  //
123 };
124 
125 //*****************************************************************************
126 //
133 //
134 //*****************************************************************************
135 typedef struct
136 {
137  //
139  //
141 
142  //
144  //
145  void *pvInstance;
146 
147  //
149  //
151 }
153 
154 //*****************************************************************************
155 //
156 // Close the Doxygen group.
158 //
159 //*****************************************************************************
160 
161 //*****************************************************************************
162 //
163 // Public APIs offered by the USB library device control driver.
164 //
165 //*****************************************************************************
166 extern void USBDCDInit(uint32_t ui32Index, tDeviceInfo *psDevice,
167  void *pvDCDCBData);
168 extern void USBDCDTerm(uint32_t ui32Index);
169 extern void USBDCDStallEP0(uint32_t ui32Index);
170 extern void USBDCDRequestDataEP0(uint32_t ui32Index, uint8_t *pui8Data,
171  uint32_t ui32Size);
172 extern void USBDCDSendDataEP0(uint32_t ui32Index, uint8_t *pui8Data,
173  uint32_t ui32Size);
174 extern void USBDCDSetDefaultConfiguration(uint32_t ui32Index,
175  uint32_t ui32DefaultConfig);
176 extern uint32_t USBDCDConfigDescGetSize(const tConfigHeader *psConfig);
177 extern uint32_t USBDCDConfigDescGetNum(const tConfigHeader *psConfig,
178  uint32_t ui32Type);
179 extern tDescriptorHeader *USBDCDConfigDescGet(const tConfigHeader *psConfig,
180  uint32_t ui32Type,
181  uint32_t ui32Index,
182  uint32_t *pui32Section);
183 extern uint32_t
185  uint8_t ui8InterfaceNumber);
186 extern tInterfaceDescriptor *
187  USBDCDConfigGetInterface(const tConfigHeader *psConfig,
188  uint32_t ui32Index, uint32_t ui32AltCfg,
189  uint32_t *pui32Section);
190 extern tEndpointDescriptor *
192  uint32_t ui32InterfaceNumber,
193  uint32_t ui32AltCfg,
194  uint32_t ui32Index);
195 extern bool USBDCDRemoteWakeupRequest(uint32_t ui32Index);
196 extern bool USBDCDFeatureSet(uint32_t ui32Index, uint32_t ui32Feature,
197  void *pvFeature);
198 extern bool USBDCDFeatureGet(uint32_t ui32Index, uint32_t ui32Feature,
199  void *pvFeature);
200 extern bool USBDCDRemoteWakeLPM(uint32_t ui32Index);
201 
202 //*****************************************************************************
203 //
204 // Device mode interrupt handler for controller index 0.
205 //
206 //*****************************************************************************
207 extern void USB0_IRQDeviceHandler(void);
208 
209 //*****************************************************************************
210 //
211 // The following APIs are deprecated.
212 //
213 //*****************************************************************************
214 #ifndef DEPRECATED
215 
216 //
217 // Use USBDCDFeatureSet() or USBHCDFeatureSet() with \b USBLIB_FEATURE_POWER
218 // configuration option.
219 //
220 extern void USBDCDPowerStatusSet(uint32_t ui32Index, uint8_t ui8Power);
221 #endif
222 
223 //*****************************************************************************
224 //
225 // Mark the end of the C bindings section for C++ compilers.
226 //
227 //*****************************************************************************
228 #ifdef __cplusplus
229 }
230 #endif
231 
232 #endif // __USBENUM_H__
Definition: usblib.h:1077
void USBDCDInit(uint32_t ui32Index, tDeviceInfo *psDevice, void *pvDCDCBData)
Definition: usbdenum.c:301
void USBDCDPowerStatusSet(uint32_t ui32Index, uint8_t ui8Power)
Definition: usbdenum.c:739
void USBDCDSendDataEP0(uint32_t ui32Index, uint8_t *pui8Data, uint32_t ui32Size)
Definition: usbdenum.c:623
void USBDCDStallEP0(uint32_t ui32Index)
Definition: usbdenum.c:704
bool USBDCDRemoteWakeLPM(uint32_t ui32Index)
Definition: usbdenum.c:925
uint32_t ui32DeviceWorkspace
A per-device workspace used by the composite device.
Definition: usbdevice.h:150
void USBDCDSetDefaultConfiguration(uint32_t ui32Index, uint32_t ui32DefaultConfig)
Definition: usbdenum.c:680
const tConfigHeader *const * ppsConfigDescriptors
Definition: usbdevice.h:86
const tCustomHandlers * psCallbacks
Definition: usbdevice.h:72
uint32_t USBDCDConfigGetNumAlternateInterfaces(const tConfigHeader *psConfig, uint8_t ui8InterfaceNumber)
Definition: usbdcdesc.c:407
uint32_t USBDCDConfigDescGetSize(const tConfigHeader *psConfig)
Definition: usbdcdesc.c:217
Definition: usbdevice.h:135
const tDeviceInfo * psDevInfo
This is the top level device information structure.
Definition: usbdevice.h:140
const uint8_t *const * ppui8StringDescriptors
Definition: usbdevice.h:116
uint32_t USBDCDConfigDescGetNum(const tConfigHeader *psConfig, uint32_t ui32Type)
Definition: usbdcdesc.c:264
uint32_t ui32NumStringDescriptors
Definition: usbdevice.h:122
void USB0_IRQDeviceHandler(void)
Definition: usbdhandler.c:59
void USBDCDTerm(uint32_t ui32Index)
Definition: usbdenum.c:510
const uint8_t * pui8DeviceDescriptor
A pointer to the device descriptor for this device.
Definition: usbdevice.h:77
Definition: usbdevice.h:66
tInterfaceDescriptor * USBDCDConfigGetInterface(const tConfigHeader *psConfig, uint32_t ui32Index, uint32_t ui32AltCfg, uint32_t *pui32Section)
Definition: usbdcdesc.c:492
Definition: usblib.h:966
tEndpointDescriptor * USBDCDConfigGetInterfaceEndpoint(const tConfigHeader *psConfig, uint32_t ui32InterfaceNumber, uint32_t ui32AltCfg, uint32_t ui32Index)
Definition: usbdcdesc.c:556
bool USBDCDRemoteWakeupRequest(uint32_t ui32Index)
Definition: usbdenum.c:956
tDescriptorHeader * USBDCDConfigDescGet(const tConfigHeader *psConfig, uint32_t ui32Type, uint32_t ui32Index, uint32_t *pui32Section)
Definition: usbdcdesc.c:320
bool USBDCDFeatureGet(uint32_t ui32Index, uint32_t ui32Feature, void *pvFeature)
Definition: usbdenum.c:881
void USBDCDRequestDataEP0(uint32_t ui32Index, uint8_t *pui8Data, uint32_t ui32Size)
Definition: usbdenum.c:576
void * pvInstance
This is the instance data for the device structure.
Definition: usbdevice.h:145
bool USBDCDFeatureSet(uint32_t ui32Index, uint32_t ui32Feature, void *pvFeature)
Definition: usbdenum.c:781
Copyright 2017, Texas Instruments Incorporated