diff --git a/.vscode/launch.json b/.vscode/launch.json index d1aff5a..c0650ba 100644 --- a/.vscode/launch.json +++ b/.vscode/launch.json @@ -7,15 +7,15 @@ { "type": "lldb", "request": "launch", - "name": "Debug executable 'service'", + "name": "Debug executable 'macroboard_service'", "cargo": { "args": [ "build", - "--bin=service", + "--bin=macroboard_service", "--package=macroboard" ], "filter": { - "name": "service", + "name": "macroboard_service", "kind": "bin" } }, @@ -25,16 +25,16 @@ { "type": "lldb", "request": "launch", - "name": "Debug unit tests in executable 'service'", + "name": "Debug unit tests in executable 'macroboard_service'", "cargo": { "args": [ "test", "--no-run", - "--bin=service", + "--bin=macroboard_service", "--package=macroboard" ], "filter": { - "name": "service", + "name": "macroboard_service", "kind": "bin" } }, @@ -44,15 +44,15 @@ { "type": "lldb", "request": "launch", - "name": "Debug executable 'gui'", + "name": "Debug executable 'macroboard_gui'", "cargo": { "args": [ "build", - "--bin=gui", + "--bin=macroboard_gui", "--package=macroboard" ], "filter": { - "name": "gui", + "name": "macroboard_gui", "kind": "bin" } }, @@ -62,16 +62,16 @@ { "type": "lldb", "request": "launch", - "name": "Debug unit tests in executable 'gui'", + "name": "Debug unit tests in executable 'macroboard_gui'", "cargo": { "args": [ "test", "--no-run", - "--bin=gui", + "--bin=macroboard_gui", "--package=macroboard" ], "filter": { - "name": "gui", + "name": "macroboard_gui", "kind": "bin" } }, diff --git a/src/service.rs b/src/service.rs index 8aa1790..e8e99a6 100644 --- a/src/service.rs +++ b/src/service.rs @@ -61,6 +61,7 @@ fn main() -> Result<()> { message_builder = MessageBuilder::default(); } } + SerialReadResult::UtfConversion(err) => println!("{:?}", err), SerialReadResult::Timeout => (), } } @@ -93,7 +94,9 @@ fn execute_button_press( if !cmd.is_empty() { println!("cmd: {}", cmd); - Command::new(cmd).spawn()?; + if let Err(err) = Command::new(cmd).spawn() { + println!("failed with: {:?}", err); + } } } diff --git a/src/service_specific/port.rs b/src/service_specific/port.rs index 57cf981..d5335d0 100644 --- a/src/service_specific/port.rs +++ b/src/service_specific/port.rs @@ -1,12 +1,13 @@ use anyhow::{anyhow, Result}; -use std::io; +use std::{io, string::FromUtf8Error}; pub use serialport::{DataBits, FlowControl, Parity, SerialPort, StopBits}; pub use std::time::Duration; pub enum SerialReadResult { Message(String), + UtfConversion(FromUtf8Error), Timeout, } @@ -50,10 +51,10 @@ impl Port { let mut buf: Vec = (0..255).collect(); match self.serial_port.read(&mut buf[..]) { - Ok(t) => Ok(SerialReadResult::Message( - String::from_utf8(buf[0..t].to_vec()) - .map_err(|err| anyhow!("failed converting utf8 buffer ({})", err))?, - )), + Ok(t) => match String::from_utf8(buf[0..t].to_vec()) { + Ok(s) => Ok(SerialReadResult::Message(s)), + Err(err) => Ok(SerialReadResult::UtfConversion(err)), + }, Err(ref e) if e.kind() == io::ErrorKind::TimedOut => Ok(SerialReadResult::Timeout), Err(err) => Err(anyhow!("failed reading serial port ({})", err)), }