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:
commit
2e6be9fdcc
5 changed files with 145 additions and 41 deletions
|
@ -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"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -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();
|
||||||
|
|
|
@ -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%);
|
||||||
}
|
}
|
|
@ -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>
|
||||||
|
|
|
@ -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) {
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue