This commit is contained in:
Stavros Korokithakis 2022-08-13 16:06:42 +03:00
parent c15b4adb37
commit ca54c9a9a8
No known key found for this signature in database
GPG Key ID: 26EA345ECD4C2A63

View File

@ -4,11 +4,15 @@
div.box{ div.box{
width: 90%; width: 90%;
} }
table { table {
border: 1px solid #222; border: 1px solid #222;
} }
</style> </style>
<script type="text/javascript"> <script type="text/javascript">
// 1660392804
var bitmaskDescArr = [];
function dec2bin(dec) { function dec2bin(dec) {
return reverse((dec >>> 0).toString(2)); return reverse((dec >>> 0).toString(2));
} }
@ -16,51 +20,76 @@ function reverse(str) {
return str.split("").reverse().join(""); return str.split("").reverse().join("");
} }
var bitmaskDescArr = []; async function loadBitmask(){
// using the function:
removeAll(document.getElementById('paramSelect'));
function loadBitmask(){
url = document.getElementById("built").value; url = document.getElementById("built").value;
console.log("fetching: "+ url);
if (url == ""){ if (url == ""){
return; return;
} }
fetch(url) const response = await fetch(url,{
method: 'GET',
headers: {
'Content-Type': 'text/plain'
}
})
.then(response => response.text()) .then(response => response.text())
.then(data => { .then(data => {
const parser = new DOMParser(); const parser = new DOMParser();
const xml = parser.parseFromString(data, "application/xml"); const xml = parser.parseFromString(data, "application/xml");
var params = xml.getElementsByTagName("param"); var params = xml.getElementsByTagName("param");
console.log("retrieved "+ params.length +" params")
for (var i = 0; i < params.length; i++) { for (var i = 0; i < params.length; i++) {
var param = params[i].attributes.name.nodeValue; //works, param name var param = params[i].attributes.name.nodeValue; //works, param name
param = param.replace("ArduPlane:","");
if(params[i].childNodes[1]){ if(params[i].childNodes[1]){
if( typeof params[i].childNodes[1].attributes.name == "object"){ if( typeof params[i].childNodes[1].attributes.name == "object"){
if(params[i].childNodes[1].attributes.name.nodeValue && params[i].childNodes[1].attributes.name.nodeValue == "Bitmask"){ if(params[i].childNodes[1].attributes.name.nodeValue && params[i].childNodes[1].attributes.name.nodeValue == "Bitmask"){
// // populate dropdown
var paramSelect = document.getElementById("paramSelect");
var el = document.createElement("option");
el.textContent = param.replace("ArduPlane:","");
el.value = param;
paramSelect.appendChild(el);
var bitmaskDescTxt = params[i].textContent.trim(); var bitmaskDescTxt = params[i].textContent.trim();
bitmaskDescArr[param] = bitmaskDescTxt.split(','); bitmaskDescArr[param] = bitmaskDescTxt.split(',');
} }
} }
} }
} }
}) })
.catch(console.error); .catch(console.error);
// console.log(bitmaskDescArr.length);
drawSelect();
}
function drawSelect(){
bitmaskDescArr.sort();
Object.keys(bitmaskDescArr)
.sort()
.forEach(function(p, i) {
// console.log(p);
var el = document.createElement("option");
el.textContent = p;
el.value = p;
document.getElementById("paramSelect").appendChild(el);
});
}
function removeAll(selectBox) {
while (selectBox.options.length > 0) {
selectBox.remove(0);
}
} }
function bitbox(bit){ function bitbox(bit){
dec = parseInt(document.getElementById("decimal").value); dec = parseInt(document.getElementById("decimal").value);
if(!dec ){dec = parseInt(0);}
if(document.getElementById(bit).checked == true){ if(document.getElementById(bit).checked == true){
dec += parseInt(bit); dec += parseInt(bit);
}else{ }else{
@ -75,11 +104,13 @@ function parseBitmask() {
document.getElementById("result").innerHTML=""; document.getElementById("result").innerHTML="";
var tbl = document.createElement('table'); var tbl = document.createElement('table');
tbl.style="border: 1px solid #222"; tbl.style="border: 1px solid black; width: 100%";
var tbdy = document.createElement('tbody'); var tbdy = document.createElement('tbody');
dec = document.getElementById("decimal").value; dec = document.getElementById("decimal").value;
binary=dec2bin(document.getElementById("decimal").value); binary=dec2bin(document.getElementById("decimal").value);
if(!binary){binary = parseInt(0);}
if(!dec ){dec = parseInt(0);}
var param = document.getElementById("paramSelect").value; var param = document.getElementById("paramSelect").value;
for (var bit = 0; bit < bitmaskDescArr[param].length; bit++) { for (var bit = 0; bit < bitmaskDescArr[param].length; bit++) {
@ -133,11 +164,9 @@ function parseBitmask() {
<div class="box"> <div class="box">
<div id="input"> <div id="input">
<select id="built" onChange="loadBitmask();"> <select id="built" onChange="loadBitmask();">
<option value="">select your build</option> <option value='https://arducustom.github.io/v/dev/ArduPlane/apm.pdef.xml'>ArduCustom Plane master</option>
<option value='https://arducustom.github.io/v/dev/ArduPlane/apm.pdef.xml'>ArduCustom master</option> <option value='https://arducustom.github.io/v/10.0/ArduPlane/apm.pdef.xml'>ArduCustom Plane v10</option>
<option value='https://arducustom.github.io/v/10.0/ArduPlane/apm.pdef.xml'>ArduCustom v10</option> <option value='https://arducustom.github.io/v/9.0/ArduPlane/apm.pdef.xml'>ArduCustom Plane v9.0</option>
<option value='https://arducustom.github.io/v/9.0/ArduPlane/apm.pdef.xml'>ArduCustom v9.0</option>
<!-- <option value='https://autotest.ardupilot.org/Parameters/ArduPlane/apm.pdef.xml'>ArduPlane offical master</option> -->
</select> </select>
<select id="paramSelect" onChange="parseBitmask();"> <select id="paramSelect" onChange="parseBitmask();">
</select> </select>
@ -147,10 +176,13 @@ function parseBitmask() {
<div id="result"> <div id="result">
</div> </div>
</div> </div>
<script type="text/javascript">
loadBitmask();
</script>
_(Many thanks to mfoos for writing this note.)_ _(Many thanks to mfoos for writing this note.)_
* * * * * *
<p style="font-size:80%; font-style: italic"> <p style="font-size:80%; font-style: italic">