From 6eade4742b1c870f9bc6524d767dccd36f1409f2 Mon Sep 17 00:00:00 2001 From: Emilio Corigliano <emilio.corigliano@skywarder.eu> Date: Wed, 24 Apr 2024 11:52:40 +0200 Subject: [PATCH] Revert "Fixed some timing and release issues" This reverts commit ca65b83d8be6bf253e1404a780314edef56a48bf. --- src/serial.rs | 15 +++++---------- 1 file changed, 5 insertions(+), 10 deletions(-) diff --git a/src/serial.rs b/src/serial.rs index f816341..950f1dc 100644 --- a/src/serial.rs +++ b/src/serial.rs @@ -3,7 +3,7 @@ use std::{ ops::Deref, sync::Arc, thread::{self, JoinHandle}, - time::Duration, + time::{Duration, Instant}, }; use crossbeam_channel::{unbounded, Receiver, RecvTimeoutError, Sender}; @@ -67,13 +67,9 @@ impl SerialManager { let mut buf = vec![0; n]; // implement a read exact to allow better error messages let mut filled = 0; + let timeout = Instant::now() + port.read_timeout; while filled < n { - match port - .reader_ch - .as_ref() - .unwrap() - .recv_timeout(port.read_timeout) - { + match port.reader_ch.as_ref().unwrap().recv_deadline(timeout) { Ok(b) => { buf[filled] = b; filled += 1; @@ -136,8 +132,7 @@ impl SerialQueue { let ser = Arc::clone(&serial); handles.push(thread::spawn(move || { while let Ok(data) = wrx.recv() { - data.chunks(256) - .for_each(|chunk| ser.lock().as_mut().unwrap().write_all(chunk).unwrap()); + ser.lock().as_mut().unwrap().write_all(&data).unwrap(); } })); @@ -145,7 +140,7 @@ impl SerialQueue { let (rtx, rrx) = unbounded::<u8>(); let ser = Arc::clone(&serial); handles.push(thread::spawn(move || { - let mut buf = [0; 256]; + let mut buf = [0; 1024]; loop { match ser.lock().as_mut().map(|p| p.read(&mut buf)) { Some(Ok(n)) => { -- GitLab