Blocking send when receiving from mic

This commit is contained in:
2025-10-19 14:51:27 +02:00
parent ef05e2c89e
commit 46c276b5ca

View File

@ -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),