From fa98307a3b82899ee157114a5742db09f768244d Mon Sep 17 00:00:00 2001 From: Robert Fisk Date: Sun, 8 May 2016 15:27:03 +1200 Subject: [PATCH] HID class: handle host restart gracefully --- .../ST/STM32_USB_Device_Library/Class/HID/Src/usbd_hid.c | 1 - Upstream/Src/upstream_hid.c | 9 +++++++-- 2 files changed, 7 insertions(+), 3 deletions(-) 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) {