From f11cda633d78d44dde881bbce18e92b2dab0bf54 Mon Sep 17 00:00:00 2001 From: f4exb Date: Tue, 29 May 2018 00:14:45 +0200 Subject: [PATCH] BFM demod: fixed squelch to be compatible with server mode --- plugins/channelrx/demodbfm/bfmdemod.cpp | 32 ++++++++++++------------- sdrbase/audio/audiodevicemanager.cpp | 10 ++++++-- swagger/sdrangel/examples/rx_test.py | 14 ++++++++--- 3 files changed, 34 insertions(+), 22 deletions(-) diff --git a/plugins/channelrx/demodbfm/bfmdemod.cpp b/plugins/channelrx/demodbfm/bfmdemod.cpp index cbc77d2e7..f9836e411 100644 --- a/plugins/channelrx/demodbfm/bfmdemod.cpp +++ b/plugins/channelrx/demodbfm/bfmdemod.cpp @@ -145,26 +145,26 @@ void BFMDemod::feed(const SampleVector::const_iterator& begin, const SampleVecto m_magsqCount++; -// m_movingAverage.feed(msq); - - if(m_magsq >= m_squelchLevel) { - m_squelchState = m_settings.m_rfBandwidth / 20; // decay rate - } - - if(m_squelchState > 0) + if (msq >= m_squelchLevel) { - m_squelchState--; - - //demod = phaseDiscriminator2(rf[i], msq); - demod = m_phaseDiscri.phaseDiscriminator(rf[i]); + if (m_squelchState < m_settings.m_rfBandwidth / 10) { // twice attack and decay rate + m_squelchState++; + } } else { + if (m_squelchState > 0) { + m_squelchState--; + } + } + + if (m_squelchState > m_settings.m_rfBandwidth / 20) { // squelch open + demod = m_phaseDiscri.phaseDiscriminator(rf[i]); + } else { demod = 0; } - if (!m_settings.m_showPilot) - { + if (!m_settings.m_showPilot) { m_sampleBuffer.push_back(Sample(demod * SDR_RX_SCALEF, 0.0)); } @@ -179,8 +179,7 @@ void BFMDemod::feed(const SampleVector::const_iterator& begin, const SampleVecto if (m_rdsDemod.process(cr.real(), bit)) { - if (m_rdsDecoder.frameSync(bit)) - { + if (m_rdsDecoder.frameSync(bit)) { m_rdsParser.parseGroup(m_rdsDecoder.getGroup()); } } @@ -197,8 +196,7 @@ void BFMDemod::feed(const SampleVector::const_iterator& begin, const SampleVecto { m_pilotPLL.process(demod, m_pilotPLLSamples); - if (m_settings.m_showPilot) - { + if (m_settings.m_showPilot) { m_sampleBuffer.push_back(Sample(m_pilotPLLSamples[1] * SDR_RX_SCALEF, 0.0)); // debug 38 kHz pilot } diff --git a/sdrbase/audio/audiodevicemanager.cpp b/sdrbase/audio/audiodevicemanager.cpp index d150b7244..439bbfbd0 100644 --- a/sdrbase/audio/audiodevicemanager.cpp +++ b/sdrbase/audio/audiodevicemanager.cpp @@ -543,12 +543,15 @@ void AudioDeviceManager::setOutputDeviceInfo(int outputDeviceIndex, const Output if (!getOutputDeviceInfo(deviceName, oldDeviceInfo)) { - qDebug("AudioDeviceManager::setOutputDeviceInfo: unknown device %s", qPrintable(deviceName)); + qInfo("AudioDeviceManager::setOutputDeviceInfo: unknown device %s", qPrintable(deviceName)); } m_audioOutputInfos[deviceName] = deviceInfo; - if (m_audioOutputs.find(outputDeviceIndex) == m_audioOutputs.end()) { // no FIFO registered yet hence no audio output has been allocated yet + if (m_audioOutputs.find(outputDeviceIndex) == m_audioOutputs.end()) + { + qWarning("AudioDeviceManager::setOutputDeviceInfo: index: %d device: %s no FIFO registered yet hence no audio output has been allocated yet", + outputDeviceIndex, qPrintable(deviceName)); return; } @@ -575,6 +578,9 @@ void AudioDeviceManager::setOutputDeviceInfo(int outputDeviceIndex, const Output audioOutput->setUdpUseRTP(deviceInfo.udpUseRTP); audioOutput->setUdpChannelMode(deviceInfo.udpChannelMode); audioOutput->setUdpChannelFormat(deviceInfo.udpChannelMode == AudioOutput::UDPChannelStereo, deviceInfo.sampleRate); + + qDebug("AudioDeviceManager::setOutputDeviceInfo: index: %d device: %s updated", + outputDeviceIndex, qPrintable(deviceName)); } void AudioDeviceManager::unsetOutputDeviceInfo(int outputDeviceIndex) diff --git a/swagger/sdrangel/examples/rx_test.py b/swagger/sdrangel/examples/rx_test.py index e22791769..e22365064 100755 --- a/swagger/sdrangel/examples/rx_test.py +++ b/swagger/sdrangel/examples/rx_test.py @@ -301,6 +301,10 @@ def setupChannel(deviceset_url, options): if r is None: exit(-1) +# ====================================================================== +def channelsReport(deviceset_url): + report = callAPI(deviceset_url + "/channels/report", "GET", None, None, "Get channels report") + # ====================================================================== def main(): @@ -311,9 +315,6 @@ def main(): base_url = "http://%s/sdrangel" % options.address deviceset_url = "/deviceset/%d" % options.device_index - if options.audio_name: - setup_audio(options) - if options.create: r = callAPI("/deviceset", "POST", {"tx": 0}, None, "Add Rx device set") if r is None: @@ -326,6 +327,13 @@ def main(): if r is None: exit(-1) + if options.audio_name: + time.sleep(1) + setup_audio(options) + +# if options.channel_id == "BFMDemod": +# channelsReport(deviceset_url) + except Exception, msg: tb = traceback.format_exc() print >> sys.stderr, tb