summaryrefslogtreecommitdiff
path: root/src/device
diff options
context:
space:
mode:
authorhathach <[email protected]>2021-08-26 13:07:10 +0700
committerhathach <[email protected]>2021-08-26 13:07:10 +0700
commit07adc26ce32ee663905a25bd0300d56c265dc2ad (patch)
tree4aa1b733784e480c9c7a30fbf4be9a0dad001e60 /src/device
parent8d97f0e81f775d8c7646dfc75ee59b7e938bbf8d (diff)
fix usbcv TD 9.4 Interface Descriptor test
Diffstat (limited to 'src/device')
-rw-r--r--src/device/usbd.c26
1 files changed, 17 insertions, 9 deletions
diff --git a/src/device/usbd.c b/src/device/usbd.c
index e12dafcfd..2b706e291 100644
--- a/src/device/usbd.c
+++ b/src/device/usbd.c
@@ -751,16 +751,24 @@ static bool process_control_request(uint8_t rhport, tusb_control_request_t const
// driver doesn't use alternate settings or implement this
TU_VERIFY(TUSB_REQ_TYPE_STANDARD == p_request->bmRequestType_bit.type);
- if (TUSB_REQ_GET_INTERFACE == p_request->bRequest)
+ switch(p_request->bRequest)
{
- uint8_t alternate = 0;
- tud_control_xfer(rhport, p_request, &alternate, 1);
- }else if (TUSB_REQ_SET_INTERFACE == p_request->bRequest)
- {
- tud_control_status(rhport, p_request);
- } else
- {
- return false;
+ case TUSB_REQ_GET_INTERFACE:
+ case TUSB_REQ_SET_INTERFACE:
+ // Clear complete callback if driver set since it can also stall the request.
+ usbd_control_set_complete_callback(NULL);
+
+ if (TUSB_REQ_GET_INTERFACE == p_request->bRequest)
+ {
+ uint8_t alternate = 0;
+ tud_control_xfer(rhport, p_request, &alternate, 1);
+ }else
+ {
+ tud_control_status(rhport, p_request);
+ }
+ break;
+
+ default: return false;
}
}
}