From 51d6c2785011a1469769c9e04d9b7df1a3d9c31e Mon Sep 17 00:00:00 2001 From: Brad Stein Date: Mon, 2 Jun 2025 20:18:19 -0500 Subject: [PATCH] updates --- .gitignore | 8 ++++---- client/Cargo.toml | 2 +- client/src/main.rs | 4 ++-- scripts/install-client.sh | 13 +++++-------- scripts/navka-core.sh | 9 +++++++-- server/Cargo.toml | 2 +- server/src/main.rs | 4 ++-- 7 files changed, 22 insertions(+), 20 deletions(-) diff --git a/.gitignore b/.gitignore index 9ec0163..45e8077 100644 --- a/.gitignore +++ b/.gitignore @@ -1,7 +1,7 @@ -/target/ -/Cargo.lock -/override.toml -/.cache/sccache/ +target/ +Cargo.lock +override.toml +.cache/sccache/ /unit-graph.json /**/*.rs.bk **/*.rs.orig diff --git a/client/Cargo.toml b/client/Cargo.toml index 241420e..4f8e82d 100644 --- a/client/Cargo.toml +++ b/client/Cargo.toml @@ -4,7 +4,7 @@ version = "0.1.0" edition = "2024" [dependencies] -tokio = { version = "1.45", features = ["full"] } +tokio = { version = "1.45", features = ["full", "fs"] } tonic = "0.11" tokio-stream = { version = "0.1", features = ["sync"] } anyhow = "1.0" diff --git a/client/src/main.rs b/client/src/main.rs index 16e47d0..124044e 100644 --- a/client/src/main.rs +++ b/client/src/main.rs @@ -2,7 +2,7 @@ #![forbid(unsafe_code)] use anyhow::Result; -use navka_common::navka::{relay_client::RelayClient, HidReport}; // <- only items that exist +use navka_common::navka::{hid_report::*, relay_client::RelayClient, HidReport}; // <- only items that exist use tokio::{sync::mpsc, time::sleep}; use tokio_stream::wrappers::ReceiverStream; use tonic::{transport::Channel, Request}; @@ -38,7 +38,7 @@ async fn main() -> Result<()> { }); while let Some(report) = inbound.message().await? { - println!("🔄 got report from server: {:?}", report.data); + println!("🔄 {:?}", report.data); } Ok(()) } diff --git a/scripts/install-client.sh b/scripts/install-client.sh index ad2969a..dea6c54 100755 --- a/scripts/install-client.sh +++ b/scripts/install-client.sh @@ -24,10 +24,7 @@ sudo -u "$ORIG_USER" bash -c "cd '$SRC/client' && cargo build --release" # 5. install binary install -Dm755 "$SRC/client/target/release/navka-client" "$HOME/.local/bin/navka-client" -# 6) Install the client binary -install -Dm755 client/target/release/navka-client "$HOME/.local/bin/navka-client" - -# 7) Create the user service file +# 6) Create the user service file mkdir -p "$HOME/.config/systemd/user" cat >"$HOME/.config/systemd/user/navka-client.service" <<'EOF' [Unit] @@ -43,9 +40,9 @@ Restart=on-failure WantedBy=default.target EOF -# 8) (Optional) keep running when no session is active +# 7) (Optional) keep running when no session is active loginctl enable-linger "$ORIG_USER" -# 9) Enable + start as *you*, not root -sudo -u "$ORIG_USER" systemctl --user daemon-reload -sudo -u "$ORIG_USER" systemctl --user enable --now navka-client.service +# 8) Call the *user* instance inside the caller’s session +sudo -iu "$ORIG_USER" systemctl --user daemon-reload +sudo -iu "$ORIG_USER" systemctl --user enable --now navka-client.service diff --git a/scripts/navka-core.sh b/scripts/navka-core.sh index 9c8197f..397b057 100644 --- a/scripts/navka-core.sh +++ b/scripts/navka-core.sh @@ -1,11 +1,16 @@ #!/usr/bin/env bash # Proven Pi-5 configfs gadget: HID keyboard+mouse + stereo UAC2 set -euo pipefail - +modprobe libcomposite mountpoint -q /sys/kernel/config || mount -t configfs configfs /sys/kernel/config G=/sys/kernel/config/usb_gadget/navka -[[ -d $G ]] && echo "" >"$G/UDC" && rm -rf "$G" +if [[ -d $G ]]; then + echo "" >"$G/UDC" || true + find "$G/configs" -type l -delete || true + rmdir "$G/functions/"* 2>/dev/null || true + rmdir "$G" 2>/dev/null || true +fi mkdir -p "$G" echo 0x1d6b >"$G/idVendor" # Linux Foundation diff --git a/server/Cargo.toml b/server/Cargo.toml index 3fc0267..4d0c290 100644 --- a/server/Cargo.toml +++ b/server/Cargo.toml @@ -4,7 +4,7 @@ version = "0.1.0" edition = "2024" [dependencies] -tokio = { version = "1.45", features = ["full"] } +tokio = { version = "1.45", features = ["full", "fs"] } tokio-stream = "0.1" tonic = { version = "0.11", features = ["transport"] } anyhow = "1.0" diff --git a/server/src/main.rs b/server/src/main.rs index bbfc761..7dddc53 100644 --- a/server/src/main.rs +++ b/server/src/main.rs @@ -11,7 +11,7 @@ use navka_common::navka::{ relay_server::{Relay, RelayServer}, HidReport, }; - +systemctl list services struct RelaySvc { // shared broadcast channel (unused for now, but kept for future fan-out) _hub_tx: mpsc::Sender, @@ -24,7 +24,7 @@ impl Relay for RelaySvc { async fn stream( &self, request: Request>, - ) -> Result, Status> { + ) -> Result> + Send>>>, Status> { let mut inbound = request.into_inner(); // each connected client gets its own outbound channel