35 float d_output_sample_rate;
36 int d_output_samples_per_symbol;
37 size_t d_max_burst_size;
39 int d_pre_start_samples;
40 int d_cfo_est_fft_size;
41 int d_fft_over_size_facor;
43 int d_sync_search_len;
44 int d_hard_max_queue_len;
45 uint64_t d_n_dropped_bursts;
46 bool d_handle_multiple_frames_per_burst;
53 gr_complex * d_dl_preamble_reversed_conj_fft;
54 gr_complex * d_ul_preamble_reversed_conj_fft;
56 float * d_magnitude_f;
57 float * d_magnitude_filtered_f;
58 float * d_cfo_est_window_f;
60 gr::fft::fft_complex * d_corr_fft;
61 gr::fft::fft_complex * d_corr_dl_ifft;
62 gr::fft::fft_complex * d_corr_ul_ifft;
64 filter::kernel::fir_filter_ccf d_input_fir;
65 filter::kernel::fir_filter_fff d_start_finder_fir;
66 filter::kernel::fir_filter_ccf d_rrc_fir;
67 filter::kernel::fir_filter_ccf d_rc_fir;
69 std::vector<gr_complex> d_dl_preamble_reversed_conj;
70 std::vector<gr_complex> d_ul_preamble_reversed_conj;
73 gr::fft::fft_complex d_cfo_est_fft;
75 void handler(pmt::pmt_t msg);
76 int process_next_frame(
float sample_rate,
float center_frequency,
77 double offset, uint64_t
id,
size_t burst_size,
int start);
79 void update_buffer_sizes(
size_t burst_size);
80 void initialize_cfo_est_fft(
void);
81 void initialize_correlation_filter(
void);
83 int fft_shift_index(
int index,
int fft_size);
84 int fft_unshift_index(
int index,
int fft_size);
85 float interpolate(
float alpha,
float beta,
float gamma);
89 const std::vector<float> &input_taps,
const std::vector<float> &start_finder_taps,
90 bool handle_multiple_frames_per_burst);
95 void debug_id(uint64_t
id);
97 int work(
int noutput_items,
98 gr_vector_const_void_star &input_items,
99 gr_vector_void_star &output_items);
burst_downmix_impl(int sample_rate, int search_depth, size_t hard_max_queue_len, const std::vector< float > &input_taps, const std::vector< float > &start_finder_taps, bool handle_multiple_frames_per_burst)