1
0
mirror of https://github.com/f4exb/sdrangel.git synced 2025-06-25 05:25:27 -04:00

DSD demod: symmetrical attack and decay for squelch like NFM

This commit is contained in:
f4exb 2018-04-21 17:22:07 +02:00
parent 84538f1acf
commit b4a77e08c8
2 changed files with 28 additions and 12 deletions

View File

@ -144,15 +144,15 @@ void DSDDemod::feed(const SampleVector::const_iterator& begin, const SampleVecto
if (m_movingAverage.asDouble() > m_squelchLevel) if (m_movingAverage.asDouble() > m_squelchLevel)
{ {
m_squelchDelayLine.write(demod);
if (m_squelchGate > 0) if (m_squelchGate > 0)
{ {
if (m_squelchCount < m_squelchGate) {
if (m_squelchCount < m_squelchGate*2) {
m_squelchCount++; m_squelchCount++;
} }
m_squelchOpen = m_squelchCount == m_squelchGate; m_squelchDelayLine.write(demod);
m_squelchOpen = m_squelchCount > m_squelchGate;
} }
else else
{ {
@ -161,17 +161,33 @@ void DSDDemod::feed(const SampleVector::const_iterator& begin, const SampleVecto
} }
else else
{ {
if (m_squelchGate > 0)
{
if (m_squelchCount > 0) {
m_squelchCount--;
}
m_squelchDelayLine.write(0); m_squelchDelayLine.write(0);
m_squelchCount = 0; m_squelchOpen = m_squelchCount > m_squelchGate;
}
else
{
m_squelchOpen = false; m_squelchOpen = false;
} }
}
if (m_squelchOpen) if (m_squelchOpen)
{
if (m_squelchGate > 0)
{ {
sampleDSD = m_squelchDelayLine.readBack(m_squelchGate) * 32768.0f; // DSD decoder takes int16 samples sampleDSD = m_squelchDelayLine.readBack(m_squelchGate) * 32768.0f; // DSD decoder takes int16 samples
sample = m_squelchDelayLine.readBack(m_squelchGate) * SDR_RX_SCALEF; // scale to sample size sample = m_squelchDelayLine.readBack(m_squelchGate) * SDR_RX_SCALEF; // scale to sample size
// sampleDSD = demod * 32768.0f; // DSD decoder takes int16 samples }
// sample = demod * SDR_RX_SCALEF; // scale to sample size else
{
sampleDSD = demod * 32768.0f; // DSD decoder takes int16 samples
sample = demod * SDR_RX_SCALEF; // scale to sample size
}
} }
else else
{ {

View File

@ -25,7 +25,7 @@
const PluginDescriptor DSDDemodPlugin::m_pluginDescriptor = { const PluginDescriptor DSDDemodPlugin::m_pluginDescriptor = {
QString("DSD Demodulator"), QString("DSD Demodulator"),
QString("3.14.1"), QString("3.14.4"),
QString("(c) Edouard Griffiths, F4EXB"), QString("(c) Edouard Griffiths, F4EXB"),
QString("https://github.com/f4exb/sdrangel"), QString("https://github.com/f4exb/sdrangel"),
true, true,