diff options
| author | Ha Thach <[email protected]> | 2021-03-10 12:10:52 +0700 |
|---|---|---|
| committer | GitHub <[email protected]> | 2021-03-10 12:10:52 +0700 |
| commit | f9817da397d9e24801bb1b7e2b8ed0ddcef36d62 (patch) | |
| tree | e26998c4995e0c662cbb2645b736801462829eba /src | |
| parent | ccb599f84bf26e979e209bfe03307ce582e021af (diff) | |
| parent | eeea19c0ab1c6e66c56eabac49e2c0f190e9a080 (diff) | |
Merge pull request #711 from hathach/usbd-handle-set-interface
Usbd handle set interface
Diffstat (limited to 'src')
| -rw-r--r-- | src/device/usbd.c | 20 |
1 files changed, 14 insertions, 6 deletions
diff --git a/src/device/usbd.c b/src/device/usbd.c index 911977eb0..ca5a482fc 100644 --- a/src/device/usbd.c +++ b/src/device/usbd.c @@ -699,13 +699,21 @@ static bool process_control_request(uint8_t rhport, tusb_control_request_t const // notable requests are: GET HID REPORT DESCRIPTOR, SET_INTERFACE, GET_INTERFACE if ( !invoke_class_control(rhport, driver, p_request) ) { - // For GET_INTERFACE, it is mandatory to respond even if the class - // driver doesn't use alternate settings. - TU_VERIFY( TUSB_REQ_TYPE_STANDARD == p_request->bmRequestType_bit.type && - TUSB_REQ_GET_INTERFACE == p_request->bRequest); + // For GET_INTERFACE and SET_INTERFACE, it is mandatory to respond even if the class + // driver doesn't use alternate settings or implement this + TU_VERIFY(TUSB_REQ_TYPE_STANDARD == p_request->bmRequestType_bit.type); - uint8_t alternate = 0; - tud_control_xfer(rhport, p_request, &alternate, 1); + if (TUSB_REQ_GET_INTERFACE == 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; + } } } break; |
