diff --git a/server/src/bin/lesavka-uvc.rs b/server/src/bin/lesavka-uvc.rs index 90959ff..f7562f4 100644 --- a/server/src/bin/lesavka-uvc.rs +++ b/server/src/bin/lesavka-uvc.rs @@ -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 };