X-Git-Url: https://code.octet-stream.net/m17rt/blobdiff_plain/bc4b6ea4290384cd8c380af2a9014f162fd43683..16aaa4ac98d3719986e49623483c7f17306a4f95:/m17app/src/serial.rs diff --git a/m17app/src/serial.rs b/m17app/src/serial.rs index d3eec19..7747c3d 100644 --- a/m17app/src/serial.rs +++ b/m17app/src/serial.rs @@ -1,6 +1,6 @@ use serialport::SerialPort; -use crate::soundmodem::Ptt; +use crate::{error::SoundmodemError, soundmodem::Ptt}; /// The pin on the serial port which is driving PTT pub enum PttPin { @@ -23,25 +23,26 @@ impl SerialPtt { .map(|i| i.port_name) } - pub fn new(port_name: &str, pin: PttPin) -> Self { - // TODO: error handling - let port = serialport::new(port_name, 9600).open().unwrap(); - Self { port, pin } + pub fn new(port_name: &str, pin: PttPin) -> Result { + let port = serialport::new(port_name, 9600).open()?; + let mut s = Self { port, pin }; + s.ptt_off()?; + Ok(s) } } impl Ptt for SerialPtt { - fn ptt_on(&mut self) { - let _ = match self.pin { + fn ptt_on(&mut self) -> Result<(), SoundmodemError> { + Ok(match self.pin { PttPin::Rts => self.port.write_request_to_send(true), PttPin::Dtr => self.port.write_data_terminal_ready(true), - }; + }?) } - fn ptt_off(&mut self) { - let _ = match self.pin { + fn ptt_off(&mut self) -> Result<(), SoundmodemError> { + Ok(match self.pin { PttPin::Rts => self.port.write_request_to_send(false), PttPin::Dtr => self.port.write_data_terminal_ready(false), - }; + }?) } }