mirror of
https://github.com/DJ2LS/FreeDATA
synced 2024-05-14 10:04:33 +02:00
bug fix closes #78 and network optimization
This commit is contained in:
parent
1bbd2692db
commit
2d18767fe6
|
@ -164,31 +164,32 @@ class CMDTCPRequestHandler(socketserver.BaseRequestHandler):
|
|||
else:
|
||||
data["DAEMON_STATE"].append({"STATUS": "stopped"})
|
||||
|
||||
# UPDATE LIST OF AUDIO DEVICES
|
||||
p = pyaudio.PyAudio()
|
||||
for i in range(0, p.get_device_count()):
|
||||
# UPDATE LIST OF AUDIO DEVICES
|
||||
p = pyaudio.PyAudio()
|
||||
for i in range(0, p.get_device_count()):
|
||||
|
||||
maxInputChannels = p.get_device_info_by_host_api_device_index(
|
||||
0, i).get('maxInputChannels')
|
||||
maxOutputChannels = p.get_device_info_by_host_api_device_index(
|
||||
0, i).get('maxOutputChannels')
|
||||
name = p.get_device_info_by_host_api_device_index(
|
||||
0, i).get('name')
|
||||
maxInputChannels = p.get_device_info_by_host_api_device_index(
|
||||
0, i).get('maxInputChannels')
|
||||
maxOutputChannels = p.get_device_info_by_host_api_device_index(
|
||||
0, i).get('maxOutputChannels')
|
||||
name = p.get_device_info_by_host_api_device_index(
|
||||
0, i).get('name')
|
||||
|
||||
if maxInputChannels > 0:
|
||||
data["INPUT_DEVICES"].append(
|
||||
{"ID": i, "NAME": str(name)})
|
||||
if maxOutputChannels > 0:
|
||||
data["OUTPUT_DEVICES"].append(
|
||||
{"ID": i, "NAME": str(name)})
|
||||
if maxInputChannels > 0:
|
||||
data["INPUT_DEVICES"].append(
|
||||
{"ID": i, "NAME": str(name)})
|
||||
if maxOutputChannels > 0:
|
||||
data["OUTPUT_DEVICES"].append(
|
||||
{"ID": i, "NAME": str(name)})
|
||||
p.terminate()
|
||||
|
||||
# UPDATE LIST OF SERIAL DEVICES
|
||||
ports = serial.tools.list_ports.comports()
|
||||
for port, desc, hwid in ports:
|
||||
data["SERIAL_DEVICES"].append(
|
||||
{"PORT": str(port), "DESCRIPTION": str(desc)})
|
||||
|
||||
# UPDATE LIST OF SERIAL DEVICES
|
||||
ports = serial.tools.list_ports.comports()
|
||||
for port, desc, hwid in ports:
|
||||
data["SERIAL_DEVICES"].append(
|
||||
{"PORT": str(port), "DESCRIPTION": str(desc)})
|
||||
|
||||
# print(data)
|
||||
|
||||
jsondata = json.dumps(data)
|
||||
self.request.sendall(bytes(jsondata, encoding))
|
||||
|
||||
|
|
|
@ -113,7 +113,7 @@ def arq_data_received(data_in, bytes_per_frame):
|
|||
|
||||
# set the start of transmission - 7 seconds,
|
||||
# which is more or less the transfer time for the first frame
|
||||
RX_START_OF_TRANSMISSION = time.time() - 7
|
||||
RX_START_OF_TRANSMISSION = time.time() - 6
|
||||
|
||||
for i in range(0, RX_N_FRAMES_PER_DATA_FRAME + 1):
|
||||
static.RX_FRAME_BUFFER.insert(i, None)
|
||||
|
@ -501,7 +501,6 @@ def arq_transmit(data_out, mode, n_frames_per_burst):
|
|||
elif BURST_ACK_RECEIVED and static.ARQ_STATE == 'DATA':
|
||||
# -----------IF ACK RECEIVED, INCREMENT ITERATOR FOR MAIN LOOP TO PROCEED WITH NEXT FRAMES/BURST
|
||||
TX_N_SENT_FRAMES = TX_N_SENT_FRAMES + TX_N_FRAMES_PER_BURST
|
||||
|
||||
calculate_transfer_rate_tx(TX_N_SENT_FRAMES, TX_PAYLOAD_PER_ARQ_FRAME, TX_START_OF_TRANSMISSION, TX_BUFFER_SIZE)
|
||||
logging.info("ARQ | RX | ACK [" + str(static.ARQ_BITS_PER_SECOND) + " bit/s | " + str(static.ARQ_BYTES_PER_MINUTE) + " B/min]")
|
||||
# lets wait a little bit before we are processing the next frame
|
||||
|
@ -532,6 +531,7 @@ def arq_transmit(data_out, mode, n_frames_per_burst):
|
|||
|
||||
# -------------------------BREAK TX BUFFER LOOP IF ALL PACKETS HAVE BEEN SENT AND WE GOT A FRAME ACK
|
||||
elif TX_N_SENT_FRAMES == TX_BUFFER_SIZE and DATA_FRAME_ACK_RECEIVED:
|
||||
print(TX_N_SENT_FRAMES)
|
||||
calculate_transfer_rate_tx(TX_N_SENT_FRAMES, TX_PAYLOAD_PER_ARQ_FRAME, TX_START_OF_TRANSMISSION, TX_BUFFER_SIZE)
|
||||
logging.log(25, "ARQ | RX | FRAME ACK! - DATA TRANSMITTED! [" + str(static.ARQ_BITS_PER_SECOND) + " bit/s | " + str(static.ARQ_BYTES_PER_MINUTE) + " B/min]")
|
||||
break
|
||||
|
@ -832,7 +832,7 @@ def calculate_transfer_rate_rx(rx_n_frames_per_data_frame, rx_n_frame_of_data_fr
|
|||
static.ARQ_TRANSMISSION_PERCENT = int((rx_n_frame_of_data_frame / rx_n_frames_per_data_frame) * 100)
|
||||
|
||||
transmissiontime = time.time() - rx_start_of_transmission
|
||||
receivedbytes = rx_n_frame_of_data_frame * rx_payload_per_arq_frame
|
||||
receivedbytes = rx_n_frame_of_data_frame * (rx_payload_per_arq_frame-6) # 6 = length of ARQ header
|
||||
|
||||
static.ARQ_BITS_PER_SECOND = int((receivedbytes*8) / transmissiontime)
|
||||
static.ARQ_BYTES_PER_MINUTE = int((receivedbytes) / (transmissiontime/60))
|
||||
|
@ -855,7 +855,7 @@ def calculate_transfer_rate_tx(tx_n_sent_frames, tx_payload_per_arq_frame, tx_st
|
|||
|
||||
transmissiontime = time.time() - tx_start_of_transmission
|
||||
if tx_n_sent_frames > 0:
|
||||
sendbytes = tx_n_sent_frames * tx_payload_per_arq_frame
|
||||
sendbytes = tx_n_sent_frames * (tx_payload_per_arq_frame-6) #6 = length of ARQ header
|
||||
|
||||
static.ARQ_BITS_PER_SECOND = int((sendbytes*8) / transmissiontime)
|
||||
static.ARQ_BYTES_PER_MINUTE = int((sendbytes) / (transmissiontime/60))
|
||||
|
|
|
@ -705,11 +705,17 @@ class RF():
|
|||
|
||||
try:
|
||||
fftarray = np.fft.rfft(audio_data)
|
||||
|
||||
|
||||
|
||||
# set value 0 to 1 to avoid division by zero
|
||||
fftarray[fftarray == 0] = 1
|
||||
dfft = 10.*np.log10(abs(fftarray))
|
||||
# round data to decrease size
|
||||
dfft = np.around(dfft, 1)
|
||||
dfftlist = dfft.tolist()
|
||||
|
||||
|
||||
# send fft only if receiving
|
||||
if static.CHANNEL_STATE == 'RECEIVING_SIGNALLING' or static.CHANNEL_STATE == 'RECEIVING_DATA':
|
||||
#static.FFT = dfftlist[20:100]
|
||||
|
|
|
@ -203,11 +203,15 @@ class ThreadedTCPRequestHandler(socketserver.BaseRequestHandler):
|
|||
"EOF": "EOF",
|
||||
}
|
||||
|
||||
# we want to transmit scatter data only once to reduce network traffic
|
||||
static.SCATTER = []
|
||||
|
||||
for i in range(0, len(static.HEARD_STATIONS)):
|
||||
output["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]})
|
||||
|
||||
try:
|
||||
jsondata = json.dumps(output)
|
||||
|
||||
except ValueError as e:
|
||||
print(e)
|
||||
|
||||
|
|
Loading…
Reference in a new issue