summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--gr-digital/grc/digital_cma_equalizer_cc.xml7
-rw-r--r--gr-digital/lib/digital_cma_equalizer_cc.cc9
-rw-r--r--gr-digital/lib/digital_cma_equalizer_cc.h7
-rw-r--r--gr-digital/swig/digital_cma_equalizer_cc.i5
4 files changed, 18 insertions, 10 deletions
diff --git a/gr-digital/grc/digital_cma_equalizer_cc.xml b/gr-digital/grc/digital_cma_equalizer_cc.xml
index a21d700db..8f069649a 100644
--- a/gr-digital/grc/digital_cma_equalizer_cc.xml
+++ b/gr-digital/grc/digital_cma_equalizer_cc.xml
@@ -8,7 +8,7 @@
<name>CMA Equalizer</name>
<key>digital_cma_equalizer_cc</key>
<import>from gnuradio import digital</import>
- <make>digital.cma_equalizer_cc($num_taps, $modulus, $mu)</make>
+ <make>digital.cma_equalizer_cc($num_taps, $modulus, $mu, $sps)</make>
<callback>set_gain($mu)</callback>
<callback>set_modulus($modulus)</callback>
<param>
@@ -26,6 +26,11 @@
<key>mu</key>
<type>real</type>
</param>
+ <param>
+ <name>Samples per Symbol</name>
+ <key>sps</key>
+ <type>int</type>
+ </param>
<sink>
<name>in</name>
<type>complex</type>
diff --git a/gr-digital/lib/digital_cma_equalizer_cc.cc b/gr-digital/lib/digital_cma_equalizer_cc.cc
index 89f56c16f..113b50ab8 100644
--- a/gr-digital/lib/digital_cma_equalizer_cc.cc
+++ b/gr-digital/lib/digital_cma_equalizer_cc.cc
@@ -25,15 +25,16 @@
#endif
#include <digital_cma_equalizer_cc.h>
+#include <cstdio>
digital_cma_equalizer_cc_sptr
-digital_make_cma_equalizer_cc(int num_taps, float modulus, float mu)
+digital_make_cma_equalizer_cc(int num_taps, float modulus, float mu, int sps)
{
- return gnuradio::get_initial_sptr(new digital_cma_equalizer_cc(num_taps, modulus, mu));
+ return gnuradio::get_initial_sptr(new digital_cma_equalizer_cc(num_taps, modulus, mu, sps));
}
-digital_cma_equalizer_cc::digital_cma_equalizer_cc(int num_taps, float modulus, float mu)
- : gr_adaptive_fir_ccc("cma_equalizer_cc", 1, std::vector<gr_complex>(num_taps))
+digital_cma_equalizer_cc::digital_cma_equalizer_cc(int num_taps, float modulus, float mu, int sps)
+ : gr_adaptive_fir_ccc("cma_equalizer_cc", sps, std::vector<gr_complex>(num_taps, gr_complex(0,0)))
{
set_modulus(modulus);
set_gain(mu);
diff --git a/gr-digital/lib/digital_cma_equalizer_cc.h b/gr-digital/lib/digital_cma_equalizer_cc.h
index 54cba319c..ba94854d1 100644
--- a/gr-digital/lib/digital_cma_equalizer_cc.h
+++ b/gr-digital/lib/digital_cma_equalizer_cc.h
@@ -31,7 +31,7 @@ class digital_cma_equalizer_cc;
typedef boost::shared_ptr<digital_cma_equalizer_cc> digital_cma_equalizer_cc_sptr;
digital_cma_equalizer_cc_sptr
-digital_make_cma_equalizer_cc(int num_taps, float modulus, float mu);
+digital_make_cma_equalizer_cc(int num_taps, float modulus, float mu, int sps);
/*!
* \brief Implements constant modulus adaptive filter on complex stream
@@ -51,8 +51,9 @@ private:
friend digital_cma_equalizer_cc_sptr digital_make_cma_equalizer_cc(int num_taps,
float modulus,
- float mu);
- digital_cma_equalizer_cc(int num_taps, float modulus, float mu);
+ float mu,
+ int sps);
+ digital_cma_equalizer_cc(int num_taps, float modulus, float mu, int sps);
protected:
diff --git a/gr-digital/swig/digital_cma_equalizer_cc.i b/gr-digital/swig/digital_cma_equalizer_cc.i
index 346b744db..ad3b1245c 100644
--- a/gr-digital/swig/digital_cma_equalizer_cc.i
+++ b/gr-digital/swig/digital_cma_equalizer_cc.i
@@ -29,12 +29,13 @@ GR_SWIG_BLOCK_MAGIC(digital,cma_equalizer_cc)
digital_cma_equalizer_cc_sptr
digital_make_cma_equalizer_cc(int num_taps,
float modulus,
- float mu);
+ float mu,
+ int sps);
class digital_cma_equalizer_cc : public gr_adaptive_fir_ccc
{
private:
- digital_cma_equalizer_cc(int num_taps, float modulus, float mu);
+ digital_cma_equalizer_cc(int num_taps, float modulus, float mu, int sps);
public:
void set_gain(float mu);