GNU Radio 3.6.5 C++ API
|
00001 /* -*- c++ -*- */ 00002 /* 00003 * Copyright 2002,2004,2012 Free Software Foundation, Inc. 00004 * 00005 * This file is part of GNU Radio 00006 * 00007 * GNU Radio is free software; you can redistribute it and/or modify 00008 * it under the terms of the GNU General Public License as published by 00009 * the Free Software Foundation; either version 3, or (at your option) 00010 * any later version. 00011 * 00012 * GNU Radio is distributed in the hope that it will be useful, 00013 * but WITHOUT ANY WARRANTY; without even the implied warranty of 00014 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 00015 * GNU General Public License for more details. 00016 * 00017 * You should have received a copy of the GNU General Public License 00018 * along with GNU Radio; see the file COPYING. If not, write to 00019 * the Free Software Foundation, Inc., 51 Franklin Street, 00020 * Boston, MA 02110-1301, USA. 00021 */ 00022 00023 /* 00024 * WARNING: This file is automatically generated by cmake. 00025 * Any changes made to this file will be overwritten. 00026 */ 00027 00028 #ifndef INCLUDED_FILTER_FREQ_XLATING_FIR_FILTER_SCF_H 00029 #define INCLUDED_FILTER_FREQ_XLATING_FIR_FILTER_SCF_H 00030 00031 #include <filter/api.h> 00032 #include <gr_sync_decimator.h> 00033 #include <gr_rotator.h> 00034 00035 namespace gr { 00036 namespace filter { 00037 00038 00039 /*! 00040 * \brief FIR filter combined with frequency translation with 00041 * short input, gr_complex output and float taps 00042 * 00043 * \ingroup channelizers_blk 00044 * 00045 * This class efficiently combines a frequency translation 00046 * (typically "down conversion") with a FIR filter (typically 00047 * low-pass) and decimation. It is ideally suited for a "channel 00048 * selection filter" and can be efficiently used to select and 00049 * decimate a narrow band signal out of wide bandwidth input. 00050 * 00051 * Uses a single input array to produce a single output array. 00052 * Additional inputs and/or outputs are ignored. 00053 */ 00054 class FILTER_API freq_xlating_fir_filter_scf : virtual public gr_sync_decimator 00055 { 00056 public: 00057 // gr::filter::freq_xlating_fir_filter_scf::sptr 00058 typedef boost::shared_ptr<freq_xlating_fir_filter_scf> sptr; 00059 00060 /*! 00061 * \brief FIR filter with short input, gr_complex output, and 00062 * float taps that also frequency translates a signal from 00063 * \p center_freq. 00064 * 00065 * Construct a FIR filter with the given taps and a composite 00066 * frequency translation that shifts center_freq down to zero 00067 * Hz. The frequency translation logically comes before the 00068 * filtering operation. 00069 * 00070 * \param decimation set the integer decimation rate 00071 * \param taps a vector/list of taps of type float 00072 * \param center_freq Center frequency of signal to down convert from (Hz) 00073 * \param sampling_freq Sampling rate of signal (in Hz) 00074 */ 00075 static sptr make(int decimation, 00076 const std::vector<float> &taps, 00077 double center_freq, 00078 double sampling_freq); 00079 00080 virtual void set_center_freq(double center_freq) = 0; 00081 virtual double center_freq() const = 0; 00082 00083 virtual void set_taps(const std::vector<float> &taps) = 0; 00084 virtual std::vector<float> taps() const = 0; 00085 }; 00086 00087 } /* namespace filter */ 00088 } /* namespace gr */ 00089 00090 #endif /* INCLUDED_FILTER_FREQ_XLATING_FIR_FILTER_SCF_H */