GNSS-SDR 0.0.21
An Open Source GNSS Software Defined Receiver
Loading...
Searching...
No Matches
fir_filter.h
Go to the documentation of this file.
1/*!
2 * \file fir_filter.h
3 * \brief Adapts a gnuradio gr_fir_filter designed with pm_remez
4 * \author Luis Esteve, 2012. luis(at)epsilon-formacion.com
5 *
6 *
7 * -----------------------------------------------------------------------------
8 *
9 * GNSS-SDR is a Global Navigation Satellite System software-defined receiver.
10 * This file is part of GNSS-SDR.
11 *
12 * Copyright (C) 2010-2020 (see AUTHORS file for a list of contributors)
13 * SPDX-License-Identifier: GPL-3.0-or-later
14 *
15 * -----------------------------------------------------------------------------
16 */
17
18#ifndef GNSS_SDR_FIR_FILTER_H
19#define GNSS_SDR_FIR_FILTER_H
20
23#include "cshort_to_float_x2.h"
25#include "short_x2_to_cshort.h"
26#include <gnuradio/blocks/file_sink.h>
27#include <gnuradio/blocks/float_to_char.h>
28#include <gnuradio/blocks/float_to_complex.h>
29#include <gnuradio/blocks/float_to_short.h>
30#include <gnuradio/gr_complex.h>
31#ifdef GR_GREATER_38
32#include <gnuradio/filter/fir_filter_blk.h>
33#else
34#include <gnuradio/filter/fir_filter_ccf.h>
35#include <gnuradio/filter/fir_filter_fff.h>
36#endif
37#include <cmath>
38#include <string>
39#include <vector>
40
41/** \addtogroup Input_Filter Input Filter
42 * Classes for input signal filtering
43 * \{ */
44/** \addtogroup Input_filter_adapters input_filter_adapters
45 * Classes that wrap GNU Radio input filters with a GNSSBlockInterface
46 * \{ */
47
48
50
51/*!
52 * \brief This class adapts a GNU Radio gr_fir_filter designed with pm_remez
53 *
54 * See Parks-McClellan FIR filter design, https://en.wikipedia.org/wiki/Parks-McClellan_filter_design_algorithm
55 * Calculates the optimal (in the Chebyshev/minimax sense) FIR filter impulse response
56 * given a set of band edges, the desired response on those bands, and the weight given
57 * to the error in those bands.
58 */
60{
61public:
62 //! Constructor
63 FirFilter(const ConfigurationInterface* configuration,
64 std::string role,
65 unsigned int in_streams,
66 unsigned int out_streams);
67
68 //! Destructor
69 ~FirFilter() = default;
70
71 inline std::string role() override
72 {
73 return role_;
74 }
75
76 //! Returns "Fir_Filter"
77 inline std::string implementation() override
78 {
79 return "Fir_Filter";
80 }
81
82 inline size_t item_size() override
83 {
84 return item_size_;
85 }
86
87 void connect(gr::top_block_sptr top_block) override;
88 void disconnect(gr::top_block_sptr top_block) override;
89 gr::basic_block_sptr get_left_block() override;
90 gr::basic_block_sptr get_right_block() override;
91
92private:
93 void init();
94
95 gr::filter::fir_filter_ccf::sptr fir_filter_ccf_;
96 gr::filter::fir_filter_fff::sptr fir_filter_fff_1_;
97 gr::filter::fir_filter_fff::sptr fir_filter_fff_2_;
98 gr::blocks::float_to_complex::sptr float_to_complex_;
99 gr::blocks::float_to_short::sptr float_to_short_1_;
100 gr::blocks::float_to_short::sptr float_to_short_2_;
101 short_x2_to_cshort_sptr short_x2_to_cshort_;
102 complex_byte_to_float_x2_sptr cbyte_to_float_x2_;
103 byte_x2_to_complex_byte_sptr char_x2_cbyte_;
104 cshort_to_float_x2_sptr cshort_to_float_x2_;
105 gr::blocks::float_to_char::sptr float_to_char_1_;
106 gr::blocks::float_to_char::sptr float_to_char_2_;
107 gr::blocks::file_sink::sptr file_sink_;
108 const ConfigurationInterface* config_;
109 std::vector<float> taps_;
110 std::string dump_filename_;
111 std::string input_item_type_;
112 std::string output_item_type_;
113 std::string taps_item_type_;
114 std::string role_;
115 size_t item_size_;
116 unsigned int in_streams_;
117 unsigned int out_streams_;
118 bool dump_;
119};
120
121
122/** \} */
123/** \} */
124#endif // GNSS_SDR_FIR_FILTER_H
Adapts two signed char streams into a std::complex<signed char> stream.
This abstract class represents an interface to configuration parameters.
std::string implementation() override
Returns "Fir_Filter".
Definition fir_filter.h:77
FirFilter(const ConfigurationInterface *configuration, std::string role, unsigned int in_streams, unsigned int out_streams)
Constructor.
~FirFilter()=default
Destructor.
This abstract class represents an interface to GNSS blocks.
Adapts a std::complex<signed char> stream into two 16-bits (short) streams.
Adapts a std::complex<short> stream into two float streams.
This interface represents a GNSS block.
Adapts two short streams into a std::complex<short> stream.