Skip to content

Commit 2bc29a2

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

File tree

3 files changed

+48
-55
lines changed

3 files changed

+48
-55
lines changed

src/js/TuningSliders.js

Lines changed: 30 additions & 39 deletions
Original file line numberDiff line numberDiff line change
@@ -32,7 +32,13 @@ const TuningSliders = {
3232
PID_DEFAULT: [],
3333
FILTER_DEFAULT: {},
3434
SLIDER_DEFAULT: {},
35-
initialSettings: {},
35+
36+
CONFIGURATOR_PIDS: [],
37+
CONFIGURATOR_ADVANCED_TUNING: {},
38+
CONFIGURATOR_FILTER_CONFIG: {},
39+
CONFIGURATOR_RC_TUNING: {},
40+
CONFIGURATOR_FEATURE_CONFIG: {},
41+
CONFIGURATOR_TUNING_SLIDERS: {},
3642

3743
cachedPidSliderValues: false,
3844
cachedGyroSliderValues: false,
@@ -45,51 +51,36 @@ const D_MIN_RATIO = 0.85;
4551

4652
TuningSliders.saveInitialSettings = function () {
4753
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;
54+
this.CONFIGURATOR_PIDS = [ ...FC.PIDS ];
55+
this.CONFIGURATOR_ADVANCED_TUNING = { ...FC.ADVANCED_TUNING };
56+
this.CONFIGURATOR_FILTER_CONFIG = { ...FC.FILTER_CONFIG };
57+
this.CONFIGURATOR_RC_TUNING = { ...FC.RC_TUNING };
58+
this.CONFIGURATOR_FEATURE_CONFIG = { ...FC.FEATURE_CONFIG };
59+
this.CONFIGURATOR_TUNING_SLIDERS = { ...FC.TUNING_SLIDERS};
6160
}
6261
};
6362

6463
TuningSliders.restoreInitialSettings = function () {
6564
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))
65+
FC.PIDS = [ ...this.CONFIGURATOR_PIDS ];
66+
FC.ADVANCED_TUNING = { ...this.CONFIGURATOR_ADVANCED_TUNING };
67+
FC.FILTER_CONFIG = { ...this.CONFIGURATOR_FILTER_CONFIG };
68+
FC.RC_TUNING = { ...this.CONFIGURATOR_RC_TUNING };
69+
FC.FEATURE_CONFIG = { ...this.CONFIGURATOR_FEATURE_CONFIG };
70+
FC.TUNING_SLIDERS = { ...this.CONFIGURATOR_TUNING_SLIDERS };
71+
72+
Promise.resolve(true)
73+
.then(() => MSP.promise(MSPCodes.MSP_SET_PID, mspHelper.crunch(MSPCodes.MSP_SET_PID)))
74+
.then(() => MSP.promise(MSPCodes.MSP_SET_PID_ADVANCED, mspHelper.crunch(MSPCodes.MSP_SET_PID_ADVANCED)))
75+
.then(() => MSP.promise(MSPCodes.MSP_SET_FILTER_CONFIG, mspHelper.crunch(MSPCodes.MSP_SET_FILTER_CONFIG)))
76+
.then(() => MSP.promise(MSPCodes.MSP_SET_RC_TUNING, mspHelper.crunch(MSPCodes.MSP_SET_RC_TUNING)))
77+
.then(() => MSP.promise(MSPCodes.MSP_SET_FEATURE_CONFIG, mspHelper.crunch(MSPCodes.MSP_SET_FEATURE_CONFIG)))
78+
.then(() => MSP.promise(MSPCodes.MSP_SET_TUNING_SLIDERS, mspHelper.crunch(MSPCodes.MSP_SET_TUNING_SLIDERS)))
8679
.then(() => {
87-
if (GUI.active_tab === 'pid_tuning') {
88-
this.updateFormPids();
89-
TABS.pid_tuning.updatePIDColors();
90-
}
80+
TABS.pid_tuning.retainConfiguration = false;
81+
82+
console.log('Configuration restored to initial values');
9183
});
92-
TABS.pid_tuning.sliderRetainConfiguration = false;
9384
}
9485
};
9586

src/js/main.js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -252,7 +252,7 @@ function startProcess() {
252252
const tabName = $(self).text();
253253

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

src/js/tabs/pid_tuning.js

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

25-
sliderRetainConfiguration: false,
25+
retainConfiguration: false,
2626
};
2727

2828
TABS.pid_tuning.initialize = function (callback) {
@@ -1360,7 +1360,7 @@ TABS.pid_tuning.initialize = function (callback) {
13601360

13611361
$('#resetPidProfile').on('click', function(){
13621362
self.updating = true;
1363-
self.sliderRetainConfiguration = true;
1363+
self.retainConfiguration = true;
13641364

13651365
MSP.promise(MSPCodes.MSP_SET_RESET_CURR_PID).then(function () {
13661366
self.refresh(function () {
@@ -1895,7 +1895,7 @@ TABS.pid_tuning.initialize = function (callback) {
18951895
const sliderPidsModeSelect = $('#sliderPidsModeSelect');
18961896

18971897
if (semver.gte(FC.CONFIG.apiVersion, API_VERSION_1_44)) {
1898-
if (self.sliderRetainConfiguration) {
1898+
if (self.retainConfiguration) {
18991899
self.setDirty(true);
19001900
} else {
19011901
TuningSliders.saveInitialSettings();
@@ -1943,6 +1943,11 @@ TABS.pid_tuning.initialize = function (callback) {
19431943
$('#pid_main .YAW .pid_data input').each(function() {
19441944
$(this).prop('disabled', disableY);
19451945
});
1946+
1947+
if (setMode !== TuningSliders.CONFIGURATOR_TUNING_SLIDERS.slider_pids_mode) {
1948+
self.setDirty(true);
1949+
}
1950+
19461951
}).trigger('change');
19471952
}
19481953

@@ -2070,11 +2075,11 @@ TABS.pid_tuning.initialize = function (callback) {
20702075
$('a.buttonPidTuningSliders').click(function() {
20712076
// set Slider PID mode to RP(Y) when re-enabling Sliders
20722077
if (semver.gte(FC.CONFIG.apiVersion, API_VERSION_1_44)) {
2073-
const firmwareMode = TuningSliders.initialSettings.sliderPidsMode;
2078+
const firmwareMode = TuningSliders.CONFIGURATOR_TUNING_SLIDERS.slider_pids_mode;
20742079
const workingMode = firmwareMode === 1 ? 1 : 2;
20752080

20762081
if (firmwareMode !== workingMode) {
2077-
self.sliderRetainConfiguration = true;
2082+
self.retainConfiguration = true;
20782083
}
20792084
sliderPidsModeSelect.val(workingMode).trigger('change');
20802085
}
@@ -2154,8 +2159,6 @@ TABS.pid_tuning.initialize = function (callback) {
21542159
});
21552160
// enable Filter sliders button
21562161
$('a.buttonFilterTuningSliders').click(function() {
2157-
self.sliderRetainConfiguration = true;
2158-
21592162
if (TuningSliders.GyroSliderUnavailable) {
21602163
//set Slider mode to ON when re-enabling Sliders
21612164
if (semver.gte(FC.CONFIG.apiVersion, API_VERSION_1_44)) {
@@ -2184,18 +2187,13 @@ TABS.pid_tuning.initialize = function (callback) {
21842187

21852188
// update on pid table inputs
21862189
$('#pid_main input').on('input', function() {
2187-
if (semver.gte(FC.CONFIG.apiVersion, API_VERSION_1_44)) {
2188-
self.sliderRetainConfiguration = true;
2189-
} else {
2190+
if (semver.lt(FC.CONFIG.apiVersion, API_VERSION_1_44)) {
21902191
TuningSliders.updatePidSlidersDisplay();
21912192
self.analyticsChanges['PidTuningSliders'] = "Off";
21922193
}
21932194
});
21942195
// update on filter value or type changes
21952196
$('.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-
}
21992197
TuningSliders.updateFilterSlidersDisplay();
22002198
if (TuningSliders.GyroSliderUnavailable) {
22012199
self.analyticsChanges['GyroFilterTuningSlider'] = "Off";
@@ -2268,7 +2266,7 @@ TABS.pid_tuning.initialize = function (callback) {
22682266
return MSP.promise(MSPCodes.MSP_EEPROM_WRITE);
22692267
}).then(function () {
22702268
self.updating = false;
2271-
self.sliderRetainConfiguration = false;
2269+
self.retainConfiguration = false;
22722270

22732271
self.setDirty(false);
22742272

@@ -2379,7 +2377,7 @@ TABS.pid_tuning.cleanup = function (callback) {
23792377
TABS.pid_tuning.refresh = function (callback) {
23802378
const self = this;
23812379

2382-
if (self.sliderRetainConfiguration && !self.updating) {
2380+
if (self.retainConfiguration && !self.updating) {
23832381
TuningSliders.restoreInitialSettings();
23842382
}
23852383

@@ -2416,6 +2414,10 @@ TABS.pid_tuning.setDirty = function (isDirty) {
24162414
if (semver.gte(FC.CONFIG.apiVersion, "1.20.0")) {
24172415
$('.tab-pid_tuning select[name="rate_profile"]').prop('disabled', isDirty);
24182416
}
2417+
2418+
if (isDirty) {
2419+
self.retainConfiguration = true;
2420+
}
24192421
};
24202422

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

0 commit comments

Comments
 (0)