10#ifndef INCLUDED_DVBS2RX_PL_FREQ_SYNC_H
11#define INCLUDED_DVBS2RX_PL_FREQ_SYNC_H
15#include <gnuradio/gr_complex.h>
16#include <volk/volk_alloc.hh>
91 double coarse_foffset;
95 bool coarse_corrected;
111 volk::vector<gr_complex> plheader_conj;
112 volk::vector<gr_complex> pilot_mod_rm;
113 volk::vector<gr_complex> pp_sof;
114 volk::vector<gr_complex> pp_plheader;
117 volk::vector<gr_complex> pilot_corr;
118 volk::vector<float> angle_corr;
119 volk::vector<float> angle_diff;
120 volk::vector<float> w_window_f;
121 volk::vector<float> w_window_s;
122 volk::vector<float> w_angle_diff;
123 volk::vector<gr_complex> unmod_pilots;
126 volk::vector<float> angle_pilot;
127 volk::vector<float> angle_diff_f;
137 float estimate_phase_data_aided(
const gr_complex* in,
138 const gr_complex* expected,
221 const gr_complex* p_payload,
222 uint8_t n_pilot_blks,
255 float next_plheader_phase,
256 uint16_t curr_plframe_len,
257 double curr_coarse_foffset);
Frequency Synchronizer.
Definition pl_freq_sync.h:85
float get_plheader_phase()
Get the last PLHEADER phase estimate.
Definition pl_freq_sync.h:292
void estimate_fine_pilot_mode(const gr_complex *p_plheader, const gr_complex *p_payload, uint8_t n_pilot_blks, uint8_t plsc)
Pilot-aided fine frequency offset estimation.
bool estimate_fine_pilotless_mode(float curr_plheader_phase, float next_plheader_phase, uint16_t curr_plframe_len, double curr_coarse_foffset)
Pilotless fine frequency offset estimation.
freq_sync(unsigned int period, int debug_level)
Construct the frequency synchronizer object.
bool has_fine_foffset_est()
Check whether a fine frequency offset estimate is available already.
Definition pl_freq_sync.h:344
float get_pilot_phase(int i_blk)
Get the phase estimate corresponding to a pilot block.
Definition pl_freq_sync.h:303
float estimate_sof_phase(const gr_complex *in)
Estimate the average phase of the SOF.
void derotate_plheader(const gr_complex *in, bool open_loop=false)
De-rotate PLHEADER symbols.
double get_fine_foffset()
Get the last fine frequency offset estimate.
Definition pl_freq_sync.h:323
float estimate_plheader_phase(const gr_complex *in, uint8_t plsc)
Estimate the average phase of the PLHEADER.
const gr_complex * get_plheader()
Get the post-processed/de-rotated PLHEADER kept internally.
Definition pl_freq_sync.h:354
bool estimate_coarse(const gr_complex *in, bool full, uint8_t plsc=0)
Data-aided coarse frequency offset estimation.
float estimate_pilot_phase(const gr_complex *in, int i_blk)
Estimate the average phase of a pilot block.
double get_coarse_foffset()
Get the last coarse frequency offset estimate.
Definition pl_freq_sync.h:313
bool is_coarse_corrected()
Check whether the coarse frequency correction has been achieved.
Definition pl_freq_sync.h:334
Definition pl_submodule.h:25
#define DVBS2RX_API
Definition include/gnuradio/dvbs2rx/api.h:19
Fixed-length double-ended queue with contiguous volk-aligned elements.
Definition gr_bch.h:22
const double fine_foffset_corr_range
Definition pl_freq_sync.h:18