From 685ace2dffe4dd815b659567297e0434b79fda83 Mon Sep 17 00:00:00 2001 From: Brad Stein Date: Sun, 1 Jun 2025 21:16:26 -0500 Subject: [PATCH] fixed issue with hid_report --- client/src/main.rs | 27 ++++++++++++--------------- 1 file changed, 12 insertions(+), 15 deletions(-) diff --git a/client/src/main.rs b/client/src/main.rs index 3fbd6da..16e47d0 100644 --- a/client/src/main.rs +++ b/client/src/main.rs @@ -2,46 +2,43 @@ #![forbid(unsafe_code)] use anyhow::Result; -use navka_common::navka::{hid_report::*, relay_client::RelayClient, HidReport}; +use navka_common::navka::{relay_client::RelayClient, HidReport}; // <- only items that exist use tokio::{sync::mpsc, time::sleep}; use tokio_stream::wrappers::ReceiverStream; use tonic::{transport::Channel, Request}; #[tokio::main] async fn main() -> Result<()> { - // Connect to navka-server (adjust the address if server not local) - let channel = Channel::from_static("http://127.0.0.1:50051") + // -- server address comes from CLI arg, env or falls back to localhost + let addr = std::env::args() + .nth(1) + .or_else(|| std::env::var("NAVKA_SERVER_ADDR").ok()) + .unwrap_or_else(|| "http://127.0.0.1:50051".to_owned()); + + let channel: Channel = Channel::from_shared(addr)? .connect() .await?; - // mpsc channel -> ReceiverStream -> gRPC bidirectional stream + // mpsc -> ReceiverStream -> bidirectional gRPC let (tx, rx) = mpsc::channel::(32); let outbound = ReceiverStream::new(rx); - // Kick off the RPC – note: in tonic 0.11 the request object is built - // by wrapping the outbound stream in `Request::new(...)`. let mut inbound = RelayClient::new(channel) .stream(Request::new(outbound)) .await? .into_inner(); - // Example task: press and release the 'a' key once. + // demo: press & release ‘a’ tokio::spawn(async move { - // 8-byte boot-keyboard report: [mods, reserved, key1..6] - let press_a = HidReport { - data: vec![0x00, 0x00, 0x04, 0, 0, 0, 0, 0], - }; + let press_a = HidReport { data: vec![0, 0, 0x04, 0, 0, 0, 0, 0] }; let release = HidReport { data: vec![0; 8] }; - tx.send(press_a).await.ok(); sleep(std::time::Duration::from_millis(100)).await; tx.send(release).await.ok(); }); - // Print whatever the server echoes back. while let Some(report) = inbound.message().await? { - println!("🔄 received: {:?}", report.data); + println!("🔄 got report from server: {:?}", report.data); } - Ok(()) }