uvc: fix interface mapping
This commit is contained in:
parent
cc4173d503
commit
cb024953f1
@ -353,17 +353,17 @@ fn handle_setup(
|
|||||||
req: UsbCtrlRequest,
|
req: UsbCtrlRequest,
|
||||||
debug: bool,
|
debug: bool,
|
||||||
) {
|
) {
|
||||||
|
let selector = (req.w_value >> 8) as u8;
|
||||||
let interface_lo = (req.w_index & 0xff) as u8;
|
let interface_lo = (req.w_index & 0xff) as u8;
|
||||||
let interface_hi = (req.w_index >> 8) 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
|
interface_hi
|
||||||
} else {
|
} else if interface_lo == interfaces.streaming || interface_lo == interfaces.control {
|
||||||
interface_lo
|
interface_lo
|
||||||
|
} else {
|
||||||
|
interface_hi
|
||||||
};
|
};
|
||||||
let selector = (req.w_value >> 8) as u8;
|
|
||||||
let is_in = (req.b_request_type & USB_DIR_IN) != 0;
|
let is_in = (req.b_request_type & USB_DIR_IN) != 0;
|
||||||
if matches!(selector, UVC_VS_PROBE_CONTROL | UVC_VS_COMMIT_CONTROL) {
|
if matches!(selector, UVC_VS_PROBE_CONTROL | UVC_VS_COMMIT_CONTROL) {
|
||||||
maybe_update_ctrl_len(state, req.w_length, debug);
|
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 {
|
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) {
|
let mapped = if matches!(selector, UVC_VS_PROBE_CONTROL | UVC_VS_COMMIT_CONTROL) {
|
||||||
interfaces.streaming
|
interfaces.streaming
|
||||||
} else if selector == UVC_VC_REQUEST_ERROR_CODE_CONTROL {
|
} else if selector == UVC_VC_REQUEST_ERROR_CODE_CONTROL {
|
||||||
interfaces.control
|
interfaces.control
|
||||||
|
} else if raw == interfaces.streaming || raw == interfaces.control {
|
||||||
|
raw
|
||||||
} else {
|
} else {
|
||||||
raw
|
raw
|
||||||
};
|
};
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user