00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025
00026
00027
00028
00029 #ifndef INCLUDED_GR_FREQ_XLATING_FIR_FILTER_SCF_H
00030 #define INCLUDED_GR_FREQ_XLATING_FIR_FILTER_SCF_H
00031
00032 #include <gr_sync_decimator.h>
00033 #include <gr_rotator.h>
00034
00035 class gr_freq_xlating_fir_filter_scf;
00036 typedef boost::shared_ptr<gr_freq_xlating_fir_filter_scf> gr_freq_xlating_fir_filter_scf_sptr;
00037
00043 gr_freq_xlating_fir_filter_scf_sptr
00044 gr_make_freq_xlating_fir_filter_scf (int decimation, const std::vector<float> &taps,
00045 double center_freq, double sampling_freq);
00046
00047
00048 class gr_fir_scc;
00049
00063 class gr_freq_xlating_fir_filter_scf : public gr_sync_decimator
00064 {
00065 public:
00066 virtual ~gr_freq_xlating_fir_filter_scf ();
00067
00068 void set_center_freq (double center_freq);
00069 void set_taps (const std::vector<float> &taps);
00070
00071 int work (int noutput_items,
00072 gr_vector_const_void_star &input_items,
00073 gr_vector_void_star &output_items);
00074
00075 private:
00076 friend gr_freq_xlating_fir_filter_scf_sptr
00077 gr_make_freq_xlating_fir_filter_scf (int decimation, const std::vector<float> &taps,
00078 double center_freq, double sampling_freq);
00079
00080 protected:
00081 std::vector<float> d_proto_taps;
00082 gr_fir_scc *d_composite_fir;
00083 gr_rotator d_r;
00084 double d_center_freq;
00085 double d_sampling_freq;
00086 bool d_updated;
00087
00088 virtual void build_composite_fir ();
00089
00095 gr_freq_xlating_fir_filter_scf (int decimation,
00096 const std::vector<float> &taps,
00097 double center_freq, double sampling_freq);
00098 };
00099
00100 #endif