summaryrefslogtreecommitdiff
path: root/src/device/usbd.c
diff options
context:
space:
mode:
authorhathach <[email protected]>2020-04-15 17:51:02 +0700
committerhathach <[email protected]>2020-04-15 17:51:02 +0700
commitcaa1dceed97d841ca4176d96e324de976948f327 (patch)
tree13fe35d7d12603e08925d98b0361c3583e964172 /src/device/usbd.c
parentd315393fbb39ab6a70ea2c636d28305d9777ff97 (diff)
implement alternate setInterface() request
mostly forward these request (recipient = interface) to class driver.
Diffstat (limited to 'src/device/usbd.c')
-rw-r--r--src/device/usbd.c37
1 files changed, 3 insertions, 34 deletions
diff --git a/src/device/usbd.c b/src/device/usbd.c
index ad5a32f92..1df850165 100644
--- a/src/device/usbd.c
+++ b/src/device/usbd.c
@@ -571,40 +571,9 @@ static bool process_control_request(uint8_t rhport, tusb_control_request_t const
uint8_t const drvid = _usbd_dev.itf2drv[itf];
TU_VERIFY(drvid < USBD_CLASS_DRIVER_COUNT);
- if (p_request->bmRequestType_bit.type == TUSB_REQ_TYPE_STANDARD)
- {
- switch ( p_request->bRequest )
- {
- case TUSB_REQ_GET_INTERFACE:
- {
- // TODO not support alternate interface yet
- uint8_t alternate = 0;
- tud_control_xfer(rhport, p_request, &alternate, 1);
- }
- break;
-
- case TUSB_REQ_SET_INTERFACE:
- {
- uint8_t const alternate = (uint8_t) p_request->wValue;
- (void) alternate;
-
- // TODO not support alternate interface yet
-// TU_ASSERT(alternate == 0);
- tud_control_status(rhport, p_request);
- }
- break;
-
- default:
- // forward to class driver: "STD request to Interface"
- // GET HID REPORT DESCRIPTOR falls into this case
- TU_VERIFY(invoke_class_control(rhport, drvid, p_request));
- break;
- }
- }else
- {
- // forward to class driver: "non-STD request to Interface"
- TU_VERIFY(invoke_class_control(rhport, drvid, p_request));
- }
+ // all requests to Interface (STD or Class) is forwarded to class driver.
+ // notable requests are: GET HID REPORT DESCRIPTOR, SET_INTERFACE, GET_INTERFACE
+ TU_VERIFY(invoke_class_control(rhport, drvid, p_request));
}
break;