GNU Radio Manual and C++ API Reference 3.8.5.0
The Free & Open Software Radio Ecosystem
 
Loading...
Searching...
No Matches
pfb_arb_resampler_ccf.h
Go to the documentation of this file.
1/* -*- c++ -*- */
2/*
3 * Copyright 2009,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_ARB_RESAMPLER_CCF_H
25#define INCLUDED_PFB_ARB_RESAMPLER_CCF_H
26
27#include <gnuradio/block.h>
28#include <gnuradio/filter/api.h>
29
30namespace gr {
31namespace filter {
32
33/*!
34 * \brief Polyphase filterbank arbitrary resampler with
35 * gr_complex input, gr_complex output and float taps
36 * \ingroup resamplers_blk
37 *
38 * \details
39
40 * This block takes in a signal stream and calls
41 * gr::filter::kernel::pfb_arb_resampler_ccf to perform
42 * arbitrary resampling on the stream.
43 *
44 * Output sampling rate is \p rate * input rate.
45 */
47{
48public:
49 // gr::filter::pfb_arb_resampler_ccf::sptr
50 typedef boost::shared_ptr<pfb_arb_resampler_ccf> sptr;
51
52 /*!
53 * Build the polyphase filterbank arbitrary resampler.
54 * \param rate (float) Specifies the resampling rate to use
55 * \param taps (vector/list of floats) The prototype filter to populate the
56 * filterbank. The taps should be generated at the filter_size sampling rate. \param
57 * filter_size (unsigned int) The number of filters in the filter bank. This is
58 * directly related to quantization noise introduced during the resampling. Defaults
59 * to 32 filters.
60 */
61 static sptr
62 make(float rate, const std::vector<float>& taps, unsigned int filter_size = 32);
63
64 /*!
65 * Resets the filterbank's filter taps with the new prototype filter
66 * \param taps (vector/list of floats) The prototype filter to populate the
67 * filterbank.
68 */
69 virtual void set_taps(const std::vector<float>& taps) = 0;
70
71 /*!
72 * Return a vector<vector<>> of the filterbank taps
73 */
74 virtual std::vector<std::vector<float>> taps() const = 0;
75
76 /*!
77 * Print all of the filterbank taps to screen.
78 */
79 virtual void print_taps() = 0;
80
81 /*!
82 * Sets the resampling rate of the block.
83 */
84 virtual void set_rate(float rate) = 0;
85
86 /*!
87 * Sets the current phase offset in radians (0 to 2pi).
88 */
89 virtual void set_phase(float ph) = 0;
90
91 /*!
92 * Gets the current phase of the resampler in radians (2 to 2pi).
93 */
94 virtual float phase() const = 0;
95
96 /*!
97 * Gets the number of taps per filter.
98 */
99 virtual unsigned int taps_per_filter() const = 0;
100
101 /*!
102 * Gets the interpolation rate of the filter.
103 */
104 virtual unsigned int interpolation_rate() const = 0;
105
106 /*!
107 * Gets the decimation rate of the filter.
108 */
109 virtual unsigned int decimation_rate() const = 0;
110
111 /*!
112 * Gets the fractional rate of the filter.
113 */
114 virtual float fractional_rate() const = 0;
115
116 /*!
117 * Get the group delay of the filter.
118 */
119 virtual int group_delay() const = 0;
120
121 /*!
122 * Calculates the phase offset expected by a sine wave of
123 * frequency \p freq and sampling rate \p fs (assuming input
124 * sine wave has 0 degree phase).
125 */
126 virtual float phase_offset(float freq, float fs) = 0;
127};
128
129} /* namespace filter */
130} /* namespace gr */
131
132#endif /* INCLUDED_PFB_ARB_RESAMPLER_CCF_H */
The abstract base class for all 'terminal' processing blocks.
Definition block.h:72
Polyphase filterbank arbitrary resampler with gr_complex input, gr_complex output and float taps.
Definition pfb_arb_resampler_ccf.h:47
virtual float phase() const =0
boost::shared_ptr< pfb_arb_resampler_ccf > sptr
Definition pfb_arb_resampler_ccf.h:50
virtual float phase_offset(float freq, float fs)=0
virtual unsigned int taps_per_filter() const =0
virtual void set_taps(const std::vector< float > &taps)=0
static sptr make(float rate, const std::vector< float > &taps, unsigned int filter_size=32)
virtual std::vector< std::vector< float > > taps() const =0
virtual void set_phase(float ph)=0
virtual void set_rate(float rate)=0
virtual int group_delay() const =0
virtual unsigned int interpolation_rate() const =0
virtual float fractional_rate() const =0
virtual unsigned int decimation_rate() const =0
#define FILTER_API
Definition gr-filter/include/gnuradio/filter/api.h:30
static const 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:46