@@ -379,51 +379,82 @@ TABS.pid_tuning.initialize = function (callback) {
379379 }
380380
381381 if ( semver . gte ( FC . CONFIG . apiVersion , API_VERSION_1_42 ) ) {
382- const dynamicNotchWidthPercent_e = $ ( '.pid_filter input[name="dynamicNotchWidthPercent"]' ) ;
383- const dynamicNotchQ_e = $ ( '.pid_filter input[name="dynamicNotchQ"]' ) ;
384- const dynamicNotchCount_e = $ ( '.pid_filter input[name="dynamicNotchCount"]' ) ;
385382
386383 $ ( '.smartfeedforward' ) . hide ( ) ;
387384
385+ // Dynamic Notch Filter
388386 if ( FC . FEATURE_CONFIG . features . isEnabled ( 'DYNAMIC_FILTER' ) ) {
389387 $ ( '.dynamicNotch' ) . show ( ) ;
390- } else {
388+ } else if ( semver . lt ( FC . CONFIG . apiVersion , API_VERSION_1_44 ) ) { // DYNAMIC_FILTER got removed from FEATURES in BF 4.3, so only hide dynNotch if API < 1.44
391389 $ ( '.dynamicNotch' ) . hide ( ) ;
392390 }
393- $ ( '.dynamicNotchRange' ) . toggle ( semver . lt ( FC . CONFIG . apiVersion , API_VERSION_1_43 ) ) ;
394- $ ( '.pid_filter select[name="dynamicNotchRange"]' ) . val ( FC . FILTER_CONFIG . dyn_notch_range ) ;
391+
392+ const dynamicNotchRange_e = $ ( '.pid_filter select[name="dynamicNotchRange"]' ) ;
393+ const dynamicNotchWidthPercent_e = $ ( '.pid_filter input[name="dynamicNotchWidthPercent"]' ) ;
394+ const dynamicNotchQ_e = $ ( '.pid_filter input[name="dynamicNotchQ"]' ) ;
395+ const dynamicNotchCount_e = $ ( '.pid_filter input[name="dynamicNotchCount"]' ) ;
396+ const dynamicNotchMinHz_e = $ ( '.pid_filter input[name="dynamicNotchMinHz"]' ) ;
397+ const dynamicNotchMaxHz_e = $ ( '.pid_filter input[name="dynamicNotchMaxHz"]' ) ;
398+
399+ dynamicNotchRange_e . val ( FC . FILTER_CONFIG . dyn_notch_range ) ;
395400 dynamicNotchWidthPercent_e . val ( FC . FILTER_CONFIG . dyn_notch_width_percent ) ;
396401 dynamicNotchQ_e . val ( FC . FILTER_CONFIG . dyn_notch_q ) ;
397402 dynamicNotchCount_e . val ( FC . FILTER_CONFIG . dyn_notch_count ) ;
398- $ ( '.pid_filter input[name="dynamicNotchMinHz"]' ) . val ( FC . FILTER_CONFIG . dyn_notch_min_hz ) ;
403+ dynamicNotchMinHz_e . val ( FC . FILTER_CONFIG . dyn_notch_min_hz ) ;
404+
399405 if ( semver . gte ( FC . CONFIG . apiVersion , API_VERSION_1_43 ) ) {
400- $ ( '.pid_filter input[name="dynamicNotchMinHz"]' ) . attr ( "max" , "250" ) ;
401- $ ( '.pid_filter input[name="dynamicNotchMaxHz"]' ) . val ( FC . FILTER_CONFIG . dyn_notch_max_hz ) ;
406+ dynamicNotchMinHz_e . attr ( "max" , "250" ) ;
407+ dynamicNotchMaxHz_e . val ( FC . FILTER_CONFIG . dyn_notch_max_hz ) ;
402408 } else {
403409 $ ( '.dynamicNotchMaxHz' ) . hide ( ) ;
404410 }
411+
412+ $ ( '.dynamicNotchRange' ) . toggle ( semver . lt ( FC . CONFIG . apiVersion , API_VERSION_1_43 ) ) ;
413+
405414 if ( semver . gte ( FC . CONFIG . apiVersion , API_VERSION_1_44 ) ) {
415+
406416 $ ( '.dynamicNotchHelp' ) . attr ( 'title' , i18n . getMessage ( 'pidTuningMultiDynamicNotchFilterHelp' ) ) ;
407417 $ ( '.dynamicNotchWidthPercent' ) . hide ( ) ;
418+
419+ $ ( '.pid_filter #dynamicNotchEnabled' ) . change ( function ( ) {
420+
421+ let count = dynamicNotchCount_e . val ( ) ;
422+ let checked = $ ( this ) . is ( ':checked' ) ;
423+
424+ dynamicNotchCount_e . attr ( 'disabled' , ! checked ) ;
425+ dynamicNotchQ_e . attr ( 'disabled' , ! checked ) ;
426+ dynamicNotchMinHz_e . attr ( 'disabled' , ! checked ) ;
427+ dynamicNotchMaxHz_e . attr ( 'disabled' , ! checked ) ;
428+
429+ if ( count == 0 ) {
430+ dynamicNotchCount_e . val ( FILTER_DEFAULT . dyn_notch_count ) ;
431+ }
432+
433+ } ) . prop ( 'checked' , FC . FILTER_CONFIG . dyn_notch_count != 0 ) . change ( ) ;
434+
408435 } else {
409436 $ ( '.dynamicNotchCount' ) . hide ( ) ;
410437 }
411438
439+ // RPM Filter
412440 $ ( '.rpmFilter' ) . toggle ( FC . MOTOR_CONFIG . use_dshot_telemetry ) ;
413441
414- $ ( '.pid_filter input[name="rpmFilterHarmonics"]' ) . val ( FC . FILTER_CONFIG . gyro_rpm_notch_harmonics ) ;
415- $ ( '.pid_filter input[name="rpmFilterMinHz"]' ) . val ( FC . FILTER_CONFIG . gyro_rpm_notch_min_hz ) ;
442+ const rpmFilterHarmonics_e = $ ( '.pid_filter input[name="rpmFilterHarmonics"]' ) ;
443+ const rpmFilterMinHz_e = $ ( '.pid_filter input[name="rpmFilterMinHz"]' ) ;
444+
445+ rpmFilterHarmonics_e . val ( FC . FILTER_CONFIG . gyro_rpm_notch_harmonics ) ;
446+ rpmFilterMinHz_e . val ( FC . FILTER_CONFIG . gyro_rpm_notch_min_hz ) ;
416447
417448 $ ( '.pid_filter #rpmFilterEnabled' ) . change ( function ( ) {
418449
419- let harmonics = $ ( '.pid_filter input[name="rpmFilterHarmonics"]' ) . val ( ) ;
450+ let harmonics = rpmFilterHarmonics_e . val ( ) ;
420451 let checked = $ ( this ) . is ( ':checked' ) && harmonics != 0 ;
421452
422- $ ( '.pid_filter input[name="rpmFilterHarmonics"]' ) . attr ( 'disabled' , ! checked ) ;
423- $ ( '.pid_filter input[name="rpmFilterMinHz"]' ) . attr ( 'disabled' , ! checked ) ;
453+ rpmFilterHarmonics_e . attr ( 'disabled' , ! checked ) ;
454+ rpmFilterMinHz_e . attr ( 'disabled' , ! checked ) ;
424455
425456 if ( harmonics == 0 ) {
426- $ ( '.pid_filter input[name="rpmFilterHarmonics"]' ) . val ( FILTER_DEFAULT . gyro_rpm_notch_harmonics ) ;
457+ rpmFilterHarmonics_e . val ( FILTER_DEFAULT . gyro_rpm_notch_harmonics ) ;
427458 }
428459
429460 if ( checked !== ( FC . FILTER_CONFIG . gyro_rpm_notch_harmonics !== 0 ) ) { // if rpmFilterEnabled is not the same value as saved in the fc
@@ -1069,7 +1100,9 @@ TABS.pid_tuning.initialize = function (callback) {
10691100 FC . FILTER_CONFIG . dyn_lpf_curve_expo = parseInt ( $ ( '.pid_filter input[name="dtermLowpassDynExpo"]' ) . val ( ) ) ;
10701101 FC . ADVANCED_TUNING . vbat_sag_compensation = $ ( 'input[id="vbatSagCompensation"]' ) . is ( ':checked' ) ? parseInt ( $ ( 'input[name="vbatSagValue"]' ) . val ( ) ) : 0 ;
10711102 FC . ADVANCED_TUNING . thrustLinearization = $ ( 'input[id="thrustLinearization"]' ) . is ( ':checked' ) ? parseInt ( $ ( 'input[name="thrustLinearValue"]' ) . val ( ) ) : 0 ;
1072- FC . FILTER_CONFIG . dyn_notch_count = parseInt ( $ ( '.pid_filter input[name="dynamicNotchCount"]' ) . val ( ) ) ;
1103+
1104+ let dynamicNotchEnabled = $ ( '.pid_filter #dynamicNotchEnabled' ) . is ( ':checked' ) ;
1105+ FC . FILTER_CONFIG . dyn_notch_count = dynamicNotchEnabled ? parseInt ( $ ( '.pid_filter input[name="dynamicNotchCount"]' ) . val ( ) ) : 0 ;
10731106
10741107 FC . TUNING_SLIDERS . slider_pids_mode = TuningSliders . sliderPidsMode ;
10751108 //rounds slider values to nearies multiple of 5 and passes to the FW. Avoid dividing calc by (* x 100)/5 = 20
@@ -2752,7 +2785,7 @@ TABS.pid_tuning.updateFilterWarning = function() {
27522785 } else {
27532786 warningE . hide ( ) ;
27542787 }
2755- if ( semver . gte ( FC . CONFIG . apiVersion , API_VERSION_1_42 ) ) {
2788+ if ( semver . gte ( FC . CONFIG . apiVersion , API_VERSION_1_42 ) && semver . lt ( FC . CONFIG . apiVersion , API_VERSION_1_44 ) ) {
27562789 if ( FC . FEATURE_CONFIG . features . isEnabled ( 'DYNAMIC_FILTER' ) ) {
27572790 warningDynamicNotchE . hide ( ) ;
27582791 } else {
@@ -3017,7 +3050,6 @@ TABS.pid_tuning.changeRatesTypeLogo = function() {
30173050 }
30183051} ;
30193052
3020-
30213053TABS . pid_tuning . expertModeChanged = function ( expertModeEnabled ) {
30223054 TuningSliders . setExpertMode ( expertModeEnabled ) ;
30233055} ;
0 commit comments