Fixed blackbox configuration for BF 3.2

10.3.x-maintenance
Bas Delfos 2017-07-31 23:47:50 +02:00
parent 05426a3f7f
commit c2f51237c0
3 changed files with 64 additions and 29 deletions

View File

@ -286,6 +286,7 @@ var FC = {
blackboxDevice: 0, blackboxDevice: 0,
blackboxRateNum: 1, blackboxRateNum: 1,
blackboxRateDenom: 1, blackboxRateDenom: 1,
blackboxPDenom: 0,
}; };
TRANSPONDER = { TRANSPONDER = {

View File

@ -1024,6 +1024,9 @@ MspHelper.prototype.process_data = function(dataHandler) {
BLACKBOX.blackboxDevice = data.readU8(); BLACKBOX.blackboxDevice = data.readU8();
BLACKBOX.blackboxRateNum = data.readU8(); BLACKBOX.blackboxRateNum = data.readU8();
BLACKBOX.blackboxRateDenom = data.readU8(); BLACKBOX.blackboxRateDenom = data.readU8();
if (semver.gte(CONFIG.apiVersion, "1.36.0")) {
BLACKBOX.blackboxPDenom = data.readU16();
}
break; break;
case MSPCodes.MSP_SET_BLACKBOX_CONFIG: case MSPCodes.MSP_SET_BLACKBOX_CONFIG:
console.log("Blackbox config saved"); console.log("Blackbox config saved");
@ -1488,6 +1491,9 @@ MspHelper.prototype.crunch = function(code) {
buffer.push8(BLACKBOX.blackboxDevice) buffer.push8(BLACKBOX.blackboxDevice)
.push8(BLACKBOX.blackboxRateNum) .push8(BLACKBOX.blackboxRateNum)
.push8(BLACKBOX.blackboxRateDenom); .push8(BLACKBOX.blackboxRateDenom);
if (semver.gte(CONFIG.apiVersion, "1.36.0")) {
buffer.push16(BLACKBOX.blackboxPDenom);
}
break; break;
default: default:

View File

@ -120,11 +120,14 @@ TABS.onboard_logging.initialize = function (callback) {
if (BLACKBOX.supported) { if (BLACKBOX.supported) {
$(".tab-onboard_logging a.save-settings").click(function() { $(".tab-onboard_logging a.save-settings").click(function() {
var rate = loggingRatesSelect.val().split('/'); if (semver.gte(CONFIG.apiVersion, "1.36.0")) {
BLACKBOX.blackboxPDenom = loggingRatesSelect.val();
BLACKBOX.blackboxRateNum = parseInt(rate[0], 10); } else {
BLACKBOX.blackboxRateDenom = parseInt(rate[1], 10); var rate = loggingRatesSelect.val().split('/');
BLACKBOX.blackboxDevice = parseInt(deviceSelect.val(), 10); 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); 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) { function populateLoggingRates(loggingRatesSelect) {
// Offer a reasonable choice of logging rates (if people want weird steps they can use CLI) // 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 = [ loggingRates = [
{num: 1, denom: 1}, {text: "Disabled", hz: 0, p_denom: 0},
{num: 1, denom: 2}, {text: "500 Hz", hz: 500, p_denom: 16},
{num: 1, denom: 3}, {text: "1 kHz", hz: 1000, p_denom: 32},
{num: 1, denom: 4}, {text: "1.5 kHz", hz: 1500, p_denom: 48},
{num: 1, denom: 5}, {text: "2 kHz", hz: 2000, p_denom: 64},
{num: 1, denom: 6}, {text: "4 kHz", hz: 4000, p_denom: 128},
{num: 1, denom: 7}, {text: "8 kHz", hz: 8000, p_denom: 256},
{num: 1, denom: 8}, {text: "16 kHz", hz: 16000, p_denom: 512},
{num: 1, denom: 16}, {text: "32 kHz", hz: 32000, p_denom: 1024},
{num: 1, denom: 32}
]; ];
var pidRate = 8000 / PID_ADVANCED_CONFIG.gyro_sync_denom / PID_ADVANCED_CONFIG.pid_process_denom; $.each(loggingRates, function(index, item) {
for (var i = 0; i < loggingRates.length; i++) { if (pidRate >= item.hz || item.hz == 0) {
var loggingRate = Math.round(pidRate / loggingRates[i].denom); loggingRatesSelect.append(new Option(item.text, item.p_denom));
var loggingRateUnit = " Hz";
if (loggingRate !== Infinity) {
if (gcd(loggingRate, 1000) === 1000) {
loggingRate /= 1000;
loggingRateUnit = " KHz";
} }
} });
loggingRatesSelect.append('<option value="' + loggingRates[i].num + '/' + loggingRates[i].denom + '">'
+ loggingRate + loggingRateUnit + ' (' + Math.round(loggingRates[i].num / loggingRates[i].denom * 100) + '%)</option>'); 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('<option value="' + loggingRates[i].num + '/' + loggingRates[i].denom + '">'
+ loggingRate + loggingRateUnit + ' (' + Math.round(loggingRates[i].num / loggingRates[i].denom * 100) + '%)</option>');
}
loggingRatesSelect.val(BLACKBOX.blackboxRateNum + '/' + BLACKBOX.blackboxRateDenom);
} }
loggingRatesSelect.val(BLACKBOX.blackboxRateNum + '/' + BLACKBOX.blackboxRateDenom);
} }
function formatFilesizeKilobytes(kilobytes) { function formatFilesizeKilobytes(kilobytes) {