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 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()

View file

@ -12,6 +12,7 @@ import pathlib
import pyaudio
import audioop
import sys
import logging
import static
@ -21,8 +22,7 @@ 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)
@ -65,11 +60,6 @@ class RF():
# MODULATION-OUT OBJECT
def ModulationOut(self):
@ -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])

35
tnc.py
View file

@ -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")