diff options
author | Tom Rondeau <trondeau@vt.edu> | 2012-08-10 19:48:37 -0400 |
---|---|---|
committer | Tom Rondeau <trondeau@vt.edu> | 2012-08-10 19:48:37 -0400 |
commit | 5aaea26d457b7ed4c19096072b46b15b4e3f54b4 (patch) | |
tree | 35777dffb8de293af23ecfdad1c1a37612697315 /gr-digital/include | |
parent | b7cf0bf00b404c37214e3b617bf53862741f76e7 (diff) | |
parent | a61ddc223da190476b38f891ea425f44d8c5f269 (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.h | 7 | ||||
-rw-r--r-- | gr-digital/include/digital_fll_band_edge_cc.h | 10 | ||||
-rw-r--r-- | gr-digital/include/digital_gmskmod_bc.h | 5 | ||||
-rw-r--r-- | gr-digital/include/digital_kurtotic_equalizer_cc.h | 26 | ||||
-rw-r--r-- | gr-digital/include/digital_lms_dd_equalizer_cc.h | 37 | ||||
-rw-r--r-- | gr-digital/include/digital_mpsk_receiver_cc.h | 14 | ||||
-rw-r--r-- | gr-digital/include/digital_pfb_clock_sync_ccf.h | 19 | ||||
-rw-r--r-- | gr-digital/include/digital_pfb_clock_sync_fff.h | 19 |
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 |