From 1f365434f94a3f0230637027439306f643108317 Mon Sep 17 00:00:00 2001 From: Robert Fisk Date: Sun, 1 Apr 2018 01:17:29 +1300 Subject: [PATCH] Dont freak out if we get two suspend events in a row --- .../ST/STM32_USB_Device_Library/Core/Src/usbd_core.c | 8 ++++---- Upstream/Src/upstream_statemachine.c | 2 +- 2 files changed, 5 insertions(+), 5 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 a808da5..792b1f2 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 @@ -475,11 +475,11 @@ USBD_StatusTypeDef USBD_SetSpeed(USBD_HandleTypeDef *pdev, USBD_SpeedTypeDef sp USBD_StatusTypeDef USBD_Suspend(USBD_HandleTypeDef *pdev) { - pdev->dev_old_state = pdev->dev_state; - pdev->dev_state = USBD_STATE_SUSPENDED; - - if (pdev->dev_old_state > USBD_STATE_DEFAULT) + if ((pdev->dev_state > USBD_STATE_DEFAULT) && + (pdev->dev_state < USBD_STATE_SUSPENDED)) { + pdev->dev_old_state = pdev->dev_state; + pdev->dev_state = USBD_STATE_SUSPENDED; Upstream_StateMachine_Suspend(); } return USBD_OK; diff --git a/Upstream/Src/upstream_statemachine.c b/Upstream/Src/upstream_statemachine.c index 89f7ad1..37debfe 100644 --- a/Upstream/Src/upstream_statemachine.c +++ b/Upstream/Src/upstream_statemachine.c @@ -248,7 +248,7 @@ void Upstream_StateMachine_DeviceDisconnected(void) //Suspend event activated by our host void Upstream_StateMachine_Suspend(void) { - if (UpstreamState >= STATE_ERROR) + if (UpstreamState >= STATE_SUSPENDED) //Ignore when already suspended, or in error state { return; }