change buffer size via gui, some small buffer improvements

This commit is contained in:
dj2ls 2022-09-05 11:54:50 +02:00
parent 42560fda6f
commit 863444c010
9 changed files with 56 additions and 18 deletions

View file

@ -217,7 +217,7 @@ exports.getDaemonState = function() {
// START TNC
// ` `== multi line string
exports.startTNC = function(mycall, mygrid, rx_audio, tx_audio, radiocontrol, devicename, deviceport, pttprotocol, pttport, serialspeed, data_bits, stop_bits, handshake, rigctld_ip, rigctld_port, enable_fft, enable_scatter, low_bandwidth_mode, tuning_range_fmin, tuning_range_fmax, enable_fsk, tx_audio_level, respond_to_cq) {
exports.startTNC = function(mycall, mygrid, rx_audio, tx_audio, radiocontrol, devicename, deviceport, pttprotocol, pttport, serialspeed, data_bits, stop_bits, handshake, rigctld_ip, rigctld_port, enable_fft, enable_scatter, low_bandwidth_mode, tuning_range_fmin, tuning_range_fmax, enable_fsk, tx_audio_level, respond_to_cq, rx_buffer_size) {
var json_command = JSON.stringify({
type: 'set',
command: 'start_tnc',
@ -244,7 +244,8 @@ exports.startTNC = function(mycall, mygrid, rx_audio, tx_audio, radiocontrol, de
tuning_range_fmin : tuning_range_fmin,
tuning_range_fmax : tuning_range_fmax,
tx_audio_level : tx_audio_level,
respond_to_cq : respond_to_cq
respond_to_cq : respond_to_cq,
rx_buffer_size : rx_buffer_size
}]
})

View file

@ -77,7 +77,8 @@ const configDefaultSettings = '{\
"received_files_folder" : "None",\
"tuning_range_fmin" : "-50.0",\
"tuning_range_fmax" : "50.0",\
"respond_to_cq" : "True" \
"respond_to_cq" : "True",\
"rx_buffer_size" : "16" \
}';
if (!fs.existsSync(configPath)) {

View file

@ -117,9 +117,7 @@ document.getElementById('openReceivedFilesFolder').addEventListener('click', ()
//document.getElementById("respondCQSwitch").value = config.respond_to_cq;
document.getElementById("received_files_folder").value = config.received_files_folder;
if(config.enable_scatter == 'True'){
document.getElementById("scatterSwitch").checked = true;
} else {
@ -175,8 +173,10 @@ document.getElementById('openReceivedFilesFolder').addEventListener('click', ()
// Update TX Audio Level
document.getElementById("audioLevelTXvalue").innerHTML = parseInt(config.tx_audio_level);
document.getElementById("audioLevelTX").value = parseInt(config.tx_audio_level);
// Update RX Buffer Size
document.getElementById("rx_buffer_size").value = config.rx_buffer_size;
if (config.spectrum == 'waterfall') {
document.getElementById("waterfall-scatter-switch1").checked = true;
document.getElementById("waterfall-scatter-switch2").checked = false;
@ -590,8 +590,13 @@ document.getElementById('openReceivedFilesFolder').addEventListener('click', ()
fs.writeFileSync(configPath, JSON.stringify(config, null, 2));
});
// rx buffer size selector clicked
document.getElementById("rx_buffer_size").addEventListener("click", () => {
var rx_buffer_size = document.getElementById("rx_buffer_size").value;
config.rx_buffer_size = rx_buffer_size;
fs.writeFileSync(configPath, JSON.stringify(config, null, 2));
});
//screen size
@ -710,7 +715,7 @@ document.getElementById('openReceivedFilesFolder').addEventListener('click', ()
}
var tx_audio_level = document.getElementById("audioLevelTX").value;
var rx_buffer_size = document.getElementById("rx_buffer_size").value;
config.radiocontrol = radiocontrol;
config.mycall = callsign_ssid;
@ -735,6 +740,7 @@ document.getElementById('openReceivedFilesFolder').addEventListener('click', ()
config.low_bandwidth_mode = low_bandwidth_mode;
config.tx_audio_level = tx_audio_level;
config.respond_to_cq = respond_to_cq;
config.rx_buffer_size = rx_buffer_size;
fs.writeFileSync(configPath, JSON.stringify(config, null, 2));
@ -753,7 +759,7 @@ document.getElementById('openReceivedFilesFolder').addEventListener('click', ()
*/
daemon.startTNC(callsign_ssid, mygrid, rx_audio, tx_audio, radiocontrol, deviceid, deviceport, pttprotocol, pttport, serialspeed, data_bits, stop_bits, handshake, rigctld_ip, rigctld_port, enable_fft, enable_scatter, low_bandwidth_mode, tuning_range_fmin, tuning_range_fmax, enable_fsk, tx_audio_level, respond_to_cq);
daemon.startTNC(callsign_ssid, mygrid, rx_audio, tx_audio, radiocontrol, deviceid, deviceport, pttprotocol, pttport, serialspeed, data_bits, stop_bits, handshake, rigctld_ip, rigctld_port, enable_fft, enable_scatter, low_bandwidth_mode, tuning_range_fmin, tuning_range_fmax, enable_fsk, tx_audio_level, respond_to_cq, rx_buffer_size);
})

View file

@ -1275,6 +1275,24 @@
</div>
</label>
</div>
<div class="input-group input-group-sm mb-1">
<label class="input-group-text w-50">rx buffer size</label>
<label class="input-group-text bg-white w-50">
<select class="form-select form-select-sm" id="rx_buffer_size">
<option value="1">1</option>
<option value="2">2</option>
<option value="4">4</option>
<option value="8">8</option>
<option value="16">16</option>
<option value="32">32</option>
<option value="64">64</option>
<option value="128">128</option>
<option value="256">256</option>
<option value="512">512</option>
<option value="1024">1024</option>
</select>
</label>
</div>
</div>
</div>
</div>

View file

@ -32,7 +32,7 @@ import structlog
import ujson as json
# signal handler for closing aplication
# signal handler for closing application
def signal_handler(sig, frame):
"""
Signal handler for closing the network socket on app exit
@ -151,6 +151,8 @@ class DAEMON:
# data[21] enable FSK
# data[22] tx-audio-level
# data[23] respond_to_cq
# data[24] rx_buffer_size
if data[0] == "STARTTNC":
self.log.warning("[DMN] Starting TNC", rig=data[5], port=data[6])
@ -237,6 +239,9 @@ class DAEMON:
if data[23] == "True":
options.append("--qrv")
options.append("--rx-buffer-size")
options.append(data[24])
# Try running tnc from binary, else run from source
# This helps running the tnc in a developer environment
try:

View file

@ -698,11 +698,11 @@ class DATA:
# Re-code data_frame in base64, UTF-8 for JSON UI communication.
base64_data = base64.b64encode(data_frame).decode("UTF-8")
# check if RX_BUFFER isn't full
if not RX_BUFFER.full():
# check if RX_BUFFER isn't full
pass
# make sure we have always the correct buffer size
RX_BUFFER.maxsize = static.RX_BUFFER_SIZE
else:
# if full, free space by getting an item
# if full, free space by getting an item
self.log.info(
"[TNC] ARQ | RX | RX_BUFFER FULL - dropping old data",
@ -712,6 +712,11 @@ class DATA:
RX_BUFFER.get()
# add item to RX_BUFFER
self.log.info(
"[TNC] ARQ | RX | saving data to rx buffer",
buffer_size=RX_BUFFER.qsize() + 1,
maxsize=RX_BUFFER.maxsize
)
RX_BUFFER.put(
[
self.transmission_uuid,

View file

@ -227,7 +227,7 @@ if __name__ == "__main__":
PARSER.add_argument(
"--rx-buffer-size",
dest="rx_buffer_size",
default=20,
default=16,
help="Set the maximum size of rx buffer.",
type=int,
)

View file

@ -607,6 +607,7 @@ def process_daemon_commands(data):
tuning_range_fmax = str(received_json["parameter"][0]["tuning_range_fmax"])
tx_audio_level = str(received_json["parameter"][0]["tx_audio_level"])
respond_to_cq = str(received_json["parameter"][0]["respond_to_cq"])
rx_buffer_size = str(received_json["parameter"][0]["rx_buffer_size"])
# print some debugging parameters
for item in received_json["parameter"][0]:
@ -641,6 +642,7 @@ def process_daemon_commands(data):
enable_fsk,
tx_audio_level,
respond_to_cq,
rx_buffer_size,
]
)
command_response("start_tnc", True)

View file

@ -112,7 +112,7 @@ BEACON_PAUSE: bool = False
RX_MSG_BUFFER: list = []
RX_BURST_BUFFER: list = []
RX_FRAME_BUFFER: bytes = b""
RX_BUFFER_SIZE: int = 20
RX_BUFFER_SIZE: int = 16
# ------- HEARD STATIONS BUFFER
HEARD_STATIONS: list = []