#ifndef INCLUDED_AFM_FFT2_FF_H #define INCLUDED_AFM_FFT2_FF_H #include #include "afm_trig_type.h" #include #include #include #define SILENT #ifdef SILENT #define DPRINTF(X) #else #define DPRINTF(X) printf X #endif class afm_fft2_ff; typedef boost::shared_ptr afm_fft2_ff_sptr; afm_fft2_ff_sptr afm_make_fft2_ff(int nfft, int naverages, float sampling_freq, float fundamental_freq, const std::vector &freqs,const std::vector &window); class afm_fft2_ff : public gr_sync_decimator { private: friend afm_fft2_ff_sptr afm_make_fft2_ff(int nfft, int naverages, float sampling_freq, float fundamental_freq, const std::vector &freqs,const std::vector &window); afm_fft2_ff(int nfft, int naverages, float sampling_freq, float fundamental_freq, const std::vector &freqs,const std::vector &window); std::vector d_buffer; int d_nfft; int d_naverages; double * d_fft_input; std::vector d_window; std::vector d_freqs; std::vector d_freqs_index; float d_sampling_freq; float d_fundamental_freq; int d_bufferlen; fftw_complex *d_fft_out; fftw_plan d_plan; afm_direction_t d_upordown; afm_direction_t d_leftorright; bool d_runonce; public: ~afm_fft2_ff(); int work(int noutput_items, gr_vector_const_void_star &input_items, gr_vector_void_star &output_items); int compute_params(float ** out,int noutput_samples); }; #endif /* INCLUDED_AFM_FFT2_FF_H */