From 29345a77975d158e798b1063c94fc434f7abeeab Mon Sep 17 00:00:00 2001 From: DJ2LS <75909252+DJ2LS@users.noreply.github.com> Date: Wed, 28 Jul 2021 18:43:41 +0200 Subject: [PATCH] added SNR to heard stations --- tnc/data_handler.py | 2 +- tnc/helpers.py | 8 ++++---- tnc/modem.py | 10 +++++++--- tnc/sock.py | 30 ++++++++++++++++++++---------- 4 files changed, 32 insertions(+), 18 deletions(-) diff --git a/tnc/data_handler.py b/tnc/data_handler.py index a94fe2c2..84219186 100644 --- a/tnc/data_handler.py +++ b/tnc/data_handler.py @@ -660,7 +660,7 @@ def received_ping(data_in): static.DXCALLSIGN_CRC8 = bytes(data_in[2:3]).rstrip(b'\x00') static.DXCALLSIGN = bytes(data_in[3:9]).rstrip(b'\x00') - helpers.add_to_heard_stations(static.DXCALLSIGN,static.DXGRID, 'PING') + helpers.add_to_heard_stations(static.DXCALLSIGN,static.DXGRID, 'PING', static.SNR) logging.info("PING [" + str(static.MYCALLSIGN, 'utf-8') + "] <<< [" + str(static.DXCALLSIGN, 'utf-8') + "] [SNR:" + str(static.SNR) + "]") ping_frame = bytearray(14) diff --git a/tnc/helpers.py b/tnc/helpers.py index de273f66..f4e3b547 100644 --- a/tnc/helpers.py +++ b/tnc/helpers.py @@ -149,20 +149,20 @@ def calculate_transfer_rate(): -def add_to_heard_stations(dxcallsign,dxgrid, datatype): +def add_to_heard_stations(dxcallsign,dxgrid, datatype, snr): # check if buffer empty if len(static.HEARD_STATIONS) == 0: - static.HEARD_STATIONS.append([dxcallsign,dxgrid, int(time.time()), datatype]) + static.HEARD_STATIONS.append([dxcallsign,dxgrid, int(time.time()), datatype, snr]) # if not, we search and update else: for i in range(0, len(static.HEARD_STATIONS)): # update callsign with new timestamp if static.HEARD_STATIONS[i].count(dxcallsign) > 0: - static.HEARD_STATIONS[i] = [dxcallsign,dxgrid, int(time.time()), datatype] + static.HEARD_STATIONS[i] = [dxcallsign,dxgrid, int(time.time()), datatype, snr] break # insert if nothing found if i == len(static.HEARD_STATIONS) - 1: - static.HEARD_STATIONS.append([dxcallsign,dxgrid, int(time.time()), datatype]) + static.HEARD_STATIONS.append([dxcallsign,dxgrid, int(time.time()), datatype, snr]) break diff --git a/tnc/modem.py b/tnc/modem.py index b9d72a70..99439d9b 100644 --- a/tnc/modem.py +++ b/tnc/modem.py @@ -137,7 +137,6 @@ class RF(): if state: static.PTT_STATE = True self.my_rig.set_ptt(self.hamlib_ptt_type, 1) - ptt_togle_timeout = time.time() + 0.1 while time.time() < ptt_togle_timeout: pass @@ -228,8 +227,13 @@ class RF(): static.CHANNEL_STATE = 'SENDING_SIGNALLING' self.ptt_and_wait(False) - static.CHANNEL_STATE = state_before_transmit - + ## we have a problem with the receiving state + ##static.CHANNEL_STATE = state_before_transmit + if state_before_transmit != 'RECEIVING_DATA': + static.CHANNEL_STATE = 'RECEIVING_SIGNALLING' + else: + static.CHANNEL_STATE = state_before_transmit + self.c_lib.freedv_close(freedv) # -------------------------------------------------------------------------------------------------------- diff --git a/tnc/sock.py b/tnc/sock.py index e49b7352..cff4239b 100644 --- a/tnc/sock.py +++ b/tnc/sock.py @@ -138,23 +138,33 @@ class CMDTCPRequestHandler(socketserver.BaseRequestHandler): asyncio.run(data_handler.arq_open_data_channel()) - if received_json["type"] == 'ARQ' and received_json["command"] == "DATA":# and static.ARQ_READY_FOR_DATA == True: # and static.ARQ_STATE == 'CONNECTED' : + if received_json["type"] == 'ARQ' and received_json["command"] == "sendFile":# and static.ARQ_READY_FOR_DATA == True: # and static.ARQ_STATE == 'CONNECTED' : static.TNC_STATE = 'BUSY' #on a new transmission we reset the timer static.ARQ_START_OF_TRANSMISSION = int(time.time()) - + dxcallsign = received_json["dxcallsign"] + mode = int(received_json["mode"]) + n_frames = int(received_json["n_frames"]) + filename = received_json["filename"] + filetype = received_json["filetype"] + data = received_json["data"] + checksum = received_json["checksum"] + + print(mode) + print(n_frames) + + static.DXCALLSIGN = bytes(dxcallsign, 'utf-8') static.DXCALLSIGN_CRC8 = helpers.get_crc_8(static.DXCALLSIGN) - - data_out = bytes(received_json["data"], 'utf-8') + dataframe = '{"filename": "'+ filename + '", "filetype" : "' + filetype + '", "data" : "' + data + '", "checksum" : "' + checksum + '"}' + #data_out = bytes(received_json["data"], 'utf-8') + data_out = bytes(dataframe, 'utf-8') - mode = int(received_json["mode"]) - - n_frames = int(received_json["n_frames"]) + #ARQ_DATA_THREAD = threading.Thread(target=data_handler.arq_transmit, args=[data_out], name="ARQ_DATA") #ARQ_DATA_THREAD.start() @@ -251,12 +261,12 @@ class CMDTCPRequestHandler(socketserver.BaseRequestHandler): if received_json["type"] == 'GET' and received_json["command"] == 'HEARD_STATIONS': - print("HEARD STATIONS COMMAND!") + # print("HEARD STATIONS COMMAND!") data = {"COMMAND": "HEARD_STATIONS", "STATIONS" : []} for i in range(0, len(static.HEARD_STATIONS)): - data["STATIONS"].append({"DXCALLSIGN": str(static.HEARD_STATIONS[i][0], 'utf-8'),"DXGRID": str(static.HEARD_STATIONS[i][1], 'utf-8'), "TIMESTAMP": static.HEARD_STATIONS[i][2], "DATATYPE": static.HEARD_STATIONS[i][3]}) - + data["STATIONS"].append({"DXCALLSIGN": str(static.HEARD_STATIONS[i][0], 'utf-8'),"DXGRID": str(static.HEARD_STATIONS[i][1], 'utf-8'), "TIMESTAMP": static.HEARD_STATIONS[i][2], "DATATYPE": static.HEARD_STATIONS[i][3], "SNR": static.HEARD_STATIONS[i][4]}) + # print(static.HEARD_STATIONS[i][1]) jsondata = json.dumps(data) self.request.sendall(bytes(jsondata, encoding))