From c2f51237c023f17803064d10fbc3de567d48152b Mon Sep 17 00:00:00 2001 From: Bas Delfos Date: Mon, 31 Jul 2017 23:47:50 +0200 Subject: [PATCH] Fixed blackbox configuration for BF 3.2 --- js/fc.js | 1 + js/msp/MSPHelper.js | 6 +++ tabs/onboard_logging.js | 86 +++++++++++++++++++++++++++-------------- 3 files changed, 64 insertions(+), 29 deletions(-) diff --git a/js/fc.js b/js/fc.js index 0728c8d2..820b7f6b 100644 --- a/js/fc.js +++ b/js/fc.js @@ -286,6 +286,7 @@ var FC = { blackboxDevice: 0, blackboxRateNum: 1, blackboxRateDenom: 1, + blackboxPDenom: 0, }; TRANSPONDER = { diff --git a/js/msp/MSPHelper.js b/js/msp/MSPHelper.js index caf1803d..495b4634 100644 --- a/js/msp/MSPHelper.js +++ b/js/msp/MSPHelper.js @@ -1024,6 +1024,9 @@ MspHelper.prototype.process_data = function(dataHandler) { BLACKBOX.blackboxDevice = data.readU8(); BLACKBOX.blackboxRateNum = data.readU8(); BLACKBOX.blackboxRateDenom = data.readU8(); + if (semver.gte(CONFIG.apiVersion, "1.36.0")) { + BLACKBOX.blackboxPDenom = data.readU16(); + } break; case MSPCodes.MSP_SET_BLACKBOX_CONFIG: console.log("Blackbox config saved"); @@ -1488,6 +1491,9 @@ MspHelper.prototype.crunch = function(code) { buffer.push8(BLACKBOX.blackboxDevice) .push8(BLACKBOX.blackboxRateNum) .push8(BLACKBOX.blackboxRateDenom); + if (semver.gte(CONFIG.apiVersion, "1.36.0")) { + buffer.push16(BLACKBOX.blackboxPDenom); + } break; default: diff --git a/tabs/onboard_logging.js b/tabs/onboard_logging.js index 47c474a9..f7741ae3 100644 --- a/tabs/onboard_logging.js +++ b/tabs/onboard_logging.js @@ -120,11 +120,14 @@ TABS.onboard_logging.initialize = function (callback) { if (BLACKBOX.supported) { $(".tab-onboard_logging a.save-settings").click(function() { - var rate = loggingRatesSelect.val().split('/'); - - BLACKBOX.blackboxRateNum = parseInt(rate[0], 10); - BLACKBOX.blackboxRateDenom = parseInt(rate[1], 10); - BLACKBOX.blackboxDevice = parseInt(deviceSelect.val(), 10); + if (semver.gte(CONFIG.apiVersion, "1.36.0")) { + BLACKBOX.blackboxPDenom = loggingRatesSelect.val(); + } else { + var rate = loggingRatesSelect.val().split('/'); + BLACKBOX.blackboxRateNum = parseInt(rate[0], 10); + BLACKBOX.blackboxRateDenom = parseInt(rate[1], 10); + BLACKBOX.blackboxDevice = parseInt(deviceSelect.val(), 10); + } MSP.send_message(MSPCodes.MSP_SET_BLACKBOX_CONFIG, mspHelper.crunch(MSPCodes.MSP_SET_BLACKBOX_CONFIG), false, save_to_eeprom); }); @@ -175,35 +178,60 @@ TABS.onboard_logging.initialize = function (callback) { function populateLoggingRates(loggingRatesSelect) { // Offer a reasonable choice of logging rates (if people want weird steps they can use CLI) - var + var loggingRates = []; + var pidRate = 8000 / PID_ADVANCED_CONFIG.gyro_sync_denom / PID_ADVANCED_CONFIG.pid_process_denom; + + if (semver.gte(CONFIG.apiVersion, "1.36.0")) { loggingRates = [ - {num: 1, denom: 1}, - {num: 1, denom: 2}, - {num: 1, denom: 3}, - {num: 1, denom: 4}, - {num: 1, denom: 5}, - {num: 1, denom: 6}, - {num: 1, denom: 7}, - {num: 1, denom: 8}, - {num: 1, denom: 16}, - {num: 1, denom: 32} + {text: "Disabled", hz: 0, p_denom: 0}, + {text: "500 Hz", hz: 500, p_denom: 16}, + {text: "1 kHz", hz: 1000, p_denom: 32}, + {text: "1.5 kHz", hz: 1500, p_denom: 48}, + {text: "2 kHz", hz: 2000, p_denom: 64}, + {text: "4 kHz", hz: 4000, p_denom: 128}, + {text: "8 kHz", hz: 8000, p_denom: 256}, + {text: "16 kHz", hz: 16000, p_denom: 512}, + {text: "32 kHz", hz: 32000, p_denom: 1024}, ]; - var pidRate = 8000 / PID_ADVANCED_CONFIG.gyro_sync_denom / PID_ADVANCED_CONFIG.pid_process_denom; - for (var i = 0; i < loggingRates.length; i++) { - var loggingRate = Math.round(pidRate / loggingRates[i].denom); - var loggingRateUnit = " Hz"; - if (loggingRate !== Infinity) { - if (gcd(loggingRate, 1000) === 1000) { - loggingRate /= 1000; - loggingRateUnit = " KHz"; + $.each(loggingRates, function(index, item) { + if (pidRate >= item.hz || item.hz == 0) { + loggingRatesSelect.append(new Option(item.text, item.p_denom)); } - } - loggingRatesSelect.append(''); - + }); + + loggingRatesSelect.val(BLACKBOX.blackboxPDenom); + } + else { + loggingRates = [ + {num: 1, denom: 1}, + {num: 1, denom: 2}, + {num: 1, denom: 3}, + {num: 1, denom: 4}, + {num: 1, denom: 5}, + {num: 1, denom: 6}, + {num: 1, denom: 7}, + {num: 1, denom: 8}, + {num: 1, denom: 16}, + {num: 1, denom: 32} + ]; + + + for (var i = 0; i < loggingRates.length; i++) { + var loggingRate = Math.round(pidRate / loggingRates[i].denom); + var loggingRateUnit = " Hz"; + if (loggingRate !== Infinity) { + if (gcd(loggingRate, 1000) === 1000) { + loggingRate /= 1000; + loggingRateUnit = " KHz"; + } + } + loggingRatesSelect.append(''); + + } + loggingRatesSelect.val(BLACKBOX.blackboxRateNum + '/' + BLACKBOX.blackboxRateDenom); } - loggingRatesSelect.val(BLACKBOX.blackboxRateNum + '/' + BLACKBOX.blackboxRateDenom); } function formatFilesizeKilobytes(kilobytes) {