00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023 #ifndef INCLUDED_GR_LMS_DFE_CC_H
00024 #define INCLUDED_GR_LMS_DFE_CC_H
00025
00026 #include <gr_sync_block.h>
00027
00028 class gr_lms_dfe_cc;
00029 typedef boost::shared_ptr<gr_lms_dfe_cc> gr_lms_dfe_cc_sptr;
00030
00031 gr_lms_dfe_cc_sptr gr_make_lms_dfe_cc (float lambda_ff, float lambda_fb,
00032 unsigned int num_fftaps, unsigned int num_fbtaps);
00033
00038 class gr_lms_dfe_cc : public gr_sync_block
00039 {
00040 friend gr_lms_dfe_cc_sptr gr_make_lms_dfe_cc (float lambda_ff, float lambda_fb,
00041 unsigned int num_fftaps, unsigned int num_fbtaps);
00042
00043 float d_lambda_ff;
00044 float d_lambda_fb;
00045 std::vector<gr_complex> d_ff_delayline;
00046 std::vector<gr_complex> d_fb_delayline;
00047 std::vector<gr_complex> d_ff_taps;
00048 std::vector<gr_complex> d_fb_taps;
00049 unsigned int d_ff_index;
00050 unsigned int d_fb_index;
00051
00052 gr_lms_dfe_cc (float lambda_ff, float lambda_fb,
00053 unsigned int num_fftaps, unsigned int num_fbtaps);
00054 gr_complex slicer_0deg(gr_complex baud);
00055 gr_complex slicer_45deg(gr_complex baud);
00056
00057 public:
00058
00059 int work (int noutput_items,
00060 gr_vector_const_void_star &input_items,
00061 gr_vector_void_star &output_items);
00062 };
00063
00064 #endif