@@ -377,51 +377,82 @@ TABS.pid_tuning.initialize = function (callback) {
377377 }
378378
379379 if ( semver . gte ( FC . CONFIG . apiVersion , API_VERSION_1_42 ) ) {
380- const dynamicNotchWidthPercent_e = $ ( '.pid_filter input[name="dynamicNotchWidthPercent"]' ) ;
381- const dynamicNotchQ_e = $ ( '.pid_filter input[name="dynamicNotchQ"]' ) ;
382- const dynamicNotchCount_e = $ ( '.pid_filter input[name="dynamicNotchCount"]' ) ;
383380
384381 $ ( '.smartfeedforward' ) . hide ( ) ;
385382
383+ // Dynamic Notch Filter
386384 if ( FC . FEATURE_CONFIG . features . isEnabled ( 'DYNAMIC_FILTER' ) ) {
387385 $ ( '.dynamicNotch' ) . show ( ) ;
388- } else {
386+ } 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
389387 $ ( '.dynamicNotch' ) . hide ( ) ;
390388 }
391- $ ( '.dynamicNotchRange' ) . toggle ( semver . lt ( FC . CONFIG . apiVersion , API_VERSION_1_43 ) ) ;
392- $ ( '.pid_filter select[name="dynamicNotchRange"]' ) . val ( FC . FILTER_CONFIG . dyn_notch_range ) ;
389+
390+ const dynamicNotchRange_e = $ ( '.pid_filter select[name="dynamicNotchRange"]' ) ;
391+ const dynamicNotchWidthPercent_e = $ ( '.pid_filter input[name="dynamicNotchWidthPercent"]' ) ;
392+ const dynamicNotchQ_e = $ ( '.pid_filter input[name="dynamicNotchQ"]' ) ;
393+ const dynamicNotchCount_e = $ ( '.pid_filter input[name="dynamicNotchCount"]' ) ;
394+ const dynamicNotchMinHz_e = $ ( '.pid_filter input[name="dynamicNotchMinHz"]' ) ;
395+ const dynamicNotchMaxHz_e = $ ( '.pid_filter input[name="dynamicNotchMaxHz"]' ) ;
396+
397+ dynamicNotchRange_e . val ( FC . FILTER_CONFIG . dyn_notch_range ) ;
393398 dynamicNotchWidthPercent_e . val ( FC . FILTER_CONFIG . dyn_notch_width_percent ) ;
394399 dynamicNotchQ_e . val ( FC . FILTER_CONFIG . dyn_notch_q ) ;
395400 dynamicNotchCount_e . val ( FC . FILTER_CONFIG . dyn_notch_count ) ;
396- $ ( '.pid_filter input[name="dynamicNotchMinHz"]' ) . val ( FC . FILTER_CONFIG . dyn_notch_min_hz ) ;
401+ dynamicNotchMinHz_e . val ( FC . FILTER_CONFIG . dyn_notch_min_hz ) ;
402+
397403 if ( semver . gte ( FC . CONFIG . apiVersion , API_VERSION_1_43 ) ) {
398- $ ( '.pid_filter input[name="dynamicNotchMinHz"]' ) . attr ( "max" , "250" ) ;
399- $ ( '.pid_filter input[name="dynamicNotchMaxHz"]' ) . val ( FC . FILTER_CONFIG . dyn_notch_max_hz ) ;
404+ dynamicNotchMinHz_e . attr ( "max" , "250" ) ;
405+ dynamicNotchMaxHz_e . val ( FC . FILTER_CONFIG . dyn_notch_max_hz ) ;
400406 } else {
401407 $ ( '.dynamicNotchMaxHz' ) . hide ( ) ;
402408 }
409+
410+ $ ( '.dynamicNotchRange' ) . toggle ( semver . lt ( FC . CONFIG . apiVersion , API_VERSION_1_43 ) ) ;
411+
403412 if ( semver . gte ( FC . CONFIG . apiVersion , API_VERSION_1_44 ) ) {
413+
404414 $ ( '.dynamicNotchHelp' ) . attr ( 'title' , i18n . getMessage ( 'pidTuningMultiDynamicNotchFilterHelp' ) ) ;
405415 $ ( '.dynamicNotchWidthPercent' ) . hide ( ) ;
416+
417+ $ ( '.pid_filter #dynamicNotchEnabled' ) . change ( function ( ) {
418+
419+ let count = dynamicNotchCount_e . val ( ) ;
420+ let checked = $ ( this ) . is ( ':checked' ) ;
421+
422+ dynamicNotchCount_e . attr ( 'disabled' , ! checked ) ;
423+ dynamicNotchQ_e . attr ( 'disabled' , ! checked ) ;
424+ dynamicNotchMinHz_e . attr ( 'disabled' , ! checked ) ;
425+ dynamicNotchMaxHz_e . attr ( 'disabled' , ! checked ) ;
426+
427+ if ( count == 0 ) {
428+ dynamicNotchCount_e . val ( FILTER_DEFAULT . dyn_notch_count ) ;
429+ }
430+
431+ } ) . prop ( 'checked' , FC . FILTER_CONFIG . dyn_notch_count != 0 ) . change ( ) ;
432+
406433 } else {
407434 $ ( '.dynamicNotchCount' ) . hide ( ) ;
408435 }
409436
437+ // RPM Filter
410438 $ ( '.rpmFilter' ) . toggle ( FC . MOTOR_CONFIG . use_dshot_telemetry ) ;
411439
412- $ ( '.pid_filter input[name="rpmFilterHarmonics"]' ) . val ( FC . FILTER_CONFIG . gyro_rpm_notch_harmonics ) ;
413- $ ( '.pid_filter input[name="rpmFilterMinHz"]' ) . val ( FC . FILTER_CONFIG . gyro_rpm_notch_min_hz ) ;
440+ const rpmFilterHarmonics_e = $ ( '.pid_filter input[name="rpmFilterHarmonics"]' ) ;
441+ const rpmFilterMinHz_e = $ ( '.pid_filter input[name="rpmFilterMinHz"]' ) ;
442+
443+ rpmFilterHarmonics_e . val ( FC . FILTER_CONFIG . gyro_rpm_notch_harmonics ) ;
444+ rpmFilterMinHz_e . val ( FC . FILTER_CONFIG . gyro_rpm_notch_min_hz ) ;
414445
415446 $ ( '.pid_filter #rpmFilterEnabled' ) . change ( function ( ) {
416447
417- let harmonics = $ ( '.pid_filter input[name="rpmFilterHarmonics"]' ) . val ( ) ;
448+ let harmonics = rpmFilterHarmonics_e . val ( ) ;
418449 let checked = $ ( this ) . is ( ':checked' ) && harmonics != 0 ;
419450
420- $ ( '.pid_filter input[name="rpmFilterHarmonics"]' ) . attr ( 'disabled' , ! checked ) ;
421- $ ( '.pid_filter input[name="rpmFilterMinHz"]' ) . attr ( 'disabled' , ! checked ) ;
451+ rpmFilterHarmonics_e . attr ( 'disabled' , ! checked ) ;
452+ rpmFilterMinHz_e . attr ( 'disabled' , ! checked ) ;
422453
423454 if ( harmonics == 0 ) {
424- $ ( '.pid_filter input[name="rpmFilterHarmonics"]' ) . val ( FILTER_DEFAULT . gyro_rpm_notch_harmonics ) ;
455+ rpmFilterHarmonics_e . val ( FILTER_DEFAULT . gyro_rpm_notch_harmonics ) ;
425456 }
426457
427458 if ( checked !== ( FC . FILTER_CONFIG . gyro_rpm_notch_harmonics !== 0 ) ) { // if rpmFilterEnabled is not the same value as saved in the fc
@@ -1350,7 +1381,9 @@ TABS.pid_tuning.initialize = function (callback) {
13501381 FC . ADVANCED_TUNING . vbat_sag_compensation = $ ( 'input[id="vbatSagCompensation"]' ) . is ( ':checked' ) ? parseInt ( $ ( 'input[name="vbatSagValue"]' ) . val ( ) ) : 0 ;
13511382 FC . ADVANCED_TUNING . thrustLinearization = $ ( 'input[id="thrustLinearization"]' ) . is ( ':checked' ) ? parseInt ( $ ( 'input[name="thrustLinearValue"]' ) . val ( ) ) : 0 ;
13521383 FC . FILTER_CONFIG . dyn_lpf_curve_expo = parseInt ( $ ( '.pid_filter input[name="dtermLowpassExpo"]' ) . val ( ) ) ;
1353- FC . FILTER_CONFIG . dyn_notch_count = parseInt ( $ ( '.pid_filter input[name="dynamicNotchCount"]' ) . val ( ) ) ;
1384+
1385+ let dynamicNotchEnabled = $ ( '.pid_filter #dynamicNotchEnabled' ) . is ( ':checked' ) ;
1386+ FC . FILTER_CONFIG . dyn_notch_count = dynamicNotchEnabled ? parseInt ( $ ( '.pid_filter input[name="dynamicNotchCount"]' ) . val ( ) ) : 0 ;
13541387
13551388 FC . TUNING_SLIDERS . slider_pids_mode = TuningSliders . sliderPidsMode ;
13561389 //round slider values to nearest multiple of 5 and passes to the FW. Avoid dividing calc by (* x 100)/5 = 20
@@ -3066,7 +3099,7 @@ TABS.pid_tuning.updateFilterWarning = function() {
30663099 } else {
30673100 warningE . hide ( ) ;
30683101 }
3069- if ( semver . gte ( FC . CONFIG . apiVersion , API_VERSION_1_42 ) ) {
3102+ if ( semver . gte ( FC . CONFIG . apiVersion , API_VERSION_1_42 ) && semver . lt ( FC . CONFIG . apiVersion , API_VERSION_1_44 ) ) {
30703103 if ( FC . FEATURE_CONFIG . features . isEnabled ( 'DYNAMIC_FILTER' ) ) {
30713104 warningDynamicNotchE . hide ( ) ;
30723105 } else {
@@ -3331,7 +3364,6 @@ TABS.pid_tuning.changeRatesTypeLogo = function() {
33313364 }
33323365} ;
33333366
3334-
33353367TABS . pid_tuning . expertModeChanged = function ( expertModeEnabled ) {
33363368 TuningSliders . setExpertMode ( expertModeEnabled ) ;
33373369} ;
0 commit comments