GNU Radio 3.7.2.1 C++ API
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
* GNU Radio is free software; you can redistribute it and/or modify
8
* it under the terms of the GNU General Public License as published by
9
* the Free Software Foundation; either version 3, or (at your option)
10
* any later version.
11
*
12
* GNU Radio is distributed in the hope that it will be useful,
13
* but WITHOUT ANY WARRANTY; without even the implied warranty of
14
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
15
* GNU General Public License for more details.
16
*
17
* You should have received a copy of the GNU General Public License
18
* along with GNU Radio; see the file COPYING. If not, write to
19
* the Free Software Foundation, Inc., 51 Franklin Street,
20
* Boston, MA 02110-1301, USA.
21
*/
22
23
#ifndef INCLUDED_DIGITAL_CMA_EQUALIZER_CC_H
24
#define INCLUDED_DIGITAL_CMA_EQUALIZER_CC_H
25
26
#include <
gnuradio/digital/api.h
>
27
#include <
gnuradio/sync_decimator.h
>
28
29
namespace
gr {
30
namespace
digital {
31
32
/*!
33
* \brief Implements constant modulus adaptive filter on complex stream.
34
* \ingroup equalizers_blk
35
*
36
* \details
37
* The error value and tap update equations (for p=2) can be found in:
38
*
39
* D. Godard, "Self-Recovering Equalization and Carrier Tracking
40
* in Two-Dimensional Data Communication Systems," IEEE
41
* Transactions on Communications, Vol. 28, No. 11, pp. 1867 -
42
* 1875, 1980.
43
*/
44
class
DIGITAL_API
cma_equalizer_cc
:
virtual
public
sync_decimator
45
{
46
protected
:
47
virtual
gr_complex
error(
const
gr_complex
&out) = 0;
48
virtual
void
update_tap(
gr_complex
&tap,
const
gr_complex
&in) = 0;
49
50
public
:
51
// gr::digital::cma_equalizer_cc::sptr
52
typedef
boost::shared_ptr<cma_equalizer_cc>
sptr
;
53
54
/*!
55
* Make a CMA Equalizer block
56
*
57
* \param num_taps Numer of taps in the equalizer (channel size)
58
* \param modulus Modulus of the modulated signals
59
* \param mu Gain of the update loop
60
* \param sps Number of samples per symbol of the input signal
61
*/
62
static
sptr
make(
int
num_taps,
float
modulus,
float
mu,
int
sps);
63
64
virtual
void
set_taps(
const
std::vector<gr_complex> &
taps
) = 0;
65
virtual
std::vector<gr_complex>
taps
()
const
= 0;
66
virtual
float
gain()
const
= 0;
67
virtual
void
set_gain(
float
mu) = 0;
68
virtual
float
modulus()
const
= 0;
69
virtual
void
set_modulus(
float
mod) = 0;
70
};
71
72
}
/* namespace digital */
73
}
/* namespace gr */
74
75
#endif
/* INCLUDED_DIGITAL_CMA_EQUALIZER_CC_H */
gnuradio
gr-digital
include
gnuradio
digital
cma_equalizer_cc.h
Generated by
1.8.3.1