summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--gr-digital/grc/digital_cma_equalizer_cc.xml2
-rw-r--r--gr-digital/lib/digital_cma_equalizer_cc.h5
-rw-r--r--gr-digital/swig/digital_cma_equalizer_cc.i2
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);
};