diff options
-rw-r--r-- | gr-digital/grc/digital_cma_equalizer_cc.xml | 2 | ||||
-rw-r--r-- | gr-digital/lib/digital_cma_equalizer_cc.h | 5 | ||||
-rw-r--r-- | gr-digital/swig/digital_cma_equalizer_cc.i | 2 |
3 files changed, 8 insertions, 1 deletions
diff --git a/gr-digital/grc/digital_cma_equalizer_cc.xml b/gr-digital/grc/digital_cma_equalizer_cc.xml index 9de103e761..a21d700db6 100644 --- a/gr-digital/grc/digital_cma_equalizer_cc.xml +++ b/gr-digital/grc/digital_cma_equalizer_cc.xml @@ -9,6 +9,8 @@ <key>digital_cma_equalizer_cc</key> <import>from gnuradio import digital</import> <make>digital.cma_equalizer_cc($num_taps, $modulus, $mu)</make> + <callback>set_gain($mu)</callback> + <callback>set_modulus($modulus)</callback> <param> <name>Num. Taps</name> <key>num_taps</key> diff --git a/gr-digital/lib/digital_cma_equalizer_cc.h b/gr-digital/lib/digital_cma_equalizer_cc.h index 45883eb031..54cba319ce 100644 --- a/gr-digital/lib/digital_cma_equalizer_cc.h +++ b/gr-digital/lib/digital_cma_equalizer_cc.h @@ -24,6 +24,7 @@ #define INCLUDED_DIGITAL_CMA_EQUALIZER_CC_H #include <gr_adaptive_fir_ccc.h> +#include <gr_math.h> #include <iostream> class digital_cma_equalizer_cc; @@ -58,7 +59,9 @@ protected: virtual gr_complex error(const gr_complex &out) { gr_complex error = out*(norm(out) - d_modulus); - return error; + float re = gr_clip(error.real(), 1.0); + float im = gr_clip(error.imag(), 1.0); + return gr_complex(re, im); } virtual void update_tap(gr_complex &tap, const gr_complex &in) diff --git a/gr-digital/swig/digital_cma_equalizer_cc.i b/gr-digital/swig/digital_cma_equalizer_cc.i index 698e57fbb7..346b744db8 100644 --- a/gr-digital/swig/digital_cma_equalizer_cc.i +++ b/gr-digital/swig/digital_cma_equalizer_cc.i @@ -37,4 +37,6 @@ private: digital_cma_equalizer_cc(int num_taps, float modulus, float mu); public: + void set_gain(float mu); + void set_modulus(float mod); }; |