Skip to content

Commit 3ebd169

Browse files
committed
Extend save and restore for all settings
Fix Enable PID sliders button Fix duplicate block?
1 parent faa3982 commit 3ebd169

File tree

3 files changed

+63
-70
lines changed

3 files changed

+63
-70
lines changed

src/js/TuningSliders.js

Lines changed: 0 additions & 51 deletions
Original file line numberDiff line numberDiff line change
@@ -32,7 +32,6 @@ const TuningSliders = {
3232
PID_DEFAULT: [],
3333
FILTER_DEFAULT: {},
3434
SLIDER_DEFAULT: {},
35-
initialSettings: {},
3635

3736
cachedPidSliderValues: false,
3837
cachedGyroSliderValues: false,
@@ -43,56 +42,6 @@ const TuningSliders = {
4342

4443
const D_MIN_RATIO = 0.85;
4544

46-
TuningSliders.saveInitialSettings = function () {
47-
if (semver.gte(FC.CONFIG.apiVersion, API_VERSION_1_44)) {
48-
this.initialSettings.sliderPidsMode = FC.TUNING_SLIDERS.slider_pids_mode;
49-
this.initialSettings.sliderDGain = FC.TUNING_SLIDERS.slider_d_gain / 100;
50-
this.initialSettings.sliderPIGain = FC.TUNING_SLIDERS.slider_pi_gain / 100;
51-
this.initialSettings.sliderFeedforwardGain = FC.TUNING_SLIDERS.slider_feedforward_gain / 100;
52-
this.initialSettings.sliderDMaxGain = FC.TUNING_SLIDERS.slider_dmax_gain / 100;
53-
this.initialSettings.sliderIGain = FC.TUNING_SLIDERS.slider_i_gain / 100;
54-
this.initialSettings.sliderRollPitchRatio = FC.TUNING_SLIDERS.slider_roll_pitch_ratio / 100;
55-
this.initialSettings.sliderPitchPIGain = FC.TUNING_SLIDERS.slider_pitch_pi_gain / 100;
56-
this.initialSettings.sliderMasterMultiplier = FC.TUNING_SLIDERS.slider_master_multiplier / 100;
57-
this.initialSettings.sliderGyroFilter = FC.TUNING_SLIDERS.slider_gyro_filter;
58-
this.initialSettings.sliderGyroFilterMultiplier = FC.TUNING_SLIDERS.slider_gyro_filter_multiplier / 100;
59-
this.initialSettings.sliderDTermFilter = FC.TUNING_SLIDERS.slider_dterm_filter;
60-
this.initialSettings.sliderDTermFilterMultiplier = FC.TUNING_SLIDERS.slider_dterm_filter_multiplier / 100;
61-
}
62-
};
63-
64-
TuningSliders.restoreInitialSettings = function () {
65-
if (semver.gte(FC.CONFIG.apiVersion, API_VERSION_1_44)) {
66-
FC.TUNING_SLIDERS.slider_pids_mode = this.initialSettings.sliderPidsMode;
67-
68-
FC.TUNING_SLIDERS.slider_d_gain = Math.round(this.initialSettings.sliderDGain * 20) * 5;
69-
FC.TUNING_SLIDERS.slider_pi_gain = Math.round(this.initialSettings.sliderPIGain * 20) * 5;
70-
FC.TUNING_SLIDERS.slider_feedforward_gain = Math.round(this.initialSettings.sliderFeedforwardGain * 20) * 5;
71-
FC.TUNING_SLIDERS.slider_dmax_gain = Math.round(this.initialSettings.sliderDMaxGain * 20) * 5;
72-
FC.TUNING_SLIDERS.slider_i_gain = Math.round(this.initialSettings.sliderIGain * 20) * 5;
73-
FC.TUNING_SLIDERS.slider_roll_pitch_ratio = Math.round(this.initialSettings.sliderRollPitchRatio * 20) * 5;
74-
FC.TUNING_SLIDERS.slider_pitch_pi_gain = Math.round(this.initialSettings.sliderPitchPIGain * 20) * 5;
75-
FC.TUNING_SLIDERS.slider_master_multiplier = Math.round(this.initialSettings.sliderMasterMultiplier * 20) * 5;
76-
77-
FC.TUNING_SLIDERS.slider_gyro_filter = this.initialSettings.sliderGyroFilter;
78-
FC.TUNING_SLIDERS.slider_gyro_filter_multiplier = this.initialSettings.sliderGyroFilterMultiplier * 100;
79-
FC.TUNING_SLIDERS.slider_dterm_filter = this.initialSettings.sliderDTermFilter;
80-
FC.TUNING_SLIDERS.slider_dterm_filter_multiplier = this.initialSettings.sliderDTermFilterMultiplier * 100;
81-
82-
MSP.promise(MSPCodes.MSP_SET_TUNING_SLIDERS, mspHelper.crunch(MSPCodes.MSP_SET_TUNING_SLIDERS))
83-
.then(() => MSP.promise(MSPCodes.MSP_PID))
84-
.then(() => MSP.promise(MSPCodes.MSP_PID_ADVANCED))
85-
.then(() => MSP.promise(MSPCodes.MSP_FILTER_CONFIG))
86-
.then(() => {
87-
if (GUI.active_tab === 'pid_tuning') {
88-
this.updateFormPids();
89-
TABS.pid_tuning.updatePIDColors();
90-
}
91-
});
92-
TABS.pid_tuning.sliderRetainConfiguration = false;
93-
}
94-
};
95-
9645
TuningSliders.setDMinFeatureEnabled = function(dMinFeatureEnabled) {
9746
this.dMinFeatureEnabled = dMinFeatureEnabled;
9847
if (this.dMinFeatureEnabled) {

src/js/main.js

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -252,8 +252,8 @@ function startProcess() {
252252
const tabName = $(self).text();
253253

254254
if (GUI.active_tab === 'pid_tuning') {
255-
if (TABS.pid_tuning.sliderRetainConfiguration) {
256-
TuningSliders.restoreInitialSettings();
255+
if (TABS.pid_tuning.retainConfiguration) {
256+
TABS.pid_tuning.restoreInitialSettings();
257257
}
258258
}
259259

src/js/tabs/pid_tuning.js

Lines changed: 61 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -22,7 +22,14 @@ TABS.pid_tuning = {
2222
activeSubtab: 'pid',
2323
analyticsChanges: {},
2424

25-
sliderRetainConfiguration: false,
25+
retainConfiguration: false,
26+
27+
CONFIGURATOR_PIDS: [],
28+
CONFIGURATOR_ADVANCED_TUNING: {},
29+
CONFIGURATOR_FILTER_CONFIG: {},
30+
CONFIGURATOR_RC_TUNING: {},
31+
CONFIGURATOR_FEATURE_CONFIG: {},
32+
CONFIGURATOR_TUNING_SLIDERS: {},
2633
};
2734

2835
TABS.pid_tuning.initialize = function (callback) {
@@ -1360,7 +1367,7 @@ TABS.pid_tuning.initialize = function (callback) {
13601367

13611368
$('#resetPidProfile').on('click', function(){
13621369
self.updating = true;
1363-
self.sliderRetainConfiguration = true;
1370+
self.retainConfiguration = true;
13641371

13651372
MSP.promise(MSPCodes.MSP_SET_RESET_CURR_PID).then(function () {
13661373
self.refresh(function () {
@@ -1895,10 +1902,10 @@ TABS.pid_tuning.initialize = function (callback) {
18951902
const sliderPidsModeSelect = $('#sliderPidsModeSelect');
18961903

18971904
if (semver.gte(FC.CONFIG.apiVersion, API_VERSION_1_44)) {
1898-
if (self.sliderRetainConfiguration) {
1905+
if (self.retainConfiguration) {
18991906
self.setDirty(true);
19001907
} else {
1901-
TuningSliders.saveInitialSettings();
1908+
self.saveInitialSettings();
19021909
}
19031910
sliderPidsModeSelect.val(FC.TUNING_SLIDERS.slider_pids_mode);
19041911
} else {
@@ -1943,6 +1950,11 @@ TABS.pid_tuning.initialize = function (callback) {
19431950
$('#pid_main .YAW .pid_data input').each(function() {
19441951
$(this).prop('disabled', disableY);
19451952
});
1953+
1954+
if (setMode !== self.CONFIGURATOR_TUNING_SLIDERS.slider_pids_mode) {
1955+
self.setDirty(true);
1956+
}
1957+
19461958
}).trigger('change');
19471959
}
19481960

@@ -2070,11 +2082,11 @@ TABS.pid_tuning.initialize = function (callback) {
20702082
$('a.buttonPidTuningSliders').click(function() {
20712083
// set Slider PID mode to RP(Y) when re-enabling Sliders
20722084
if (semver.gte(FC.CONFIG.apiVersion, API_VERSION_1_44)) {
2073-
const firmwareMode = TuningSliders.initialSettings.sliderPidsMode;
2085+
const firmwareMode = self.CONFIGURATOR_TUNING_SLIDERS.slider_pids_mode;
20742086
const workingMode = firmwareMode === 1 ? 1 : 2;
20752087

20762088
if (firmwareMode !== workingMode) {
2077-
self.sliderRetainConfiguration = true;
2089+
self.retainConfiguration = true;
20782090
}
20792091
sliderPidsModeSelect.val(workingMode).trigger('change');
20802092
}
@@ -2154,8 +2166,6 @@ TABS.pid_tuning.initialize = function (callback) {
21542166
});
21552167
// enable Filter sliders button
21562168
$('a.buttonFilterTuningSliders').click(function() {
2157-
self.sliderRetainConfiguration = true;
2158-
21592169
if (TuningSliders.GyroSliderUnavailable) {
21602170
//set Slider mode to ON when re-enabling Sliders
21612171
if (semver.gte(FC.CONFIG.apiVersion, API_VERSION_1_44)) {
@@ -2184,18 +2194,13 @@ TABS.pid_tuning.initialize = function (callback) {
21842194

21852195
// update on pid table inputs
21862196
$('#pid_main input').on('input', function() {
2187-
if (semver.gte(FC.CONFIG.apiVersion, API_VERSION_1_44)) {
2188-
self.sliderRetainConfiguration = true;
2189-
} else {
2197+
if (semver.lt(FC.CONFIG.apiVersion, API_VERSION_1_44)) {
21902198
TuningSliders.updatePidSlidersDisplay();
21912199
self.analyticsChanges['PidTuningSliders'] = "Off";
21922200
}
21932201
});
21942202
// update on filter value or type changes
21952203
$('.pid_filter tr:not(.newFilter) input, .pid_filter tr:not(.newFilter) select').on('input', function() {
2196-
if (semver.gte(FC.CONFIG.apiVersion, API_VERSION_1_44)) {
2197-
self.sliderRetainConfiguration = true;
2198-
}
21992204
TuningSliders.updateFilterSlidersDisplay();
22002205
if (TuningSliders.GyroSliderUnavailable) {
22012206
self.analyticsChanges['GyroFilterTuningSlider'] = "Off";
@@ -2268,7 +2273,7 @@ TABS.pid_tuning.initialize = function (callback) {
22682273
return MSP.promise(MSPCodes.MSP_EEPROM_WRITE);
22692274
}).then(function () {
22702275
self.updating = false;
2271-
self.sliderRetainConfiguration = false;
2276+
self.retainConfiguration = false;
22722277

22732278
self.setDirty(false);
22742279

@@ -2379,8 +2384,8 @@ TABS.pid_tuning.cleanup = function (callback) {
23792384
TABS.pid_tuning.refresh = function (callback) {
23802385
const self = this;
23812386

2382-
if (self.sliderRetainConfiguration && !self.updating) {
2383-
TuningSliders.restoreInitialSettings();
2387+
if (self.retainConfiguration && !self.updating) {
2388+
self.restoreInitialSettings();
23842389
}
23852390

23862391
GUI.tab_switch_cleanup(function () {
@@ -2394,6 +2399,41 @@ TABS.pid_tuning.refresh = function (callback) {
23942399
});
23952400
};
23962401

2402+
TABS.pid_tuning.saveInitialSettings = function () {
2403+
if (semver.gte(FC.CONFIG.apiVersion, API_VERSION_1_44)) {
2404+
this.CONFIGURATOR_PIDS = [ ...FC.PIDS ];
2405+
this.CONFIGURATOR_ADVANCED_TUNING = { ...FC.ADVANCED_TUNING };
2406+
this.CONFIGURATOR_FILTER_CONFIG = { ...FC.FILTER_CONFIG };
2407+
this.CONFIGURATOR_RC_TUNING = { ...FC.RC_TUNING };
2408+
this.CONFIGURATOR_FEATURE_CONFIG = { ...FC.FEATURE_CONFIG };
2409+
this.CONFIGURATOR_TUNING_SLIDERS = { ...FC.TUNING_SLIDERS};
2410+
}
2411+
};
2412+
2413+
TABS.pid_tuning.restoreInitialSettings = function () {
2414+
if (semver.gte(FC.CONFIG.apiVersion, API_VERSION_1_44)) {
2415+
FC.PIDS = [ ...this.CONFIGURATOR_PIDS ];
2416+
FC.ADVANCED_TUNING = { ...this.CONFIGURATOR_ADVANCED_TUNING };
2417+
FC.FILTER_CONFIG = { ...this.CONFIGURATOR_FILTER_CONFIG };
2418+
FC.RC_TUNING = { ...this.CONFIGURATOR_RC_TUNING };
2419+
FC.FEATURE_CONFIG = { ...this.CONFIGURATOR_FEATURE_CONFIG };
2420+
FC.TUNING_SLIDERS = { ...this.CONFIGURATOR_TUNING_SLIDERS };
2421+
2422+
Promise.resolve(true)
2423+
.then(() => MSP.promise(MSPCodes.MSP_SET_PID, mspHelper.crunch(MSPCodes.MSP_SET_PID)))
2424+
.then(() => MSP.promise(MSPCodes.MSP_SET_PID_ADVANCED, mspHelper.crunch(MSPCodes.MSP_SET_PID_ADVANCED)))
2425+
.then(() => MSP.promise(MSPCodes.MSP_SET_FILTER_CONFIG, mspHelper.crunch(MSPCodes.MSP_SET_FILTER_CONFIG)))
2426+
.then(() => MSP.promise(MSPCodes.MSP_SET_RC_TUNING, mspHelper.crunch(MSPCodes.MSP_SET_RC_TUNING)))
2427+
.then(() => MSP.promise(MSPCodes.MSP_SET_FEATURE_CONFIG, mspHelper.crunch(MSPCodes.MSP_SET_FEATURE_CONFIG)))
2428+
.then(() => MSP.promise(MSPCodes.MSP_SET_TUNING_SLIDERS, mspHelper.crunch(MSPCodes.MSP_SET_TUNING_SLIDERS)))
2429+
.then(() => {
2430+
TABS.pid_tuning.retainConfiguration = false;
2431+
2432+
console.log('Configuration restored to initial values');
2433+
});
2434+
}
2435+
};
2436+
23972437
TABS.pid_tuning.setProfile = function () {
23982438
const self = this;
23992439

@@ -2416,6 +2456,10 @@ TABS.pid_tuning.setDirty = function (isDirty) {
24162456
if (semver.gte(FC.CONFIG.apiVersion, "1.20.0")) {
24172457
$('.tab-pid_tuning select[name="rate_profile"]').prop('disabled', isDirty);
24182458
}
2459+
2460+
if (isDirty) {
2461+
self.retainConfiguration = true;
2462+
}
24192463
};
24202464

24212465
TABS.pid_tuning.checkUpdateProfile = function (updateRateProfile) {

0 commit comments

Comments
 (0)