fixed issue with hid_report
This commit is contained in:
parent
6d81aa3a17
commit
685ace2dff
@ -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::<HidReport>(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(())
|
||||
}
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user