1
0
Fork 0
mirror of https://github.com/betaflight/betaflight-configurator.git synced 2025-07-23 00:05:22 +03:00

Changes after reviews

This commit is contained in:
Mark Haslinghuis 2021-09-27 19:29:02 +02:00
parent 2e0334c114
commit 48659bd6ec
No known key found for this signature in database
GPG key ID: 198B0F616296A584
7 changed files with 195 additions and 183 deletions

View file

@ -132,27 +132,31 @@ TuningSliders.initialize = function() {
TuningSliders.setExpertMode = function() {
this.expertMode = isExpertModeEnabled();
$('#slidersPidsBox, #slidersFilterBox').toggleClass('nonExpertModeSliders', !this.expertMode);
if (semver.gte(FC.CONFIG.apiVersion, API_VERSION_1_44)) {
// TODO: reset nonExpertModeSliders - changes after first movement
$('.tab-pid_tuning .DMaxGainSlider').toggle(this.expertMode);
$('.tab-pid_tuning .advancedSlider').toggle(this.expertMode);
$('.tab-pid_tuning .masterSlider').toggle(this.expertMode);
if (semver.gte(FC.CONFIG.apiVersion, API_VERSION_1_44)) {
document.getElementById('sliderDMaxGain').disabled = !this.expertMode;
document.getElementById('sliderIGain').disabled = !this.expertMode;
document.getElementById('sliderRollPitchRatio').disabled = !this.expertMode;
document.getElementById('sliderPitchPIGain').disabled = !this.expertMode;
document.getElementById('sliderMasterMultiplier').disabled = !this.expertMode;
$('.advancedSlider').toggleClass('disabledSliders', !this.expertMode);
$('.tab-pid_tuning .legacySlider').hide();
$('.legacyNonExpertModeSlidersNote').hide();
$('.subtab-pid .nonExpertModeSlidersNote').toggle(!this.pidSlidersUnavailable && !this.expertMode);
$('.subtab-filter .nonExpertModeSlidersNote').toggle((!this.GyroSliderUnavailable || !this.DTermSliderUnavailable) && !this.expertMode);
} else {
const dMinShow = parseInt($('.pid_tuning input[name="dMinRoll"]').val()) !== 0;
$('.tab-pid_tuning .DMaxGainSlider').toggle(this.expertMode && dMinShow);
$('.tab-pid_tuning .advancedSlider').hide();
$('.tab-pid_tuning .DMaxGainSlider').hide();
$('#slidersPidsBox, #slidersFilterBox').toggleClass('nonExpertModeSliders', !this.expertMode);
$('.tab-pid_tuning .baseSlider').hide();
$('.tab-pid_tuning .advancedSlider').hide();
$('.nonExpertModeSlidersNote').hide();
$('.subtab-pid .legacyNonExpertModeSlidersNote').toggle(!this.pidSlidersUnavailable && !this.expertMode);
$('.subtab-filter .legacyNonExpertModeSlidersNote').toggle((!this.GyroSliderUnavailable || !this.DTermSliderUnavailable) && !this.expertMode);
}
};
TuningSliders.scaleSliderValue = function(value) {
if (value > 0) {
if (value > 1) {
return Math.round(((value - 1) * 2 + 1) * 100) / 100;
} else {
return value;
@ -160,7 +164,7 @@ TuningSliders.scaleSliderValue = function(value) {
};
TuningSliders.downscaleSliderValue = function(value) {
if (value > 0) {
if (value > 1) {
return (value - 1) / 2 + 1;
} else {
return value;
@ -188,14 +192,15 @@ TuningSliders.initPidSlidersPosition = function() {
$('output[name="sliderPitchPIGain-number"]').val(this.sliderPitchPIGain);
$('output[name="sliderMasterMultiplier-number"]').val(this.sliderMasterMultiplier);
$('#sliderDGain').val(this.downscaleSliderValue(this.sliderDGain));
$('#sliderPIGain').val(this.downscaleSliderValue(this.sliderPIGain));
$('#sliderDGain').val(this.sliderDGain);
$('#sliderPIGain').val(this.sliderPIGain);
$('#sliderFeedforwardGain').val(this.sliderFeedforwardGain);
$('#sliderDMaxGain').val(this.sliderDMaxGain);
$('#sliderIGain').val(this.downscaleSliderValue(this.sliderIGain));
$('#sliderRollPitchRatio').val(this.downscaleSliderValue(this.sliderRollPitchRatio));
$('#sliderPitchPIGain').val(this.downscaleSliderValue(this.sliderPitchPIGain));
$('#sliderMasterMultiplier').val(this.downscaleSliderValue(this.sliderMasterMultiplier));
$('#sliderIGain').val(this.sliderIGain);
$('#sliderRollPitchRatio').val(this.sliderRollPitchRatio);
$('#sliderPitchPIGain').val(this.sliderPitchPIGain);
$('#sliderMasterMultiplier').val(this.sliderMasterMultiplier);
} else {
// used to estimate PID slider positions based on PIDF values, and set respective slider position
// provides only an estimation due to limitation of feature without firmware support, to be improved in later versions
@ -221,16 +226,16 @@ TuningSliders.initPidSlidersPosition = function() {
};
TuningSliders.initGyroFilterSliderPosition = function() {
if (semver.lt(FC.CONFIG.apiVersion, API_VERSION_1_44)) {
this.sliderGyroFilterMultiplier = Math.floor((FC.FILTER_CONFIG.gyro_lowpass_dyn_min_hz + FC.FILTER_CONFIG.gyro_lowpass_dyn_max_hz + FC.FILTER_CONFIG.gyro_lowpass2_hz) /
(this.FILTER_DEFAULT.gyro_lowpass_dyn_min_hz + this.FILTER_DEFAULT.gyro_lowpass_dyn_max_hz + this.FILTER_DEFAULT.gyro_lowpass2_hz) * 100) / 100;
} else {
if (semver.gte(FC.CONFIG.apiVersion, API_VERSION_1_44)) {
this.sliderGyroFilter = FC.TUNING_SLIDERS.slider_gyro_filter;
this.sliderGyroFilterMultiplier = FC.TUNING_SLIDERS.slider_gyro_filter_multiplier / 100;
} else {
this.sliderGyroFilterMultiplier = Math.floor((FC.FILTER_CONFIG.gyro_lowpass_dyn_min_hz + FC.FILTER_CONFIG.gyro_lowpass_dyn_max_hz + FC.FILTER_CONFIG.gyro_lowpass2_hz) /
(this.FILTER_DEFAULT.gyro_lowpass_dyn_min_hz + this.FILTER_DEFAULT.gyro_lowpass_dyn_max_hz + this.FILTER_DEFAULT.gyro_lowpass2_hz) * 100) / 100;
}
$('#sliderGyroFilterMultiplier').val(this.sliderGyroFilterMultiplier);
$('output[name="sliderGyroFilterMultiplier-number"]').val(this.sliderGyroFilterMultiplier);
$('#sliderGyroFilterMultiplier').val(this.downscaleSliderValue(this.sliderGyroFilterMultiplier));
};
TuningSliders.initDTermFilterSliderPosition = function() {
@ -246,23 +251,6 @@ TuningSliders.initDTermFilterSliderPosition = function() {
$('#sliderDTermFilterMultiplier').val(this.sliderDTermFilterMultiplier);
};
TuningSliders.resetDefault = function() {
FC.TUNING_SLIDERS.slider_pids_mode = this.SLIDER_DEFAULT.slider_pids_mode;
FC.TUNING_SLIDERS.slider_d_gain = this.SLIDER_DEFAULT.slider_d_gain;
FC.TUNING_SLIDERS.slider_pi_gain = this.SLIDER_DEFAULT.slider_pi_gain;
FC.TUNING_SLIDERS.slider_feedforward_gain = this.SLIDER_DEFAULT.slider_feedforward_gain;
FC.TUNING_SLIDERS.slider_dmax_gain = this.SLIDER_DEFAULT.slider_dmax_gain;
FC.TUNING_SLIDERS.slider_i_gain = this.SLIDER_DEFAULT.slider_i_gain;
FC.TUNING_SLIDERS.slider_roll_pitch_ratio = this.SLIDER_DEFAULT.slider_roll_pitch_ratio;
FC.TUNING_SLIDERS.slider_pitch_pi_gain = this.SLIDER_DEFAULT.slider_pitch_pi_gain;
FC.TUNING_SLIDERS.slider_master_multiplier = this.SLIDER_DEFAULT.slider_master_multiplier;
FC.TUNING_SLIDERS.slider_gyro_filter = this.SLIDER_DEFAULT.slider_gyro_filter;
FC.TUNING_SLIDERS.slider_gyro_filter_multiplier = this.SLIDER_DEFAULT.slider_gyro_filter_multiplier;
FC.TUNING_SLIDERS.slider_dterm_filter = this.SLIDER_DEFAULT.slider_dterm_filter;
FC.TUNING_SLIDERS.slider_dterm_filter_multiplier = this.SLIDER_DEFAULT.slider_dterm_filter_multiplier;
};
TuningSliders.resetPidSliders = function() {
if (!this.cachedPidSliderValues) {
if (semver.gte(FC.CONFIG.apiVersion, API_VERSION_1_44)) {
@ -306,7 +294,7 @@ TuningSliders.resetGyroFilterSlider = function() {
this.initGyroFilterSliderPosition();
} else {
this.sliderGyroFilterMultiplier = 1;
$('#sliderGyroFilterMultiplier').val(this.downscaleSliderValue(this.sliderGyroFilterMultiplier));
$('#sliderGyroFilterMultiplier').val(this.sliderGyroFilterMultiplier);
}
this.FilterReset = true;
this.calculateNewGyroFilters();
@ -326,7 +314,7 @@ TuningSliders.resetDTermFilterSlider = function() {
this.initDTermFilterSliderPosition();
} else {
this.sliderDTermFilterMultiplier = 1;
$('#sliderDTermFilterMultiplier').val(this.downscaleSliderValue(this.sliderDTermFilterMultiplier));
$('#sliderDTermFilterMultiplier').val(this.sliderDTermFilterMultiplier);
}
this.FilterReset = true;
this.calculateNewDTermFilters();
@ -376,29 +364,35 @@ TuningSliders.updateSlidersWarning = function(slidersUnavailable = false) {
const WARNING_P_GAIN = 70;
let WARNING_I_GAIN = 120;
const WARNING_DMAX_GAIN = 60;
const WARNING_DMIN_GAIN = 40;
let WARNING_DMIN_GAIN = 40;
let condition;
if (semver.gte(FC.CONFIG.apiVersion, API_VERSION_1_44)) {
WARNING_I_GAIN = 2.5 * FC.PIDS[1][0];
WARNING_I_GAIN = 2.5 * FC.PIDS[0][0];
WARNING_DMIN_GAIN = 42;
condition = FC.PIDS[0][0] > WARNING_P_GAIN || FC.PIDS[0][1] > WARNING_I_GAIN || FC.PIDS[0][2] > WARNING_DMAX_GAIN || FC.ADVANCED_TUNING.dMinRoll > WARNING_DMIN_GAIN;
} else {
condition = FC.PIDS[1][0] > WARNING_P_GAIN || FC.PIDS[1][1] > WARNING_I_GAIN || FC.PIDS[1][2] > WARNING_DMAX_GAIN || FC.ADVANCED_TUNING.dMinPitch > WARNING_DMIN_GAIN;
}
$('.subtab-pid .slidersWarning').toggle((FC.PIDS[1][0] > WARNING_P_GAIN || FC.PIDS[1][1] > WARNING_I_GAIN || FC.PIDS[1][2] > WARNING_DMAX_GAIN ||
FC.ADVANCED_TUNING.dMinPitch > WARNING_DMIN_GAIN) && !slidersUnavailable);
$('.subtab-pid .slidersWarning').toggle(condition && !slidersUnavailable);
};
TuningSliders.updateFilterSlidersWarning = function(gyroSliderUnavailable = false, DTermSliderUnavailable = false) {
const WARNING_FILTER_LOW_GAIN = 0.7;
let WARNING_FILTER_GYRO_HIGH_GAIN = 1.4;
let WARNING_FILTER_DTERM_HIGH_GAIN = 1.4;
let WARNING_FILTER_GYRO_LOW_GAIN = 0.7;
let WARNING_FILTER_GYRO_HIGH_GAIN = 1.25;
let WARNING_FILTER_DTERM_LOW_GAIN = 0.7;
const WARNING_FILTER_DTERM_HIGH_GAIN = 1.25;
if (semver.gte(FC.CONFIG.apiVersion, API_VERSION_1_44)) {
WARNING_FILTER_GYRO_HIGH_GAIN = 1.5;
WARNING_FILTER_DTERM_HIGH_GAIN = 1.1;
WARNING_FILTER_GYRO_LOW_GAIN = 0.45;
WARNING_FILTER_GYRO_HIGH_GAIN = 1.55;
WARNING_FILTER_DTERM_LOW_GAIN = 0.75;
}
$('.subtab-filter .slidersWarning').toggle(((this.sliderGyroFilterMultiplier >= WARNING_FILTER_GYRO_HIGH_GAIN ||
this.sliderGyroFilterMultiplier <= WARNING_FILTER_LOW_GAIN) && !gyroSliderUnavailable) ||
this.sliderGyroFilterMultiplier <= WARNING_FILTER_GYRO_LOW_GAIN) && !gyroSliderUnavailable) ||
((this.sliderDTermFilterMultiplier >= WARNING_FILTER_DTERM_HIGH_GAIN ||
this.sliderDTermFilterMultiplier <= WARNING_FILTER_LOW_GAIN) && !DTermSliderUnavailable));
this.sliderDTermFilterMultiplier <= WARNING_FILTER_DTERM_LOW_GAIN) && !DTermSliderUnavailable));
};
TuningSliders.updatePidSlidersDisplay = function() {
// check if pid values changed manually by comparing the current values with those calculated by the sliders,
// if all of them are equal the values haven't been changed manually
@ -434,7 +428,6 @@ TuningSliders.updatePidSlidersDisplay = function() {
if (this.sliderPidsMode === 0) {
this.pidSlidersUnavailable = true;
}
this.setExpertMode();
}
$('.tuningPIDSliders').toggle(!this.pidSlidersUnavailable);
@ -594,7 +587,7 @@ TuningSliders.legacyCalculatePids = function(updateSlidersOnly = false) {
this.updateFormPids(updateSlidersOnly);
TABS.pid_tuning.updatePIDColors();
this.updateSlidersWarning();
};
TuningSliders.calculateNewPids = function(updateSlidersOnly = false) {
@ -634,6 +627,7 @@ TuningSliders.calculateLegacyGyroFilters = function() {
FC.FILTER_CONFIG.gyro_lowpass_type = this.FILTER_DEFAULT.gyro_lowpass_type;
FC.FILTER_CONFIG.gyro_lowpass2_type = this.FILTER_DEFAULT.gyro_lowpass2_type;
this.updateFilterSlidersWarning();
this.updateLowpassValues();
};
@ -645,6 +639,7 @@ TuningSliders.calculateLegacyDTermFilters = function() {
FC.FILTER_CONFIG.dterm_lowpass_type = this.FILTER_DEFAULT.dterm_lowpass_type;
FC.FILTER_CONFIG.dterm_lowpass2_type = this.FILTER_DEFAULT.dterm_lowpass2_type;
this.updateFilterSlidersWarning();
this.updateLowpassValues();
};

View file

@ -871,8 +871,8 @@ const FC = {
];
} else if (semver.gte(this.CONFIG.apiVersion, API_VERSION_1_44)) {
versionPidDefaults = [
45, 90, 40, 30, 120,
47, 94, 46, 34, 125,
45, 80, 40, 30, 120,
47, 84, 46, 34, 125,
45, 90, 0, 0, 120,
];
}

View file

@ -252,7 +252,7 @@ function startProcess() {
const tabName = $(self).text();
if (GUI.active_tab === 'pid_tuning') {
if (TABS.pid_tuning.sliderPositionHasChanged || TABS.pid_tuning.sliderModeHasChanged) {
if (TABS.pid_tuning.sliderRetainPosition || TABS.pid_tuning.sliderRetainMode || TABS.pid_tuning.sliderRetainConfiguration) {
TuningSliders.restoreInitialSettings();
}
}

View file

@ -22,9 +22,10 @@ TABS.pid_tuning = {
activeSubtab: 'pid',
analyticsChanges: {},
sliderPositionHasChanged: false,
sliderChanges: {},
sliderModeHasChanged: false,
sliderRetainMode: false,
sliderRetainPosition: false,
sliderRetainConfiguration: false,
};
TABS.pid_tuning.initialize = function (callback) {
@ -483,9 +484,7 @@ TABS.pid_tuning.initialize = function (callback) {
$('.rates_type').hide();
}
if (semver.gte(FC.CONFIG.apiVersion, API_VERSION_1_44)) {
$('.resetwarning').attr("title", i18n.getMessage("pidTuningResetWarning"));
} else {
if (semver.lt(FC.CONFIG.apiVersion, API_VERSION_1_44)) {
// Previous html attributes for legacy sliders
$('.pid_tuning .ROLL input[name="p"]').attr("max", "200");
$('.pid_tuning .ROLL input[name="i"]').attr("max", "200");
@ -498,9 +497,7 @@ TABS.pid_tuning.initialize = function (callback) {
$('.pid_tuning .YAW input[name="p"]').attr("max", "200");
$('.pid_tuning .YAW input[name="i"]').attr("max", "200");
$('.pid_tuning .YAW input[name="d"]').attr("max", "200");
$('.pid_tuning .YAW input[name="dMinPitch"]').attr("max", "1000");
$('#sliderDTermFilterMultiplier').attr({ "min": "0.5", "max": "1.5", "step": "0.025" });
$('#sliderGyroFilterMultipier').attr({ "min": "0.5", "max": "1.5", "step": "0.025" });
$('.pid_tuning .YAW input[name="dMinPitch"]').attr("max", "100");
}
// Feedforward
@ -1370,32 +1367,16 @@ TABS.pid_tuning.initialize = function (callback) {
updatePidDisplay();
});
$('#resetProfile').on('click', function() {
$('#resetProfile').on('click', function(){
self.updating = true;
self.sliderRetainConfiguration = true;
function refresh () {
self.refresh(() => {
MSP.promise(MSPCodes.MSP_SET_RESET_CURR_PID).then(function () {
self.refresh(function () {
self.updating = false;
GUI.log(i18n.getMessage('pidTuningProfileReset'));
});
}
MSP.promise(MSPCodes.MSP_SET_RESET_CURR_PID).then(() => {
if (semver.gte(FC.CONFIG.apiVersion, API_VERSION_1_44)) {
TuningSliders.resetDefault();
MSP.promise(MSPCodes.MSP_SET_TUNING_SLIDERS, mspHelper.crunch(MSPCodes.MSP_SET_TUNING_SLIDERS)).then(() => {
MSP.promise(MSPCodes.MSP_EEPROM_WRITE).then(() => {
self.sliderPositionHasChanged = false;
self.sliderModeHasChanged = false;
self.sliderChanges = {};
GUI.log(i18n.getMessage('pidTuningEepromSaved'));
refresh();
});
});
} else {
refresh();
}
});
});
@ -1914,16 +1895,17 @@ TABS.pid_tuning.initialize = function (callback) {
TuningSliders.initialize();
// UNSCALED non expert slider constrain values
const NON_EXPERT_SLIDER_MAX = semver.gte(FC.CONFIG.apiVersion, API_VERSION_1_44) ? 1.2 : 1.25;
const NON_EXPERT_SLIDER_MIN = semver.gte(FC.CONFIG.apiVersion, API_VERSION_1_44) ? 0.85 : 0.7;
const NON_EXPERT_SLIDER_MIN_FF = 0.7;
const NON_EXPERT_SLIDER_MAX_FF = 1.35;
const NON_EXPERT_SLIDER_MAX = semver.gte(FC.CONFIG.apiVersion, API_VERSION_1_44) ? 1.4 : 1.25;
const NON_EXPERT_SLIDER_MIN = 0.7;
const SLIDER_STEP_LOWER = semver.gte(FC.CONFIG.apiVersion, API_VERSION_1_44) ? 0.025 : 0.05;
const SLIDER_STEP_LOWER = semver.gte(FC.CONFIG.apiVersion, API_VERSION_1_44) ? 0.05 : 0.1;
const SLIDER_STEP_UPPER = semver.gte(FC.CONFIG.apiVersion, API_VERSION_1_44) ? 0.05 : 0.1;
if (semver.gte(FC.CONFIG.apiVersion, API_VERSION_1_44)) {
TuningSliders.saveInitialSettings();
if (!self.sliderRetainConfiguration) {
TuningSliders.saveInitialSettings();
}
const initialConfiguration = TuningSliders.initialSettings;
// we only target the range target type.
@ -1935,11 +1917,11 @@ TABS.pid_tuning.initialize = function (callback) {
if (item in initialConfiguration) {
if (value !== initialConfiguration[item]) {
self.sliderPositionHasChanged = true;
self.sliderRetainPosition = true;
} else {
delete self.sliderChanges[item];
if (Object.keys(self.sliderChanges).length === 0) {
self.sliderPositionHasChanged = false;
self.sliderRetainPosition = false;
}
}
}
@ -1947,7 +1929,7 @@ TABS.pid_tuning.initialize = function (callback) {
e.stopPropagation();
}
function disableSlideronManualChange(e, angle) {
function disableSliderOnManualChange(e, angle) {
const sliderPidsModeSelectElement = $('#sliderPidsModeSelect');
const mode = parseInt(sliderPidsModeSelectElement.val());
if (mode > 0) {
@ -1955,7 +1937,7 @@ TABS.pid_tuning.initialize = function (callback) {
e.preventDefault();
} else {
sliderPidsModeSelectElement.val(0).trigger('change');
self.sliderModeHasChanged = true;
self.sliderRetainMode = true;
}
} else {
self.updateGuiElements();
@ -1963,7 +1945,7 @@ TABS.pid_tuning.initialize = function (callback) {
}
function HandleEventParams(param) {
return (e) => disableSlideronManualChange(e, param);
return (e) => disableSliderOnManualChange(e, param);
}
document.querySelectorAll('.sliderLabels').forEach(elem => elem.addEventListener('change', sliderHandler));
@ -2026,32 +2008,31 @@ TABS.pid_tuning.initialize = function (callback) {
if (!TuningSliders.expertMode) {
if (slider.val() > NON_EXPERT_SLIDER_MAX) {
slider.val(slider.is('#sliderFeedforwardGain') ? NON_EXPERT_SLIDER_MAX_FF : NON_EXPERT_SLIDER_MAX);
slider.val(NON_EXPERT_SLIDER_MAX);
} else if (slider.val() < NON_EXPERT_SLIDER_MIN) {
slider.val(slider.is('#sliderFeedforwardGain') ? NON_EXPERT_SLIDER_MIN_FF : NON_EXPERT_SLIDER_MIN);
slider.val(NON_EXPERT_SLIDER_MIN);
}
}
const sliderValue = isInt(slider.val()) ? parseInt(slider.val()) : parseFloat(slider.val());
const scaledValue = TuningSliders.scaleSliderValue(sliderValue);
if (semver.gte(FC.CONFIG.apiVersion, API_VERSION_1_44)) {
if (slider.is('#sliderDGain')) {
TuningSliders.sliderDGain = scaledValue;
TuningSliders.sliderDGain = sliderValue;
} else if (slider.is('#sliderPIGain')) {
TuningSliders.sliderPIGain = scaledValue;
TuningSliders.sliderPIGain = sliderValue;
} else if (slider.is('#sliderFeedforwardGain')) {
TuningSliders.sliderFeedforwardGain = sliderValue;
} else if (slider.is('#sliderDMaxGain')) {
TuningSliders.sliderDMaxGain = sliderValue;
} else if (slider.is('#sliderIGain')) {
TuningSliders.sliderIGain = scaledValue;
TuningSliders.sliderIGain = sliderValue;
} else if (slider.is('#sliderRollPitchRatio')) {
TuningSliders.sliderRollPitchRatio = scaledValue;
TuningSliders.sliderRollPitchRatio = sliderValue;
} else if (slider.is('#sliderPitchPIGain')) {
TuningSliders.sliderPitchPIGain = scaledValue;
TuningSliders.sliderPitchPIGain = sliderValue;
} else if (slider.is('#sliderMasterMultiplier')) {
TuningSliders.sliderMasterMultiplier = scaledValue;
TuningSliders.sliderMasterMultiplier = sliderValue;
}
} else {
if (slider.is('#sliderMasterMultiplierLegacy')) {
@ -2109,8 +2090,8 @@ TABS.pid_tuning.initialize = function (callback) {
value = FC.DEFAULT_TUNING_SLIDERS.slider_master_multiplier / 100;
TuningSliders.sliderMasterMultiplier = value;
}
slider.val(TuningSliders.downscaleSliderValue(value));
} else {
value = 1;
if (slider.is('#sliderMasterMultiplierLegacy')) {
TuningSliders.sliderMasterMultiplierLegacy = 1;
} else if (slider.is('#sliderPDRatio')) {
@ -2121,6 +2102,7 @@ TABS.pid_tuning.initialize = function (callback) {
TuningSliders.sliderFeedforwardGainLegacy = 1;
}
}
slider.val(value);
TuningSliders.calculateNewPids();
TuningSliders.updatePidSlidersDisplay();
@ -2130,7 +2112,7 @@ TABS.pid_tuning.initialize = function (callback) {
//set Slider PID mode to RPY when re-enabling Sliders
if (semver.gte(FC.CONFIG.apiVersion, API_VERSION_1_44)) {
$('#sliderPidsModeSelect').val(2).trigger('change');
self.sliderModeHasChanged = true;
self.sliderRetainMode = true;
}
// if values were previously changed manually and then sliders are reactivated, reset pids to previous valid values if available, else default
TuningSliders.resetPidSliders();
@ -2156,7 +2138,7 @@ TABS.pid_tuning.initialize = function (callback) {
}
if (!TuningSliders.expertMode) {
if (semver.gte(FC.CONFIG.apiVersion, API_VERSION_1_44)) {
const NON_EXPERT_SLIDER_MIN_GYRO = 0.4;
const NON_EXPERT_SLIDER_MIN_GYRO = 0.5;
const NON_EXPERT_SLIDER_MAX_GYRO = 1.5;
const NON_EXPERT_SLIDER_MIN_DTERM = 0.8;
const NON_EXPERT_SLIDER_MAX_DTERM = 1.2;
@ -2182,14 +2164,14 @@ TABS.pid_tuning.initialize = function (callback) {
}
}
}
const sliderValue = isInt(slider.val()) ? parseInt(slider.val()) : parseFloat(slider.val());
const newValue = semver.gte(FC.CONFIG.apiVersion, API_VERSION_1_44) ? sliderValue : TuningSliders.scaleSliderValue(sliderValue);
if (slider.is('#sliderGyroFilterMultiplier')) {
TuningSliders.sliderGyroFilterMultiplier = newValue;
TuningSliders.sliderGyroFilterMultiplier = sliderValue;
TuningSliders.calculateNewGyroFilters();
self.analyticsChanges['GyroFilterTuningSlider'] = "On";
} else if (slider.is('#sliderDTermFilterMultiplier')) {
TuningSliders.sliderDTermFilterMultiplier = newValue;
TuningSliders.sliderDTermFilterMultiplier = sliderValue;
TuningSliders.calculateNewDTermFilters();
self.analyticsChanges['DTermFilterTuningSlider'] = "On";
}
@ -2208,7 +2190,7 @@ TABS.pid_tuning.initialize = function (callback) {
});
// enable Filter sliders button
$('a.buttonFilterTuningSliders').click(function() {
self.sliderModeHasChanged = true;
self.sliderRetainMode = true;
if (TuningSliders.GyroSliderUnavailable) {
//set Slider mode to ON when re-enabling Sliders
if (semver.gte(FC.CONFIG.apiVersion, API_VERSION_1_44)) {
@ -2314,9 +2296,12 @@ TABS.pid_tuning.initialize = function (callback) {
return MSP.promise(MSPCodes.MSP_EEPROM_WRITE);
}).then(function () {
self.updating = false;
self.sliderPositionHasChanged = false;
self.sliderModeHasChanged = false;
self.sliderRetainPosition = false;
self.sliderRetainMode = false;
self.sliderChanges = {};
self.sliderRetainConfiguration = false;
self.setDirty(false);
GUI.log(i18n.getMessage('pidTuningEepromSaved'));
@ -2426,7 +2411,7 @@ TABS.pid_tuning.cleanup = function (callback) {
TABS.pid_tuning.refresh = function (callback) {
const self = this;
if ((self.sliderPositionHasChanged || self.sliderModeHasChanged) && !self.updating) {
if ((self.sliderRetainPosition || self.sliderRetainMode) && !self.updating) {
TuningSliders.restoreInitialSettings();
}