fix(server): borrow capture power for eye discovery
This commit is contained in:
parent
bb6586272e
commit
c6308749fe
@ -251,6 +251,44 @@ run_as_user() {
|
||||
sudo -u "$ORIG_USER" env HOME="$USER_HOME" SSH_AUTH_SOCK="${SSH_AUTH_SOCK:-}" "$@"
|
||||
}
|
||||
|
||||
CAPTURE_DISCOVERY_RELAY_PRESENT=0
|
||||
CAPTURE_DISCOVERY_RELAY_WAS_ACTIVE=0
|
||||
CAPTURE_DISCOVERY_POWER_BORROWED=0
|
||||
|
||||
prepare_capture_power_for_discovery() {
|
||||
if ! systemctl list-unit-files | grep -q '^relay.service'; then
|
||||
return 0
|
||||
fi
|
||||
|
||||
CAPTURE_DISCOVERY_RELAY_PRESENT=1
|
||||
if systemctl is-active --quiet relay.service; then
|
||||
CAPTURE_DISCOVERY_RELAY_WAS_ACTIVE=1
|
||||
return 0
|
||||
fi
|
||||
|
||||
echo " ↪ borrowing relay GPIO power for capture discovery"
|
||||
sudo systemctl start relay.service
|
||||
CAPTURE_DISCOVERY_POWER_BORROWED=1
|
||||
sudo udevadm settle --timeout=10 || true
|
||||
sleep 2
|
||||
}
|
||||
|
||||
restore_capture_power_after_discovery() {
|
||||
if [ "${CAPTURE_DISCOVERY_RELAY_PRESENT:-0}" -eq 0 ]; then
|
||||
return 0
|
||||
fi
|
||||
if [ "${CAPTURE_DISCOVERY_POWER_BORROWED:-0}" -eq 0 ]; then
|
||||
return 0
|
||||
fi
|
||||
if [ "${CAPTURE_DISCOVERY_RELAY_WAS_ACTIVE:-0}" -ne 0 ]; then
|
||||
return 0
|
||||
fi
|
||||
|
||||
echo " ↪ returning relay GPIO power control to Lesavka auto mode"
|
||||
sudo systemctl stop relay.service || true
|
||||
CAPTURE_DISCOVERY_POWER_BORROWED=0
|
||||
}
|
||||
|
||||
while [[ $# -gt 0 ]]; do
|
||||
case $1 in
|
||||
-r|--ref) REF="$2"; shift 2 ;;
|
||||
@ -314,11 +352,8 @@ EOF
|
||||
prepare_hdmi_detection_boot_state
|
||||
|
||||
echo "==> 2b. Predictable /dev names for each capture card"
|
||||
# ensure relay (GPIO power) is on if present
|
||||
if systemctl list-unit-files | grep -q '^relay.service'; then
|
||||
sudo systemctl enable --now relay.service
|
||||
sleep 2
|
||||
fi
|
||||
prepare_capture_power_for_discovery
|
||||
trap restore_capture_power_after_discovery EXIT
|
||||
|
||||
discover_gc_capture_pairs() {
|
||||
for dev in /dev/video*; do
|
||||
@ -378,6 +413,8 @@ EOF
|
||||
sudo udevadm settle
|
||||
fi
|
||||
fi
|
||||
restore_capture_power_after_discovery
|
||||
trap - EXIT
|
||||
|
||||
echo "==> 3. Rust toolchain"
|
||||
sudo rustup default stable
|
||||
|
||||
@ -74,6 +74,18 @@ fn server_install_builds_eye_links_from_capture_nodes_only() {
|
||||
SERVER_INSTALL.contains("for _ in {1..20}; do"),
|
||||
"install script should wait briefly for both GC311 capture nodes to finish enumerating"
|
||||
);
|
||||
assert!(
|
||||
SERVER_INSTALL.contains("borrowing relay GPIO power for capture discovery"),
|
||||
"install script should temporarily power capture cards for discovery when relay GPIO is available"
|
||||
);
|
||||
assert!(
|
||||
SERVER_INSTALL.contains("returning relay GPIO power control to Lesavka auto mode"),
|
||||
"install script should restore relay power control after capture discovery"
|
||||
);
|
||||
assert!(
|
||||
SERVER_INSTALL.contains("trap restore_capture_power_after_discovery EXIT"),
|
||||
"install script should restore borrowed capture power even if discovery exits early"
|
||||
);
|
||||
assert!(
|
||||
SERVER_INSTALL.contains("[ \"$LEFT_TAG\" = \"$RIGHT_TAG\" ]"),
|
||||
"install script should refuse duplicated path tags instead of assigning both eyes to one card"
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user