From faccd959960514cd7fbc1c992a2621ba31b34f61 Mon Sep 17 00:00:00 2001 From: Federico Lolli <federico.lolli@skywarder.eu> Date: Mon, 19 Feb 2024 17:20:49 +0100 Subject: [PATCH] add timeout to reading (waiting 200ms before emitting error) --- src/serial.rs | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/src/serial.rs b/src/serial.rs index a850c29..731be06 100644 --- a/src/serial.rs +++ b/src/serial.rs @@ -6,6 +6,7 @@ use std::{ Arc, }, thread::{self, JoinHandle}, + time::Duration, }; use hashbrown::HashMap; @@ -83,7 +84,11 @@ impl SerialQueue { /// Open the serial port and start a thread to write data as soon as it is /// available (by using a channel) fn open(port: &str, baudrate: u32) -> SResult<Self> { - let serial = Arc::new(Mutex::new(serialport::new(port, baudrate).open()?)); + let serial = Arc::new(Mutex::new( + serialport::new(port, baudrate) + .timeout(Duration::from_millis(200)) + .open()?, + )); let (tx, rx) = channel::<Vec<u8>>(); let ser = Arc::clone(&serial); let _handle = thread::spawn(move || { -- GitLab