X-Git-Url: https://code.octet-stream.net/m17rt/blobdiff_plain/3903e719137aba15d30dd58b8d917965ec602400..e307431f908eedae321aa86565fd5e213d758216:/m17app/src/rtlsdr.rs?ds=sidebyside diff --git a/m17app/src/rtlsdr.rs b/m17app/src/rtlsdr.rs index 658aca4..72217cf 100644 --- a/m17app/src/rtlsdr.rs +++ b/m17app/src/rtlsdr.rs @@ -1,12 +1,12 @@ use std::{ io::Read, process::{Child, Command, Stdio}, - sync::{mpsc::SyncSender, Mutex}, + sync::{Mutex, mpsc::SyncSender}, }; use crate::{ error::M17Error, - soundmodem::{InputSource, SoundmodemEvent}, + soundmodem::{InputSource, SoundmodemErrorSender, SoundmodemEvent}, }; pub struct RtlSdr { @@ -26,9 +26,8 @@ impl RtlSdr { } impl InputSource for RtlSdr { - fn start(&self, tx: SyncSender) { - // TODO: error handling - let mut cmd = Command::new("rtl_fm") + fn start(&self, tx: SyncSender, errors: SoundmodemErrorSender) { + let mut cmd = match Command::new("rtl_fm") .args([ "-E", "offset", @@ -41,7 +40,13 @@ impl InputSource for RtlSdr { ]) .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 = None;