diff --git a/src/gate.rs b/src/gate.rs index b6e8b6d281b58a32d21e9f4b6096a8474719d941..7c000728c6690ff0fc3b94463e0e6aeeb4502592 100644 --- a/src/gate.rs +++ b/src/gate.rs @@ -273,13 +273,13 @@ pub async fn felinet_send_forever( pub async fn felinet_receive_forever( mut client: HandlerClient<Channel>, mut modem_send: mpsc::Sender<Vec<u8>>, - callsign: &str, + callsign: String, ssid: u8, uuid: Uuid, ) { loop { if let Err(e) = - felinet_receive_once(&mut client, &mut modem_send, callsign, ssid, uuid).await + felinet_receive_once(&mut client, &mut modem_send, &callsign, ssid, uuid).await { eprintln!("FELINET RX error: {e}. Reconnecting..."); }; diff --git a/src/main.rs b/src/main.rs index 3a67e9aa01b19ad1b29a9c9c40f3571902e47ff8..5e0173e8c7985a3e171378afd0ad41fae8a4252c 100644 --- a/src/main.rs +++ b/src/main.rs @@ -111,14 +111,6 @@ async fn gate_forever( let temperature_mutex = radio.temperature_mutex(); - tokio::task::spawn(async move { - loop { - if let Err(e) = radio.process_forever().await { - eprintln!("Radio error: {e}") - } - } - }); - let tx = broadcast::Sender::new(16); beacon_forever( @@ -190,8 +182,15 @@ async fn gate_forever( }); } - felinet_receive_forever(client, packet_send, &callsign, config.ssid, uuid).await; + let ssid = config.ssid; + tokio::task::spawn(async move { + felinet_receive_forever(client, packet_send, callsign, ssid, uuid).await; + }); } - Ok(()) + loop { + if let Err(e) = radio.process_forever().await { + eprintln!("Radio error: {e}") + } + } }