uvc: fix interface mapping

This commit is contained in:
Brad Stein 2026-01-07 01:38:02 -03:00
parent cc4173d503
commit cb024953f1

View File

@ -353,17 +353,17 @@ fn handle_setup(
req: UsbCtrlRequest,
debug: bool,
) {
let selector = (req.w_value >> 8) as u8;
let interface_lo = (req.w_index & 0xff) as u8;
let interface_hi = (req.w_index >> 8) as u8;
let interface_raw = if interface_lo == interfaces.streaming || interface_lo == interfaces.control
let interface_raw = if interface_hi == interfaces.streaming || interface_hi == interfaces.control
{
interface_lo
} else if interface_hi == interfaces.streaming || interface_hi == interfaces.control {
interface_hi
} else {
} else if interface_lo == interfaces.streaming || interface_lo == interfaces.control {
interface_lo
} else {
interface_hi
};
let selector = (req.w_value >> 8) as u8;
let is_in = (req.b_request_type & USB_DIR_IN) != 0;
if matches!(selector, UVC_VS_PROBE_CONTROL | UVC_VS_COMMIT_CONTROL) {
maybe_update_ctrl_len(state, req.w_length, debug);
@ -412,14 +412,12 @@ fn handle_setup(
}
fn map_interface(raw: u8, selector: u8, interfaces: UvcInterfaces, debug: bool) -> u8 {
if raw == interfaces.streaming || raw == interfaces.control {
return raw;
}
let mapped = if matches!(selector, UVC_VS_PROBE_CONTROL | UVC_VS_COMMIT_CONTROL) {
interfaces.streaming
} else if selector == UVC_VC_REQUEST_ERROR_CODE_CONTROL {
interfaces.control
} else if raw == interfaces.streaming || raw == interfaces.control {
raw
} else {
raw
};