1
0
mirror of https://github.com/f4exb/sdrangel.git synced 2024-10-02 09:46:38 -04:00

NFM demod: corrected squelch (again)

This commit is contained in:
f4exb 2016-12-07 01:21:18 +01:00
parent 93a08c325a
commit 374bca6731
2 changed files with 5 additions and 5 deletions

View File

@ -68,7 +68,7 @@ NFMDemod::NFMDemod() :
m_agcLevel = 1.0; m_agcLevel = 1.0;
m_AGC.resize(m_squelchGate, m_agcLevel); m_AGC.resize(m_squelchGate, m_agcLevel);
m_movingAverage.resize(16, 0); // m_movingAverage.resize(16, 0);
m_ctcssDetector.setCoefficients(3000, 6000.0); // 0.5s / 2 Hz resolution m_ctcssDetector.setCoefficients(3000, 6000.0); // 0.5s / 2 Hz resolution
m_afSquelch.setCoefficients(24, 600, 48000.0, 200, 0); // 4000 Hz span, 250us, 100ms attack m_afSquelch.setCoefficients(24, 600, 48000.0, 200, 0); // 4000 Hz span, 250us, 100ms attack
@ -154,7 +154,7 @@ void NFMDemod::feed(const SampleVector::const_iterator& begin, const SampleVecto
double magsqRaw = m_AGC.getMagSq(); double magsqRaw = m_AGC.getMagSq();
Real magsq = magsqRaw / (1<<30); Real magsq = magsqRaw / (1<<30);
m_movingAverage.feed(magsq); // m_movingAverage.feed(magsq);
m_magsqSum += magsq; m_magsqSum += magsq;
if (magsq > m_magsqPeak) if (magsq > m_magsqPeak)
@ -172,7 +172,7 @@ void NFMDemod::feed(const SampleVector::const_iterator& begin, const SampleVecto
// AF processing // AF processing
if ((m_magsq > m_squelchLevel) && (m_magsqPeak > m_magsq/2.0f)) if (m_magsq > m_squelchLevel)
{ {
if (m_squelchCount < m_squelchGate) if (m_squelchCount < m_squelchGate)
{ {

View File

@ -68,7 +68,7 @@ public:
m_ctcssIndexSelected = selectedCtcssIndex; m_ctcssIndexSelected = selectedCtcssIndex;
} }
Real getMag() { return m_movingAverage.average(); } Real getMag() { return m_magsq; }
bool getSquelchOpen() const { return m_squelchOpen; } bool getSquelchOpen() const { return m_squelchOpen; }
void getMagSqLevels(Real& avg, Real& peak, int& nbSamples) void getMagSqLevels(Real& avg, Real& peak, int& nbSamples)
@ -207,7 +207,7 @@ private:
//Complex m_m1Sample; //Complex m_m1Sample;
//Complex m_m2Sample; //Complex m_m2Sample;
MagAGC m_AGC; MagAGC m_AGC;
MovingAverage<Real> m_movingAverage; // MovingAverage<Real> m_movingAverage;
AFSquelch m_afSquelch; AFSquelch m_afSquelch;
Real m_agcLevel; // AGC will aim to this level Real m_agcLevel; // AGC will aim to this level
Real m_agcFloor; // AGC will not go below this level Real m_agcFloor; // AGC will not go below this level