diff --git a/ui/general/mavlink.js b/ui/general/mavlink.js
index 3ac3b43..4039d82 100644
--- a/ui/general/mavlink.js
+++ b/ui/general/mavlink.js
@@ -34,109 +34,89 @@ document.onload = InitPage();
// Save file button
document.getElementById("save").addEventListener("click", SaveSettings);
-
-
// This attempts to read the conf file, if it exists, then it will parse it and fill out the table
// if it fails then the values are loaded with defaults.
function InitPage() {
cockpit.script(scriptLocation + "cockpitScript.sh -v")
- .then((content) => version.innerHTML=content)
- .catch(error => Fail(error));
+ .then((content) => version.innerHTML=content)
+ .catch(error => Fail(error));
cockpit.script(scriptLocation + "cockpitScript.sh -u")
- .then(function(content) {
- ipsubnet1.innerHTML=content;
- ipsubnet2.innerHTML=content;
- })
- .catch(error => Fail(error));
+ .then(function(content) {
+ ipsubnet1.innerHTML=content;
+ ipsubnet2.innerHTML=content;
+ })
+ .catch(error => Fail(error));
file_location.innerHTML = confLocation + "main.conf";
cockpit.file(confLocation + "main.conf")
.read().then((content, tag) => SuccessReadFile(content))
.catch(error => FailureReadFile(error));
+}
- }
-
-function getValueByKey(text, sectionName, sectionLength, key){
+function getValueByKey(text, sectionName, sectionLength, key) {
//function to extract key values from a file with sections
//this should work if the section is commented out or not
var lines = text.split("\n");
var sectionBody = "";
for(let t = 0; t < lines.length; t++){
- if (lines[t] === sectionName || lines[t] === "#" + sectionName)
- {
+ if (lines[t] === sectionName || lines[t] === "#" + sectionName) {
for(let n = 0; n < sectionLength; n++){
if (lines[t].startsWith("#"))
- {
sectionBody += lines[t+n+1].slice(1) + "\n";
- }
else
sectionBody += lines[t+n+1] + "\n";
}
- break;
+ break;
}
}
if (sectionBody === "")
return null;
var regex = new RegExp("^" + key + " =(.*)$", "m");
var match = regex.exec(sectionBody);
- if(match)
+ if (match)
return match[1].trim();
else
return null;
}
-function isSectionEnabled(text, sectionName)
-{
+function isSectionEnabled(text, sectionName) {
var lines = text.split("\n");
for(let t = 0; t < lines.length; t++){
- if (lines[t] === sectionName)
- {
- if (!lines[t].startsWith("#"))
- {
+ if (lines[t] === sectionName) {
+ if (!lines[t].startsWith("#")) {
return "Enabled";
}
return "Disabled";
- break;
}
}
return "Disabled";
}
-function setSectionEnabled(text, sectionName, sectionLength, enabled)
-{
-
+function setSectionEnabled(text, sectionName, sectionLength, enabled) {
//if enabled, find the section and remove leading #
//if disabled, find the section and add leading #
//return content
var lines = text.split("\n");
- if (enabled)
- {
+ if (enabled) {
//do action to enable the section
for(let t = 0; t < lines.length; t++){
- if (lines[t] === "#" + sectionName)
- {
- for(let n = 0; n < sectionLength+1; n++){
- if (lines[t+n].startsWith("#"))
- {
- lines[t+n] = lines[t+n].slice(1);
- }
- }
+ if (lines[t] === "#" + sectionName) {
+ for(let n = 0; n < sectionLength+1; n++){
+ if (lines[t+n].startsWith("#")) {
+ lines[t+n] = lines[t+n].slice(1);
+ }
+ }
break;
}
- }
-
- }
- else
- {
+ }
+ } else {
//do action to disable the section
for(let t = 0; t < lines.length; t++){
- if (lines[t] === sectionName)
- {
+ if (lines[t] === sectionName) {
for(let n = 0; n < sectionLength+1; n++){
- lines[t+n] = "#" + lines[t+n];
-
+ lines[t+n] = "#" + lines[t+n];
}
break;
}
@@ -157,11 +137,9 @@ function setValueByKey(text, sectionName, sectionLength, key, value)
var lines = text.split("\n");
for(let t = 0; t < lines.length; t++){
- if (lines[t] === sectionName)
- {
+ if (lines[t] === sectionName) {
for(let n = 0; n < sectionLength; n++){
- if (lines[t+n+1].split('=')[0].trim() == key)
- {
+ if (lines[t+n+1].split('=')[0].trim() == key) {
lines[t+n+1] = key + " = " + value;
break;
}
@@ -170,13 +148,11 @@ function setValueByKey(text, sectionName, sectionLength, key, value)
}
return lines.join("\n");
-
-
}
function SuccessReadFile(content) {
- try{
-
+ try {
+
//FMU Endpoint
var currentfmuDevice = getValueByKey(content, "[UartEndpoint alpha]", 2, "Device");
var currentbaudRate = getValueByKey(content, "[UartEndpoint alpha]", 2, "Baud");
@@ -194,8 +170,8 @@ function SuccessReadFile(content) {
losPort.value = getValueByKey(content, "[UdpEndpoint alpha]", 3, "Port");
$(udpStatus).change(function() {
- if ($(this).val() === null)
- return;
+ if ($(this).val() === null) return;
+
if ($(this).val() == "Disabled") {
isUdpEnabled = "Disabled";
$(udpMode).attr("disabled", "disabled");
@@ -207,16 +183,13 @@ function SuccessReadFile(content) {
$(losHost).removeAttr("disabled");
$(losPort).removeAttr("disabled");
}
- }).trigger("change");
+ }).trigger("change");
-
-
AddDropDown(udpMode, udpModeArray, currentudpMode);
AddDropDown(udpStatus, udpStatusArray, isUdpEnabled);
// init state of UDP fields
- if (isUdpEnabled === "Disabled")
- {
+ if (isUdpEnabled === "Disabled") {
$(udpMode).attr("disabled", "disabled");
$(losHost).attr("disabled", "disabled");
$(losPort).attr("disabled", "disabled");
@@ -228,10 +201,9 @@ function SuccessReadFile(content) {
tcpHost.value = getValueByKey(content, "[TcpEndpoint alpha]", 3, "Address");
tcpPort.value = getValueByKey(content, "[TcpEndpoint alpha]", 3, "Port");
-
$(tcpStatus).change(function() {
- if ($(this).val() === null)
- return;
+ if ($(this).val() === null) return;
+
if ($(this).val() == "Disabled") {
istcpEnabled = "Disabled";
$(tcpHost).attr("disabled", "disabled");
@@ -241,45 +213,41 @@ function SuccessReadFile(content) {
$(tcpHost).removeAttr("disabled");
$(tcpPort).removeAttr("disabled");
}
- }).trigger("change");
+ }).trigger("change");
AddDropDown(tcpStatus, tcpStatusArray, istcpEnabled);
// init state of TCP fields
- if (istcpEnabled === "Disabled")
- {
+ if (istcpEnabled === "Disabled") {
$(tcpHost).attr("disabled", "disabled");
$(tcpPort).attr("disabled", "disabled");
}
-
-
}
- catch(e){
+ catch(e) {
FailureReadFile(e);
}
-
}
-function AddPathToDeviceFile(incomingArray){
+function AddPathToDeviceFile(incomingArray) {
for(let t = 0; t < incomingArray.length; t++){
incomingArray[t] = "/dev/" + incomingArray[t];
}
return incomingArray;
}
-function AddDropDown(box, theArray, defaultValue){
- try{
+function AddDropDown(box, theArray, defaultValue) {
+ try {
for(let t = 0; t < theArray.length; t++){
var option = document.createElement("option");
option.text = theArray[t];
box.add(option);
- if(defaultValue == option.text){
+ if(defaultValue == option.text) {
box.value = option.text;
}
}
}
- catch(e){
+ catch(e) {
Fail(e)
}
}
@@ -300,91 +268,80 @@ function FailureReadFile(error) {
function SaveSettings() {
- //lets do some validation
-
- var ipformat = /^(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)$/;
- var portformat = /^([1-9][0-9]{0,3}|[1-5][0-9]{4}|6[0-4][0-9]{3}|65[0-4][0-9]{2}|655[0-2][0-9]|6553[0-5])$/;
- var errorFlag = false;
- var errorText = "";
- if (!losHost.value.match(ipformat) && (isUdpEnabled==="Enabled")) {
- losHost.focus();
- errorText += "Error in the UDP Host Address!
";
- errorFlag = true;
- }
- if (!losPort.value.match(portformat) && (isUdpEnabled==="Enabled")) {
- losPort.focus();
- errorText += "Error in the UDP Port Number! (0-65535 allowed)
";
- errorFlag = true;
- }
- if (!tcpHost.value.match(ipformat) && (istcpEnabled==="Enabled")) {
- tcpHost.focus();
- errorText += "Error in the TCP Host Address, should be x.x.x.x
";
- errorFlag = true;
- }
- if (!tcpPort.value.match(portformat) && (istcpEnabled==="Enabled")) {
- tcpPort.focus();
- errorText += "Error in the TCP Port Number! (0-65535 allowed)
";
- errorFlag = true;
- }
-
- if (errorFlag)
- {
- result.style.color = "red";
- result.innerHTML = errorText;
- return;
- }
+ //lets do some validation
- //open the file for writing, and callback function for modification
+ var ipformat = /^(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)$/;
+ var portformat = /^([1-9][0-9]{0,3}|[1-5][0-9]{4}|6[0-4][0-9]{3}|65[0-4][0-9]{2}|655[0-2][0-9]|6553[0-5])$/;
+ var errorFlag = false;
+ var errorText = "";
- cockpit.file(confLocation + "main.conf")
+ if (!losHost.value.match(ipformat) && (isUdpEnabled==="Enabled")) {
+ losHost.focus();
+ errorText += "Error in the UDP Host Address!
";
+ errorFlag = true;
+ }
+ if (!losPort.value.match(portformat) && (isUdpEnabled==="Enabled")) {
+ losPort.focus();
+ errorText += "Error in the UDP Port Number! (0-65535 allowed)
";
+ errorFlag = true;
+ }
+ if (!tcpHost.value.match(ipformat) && (istcpEnabled==="Enabled")) {
+ tcpHost.focus();
+ errorText += "Error in the TCP Host Address, should be x.x.x.x
";
+ errorFlag = true;
+ }
+ if (!tcpPort.value.match(portformat) && (istcpEnabled==="Enabled")) {
+ tcpPort.focus();
+ errorText += "Error in the TCP Port Number! (0-65535 allowed)
";
+ errorFlag = true;
+ }
+
+ if (errorFlag) {
+ result.style.color = "red";
+ result.innerHTML = errorText;
+ return;
+ }
+
+ //open the file for writing, and callback function for modification
+ cockpit.file(confLocation + "main.conf")
.read().then((content, tag) => SuccessReadforSaveFile(content))
- .catch(error => FailureReadFile(error));
-
+ .catch(error => FailureReadFile(error));
}
function SuccessReadforSaveFile(content) {
- try{
+ try {
//if udp is disabled, then skip those
- if (isUdpEnabled == "Disabled")
- {
+ if (isUdpEnabled == "Disabled") {
content = setSectionEnabled(content, "[UdpEndpoint alpha]", 3, false);
- }
- else
- {
+ } else {
content = setSectionEnabled(content, "[UdpEndpoint alpha]", 3, true);
content = setValueByKey(content, "[UdpEndpoint alpha]",3, "Address", losHost.value )
content = setValueByKey(content, "[UdpEndpoint alpha]",3, "Port", losPort.value )
content = setValueByKey(content, "[UdpEndpoint alpha]",3, "Mode", udpMode.value )
}
- if (istcpEnabled == "Disabled")
- {
+ if (istcpEnabled == "Disabled") {
content = setSectionEnabled(content, "[TcpEndpoint alpha]", 2, false);
- }
- else
- {
+ } else {
content = setSectionEnabled(content, "[TcpEndpoint alpha]", 2, true);
content = setValueByKey(content, "[TcpEndpoint alpha]",2, "Address", tcpHost.value )
content = setValueByKey(content, "[TcpEndpoint alpha]",2, "Port", tcpPort.value )
- }
+ }
//at this point we have the contents of the file, we need to replace keys
content = setValueByKey(content, "[UartEndpoint alpha]",2, "Device", fmuDevice.value )
content = setValueByKey(content, "[UartEndpoint alpha]",2, "Baud", baudrate.value )
-
-
- cockpit.file(confLocation + "main.conf", { superuser : "try" }).replace(content)
- .then(Success)
- .catch(Fail);
+ cockpit.file(confLocation + "main.conf", { superuser : "try" }).replace(content)
+ .then(Success)
+ .catch(Fail);
- cockpit.spawn(["systemctl", "restart", "mavlink-router"], { superuser : "try" });
+ cockpit.spawn(["systemctl", "restart", "mavlink-router"], { superuser : "try" });
}
- catch(e){
+ catch(e) {
FailureReadFile(e);
}
-
}
function Success() {
@@ -397,5 +354,6 @@ function Fail(error) {
result.style.color = "red";
result.innerHTML = error.message;
}
+
// Send a 'init' message. This tells integration tests that we are ready to go
cockpit.transport.wait(function() { });