From c63f4f7829e52101ec455ae9007ff32c5adadee7 Mon Sep 17 00:00:00 2001 From: Robert Fisk Date: Sat, 22 Oct 2016 15:54:39 +1300 Subject: [PATCH] Don't freakout when wakeup-from-sleep fails during keyboard report out. --- .../ST/STM32_USB_Device_Library/Core/Src/usbd_core.c | 4 ++-- Upstream/Src/upstream_hid.c | 6 ------ Upstream/Src/upstream_statemachine.c | 6 +++--- 3 files changed, 5 insertions(+), 11 deletions(-) diff --git a/Upstream/Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_core.c b/Upstream/Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_core.c index c524509..3a6e677 100755 --- a/Upstream/Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_core.c +++ b/Upstream/Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_core.c @@ -139,9 +139,9 @@ USBD_ClassTypeDef* USBD_DeInit(USBD_HandleTypeDef *pdev) pdev->pClass->DeInit(pdev, pdev->dev_config); /* Stop the low level driver */ - USBD_LL_Stop(pdev); +// USBD_LL_Stop(pdev); - /* Initialize low level driver */ + /* Deinitialize low level driver */ USBD_LL_DeInit(pdev); return pdev->pClass; diff --git a/Upstream/Src/upstream_hid.c b/Upstream/Src/upstream_hid.c index e8b1283..5c109bf 100644 --- a/Upstream/Src/upstream_hid.c +++ b/Upstream/Src/upstream_hid.c @@ -294,12 +294,6 @@ static void Upstream_HID_SendControlReportCallback(UpstreamPacketTypeDef* receiv return; } - if (KeyboardOutDataState != KEYBOARD_OUT_STATE_BUSY) - { - UPSTREAM_STATEMACHINE_FREAKOUT; - return; - } - if (receivedPacket == NULL) { return; //Just give up... diff --git a/Upstream/Src/upstream_statemachine.c b/Upstream/Src/upstream_statemachine.c index 5f0f180..8261d82 100644 --- a/Upstream/Src/upstream_statemachine.c +++ b/Upstream/Src/upstream_statemachine.c @@ -279,13 +279,13 @@ void Upstream_StateMachine_Wakeup(void) return; } + //This is how I'd wakeup the host, IF IT ACTUALLY WORKED! + //USBD_LL_WakeupHost(&hUsbDeviceFS); + //This is really ugly! But wakeup seems to be broken on the STM32, so we do it the hard way. activeClass = USBD_DeInit(&hUsbDeviceFS); USB_Device_Init(); USBD_RegisterClass(&hUsbDeviceFS, activeClass); USBD_Start(&hUsbDeviceFS); - -// This is how I'd wakeup the host, IF IT ACTUALLY WORKED! -// USBD_LL_WakeupHost(&hUsbDeviceFS); }