use crate::{
error::M17Error,
- soundmodem::{InputSource, SoundmodemEvent},
+ soundmodem::{InputSource, SoundmodemErrorSender, SoundmodemEvent},
};
pub struct RtlSdr {
}
impl InputSource for RtlSdr {
- fn start(&self, tx: SyncSender<SoundmodemEvent>) {
- // TODO: error handling
- let mut cmd = Command::new("rtl_fm")
+ fn start(&self, tx: SyncSender<SoundmodemEvent>, errors: SoundmodemErrorSender) {
+ let mut cmd = match Command::new("rtl_fm")
.args([
"-E",
"offset",
])
.stdout(Stdio::piped())
.spawn()
- .unwrap();
+ {
+ Ok(c) => c,
+ Err(e) => {
+ errors.send_error(e);
+ return;
+ }
+ };
let mut stdout = cmd.stdout.take().unwrap();
let mut buf = [0u8; 1024];
let mut leftover: Option<u8> = None;