diff --git a/index.html b/index.html
index 34914db3..0ad73038 100644
--- a/index.html
+++ b/index.html
@@ -1197,6 +1197,25 @@
+
+
+ |
+
+
+ |
+
+
+
+ |
+
+
+
+ |
+
+
diff --git a/js/flightlog_parser.js b/js/flightlog_parser.js
index 33ce4fd8..5cc9477c 100644
--- a/js/flightlog_parser.js
+++ b/js/flightlog_parser.js
@@ -233,6 +233,7 @@ var FlightLogParser = function(logData) {
dterm_average_count:null, // DTerm Average Count
rollPitchItermResetRate:null, // ITerm Reset rate for Roll and Pitch
yawItermResetRate:null, // ITerm Reset Rate for Yaw
+ dshot_bidir:null, // DShot bidir protocol enabled
dterm_lpf_hz:null, // DTerm Lowpass Filter Hz
dterm_lpf_dyn_hz:[null, null], // DTerm Lowpass Dynamic Filter Min and Max Hz
dterm_lpf2_hz:null, // DTerm Lowpass Filter Hz 2
@@ -248,6 +249,12 @@ var FlightLogParser = function(logData) {
gyro_lowpass2_hz:null, // Gyro Soft Lowpass Filter Hz 2
gyro_notch_hz:null, // Gyro Notch Frequency
gyro_notch_cutoff:null, // Gyro Notch Cutoff
+ gyro_rpm_notch_harmonics:null, // Number of Harmonics in the gyro rpm filter
+ gyro_rpm_notch_q:null, // Value of Q in the gyro rpm filter
+ gyro_rpm_notch_min:null, // Min Hz for the gyro rpm filter
+ dterm_rpm_notch_harmonics:null, // Number of Harmonics in the dterm rpm filter
+ dterm_rpm_notch_q:null, // Value of Q in the dterm rpm filter
+ dterm_rpm_notch_min:null, // Min Hz for the dterm rpm filter
dterm_notch_hz:null, // Dterm Notch Frequency
dterm_notch_cutoff:null, // Dterm Notch Cutoff
acc_lpf_hz:null, // Accelerometer Lowpass filter Hz
@@ -585,6 +592,14 @@ var FlightLogParser = function(logData) {
case "use_integrated_yaw":
case "d_min_gain":
case "d_min_advance":
+ case "dshot_bidir":
+ case "gyro_rpm_notch_harmonics":
+ case "gyro_rpm_notch_q":
+ case "gyro_rpm_notch_min":
+ case "dterm_rpm_notch_harmonics":
+ case "dterm_rpm_notch_q":
+ case "dterm_rpm_notch_min":
+
that.sysConfig[fieldName] = parseInt(fieldValue, 10);
break;
diff --git a/js/header_dialog.js b/js/header_dialog.js
index de19412d..c2da1c63 100644
--- a/js/header_dialog.js
+++ b/js/header_dialog.js
@@ -80,6 +80,14 @@ function HeaderDialog(dialog, onSave) {
{name:'rc_smoothing_active_cutoffs_1', type:FIRMWARE_TYPE_BETAFLIGHT, min:'4.0.0', max:'999.9.9'},
{name:'rc_smoothing_active_cutoffs_2', type:FIRMWARE_TYPE_BETAFLIGHT, min:'4.0.0', max:'999.9.9'},
{name:'rc_interpolation_channels' , type:FIRMWARE_TYPE_BETAFLIGHT, min:'4.0.0', max:'999.9.9'},
+ {name:'gyro_rpm_notch_harmonics' , type:FIRMWARE_TYPE_BETAFLIGHT, min:'4.1.0', max:'999.9.9'},
+ {name:'gyro_rpm_notch_q' , type:FIRMWARE_TYPE_BETAFLIGHT, min:'4.1.0', max:'999.9.9'},
+ {name:'gyro_rpm_notch_min' , type:FIRMWARE_TYPE_BETAFLIGHT, min:'4.1.0', max:'999.9.9'},
+ {name:'dterm_rpm_notch_harmonics' , type:FIRMWARE_TYPE_BETAFLIGHT, min:'4.1.0', max:'999.9.9'},
+ {name:'dterm_rpm_notch_q' , type:FIRMWARE_TYPE_BETAFLIGHT, min:'4.1.0', max:'999.9.9'},
+ {name:'dterm_rpm_notch_min' , type:FIRMWARE_TYPE_BETAFLIGHT, min:'4.1.0', max:'999.9.9'},
+ {name:'dshot_bidir' , type:FIRMWARE_TYPE_BETAFLIGHT, min:'4.1.0', max:'999.9.9'},
+
];
function isParameterValid(name) {
@@ -553,6 +561,16 @@ function HeaderDialog(dialog, onSave) {
setParameter('gyro_lowpass_hz' ,sysConfig.gyro_lowpass_hz,0);
setParameter('gyro_lowpass2_hz' ,sysConfig.gyro_lowpass2_hz,0);
+ setParameter('gyro_rpm_notch_harmonics', sysConfig.gyro_rpm_notch_harmonics, 0);
+ setParameter('gyro_rpm_notch_q' , sysConfig.gyro_rpm_notch_q , 0);
+ setParameter('gyro_rpm_notch_min' , sysConfig.gyro_rpm_notch_min , 0);
+
+ setParameter('dterm_rpm_notch_harmonics', sysConfig.dterm_rpm_notch_harmonics, 0);
+ setParameter('dterm_rpm_notch_q' , sysConfig.dterm_rpm_notch_q , 0);
+ setParameter('dterm_rpm_notch_min' , sysConfig.dterm_rpm_notch_min , 0);
+
+ $('.dshot_bidir_required').toggle(sysConfig.dshot_bidir == 1);
+
renderSelect('rc_smoothing_type' ,sysConfig.rc_smoothing_type, RC_SMOOTHING_TYPE);
renderSelect('rc_interpolation' ,sysConfig.rc_interpolation, RC_INTERPOLATION);
setParameter('rc_interpolation_interval' ,sysConfig.rc_interpolation_interval,0);
@@ -595,15 +613,17 @@ function HeaderDialog(dialog, onSave) {
setParameter('rate_limits_roll' , sysConfig.rate_limits[0], 0);
setParameter('rate_limits_pitch' , sysConfig.rate_limits[1], 0);
setParameter('rate_limits_yaw' , sysConfig.rate_limits[2], 0);
- $("rate_limits").show();
+ $("#rate_limits").show();
} else {
$("#d_min").hide();
- $("rate_limits").hide();
+ $("#rate_limits").hide();
}
renderSelect('unsynced_fast_pwm' ,sysConfig.unsynced_fast_pwm, MOTOR_SYNC);
renderSelect('fast_pwm_protocol' ,sysConfig.fast_pwm_protocol, FAST_PROTOCOL);
setParameter('motor_pwm_rate' ,sysConfig.motor_pwm_rate,0);
+ renderSelect('dshot_bidir' ,sysConfig.dshot_bidir, OFF_ON);
+
renderSelect('dterm_filter_type' ,sysConfig.dterm_filter_type, FILTER_TYPE);
setParameter('ptermSRateWeight' ,sysConfig.ptermSRateWeight,2);
setParameter('dtermSetpointWeight' ,sysConfig.dtermSetpointWeight,2);