usb_control: Implemented support for dispatching to the microsoft OS descriptors handler

This commit is contained in:
dragonmux
2022-08-11 10:15:20 +01:00
committed by Piotr Esden-Tempski
parent 9efcb120f7
commit 7aa5270809

View File

@@ -163,6 +163,21 @@ usb_control_request_dispatch(usbd_device *usbd_dev,
}
}
/* If we have a BOS and Microsoft OS-specific request handling
* regsitered, try it. See MS_OS_2_0_desc.docx pg10 for more. */
if (usbd_dev->bos && usbd_dev->microsoft_os_req_callback &&
(req->bmRequestType & (USB_REQ_TYPE_TYPE | USB_REQ_TYPE_RECIPIENT)) ==
(USB_REQ_TYPE_VENDOR | USB_REQ_TYPE_DEVICE)) {
const enum usbd_request_return_codes result = usbd_dev->microsoft_os_req_callback(
usbd_dev, req,
&(usbd_dev->control_state.ctrl_buf),
&(usbd_dev->control_state.ctrl_len));
if (result == USBD_REQ_HANDLED ||
result == USBD_REQ_NOTSUPP) {
return result;
}
}
/* Try standard request if not already handled. */
return _usbd_standard_request(usbd_dev, req,
&(usbd_dev->control_state.ctrl_buf),