summaryrefslogtreecommitdiff
path: root/src/device/usbd.c
diff options
context:
space:
mode:
authorPeter Lawrence <[email protected]>2019-12-28 16:49:52 -0600
committerPeter Lawrence <[email protected]>2019-12-28 16:49:52 -0600
commite7bf66b29e00e725d80ea3bab5a747a2e7b23bfa (patch)
tree5d617a0cfbd046a6de61f86162cd97016ca11668 /src/device/usbd.c
parenta601f59df5e61801cbbe87467c70a48b740d4bfd (diff)
gracefully handle multiple SET_CONFIGURATION requests
Diffstat (limited to 'src/device/usbd.c')
-rw-r--r--src/device/usbd.c4
1 files changed, 3 insertions, 1 deletions
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;