diff --git a/src/main.rs b/src/main.rs index 1906530..3f98ab4 100644 --- a/src/main.rs +++ b/src/main.rs @@ -248,13 +248,14 @@ impl Transceiver { { // Wait for end of tranmission let mut recv = Some(FSKReceiver::new(eyes_tx.clone())); + let mut send_ack = false; while let Some(iq) = squelch.next(iq_sampler.sample(sample_stream.recv().await.unwrap())) { if recv.as_ref().is_some() { match recv.as_mut().unwrap().receive(iq).await { - Ok(Some(Frame::Data(_))) => {println!("GOT DATA"); Self::transmit(Frame::Ack, &mut sample_sender).await; recv = None;}, + Ok(Some(Frame::Data(_))) => {println!("GOT DATA"); send_ack = true; recv = None;}, Ok(Some(Frame::Ack)) => {current_message = None; recv = None;}, Err(()) => {recv = None;}, _ => {} @@ -262,6 +263,10 @@ impl Transceiver { } } println!("EOT"); + if send_ack + { + Self::transmit(Frame::Ack, &mut sample_sender).await; + } }, message = async { @@ -497,7 +502,7 @@ impl EguiApp { &config.into(), move |data: &[f32], _| { for x in data.iter() { - let _ = down_sender.try_send(*x * 30.); // non-blocking send + let _ = down_sender.blocking_send(*x * 30.); // non-blocking send } }, move |err| eprintln!("Stream error: {}", err),