ARQ variable updates

This commit is contained in:
DJ2LS 2020-12-26 11:02:14 +01:00 committed by GitHub
parent 6d4d5bd39d
commit 5ef6e199ac
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
4 changed files with 33 additions and 23 deletions

View file

@ -1,4 +1,4 @@
#!/usr/bin/env python3
#!/usr/bin/python3
# -*- coding: utf-8 -*-
"""
Created on Tue Dec 22 16:58:45 2020
@ -20,9 +20,9 @@ modem = modem.RF()
#--------------------------------------------GET PARAMETER INPUTS
parser = argparse.ArgumentParser(description='Simons TEST TNC')
parser.add_argument('--rx', dest="audio_input_device", default=False, help="sound card for listening.", type=int)
parser.add_argument('--tx', dest="audio_output_device", default=False, help="sound card for transmitting.", type=int)
parser.add_argument('--port', dest="socket_port", default=9000, help="Set the port, the socket is listening on.", type=int)
parser.add_argument('--rx', dest="audio_input_device", default=0, help="sound card for listening.", type=int)
parser.add_argument('--tx', dest="audio_output_device", default=0, help="sound card for transmitting.", type=int)
parser.add_argument('--port', dest="socket_port", default=3000, help="Set the port, the socket is listening on.", type=int)
args = parser.parse_args()
@ -39,6 +39,7 @@ audio_receiver_thread.start()
#--------------------------------------------START SERVER
print(static.PORT)
try:
server = socketserver.TCPServer((static.HOST, static.PORT), tnc.TCPRequestHandler)
server.serve_forever()

View file

@ -48,7 +48,7 @@ class RF():
libname = pathlib.Path().absolute() / "libcodec2.so"
libname = pathlib.Path().absolute() / "codec2/build_linux/src/libcodec2.so"
self.c_lib = ctypes.CDLL(libname)
@ -189,7 +189,7 @@ class RF():
print("ACK FRAME ERKANNT!!!!")
static.ACK_TIMEOUT = 1
static.ACK_RECEIVED = 1
static.ACK_RETRY = 3
static.TX_RETRIES = 3
#----------------------------------------------------
#return bytes(bytes_out[:-2])

View file

@ -31,7 +31,14 @@ AUDIO_CHANNELS = 1
#TNC DEFAULTS
TX_RETRIES = 3
# ----ARQ STOP AND WAIT
TX_N_MAX_RETRIES = 3
TX_N_RETRIES = 3
ACK_RECEIVED = 0
ACK_TIMEOUT = 0
ACK_RETRY = 3
ACK_TIMEOUT_SECONDS = 10.0
# ------- TX BUFFER
TX_BUFFER_SIZE = 0

32
tnc.py
View file

@ -58,13 +58,13 @@ class TCPRequestHandler(socketserver.BaseRequestHandler):
data_out = data[1]
TXbuffer = [data_out[i:i+24] for i in range(0, len(data_out), 24)] # split incomming bytes to size of 30bytes, create a list and loop through it
TXbuffer_length = len(TXbuffer)
for i in range(TXbuffer_length): # LOOP THROUGH DATA LIST
static.TX_BUFFER = [data_out[i:i+24] for i in range(0, len(data_out), 24)] # split incomming bytes to size of 30bytes, create a list and loop through it
static.TX_BUFFER_SIZE = len(static.TX_BUFFER)
for frame in range(static.TX_BUFFER_SIZE): # LOOP THROUGH DATA LIST
#--------------------------------------------- BUILD DATA PACKET
ack = b'REQACK'
data_to_transmit = ack + TXbuffer[i]
data_to_transmit = ack + static.TX_BUFFER[frame]
print(len(data_to_transmit))
@ -72,31 +72,33 @@ class TCPRequestHandler(socketserver.BaseRequestHandler):
#---------------------------------------------------------------
static.ACK_RETRY = 1
for static.ACK_RETRY in range(static.TX_RETRIES):
print("RETRY: " + str(static.ACK_RETRY))
print("SENDING")
#static.TX_N_RETRIES = 1
for static.TX_N_RETRIES in range(static.TX_N_MAX_RETRIES):
#print("RETRY: " + str(static.TX_N_RETRIES))
#print("SENDING")
static.ACK_RECEIVED = 0
daten = modem.Transmit(data_to_transmit)
# --------------------------- START TIMER
# --------------------------- START TIMER ---> IF TIMEOUT REACHED, ACK_TIMEOUT = 1
static.ACK_TIMEOUT = 0
timer = threading.Timer(10.0, other.timeout)
timer = threading.Timer(static.ACK_TIMEOUT_SECONDS, other.timeout)
timer.start()
# --------------------------- WHILE TIMEOUT NOT REACHED LISTEN
# --------------------------- WHILE TIMEOUT NOT REACHED AND NO ACK RECEIVED --> LISTEN
print("WAITING FOR ACK")
while static.ACK_TIMEOUT == 0 and static.ACK_RECEIVED == 0:
static.MODEM_RECEIVE = True
#--------------- BREAK LOOP IF ACK HAS BEEN RECEIVED
if static.ACK_RECEIVED == 1:
static.ACK_RETRY = 3
static.TX_N_RETRIES = 3
break
if static.ACK_RECEIVED ==1:
#-------------------------BREAK TX BUFFER LOOP IF ALL PACKETS HAVE BEEN SENT
if frame == static.TX_BUFFER_SIZE:
break
print("GESCHAFFT!")
print("NO MORE FRAMES IN TX QUEUE!")