mirror of
https://github.com/DJ2LS/FreeDATA
synced 2024-05-14 08:04:33 +00:00
WIP ARQ - changed ack/nack transmitting so its as before
This commit is contained in:
parent
8a731e7604
commit
b07e96302a
1 changed files with 6 additions and 5 deletions
|
@ -69,7 +69,8 @@ class ARQSessionIRS(arq_session.ARQSession):
|
||||||
def transmit_and_wait(self, frame, timeout, mode):
|
def transmit_and_wait(self, frame, timeout, mode):
|
||||||
self.transmit_frame(frame, mode)
|
self.transmit_frame(frame, mode)
|
||||||
self.log(f"Waiting {timeout} seconds...")
|
self.log(f"Waiting {timeout} seconds...")
|
||||||
if timeout and not self.event_frame_received.wait(timeout):
|
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 self.state in [self.STATE_BURST_REPLY_SENT, self.STATE_INFO_ACK_SENT]:
|
if self.state in [self.STATE_BURST_REPLY_SENT, self.STATE_INFO_ACK_SENT]:
|
||||||
self.transmitted_acks = 0
|
self.transmitted_acks = 0
|
||||||
self.calibrate_speed_settings()
|
self.calibrate_speed_settings()
|
||||||
|
@ -112,7 +113,7 @@ class ARQSessionIRS(arq_session.ARQSession):
|
||||||
self.calibrate_speed_settings()
|
self.calibrate_speed_settings()
|
||||||
self.set_decode_mode()
|
self.set_decode_mode()
|
||||||
nack = self.frame_factory.build_arq_burst_ack(self.id, self.received_bytes, self.speed_level, self.frames_per_burst, self.snr[0])
|
nack = self.frame_factory.build_arq_burst_ack(self.id, self.received_bytes, self.speed_level, self.frames_per_burst, self.snr[0])
|
||||||
self.launch_transmit_and_wait(nack, None, mode=FREEDV_MODE.signalling)
|
self.transmit_frame(nack, mode=FREEDV_MODE.signalling)
|
||||||
|
|
||||||
def process_incoming_data(self, frame):
|
def process_incoming_data(self, frame):
|
||||||
if frame['offset'] != self.received_bytes:
|
if frame['offset'] != self.received_bytes:
|
||||||
|
@ -144,13 +145,13 @@ class ARQSessionIRS(arq_session.ARQSession):
|
||||||
if not self.all_data_received():
|
if not self.all_data_received():
|
||||||
# increase ack counter
|
# increase ack counter
|
||||||
self.transmitted_acks += 1
|
self.transmitted_acks += 1
|
||||||
self.launch_transmit_and_wait(ack, None, mode=FREEDV_MODE.signalling)
|
self.transmit_frame(ack, mode=FREEDV_MODE.signalling)
|
||||||
self.set_state(self.STATE_BURST_REPLY_SENT)
|
self.set_state(self.STATE_BURST_REPLY_SENT)
|
||||||
return
|
return
|
||||||
|
|
||||||
if self.final_crc_check():
|
if self.final_crc_check():
|
||||||
self.log("All data received successfully!")
|
self.log("All data received successfully!")
|
||||||
self.launch_transmit_and_wait(ack, None, mode=FREEDV_MODE.signalling)
|
self.transmit_frame(ack, mode=FREEDV_MODE.signalling)
|
||||||
self.set_state(self.STATE_ENDED)
|
self.set_state(self.STATE_ENDED)
|
||||||
|
|
||||||
else:
|
else:
|
||||||
|
|
Loading…
Reference in a new issue