Improve handle of settings

This commit is contained in:
Pedro 2023-11-18 16:56:39 +01:00
parent 51360b8458
commit 381c0d7813
13 changed files with 90 additions and 380 deletions

View file

@ -55,7 +55,7 @@ const state = useStateStore(pinia);
type="button"
disabled
>
Update channel | {{ settings.update_channel }}
Update channel | settings.update_channel
</button>
<button
class="btn btn-secondary btn-sm ms-1"

View file

@ -9,31 +9,18 @@ import { settingsStore as settings} from "../store/settingsStore.js";
import { useStateStore } from "../store/stateStore.js";
const state = useStateStore(pinia);
import { postToServer } from "../js/rest.js";
function transmitCQ() {
postToServer(settings.modem_host, settings.modem_port, "modem/cqcqcq", null);
}
import { sendModemCQ, sendModemPing, setModemBeacon } from "../js/api.js";
function transmitPing() {
let command = {"dxcall": (<HTMLInputElement>document.getElementById("dxCall")).value}
postToServer(settings.modem_host, settings.modem_port, "modem/ping_ping", command);
sendModemPing((<HTMLInputElement>document.getElementById("dxCall")).value);
}
function startStopBeacon() {
switch (state.beacon_state) {
case "False":
postToServer(settings.modem_host, settings.modem_port,"modem/beacon", {"enabled": "True"});
break;
case "True":
postToServer(settings.modem_host, settings.modem_port, "modem/beacon", {"enabled": "False"});
break;
default:
if (state.beacon_state === true) {
setModemBeacon(false);
}
else {
setModemBeacon(true);
}
}
</script>
@ -96,7 +83,7 @@ function startStopBeacon() {
id="sendCQ"
type="button"
title="Send a CQ to the world"
@click="transmitCQ()"
@click="sendModemCQ()"
>
Call CQ
</button>
@ -107,8 +94,8 @@ function startStopBeacon() {
class="btn btn-sm ms-1"
@click="startStopBeacon()"
v-bind:class="{
'btn-success': state.beacon_state === 'True',
'btn-outline-secondary': state.beacon_state === 'False',
'btn-success': state.beacon_state === true,
'btn-outline-secondary': state.beacon_state === false,
}"
title="Toggle beacon mode. The interval can be set in settings. While sending a beacon, you can receive ping requests and open a datachannel. If a datachannel is opened, the beacon pauses."
>

View file

@ -6,7 +6,7 @@ setActivePinia(pinia);
import { useAudioStore } from "../store/audioStore.js";
const audio = useAudioStore(pinia);
import { saveModemConfig } from "../js/api";
import { setConfig } from "../js/api";
</script>
<template>
@ -43,7 +43,7 @@ import { saveModemConfig } from "../js/api";
class="form-select form-select-sm"
aria-label=".form-select-sm"
v-html="audio.getInputDevices()"
@change="saveModemConfig"
@change="setConfig"
></select>
</div>
<div class="input-group input-group-sm">
@ -54,7 +54,7 @@ import { saveModemConfig } from "../js/api";
class="form-select form-select-sm"
aria-label=".form-select-sm"
v-html="audio.getOutputDevices()"
@change="saveModemConfig"
@change="setConfig"
></select>
</div>
</div>

View file

@ -4,8 +4,6 @@ import { onMounted } from "vue";
import infoScreen_updater from "./infoScreen_updater.vue";
import { getModemVersion, saveModemConfig } from "../js/api";
import { setActivePinia } from "pinia";
import pinia from "../store/index";
setActivePinia(pinia);
@ -20,8 +18,7 @@ const state = useStateStore(pinia);
import { startModem, stopModem } from "../js/api";
import { getModemConfig, getModemCurrentState } from "../js/api";
import { startRigctld, stopRigctld } from "../js/deprecated_daemon";
import { getVersion, getConfig, setConfig, startModem, stopModem } from "../js/api";
const version = import.meta.env.PACKAGE_VERSION;
var updateAvailable = process.env.FDUpdateAvail;
@ -31,6 +28,8 @@ onMounted(() => {
getModemConfig();
getModemCurrentState();
getModemVersion();
getConfig();
getVersion();
new Modal("#modemCheck", {}).show();
});
@ -212,7 +211,7 @@ function testHamlib() {
class="form-select form-select-sm"
id="rx_audio"
aria-label=".form-select-sm"
@change="saveModemConfig"
@change="setConfig"
v-model="settings.input_device"
v-html="audio.getInputDevices()"
></select>
@ -225,7 +224,7 @@ function testHamlib() {
class="form-select form-select-sm"
id="tx_audio"
aria-label=".form-select-sm"
@change="saveModemConfig"
@change="setConfig"
v-model="settings.output_device"
v-html="audio.getOutputDevices()"
></select>
@ -268,7 +267,7 @@ function testHamlib() {
class="form-select form-select-sm"
aria-label=".form-select-sm"
id="rigcontrol_radiocontrol"
@change="saveModemConfig"
@change="setConfig"
v-model="settings.radiocontrol"
>
<option selected value="disabled">
@ -347,7 +346,7 @@ function testHamlib() {
aria-label=".form-select-sm"
id="hamlib_deviceport"
style="width: 7rem"
@change="saveModemConfig"
@change="setConfig"
></select>
</div>
</div>
@ -363,7 +362,7 @@ function testHamlib() {
id="rigcontrol_tci_ip"
aria-label="Device IP"
v-model="settings.tci_ip"
@change="saveModemConfig"
@change="setConfig"
/>
</div>
@ -376,7 +375,7 @@ function testHamlib() {
id="rigcontrol_tci_port"
aria-label="Device Port"
v-model="settings.tci_port"
@change="saveModemConfig"
@change="setConfig"
/>
</div>
</div>

View file

@ -1,5 +1,5 @@
<script setup lang="ts">
import { saveModemConfig } from "../js/api";
import { setConfig } from "../js/api";
import { setActivePinia } from "pinia";
import pinia from "../store/index";
@ -17,7 +17,7 @@ import { settingsStore as settings} from "../store/settingsStore.js";
class="form-check-input"
type="checkbox"
id="enable_is_writing"
@change="saveModemConfig"
@change="setConfig"
v-model="settings.enable_is_writing"
disabled
/>
@ -36,7 +36,7 @@ import { settingsStore as settings} from "../store/settingsStore.js";
class="form-check-input"
type="checkbox"
id="enable_request_profile"
@change="saveModemConfig"
@change="setConfig"
v-model="settings.enable_request_profile"
disabled
/>
@ -54,7 +54,7 @@ import { settingsStore as settings} from "../store/settingsStore.js";
class="form-check-input"
type="checkbox"
id="enable_request_shared_folder"
@change="saveModemConfig"
@change="setConfig"
v-model="settings.enable_request_shared_folder"
disabled
/>
@ -68,7 +68,7 @@ import { settingsStore as settings} from "../store/settingsStore.js";
type="text"
class="form-control w-50"
id="shared_folder_path"
@change="saveModemConfig"
@change="setConfig"
v-model="settings.shared_folder_path"
disabled
/>
@ -85,7 +85,7 @@ import { settingsStore as settings} from "../store/settingsStore.js";
class="form-check-input"
type="checkbox"
id="enable_auto_retry"
@change="saveModemConfig"
@change="setConfig"
v-model="settings.enable_auto_retry"
/>
</div>
@ -97,7 +97,7 @@ import { settingsStore as settings} from "../store/settingsStore.js";
<select
class="form-select form-select-sm w-50"
id="max_retry_attempts"
@change="saveModemConfig"
@change="setConfig"
v-model="settings.max_retry_attempts"
>
<option value="1">1</option>

View file

@ -1,5 +1,5 @@
<script setup lang="ts">
import { saveModemConfig } from "../js/api";
import { setConfig } from "../js/api";
import { setActivePinia } from "pinia";
import pinia from "../store/index";
@ -17,7 +17,7 @@ import { settingsStore as settings} from "../store/settingsStore.js";
class="form-check-input"
type="checkbox"
id="autoTuneSwitch"
@change="saveModemConfig"
@change="setConfig"
v-model="settings.auto_tune"
/>
<label class="form-check-label" for="autoTuneSwitch"
@ -34,7 +34,7 @@ import { settingsStore as settings} from "../store/settingsStore.js";
class="form-check-input"
type="checkbox"
id="fskModeSwitch"
@change="saveModemConfig"
@change="setConfig"
v-model="settings.enable_fsk"
disabled
/>
@ -52,7 +52,7 @@ import { settingsStore as settings} from "../store/settingsStore.js";
class="form-check-input"
type="checkbox"
id="enableMeshSwitch"
@change="saveModemConfig"
@change="setConfig"
v-model="settings.enable_mesh_features"
/>
<label class="form-check-label" for="enableMeshSwitch"

View file

@ -1,5 +1,5 @@
<script setup lang="ts">
import { saveModemConfig } from "../js/api";
import { setConfig } from "../js/api";
import { setActivePinia } from "pinia";
import pinia from "../store/index";
@ -19,7 +19,7 @@ import { settingsStore as settings} from "../store/settingsStore.js";
id="hamlib_rigctld_path"
aria-label="Device IP"
aria-describedby="basic-addon1"
@change="saveModemConfig"
@change="setConfig"
v-model="settings.hamlib_rigctld_path"
/>
</div>
@ -34,7 +34,7 @@ import { settingsStore as settings} from "../store/settingsStore.js";
id="hamlib_rigctld_server_port"
aria-label="Device Port"
aria-describedby="basic-addon1"
@change="saveModemConfig"
@change="setConfig"
v-model="settings.hamlib_rigctld_server_port"
/>
</div>
@ -72,7 +72,7 @@ import { settingsStore as settings} from "../store/settingsStore.js";
class="form-select form-select-sm"
aria-label=".form-select-sm"
id="hamlib_deviceid"
@change="saveModemConfig"
@change="setConfig"
v-model="settings.hamlib_deviceid"
>
<option selected value="-- ignore --">-- ignore --</option>
@ -349,7 +349,7 @@ import { settingsStore as settings} from "../store/settingsStore.js";
aria-label=".form-select-sm"
id="hamlib_deviceport"
style="width: 7rem"
@change="saveModemConfig"
@change="setConfig"
></select>
</div>
@ -360,7 +360,7 @@ import { settingsStore as settings} from "../store/settingsStore.js";
class="form-select form-select-sm"
aria-label=".form-select-sm"
id="hamlib_serialspeed"
@change="saveModemConfig"
@change="setConfig"
v-model="settings.hamlib_serialspeed"
>
<option selected value="ignore">-- ignore --</option>
@ -383,7 +383,7 @@ import { settingsStore as settings} from "../store/settingsStore.js";
class="form-select form-select-sm"
aria-label=".form-select-sm"
id="hamlib_data_bits"
@change="saveModemConfig"
@change="setConfig"
v-model="settings.hamlib_data_bits"
>
<option selected value="ignore">-- ignore --</option>
@ -398,7 +398,7 @@ import { settingsStore as settings} from "../store/settingsStore.js";
class="form-select form-select-sm"
aria-label=".form-select-sm"
id="hamlib_stop_bits"
@change="saveModemConfig"
@change="setConfig"
v-model="settings.hamlib_stop_bits"
>
<option selected value="ignore">-- ignore --</option>
@ -413,7 +413,7 @@ import { settingsStore as settings} from "../store/settingsStore.js";
class="form-select form-select-sm"
aria-label=".form-select-sm"
id="hamlib_handshake"
@change="saveModemConfig"
@change="setConfig"
v-model="settings.hamlib_handshake"
>
<option selected value="ignore">-- ignore --</option>
@ -427,7 +427,7 @@ import { settingsStore as settings} from "../store/settingsStore.js";
class="form-select form-select-sm"
aria-label=".form-select-sm"
id="hamlib_ptt_port"
@change="saveModemConfig"
@change="setConfig"
v-model="settings.hamlib_ptt_port"
>
<option selected value="ignore">-- ignore --</option>
@ -441,7 +441,7 @@ import { settingsStore as settings} from "../store/settingsStore.js";
aria-label=".form-select-sm"
id="hamlib_pttprotocol"
style="width: 0.5rem"
@change="saveModemConfig"
@change="setConfig"
v-model="settings.hamlib_pttprotocol"
>
<option selected value="ignore">-- ignore --</option>
@ -462,7 +462,7 @@ import { settingsStore as settings} from "../store/settingsStore.js";
aria-label=".form-select-sm"
id="hamlib_dcd"
style="width: 0.5rem"
@change="saveModemConfig"
@change="setConfig"
v-model="settings.hamlib_dcd"
>
<option selected value="ignore">-- ignore --</option>
@ -482,7 +482,7 @@ import { settingsStore as settings} from "../store/settingsStore.js";
aria-label=".form-select-sm"
id="hamlib_dtrstate"
style="width: 0.5rem"
@change="saveModemConfig"
@change="setConfig"
v-model="settings.hamlib_dtrstate"
>
<option selected value="ignore">-- ignore --</option>
@ -520,7 +520,7 @@ import { settingsStore as settings} from "../store/settingsStore.js";
id="hamlib_rigctld_custom_args"
aria-label="Custom arguments"
aria-describedby="basic-addon1"
@change="saveModemConfig"
@change="setConfig"
v-model="settings.hamlib_rigctld_custom_args"
/>
</div>

View file

@ -1,7 +1,7 @@
<script setup lang="ts">
import pinia from "../store/index";
import { saveModemConfig } from "../js/api";
import { setConfig } from "../js/api";
import { settingsStore as settings} from "../store/settingsStore.js";
@ -55,8 +55,8 @@ import { startModem, stopModem } from "../js/api";
maxlength="5"
max="65534"
min="1025"
@change="saveModemConfig()"
v-model.number="settings.modem_port"
@change="setConfig()"
v-model.number="settings.local.port"
/>
</div>
@ -67,8 +67,8 @@ import { startModem, stopModem } from "../js/api";
class="form-control"
placeholder="modem host"
id="modem_port"
@change="saveModemConfig"
v-model="settings.modem_host"
@change="setConfig"
v-model="settings.local.host"
/>
</div>
@ -79,7 +79,7 @@ import { startModem, stopModem } from "../js/api";
class="form-select form-select-sm"
id="rx_audio"
aria-label=".form-select-sm"
@change="saveModemConfig"
@change="setConfig"
v-model="settings.input_device"
v-html="audio.getInputDevices()"
></select>
@ -92,7 +92,7 @@ import { startModem, stopModem } from "../js/api";
class="form-select form-select-sm"
id="tx_audio"
aria-label=".form-select-sm"
@change="saveModemConfig"
@change="setConfig"
v-model="settings.output_device"
v-html="audio.getOutputDevices()"
></select>
@ -103,7 +103,7 @@ import { startModem, stopModem } from "../js/api";
<select
class="form-select form-select-sm"
id="tx_delay"
@change="saveModemConfig"
@change="setConfig"
v-model.number="settings.tx_delay"
>
<option value="0">0</option>
@ -136,7 +136,7 @@ import { startModem, stopModem } from "../js/api";
<select
class="form-select form-select-sm"
id="tuning_range_fmin"
@change="saveModemConfig"
@change="setConfig"
v-model.number="settings.tuning_range_fmin"
>
<option value="-50">-50</option>
@ -149,7 +149,7 @@ import { startModem, stopModem } from "../js/api";
<select
class="form-select form-select-sm"
id="tuning_range_fmax"
@change="saveModemConfig"
@change="setConfig"
v-model.number="settings.tuning_range_fmax"
>
<option value="50">50</option>
@ -166,7 +166,7 @@ import { startModem, stopModem } from "../js/api";
aria-label=".form-select-sm"
id="beaconInterval"
style="width: 6rem"
@change="saveModemConfig"
@change="setConfig"
v-model="settings.beacon_interval"
>
<option value="60">60 secs</option>
@ -187,7 +187,7 @@ import { startModem, stopModem } from "../js/api";
class="form-check-input"
type="checkbox"
id="fftSwitch"
@change="saveModemConfig"
@change="setConfig"
v-model="settings.enable_fft"
/>
<label class="form-check-label" for="fftSwitch">Waterfall</label>
@ -202,7 +202,7 @@ import { startModem, stopModem } from "../js/api";
class="form-check-input"
type="checkbox"
id="scatterSwitch"
@change="saveModemConfig"
@change="setConfig"
v-model="settings.enable_scatter"
/>
<label class="form-check-label" for="scatterSwitch">Scatter</label>
@ -218,7 +218,7 @@ import { startModem, stopModem } from "../js/api";
type="checkbox"
id="250HzModeSwitch"
v-model="settings.low_bandwidth_mode"
@change="saveModemConfig"
@change="setConfig"
/>
<label class="form-check-label" for="250HzModeSwitch">250Hz</label>
</div>
@ -233,7 +233,7 @@ import { startModem, stopModem } from "../js/api";
type="checkbox"
id="respondCQSwitch"
v-model="settings.respond_to_cq"
@change="saveModemConfig"
@change="setConfig"
/>
<label class="form-check-label" for="respondCQSwitch">QRV</label>
</div>
@ -245,7 +245,7 @@ import { startModem, stopModem } from "../js/api";
<select
class="form-select form-select-sm"
id="rx_buffer_size"
@change="saveModemConfig"
@change="setConfig"
v-model.number="settings.rx_buffer_size"
>
<option value="1">1</option>

View file

@ -1,5 +1,5 @@
<script setup lang="ts">
import { saveModemConfig } from "../js/api";
import { setConfig } from "../js/api";
import { setActivePinia } from "pinia";
import pinia from "../store/index";
@ -16,7 +16,7 @@ import { settingsStore as settings} from "../store/settingsStore.js";
class="form-select form-select-sm"
aria-label=".form-select-sm"
id="rigcontrol_radiocontrol"
@change="saveModemConfig"
@change="setConfig"
v-model="settings.radiocontrol"
>
<option selected value="disabled">

View file

@ -1,5 +1,5 @@
<script setup lang="ts">
import { saveModemConfig } from "../js/api";
import { setConfig } from "../js/api";
import { setActivePinia } from "pinia";
import pinia from "../store/index";
@ -21,7 +21,7 @@ import { settingsStore as settings} from "../store/settingsStore.js";
id="myCall"
aria-label="Station Callsign"
aria-describedby="basic-addon1"
@change="saveModemConfig"
@change="setConfig"
v-model="settings.mycall"
/>
</div>
@ -32,7 +32,7 @@ import { settingsStore as settings} from "../store/settingsStore.js";
<select
class="form-select form-select-sm w-50"
id="myCallSSID"
@change="saveModemConfig"
@change="setConfig"
v-model.number="settings.myssid"
>
<option selected value="0">0</option>
@ -65,7 +65,7 @@ import { settingsStore as settings} from "../store/settingsStore.js";
maxlength="6"
aria-label="Station Grid Locator"
aria-describedby="basic-addon1"
@change="saveModemConfig"
@change="setConfig"
v-model="settings.mygrid"
/>
</div>

View file

@ -1,5 +1,5 @@
<script setup lang="ts">
import { saveModemConfig } from "../js/api";
import { setConfig } from "../js/api";
import { setActivePinia } from "pinia";
import pinia from "../store/index";
@ -18,7 +18,7 @@ import { settingsStore as settings} from "../store/settingsStore.js";
class="form-check-input"
type="checkbox"
id="ExplorerSwitch"
@change="saveModemConfig"
@change="setConfig"
v-model="settings.enable_explorer"
/>
<label class="form-check-label" for="ExplorerSwitch">Publish</label>
@ -33,7 +33,7 @@ import { settingsStore as settings} from "../store/settingsStore.js";
class="form-check-input"
type="checkbox"
id="ExplorerStatsSwitch"
@change="saveModemConfig"
@change="setConfig"
v-model="settings.explorer_stats"
/>
<label class="form-check-label" for="ExplorerStatsSwitch"

View file

@ -1,4 +1,3 @@
import { getFromServer, postToServer } from "./rest.js";
import { settingsStore as settings } from "../store/settingsStore.js";
function buildURL(endpoint) {
@ -37,6 +36,10 @@ export async function apiPost(endpoint, payload = {}) {
}
}
export function getVersion() {
return apiGet("/version");
}
export function getConfig() {
return apiGet("/config");
}
@ -53,6 +56,18 @@ export function getSerialDevices() {
return apiGet("/devices/serial");
}
export function setModemBeacon(enabled = false) {
return apiPost("/modem/beacon", { enabled: enabled });
}
export function sendModemCQ() {
return apiPost("/modem/cqcqcq");
}
export function sendModemPing(dxcall) {
return apiPost("/modem/cqcqcq", { dxcall: dxcall });
}
export function startModem() {
return apiPost("/modem/start");
}
@ -64,6 +79,7 @@ export function stopModem() {
export function getModemVersion() {
getFromServer("/version");
}
export function getModemCurrentState() {
getFromServer(settings.modem_host, settings.modem_port, "modem/state", null);
}

View file

@ -1,292 +0,0 @@
//var net = require("net");
var net = require("node:net");
// ----------------- init pinia stores -------------
import { setActivePinia } from "pinia";
import pinia from "../store/index";
setActivePinia(pinia);
import { useAudioStore } from "../store/audioStore.js";
const audioStore = useAudioStore(pinia);
import { settingsStore as settings} from "../store/settingsStore.js";
import { useStateStore } from "../store/stateStore.js";
const state = useStateStore(pinia);
var daemon = new net.Socket();
var socketchunk = []; // Current message, per connection.
// global to keep track of daemon connection error emissions
var daemonShowConnectStateError = 1;
setTimeout(connectDAEMON, 500);
function connectDAEMON() {
if (daemonShowConnectStateError == 1) {
console.log("connecting to daemon");
}
//clear message buffer after reconnecting or initial connection
socketchunk = [];
daemon.connect(settings.daemon_port, settings.daemon_host);
//client.setTimeout(5000);
}
daemon.on("connect", function () {
console.log("daemon connection established");
state.modem_connection = "connected";
daemonShowConnectStateError = 1;
});
daemon.on("error", function (err) {
if (daemonShowConnectStateError == 1) {
console.log("daemon connection error");
console.log("Make sure the daemon is started.");
console.log('Run "python daemon.py" in the modem directory.');
console.log(err);
daemonShowConnectStateError = 0;
}
setTimeout(connectDAEMON, 500);
daemon.destroy();
});
/*
client.on('close', function(data) {
console.log(' Modem connection closed');
setTimeout(connectModem, 2000)
let Data = {
daemon_connection: daemon.readyState,
};
ipcRenderer.send('request-update-daemon-connection', Data);
});
*/
daemon.on("end", function (data) {
console.log("daemon connection ended");
console.log(data);
daemon.destroy();
setTimeout(connectDAEMON, 500);
});
//exports.writeDaemonCommand = function(command){
//writeDaemonCommand = function (command) {
function writeDaemonCommand(command) {
// we use the writingCommand function to update our TCPIP state because we are calling this function a lot
// if socket opened, we are able to run commands
if (daemon.readyState == "open") {
//uiMain.setDAEMONconnection('open')
daemon.write(command + "\n");
}
if (daemon.readyState == "closed") {
//uiMain.setDAEMONconnection('closed')
}
if (daemon.readyState == "opening") {
//uiMain.setDAEMONconnection('opening')
}
}
// "https://stackoverflow.com/questions/9070700/nodejs-net-createserver-large-amount-of-data-coming-in"
daemon.on("data", function (socketdata) {
/*
inspired by:
stackoverflow.com questions 9070700 nodejs-net-createserver-large-amount-of-data-coming-in
*/
socketdata = socketchunk.join("\n") + socketdata.toString("utf8"); //append incoming data to socketchunk
//socketdata = socketdata.toString("utf8"); // convert data to string
//socketchunk += socketdata; // append data to buffer so we can stick long data together
// check if we received begin and end of json data
if (socketdata.startsWith('{"') && socketdata.endsWith('"}\n')) {
var data = "";
// split data into chunks if we received multiple commands
socketchunk = socketdata.split("\n");
data = JSON.parse(socketchunk[0]);
// search for empty entries in socketchunk and remove them
for (var i = 0; i < socketchunk.length; i++) {
if (socketchunk[i] === "") {
socketchunk.splice(i, 1);
}
}
//iterate through socketchunks array to execute multiple commands in row
for (i = 0; i < socketchunk.length; i++) {
//check if data is not empty
if (socketchunk[i].length > 0) {
//try to parse JSON
try {
data = JSON.parse(socketchunk[i]);
} catch (e) {
console.log(e); // "SyntaxError
//daemonLog.debug(socketchunk[i]);
socketchunk = [];
}
}
console.log(data);
if (data["command"] == "daemon_state") {
// update audio devices by putting them to audio store
audioStore.inputDevices = data["input_devices"];
audioStore.outputDevices = data["output_devices"];
settings.serial_devices = data["serial_devices"];
state.python_version = data["python_version"];
state.modem_version = data["version"];
state.modem_running_state = data["daemon_state"][0]["status"];
state.rigctld_started = data["rigctld_state"][0]["status"];
//state.rigctld_process = data["daemon_state"][0]["rigctld_process"];
}
if (data["command"] == "test_hamlib") {
//
}
if (data["command_response"] == "stop_modem") {
switch (data["status"]) {
case "OK":
state.modem_running_state = "running";
break;
default:
state.modem_running_state = "stopped";
}
}
}
//finally delete message buffer
socketchunk = [];
}
});
// START Modem
// ` `== multi line string
export function startModem() {
var json_command = JSON.stringify({
type: "set",
command: "start_modem",
parameter: [
{
mycall: settings.mycall + "-" + settings.myssid,
mygrid: settings.mygrid,
rx_audio: settings.rx_audio,
tx_audio: settings.tx_audio,
radiocontrol: settings.radiocontrol,
devicename: settings.hamlib_deviceid,
deviceport: settings.hamlib_deviceport,
pttprotocol: settings.hamlib_pttprotocol,
pttport: settings.hamlib_ptt_port,
serialspeed: settings.hamlib_serialspeed,
data_bits: settings.hamlib_data_bits,
stop_bits: settings.hamlib_stop_bits,
handshake: settings.hamlib_handshake,
rigctld_port: settings.hamlib_rigctld_port,
rigctld_ip: settings.hamlib_rigctld_ip,
enable_scatter: settings.enable_scatter,
enable_fft: settings.enable_fft,
enable_fsk: settings.enable_fsk,
low_bandwidth_mode: settings.low_bandwidth_mode,
tuning_range_fmin: settings.tuning_range_fmin,
tuning_range_fmax: settings.tuning_range_fmax,
tx_audio_level: settings.tx_audio_level,
rx_audio_level: settings.rx_audio_level,
respond_to_cq: settings.respond_to_cq,
rx_buffer_size: settings.rx_buffer_size,
enable_explorer: settings.enable_explorer,
enable_stats: settings.explorer_stats,
enable_auto_tune: settings.auto_tune,
tx_delay: settings.tx_delay,
tci_ip: settings.tci_ip,
tci_port: settings.tci_port,
enable_mesh: settings.enable_mesh_features,
},
],
});
console.log(json_command);
writeDaemonCommand(json_command);
}
// STOP Modem
//exports.stopModem = function () {
export function stopModem() {
var command =
'{"type" : "set", "command": "stop_modem" , "parameter": "---" }';
writeDaemonCommand(command);
}
// TEST HAMLIB
function testHamlib(
//exports.testHamlib = function (
radiocontrol,
devicename,
deviceport,
serialspeed,
pttprotocol,
pttport,
data_bits,
stop_bits,
handshake,
rigctld_ip,
rigctld_port,
) {
var json_command = JSON.stringify({
type: "get",
command: "test_hamlib",
parameter: [
{
radiocontrol: radiocontrol,
devicename: devicename,
deviceport: deviceport,
pttprotocol: pttprotocol,
pttport: pttport,
serialspeed: serialspeed,
data_bits: data_bits,
stop_bits: stop_bits,
handshake: handshake,
rigctld_port: rigctld_port,
rigctld_ip: rigctld_ip,
},
],
});
console.log(json_command);
writeDaemonCommand(json_command);
}
export function startRigctld() {
var json_command = JSON.stringify({
type: "set",
command: "start_rigctld",
parameter: [
{
hamlib_deviceid: settings.hamlib_deviceid,
hamlib_deviceport: settings.hamlib_deviceport,
hamlib_stop_bits: settings.hamlib_stop_bits,
hamlib_data_bits: settings.hamlib_data_bits,
hamlib_handshake: settings.hamlib_handshake,
hamlib_serialspeed: settings.hamlib_serialspeed,
hamlib_dtrstate: settings.hamlib_dtrstate,
hamlib_pttprotocol: settings.hamlib_pttprotocol,
hamlib_ptt_port: settings.hamlib_ptt_port,
hamlib_dcd: settings.hamlib_dcd,
hamlbib_serialspeed_ptt: settings.hamlib_serialspeed,
hamlib_rigctld_port: settings.hamlib_rigctld_port,
hamlib_rigctld_ip: settings.hamlib_rigctld_ip,
hamlib_rigctld_path: settings.hamlib_rigctld_path,
hamlib_rigctld_server_port: settings.hamlib_rigctld_server_port,
hamlib_rigctld_custom_args: settings.hamlib_rigctld_custom_args,
},
],
});
console.log(json_command);
writeDaemonCommand(json_command);
}
export function stopRigctld() {
let command = '{"type" : "set", "command": "stop_rigctld"}';
writeDaemonCommand(command);
}