diff --git a/_locales/en/messages.json b/_locales/en/messages.json index 3518e48d..b5a7ae8c 100755 --- a/_locales/en/messages.json +++ b/_locales/en/messages.json @@ -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" } } diff --git a/js/msp/MSPHelper.js b/js/msp/MSPHelper.js index 5cb8b14a..b362d94f 100644 --- a/js/msp/MSPHelper.js +++ b/js/msp/MSPHelper.js @@ -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(); diff --git a/src/css/tabs/onboard_logging.css b/src/css/tabs/onboard_logging.css index bae54eb8..2fde9551 100644 --- a/src/css/tabs/onboard_logging.css +++ b/src/css/tabs/onboard_logging.css @@ -295,4 +295,14 @@ pointer-events: none; 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%); } \ No newline at end of file diff --git a/tabs/onboard_logging.html b/tabs/onboard_logging.html index d75a95ae..ed3651d7 100644 --- a/tabs/onboard_logging.html +++ b/tabs/onboard_logging.html @@ -25,11 +25,12 @@
-
-
-
-
-
+
+
+
+
+
+
-
-
- -
-
-
- Outboard serial logging device +
+
+
+
-
-
-

+
+
+ +
+
+
+ Outboard serial logging device +
+
+
+

+
+
-
+
Onboard dataflash chip @@ -122,35 +130,40 @@

-
-
-
-
-
- Onboard SD card -
+
+
+
+
+
+ Onboard SD card
-
-
-
-
-
+
+
+
+
+
+
+ +

-

- -
-
    -
  • -
    -
  • -
  • -
    -
  • -
-
+
+
    +
  • +
    +
  • +
  • +
    +
  • +
+
+
+ +
+
+
diff --git a/tabs/onboard_logging.js b/tabs/onboard_logging.js index 6b8d5f09..e2642205 100644 --- a/tabs/onboard_logging.js +++ b/tabs/onboard_logging.js @@ -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<') + input.attr("id",FIELD_ID); + input.attr("checked",isEnabled); + + const label = $(""); + label.attr("for",FIELD_ID) + + const span = $(''); + span.html(chrome.i18n.getMessage(FIELD_ID)) + label.append(span); + + const checkbox = $('
') + .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<