]> code.octet-stream.net Git - m17rt/blobdiff - m17app/src/rtlsdr.rs
Error handler for soundmodem components
[m17rt] / m17app / src / rtlsdr.rs
index 658aca4eada784d80e068173ca0a66bad5167808..269769b4bd2559452a635c5abb2b43e1234b3ec2 100644 (file)
@@ -6,7 +6,7 @@ use std::{
 
 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<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",
@@ -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<u8> = None;