mirror of
https://github.com/DJ2LS/FreeDATA
synced 2024-05-14 08:04:33 +00:00
improved logging
This commit is contained in:
parent
88c883f85b
commit
9a964b77f0
3 changed files with 42 additions and 38 deletions
10
main.py
10
main.py
|
@ -10,6 +10,7 @@ Created on Tue Dec 22 16:58:45 2020
|
|||
import socketserver
|
||||
import threading
|
||||
import argparse
|
||||
import logging
|
||||
|
||||
import tnc
|
||||
import static
|
||||
|
@ -32,14 +33,21 @@ static.AUDIO_OUTPUT_DEVICE = args.audio_output_device
|
|||
static.PORT = args.socket_port
|
||||
|
||||
|
||||
#-------------------------------------------- DEFINE LOGGER
|
||||
logger = logging.getLogger()
|
||||
logger.setLevel("INFO") #DEBUG>INFO>WARNING>ERROR>CRITICAL
|
||||
|
||||
|
||||
|
||||
#--------------------------------------------START AUDIO THREAD
|
||||
logging.info("STARTING AUDIO THREAD")
|
||||
static.MODEM_RECEIVE = True
|
||||
audio_receiver_thread = threading.Thread(target=modem.Receive, name="Audio Listener")
|
||||
audio_receiver_thread.start()
|
||||
|
||||
|
||||
#--------------------------------------------START SERVER
|
||||
print(static.PORT)
|
||||
logging.info("STARTING TCP/IP SOCKET ON PORT " + str(static.PORT))
|
||||
try:
|
||||
server = socketserver.TCPServer((static.HOST, static.PORT), tnc.TCPRequestHandler)
|
||||
server.serve_forever()
|
||||
|
|
33
modem.py
33
modem.py
|
@ -12,6 +12,7 @@ import pathlib
|
|||
import pyaudio
|
||||
import audioop
|
||||
import sys
|
||||
import logging
|
||||
|
||||
import static
|
||||
|
||||
|
@ -22,7 +23,6 @@ class RF():
|
|||
def __init__(self):
|
||||
|
||||
|
||||
|
||||
self.p = pyaudio.PyAudio()
|
||||
self.defaultFrames = static.DEFAULT_FRAMES
|
||||
self.audio_input_device = static.AUDIO_INPUT_DEVICE
|
||||
|
@ -37,17 +37,12 @@ class RF():
|
|||
self.stream = None
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
self.data_input = "stdin"
|
||||
#self.data_input = "stdin"
|
||||
self.data_input = "audio"
|
||||
self.data_output = "stdout"
|
||||
#self.data_output = "stdout"
|
||||
self.data_output = "audio"
|
||||
|
||||
|
||||
|
||||
libname = pathlib.Path().absolute() / "codec2/build_linux/src/libcodec2.so"
|
||||
self.c_lib = ctypes.CDLL(libname)
|
||||
|
||||
|
@ -66,11 +61,6 @@ class RF():
|
|||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
# MODULATION-OUT OBJECT
|
||||
def ModulationOut(self):
|
||||
return (c_short * self.n_tx_modem_samples)
|
||||
|
@ -116,7 +106,7 @@ class RF():
|
|||
sys.stdout.flush() # flushing stdout
|
||||
|
||||
if self.data_output == "audio":
|
||||
print(self.audio_channels)
|
||||
#print(self.audio_channels)
|
||||
stream_tx = self.p.open(format=self.format,
|
||||
channels=self.audio_channels,
|
||||
rate=self.audio_sample_rate,
|
||||
|
@ -177,19 +167,20 @@ class RF():
|
|||
|
||||
# CHECK IF FRAME CONTAINS ACK------------------------
|
||||
if bytes(bytes_out[:6]) == b'REQACK':
|
||||
print("REQACK FRAME ERKANNT!!!!")
|
||||
print("ADD TO SEND BUFFER")
|
||||
|
||||
logging.info("RX | ACK REQUESTED!")
|
||||
time.sleep(5)
|
||||
print("SEND ACK FRAME")
|
||||
logging.info("TX | SENDING ACK FRAME")
|
||||
self.Transmit(b'ACK')
|
||||
#----------------------------------------------------
|
||||
|
||||
# CHECK IF FRAME CONTAINS ACK------------------------
|
||||
if bytes(bytes_out[:3]) == b'ACK':
|
||||
print("ACK FRAME ERKANNT!!!!")
|
||||
static.ACK_TIMEOUT = 1
|
||||
static.ACK_RECEIVED = 1
|
||||
static.TX_RETRIES = 3
|
||||
|
||||
logging.info("TX | ACK RCVD!")
|
||||
static.ACK_TIMEOUT = 1 #Force timer to stop waiting
|
||||
static.ACK_RECEIVED = 1 #Force data loops of TNC to stop and continue with next frame
|
||||
|
||||
#----------------------------------------------------
|
||||
|
||||
#return bytes(bytes_out[:-2])
|
||||
|
|
33
tnc.py
33
tnc.py
|
@ -4,14 +4,18 @@
|
|||
|
||||
import socketserver
|
||||
import threading
|
||||
import logging
|
||||
|
||||
|
||||
import modem
|
||||
import static
|
||||
#from other import *
|
||||
import other
|
||||
|
||||
modem = modem.RF()
|
||||
|
||||
|
||||
|
||||
class TCPRequestHandler(socketserver.BaseRequestHandler):
|
||||
|
||||
def handle(self):
|
||||
|
@ -25,11 +29,11 @@ class TCPRequestHandler(socketserver.BaseRequestHandler):
|
|||
# static.MODEM_RECEIVE = False
|
||||
|
||||
|
||||
print("{} wrote:".format(self.client_address[0]))
|
||||
print(self.data)
|
||||
####print("{} wrote:".format(self.client_address[0]))
|
||||
####print(self.data)
|
||||
|
||||
# just send back the same data, but upper-cased
|
||||
self.request.sendall(self.data.upper())
|
||||
#####self.request.sendall(self.data.upper())
|
||||
|
||||
#if self.data == b'TEST':
|
||||
#logging.info("DER TEST KLAPPT! HIER KOMMT DER COMMAND PARSER HIN!")
|
||||
|
@ -38,13 +42,13 @@ class TCPRequestHandler(socketserver.BaseRequestHandler):
|
|||
|
||||
if self.data.startswith(b'BC:'):
|
||||
static.MODEM_RECEIVE = True ####### FALSE....
|
||||
print(static.MODEM_RECEIVE)
|
||||
#print(static.MODEM_RECEIVE)
|
||||
|
||||
data = self.data.split(b'BC:')
|
||||
daten = modem.Transmit(data[1])
|
||||
|
||||
static.MODEM_RECEIVE = True
|
||||
print(static.MODEM_RECEIVE)
|
||||
#print(static.MODEM_RECEIVE)
|
||||
|
||||
|
||||
|
||||
|
@ -52,7 +56,7 @@ class TCPRequestHandler(socketserver.BaseRequestHandler):
|
|||
|
||||
if self.data.startswith(b'ACK:'):
|
||||
static.MODEM_RECEIVE = True ############## FALSE
|
||||
print(static.MODEM_RECEIVE)
|
||||
#print(static.MODEM_RECEIVE)
|
||||
|
||||
data = self.data.split(b'ACK:')
|
||||
data_out = data[1]
|
||||
|
@ -60,22 +64,21 @@ class TCPRequestHandler(socketserver.BaseRequestHandler):
|
|||
|
||||
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)
|
||||
logging.info("TX | TOTAL PAYLOAD BYTES/FRAMES TO SEND: " + str(len(data_out)) + " / " + str(static.TX_BUFFER_SIZE))
|
||||
for frame in range(static.TX_BUFFER_SIZE): # LOOP THROUGH DATA LIST
|
||||
|
||||
#--------------------------------------------- BUILD DATA PACKET
|
||||
ack = b'REQACK'
|
||||
data_to_transmit = ack + static.TX_BUFFER[frame]
|
||||
|
||||
|
||||
print(len(data_to_transmit))
|
||||
print(data_to_transmit)
|
||||
logging.info("TX | SENDING FRAME " + str(frame+1) + " / " + str(static.TX_BUFFER_SIZE))
|
||||
#---------------------------------------------------------------
|
||||
|
||||
|
||||
#static.TX_N_RETRIES = 1
|
||||
#--------------------------------------------- ATTEMPTS TO SEND A MESSAGE IF ACK FAILS
|
||||
for static.TX_N_RETRIES in range(static.TX_N_MAX_RETRIES):
|
||||
#print("RETRY: " + str(static.TX_N_RETRIES))
|
||||
#print("SENDING")
|
||||
|
||||
# --------------------------- SEND FRAME
|
||||
static.ACK_RECEIVED = 0
|
||||
daten = modem.Transmit(data_to_transmit)
|
||||
|
||||
|
@ -85,7 +88,8 @@ class TCPRequestHandler(socketserver.BaseRequestHandler):
|
|||
timer.start()
|
||||
|
||||
# --------------------------- WHILE TIMEOUT NOT REACHED AND NO ACK RECEIVED --> LISTEN
|
||||
print("WAITING FOR ACK")
|
||||
logging.info("TX | WAITING FOR ACK")
|
||||
|
||||
while static.ACK_TIMEOUT == 0 and static.ACK_RECEIVED == 0:
|
||||
static.MODEM_RECEIVE = True
|
||||
|
||||
|
@ -99,6 +103,7 @@ class TCPRequestHandler(socketserver.BaseRequestHandler):
|
|||
if frame == static.TX_BUFFER_SIZE:
|
||||
break
|
||||
|
||||
print("NO MORE FRAMES IN TX QUEUE!")
|
||||
logging.info("TX | BUFFER EMPTY")
|
||||
|
||||
|
||||
|
Loading…
Reference in a new issue