mirror of
https://github.com/f4exb/sdrangel.git
synced 2024-11-18 22:31:48 -05:00
NFM demod: corrected squelch (again)
This commit is contained in:
parent
93a08c325a
commit
374bca6731
@ -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)
|
||||||
{
|
{
|
||||||
|
@ -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
|
||||||
|
Loading…
Reference in New Issue
Block a user