diff --git a/Upstream/Middlewares/ST/STM32_USB_Device_Library/Class/HID/Src/usbd_hid.c b/Upstream/Middlewares/ST/STM32_USB_Device_Library/Class/HID/Src/usbd_hid.c index 968d258..5a35812 100644 --- a/Upstream/Middlewares/ST/STM32_USB_Device_Library/Class/HID/Src/usbd_hid.c +++ b/Upstream/Middlewares/ST/STM32_USB_Device_Library/Class/HID/Src/usbd_hid.c @@ -298,7 +298,6 @@ static uint8_t USBD_HID_Init (USBD_HandleTypeDef *pdev, static uint8_t USBD_HID_DeInit (USBD_HandleTypeDef *pdev, uint8_t cfgidx) { - ActiveReportDescriptor = NULL; Upstream_HID_DeInit(); /* Close HID EPs */ diff --git a/Upstream/Src/upstream_hid.c b/Upstream/Src/upstream_hid.c index 0535233..dd7d1d5 100644 --- a/Upstream/Src/upstream_hid.c +++ b/Upstream/Src/upstream_hid.c @@ -55,6 +55,13 @@ HAL_StatusTypeDef Upstream_HID_GetNextReport(UpstreamHidSendReportCallback callb return HAL_ERROR; } + //Just return if we already have an outstanding request + if (ReportCallback != NULL) + { + return HAL_OK; + } + ReportCallback = callback; + //Release packet used for last transaction (if any) if (UpstreamHidPacket != NULL) { @@ -62,8 +69,6 @@ HAL_StatusTypeDef Upstream_HID_GetNextReport(UpstreamHidSendReportCallback callb UpstreamHidPacket = NULL; } - ReportCallback = callback; - freePacket = Upstream_GetFreePacketImmediately(); if (freePacket == NULL) {