improved logging

This commit is contained in:
DJ2LS 2020-12-26 19:27:09 +01:00 committed by GitHub
parent 88c883f85b
commit 9a964b77f0
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
3 changed files with 42 additions and 38 deletions

10
main.py
View file

@ -10,6 +10,7 @@ Created on Tue Dec 22 16:58:45 2020
import socketserver import socketserver
import threading import threading
import argparse import argparse
import logging
import tnc import tnc
import static import static
@ -32,14 +33,21 @@ static.AUDIO_OUTPUT_DEVICE = args.audio_output_device
static.PORT = args.socket_port static.PORT = args.socket_port
#-------------------------------------------- DEFINE LOGGER
logger = logging.getLogger()
logger.setLevel("INFO") #DEBUG>INFO>WARNING>ERROR>CRITICAL
#--------------------------------------------START AUDIO THREAD #--------------------------------------------START AUDIO THREAD
logging.info("STARTING AUDIO THREAD")
static.MODEM_RECEIVE = True static.MODEM_RECEIVE = True
audio_receiver_thread = threading.Thread(target=modem.Receive, name="Audio Listener") audio_receiver_thread = threading.Thread(target=modem.Receive, name="Audio Listener")
audio_receiver_thread.start() audio_receiver_thread.start()
#--------------------------------------------START SERVER #--------------------------------------------START SERVER
print(static.PORT) logging.info("STARTING TCP/IP SOCKET ON PORT " + str(static.PORT))
try: try:
server = socketserver.TCPServer((static.HOST, static.PORT), tnc.TCPRequestHandler) server = socketserver.TCPServer((static.HOST, static.PORT), tnc.TCPRequestHandler)
server.serve_forever() server.serve_forever()

View file

@ -12,6 +12,7 @@ import pathlib
import pyaudio import pyaudio
import audioop import audioop
import sys import sys
import logging
import static import static
@ -21,8 +22,7 @@ class RF():
def __init__(self): def __init__(self):
self.p = pyaudio.PyAudio() self.p = pyaudio.PyAudio()
self.defaultFrames = static.DEFAULT_FRAMES self.defaultFrames = static.DEFAULT_FRAMES
self.audio_input_device = static.AUDIO_INPUT_DEVICE self.audio_input_device = static.AUDIO_INPUT_DEVICE
@ -37,17 +37,12 @@ class RF():
self.stream = None self.stream = None
#self.data_input = "stdin"
self.data_input = "stdin"
self.data_input = "audio" self.data_input = "audio"
self.data_output = "stdout" #self.data_output = "stdout"
self.data_output = "audio" self.data_output = "audio"
libname = pathlib.Path().absolute() / "codec2/build_linux/src/libcodec2.so" libname = pathlib.Path().absolute() / "codec2/build_linux/src/libcodec2.so"
self.c_lib = ctypes.CDLL(libname) self.c_lib = ctypes.CDLL(libname)
@ -65,11 +60,6 @@ class RF():
# MODULATION-OUT OBJECT # MODULATION-OUT OBJECT
def ModulationOut(self): def ModulationOut(self):
@ -116,7 +106,7 @@ class RF():
sys.stdout.flush() # flushing stdout sys.stdout.flush() # flushing stdout
if self.data_output == "audio": if self.data_output == "audio":
print(self.audio_channels) #print(self.audio_channels)
stream_tx = self.p.open(format=self.format, stream_tx = self.p.open(format=self.format,
channels=self.audio_channels, channels=self.audio_channels,
rate=self.audio_sample_rate, rate=self.audio_sample_rate,
@ -177,19 +167,20 @@ class RF():
# CHECK IF FRAME CONTAINS ACK------------------------ # CHECK IF FRAME CONTAINS ACK------------------------
if bytes(bytes_out[:6]) == b'REQACK': if bytes(bytes_out[:6]) == b'REQACK':
print("REQACK FRAME ERKANNT!!!!")
print("ADD TO SEND BUFFER") logging.info("RX | ACK REQUESTED!")
time.sleep(5) time.sleep(5)
print("SEND ACK FRAME") logging.info("TX | SENDING ACK FRAME")
self.Transmit(b'ACK') self.Transmit(b'ACK')
#---------------------------------------------------- #----------------------------------------------------
# CHECK IF FRAME CONTAINS ACK------------------------ # CHECK IF FRAME CONTAINS ACK------------------------
if bytes(bytes_out[:3]) == b'ACK': if bytes(bytes_out[:3]) == b'ACK':
print("ACK FRAME ERKANNT!!!!")
static.ACK_TIMEOUT = 1 logging.info("TX | ACK RCVD!")
static.ACK_RECEIVED = 1 static.ACK_TIMEOUT = 1 #Force timer to stop waiting
static.TX_RETRIES = 3 static.ACK_RECEIVED = 1 #Force data loops of TNC to stop and continue with next frame
#---------------------------------------------------- #----------------------------------------------------
#return bytes(bytes_out[:-2]) #return bytes(bytes_out[:-2])

35
tnc.py
View file

@ -4,14 +4,18 @@
import socketserver import socketserver
import threading import threading
import logging
import modem import modem
import static import static
#from other import * #from other import *
import other import other
modem = modem.RF() modem = modem.RF()
class TCPRequestHandler(socketserver.BaseRequestHandler): class TCPRequestHandler(socketserver.BaseRequestHandler):
def handle(self): def handle(self):
@ -25,11 +29,11 @@ class TCPRequestHandler(socketserver.BaseRequestHandler):
# static.MODEM_RECEIVE = False # static.MODEM_RECEIVE = False
print("{} wrote:".format(self.client_address[0])) ####print("{} wrote:".format(self.client_address[0]))
print(self.data) ####print(self.data)
# just send back the same data, but upper-cased # 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': #if self.data == b'TEST':
#logging.info("DER TEST KLAPPT! HIER KOMMT DER COMMAND PARSER HIN!") #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:'): if self.data.startswith(b'BC:'):
static.MODEM_RECEIVE = True ####### FALSE.... static.MODEM_RECEIVE = True ####### FALSE....
print(static.MODEM_RECEIVE) #print(static.MODEM_RECEIVE)
data = self.data.split(b'BC:') data = self.data.split(b'BC:')
daten = modem.Transmit(data[1]) daten = modem.Transmit(data[1])
static.MODEM_RECEIVE = True 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:'): if self.data.startswith(b'ACK:'):
static.MODEM_RECEIVE = True ############## FALSE static.MODEM_RECEIVE = True ############## FALSE
print(static.MODEM_RECEIVE) #print(static.MODEM_RECEIVE)
data = self.data.split(b'ACK:') data = self.data.split(b'ACK:')
data_out = data[1] 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 = [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) 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 for frame in range(static.TX_BUFFER_SIZE): # LOOP THROUGH DATA LIST
#--------------------------------------------- BUILD DATA PACKET #--------------------------------------------- BUILD DATA PACKET
ack = b'REQACK' ack = b'REQACK'
data_to_transmit = ack + static.TX_BUFFER[frame] data_to_transmit = ack + static.TX_BUFFER[frame]
logging.info("TX | SENDING FRAME " + str(frame+1) + " / " + str(static.TX_BUFFER_SIZE))
print(len(data_to_transmit))
print(data_to_transmit)
#--------------------------------------------------------------- #---------------------------------------------------------------
#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): 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 static.ACK_RECEIVED = 0
daten = modem.Transmit(data_to_transmit) daten = modem.Transmit(data_to_transmit)
@ -85,7 +88,8 @@ class TCPRequestHandler(socketserver.BaseRequestHandler):
timer.start() timer.start()
# --------------------------- WHILE TIMEOUT NOT REACHED AND NO ACK RECEIVED --> LISTEN # --------------------------- 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: while static.ACK_TIMEOUT == 0 and static.ACK_RECEIVED == 0:
static.MODEM_RECEIVE = True static.MODEM_RECEIVE = True
@ -99,6 +103,7 @@ class TCPRequestHandler(socketserver.BaseRequestHandler):
if frame == static.TX_BUFFER_SIZE: if frame == static.TX_BUFFER_SIZE:
break break
print("NO MORE FRAMES IN TX QUEUE!") logging.info("TX | BUFFER EMPTY")