#ifndef TIMINGGENERATORGARDNER_HPP #define TIMINGGENERATORGARDNER_HPP #pragma once #include #include #include namespace Radio { // Symbol timing recovery class TimingGeneratorGardner : public Interpolation::TimingGenerator { public: TimingGeneratorGardner(); virtual ~TimingGeneratorGardner() = default; void reset(); void loopFilterSetup(lead_lag_filter_t *pFilter, lead_lag_coeff_t *pCoeff); bool process(ComplexScalar const &iq); radio_float_t getMuVar(); private: // Loop-Filter lead_lag_filter_t *filter; lead_lag_coeff_t *coeff; // Gardner Symbol Timing Recovery str_t m_SymbolTimingRevovery; sl_var_t sl_var; bool is_time; radio_float_t m_omega; }; } // Radio #endif // TIMINGGENERATORGARDNER_HPP