diff --git a/tnc/data_handler.py b/tnc/data_handler.py index e3288e12..3f33c6cb 100644 --- a/tnc/data_handler.py +++ b/tnc/data_handler.py @@ -744,7 +744,7 @@ class DATA: self.set_listening_modes(False, True, self.mode_list[self.speed_level]) # Create and send ACK frame - self.log.info("[TNC] ARQ | RX | SENDING ACK") + self.log.info("[TNC] ARQ | RX | SENDING ACK", finished=static.ARQ_SECONDS_UNTIL_FINISH, bytesperminute=static.ARQ_BYTES_PER_MINUTE) self.send_burst_ack_frame(snr) # Reset n retries per burst counter @@ -765,6 +765,7 @@ class DATA: bytesperminute=static.ARQ_BYTES_PER_MINUTE, mycallsign=str(self.mycallsign, 'UTF-8'), dxcallsign=str(self.dxcallsign, 'UTF-8'), + finished=static.ARQ_SECONDS_UNTIL_FINISH, ) elif rx_n_frame_of_burst == rx_n_frames_per_burst - 1: @@ -983,7 +984,7 @@ class DATA: ) - self.log.info("[TNC] ARQ | RX | Sending NACK") + self.log.info("[TNC] ARQ | RX | Sending NACK", finished=static.ARQ_SECONDS_UNTIL_FINISH, bytesperminute=static.ARQ_BYTES_PER_MINUTE) self.send_burst_nack_frame(snr) # Update arq_session timestamp @@ -1024,6 +1025,7 @@ class DATA: uuid=self.transmission_uuid, percent=static.ARQ_TRANSMISSION_PERCENT, bytesperminute=static.ARQ_BYTES_PER_MINUTE, + finished=static.ARQ_SECONDS_UNTIL_FINISH, mycallsign=str(self.mycallsign, 'UTF-8'), dxcallsign=str(self.dxcallsign, 'UTF-8'), ) @@ -1218,6 +1220,7 @@ class DATA: uuid=self.transmission_uuid, percent=static.ARQ_TRANSMISSION_PERCENT, bytesperminute=static.ARQ_BYTES_PER_MINUTE, + finished=static.ARQ_SECONDS_UNTIL_FINISH, irs_snr=self.burst_ack_snr, mycallsign=str(self.mycallsign, 'UTF-8'), dxcallsign=str(self.dxcallsign, 'UTF-8'), @@ -1243,6 +1246,7 @@ class DATA: uuid=self.transmission_uuid, percent=static.ARQ_TRANSMISSION_PERCENT, bytesperminute=static.ARQ_BYTES_PER_MINUTE, + finished=static.ARQ_SECONDS_UNTIL_FINISH, mycallsign=str(self.mycallsign, 'UTF-8'), dxcallsign=str(self.dxcallsign, 'UTF-8'), ) @@ -2778,10 +2782,12 @@ class DATA: static.ARQ_BYTES_PER_MINUTE = int( receivedbytes / (transmissiontime / 60) ) + static.ARQ_SECONDS_UNTIL_FINISH = int(((static.TOTAL_BYTES - receivedbytes) / static.ARQ_BYTES_PER_MINUTE) * 60) else: static.ARQ_BITS_PER_SECOND = 0 static.ARQ_BYTES_PER_MINUTE = 0 + static.ARQ_SECONDS_UNTIL_FINISH = 0 except Exception as err: self.log.error(f"[TNC] calculate_transfer_rate_rx: Exception: {err}") static.ARQ_TRANSMISSION_PERCENT = 0.0 @@ -2805,6 +2811,7 @@ class DATA: static.ARQ_BITS_PER_SECOND = 0 static.ARQ_TRANSMISSION_PERCENT = 0 static.TOTAL_BYTES = 0 + static.ARQ_SECONDS_UNTIL_FINISH = 0 def calculate_transfer_rate_tx( self, tx_start_of_transmission: float, sentbytes: int, tx_buffer_length: int @@ -2831,10 +2838,11 @@ class DATA: if sentbytes > 0: static.ARQ_BITS_PER_SECOND = int((sentbytes * 8) / transmissiontime) static.ARQ_BYTES_PER_MINUTE = int(sentbytes / (transmissiontime / 60)) - + static.ARQ_SECONDS_UNTIL_FINISH = int(((tx_buffer_length - sentbytes) / static.ARQ_BYTES_PER_MINUTE) * 60 ) else: static.ARQ_BITS_PER_SECOND = 0 static.ARQ_BYTES_PER_MINUTE = 0 + static.ARQ_SECONDS_UNTIL_FINISH = 0 except Exception as err: self.log.error(f"[TNC] calculate_transfer_rate_tx: Exception: {err}") diff --git a/tnc/sock.py b/tnc/sock.py index 4cc0099b..69dad8fd 100644 --- a/tnc/sock.py +++ b/tnc/sock.py @@ -625,6 +625,7 @@ def send_tnc_state(): "rx_msg_buffer_length": str(len(static.RX_MSG_BUFFER)), "arq_bytes_per_minute": str(static.ARQ_BYTES_PER_MINUTE), "arq_bytes_per_minute_burst": str(static.ARQ_BYTES_PER_MINUTE_BURST), + "arq_seconds_until_finish": str(static.ARQ_SECONDS_UNTIL_FINISH), "arq_compression_factor": str(static.ARQ_COMPRESSION_FACTOR), "arq_transmission_percent": str(static.ARQ_TRANSMISSION_PERCENT), "total_bytes": str(static.TOTAL_BYTES), diff --git a/tnc/static.py b/tnc/static.py index c94dd163..e1105937 100644 --- a/tnc/static.py +++ b/tnc/static.py @@ -101,6 +101,7 @@ ARQ_BITS_PER_SECOND_BURST: int = 0 ARQ_BITS_PER_SECOND: int = 0 ARQ_COMPRESSION_FACTOR: int = 0 ARQ_TRANSMISSION_PERCENT: int = 0 +ARQ_SECONDS_UNTIL_FINISH: int = 0 ARQ_SPEED_LEVEL: int = 0 TOTAL_BYTES: int = 0 # set save to folder state for allowing downloading files to local file system