diff --git a/gui/daemon.js b/gui/daemon.js
index 567827c0..0397b191 100644
--- a/gui/daemon.js
+++ b/gui/daemon.js
@@ -209,7 +209,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_bandwith_mode, tuning_range_fmin, tuning_range_fmax) {
+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_bandwith_mode, tuning_range_fmin, tuning_range_fmax, enable_fsk) {
var json_command = JSON.stringify({
type: 'set',
command: 'start_tnc',
@@ -231,6 +231,7 @@ exports.startTNC = function(mycall, mygrid, rx_audio, tx_audio, radiocontrol, de
rigctld_ip: rigctld_ip,
enable_scatter: enable_scatter,
enable_fft: enable_fft,
+ enable_fsk: enable_fsk,
low_bandwith_mode : low_bandwith_mode,
tuning_range_fmin : tuning_range_fmin,
tuning_range_fmax : tuning_range_fmax
diff --git a/gui/main.js b/gui/main.js
index 05660ba8..75d59860 100644
--- a/gui/main.js
+++ b/gui/main.js
@@ -67,6 +67,7 @@ const configDefaultSettings = '{\
"rigctld_ip" : "127.0.0.1",\
"enable_scatter" : "False",\
"enable_fft" : "False",\
+ "enable_fsk" : "False",\
"low_bandwith_mode" : "False",\
"theme" : "default",\
"screen_height" : 430,\
diff --git a/gui/package.json b/gui/package.json
index 5a6395b9..afcceb66 100644
--- a/gui/package.json
+++ b/gui/package.json
@@ -1,6 +1,6 @@
{
"name": "FreeDATA",
- "version": "0.3.0-alpha.7",
+ "version": "0.3.0-alpha.8",
"description": "FreeDATA ",
"main": "main.js",
"scripts": {
diff --git a/gui/preload-main.js b/gui/preload-main.js
index 84b2affb..ab231a28 100644
--- a/gui/preload-main.js
+++ b/gui/preload-main.js
@@ -111,6 +111,7 @@ document.getElementById('openReceivedFilesFolder').addEventListener('click', ()
document.getElementById("scatterSwitch").value = config.enable_scatter;
document.getElementById("fftSwitch").value = config.enable_fft;
document.getElementById("500HzModeSwitch").value = config.low_bandwith_mode;
+ document.getElementById("fskModeSwitch").value = config.enable_fsk;
document.getElementById("received_files_folder").value = config.received_files_folder;
@@ -132,8 +133,13 @@ document.getElementById('openReceivedFilesFolder').addEventListener('click', ()
document.getElementById("500HzModeSwitch").checked = true;
} else {
document.getElementById("500HzModeSwitch").checked = false;
- }
-
+ }
+
+ if(config.enable_fsk == 'True'){
+ document.getElementById("fskModeSwitch").checked = true;
+ } else {
+ document.getElementById("fskModeSwitch").checked = false;
+ }
// theme selector
if(config.theme != 'default'){
@@ -476,6 +482,17 @@ document.getElementById('openReceivedFilesFolder').addEventListener('click', ()
fs.writeFileSync(configPath, JSON.stringify(config, null, 2));
});
+ // enable fsk Switch clicked
+ document.getElementById("fskModeSwitch").addEventListener("click", () => {
+ if(document.getElementById("fskModeSwitch").checked == true){
+ config.enable_fsk = "True";
+ } else {
+ config.enable_fsk = "False";
+ }
+ fs.writeFileSync(configPath, JSON.stringify(config, null, 2));
+ });
+
+
// Tuning range clicked
document.getElementById("tuning_range_fmin").addEventListener("click", () => {
@@ -580,7 +597,11 @@ document.getElementById('openReceivedFilesFolder').addEventListener('click', ()
var low_bandwith_mode = "False";
}
-
+ if (document.getElementById("fskModeSwitch").checked == true){
+ var enable_fsk = "True";
+ } else {
+ var enable_fsk = "False";
+ }
// loop through audio device list and select
for(i = 0; i < document.getElementById("audio_input_selectbox").length; i++) {
@@ -645,6 +666,7 @@ document.getElementById('openReceivedFilesFolder').addEventListener('click', ()
//config.deviceport_rigctl = deviceport_rigctl;
config.enable_scatter = enable_scatter;
config.enable_fft = enable_fft;
+ config.enable_fsk = enable_fsk;
config.low_bandwith_mode = low_bandwith_mode;
@@ -666,7 +688,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_bandwith_mode, tuning_range_fmin, tuning_range_fmax);
+ 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_bandwith_mode, tuning_range_fmin, tuning_range_fmax, enable_fsk);
})
diff --git a/gui/src/index.html b/gui/src/index.html
index 8b921e81..6f99d31a 100644
--- a/gui/src/index.html
+++ b/gui/src/index.html
@@ -772,6 +772,11 @@
+
+
+
+
+
@@ -797,11 +802,15 @@
@@ -1158,7 +1167,24 @@
+
+
+
+
+
diff --git a/tnc/daemon.py b/tnc/daemon.py
index 814775aa..0ac573dd 100755
--- a/tnc/daemon.py
+++ b/tnc/daemon.py
@@ -209,13 +209,17 @@ class DAEMON():
if data[18] == 'True':
options.append('--500hz')
+
options.append('--tuning_range_fmin')
options.append(data[19])
options.append('--tuning_range_fmax')
options.append(data[20])
-
+ if data[21] == 'True':
+ options.append('--fsk')
+
+
# try running tnc from binary, else run from source
# this helps running the tnc in a developer environment
try:
diff --git a/tnc/data_handler.py b/tnc/data_handler.py
index ce946bec..384643be 100644
--- a/tnc/data_handler.py
+++ b/tnc/data_handler.py
@@ -1430,7 +1430,10 @@ class DATA():
txbuffer = [ping_frame]
static.TRANSMITTING = True
- modem.MODEM_TRANSMIT_QUEUE.put(['FSK_LDPC_0',1,0,txbuffer])
+ if static.ENABLE_FSK:
+ modem.MODEM_TRANSMIT_QUEUE.put(['FSK_LDPC_0',1,0,txbuffer])
+ else:
+ modem.MODEM_TRANSMIT_QUEUE.put([14,1,0,txbuffer])
# wait while transmitting
while static.TRANSMITTING:
time.sleep(0.01)
@@ -1467,7 +1470,11 @@ class DATA():
txbuffer = [ping_frame]
static.TRANSMITTING = True
- modem.MODEM_TRANSMIT_QUEUE.put(['FSK_LDPC_0',1,0,txbuffer])
+
+ if static.ENABLE_FSK:
+ modem.MODEM_TRANSMIT_QUEUE.put(['FSK_LDPC_0',1,0,txbuffer])
+ else:
+ modem.MODEM_TRANSMIT_QUEUE.put([14,1,0,txbuffer])
# wait while transmitting
while static.TRANSMITTING:
time.sleep(0.01)
@@ -1556,7 +1563,13 @@ class DATA():
txbuffer = [beacon_frame]
static.TRANSMITTING = True
- modem.MODEM_TRANSMIT_QUEUE.put([14,1,0,txbuffer])
+
+ if static.ENABLE_FSK:
+ modem.MODEM_TRANSMIT_QUEUE.put(['FSK_LDPC_0',1,0,txbuffer])
+ else:
+ modem.MODEM_TRANSMIT_QUEUE.put([14,1,0,txbuffer])
+
+
# wait while transmitting
while static.TRANSMITTING:
time.sleep(0.01)
@@ -1606,7 +1619,11 @@ class DATA():
txbuffer = [cq_frame]
print(txbuffer)
static.TRANSMITTING = True
- modem.MODEM_TRANSMIT_QUEUE.put([14,2,500,txbuffer])
+
+ if static.ENABLE_FSK:
+ modem.MODEM_TRANSMIT_QUEUE.put(['FSK_LDPC_0',2,500,txbuffer])
+ else:
+ modem.MODEM_TRANSMIT_QUEUE.put([14,1,0,txbuffer])
# wait while transmitting
while static.TRANSMITTING:
time.sleep(0.01)
diff --git a/tnc/main.py b/tnc/main.py
index 44f80034..f9464e04 100755
--- a/tnc/main.py
+++ b/tnc/main.py
@@ -69,6 +69,7 @@ if __name__ == '__main__':
PARSER.add_argument('--scatter', dest="send_scatter", action="store_true", help="Send scatter information via network")
PARSER.add_argument('--fft', dest="send_fft", action="store_true", help="Send fft information via network")
PARSER.add_argument('--500hz', dest="low_bandwith_mode", action="store_true", help="Enable low bandwith mode ( 500 Hz only )")
+ PARSER.add_argument('--fsk', dest="enable_fsk", action="store_true", help="Enable FSK mode for ping, beacon and CQ")
PARSER.add_argument('--tuning_range_fmin', dest="tuning_range_fmin", choices=[-50.0, -100.0, -150.0, -200.0, -250.0], default=-50.0, help="Tuning range fmin", type=float)
PARSER.add_argument('--tuning_range_fmax', dest="tuning_range_fmax", choices=[50.0, 100.0, 150.0, 200.0, 250.0], default=50.0, help="Tuning range fmax", type=float)
@@ -102,7 +103,8 @@ if __name__ == '__main__':
static.HAMLIB_RGICTLD_IP = ARGS.rigctld_ip
static.HAMLIB_RGICTLD_PORT = str(ARGS.rigctld_port)
static.ENABLE_SCATTER = ARGS.send_scatter
- static.ENABLE_FFT = ARGS.send_fft
+ static.ENABLE_FFT = ARGS.send_fft
+ static.ENABLE_FSK = ARGS.enable_fsk
static.LOW_BANDWITH_MODE = ARGS.low_bandwith_mode
static.TUNING_RANGE_FMIN = ARGS.tuning_range_fmin
static.TUNING_RANGE_FMAX = ARGS.tuning_range_fmax
diff --git a/tnc/modem.py b/tnc/modem.py
index 9b397379..70562692 100644
--- a/tnc/modem.py
+++ b/tnc/modem.py
@@ -40,6 +40,7 @@ RECEIVE_DATAC1 = False
RECEIVE_DATAC3 = False
RECEIVE_FSK_LDPC_1 = False
+
class RF():
""" """
@@ -274,14 +275,14 @@ class RF():
# avoid buffer overflow by filling only if buffer not full and selected datachannel mode
if not self.fsk_ldpc_buffer_0.nbuffer+length_x > self.fsk_ldpc_buffer_0.size:
- #if RECEIVE_FSK_LDPC_0:
+ if static.ENABLE_FSK:
self.fsk_ldpc_buffer_0.push(x)
else:
static.BUFFER_OVERFLOW_COUNTER[3] += 1
# avoid buffer overflow by filling only if buffer not full and selected datachannel mode
if not self.fsk_ldpc_buffer_1.nbuffer+length_x > self.fsk_ldpc_buffer_1.size:
- if RECEIVE_FSK_LDPC_1:
+ if RECEIVE_FSK_LDPC_1 and static.ENABLE_FSK:
self.fsk_ldpc_buffer_1.push(x)
else:
static.BUFFER_OVERFLOW_COUNTER[4] += 1
@@ -481,7 +482,7 @@ class RF():
def audio_fsk_ldpc_0(self):
""" """
nbytes_fsk_ldpc_0 = 0
- while self.stream.active:
+ while self.stream.active and static.ENABLE_FSK:
threading.Event().wait(0.01)
while self.fsk_ldpc_buffer_0.nbuffer >= self.fsk_ldpc_nin_0:
# demodulate audio
@@ -496,7 +497,7 @@ class RF():
def audio_fsk_ldpc_1(self):
""" """
nbytes_fsk_ldpc_1 = 0
- while self.stream.active:
+ while self.stream.active and static.ENABLE_FSK:
threading.Event().wait(0.01)
while self.fsk_ldpc_buffer_1.nbuffer >= self.fsk_ldpc_nin_1:
# demodulate audio
diff --git a/tnc/sock.py b/tnc/sock.py
index 7b2ea72b..77aa7da6 100644
--- a/tnc/sock.py
+++ b/tnc/sock.py
@@ -488,9 +488,11 @@ def process_daemon_commands(data):
rigctld_port = str(received_json["parameter"][0]["rigctld_port"])
enable_scatter = str(received_json["parameter"][0]["enable_scatter"])
enable_fft = str(received_json["parameter"][0]["enable_fft"])
+ enable_fsk = str(received_json["parameter"][0]["enable_fsk"])
low_bandwith_mode = str(received_json["parameter"][0]["low_bandwith_mode"])
tuning_range_fmin = str(received_json["parameter"][0]["tuning_range_fmin"])
tuning_range_fmax = str(received_json["parameter"][0]["tuning_range_fmax"])
+
DAEMON_QUEUE.put(['STARTTNC', \
mycall, \
@@ -512,7 +514,8 @@ def process_daemon_commands(data):
enable_fft, \
low_bandwith_mode, \
tuning_range_fmin, \
- tuning_range_fmax \
+ tuning_range_fmax, \
+ enable_fsk \
])
command_response("start_tnc", True)
diff --git a/tnc/static.py b/tnc/static.py
index 4f7c2815..2ef7dbcc 100644
--- a/tnc/static.py
+++ b/tnc/static.py
@@ -66,6 +66,7 @@ SNR = 0
FREQ_OFFSET = 0
SCATTER = []
ENABLE_SCATTER = False
+ENABLE_FSK = False
# ---------------------------------
# Audio Defaults