1
0
Fork 0
mirror of https://github.com/iNavFlight/inav-configurator.git synced 2025-07-14 20:10:11 +03:00

Merge pull request #1485 from kernel-machine/blackbox_gui_for_fields

Blackbox gui for fields
This commit is contained in:
Paweł Spychalski 2022-03-14 15:01:54 +01:00 committed by GitHub
commit 2e6be9fdcc
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
5 changed files with 145 additions and 41 deletions

View file

@ -4065,5 +4065,35 @@
},
"illegalStateRestartRequired": {
"message": "Illegal state. Restart required."
},
"blackboxFields": {
"message": "Blackbox fields"
},
"BLACKBOX_FEATURE_NAV_ACC": {
"message": "Navigation accelerometer"
},
"BLACKBOX_FEATURE_NAV_POS": {
"message": "Navigation position estimation"
},
"BLACKBOX_FEATURE_NAV_PID": {
"message": "Navigation PID"
},
"BLACKBOX_FEATURE_MAG": {
"message": "Magnetometer"
},
"BLACKBOX_FEATURE_ACC": {
"message": "Accelerometer"
},
"BLACKBOX_FEATURE_ATTITUDE": {
"message": "Attitude"
},
"BLACKBOX_FEATURE_RC_DATA": {
"message": "RC data"
},
"BLACKBOX_FEATURE_RC_COMMAND": {
"message": "RC command"
},
"BLACKBOX_FEATURE_MOTORS": {
"message": "Motors output"
}
}

View file

@ -1429,6 +1429,7 @@ var mspHelper = (function (gui) {
BLACKBOX.blackboxDevice = data.getUint8(1);
BLACKBOX.blackboxRateNum = data.getUint16(2);
BLACKBOX.blackboxRateDenom = data.getUint16(4);
BLACKBOX.blackboxIncludeFlags = data.getUint32(6,true);
break;
case MSPCodes.MSP2_SET_BLACKBOX_CONFIG:
console.log("Blackbox config saved");
@ -2111,6 +2112,7 @@ var mspHelper = (function (gui) {
buffer.push(highByte(BLACKBOX.blackboxRateNum));
buffer.push(lowByte(BLACKBOX.blackboxRateDenom));
buffer.push(highByte(BLACKBOX.blackboxRateDenom));
buffer.push32(BLACKBOX.blackboxIncludeFlags);
//noinspection JSUnusedLocalSymbols
MSP.send_message(messageId, buffer, false, function (response) {
onDataCallback();

View file

@ -296,3 +296,13 @@
text-shadow: none;
opacity: 0.5;
}
.tab-onboard_logging .leftWrapper {
float: left;
width: calc(50% - 20px);
}
.tab-onboard_logging .rightWrapper {
float: right;
width: calc(50%);
}

View file

@ -25,11 +25,12 @@
</div>
</div>
<div class="require-blackbox-supported">
<div class="gui_box grey require-blackbox-config-supported">
<div class="leftWrapper">
<div class="config-section gui_box grey">
<div class="gui_box_titlebar">
<div class="spacer_box_title" data-i18n="blackboxConfiguration"></div>
</div>
<div class="spacer_box config-section">
<div class="spacer_box">
<div class="checkbox">
<input checked type="checkbox" data-bit="19" class="feature toggle" name="BLACKBOX" title="BLACKBOX" id="feature-19-2">
<label for="feature-19-2">
@ -46,8 +47,15 @@
</select>
<span>Portion of flight loop iterations to log (logging rate)</span>
</div>
<div class="line">
<a href="#" class="save-settings regular-button" data-i18n="blackboxButtonSave"></a>
</div>
</div>
</div>
<div class="rightWrapper">
<div class="config-section gui_box grey">
<div class="gui_box_titlebar">
<div class="spacer_box_title" data-i18n="blackboxFields"></div>
</div>
<div id="blackBoxFlagsDiv" class="spacer_box config-section">
</div>
</div>
</div>
@ -153,4 +161,9 @@
</div>
</div>
</div>
<div class="content_toolbar">
<div class="btn save_btn">
<a href="#" class="save-settings regular-button" data-i18n="blackboxButtonSave"></a>
</div>
</div>
</div>

View file

@ -11,6 +11,19 @@ TABS.onboard_logging.initialize = function (callback) {
let
saveCancelled, eraseCancelled;
//Add future blackbox values here and in messages.json, the checkbox are drawn by js
const blackBoxFields = [
"BLACKBOX_FEATURE_NAV_ACC",
"BLACKBOX_FEATURE_NAV_POS",
"BLACKBOX_FEATURE_NAV_PID",
"BLACKBOX_FEATURE_MAG",
"BLACKBOX_FEATURE_ACC",
"BLACKBOX_FEATURE_ATTITUDE",
"BLACKBOX_FEATURE_RC_DATA",
"BLACKBOX_FEATURE_RC_COMMAND",
"BLACKBOX_FEATURE_MOTORS",
];
if (GUI.active_tab != 'onboard_logging') {
GUI.active_tab = 'onboard_logging';
googleAnalytics.sendAppView('onboard_logging');
@ -97,7 +110,7 @@ TABS.onboard_logging.initialize = function (callback) {
BLACKBOX.blackboxRateNum = parseInt(rate[0], 10);
BLACKBOX.blackboxRateDenom = parseInt(rate[1], 10);
BLACKBOX.blackboxDevice = parseInt($(".blackboxDevice select").val(), 10);
BLACKBOX.blackboxIncludeFlags = getIncludeFlags();
helper.features.reset();
helper.features.fromUI($('.require-blackbox-supported'));
helper.features.execute(function () {
@ -106,6 +119,29 @@ TABS.onboard_logging.initialize = function (callback) {
});
}
//Add checkboxes for each blackbox field
const blackboxFieldsDiv = $("#blackBoxFlagsDiv");
for (let i = 0; i < blackBoxFields.length; i++) {
const FIELD_ID = blackBoxFields[i];
const isEnabled = (BLACKBOX.blackboxIncludeFlags & 1<<i) !==0;
const input = $('<input type="checkbox" class="toggle feature" />')
input.attr("id",FIELD_ID);
input.attr("checked",isEnabled);
const label = $("<label></label>");
label.attr("for",FIELD_ID)
const span = $('<span></span>');
span.html(chrome.i18n.getMessage(FIELD_ID))
label.append(span);
const checkbox = $('<div class="checkbox"></div>')
.append([
input,label
])
blackboxFieldsDiv.append(checkbox);
}
populateLoggingRates();
populateDevices();
@ -389,6 +425,19 @@ TABS.onboard_logging.initialize = function (callback) {
eraseCancelled = true;
$(".dataflash-confirm-erase")[0].close();
}
function getIncludeFlags(){
let flags = 0;
for (let i = 0; i < blackBoxFields.length; i++) {
const FIELD_ID = blackBoxFields[i];
const checkbox = $("#"+FIELD_ID);
if(checkbox.prop("checked")){
flags=flags|1<<i;
}
}
return flags;
}
};
TABS.onboard_logging.cleanup = function (callback) {