server fix
This commit is contained in:
parent
e3d84b8289
commit
d8bbf40f38
@ -59,6 +59,7 @@ After=network.target navka-core.service
|
||||
[Service]
|
||||
ExecStart=/usr/local/bin/navka-server
|
||||
Restart=always
|
||||
Environment="RUST_LOG=navka_server=trace"
|
||||
User=root
|
||||
[Install]
|
||||
WantedBy=multi-user.target
|
||||
|
||||
@ -53,14 +53,17 @@ impl Relay for Handler {
|
||||
|
||||
tokio::spawn(async move {
|
||||
let mut s = req.into_inner();
|
||||
let mut boot_mode = true;
|
||||
while let Some(pkt) = s.next().await.transpose()? {
|
||||
loop {
|
||||
match ms.lock().await.write_all(&pkt.data).await {
|
||||
Ok(()) => break,
|
||||
Err(e) if e.kind() == ErrorKind::WouldBlock => {
|
||||
// gadget FIFO full – give it a breath
|
||||
tokio::time::sleep(std::time::Duration::from_micros(500)).await;
|
||||
continue;
|
||||
Ok(()) => {
|
||||
trace!("🖱️ wrote {}", pkt.data.iter()
|
||||
.map(|b| format!("{b:02X}")).collect::<Vec<_>>().join(" "));
|
||||
break;
|
||||
}
|
||||
Err(e) if e.kind() == std::io::ErrorKind::WouldBlock => {
|
||||
tokio::time::sleep(Duration::from_micros(500)).await;
|
||||
}
|
||||
Err(e) => return Err(Status::internal(format!("hidg1: {e}"))),
|
||||
}
|
||||
@ -105,7 +108,7 @@ async fn main() -> anyhow::Result<()> {
|
||||
let ms = OpenOptions::new()
|
||||
.write(true)
|
||||
// .read(true)
|
||||
// .custom_flags(libc::O_NONBLOCK)
|
||||
.custom_flags(libc::O_NONBLOCK)
|
||||
.open("/dev/hidg1")
|
||||
.await?;
|
||||
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user