mirror of
https://github.com/f4exb/sdrangel.git
synced 2024-11-26 17:58:43 -05:00
NFM demod: optimized feed routine. Fixed channel power calculation
This commit is contained in:
parent
23f773c111
commit
e9f122fac1
@ -122,7 +122,8 @@ void NFMDemod::feed(const SampleVector::const_iterator& begin, const SampleVecto
|
|||||||
|
|
||||||
for (SampleVector::const_iterator it = begin; it != end; ++it)
|
for (SampleVector::const_iterator it = begin; it != end; ++it)
|
||||||
{
|
{
|
||||||
Complex c(it->real() / 32768.0f, it->imag() / 32768.0f);
|
//Complex c(it->real() / 32768.0f, it->imag() / 32768.0f);
|
||||||
|
Complex c(it->real(), it->imag());
|
||||||
c *= m_nco.nextIQ();
|
c *= m_nco.nextIQ();
|
||||||
|
|
||||||
{
|
{
|
||||||
@ -135,7 +136,7 @@ void NFMDemod::feed(const SampleVector::const_iterator& begin, const SampleVecto
|
|||||||
//ci *= (m_agcLevel / m_AGC.getValue());
|
//ci *= (m_agcLevel / m_AGC.getValue());
|
||||||
|
|
||||||
m_AGC.feed(ci);
|
m_AGC.feed(ci);
|
||||||
m_magsq = m_AGC.getMagSq();
|
//m_magsq = m_AGC.getMagSq() / (1<<30);
|
||||||
|
|
||||||
// demod
|
// demod
|
||||||
/*
|
/*
|
||||||
@ -172,7 +173,7 @@ void NFMDemod::feed(const SampleVector::const_iterator& begin, const SampleVecto
|
|||||||
|
|
||||||
// AF processing
|
// AF processing
|
||||||
|
|
||||||
squelchOpen = (getMagSq() > m_squelchLevel);
|
squelchOpen = (getMag() > m_squelchLevel);
|
||||||
|
|
||||||
/*
|
/*
|
||||||
if (m_afSquelch.analyze(demod))
|
if (m_afSquelch.analyze(demod))
|
||||||
@ -355,7 +356,7 @@ void NFMDemod::apply()
|
|||||||
if (m_config.m_squelch != m_running.m_squelch)
|
if (m_config.m_squelch != m_running.m_squelch)
|
||||||
{
|
{
|
||||||
// input is a value in tenths of dB
|
// input is a value in tenths of dB
|
||||||
m_squelchLevel = pow(10.0, m_config.m_squelch / 100.0);
|
m_squelchLevel = pow(10.0, m_config.m_squelch / 200.0);
|
||||||
//m_squelchLevel *= m_squelchLevel;
|
//m_squelchLevel *= m_squelchLevel;
|
||||||
m_afSquelch.setThreshold(m_squelchLevel);
|
m_afSquelch.setThreshold(m_squelchLevel);
|
||||||
}
|
}
|
||||||
|
@ -64,7 +64,7 @@ public:
|
|||||||
m_ctcssIndexSelected = selectedCtcssIndex;
|
m_ctcssIndexSelected = selectedCtcssIndex;
|
||||||
}
|
}
|
||||||
|
|
||||||
Real getMagSq() { return m_AGC.getAverage() / 4534.0; }
|
Real getMag() { return m_AGC.getAverage() / (1<<15); }
|
||||||
|
|
||||||
private:
|
private:
|
||||||
class MsgConfigureNFMDemod : public Message {
|
class MsgConfigureNFMDemod : public Message {
|
||||||
|
@ -341,7 +341,7 @@ void NFMDemodGUI::blockApplySettings(bool block)
|
|||||||
|
|
||||||
void NFMDemodGUI::tick()
|
void NFMDemodGUI::tick()
|
||||||
{
|
{
|
||||||
Real powDb = CalcDb::dbPower(m_nfmDemod->getMagSq());
|
Real powDb = CalcDb::dbPower(m_nfmDemod->getMag()) * 2;
|
||||||
m_channelPowerDbAvg.feed(powDb);
|
m_channelPowerDbAvg.feed(powDb);
|
||||||
ui->channelPower->setText(QString::number(m_channelPowerDbAvg.average(), 'f', 1));
|
ui->channelPower->setText(QString::number(m_channelPowerDbAvg.average(), 'f', 1));
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user