From 065971471a3466a3f52dbfc81c002b96886d291f Mon Sep 17 00:00:00 2001 From: DJ2LS <75909252+DJ2LS@users.noreply.github.com> Date: Wed, 18 Jan 2023 22:18:58 +0100 Subject: [PATCH 01/41] simple restart warning --- gui/src/index.html | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/gui/src/index.html b/gui/src/index.html index b76f107b..54522772 100644 --- a/gui/src/index.html +++ b/gui/src/index.html @@ -1162,6 +1162,11 @@ + + diff --git a/tnc/config.ini b/tnc/config.ini index f7ac5422..90403e7d 100644 --- a/tnc/config.ini +++ b/tnc/config.ini @@ -19,6 +19,7 @@ txaudiolevel = 120 radiocontrol = rigctld rigctld_ip = 127.0.0.1 rigctld_port = 4532 +tx_delay = 50 [TNC] #tnc settings diff --git a/tnc/daemon.py b/tnc/daemon.py index c7b5b5bc..9cd52f9c 100755 --- a/tnc/daemon.py +++ b/tnc/daemon.py @@ -158,6 +158,7 @@ class DAEMON: # data[24] rx_buffer_size # data[25] explorer # data[26] ssid_list + # data[27] tx_delay if data[0] == "STARTTNC": self.log.warning("[DMN] Starting TNC", rig=data[5], port=data[6]) @@ -259,6 +260,9 @@ class DAEMON: options.append("--ssid") options.append(ssid_list) + options.append("--tx-delay") + options.append(data[27]) + # safe data to config file config.write_entire_config(data) @@ -369,7 +373,7 @@ class DAEMON: rigctld_ip=rigctld_ip, rigctld_port=rigctld_port, ) - + hamlib.set_tx_delay(static.TX_DELAY) # hamlib_version = rig.hamlib_version hamlib.set_ptt(True) diff --git a/tnc/main.py b/tnc/main.py index 6bca64dc..868431c1 100755 --- a/tnc/main.py +++ b/tnc/main.py @@ -277,6 +277,13 @@ if __name__ == "__main__": action="store_true", help="Enable sending tnc data to https://explorer.freedata.app", ) + PARSER.add_argument( + "--tx-delay", + dest="tx_delay_ms", + default=50, + help="Set the amount of time (ms) to wait after activating PTT to send audio", + type=int, + ) ARGS = PARSER.parse_args() # set save to folder state for allowing downloading files to local file system @@ -333,6 +340,7 @@ if __name__ == "__main__": static.RESPOND_TO_CQ = ARGS.enable_respond_to_cq static.RX_BUFFER_SIZE = ARGS.rx_buffer_size static.ENABLE_EXPLORER = ARGS.enable_explorer + static.TX_DELAY = ARGS.tx_delay_ms except Exception as e: log.error("[DMN] Error reading config file", exception=e) @@ -386,6 +394,7 @@ if __name__ == "__main__": static.RESPOND_TO_CQ = config['TNC']['qrv'] in ["True", "true", True] static.RX_BUFFER_SIZE = int(config['TNC']['rxbuffersize']) static.ENABLE_EXPLORER = config['TNC']['explorer'] in ["True", "true", True] + static.TX_DELAY = int(config['RADIO']['tx_delay']) except KeyError as e: log.warning("[CFG] Error reading config file near", key=str(e)) diff --git a/tnc/modem.py b/tnc/modem.py index 297344bf..26df7ca6 100644 --- a/tnc/modem.py +++ b/tnc/modem.py @@ -236,7 +236,8 @@ class RF: rigctld_ip=static.HAMLIB_RIGCTLD_IP, rigctld_port=static.HAMLIB_RIGCTLD_PORT, ) - + self.hamlib.set_tx_delay(static.TX_DELAY) + # --------------------------------------------START DECODER THREAD if static.ENABLE_FFT: fft_thread = threading.Thread( diff --git a/tnc/rigctld.py b/tnc/rigctld.py index f7ddfec9..0e505e85 100644 --- a/tnc/rigctld.py +++ b/tnc/rigctld.py @@ -12,7 +12,7 @@ import threading # set global hamlib version hamlib_version = 0 - +tx_delay = 50 class radio: """rigctld (hamlib) communication class""" @@ -89,6 +89,10 @@ class radio: ) return False + def set_tx_delay(self,ms): + self.tx_delay=ms + self.log.debug("Set tx delay to (ms) " + str(ms)) + def ptt_connect(self): """Connect to rigctld instance""" while True: @@ -263,7 +267,9 @@ class radio: try: if state: self.send_ptt_command(b"T 1", False) + time.sleep(tx_delay/1000) else: + #time.sleep(tx_delay/2000) self.send_ptt_command(b"T 0", False) return state except Exception: diff --git a/tnc/sock.py b/tnc/sock.py index ac14c592..b646d0e5 100644 --- a/tnc/sock.py +++ b/tnc/sock.py @@ -665,6 +665,7 @@ def send_tnc_state(): "hamlib_status": static.HAMLIB_STATUS, "listen": str(static.LISTEN), "audio_recording": str(static.AUDIO_RECORD), + "tx_delay": str(static.TX_DELAY), } # add heard stations to heard stations object @@ -774,6 +775,7 @@ def process_daemon_commands(data): respond_to_cq = str(received_json["parameter"][0]["respond_to_cq"]) rx_buffer_size = str(received_json["parameter"][0]["rx_buffer_size"]) enable_explorer = str(received_json["parameter"][0]["enable_explorer"]) + tx_delay = str(received_json["parameter"][0]["tx_delay"]) try: # convert ssid list to python list @@ -821,6 +823,7 @@ def process_daemon_commands(data): rx_buffer_size, enable_explorer, ssid_list, + tx_delay, ] ) command_response("start_tnc", True) diff --git a/tnc/static.py b/tnc/static.py index af52a46b..6edd07bd 100644 --- a/tnc/static.py +++ b/tnc/static.py @@ -85,6 +85,7 @@ AUDIO_OUTPUT_DEVICE: int = -2 AUDIO_RECORD: bool = False AUDIO_RECORD_FILE = '' BUFFER_OVERFLOW_COUNTER: list = [0, 0, 0, 0, 0] +TX_DELAY: int = 100 AUDIO_DBFS: int = 0 FFT: list = [0] From fc60094606bb81d76c1c816e431c4686e377d391 Mon Sep 17 00:00:00 2001 From: Mashintime Date: Sun, 22 Jan 2023 23:42:35 -0500 Subject: [PATCH 25/41] Attempt to fix ctest errors --- tnc/daemon.py | 2 +- tnc/rigctld.py | 6 +++--- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/tnc/daemon.py b/tnc/daemon.py index 9cd52f9c..0a459d3f 100755 --- a/tnc/daemon.py +++ b/tnc/daemon.py @@ -373,7 +373,7 @@ class DAEMON: rigctld_ip=rigctld_ip, rigctld_port=rigctld_port, ) - hamlib.set_tx_delay(static.TX_DELAY) + hamlib.set_tx_delay(self,static.TX_DELAY) # hamlib_version = rig.hamlib_version hamlib.set_ptt(True) diff --git a/tnc/rigctld.py b/tnc/rigctld.py index 0e505e85..5022e2d3 100644 --- a/tnc/rigctld.py +++ b/tnc/rigctld.py @@ -16,7 +16,7 @@ tx_delay = 50 class radio: """rigctld (hamlib) communication class""" - + log = structlog.get_logger("radio (rigctld)") def __init__(self, hostname="localhost", port=4532, poll_rate=5, timeout=5): @@ -90,8 +90,8 @@ class radio: return False def set_tx_delay(self,ms): - self.tx_delay=ms - self.log.debug("Set tx delay to (ms) " + str(ms)) + tx_delay=ms + self.log.debug("Set tx delay to (ms) " + str(tx_delay)) def ptt_connect(self): """Connect to rigctld instance""" From 8f8ed0f67c36bb9664ecccdb3941270c6d83fc1f Mon Sep 17 00:00:00 2001 From: Mashintime Date: Mon, 23 Jan 2023 18:23:15 -0500 Subject: [PATCH 26/41] Revert "Attempt to fix ctest errors" This reverts commit fc60094606bb81d76c1c816e431c4686e377d391. --- tnc/daemon.py | 2 +- tnc/rigctld.py | 6 +++--- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/tnc/daemon.py b/tnc/daemon.py index 0a459d3f..9cd52f9c 100755 --- a/tnc/daemon.py +++ b/tnc/daemon.py @@ -373,7 +373,7 @@ class DAEMON: rigctld_ip=rigctld_ip, rigctld_port=rigctld_port, ) - hamlib.set_tx_delay(self,static.TX_DELAY) + hamlib.set_tx_delay(static.TX_DELAY) # hamlib_version = rig.hamlib_version hamlib.set_ptt(True) diff --git a/tnc/rigctld.py b/tnc/rigctld.py index 5022e2d3..0e505e85 100644 --- a/tnc/rigctld.py +++ b/tnc/rigctld.py @@ -16,7 +16,7 @@ tx_delay = 50 class radio: """rigctld (hamlib) communication class""" - + log = structlog.get_logger("radio (rigctld)") def __init__(self, hostname="localhost", port=4532, poll_rate=5, timeout=5): @@ -90,8 +90,8 @@ class radio: return False def set_tx_delay(self,ms): - tx_delay=ms - self.log.debug("Set tx delay to (ms) " + str(tx_delay)) + self.tx_delay=ms + self.log.debug("Set tx delay to (ms) " + str(ms)) def ptt_connect(self): """Connect to rigctld instance""" From 02dce8d0565f846c00b2c6f911ce7cffdd7796cd Mon Sep 17 00:00:00 2001 From: Mashintime Date: Mon, 23 Jan 2023 18:23:28 -0500 Subject: [PATCH 27/41] Revert "Add adjustable Tx delay" This reverts commit ad129bd11a4af91811c6e139d1af8c5595014b3e. --- gui/daemon.js | 5 ++--- gui/main.js | 3 +-- gui/preload-main.js | 21 ++------------------- gui/src/index.html | 6 ------ tnc/config.ini | 1 - tnc/daemon.py | 6 +----- tnc/main.py | 9 --------- tnc/modem.py | 3 +-- tnc/rigctld.py | 8 +------- tnc/sock.py | 3 --- tnc/static.py | 1 - 11 files changed, 8 insertions(+), 58 deletions(-) diff --git a/gui/daemon.js b/gui/daemon.js index e93b4cf1..1dd0694f 100644 --- a/gui/daemon.js +++ b/gui/daemon.js @@ -221,7 +221,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, rx_buffer_size, enable_explorer, tx_delay) { +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, enable_explorer) { var json_command = JSON.stringify({ type: 'set', command: 'start_tnc', @@ -250,8 +250,7 @@ exports.startTNC = function(mycall, mygrid, rx_audio, tx_audio, radiocontrol, de tx_audio_level : tx_audio_level, respond_to_cq : respond_to_cq, rx_buffer_size : rx_buffer_size, - enable_explorer : enable_explorer, - tx_delay : tx_delay, + enable_explorer : enable_explorer }] }) diff --git a/gui/main.js b/gui/main.js index b7ac357e..92b51dc6 100644 --- a/gui/main.js +++ b/gui/main.js @@ -93,8 +93,7 @@ const configDefaultSettings = '{\ "respond_to_cq" : "True",\ "rx_buffer_size" : "16", \ "enable_explorer" : "False", \ - "wftheme": 2, \ - "tx_delay": 50 \ + "wftheme": 2 \ }'; if (!fs.existsSync(configPath)) { diff --git a/gui/preload-main.js b/gui/preload-main.js index f6bef8ac..bf10da58 100644 --- a/gui/preload-main.js +++ b/gui/preload-main.js @@ -165,9 +165,6 @@ document.getElementById('openReceivedFilesFolder').addEventListener('click', () document.getElementById("tnc_adress").value = config.tnc_host; document.getElementById("tnc_port").value = config.tnc_port; - //Set tx_delay - document.getElementById("tx_delay").value = config.tx_delay; - callsign_and_ssid = config.mycall.split("-"); callsign = callsign_and_ssid[0]; ssid = callsign_and_ssid[1]; @@ -1141,17 +1138,6 @@ document.getElementById('hamlib_rigctld_stop').addEventListener('click', () => { fs.writeFileSync(configPath, JSON.stringify(config, null, 2)); }); - document.getElementById("tx_delay").addEventListener("change", () => { - var tx_delay = document.getElementById("tx_delay").value; - if (tx_delay == undefined || isNaN(tx_delay)) { - tx_delay=50; - document.getElementById("tx_delay").value=50; - //console.log("tx_delay is nan"); - } - config.tx_delay = tx_delay; - fs.writeFileSync(configPath, JSON.stringify(config, null, 2)); - }); - // Update channel selector changed document.getElementById("update_channel_selector").addEventListener("change", () => { config.update_channel = document.getElementById("update_channel_selector").value; @@ -1282,10 +1268,7 @@ document.getElementById('hamlib_rigctld_stop').addEventListener('click', () => { var tx_audio_level = document.getElementById("audioLevelTX").value; var rx_buffer_size = document.getElementById("rx_buffer_size").value; - var tx_delay = document.getElementById("tx_delay").value; - if (isNaN(tx_delay)) - tx_delay=0; config.radiocontrol = radiocontrol; @@ -1315,7 +1298,7 @@ document.getElementById('hamlib_rigctld_stop').addEventListener('click', () => { config.respond_to_cq = respond_to_cq; config.rx_buffer_size = rx_buffer_size; config.enable_explorer = enable_explorer; - config.tx_delay = tx_delay; + fs.writeFileSync(configPath, JSON.stringify(config, null, 2)); @@ -1333,7 +1316,7 @@ document.getElementById('hamlib_rigctld_stop').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, rx_buffer_size, enable_explorer,tx_delay); + 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, enable_explorer); }) diff --git a/gui/src/index.html b/gui/src/index.html index 5682c5ab..0a88e889 100644 --- a/gui/src/index.html +++ b/gui/src/index.html @@ -1315,12 +1315,6 @@ -
- - -
diff --git a/tnc/config.ini b/tnc/config.ini index 90403e7d..f7ac5422 100644 --- a/tnc/config.ini +++ b/tnc/config.ini @@ -19,7 +19,6 @@ txaudiolevel = 120 radiocontrol = rigctld rigctld_ip = 127.0.0.1 rigctld_port = 4532 -tx_delay = 50 [TNC] #tnc settings diff --git a/tnc/daemon.py b/tnc/daemon.py index 9cd52f9c..c7b5b5bc 100755 --- a/tnc/daemon.py +++ b/tnc/daemon.py @@ -158,7 +158,6 @@ class DAEMON: # data[24] rx_buffer_size # data[25] explorer # data[26] ssid_list - # data[27] tx_delay if data[0] == "STARTTNC": self.log.warning("[DMN] Starting TNC", rig=data[5], port=data[6]) @@ -260,9 +259,6 @@ class DAEMON: options.append("--ssid") options.append(ssid_list) - options.append("--tx-delay") - options.append(data[27]) - # safe data to config file config.write_entire_config(data) @@ -373,7 +369,7 @@ class DAEMON: rigctld_ip=rigctld_ip, rigctld_port=rigctld_port, ) - hamlib.set_tx_delay(static.TX_DELAY) + # hamlib_version = rig.hamlib_version hamlib.set_ptt(True) diff --git a/tnc/main.py b/tnc/main.py index 868431c1..6bca64dc 100755 --- a/tnc/main.py +++ b/tnc/main.py @@ -277,13 +277,6 @@ if __name__ == "__main__": action="store_true", help="Enable sending tnc data to https://explorer.freedata.app", ) - PARSER.add_argument( - "--tx-delay", - dest="tx_delay_ms", - default=50, - help="Set the amount of time (ms) to wait after activating PTT to send audio", - type=int, - ) ARGS = PARSER.parse_args() # set save to folder state for allowing downloading files to local file system @@ -340,7 +333,6 @@ if __name__ == "__main__": static.RESPOND_TO_CQ = ARGS.enable_respond_to_cq static.RX_BUFFER_SIZE = ARGS.rx_buffer_size static.ENABLE_EXPLORER = ARGS.enable_explorer - static.TX_DELAY = ARGS.tx_delay_ms except Exception as e: log.error("[DMN] Error reading config file", exception=e) @@ -394,7 +386,6 @@ if __name__ == "__main__": static.RESPOND_TO_CQ = config['TNC']['qrv'] in ["True", "true", True] static.RX_BUFFER_SIZE = int(config['TNC']['rxbuffersize']) static.ENABLE_EXPLORER = config['TNC']['explorer'] in ["True", "true", True] - static.TX_DELAY = int(config['RADIO']['tx_delay']) except KeyError as e: log.warning("[CFG] Error reading config file near", key=str(e)) diff --git a/tnc/modem.py b/tnc/modem.py index 26df7ca6..297344bf 100644 --- a/tnc/modem.py +++ b/tnc/modem.py @@ -236,8 +236,7 @@ class RF: rigctld_ip=static.HAMLIB_RIGCTLD_IP, rigctld_port=static.HAMLIB_RIGCTLD_PORT, ) - self.hamlib.set_tx_delay(static.TX_DELAY) - + # --------------------------------------------START DECODER THREAD if static.ENABLE_FFT: fft_thread = threading.Thread( diff --git a/tnc/rigctld.py b/tnc/rigctld.py index 0e505e85..f7ddfec9 100644 --- a/tnc/rigctld.py +++ b/tnc/rigctld.py @@ -12,7 +12,7 @@ import threading # set global hamlib version hamlib_version = 0 -tx_delay = 50 + class radio: """rigctld (hamlib) communication class""" @@ -89,10 +89,6 @@ class radio: ) return False - def set_tx_delay(self,ms): - self.tx_delay=ms - self.log.debug("Set tx delay to (ms) " + str(ms)) - def ptt_connect(self): """Connect to rigctld instance""" while True: @@ -267,9 +263,7 @@ class radio: try: if state: self.send_ptt_command(b"T 1", False) - time.sleep(tx_delay/1000) else: - #time.sleep(tx_delay/2000) self.send_ptt_command(b"T 0", False) return state except Exception: diff --git a/tnc/sock.py b/tnc/sock.py index b646d0e5..ac14c592 100644 --- a/tnc/sock.py +++ b/tnc/sock.py @@ -665,7 +665,6 @@ def send_tnc_state(): "hamlib_status": static.HAMLIB_STATUS, "listen": str(static.LISTEN), "audio_recording": str(static.AUDIO_RECORD), - "tx_delay": str(static.TX_DELAY), } # add heard stations to heard stations object @@ -775,7 +774,6 @@ def process_daemon_commands(data): respond_to_cq = str(received_json["parameter"][0]["respond_to_cq"]) rx_buffer_size = str(received_json["parameter"][0]["rx_buffer_size"]) enable_explorer = str(received_json["parameter"][0]["enable_explorer"]) - tx_delay = str(received_json["parameter"][0]["tx_delay"]) try: # convert ssid list to python list @@ -823,7 +821,6 @@ def process_daemon_commands(data): rx_buffer_size, enable_explorer, ssid_list, - tx_delay, ] ) command_response("start_tnc", True) diff --git a/tnc/static.py b/tnc/static.py index 6edd07bd..af52a46b 100644 --- a/tnc/static.py +++ b/tnc/static.py @@ -85,7 +85,6 @@ AUDIO_OUTPUT_DEVICE: int = -2 AUDIO_RECORD: bool = False AUDIO_RECORD_FILE = '' BUFFER_OVERFLOW_COUNTER: list = [0, 0, 0, 0, 0] -TX_DELAY: int = 100 AUDIO_DBFS: int = 0 FFT: list = [0] From caa3ba58aced76edc8d3456ce57b21e5a2aaf006 Mon Sep 17 00:00:00 2001 From: Mashintime Date: Mon, 23 Jan 2023 21:15:05 -0500 Subject: [PATCH 28/41] Hande missing compression factor in tnc-message --- gui/preload-main.js | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/gui/preload-main.js b/gui/preload-main.js index bf10da58..b2d210ea 100644 --- a/gui/preload-main.js +++ b/gui/preload-main.js @@ -1518,7 +1518,10 @@ ipcRenderer.on('action-update-transmission-status', (event, arg) => { document.getElementById("bytes_per_min").textContent = arq_bytes_per_minute; // SET BYTES PER MINUTE COMPRESSED - var arq_bytes_per_minute_compressed = Math.round(arq_bytes_per_minute * data.compression_factor); + var compress = data.compression_factor; + if (isNaN(compress)) + compress=0; + var arq_bytes_per_minute_compressed = Math.round(arq_bytes_per_minute * compress); document.getElementById("bytes_per_min_compressed").textContent = arq_bytes_per_minute_compressed; }); From 475550d84d95128be7b50a5ab3310651ad4d86e4 Mon Sep 17 00:00:00 2001 From: Mashintime Date: Tue, 24 Jan 2023 22:30:15 -0500 Subject: [PATCH 29/41] Clicking heard station would set last item --- gui/preload-main.js | 8 +++----- 1 file changed, 3 insertions(+), 5 deletions(-) diff --git a/gui/preload-main.js b/gui/preload-main.js index b2d210ea..e6ce39ea 100644 --- a/gui/preload-main.js +++ b/gui/preload-main.js @@ -1913,7 +1913,6 @@ var speedChartOptions = { for (i = 0; i < heardStationsLength; i++) { // first we update the PING window - //if (arg.stations[i]['dxcallsign'].split('-',2)[0] == document.getElementById("dxCall").value.split['-',2][0]) { if (arg.stations[i]['dxcallsign'] == document.getElementById("dxCall").value.toUpperCase()) { var dxGrid = arg.stations[i]['dxgrid']; var myGrid = document.getElementById("myGrid").value; @@ -1951,12 +1950,12 @@ var speedChartOptions = { frequencyText.innerText = arg.stations[i]['frequency']; frequency.appendChild(frequencyText); - var dxCall = document.createElement("td"); var dxCallText = document.createElement('span'); dxCallText.innerText = arg.stations[i]['dxcallsign']; - row.addEventListener("click", function(e) { - document.getElementById("dxCall").value = dxCallText.innerText; + let dxCallTextCall = dxCallText.innerText; + row.addEventListener("click", function() { + document.getElementById("dxCall").value = dxCallTextCall; }); dxCall.appendChild(dxCallText); @@ -1993,7 +1992,6 @@ var speedChartOptions = { if (dataTypeText.innerText == 'CQ CQ CQ') { row.classList.add("table-success"); - } if (dataTypeText.innerText == 'DATA-C') { From 4ac088f56a11ce11c0858e4cf8ee190f6bc6c0e9 Mon Sep 17 00:00:00 2001 From: Mashintime Date: Tue, 24 Jan 2023 22:35:58 -0500 Subject: [PATCH 30/41] Slow heard stations updates --- gui/preload-main.js | 11 +++++++++++ 1 file changed, 11 insertions(+) diff --git a/gui/preload-main.js b/gui/preload-main.js index e6ce39ea..9bd21325 100644 --- a/gui/preload-main.js +++ b/gui/preload-main.js @@ -1526,6 +1526,8 @@ ipcRenderer.on('action-update-transmission-status', (event, arg) => { }); +var slowRollTable=4; + ipcRenderer.on('action-update-tnc-state', (event, arg) => { // update FFT if (typeof(arg.fft) !== 'undefined') { @@ -1900,6 +1902,15 @@ var speedChartOptions = { document.getElementById("total_bytes").textContent = total_bytes; + //Ensure heard station table is last so we can return if we don't want to update it + //Only update heard stations every 5 iterations + //Allows for single click event to work more reliabily to populate dxcall textbox + //Should also save some CPU + slowRollTable++; + if (slowRollTable!=5) + return; + slowRollTable=0; + // UPDATE HEARD STATIONS var tbl = document.getElementById("heardstations"); document.getElementById("heardstations").innerHTML = ''; From 5d569c60f7ebd8f86d19552e4c677573e8f3650a Mon Sep 17 00:00:00 2001 From: DJ2LS <75909252+DJ2LS@users.noreply.github.com> Date: Wed, 25 Jan 2023 15:57:52 +0100 Subject: [PATCH 31/41] gpu calcualtion for dbfs --- gui/src/index.html | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/gui/src/index.html b/gui/src/index.html index 0a88e889..0b75c42f 100644 --- a/gui/src/index.html +++ b/gui/src/index.html @@ -781,7 +781,7 @@
-
+

dBFS

From 69a44520a274bf9f8b4ce3a795fbe825614fdc8c Mon Sep 17 00:00:00 2001 From: DJ2LS <75909252+DJ2LS@users.noreply.github.com> Date: Wed, 25 Jan 2023 16:07:40 +0100 Subject: [PATCH 32/41] force gpu usage --- gui/src/index.html | 4 ++-- gui/src/styles.css | 14 +++++++++++++- 2 files changed, 15 insertions(+), 3 deletions(-) diff --git a/gui/src/index.html b/gui/src/index.html index 0b75c42f..9981adf2 100644 --- a/gui/src/index.html +++ b/gui/src/index.html @@ -781,7 +781,7 @@
-
+

dBFS

@@ -1124,7 +1124,7 @@
-
+

---

diff --git a/gui/src/styles.css b/gui/src/styles.css index ee9e47a2..276ab1d2 100644 --- a/gui/src/styles.css +++ b/gui/src/styles.css @@ -3,6 +3,7 @@ body { padding-right: 0px !important; overflow-y: hidden !important; overflow-x: hidden !important; + } /*Progress bars with centered text*/ @@ -65,4 +66,15 @@ th { .picker { border-radius: 10px: -} \ No newline at end of file +} + +/* force gpu usage +https://stackoverflow.com/questions/13176746/css-keyframe-animation-cpu-usage-is-high-should-it-be-this-way/13293044#13293044 +*/ + +.force-gpu { + transform: translateZ(0); + -webkit-transform: translateZ(0); + -ms-transform: translateZ(0); + will-change: transform; +} From 23c947dbb402dc7f220f8bffb37b874a28561c39 Mon Sep 17 00:00:00 2001 From: Mashintime Date: Wed, 25 Jan 2023 22:03:46 -0500 Subject: [PATCH 33/41] Ensure gui works with compress in ls-arq PR --- gui/preload-main.js | 12 ++++++++++-- 1 file changed, 10 insertions(+), 2 deletions(-) diff --git a/gui/preload-main.js b/gui/preload-main.js index 9bd21325..e2624a76 100644 --- a/gui/preload-main.js +++ b/gui/preload-main.js @@ -1518,9 +1518,17 @@ ipcRenderer.on('action-update-transmission-status', (event, arg) => { document.getElementById("bytes_per_min").textContent = arq_bytes_per_minute; // SET BYTES PER MINUTE COMPRESSED - var compress = data.compression_factor; + //Handle upcoming change in ls-arq PR while still working with this PR + var compress = data.compress; if (isNaN(compress)) - compress=0; + { + //TODO: remove compression_factor when no longer needed + if (!isNaN(data.compression_factor)) + compress = data.compression_factor; + else + compress = 0; + } + var arq_bytes_per_minute_compressed = Math.round(arq_bytes_per_minute * compress); document.getElementById("bytes_per_min_compressed").textContent = arq_bytes_per_minute_compressed; From 7dd90d424288a35f94dcc08c96f86b2ac50123ed Mon Sep 17 00:00:00 2001 From: DJ2LS <75909252+DJ2LS@users.noreply.github.com> Date: Thu, 26 Jan 2023 15:30:42 +0100 Subject: [PATCH 34/41] force gpu usage for all canvas and progress bars --- gui/src/index.html | 6 +++--- gui/src/styles.css | 11 +++++++++++ 2 files changed, 14 insertions(+), 3 deletions(-) diff --git a/gui/src/index.html b/gui/src/index.html index 9981adf2..328be2ef 100644 --- a/gui/src/index.html +++ b/gui/src/index.html @@ -855,9 +855,9 @@
- - - + + +
diff --git a/gui/src/styles.css b/gui/src/styles.css index 276ab1d2..70f9376f 100644 --- a/gui/src/styles.css +++ b/gui/src/styles.css @@ -78,3 +78,14 @@ https://stackoverflow.com/questions/13176746/css-keyframe-animation-cpu-usage-is -ms-transform: translateZ(0); will-change: transform; } + +/* force disable transition effects +https://stackoverflow.com/a/9622873 +*/ +.disable-effects { + -webkit-transition: none; + -moz-transition: none; + -ms-transition: none; + -o-transition: none; + transition: none; +} From 7b04c3d0cf89076d1bae656189ba228f4f8f5db7 Mon Sep 17 00:00:00 2001 From: Mashintime Date: Thu, 26 Jan 2023 16:50:54 -0500 Subject: [PATCH 35/41] Missed an ion --- gui/preload-main.js | 11 ++--------- 1 file changed, 2 insertions(+), 9 deletions(-) diff --git a/gui/preload-main.js b/gui/preload-main.js index e2624a76..a18d7092 100644 --- a/gui/preload-main.js +++ b/gui/preload-main.js @@ -1518,16 +1518,9 @@ ipcRenderer.on('action-update-transmission-status', (event, arg) => { document.getElementById("bytes_per_min").textContent = arq_bytes_per_minute; // SET BYTES PER MINUTE COMPRESSED - //Handle upcoming change in ls-arq PR while still working with this PR - var compress = data.compress; + var compress = data.compression; if (isNaN(compress)) - { - //TODO: remove compression_factor when no longer needed - if (!isNaN(data.compression_factor)) - compress = data.compression_factor; - else - compress = 0; - } + compress = 1; var arq_bytes_per_minute_compressed = Math.round(arq_bytes_per_minute * compress); document.getElementById("bytes_per_min_compressed").textContent = arq_bytes_per_minute_compressed; From f4f0e921d6bef046fb47f4415da11d646c61e8c2 Mon Sep 17 00:00:00 2001 From: Mashintime Date: Thu, 26 Jan 2023 22:55:55 -0500 Subject: [PATCH 36/41] Allow user to disable some GUI effects to save CPU --- gui/main.js | 3 ++- gui/preload-main.js | 65 ++++++++++++++++++++++++++++++++++++++++++--- gui/src/index.html | 9 +++++++ 3 files changed, 73 insertions(+), 4 deletions(-) diff --git a/gui/main.js b/gui/main.js index 92b51dc6..20f579cf 100644 --- a/gui/main.js +++ b/gui/main.js @@ -93,7 +93,8 @@ const configDefaultSettings = '{\ "respond_to_cq" : "True",\ "rx_buffer_size" : "16", \ "enable_explorer" : "False", \ - "wftheme": 2 \ + "wftheme": 2, \ + "high_graphics" : "True"\ }'; if (!fs.existsSync(configPath)) { diff --git a/gui/preload-main.js b/gui/preload-main.js index a18d7092..1ca4fdeb 100644 --- a/gui/preload-main.js +++ b/gui/preload-main.js @@ -240,7 +240,13 @@ document.getElementById('openReceivedFilesFolder').addEventListener('click', () } else { document.getElementById("500HzModeSwitch").checked = false; } - + + if(config.high_graphics == 'True'){ + document.getElementById("GraphicsSwitch").checked = true; + } else { + document.getElementById("GraphicsSwitch").checked = false; + } + if(config.enable_fsk == 'True'){ document.getElementById("fskModeSwitch").checked = true; } else { @@ -1085,6 +1091,15 @@ document.getElementById('hamlib_rigctld_stop').addEventListener('click', () => { } fs.writeFileSync(configPath, JSON.stringify(config, null, 2)); }); + document.getElementById("GraphicsSwitch").addEventListener("click", () => { + if(document.getElementById("GraphicsSwitch").checked == true){ + config.high_graphics = "True"; + } else { + config.high_graphics = "False"; + } + fs.writeFileSync(configPath, JSON.stringify(config, null, 2)); + set_CPU_mode(); + }); // enable fsk Switch clicked document.getElementById("fskModeSwitch").addEventListener("click", () => { @@ -1317,7 +1332,7 @@ document.getElementById('hamlib_rigctld_stop').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, rx_buffer_size, enable_explorer); - + }) @@ -2228,7 +2243,11 @@ ipcRenderer.on('action-update-tnc-connection', (event, arg) => { var collapseThirdRow = new bootstrap.Collapse(document.getElementById('collapseThirdRow'), {toggle: false}) collapseThirdRow.show(); var collapseFourthRow = new bootstrap.Collapse(document.getElementById('collapseFourthRow'), {toggle: false}) - collapseFourthRow.show(); + collapseFourthRow.show(); + + //Set tuning for fancy graphics mode (high/low CPU) + set_CPU_mode(); + } else { /* document.getElementById('hamlib_deviceid').disabled = false; @@ -2765,6 +2784,46 @@ function updateTitle(mycall = config.mycall , tnc = config.tnc_host, tncport = c document.title=title; } +//Set force to true to ensure a class is present on a control, other set to false to ensure it isn't present +function toggleClass(control,classToToggle,force) { + var cntrl = document.getElementById(control); + if (cntrl == undefined) + { + //console.log("toggle class: unknown control", control); + return; + } + var activeClasses = cntrl.getAttribute('class'); + //var oldactive = activeClasses; + if (force == true && activeClasses.indexOf(classToToggle) >= 0) + return; + if (force == false && activeClasses.indexOf(classToToggle) == -1) + return; + if (force == true) + activeClasses += " " + classToToggle; + else + activeClasses = activeClasses.replace(classToToggle,""); + activeClasses = activeClasses.replace(" "," ").trim(); + cntrl.setAttribute("class",activeClasses); + //console.log(control," toggleClass; force: ", force, "class: " ,classToToggle, " in: '" ,oldactive, "' out: '",activeClasses,"'"); +} +function set_CPU_mode() { + if (config.high_graphics.toUpperCase()=="FALSE") + { + toggleClass("dbfs_level","disable-effects",true); + toggleClass("dbfs_level","progress-bar-striped",false); + toggleClass("waterfall","disable-effects",true); + toggleClass("transmission_progress","disable-effects",true); + toggleClass("transmission_progress","progress-bar-striped",false); + } + else + { + toggleClass("dbfs_level","disable-effects",false); + toggleClass("dbfs_level","progress-bar-striped",true); + toggleClass("waterfall","disable-effects",false); + toggleClass("transmission_progress","disable-effects",false); + toggleClass("transmission_progress","progress-bar-striped",true); + } +} //Teomporarily disable a button with timeout function pauseButton(btn, timems) { btn.disabled = true; diff --git a/gui/src/index.html b/gui/src/index.html index 328be2ef..3b41caa6 100644 --- a/gui/src/index.html +++ b/gui/src/index.html @@ -1315,6 +1315,15 @@ +
+ + +
From e28c6d5b541451e3f2d84f5c3024d7bb0d80b1b6 Mon Sep 17 00:00:00 2001 From: Mashintime Date: Fri, 27 Jan 2023 01:55:16 -0500 Subject: [PATCH 37/41] Prevent error if rig control data isn't populated --- gui/preload-main.js | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/gui/preload-main.js b/gui/preload-main.js index 1ca4fdeb..f439b041 100644 --- a/gui/preload-main.js +++ b/gui/preload-main.js @@ -2766,7 +2766,10 @@ function checkRigctld(){ ip: rigctld_ip, port: rigctld_port }; - ipcRenderer.send('request-check-rigctld', Data); + + //Prevents an error on startup if hamlib settings aren't populated yet + if (!isNaN(rigctld_port)) + ipcRenderer.send('request-check-rigctld', Data); } ipcRenderer.on('action-check-rigctld', (event, data) => { From 0a0f216fee3afd9ad2edf1cc0360196086723cea Mon Sep 17 00:00:00 2001 From: Mashintime Date: Fri, 27 Jan 2023 02:47:55 -0500 Subject: [PATCH 38/41] Replace some if else if with switch in tnc-state --- gui/preload-main.js | 159 ++++++++++++++++++++++++++++++++++++++------ 1 file changed, 140 insertions(+), 19 deletions(-) diff --git a/gui/preload-main.js b/gui/preload-main.js index f439b041..d92446e7 100644 --- a/gui/preload-main.js +++ b/gui/preload-main.js @@ -1549,13 +1549,9 @@ ipcRenderer.on('action-update-tnc-state', (event, arg) => { if (typeof(arg.fft) !== 'undefined') { var array = JSON.parse("[" + arg.fft + "]"); spectrum.addData(array[0]); - } if (typeof(arg.mycallsign) !== 'undefined') { - // split document title by looking for Call then split and update it - //var documentTitle = document.title.split('Call:') - //document.title = documentTitle[0] + 'Call: ' + arg.mycallsign; updateTitle(arg.mycallsign); } @@ -1756,6 +1752,7 @@ var speedChartOptions = { // END OF SPEED CHART // PTT STATE + /* if (arg.ptt_state == 'True') { document.getElementById("ptt_state").className = "btn btn-sm btn-danger"; } else if (arg.ptt_state == 'False') { @@ -1763,7 +1760,19 @@ var speedChartOptions = { } else { document.getElementById("ptt_state").className = "btn btn-sm btn-secondary"; } + */ + switch (arg.ptt_state){ + case 'True': + document.getElementById("ptt_state").className = "btn btn-sm btn-danger"; + break; + case 'False': + document.getElementById("ptt_state").className = "btn btn-sm btn-success"; + break; + default: + document.getElementById("ptt_state").className = "btn btn-sm btn-secondary"; + break; + } // AUDIO RECORDING if (arg.audio_recording == 'True') { document.getElementById("startStopRecording").className = "btn btn-sm btn-danger"; @@ -1776,11 +1785,8 @@ var speedChartOptions = { document.getElementById("startStopRecording").textContent = "Start Rec" } - - - - // CHANNEL BUSY STATE + /* if (arg.channel_busy == 'True') { document.getElementById("channel_busy").className = "btn btn-sm btn-danger"; @@ -1791,24 +1797,49 @@ var speedChartOptions = { document.getElementById("channel_busy").className = "btn btn-sm btn-secondary"; } + */ + switch (arg.channel_busy){ + case 'True': + document.getElementById("channel_busy").className = "btn btn-sm btn-danger"; + break; + case 'False': + document.getElementById("channel_busy").className = "btn btn-sm btn-success"; + break; + default: + document.getElementById("channel_busy").className = "btn btn-sm btn-secondary"; + break; + } // BUSY STATE + /* if (arg.busy_state == 'BUSY') { document.getElementById("busy_state").className = "btn btn-sm btn-danger"; - document.getElementById("startTransmission").disabled = true; //document.getElementById("stopTransmission").disabled = false; - } else if (arg.busy_state == 'IDLE') { document.getElementById("busy_state").className = "btn btn-sm btn-success"; - } else { document.getElementById("busy_state").className = "btn btn-sm btn-secondary"; document.getElementById("startTransmission").disabled = true; //document.getElementById("stopTransmission").disabled = false; } + */ + switch(arg.busy_state){ + case 'BUSY': + document.getElementById("busy_state").className = "btn btn-sm btn-danger"; + document.getElementById("startTransmission").disabled = true; + break; + case 'IDLE': + document.getElementById("busy_state").className = "btn btn-sm btn-success"; + break; + default: + document.getElementById("busy_state").className = "btn btn-sm btn-secondary"; + document.getElementById("startTransmission").disabled = true; + break; + } // ARQ STATE + /* if (arg.arq_state == 'True') { document.getElementById("arq_state").className = "btn btn-sm btn-warning"; //document.getElementById("startTransmission").disabled = true; @@ -1824,8 +1855,23 @@ var speedChartOptions = { document.getElementById("startTransmission").disabled = false; //document.getElementById("stopTransmission").disabled = false; } - + */ + switch (arg.arq_state){ + case 'True': + document.getElementById("arq_state").className = "btn btn-sm btn-warning"; + document.getElementById("startTransmission").disabled = false; + break; + case 'False': + document.getElementById("arq_state").className = "btn btn-sm btn-secondary"; + document.getElementById("startTransmission").disabled = false; + break; + default: + document.getElementById("arq_state").className = "btn btn-sm btn-secondary"; + document.getElementById("startTransmission").disabled = false; + break; + } // ARQ SESSION + /* if (arg.arq_session == 'True') { document.getElementById("arq_session").className = "btn btn-sm btn-warning"; @@ -1836,11 +1882,22 @@ var speedChartOptions = { document.getElementById("arq_session").className = "btn btn-sm btn-secondary"; } + */ + switch (arg.arq_session){ + case 'True': + document.getElementById("arq_session").className = "btn btn-sm btn-warning"; + break; + case 'False': + document.getElementById("arq_session").className = "btn btn-sm btn-secondary"; + break; + default: + document.getElementById("arq_session").className = "btn btn-sm btn-secondary"; + break; + } // HAMLIB STATUS if (arg.hamlib_status == 'connected') { document.getElementById("rigctld_state").className = "btn btn-success btn-sm"; - } else { document.getElementById("rigctld_state").className = "btn btn-secondary btn-sm"; } @@ -1848,6 +1905,7 @@ var speedChartOptions = { // BEACON STATE + /* if (arg.beacon_state == 'True') { document.getElementById("startBeacon").className = "btn btn-sm btn-success spinner-grow"; document.getElementById("startBeacon").disabled = true; @@ -1864,6 +1922,27 @@ var speedChartOptions = { document.getElementById("stopBeacon").disabled = true; document.getElementById("beaconInterval").disabled = false; } + */ + switch (arg.beacon_state){ + case 'True': + document.getElementById("startBeacon").className = "btn btn-sm btn-success spinner-grow"; + document.getElementById("startBeacon").disabled = true; + document.getElementById("beaconInterval").disabled = true; + document.getElementById("stopBeacon").disabled = false; + break; + case 'False': + document.getElementById("startBeacon").className = "btn btn-sm btn-success"; + document.getElementById("startBeacon").disabled = false; + document.getElementById("beaconInterval").disabled = false; + document.getElementById("stopBeacon").disabled = true; + break; + default: + document.getElementById("startBeacon").className = "btn btn-sm btn-success"; + document.getElementById("startBeacon").disabled = false; + document.getElementById("stopBeacon").disabled = true; + document.getElementById("beaconInterval").disabled = false; + break; + } // dbfs // https://www.moellerstudios.org/converting-amplitude-representations/ if (dbfs_level_raw != arg.dbfs_level){ @@ -1889,7 +1968,7 @@ var speedChartOptions = { document.getElementById("bandwidth").textContent = arg.bandwidth; // SET SPEED LEVEL - + /* if(arg.speed_level >= 0) { document.getElementById("speed_level").className = "bi bi-reception-1"; } @@ -1905,7 +1984,21 @@ var speedChartOptions = { if(arg.speed_level >= 4) { document.getElementById("speed_level").className = "bi bi-reception-4"; } - + */ + switch (arg.speed_level){ + case '0': + document.getElementById("speed_level").className = "bi bi-reception-1"; + break; + case '1': + document.getElementById("speed_level").className = "bi bi-reception-2"; + break; + case '2': + document.getElementById("speed_level").className = "bi bi-reception-3"; + break; + default: + document.getElementById("speed_level").className = "bi bi-reception-4"; + break; + } @@ -2005,7 +2098,7 @@ var speedChartOptions = { var dataTypeText = document.createElement('span'); dataTypeText.innerText = arg.stations[i]['datatype']; dataType.appendChild(dataTypeText); - + /* if(arg.stations[i]['datatype'] == 'DATA-CHANNEL'){ dataTypeText.innerText = 'DATA-C'; dataType.appendChild(dataTypeText); @@ -2015,8 +2108,18 @@ var speedChartOptions = { dataTypeText.innerHTML = ''; dataType.appendChild(dataTypeText); } - - + */ + switch (arg.stations[i]['datatype']){ + case 'DATA-CHANNEL': + dataTypeText.innerText = 'DATA-C'; + dataType.appendChild(dataTypeText); + break; + case 'SESSION-HB': + dataTypeText.innerHTML = ''; + dataType.appendChild(dataTypeText); + break; + } + /* if (dataTypeText.innerText == 'CQ CQ CQ') { row.classList.add("table-success"); } @@ -2037,7 +2140,25 @@ var speedChartOptions = { if (dataTypeText.innerText == 'PING-ACK') { row.classList.add("table-primary"); } - + */ + switch (dataTypeText.innerText){ + case 'CQ CQ CQ': + row.classList.add("table-success"); + break; + case 'DATA-C': + dataTypeText.innerHTML = ''; + row.classList.add("table-warning"); + break; + case 'BEACON': + row.classList.add("table-light"); + break; + case 'PING': + row.classList.add("table-info"); + break; + case 'PING-ACK': + row.classList.add("table-primary"); + break; + } var snr = document.createElement("td"); var snrText = document.createElement('span'); snrText.innerText = arg.stations[i]['snr']; From 7556de25cf7a88c2b57e99f384b4bf1904189ed7 Mon Sep 17 00:00:00 2001 From: Mashintime Date: Fri, 27 Jan 2023 10:06:27 -0500 Subject: [PATCH 39/41] Second try to fix this error on startup --- gui/preload-main.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/gui/preload-main.js b/gui/preload-main.js index d92446e7..de270f1a 100644 --- a/gui/preload-main.js +++ b/gui/preload-main.js @@ -2889,7 +2889,7 @@ function checkRigctld(){ }; //Prevents an error on startup if hamlib settings aren't populated yet - if (!isNaN(rigctld_port)) + if (rigctld_port.length > 0 && rigctld_ip.length > 0) ipcRenderer.send('request-check-rigctld', Data); } From 393f4f5d3ab5cbe8099899dafd52dc57443709c6 Mon Sep 17 00:00:00 2001 From: Mashintime Date: Fri, 27 Jan 2023 10:07:32 -0500 Subject: [PATCH 40/41] Fix event emitter leak --- gui/main.js | 71 +++++++++++++++++++++++++++++------------------------ 1 file changed, 39 insertions(+), 32 deletions(-) diff --git a/gui/main.js b/gui/main.js index 20f579cf..7f98f372 100644 --- a/gui/main.js +++ b/gui/main.js @@ -16,8 +16,10 @@ const mainLog = log.scope('main'); const daemonProcessLog = log.scope('freedata-daemon'); const mime = require('mime'); const net = require('net'); +//Useful for debugging event emitter memory leaks +//require('events').EventEmitter.defaultMaxListeners = 10; +//process.traceProcessWarnings=true; - const sysInfo = log.scope('system information'); sysInfo.info("SYSTEM INFORMATION ----------------------------- "); sysInfo.info("APP VERSION : " + app.getVersion()); @@ -875,6 +877,8 @@ ipcMain.on('request-stop-rigctld',(event,data)=>{ // create new socket so we are not reopening every time a new one var rigctld_connection = new net.Socket(); var rigctld_connection_state = false; +var rigctld_events_wired = false; + ipcMain.on('request-check-rigctld',(event, data)=>{ try{ @@ -885,41 +889,44 @@ ipcMain.on('request-check-rigctld',(event, data)=>{ if(!rigctld_connection_state){ rigctld_connection = new net.Socket(); + rigctld_events_wired = false; rigctld_connection.connect(data.port, data.ip) } - // check if we have created a new socket object - if (typeof(rigctld_connection) != 'undefined') { - - rigctld_connection.on('connect', function() { - rigctld_connection_state = true; - Data["state"] = "connection possible - (" + data.ip + ":" + data.port + ")"; - if (win !== null && win !== '' && typeof(win) != 'undefined'){ - // try catch for being sure we have a clean app close - try{ - win.webContents.send('action-check-rigctld', Data); - } catch(e){ - console.log(e) + // Check if we have created a new socket object and attach listeners if not already created + if (typeof(rigctld_connection) != 'undefined' && !rigctld_events_wired) { + + rigctld_connection.on('connect', function() { + rigctld_events_wired=true; + mainLog.info("Starting rigctld event listeners"); + rigctld_connection_state = true; + Data["state"] = "connection possible - (" + data.ip + ":" + data.port + ")"; + if (win !== null && win !== '' && typeof(win) != 'undefined'){ + // try catch for being sure we have a clean app close + try{ + win.webContents.send('action-check-rigctld', Data); + } catch(e){ + console.log(e) + } } - } - }) - - rigctld_connection.on('error', function() { - rigctld_connection_state = false; - Data["state"] = "unknown/stopped - (" + data.ip + ":" + data.port + ")"; - if (win !== null && win !== '' && typeof(win) != 'undefined'){ - // try catch for being sure we have a clean app close - try{ - win.webContents.send('action-check-rigctld', Data); - } catch(e){ - console.log(e) + }) + + rigctld_connection.on('error', function() { + rigctld_connection_state = false; + Data["state"] = "unknown/stopped - (" + data.ip + ":" + data.port + ")"; + if (win !== null && win !== '' && typeof(win) != 'undefined'){ + // try catch for being sure we have a clean app close + try{ + win.webContents.send('action-check-rigctld', Data); + } catch(e){ + console.log(e) + } } - } - }) - - rigctld_connection.on('end', function() { - rigctld_connection_state = false; - }) + }) + + rigctld_connection.on('end', function() { + rigctld_connection_state = false; + }) } @@ -927,4 +934,4 @@ ipcMain.on('request-check-rigctld',(event, data)=>{ console.log(e) } -}); +}); \ No newline at end of file From ec0c9395eaf4bf9e2357bc2fef76b07404e3c698 Mon Sep 17 00:00:00 2001 From: Mashintime Date: Fri, 27 Jan 2023 14:44:36 -0500 Subject: [PATCH 41/41] Reformat single line if statements --- gui/main.js | 3 ++- gui/preload-main.js | 30 ++++++++++++++++++------------ 2 files changed, 20 insertions(+), 13 deletions(-) diff --git a/gui/main.js b/gui/main.js index 7f98f372..808a45d8 100644 --- a/gui/main.js +++ b/gui/main.js @@ -764,8 +764,9 @@ function close_sub_processes(){ // closing the tnc binary if not closed when closing application and also our daemon which has been started by the gui try { - if (daemonProcess != null) + if (daemonProcess != null) { daemonProcess.kill(); + } } catch (e) { mainLog.error(e) } diff --git a/gui/preload-main.js b/gui/preload-main.js index de270f1a..b9ec859b 100644 --- a/gui/preload-main.js +++ b/gui/preload-main.js @@ -1534,9 +1534,9 @@ ipcRenderer.on('action-update-transmission-status', (event, arg) => { // SET BYTES PER MINUTE COMPRESSED var compress = data.compression; - if (isNaN(compress)) - compress = 1; - + if (isNaN(compress)) { + compress = 1; + } var arq_bytes_per_minute_compressed = Math.round(arq_bytes_per_minute * compress); document.getElementById("bytes_per_min_compressed").textContent = arq_bytes_per_minute_compressed; @@ -2016,8 +2016,10 @@ var speedChartOptions = { //Allows for single click event to work more reliabily to populate dxcall textbox //Should also save some CPU slowRollTable++; - if (slowRollTable!=5) + if (slowRollTable!=5) { return; + } + slowRollTable=0; // UPDATE HEARD STATIONS @@ -2889,8 +2891,9 @@ function checkRigctld(){ }; //Prevents an error on startup if hamlib settings aren't populated yet - if (rigctld_port.length > 0 && rigctld_ip.length > 0) + if (rigctld_port.length > 0 && rigctld_ip.length > 0) { ipcRenderer.send('request-check-rigctld', Data); + } } ipcRenderer.on('action-check-rigctld', (event, data) => { @@ -2904,28 +2907,31 @@ ipcRenderer.on('action-set-app-version', (event, data) => { function updateTitle(mycall = config.mycall , tnc = config.tnc_host, tncport = config.tnc_port, appender = ""){ //Multiple consecutive spaces get converted to a single space var title ="FreeDATA " + appVer + " - Call: " + mycall + " - TNC: " + tnc + ":" + tncport + appender; - if (title != document.title) + if (title != document.title) { document.title=title; + } } //Set force to true to ensure a class is present on a control, other set to false to ensure it isn't present function toggleClass(control,classToToggle,force) { var cntrl = document.getElementById(control); - if (cntrl == undefined) - { + if (cntrl == undefined) { //console.log("toggle class: unknown control", control); return; } var activeClasses = cntrl.getAttribute('class'); //var oldactive = activeClasses; - if (force == true && activeClasses.indexOf(classToToggle) >= 0) + if (force == true && activeClasses.indexOf(classToToggle) >= 0) { return; - if (force == false && activeClasses.indexOf(classToToggle) == -1) + } + if (force == false && activeClasses.indexOf(classToToggle) == -1) { return; - if (force == true) + } + if (force == true) { activeClasses += " " + classToToggle; - else + } else { activeClasses = activeClasses.replace(classToToggle,""); + } activeClasses = activeClasses.replace(" "," ").trim(); cntrl.setAttribute("class",activeClasses); //console.log(control," toggleClass; force: ", force, "class: " ,classToToggle, " in: '" ,oldactive, "' out: '",activeClasses,"'");