- 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:
+9
-23
@@ -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
|
||||
|
||||
Reference in New Issue
Block a user