mirror of
https://github.com/DJ2LS/FreeDATA
synced 2024-05-14 08:04:33 +00:00
ARQ variable updates
This commit is contained in:
parent
6d4d5bd39d
commit
5ef6e199ac
9
main.py
9
main.py
|
@ -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()
|
||||
|
|
4
modem.py
4
modem.py
|
@ -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])
|
||||
|
|
11
static.py
11
static.py
|
@ -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
32
tnc.py
|
@ -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!")
|
||||
|
||||
|
Loading…
Reference in a new issue