From e7bf66b29e00e725d80ea3bab5a747a2e7b23bfa Mon Sep 17 00:00:00 2001 From: Peter Lawrence <12226419+majbthrd@users.noreply.github.com> Date: Sat, 28 Dec 2019 16:49:52 -0600 Subject: [PATCH] gracefully handle multiple SET_CONFIGURATION requests --- src/device/usbd.c | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/src/device/usbd.c b/src/device/usbd.c index 1797dfafa..84f383010 100644 --- a/src/device/usbd.c +++ b/src/device/usbd.c @@ -518,9 +518,11 @@ static bool process_control_request(uint8_t rhport, tusb_control_request_t const uint8_t const cfg_num = (uint8_t) p_request->wValue; dcd_set_config(rhport, cfg_num); + + if ( !_usbd_dev.configured && cfg_num ) TU_ASSERT( process_set_config(rhport, cfg_num) ); + _usbd_dev.configured = cfg_num ? 1 : 0; - if ( cfg_num ) TU_ASSERT( process_set_config(rhport, cfg_num) ); tud_control_status(rhport, p_request); } break;