From 1027ea1b983d6b2638da324bbfe653442a11db94 Mon Sep 17 00:00:00 2001 From: Pedro Date: Tue, 19 Dec 2023 23:32:04 +0100 Subject: [PATCH] Fix hangs on ARQ sessions --- modem/arq_session_irs.py | 3 ++- modem/arq_session_iss.py | 1 + tests/test_arq_session.py | 2 +- 3 files changed, 4 insertions(+), 2 deletions(-) diff --git a/modem/arq_session_irs.py b/modem/arq_session_irs.py index f26fbf12..89958f8d 100644 --- a/modem/arq_session_irs.py +++ b/modem/arq_session_irs.py @@ -70,12 +70,13 @@ class ARQSessionIRS(arq_session.ARQSession): return match def transmit_and_wait(self, frame, timeout, mode): + self.event_frame_received.clear() self.transmit_frame(frame, mode) self.log(f"Waiting {timeout} seconds...") if not self.event_frame_received.wait(timeout): self.log("Timeout waiting for ISS. Session failed.") self.set_state(IRS_State.FAILED) - self.event_manager.send_arq_finished(False, self.id, self.dxcall, self.total_length, False) + self.event_manager.send_arq_session_finished(False, self.id, self.dxcall, self.total_length, False) def launch_transmit_and_wait(self, frame, timeout, mode): thread_wait = threading.Thread(target = self.transmit_and_wait, diff --git a/modem/arq_session_iss.py b/modem/arq_session_iss.py index a5f20d82..1693c51c 100644 --- a/modem/arq_session_iss.py +++ b/modem/arq_session_iss.py @@ -60,6 +60,7 @@ class ARQSessionISS(arq_session.ARQSession): else: burst = [frame_or_burst] for f in burst: self.transmit_frame(f, mode) + self.event_frame_received.clear() self.log(f"Waiting {timeout} seconds...") if self.event_frame_received.wait(timeout): return diff --git a/tests/test_arq_session.py b/tests/test_arq_session.py index 03419901..4c71bffd 100644 --- a/tests/test_arq_session.py +++ b/tests/test_arq_session.py @@ -111,7 +111,7 @@ class TestARQSession(unittest.TestCase): def testARQSessionLargePayload(self): # set Packet Error Rate (PER) / frame loss probability - self.loss_probability = 10 + self.loss_probability = 50 self.establishChannels() params = {