X-Git-Url: https://code.octet-stream.net/m17rt/blobdiff_plain/6437aa4e3e028e05ea84af469b15ed91ba0d8cc2..2813fcb83452c7fd91d799a984613a616180a067:/m17app/src/soundmodem.rs diff --git a/m17app/src/soundmodem.rs b/m17app/src/soundmodem.rs new file mode 100644 index 0000000..83731da --- /dev/null +++ b/m17app/src/soundmodem.rs @@ -0,0 +1,47 @@ +use std::io::{self, ErrorKind, Read, Write}; + +use crate::tnc::{Tnc, TncError}; +use m17core::tnc::SoftTnc; + +pub struct Soundmodem { + tnc: SoftTnc, + config: SoundmodemConfig, +} + +pub struct SoundmodemConfig { + // sound cards, PTT, etc. +} + +impl Read for Soundmodem { + fn read(&mut self, buf: &mut [u8]) -> io::Result { + self.tnc + .read_kiss(buf) + .map_err(|s| io::Error::new(ErrorKind::Other, format!("{:?}", s))) + } +} + +impl Write for Soundmodem { + fn write(&mut self, buf: &[u8]) -> std::io::Result { + self.tnc + .write_kiss(buf) + .map_err(|s| io::Error::new(ErrorKind::Other, format!("{:?}", s))) + } + + fn flush(&mut self) -> std::io::Result<()> { + Ok(()) + } +} + +impl Tnc for Soundmodem { + fn try_clone(&mut self) -> Result { + unimplemented!(); + } + + fn start(&mut self) -> Result<(), TncError> { + unimplemented!(); + } + + fn close(&mut self) -> Result<(), TncError> { + unimplemented!(); + } +}