From 828db8e415a6342fcf789337104dd0c69d8647e4 Mon Sep 17 00:00:00 2001 From: Robert Fisk Date: Sun, 5 Jan 2020 16:45:26 +1300 Subject: [PATCH] Wait for phantom Connect interrupts to finish before completing Disconnect processing Conflicts: Downstream/Middlewares/ST/STM32_USB_Host_Library/Core/Src/usbh_core.c --- .../STM32_USB_Host_Library/Core/Src/usbh_core.c | 16 ++++++++++------ 1 file changed, 10 insertions(+), 6 deletions(-) diff --git a/Downstream/Middlewares/ST/STM32_USB_Host_Library/Core/Src/usbh_core.c b/Downstream/Middlewares/ST/STM32_USB_Host_Library/Core/Src/usbh_core.c index 8098f3e..80d65d7 100644 --- a/Downstream/Middlewares/ST/STM32_USB_Host_Library/Core/Src/usbh_core.c +++ b/Downstream/Middlewares/ST/STM32_USB_Host_Library/Core/Src/usbh_core.c @@ -53,6 +53,10 @@ #define USBH_ADDRESS_DEFAULT 0 #define USBH_ADDRESS_ASSIGNED 1 #define USBH_MPS_DEFAULT 0x40 + +#define USBH_ATTACH_DELAY_MS 200 +#define USBH_DETACH_DELAY_MS 500 + /** * @} */ @@ -410,9 +414,9 @@ USBH_StatusTypeDef USBH_Process(USBH_HandleTypeDef *phost) if (phost->device.is_connected) { - /* Wait for 200 ms after connection */ + /* Wait for 200 ms after connection */ phost->gState = HOST_DEV_WAIT_FOR_ATTACHMENT; - USBH_Delay(200); + USBH_Delay(USBH_ATTACH_DELAY_MS); USBH_LL_ResetPort(phost); #if (USBH_USE_OS == 1) osMessagePut ( phost->os_event, USBH_PORT_EVENT, 0); @@ -586,9 +590,9 @@ USBH_StatusTypeDef USBH_Process(USBH_HandleTypeDef *phost) phost->pActiveClass->BgndProcess(phost); } break; - - case HOST_DEV_DISCONNECTED : - + + case HOST_DEV_DISCONNECTED: + USBH_Delay(USBH_DETACH_DELAY_MS); DeInitStateMachine(phost); /* Re-Initilaize Host for new Enumeration */ @@ -596,7 +600,7 @@ USBH_StatusTypeDef USBH_Process(USBH_HandleTypeDef *phost) { phost->pActiveClass->DeInit(phost); phost->pActiveClass = NULL; - } + } break; case HOST_ABORT_STATE: