diff --git a/Source/Receiver.cpp b/Source/Receiver.cpp index c92d762..12e1401 100644 --- a/Source/Receiver.cpp +++ b/Source/Receiver.cpp @@ -184,9 +184,6 @@ void Receiver::init() initDefaultParams(); m_ReceiverEnable = false; - ClockInit(&m_symClock, NUM_BASEBAND_SAMPLES_PER_SYM); - ClockSetPhase(&m_symClock, 1); - // FIR Arm filters initFilterArm(); @@ -524,6 +521,12 @@ void Receiver::processBaseband(CVec const &iq, uint32_t len) IQ_eq_in = IQ_cpr; + // ----------------------------------------------------- + // Peak-Amplitude Tracker + // @1 x symbolrate + // ----------------------------------------------------- + m_tracker.process(toComplexScalar(IQ_eq_in)); + // ----------------------------------------------------- // Equalizer Process samples // @1 x symbolrate @@ -627,11 +630,18 @@ void Receiver::processBaseband(CVec const &iq, uint32_t len) // Update IQ_H IQ_hard_last = IQ_hard; - // ----------------------------------------------------- - // Lock-detector development - // @1 x symbolrate - // ----------------------------------------------------- - m_tracker.process(toComplexScalar(IQ_soft)); + // Call frame receiver with current symbol + m_frameReceiver.process((symbol_t)sym); + + // Feed symbol buffer + m_pSymbolBuffer[m_numSymsInBuffer++] = sym_err; + + // Update per-symbol statistic + SymStatUpDate(&m_sym_stat, sym, &sym_err); + if (m_pDataListener) + { + m_pDataListener->receiverDataChanged(this); + } // Statistics #ifndef DISABLE_UNUSED_STATISTICS @@ -657,15 +667,6 @@ void Receiver::processBaseband(CVec const &iq, uint32_t len) SlidingVarProcess(&m_statistics.noise_dfe_on, e_dfe_on); SlidingVarProcess(&m_statistics.noise_dfe_off, e_dfe_off); - // ----------------------------------------------------- - m_pSymbolBuffer[m_numSymsInBuffer++] = sym_err; - // Update per-symbol statistic - SymStatUpDate(&m_sym_stat, sym, &sym_err); - m_frameReceiver.process((symbol_t)sym); - if (m_pDataListener) - { - m_pDataListener->receiverDataChanged(this); - } } } @@ -806,6 +807,24 @@ void Receiver::setParams(const params_t ¶ms) initSymbolMapper(); } m_statusListeners.call(&ReceiverStatusListener::receiverStatusChanged, this); + + m_params.cprState = cpr_state_acquisition; + if (params.cpr_loopfilter_coeff_index == 1) + { + m_params.cprState = cpr_state_track; + } + + m_params.strState = str_state_acquisition; + if (params.str_loopfilter_coeff_index == 1) + { + m_params.strState = str_state_track; + } + + m_params.agc_state = agc_state_acquisition; + if (params.agcMu_index == 1) + { + m_params.agc_state = agc_state_track; + } } params_t& Receiver::getParams() diff --git a/Source/Receiver.hpp b/Source/Receiver.hpp index 7c2bde3..6a6cae4 100644 --- a/Source/Receiver.hpp +++ b/Source/Receiver.hpp @@ -355,7 +355,6 @@ private: uint32_t m_numSymsInBuffer; uint32_t m_bufsize; bool m_ReceiverEnable; - sample_clock_t m_symClock; pfd_t m_pfdCpr; // Filter