summaryrefslogtreecommitdiff
path: root/gr-digital/include
diff options
context:
space:
mode:
authorTom Rondeau <trondeau@vt.edu>2012-08-10 19:48:37 -0400
committerTom Rondeau <trondeau@vt.edu>2012-08-10 19:48:37 -0400
commit5aaea26d457b7ed4c19096072b46b15b4e3f54b4 (patch)
tree35777dffb8de293af23ecfdad1c1a37612697315 /gr-digital/include
parentb7cf0bf00b404c37214e3b617bf53862741f76e7 (diff)
parenta61ddc223da190476b38f891ea425f44d8c5f269 (diff)
Merge remote-tracking branch 'jcorgan/wip/filter-rm-next' into digital_impl
Conflicts: gnuradio-core/src/lib/filter/CMakeLists.txt gnuradio-core/src/lib/filter/dotprod_ccf_armv7_a.c gnuradio-core/src/lib/filter/dotprod_fff_armv7_a.c gr-digital/include/digital_clock_recovery_mm_cc.h gr-digital/include/digital_clock_recovery_mm_ff.h gr-digital/include/digital_cma_equalizer_cc.h gr-digital/lib/CMakeLists.txt gr-digital/lib/binary_slicer_fb_impl.h gr-digital/lib/digital_clock_recovery_mm_cc.cc gr-digital/lib/digital_clock_recovery_mm_ff.cc gr-digital/lib/digital_cma_equalizer_cc.cc gr-digital/swig/CMakeLists.txt
Diffstat (limited to 'gr-digital/include')
-rw-r--r--gr-digital/include/digital_cpmmod_bc.h7
-rw-r--r--gr-digital/include/digital_fll_band_edge_cc.h10
-rw-r--r--gr-digital/include/digital_gmskmod_bc.h5
-rw-r--r--gr-digital/include/digital_kurtotic_equalizer_cc.h26
-rw-r--r--gr-digital/include/digital_lms_dd_equalizer_cc.h37
-rw-r--r--gr-digital/include/digital_mpsk_receiver_cc.h14
-rw-r--r--gr-digital/include/digital_pfb_clock_sync_ccf.h19
-rw-r--r--gr-digital/include/digital_pfb_clock_sync_fff.h19
8 files changed, 75 insertions, 62 deletions
diff --git a/gr-digital/include/digital_cpmmod_bc.h b/gr-digital/include/digital_cpmmod_bc.h
index f0f11ee30e..55837230cb 100644
--- a/gr-digital/include/digital_cpmmod_bc.h
+++ b/gr-digital/include/digital_cpmmod_bc.h
@@ -1,6 +1,6 @@
/* -*- c++ -*- */
/*
- * Copyright 2010 Free Software Foundation, Inc.
+ * Copyright 2010,2012 Free Software Foundation, Inc.
*
* This file is part of GNU Radio
*
@@ -26,10 +26,9 @@
#include <digital_api.h>
#include <gr_hier_block2.h>
#include <gr_char_to_float.h>
-#include <gr_interp_fir_filter_fff.h>
#include <gr_frequency_modulator_fc.h>
#include <gr_cpm.h>
-
+#include <filter/interp_fir_filter_fff.h>
class digital_cpmmod_bc;
typedef boost::shared_ptr<digital_cpmmod_bc> digital_cpmmod_bc_sptr;
@@ -81,7 +80,7 @@ class DIGITAL_API digital_cpmmod_bc : public gr_hier_block2
std::vector<float> d_taps;
gr_char_to_float_sptr d_char_to_float;
- gr_interp_fir_filter_fff_sptr d_pulse_shaper;
+ gr::filter::interp_fir_filter_fff::sptr d_pulse_shaper;
gr_frequency_modulator_fc_sptr d_fm;
protected:
diff --git a/gr-digital/include/digital_fll_band_edge_cc.h b/gr-digital/include/digital_fll_band_edge_cc.h
index 68083bbaeb..41ec3ec654 100644
--- a/gr-digital/include/digital_fll_band_edge_cc.h
+++ b/gr-digital/include/digital_fll_band_edge_cc.h
@@ -27,11 +27,7 @@
#include <digital_api.h>
#include <gr_sync_block.h>
#include <gri_control_loop.h>
-#include <gr_fir_util.h>
-#include <gr_fir_ccc.h>
-
-typedef gr_fir_ccc* (*fir_maker_t)(const std::vector<gr_complex> &taps);
-typedef gr_fir_ccc filter_t;
+#include <filter/fir_filter.h>
class digital_fll_band_edge_cc;
typedef boost::shared_ptr<digital_fll_band_edge_cc> digital_fll_band_edge_cc_sptr;
@@ -116,10 +112,10 @@ class DIGITAL_API digital_fll_band_edge_cc :
std::vector<gr_complex> d_taps_lower;
std::vector<gr_complex> d_taps_upper;
bool d_updated;
- filter_t* d_filter_lower;
- filter_t* d_filter_upper;
std::vector<gr_complex> d_output_hist;
std::vector<gr_complex> d_fllbuffer;
+ gr::filter::kernel::fir_filter_ccc* d_filter_lower;
+ gr::filter::kernel::fir_filter_ccc* d_filter_upper;
/*!
* Build the FLL
diff --git a/gr-digital/include/digital_gmskmod_bc.h b/gr-digital/include/digital_gmskmod_bc.h
index 9f378c8a70..b47f35879f 100644
--- a/gr-digital/include/digital_gmskmod_bc.h
+++ b/gr-digital/include/digital_gmskmod_bc.h
@@ -53,8 +53,9 @@ digital_make_gmskmod_bc(unsigned samples_per_sym=2,
*/
class DIGITAL_API digital_gmskmod_bc : public digital_cpmmod_bc
{
- friend DIGITAL_API digital_gmskmod_bc_sptr digital_make_gmskmod_bc(unsigned samples_per_sym,
- double bt, unsigned L);
+ friend DIGITAL_API digital_gmskmod_bc_sptr
+ digital_make_gmskmod_bc(unsigned samples_per_sym,
+ double bt, unsigned L);
digital_gmskmod_bc(unsigned samples_per_sym,
double bt, unsigned L);
};
diff --git a/gr-digital/include/digital_kurtotic_equalizer_cc.h b/gr-digital/include/digital_kurtotic_equalizer_cc.h
index fed88c3741..c18d91560c 100644
--- a/gr-digital/include/digital_kurtotic_equalizer_cc.h
+++ b/gr-digital/include/digital_kurtotic_equalizer_cc.h
@@ -1,6 +1,6 @@
/* -*- c++ -*- */
/*
- * Copyright 2011 Free Software Foundation, Inc.
+ * Copyright 2011,2012 Free Software Foundation, Inc.
*
* This file is part of GNU Radio
*
@@ -24,9 +24,11 @@
#define INCLUDED_DIGITAL_KURTOTIC_EQUALIZER_CC_H
#include <digital_api.h>
-#include <gr_adaptive_fir_ccc.h>
+#include <gr_sync_decimator.h>
+#include <filter/adaptive_fir.h>
#include <gr_math.h>
#include <iostream>
+#include <stdexcept>
class digital_kurtotic_equalizer_cc;
typedef boost::shared_ptr<digital_kurtotic_equalizer_cc> digital_kurtotic_equalizer_cc_sptr;
@@ -39,11 +41,14 @@ digital_make_kurtotic_equalizer_cc(int num_taps, float mu);
* \ingroup eq_blk
* \ingroup digital
*
+ * WARNING: This block does not yet work.
+ *
* "Y. Guo, J. Zhao, Y. Sun, "Sign kurtosis maximization based blind
* equalization algorithm," IEEE Conf. on Control, Automation,
* Robotics and Vision, Vol. 3, Dec. 2004, pp. 2052 - 2057."
*/
-class DIGITAL_API digital_kurtotic_equalizer_cc : public gr_adaptive_fir_ccc
+class DIGITAL_API digital_kurtotic_equalizer_cc :
+ public gr_sync_decimator, public gr::filter::kernel::adaptive_fir_ccc
{
private:
float d_mu;
@@ -51,8 +56,9 @@ private:
gr_complex d_q, d_u;
float d_alpha_p, d_alpha_q, d_alpha_m;
- friend DIGITAL_API digital_kurtotic_equalizer_cc_sptr digital_make_kurtotic_equalizer_cc(int num_taps,
- float mu);
+ friend DIGITAL_API digital_kurtotic_equalizer_cc_sptr
+ digital_make_kurtotic_equalizer_cc(int num_taps, float mu);
+
digital_kurtotic_equalizer_cc(int num_taps, float mu);
gr_complex sign(gr_complex x)
@@ -87,10 +93,6 @@ protected:
(sign(d_u) * (nrm*cnj - 2.0f*d_p*cnj - conj(d_q)*out) -
abs(d_u)*cnj);
- //std::cout << "out: " << out << " p: " << d_p << " q: " << d_q;
- //std::cout << " m: " << d_m << " u: " << d_u << std::endl;
- //std::cout << "error: " << F << std::endl;
-
float re = gr_clip(F.real(), 1.0);
float im = gr_clip(F.imag(), 1.0);
return gr_complex(re, im);
@@ -108,6 +110,12 @@ public:
throw std::out_of_range("digital_kurtotic_equalizer::set_gain: Gain value must be >= 0");
d_mu = mu;
}
+
+ float gain() const { return d_mu; }
+
+ int work(int noutput_items,
+ gr_vector_const_void_star &input_items,
+ gr_vector_void_star &output_items);
};
#endif
diff --git a/gr-digital/include/digital_lms_dd_equalizer_cc.h b/gr-digital/include/digital_lms_dd_equalizer_cc.h
index 56871fa678..3bb9e935ad 100644
--- a/gr-digital/include/digital_lms_dd_equalizer_cc.h
+++ b/gr-digital/include/digital_lms_dd_equalizer_cc.h
@@ -1,6 +1,6 @@
/* -*- c++ -*- */
/*
- * Copyright 2011 Free Software Foundation, Inc.
+ * Copyright 2011,2012 Free Software Foundation, Inc.
*
* This file is part of GNU Radio
*
@@ -24,15 +24,18 @@
#define INCLUDED_DIGITAL_LMS_DD_EQUALIZER_CC_H
#include <digital_api.h>
-#include <gr_adaptive_fir_ccc.h>
+#include <gr_sync_decimator.h>
+#include <filter/adaptive_fir.h>
#include <digital_constellation.h>
+#include <stdexcept>
class digital_lms_dd_equalizer_cc;
typedef boost::shared_ptr<digital_lms_dd_equalizer_cc> digital_lms_dd_equalizer_cc_sptr;
-DIGITAL_API digital_lms_dd_equalizer_cc_sptr digital_make_lms_dd_equalizer_cc (int num_taps,
- float mu, int sps,
- digital_constellation_sptr cnst);
+DIGITAL_API digital_lms_dd_equalizer_cc_sptr
+digital_make_lms_dd_equalizer_cc(int num_taps,
+ float mu, int sps,
+ digital_constellation_sptr cnst);
/*!
* \brief Least-Mean-Square Decision Directed Equalizer (complex in/out)
@@ -67,24 +70,25 @@ DIGITAL_API digital_lms_dd_equalizer_cc_sptr digital_make_lms_dd_equalizer_cc (i
* Prentice Hall, 1996.
*
*/
-class DIGITAL_API digital_lms_dd_equalizer_cc : public gr_adaptive_fir_ccc
+class DIGITAL_API digital_lms_dd_equalizer_cc :
+ public gr_sync_decimator, public gr::filter::kernel::adaptive_fir_ccc
{
private:
- friend DIGITAL_API digital_lms_dd_equalizer_cc_sptr digital_make_lms_dd_equalizer_cc (int num_taps,
- float mu, int sps,
- digital_constellation_sptr cnst);
+ friend DIGITAL_API digital_lms_dd_equalizer_cc_sptr
+ digital_make_lms_dd_equalizer_cc(int num_taps,
+ float mu, int sps,
+ digital_constellation_sptr cnst);
float d_mu;
- std::vector<gr_complex> d_taps;
digital_constellation_sptr d_cnst;
- digital_lms_dd_equalizer_cc (int num_taps,
- float mu, int sps,
- digital_constellation_sptr cnst);
+ digital_lms_dd_equalizer_cc(int num_taps,
+ float mu, int sps,
+ digital_constellation_sptr cnst);
protected:
- virtual gr_complex error(const gr_complex &out)
+ gr_complex error(const gr_complex &out)
{
gr_complex decision, error;
d_cnst->map_to_points(d_cnst->decision_maker(&out), &decision);
@@ -92,7 +96,7 @@ protected:
return error;
}
- virtual void update_tap(gr_complex &tap, const gr_complex &in)
+ void update_tap(gr_complex &tap, const gr_complex &in)
{
tap += d_mu*conj(in)*d_error;
}
@@ -113,6 +117,9 @@ public:
}
}
+ int work(int noutput_items,
+ gr_vector_const_void_star &input_items,
+ gr_vector_void_star &output_items);
};
#endif
diff --git a/gr-digital/include/digital_mpsk_receiver_cc.h b/gr-digital/include/digital_mpsk_receiver_cc.h
index 1f11a26b64..f3cc373eb7 100644
--- a/gr-digital/include/digital_mpsk_receiver_cc.h
+++ b/gr-digital/include/digital_mpsk_receiver_cc.h
@@ -29,8 +29,8 @@
#include <gr_block.h>
#include <gr_complex.h>
#include <fstream>
+#include <filter/mmse_fir_interpolator_cc.h>
-class gri_mmse_fir_interpolator_cc;
class digital_mpsk_receiver_cc;
typedef boost::shared_ptr<digital_mpsk_receiver_cc> digital_mpsk_receiver_cc_sptr;
@@ -298,7 +298,7 @@ private:
//! get interpolated value
- gri_mmse_fir_interpolator_cc *d_interp;
+ gr::filter::mmse_fir_interpolator_cc *d_interp;
//! delay line length.
static const unsigned int DLLEN = 8;
@@ -310,11 +310,11 @@ private:
unsigned int d_dl_idx;
friend DIGITAL_API digital_mpsk_receiver_cc_sptr
- digital_make_mpsk_receiver_cc (unsigned int M, float theta,
- float loop_bw,
- float fmin, float fmax,
- float mu, float gain_mu,
- float omega, float gain_omega, float omega_rel);
+ digital_make_mpsk_receiver_cc(unsigned int M, float theta,
+ float loop_bw,
+ float fmin, float fmax,
+ float mu, float gain_mu,
+ float omega, float gain_omega, float omega_rel);
};
#endif
diff --git a/gr-digital/include/digital_pfb_clock_sync_ccf.h b/gr-digital/include/digital_pfb_clock_sync_ccf.h
index 1b403ab253..2d3565c6af 100644
--- a/gr-digital/include/digital_pfb_clock_sync_ccf.h
+++ b/gr-digital/include/digital_pfb_clock_sync_ccf.h
@@ -26,6 +26,9 @@
#include <digital_api.h>
#include <gr_block.h>
+#include <filter/fir_filter.h>
+
+using namespace gr::filter;
class digital_pfb_clock_sync_ccf;
typedef boost::shared_ptr<digital_pfb_clock_sync_ccf> digital_pfb_clock_sync_ccf_sptr;
@@ -37,8 +40,6 @@ digital_make_pfb_clock_sync_ccf(double sps, float loop_bw,
float max_rate_deviation=1.5,
int osps=1);
-class gr_fir_ccf;
-
/*!
* \class digital_pfb_clock_sync_ccf
*
@@ -183,12 +184,12 @@ class DIGITAL_API digital_pfb_clock_sync_ccf : public gr_block
float d_alpha;
float d_beta;
- int d_nfilters;
- int d_taps_per_filter;
- std::vector<gr_fir_ccf*> d_filters;
- std::vector<gr_fir_ccf*> d_diff_filters;
- std::vector< std::vector<float> > d_taps;
- std::vector< std::vector<float> > d_dtaps;
+ int d_nfilters;
+ int d_taps_per_filter;
+ std::vector<kernel::fir_filter_ccf*> d_filters;
+ std::vector<kernel::fir_filter_ccf*> d_diff_filters;
+ std::vector< std::vector<float> > d_taps;
+ std::vector< std::vector<float> > d_dtaps;
float d_k;
float d_rate;
@@ -230,7 +231,7 @@ public:
*/
void set_taps(const std::vector<float> &taps,
std::vector< std::vector<float> > &ourtaps,
- std::vector<gr_fir_ccf*> &ourfilter);
+ std::vector<kernel::fir_filter_ccf*> &ourfilter);
/*!
* Returns all of the taps of the matched filter
diff --git a/gr-digital/include/digital_pfb_clock_sync_fff.h b/gr-digital/include/digital_pfb_clock_sync_fff.h
index c7e8babd69..3c8ef8163b 100644
--- a/gr-digital/include/digital_pfb_clock_sync_fff.h
+++ b/gr-digital/include/digital_pfb_clock_sync_fff.h
@@ -26,6 +26,9 @@
#include <digital_api.h>
#include <gr_block.h>
+#include <filter/fir_filter.h>
+
+using namespace gr::filter;
class digital_pfb_clock_sync_fff;
typedef boost::shared_ptr<digital_pfb_clock_sync_fff> digital_pfb_clock_sync_fff_sptr;
@@ -37,8 +40,6 @@ digital_make_pfb_clock_sync_fff(double sps, float gain,
float max_rate_deviation=1.5,
int osps=1);
-class gr_fir_fff;
-
/*!
* \class digital_pfb_clock_sync_fff
*
@@ -183,12 +184,12 @@ class DIGITAL_API digital_pfb_clock_sync_fff : public gr_block
float d_alpha;
float d_beta;
- int d_nfilters;
- int d_taps_per_filter;
- std::vector<gr_fir_fff*> d_filters;
- std::vector<gr_fir_fff*> d_diff_filters;
- std::vector< std::vector<float> > d_taps;
- std::vector< std::vector<float> > d_dtaps;
+ int d_nfilters;
+ int d_taps_per_filter;
+ std::vector<kernel::fir_filter_fff*> d_filters;
+ std::vector<kernel::fir_filter_fff*> d_diff_filters;
+ std::vector< std::vector<float> > d_taps;
+ std::vector< std::vector<float> > d_dtaps;
float d_k;
float d_rate;
@@ -230,7 +231,7 @@ public:
*/
void set_taps(const std::vector<float> &taps,
std::vector< std::vector<float> > &ourtaps,
- std::vector<gr_fir_fff*> &ourfilter);
+ std::vector<kernel::fir_filter_fff*> &ourfilter);
/*!
* Returns all of the taps of the matched filter