From 82f8e51b7b4b5aa9f3ba45cb8b0afcea19ceb9c1 Mon Sep 17 00:00:00 2001 From: lonesometraveler Date: Tue, 21 Feb 2023 14:20:48 -0500 Subject: [PATCH] Refactor serial_write --- src/serial.rs | 43 +++++++++++++------------------------------ 1 file changed, 13 insertions(+), 30 deletions(-) diff --git a/src/serial.rs b/src/serial.rs index 6456324..28047ac 100644 --- a/src/serial.rs +++ b/src/serial.rs @@ -6,22 +6,12 @@ use std::sync::mpsc::Receiver; use std::sync::{Arc, RwLock}; use std::time::{Duration, Instant}; -fn serial_write(port: &mut BufReader>, cmd: &[u8]) -> bool { +fn serial_write( + port: &mut BufReader>, + cmd: &[u8], +) -> Result { let write_port = port.get_mut(); - match write_port.write(cmd) { - Ok(_) => { - let mut response = "".to_string(); - serial_read(port, &mut response); - println!("sent a command!"); - if response.contains("OK") { - true - } else { - println!("cmd not acknowledged!!!"); - false - } - } - Err(_) => false, - } + write_port.write(cmd) } fn serial_read(port: &mut BufReader>, serial_buf: &mut String) -> bool { @@ -161,21 +151,14 @@ pub fn serial_thread( // perform writes if let Ok(cmd) = send_rx.recv_timeout(Duration::from_millis(1)) { - let output = cmd.as_bytes(); - serial_write(&mut port, output); - if let Ok(mut write_guard) = raw_data_lock.write() { - match std::str::from_utf8(output) { - Ok(v) => { - let packet = Packet { - time: Instant::now().duration_since(t_zero).as_millis(), - direction: SerialDirection::Send, - payload: v.to_string(), - }; - write_guard.push(packet); - } - Err(_) => { - // println!("output encode fail"); - } + if serial_write(&mut port, cmd.as_bytes()).is_ok() { + if let Ok(mut write_guard) = raw_data_lock.write() { + let packet = Packet { + time: Instant::now().duration_since(t_zero).as_millis(), + direction: SerialDirection::Send, + payload: cmd, + }; + write_guard.push(packet); } } }