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

View file

@ -295,4 +295,14 @@
pointer-events: none; pointer-events: none;
text-shadow: none; text-shadow: none;
opacity: 0.5; 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> </div>
<div class="require-blackbox-supported"> <div class="require-blackbox-supported">
<div class="gui_box grey require-blackbox-config-supported"> <div class="leftWrapper">
<div class="gui_box_titlebar"> <div class="config-section gui_box grey">
<div class="spacer_box_title" data-i18n="blackboxConfiguration"></div> <div class="gui_box_titlebar">
</div> <div class="spacer_box_title" data-i18n="blackboxConfiguration"></div>
<div class="spacer_box config-section"> </div>
<div class="spacer_box">
<div class="checkbox"> <div class="checkbox">
<input checked type="checkbox" data-bit="19" class="feature toggle" name="BLACKBOX" title="BLACKBOX" id="feature-19-2"> <input checked type="checkbox" data-bit="19" class="feature toggle" name="BLACKBOX" title="BLACKBOX" id="feature-19-2">
<label for="feature-19-2"> <label for="feature-19-2">
@ -46,24 +47,31 @@
</select> </select>
<span>Portion of flight loop iterations to log (logging rate)</span> <span>Portion of flight loop iterations to log (logging rate)</span>
</div> </div>
<div class="line">
<a href="#" class="save-settings regular-button" data-i18n="blackboxButtonSave"></a>
</div> </div>
</div> </div>
</div> </div>
<div class="rightWrapper">
<div class="gui_box grey"> <div class="config-section gui_box grey">
<div class="gui_box_titlebar" align="left"> <div class="gui_box_titlebar">
<div class="spacer_box_title"> <div class="spacer_box_title" data-i18n="blackboxFields"></div>
Outboard serial logging device
</div> </div>
</div> <div id="blackBoxFlagsDiv" class="spacer_box config-section">
<div class="spacer_box">
<p data-i18n="serialLoggingSupportedNote"></p>
</div> </div>
</div> </div>
</div>
<div class="gui_box grey">
<div class="gui_box_titlebar" align="left">
<div class="spacer_box_title">
Outboard serial logging device
</div>
</div>
<div class="spacer_box">
<p data-i18n="serialLoggingSupportedNote"></p>
</div>
</div>
<div class="gui_box grey require-dataflash-supported"> <div class="gui_box grey require-dataflash-supported">
<div class="gui_box_titlebar" align="left"> <div class="gui_box_titlebar" align="left">
<div class="spacer_box_title"> <div class="spacer_box_title">
Onboard dataflash chip Onboard dataflash chip
@ -122,35 +130,40 @@
<p class="require-dataflash-not-present" data-i18n="dataflashNotPresentNote"></p> <p class="require-dataflash-not-present" data-i18n="dataflashNotPresentNote"></p>
<p class="require-dataflash-unsupported" data-i18n="dataflashFirmwareUpgradeRequired"></p> <p class="require-dataflash-unsupported" data-i18n="dataflashFirmwareUpgradeRequired"></p>
</div> </div>
</div> </div>
<div class="require-sdcard-supported"> <div class="require-sdcard-supported">
<div class="gui_box grey"> <div class="gui_box grey">
<div class="gui_box_titlebar" align="left"> <div class="gui_box_titlebar" align="left">
<div class="spacer_box_title"> <div class="spacer_box_title">
Onboard SD card Onboard SD card
</div>
</div> </div>
<div class="spacer_box"> </div>
<div class="sdcard"> <div class="spacer_box">
<div class="sdcard-icon"></div> <div class="sdcard">
<div class="sdcard-status"></div> <div class="sdcard-icon"></div>
</div> <div class="sdcard-status"></div>
</div>
<p data-i18n="sdcardNote"></p>
<p data-i18n="sdcardNote"></p> <div class="require-sdcard-ready">
<ul class="sdcard-contents">
<div class="require-sdcard-ready"> <li class="sdcard-other">
<ul class="sdcard-contents"> <div class="legend"></div>
<li class="sdcard-other"> </li>
<div class="legend"></div> <li class="sdcard-free">
</li> <div class="legend"></div>
<li class="sdcard-free"> </li>
<div class="legend"></div> </ul>
</li>
</ul>
</div>
</div> </div>
</div> </div>
</div> </div>
</div> </div>
</div> </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 let
saveCancelled, eraseCancelled; 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') { if (GUI.active_tab != 'onboard_logging') {
GUI.active_tab = 'onboard_logging'; GUI.active_tab = 'onboard_logging';
googleAnalytics.sendAppView('onboard_logging'); googleAnalytics.sendAppView('onboard_logging');
@ -97,7 +110,7 @@ TABS.onboard_logging.initialize = function (callback) {
BLACKBOX.blackboxRateNum = parseInt(rate[0], 10); BLACKBOX.blackboxRateNum = parseInt(rate[0], 10);
BLACKBOX.blackboxRateDenom = parseInt(rate[1], 10); BLACKBOX.blackboxRateDenom = parseInt(rate[1], 10);
BLACKBOX.blackboxDevice = parseInt($(".blackboxDevice select").val(), 10); BLACKBOX.blackboxDevice = parseInt($(".blackboxDevice select").val(), 10);
BLACKBOX.blackboxIncludeFlags = getIncludeFlags();
helper.features.reset(); helper.features.reset();
helper.features.fromUI($('.require-blackbox-supported')); helper.features.fromUI($('.require-blackbox-supported'));
helper.features.execute(function () { 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(); populateLoggingRates();
populateDevices(); populateDevices();
@ -389,6 +425,19 @@ TABS.onboard_logging.initialize = function (callback) {
eraseCancelled = true; eraseCancelled = true;
$(".dataflash-confirm-erase")[0].close(); $(".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) { TABS.onboard_logging.cleanup = function (callback) {