10#ifndef INCLUDED_DVBS2RX_SYMBOL_SYNC_CC_IMPL_H
11#define INCLUDED_DVBS2RX_SYMBOL_SYNC_CC_IMPL_H
14#include <gnuradio/gr_complex.h>
15#include <volk/volk_alloc.hh>
32 virtual gr_complex
operator()(
const gr_complex* in,
int m_k, T mu)
const = 0;
39 unsigned history()
const {
return d_history; };
51 gr_complex
operator()(
const gr_complex* in,
int m_k,
float mu)
const;
56 gr_complex
operator()(
const gr_complex* in,
int m_k,
float mu)
const;
61 gr_complex
operator()(
const gr_complex* in,
int m_k,
float mu)
const;
66 gr_complex
operator()(
const gr_complex* in,
int m_k,
double mu)
const;
74 std::vector<volk::vector<float>> d_rrc_subfilters;
77 size_t d_subfilt_delay;
90 double d_nominal_step;
96 std::vector<int> d_strobe_idx;
97 std::vector<tag_t> d_pending_tags;
113 void set_gted_gain(
float rolloff);
114 void set_pi_constants(
float loop_bw,
float damping_factor);
120 float damping_factor,
127 void forecast(
int noutput_items, gr_vector_int& ninput_items_required);
130 gr_vector_int& ninput_items,
131 gr_vector_const_void_star& input_items,
132 gr_vector_void_star& output_items);
134 template <
typename Interpolator>
135 std::pair<int, int>
loop(
const gr_complex* in,
139 const Interpolator& interp);
142 loop(
const gr_complex* in, gr_complex* out,
int ninput_items,
int noutput_items);
Definition symbol_sync_cc_impl.h:81
void forecast(int noutput_items, gr_vector_int &ninput_items_required)
int general_work(int noutput_items, gr_vector_int &ninput_items, gr_vector_const_void_star &input_items, gr_vector_void_star &output_items)
std::pair< int, int > loop(const gr_complex *in, gr_complex *out, int ninput_items, int noutput_items)
std::pair< int, int > loop(const gr_complex *in, gr_complex *out, int ninput_items, int noutput_items, const Interpolator &interp)
symbol_sync_cc_impl(float sps, float loop_bw, float damping_factor, float rolloff, int rrc_delay, int n_subfilt, int interp_method)
Symbol Synchronizer Loop.
Definition symbol_sync_cc.h:38
#define DVBS2RX_API
Definition include/gnuradio/dvbs2rx/api.h:19
constexpr unsigned hist_linear_interp
Definition symbol_sync_cc_impl.h:45
constexpr unsigned hist_quadratic_interp
Definition symbol_sync_cc_impl.h:46
constexpr unsigned hist_cubic_interp
Definition symbol_sync_cc_impl.h:47
Fixed-length double-ended queue with contiguous volk-aligned elements.
Definition gr_bch.h:22
Definition symbol_sync_cc_impl.h:21
unsigned history() const
Get the interpolator history requirement.
Definition symbol_sync_cc_impl.h:39
base_interpolator(unsigned history)
Definition symbol_sync_cc_impl.h:22
virtual gr_complex operator()(const gr_complex *in, int m_k, T mu) const =0
Compute the complex interpolant.
Definition symbol_sync_cc_impl.h:59
cubic_interpolator()
Definition symbol_sync_cc_impl.h:60
gr_complex operator()(const gr_complex *in, int m_k, float mu) const
Compute the complex interpolant.
Definition symbol_sync_cc_impl.h:49
linear_interpolator()
Definition symbol_sync_cc_impl.h:50
gr_complex operator()(const gr_complex *in, int m_k, float mu) const
Compute the complex interpolant.
Definition symbol_sync_cc_impl.h:64
polyphase_interpolator(float sps, float rolloff, int rrc_delay, size_t n_subfilt)
gr_complex operator()(const gr_complex *in, int m_k, double mu) const
Compute the complex interpolant.
size_t get_subfilt_delay() const
Definition symbol_sync_cc_impl.h:71
Definition symbol_sync_cc_impl.h:54
gr_complex operator()(const gr_complex *in, int m_k, float mu) const
Compute the complex interpolant.
quadratic_interpolator()
Definition symbol_sync_cc_impl.h:55