35 int 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;
57 float* d_magnitude_filtered_f;
58 float* d_cfo_est_window_f;
60 gr::fft::fft_complex_fwd* d_corr_fft;
61 gr::fft::fft_complex_rev* d_corr_dl_ifft;
62 gr::fft::fft_complex_rev* 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 volk::vector<gr_complex> d_dl_preamble_reversed_conj;
70 volk::vector<gr_complex> d_ul_preamble_reversed_conj;
73 gr::fft::fft_complex_fwd d_cfo_est_fft;
75 void handler(pmt::pmt_t msg);
76 int process_next_frame(
float sample_rate,
77 double center_frequency,
85 void update_buffer_sizes(
size_t burst_size);
86 void initialize_cfo_est_fft(
void);
87 void initialize_correlation_filter(
void);
89 int fft_shift_index(
int index,
int fft_size);
90 int fft_unshift_index(
int index,
int fft_size);
91 float interpolate(
float alpha,
float beta,
float gamma);
96 size_t hard_max_queue_len,
97 const std::vector<float>& input_taps,
98 const std::vector<float>& start_finder_taps,
99 bool handle_multiple_frames_per_burst);
104 void debug_id(uint64_t
id);
107 gr_vector_const_void_star& input_items,
108 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)