2 #if (USE_STM32_USB_HOST_MODE || USE_STM32_USB_USE_DEVICE_MODE || USE_STM32_USB_OTG_MODE)
35 #include "config/usb_conf.h"
36 #if defined(USE_HOST_MODE)
37 #include "stm32/usb/usb_hcd.h"
38 #include "stm32/usb/usbh_def.h"
42 #include "config/usbh_conf.h"
62 #define MSC_CLASS 0x08
63 #define HID_CLASS 0x03
64 #define MSC_PROTOCOL 0x50
65 #define CBI_PROTOCOL 0x01
68 #define USBH_MAX_ERROR_COUNT 2
69 #define USBH_DEVICE_ADDRESS_DEFAULT 0
70 #define USBH_DEVICE_ADDRESS 1
87 USBH_UNRECOVERED_ERROR,
88 USBH_ERROR_SPEED_UNKNOWN,
96 HOST_DEV_DISCONNECTED,
97 HOST_DETECT_DEVICE_SPEED,
110 ENUM_GET_FULL_DEV_DESC,
113 ENUM_GET_FULL_CFG_DESC,
114 ENUM_GET_MFC_STRING_DESC,
115 ENUM_GET_PRODUCT_STRING_DESC,
116 ENUM_GET_SERIALNUM_STRING_DESC,
117 ENUM_SET_CONFIGURATION,
135 CTRL_STATUS_OUT_WAIT,
143 USBH_USR_NO_RESP = 0,
144 USBH_USR_RESP_OK = 1,
167 USB_Setup_TypeDef
setup;
174 typedef struct _DeviceProp
179 USBH_DevDesc_TypeDef Dev_Desc;
180 USBH_CfgDesc_TypeDef Cfg_Desc;
181 USBH_InterfaceDesc_TypeDef Itf_Desc[USBH_MAX_NUM_INTERFACES];
182 USBH_EpDesc_TypeDef Ep_Desc[USBH_MAX_NUM_INTERFACES][USBH_MAX_NUM_ENDPOINTS];
183 USBH_HIDDesc_TypeDef HID_Desc;
185 }USBH_Device_TypeDef;
187 typedef struct _USBH_Class_cb
190 (USB_OTG_CORE_HANDLE *pdev ,
void *phost);
192 (USB_OTG_CORE_HANDLE *pdev ,
void *phost);
193 USBH_Status (*Requests)\
194 (USB_OTG_CORE_HANDLE *pdev ,
void *phost);
195 USBH_Status (*Machine)\
196 (USB_OTG_CORE_HANDLE *pdev ,
void *phost);
198 } USBH_Class_cb_TypeDef;
201 typedef struct _USBH_USR_PROP
204 void (*DeInit)(void);
205 void (*DeviceAttached)(void);
206 void (*ResetDevice)(void);
207 void (*DeviceDisconnected)(void);
208 void (*OverCurrentDetected)(void);
209 void (*DeviceSpeedDetected)(uint8_t DeviceSpeed);
210 void (*DeviceDescAvailable)(
void *);
211 void (*DeviceAddressAssigned)(void);
212 void (*ConfigurationDescAvailable)(USBH_CfgDesc_TypeDef *,
213 USBH_InterfaceDesc_TypeDef *,
214 USBH_EpDesc_TypeDef *);
216 void (*ManufacturerString)(
void *);
217 void (*ProductString)(
void *);
218 void (*SerialNumString)(
void *);
219 void (*EnumerationDone)(void);
220 USBH_USR_Status (*UserInput)(void);
221 int (*UserApplication) (void);
222 void (*DeviceNotSupported)(void);
223 void (*UnrecoveredError)(void);
228 typedef struct _Host_TypeDef
231 HOST_State gStateBkp;
232 ENUM_State EnumState;
233 CMD_State RequestState;
234 USBH_Ctrl_TypeDef Control;
236 USBH_Device_TypeDef device_prop;
238 USBH_Class_cb_TypeDef *class_cb;
239 USBH_Usr_cb_TypeDef *usr_cb;
242 } USBH_HOST, *pUSBH_HOST;
270 extern USBH_HOST USB_Host;
272 void USBH_Init(USB_OTG_CORE_HANDLE *pdev,
273 USB_OTG_CORE_ID_TypeDef coreID,
275 USBH_Class_cb_TypeDef *class_cb,
276 USBH_Usr_cb_TypeDef *usr_cb);
278 USBH_Status USBH_DeInit(USB_OTG_CORE_HANDLE *pdev,
280 void USBH_Process(USB_OTG_CORE_HANDLE *pdev ,
282 void USBH_ErrorHandle(USBH_HOST *phost,
283 USBH_Status errType);
static struct audio_setup_t setup
libheivs configuration file