WIP ARQ - adjustments to timeout

This commit is contained in:
DJ2LS 2023-12-16 17:52:38 +01:00
parent 6b7df9d0a6
commit b2a83568e1

View file

@ -68,14 +68,13 @@ class ARQSessionIRS(arq_session.ARQSession):
def transmit_and_wait(self, frame, timeout, mode):
self.transmit_frame(frame, mode)
self.log(f"Waiting {timeout} seconds...")
if not self.event_frame_received.wait(timeout):
# use case: data burst got lost, we want to send a NACK with updated speed level
if timeout and not self.event_frame_received.wait(timeout):
if self.state in [self.STATE_BURST_REPLY_SENT, self.STATE_INFO_ACK_SENT]:
self.transmitted_acks = 0
self.calibrate_speed_settings()
self.send_burst_nack()
return
self.log("Timeout waiting for ISS. Session failed.")
self.set_state(self.STATE_FAILED)
@ -112,7 +111,7 @@ class ARQSessionIRS(arq_session.ARQSession):
self.calibrate_speed_settings()
self.set_modem_decode_modes(self.speed_level)
nack = self.frame_factory.build_arq_burst_ack(self.id, self.received_bytes, self.speed_level, self.frames_per_burst, self.snr[0])
self.transmit_and_wait(nack)
self.launch_transmit_and_wait(nack, None, mode=FREEDV_MODE.signalling)
def set_modem_decode_modes(self, speed_level):
@ -161,13 +160,13 @@ class ARQSessionIRS(arq_session.ARQSession):
if not self.all_data_received():
# increase ack counter
self.transmitted_acks += 1
self.transmit_and_wait(ack)
self.launch_transmit_and_wait(ack, None, mode=FREEDV_MODE.signalling)
self.set_state(self.STATE_BURST_REPLY_SENT)
return
if self.final_crc_check():
self.log("All data received successfully!")
self.transmit_frame(ack)
self.launch_transmit_and_wait(ack, None, mode=FREEDV_MODE.signalling)
self.set_state(self.STATE_ENDED)
else: