diff options
| author | hathach <[email protected]> | 2021-08-26 13:07:10 +0700 |
|---|---|---|
| committer | hathach <[email protected]> | 2021-08-26 13:07:10 +0700 |
| commit | 07adc26ce32ee663905a25bd0300d56c265dc2ad (patch) | |
| tree | 4aa1b733784e480c9c7a30fbf4be9a0dad001e60 /src | |
| parent | 8d97f0e81f775d8c7646dfc75ee59b7e938bbf8d (diff) | |
fix usbcv TD 9.4 Interface Descriptor test
Diffstat (limited to 'src')
| -rw-r--r-- | src/device/usbd.c | 26 |
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; } } } |
