From 9857af6eb45851ea8e68ee628db4c6e2bf25335b Mon Sep 17 00:00:00 2001
From: Stephen D <webmaster@scd31.com>
Date: Thu, 16 Nov 2023 16:19:12 -0400
Subject: [PATCH] fix bug when switching from rx to tx

---
 src/lib.rs | 10 ++++++++++
 1 file changed, 10 insertions(+)

diff --git a/src/lib.rs b/src/lib.rs
index 3b79878..61b8e56 100644
--- a/src/lib.rs
+++ b/src/lib.rs
@@ -71,6 +71,10 @@ where
         self.radio.get_rssi()
     }
 
+    pub fn sleep(&mut self) -> Result<(), RfError<Spi::Error>> {
+        self.radio.sleep()
+    }
+
     pub fn set_channel(&mut self, channel: u8) {
         self.channel = channel;
     }
@@ -160,6 +164,12 @@ where
         let len = tx_buf.len();
         assert!(len < 8192, "Packet length cannot be above 8191 bytes");
 
+        if matches!(self.state, InternalState::Rx { .. }) {
+            // if we're in the middle of rxing, we need to cancel that first
+            // otherwise it gets confused
+            self.radio.set_state(State::Sleep).txe()?;
+        }
+
         self.radio.clear_fifo().txe()?;
         self.radio.clear_ph_and_modem_interrupts().txe()?;
 
-- 
GitLab