- use Tracker

git-svn-id: http://moon:8086/svn/software/trunk/projects/mpsk_rx_gui@1037 b431acfa-c32f-4a4a-93f1-934dc6c82436
This commit is contained in:
2022-06-18 14:06:48 +00:00
parent b4a96dfd2b
commit 04c3c9cfff
2 changed files with 18 additions and 27 deletions
+9 -23
View File
@@ -51,6 +51,8 @@ Receiver::Receiver(LogHandler *pLogHandler)
, m_farrow(m_timingGenerator)
, m_frameReceiver(this)
, m_pSymMapper(0)
, m_statisticsProvider(EQ_UPD_INTERVAL)
, m_tracker(m_statisticsProvider.minMax())
{
m_params.numBitsPerSymbol = 2;
m_params.samplerate = 48000;
@@ -122,9 +124,9 @@ sym_err_t* Receiver::getSoftSyms()
return m_pSymbolBuffer;
}
cpx_t& Receiver::getTracker(uint32 index)
cpx_t Receiver::getTracker(uint32 index)
{
return m_trackers[index];
return toCpx(m_tracker.trackers()[index]);
}
void Receiver::initDefaultParams()
@@ -182,15 +184,6 @@ void Receiver::init()
{
const ScopedLock sl (m_lock);
m_trackers[0] = Cpx(1,1);
m_trackers[1] = Cpx(-1,1);
m_trackers[2] = Cpx(-1,-1);
m_trackers[3] = Cpx(1,-1);
m_trackers_[0] = Cpx(1,1);
m_trackers_[1] = Cpx(-1,1);
m_trackers_[2] = Cpx(-1,-1);
m_trackers_[3] = Cpx(1,-1);
initDefaultParams();
m_ReceiverEnable = false;
@@ -509,8 +502,9 @@ void Receiver::processBaseband(CVec const &iq, uint32_t len)
if (ClockIsTick(&m_symClock, 1))
{
#ifndef DISABLE_UNUSED_STATISTICS
#endif
minMaxProcess(&m_statistics.ddcMinMax, IQ_eq_in);
#endif
m_statisticsProvider.process(toComplexScalar(IQ_eq_in));
// -----------------------------------------------------
// AGC Blind process samples
// @1 x symbolrate
@@ -519,12 +513,12 @@ void Receiver::processBaseband(CVec const &iq, uint32_t len)
{
if (m_params.agcMu_index == agc_state_acquisition)
{
e_agc = 1.0 - CpxMagS(m_trackers[0]);
e_agc = 1.0 - CpxMagS(getTracker(0));
AGC_Train(&agcBlind, e_agc, m_params.agcMu[m_params.agcMu_index]);
}
if (m_params.agcMu_index == agc_state_track)
{
e_agc = 1.0 - CpxMagS(m_trackers[0]);
e_agc = 1.0 - CpxMagS(getTracker(0));
AGC_Train(&agcBlind, e_agc, m_params.agcMu[m_params.agcMu_index]);
}
}
@@ -629,15 +623,7 @@ void Receiver::processBaseband(CVec const &iq, uint32_t len)
// Lock-detector development
// @1 x symbolrate
// -----------------------------------------------------
radio_float_t alpha = 0.002;
radio_float_t beta = 1.0 - alpha;
cpx_t s_min = m_statistics.ddcMinMax.min;
cpx_t s_max = m_statistics.ddcMinMax.max;
m_trackers[0] = CpxAddS(CpxScaleRealS(m_trackers[0], beta), CpxScaleRealS(Cpx(s_max.real, s_min.imag), alpha));
m_trackers[1] = CpxAddS(CpxScaleRealS(m_trackers[1], beta), CpxScaleRealS(Cpx(s_max.real, s_max.imag), alpha));
m_trackers[2] = CpxAddS(CpxScaleRealS(m_trackers[2], beta), CpxScaleRealS(Cpx(s_min.real, s_max.imag), alpha));
m_trackers[3] = CpxAddS(CpxScaleRealS(m_trackers[3], beta), CpxScaleRealS(Cpx(s_min.real, s_min.imag), alpha));
m_tracker.process(toComplexScalar(IQ_soft));
// Statistics
#ifndef DISABLE_UNUSED_STATISTICS