From 39d928aa4938bbec10b1a968e0887e1cb200bc18 Mon Sep 17 00:00:00 2001 From: Andy Piper Date: Sun, 6 Mar 2022 15:00:01 +0000 Subject: [PATCH] Filter: add mutators for notch filter parameters --- libraries/Filter/HarmonicNotchFilter.cpp | 15 ++++++++++++++- libraries/Filter/HarmonicNotchFilter.h | 6 ++++++ libraries/Filter/NotchFilter.h | 1 + 3 files changed, 21 insertions(+), 1 deletion(-) diff --git a/libraries/Filter/HarmonicNotchFilter.cpp b/libraries/Filter/HarmonicNotchFilter.cpp index 661e062892..eba27e9872 100644 --- a/libraries/Filter/HarmonicNotchFilter.cpp +++ b/libraries/Filter/HarmonicNotchFilter.cpp @@ -80,7 +80,7 @@ const AP_Param::GroupInfo HarmonicNotchFilterParams::var_info[] = { // @Range: 0 4 // @Values: 0:Disabled,1:Throttle,2:RPM Sensor,3:ESC Telemetry,4:Dynamic FFT,5:Second RPM Sensor // @User: Advanced - AP_GROUPINFO("MODE", 7, HarmonicNotchFilterParams, _tracking_mode, 1), + AP_GROUPINFO("MODE", 7, HarmonicNotchFilterParams, _tracking_mode, int8_t(HarmonicNotchDynamicMode::UpdateThrottle)), // @Param: OPTS // @DisplayName: Harmonic Notch Filter options @@ -287,6 +287,19 @@ HarmonicNotchFilterParams::HarmonicNotchFilterParams(void) AP_Param::setup_object_defaults(this, var_info); } +/* + save changed parameters + */ +void HarmonicNotchFilterParams::save_params() +{ + _enable.save(); + _center_freq_hz.save(); + _bandwidth_hz.save(); + _attenuation_dB.save(); + _harmonics.save(); + _reference.save(); +} + /* instantiate template classes */ diff --git a/libraries/Filter/HarmonicNotchFilter.h b/libraries/Filter/HarmonicNotchFilter.h index 636d0fcc95..34119bf6db 100644 --- a/libraries/Filter/HarmonicNotchFilter.h +++ b/libraries/Filter/HarmonicNotchFilter.h @@ -90,18 +90,24 @@ public: HarmonicNotchFilterParams(void); // set the fundamental center frequency of the harmonic notch void set_center_freq_hz(float center_freq) { _center_freq_hz.set(center_freq); } + // set the bandwidth of the harmonic notch + void set_bandwidth_hz(float bandwidth_hz) { _bandwidth_hz.set(bandwidth_hz); } // harmonics enabled on the harmonic notch uint8_t harmonics(void) const { return _harmonics; } // has the user set the harmonics value void set_default_harmonics(uint8_t hmncs) { _harmonics.set_default(hmncs); } // reference value of the harmonic notch float reference(void) const { return _reference; } + void set_reference(float ref) { _reference = ref; } // notch options bool hasOption(Options option) const { return _options & uint16_t(option); } // notch dynamic tracking mode HarmonicNotchDynamicMode tracking_mode(void) const { return HarmonicNotchDynamicMode(_tracking_mode.get()); } static const struct AP_Param::GroupInfo var_info[]; + // save parameters + void save_params(); + private: // configured notch harmonics AP_Int8 _harmonics; diff --git a/libraries/Filter/NotchFilter.h b/libraries/Filter/NotchFilter.h index 632f738d85..62352b60ee 100644 --- a/libraries/Filter/NotchFilter.h +++ b/libraries/Filter/NotchFilter.h @@ -54,6 +54,7 @@ public: float bandwidth_hz(void) const { return _bandwidth_hz; } float attenuation_dB(void) const { return _attenuation_dB; } uint8_t enabled(void) const { return _enable; } + void enable() { _enable.set(true); } protected: AP_Int8 _enable;