fix(sync): build valid uvc control descriptors

This commit is contained in:
Brad Stein 2026-04-28 05:23:27 -03:00
parent 1462f736f4
commit 60a6cd1629
6 changed files with 30 additions and 14 deletions

6
Cargo.lock generated
View File

@ -1642,7 +1642,7 @@ checksum = "09edd9e8b54e49e587e4f6295a7d29c3ea94d469cb40ab8ca70b288248a81db2"
[[package]]
name = "lesavka_client"
version = "0.14.40"
version = "0.14.41"
dependencies = [
"anyhow",
"async-stream",
@ -1676,7 +1676,7 @@ dependencies = [
[[package]]
name = "lesavka_common"
version = "0.14.40"
version = "0.14.41"
dependencies = [
"anyhow",
"base64",
@ -1688,7 +1688,7 @@ dependencies = [
[[package]]
name = "lesavka_server"
version = "0.14.40"
version = "0.14.41"
dependencies = [
"anyhow",
"base64",

View File

@ -4,7 +4,7 @@ path = "src/main.rs"
[package]
name = "lesavka_client"
version = "0.14.40"
version = "0.14.41"
edition = "2024"
[dependencies]

View File

@ -1,6 +1,6 @@
[package]
name = "lesavka_common"
version = "0.14.40"
version = "0.14.41"
edition = "2024"
build = "build.rs"

View File

@ -514,14 +514,12 @@ EOF
# ── 4. VideoControl interface ─────────────────────────────────────
mkdir -p "$F/control/header/h"
set +e
for s in fs hs ss; do
mkdir -p "$F/control/class/$s" 2>/dev/null || continue
pushd "$F/control/class/$s" >/dev/null
ln -s ../../header/h h 2>/dev/null || true
popd >/dev/null
done
set -e
# The kernel UVC gadget docs require direct symlinks at control/class/fs and
# control/class/ss. High-speed control descriptors are not exposed here.
pushd "$F/control" >/dev/null
ln -s header/h class/fs 2>/dev/null || true
ln -s header/h class/ss 2>/dev/null || true
popd >/dev/null
if [[ -n $UVC_DISABLE_IRQ ]]; then
echo 0 >"$F/control/enable_interrupt_ep" 2>/dev/null || true

View File

@ -10,7 +10,7 @@ bench = false
[package]
name = "lesavka_server"
version = "0.14.40"
version = "0.14.41"
edition = "2024"
autobins = false

View File

@ -38,3 +38,21 @@ fn core_script_skips_soft_connect_for_dwc2() {
);
}
}
#[test]
fn core_script_uses_kernel_doc_control_header_links() {
for expected in [
"pushd \"$F/control\" >/dev/null",
"ln -s header/h class/fs",
"ln -s header/h class/ss",
] {
assert!(
CORE_SCRIPT.contains(expected),
"lesavka-core control-header guard missing: {expected}"
);
}
assert!(
!CORE_SCRIPT.contains("mkdir -p \"$F/control/class/$s\""),
"lesavka-core should not build the UVC control class as nested directories"
);
}