GNU Radio 3.7.1-52 C++ API
pfb_synthesizer_ccf.h
Go to the documentation of this file.
1
/* -*- c++ -*- */
2
/*
3
* Copyright 2010,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
24
#ifndef INCLUDED_PFB_SYNTHESIZER_CCF_H
25
#define INCLUDED_PFB_SYNTHESIZER_CCF_H
26
27
#include <
gnuradio/filter/api.h
>
28
#include <
gnuradio/sync_interpolator.h
>
29
30
namespace
gr {
31
namespace
filter {
32
33
/*!
34
* \brief Polyphase synthesis filterbank with
35
* gr_complex input, gr_complex output and float taps
36
* \ingroup channelizers_blk
37
*/
38
class
FILTER_API
pfb_synthesizer_ccf
:
virtual
public
sync_interpolator
39
{
40
public
:
41
// gr::filter::pfb_synthesizer_ccf::sptr
42
typedef
boost::shared_ptr<pfb_synthesizer_ccf>
sptr
;
43
44
/*!
45
* Build the polyphase synthesis filterbank.
46
* \param numchans (unsigned integer) Specifies the number of
47
* channels <EM>M</EM>
48
* \param taps (vector/list of floats) The prototype filter to
49
* populate the filterbank.
50
* \param twox (bool) use 2x oversampling or not (default is no)
51
*/
52
static
sptr
make(
unsigned
int
numchans,
53
const
std::vector<float> &
taps
,
54
bool
twox=
false
);
55
56
/*!
57
* Resets the filterbank's filter taps with the new prototype filter
58
* \param taps (vector/list of floats) The prototype filter to
59
* populate the filterbank.
60
*/
61
virtual
void
set_taps(
const
std::vector<float> &
taps
) = 0;
62
63
/*!
64
* Print all of the filterbank taps to screen.
65
*/
66
virtual
void
print_taps() = 0;
67
68
/*!
69
* Return a vector<vector<>> of the filterbank taps
70
*/
71
virtual
std::vector<std::vector<float> >
taps
()
const
= 0;
72
73
/*!
74
* Set the channel map. Channels are numbers as:
75
* N/2+1 | ... | N-1 | 0 | 1 | 2 | ... | N/2
76
* <------------------- 0 -------------------->
77
* freq
78
*
79
* So input stream 0 goes to channel 0, etc. Setting a new channel
80
* map allows the user to specify where in frequency he/she wants
81
* the input stream to go. This is especially useful to avoid
82
* putting signals into the channels on the edge of the spectrum
83
* which can either wrap around (in the case of odd number of
84
* channels) and be affected by filter rolloff in the transmitter.
85
*
86
* The map must be at least the number of streams being sent to the
87
* block. Less and the algorithm will not have enough data to
88
* properly setup the buffers. Any more channels specified will be
89
* ignored.
90
*/
91
virtual
void
set_channel_map(
const
std::vector<int> &
map
) = 0;
92
93
/*!
94
* Gets the current channel map.
95
*/
96
virtual
std::vector<int> channel_map()
const
= 0;
97
};
98
99
}
/* namespace filter */
100
}
/* namespace gr */
101
102
#endif
/* INCLUDED_PFB_SYNTHESIZER_CCF_H */
gnuradio
gr-filter
include
gnuradio
filter
pfb_synthesizer_ccf.h
Generated by
1.8.3.1