GNU Radio Manual and C++ API Reference 3.9.4.0
The Free & Open Software Radio Ecosystem
cma_equalizer_cc.h
Go to the documentation of this file.
1/* -*- c++ -*- */
2/*
3 * Copyright 2011,2012 Free Software Foundation, Inc.
4 *
5 * This file is part of GNU Radio
6 *
7 * SPDX-License-Identifier: GPL-3.0-or-later
8 *
9 */
10
11#ifndef INCLUDED_DIGITAL_CMA_EQUALIZER_CC_H
12#define INCLUDED_DIGITAL_CMA_EQUALIZER_CC_H
13
16
17namespace gr {
18namespace digital {
19
20/*!
21 * \brief Implements constant modulus adaptive filter on complex stream.
22 * \ingroup equalizers_blk
23 * \ingroup deprecated_blk
24 *
25 * \details
26 * The error value and tap update equations (for p=2) can be found in:
27 *
28 * D. Godard, "Self-Recovering Equalization and Carrier Tracking
29 * in Two-Dimensional Data Communication Systems," IEEE
30 * Transactions on Communications, Vol. 28, No. 11, pp. 1867 -
31 * 1875, 1980.
32 */
34{
35protected:
36 virtual gr_complex error(const gr_complex& out) = 0;
37 virtual void update_tap(gr_complex& tap, const gr_complex& in) = 0;
38
39public:
40 // gr::digital::cma_equalizer_cc::sptr
41 typedef std::shared_ptr<cma_equalizer_cc> sptr;
42
43 /*!
44 * Make a CMA Equalizer block
45 *
46 * \param num_taps Number of taps in the equalizer (channel size)
47 * \param modulus Modulus of the modulated signals
48 * \param mu Gain of the update loop
49 * \param sps Number of samples per symbol of the input signal
50 */
51 static sptr make(int num_taps, float modulus, float mu, int sps);
52
53 virtual void set_taps(const std::vector<gr_complex>& taps) = 0;
54 virtual std::vector<gr_complex> taps() const = 0;
55 virtual float gain() const = 0;
56 virtual void set_gain(float mu) = 0;
57 virtual float modulus() const = 0;
58 virtual void set_modulus(float mod) = 0;
59};
60
61} /* namespace digital */
62} /* namespace gr */
63
64#endif /* INCLUDED_DIGITAL_CMA_EQUALIZER_CC_H */
Implements constant modulus adaptive filter on complex stream.
Definition: cma_equalizer_cc.h:34
virtual float gain() const =0
virtual std::vector< gr_complex > taps() const =0
virtual void set_taps(const std::vector< gr_complex > &taps)=0
static sptr make(int num_taps, float modulus, float mu, int sps)
virtual gr_complex error(const gr_complex &out)=0
virtual void set_gain(float mu)=0
std::shared_ptr< cma_equalizer_cc > sptr
Definition: cma_equalizer_cc.h:41
virtual float modulus() const =0
virtual void set_modulus(float mod)=0
virtual void update_tap(gr_complex &tap, const gr_complex &in)=0
synchronous N:1 input to output with history
Definition: sync_decimator.h:26
#define DIGITAL_API
Definition: gr-digital/include/gnuradio/digital/api.h:18
std::complex< float > gr_complex
Definition: gr_complex.h:15
static constexpr float taps[NSTEPS+1][NTAPS]
Definition: interpolator_taps.h:9
GNU Radio logging wrapper for log4cpp library (C++ port of log4j)
Definition: basic_block.h:29