22#ifndef INCLUDED_GFDM_IMPROVED_SYNC_ALGORITHM_KERNEL_CC_H
23#define INCLUDED_GFDM_IMPROVED_SYNC_ALGORITHM_KERNEL_CC_H
65 int d_max_ninput_size;
67 float d_false_alarm_prob_factor;
70 gr_complex* d_preamble;
71 gr_complex* d_p_in_buffer;
72 gr_complex* d_auto_corr_vals;
73 float* d_abs_auto_corr_vals;
75 void auto_correlate(gr_complex* corr_vals,
const gr_complex* p_in,
const int ninput_size);
78 std::deque<float> d_fifo;
79 float integrate_fifo(
float next_val);
80 void abs_integrate(
float* vals,
const gr_complex* p_in,
const int ninput_size);
83 int find_peak(
float* vals,
const int ninput_size);
86 void perform_auto_correlation_stage(
float *abs_corr_vals, gr_complex *corr_vals,
87 const gr_complex *p_in,
const int window_size);
90 float calculate_normalized_cfo(
const gr_complex corr_val);
93 void prepare_xcorr_input_array(gr_complex *xcorr_in,
const gr_complex *p_in,
97 gr_complex* d_xcorr_vals;
98 float* d_abs_xcorr_vals;
99 int find_cross_correlation_peak(
const gr_complex* p_in,
const float* abs_int_vals,
const float cfo);
100 void remove_cfo(gr_complex* p_out,
const gr_complex* p_in,
const float cfo,
const int ninput_size);
101 void cross_correlate(gr_complex* p_out,
const gr_complex* p_in,
const int ninput_size);
102 void combine_abs_auto_and_cross_correlation(
float* p_out,
const float* p_auto,
const float* p_cross,
const int ninput_size);
103 float threshold(
const float *abs_xcorr_vals);
#define GFDM_API
Definition: api.h:30
Perform STO/CFO synchronization for multicarrier systems Compare: Awoseyila et. al....
Definition: improved_sync_algorithm_kernel_cc.h:41
std::vector< gr_complex > input_buffer()
int find_peak_preamble(std::vector< float > in_vec)
std::vector< gr_complex > auto_corr_buffer()
std::vector< gr_complex > auto_correlate_preamble(std::vector< gr_complex > in_vec)
std::vector< float > abs_integrate_preamble(std::vector< gr_complex > in_vec)
std::vector< gr_complex > remove_cfo_preamble(std::vector< gr_complex > in_vec, const float cfo)
float calculate_normalized_cfo_preamble(const gr_complex val)
Definition: improved_sync_algorithm_kernel_cc.h:54
std::vector< float > integration_buffer()
std::vector< gr_complex > preamble()
std::vector< float > auto_corr_integrate(std::vector< gr_complex > in_vec)
void set_false_alarm_probability(float false_alarm_prob, int ninput_size)
~improved_sync_algorithm_kernel_cc()
improved_sync_algorithm_kernel_cc(int n_subcarriers, int cp_len, std::vector< gr_complex > preamble, int max_ninput_size)
int max_ninput_size() const
Definition: improved_sync_algorithm_kernel_cc.h:47
std::vector< gr_complex > cross_correlate_preamble(std::vector< gr_complex > in_vec)
int find_preamble(std::vector< gr_complex > in_vec)
int detect_frame_start(const gr_complex *p_in, int ninput_size)
Definition: add_cyclic_prefix_cc.h:30