};
use crate::{
- error::M17Error,
+ error::{M17Error, SoundmodemError},
soundmodem::{InputSource, SoundmodemEvent},
};
}
impl InputSource for RtlSdr {
- fn start(&self, tx: SyncSender<SoundmodemEvent>) {
- // TODO: error handling
+ fn start(&self, tx: SyncSender<SoundmodemEvent>) -> Result<(), SoundmodemError> {
let mut cmd = Command::new("rtl_fm")
.args([
"-E",
"48k",
])
.stdout(Stdio::piped())
- .spawn()
- .unwrap();
+ .spawn()?;
let mut stdout = cmd.stdout.take().unwrap();
let mut buf = [0u8; 1024];
let mut leftover: Option<u8> = None;
}
});
*self.rtlfm.lock().unwrap() = Some(cmd);
+ Ok(())
}
- fn close(&self) {
+ fn close(&self) -> Result<(), SoundmodemError> {
if let Some(mut process) = self.rtlfm.lock().unwrap().take() {
let _ = process.kill();
}
+ Ok(())
}
}