From 5b0a47c7c650cf046f81f1c64b66ed5ea97138e8 Mon Sep 17 00:00:00 2001 From: f4exb Date: Sat, 15 Dec 2018 03:42:58 +0100 Subject: [PATCH] Reverse API: AM demod changes (2) --- plugins/channelrx/demodam/amdemod.cpp | 78 +++++++++++++++++++++++---- plugins/channelrx/demodam/amdemod.h | 2 +- 2 files changed, 70 insertions(+), 10 deletions(-) diff --git a/plugins/channelrx/demodam/amdemod.cpp b/plugins/channelrx/demodam/amdemod.cpp index 1171a2981..07e331305 100644 --- a/plugins/channelrx/demodam/amdemod.cpp +++ b/plugins/channelrx/demodam/amdemod.cpp @@ -454,7 +454,7 @@ void AMDemod::applySettings(const AMDemodSettings& settings, bool force) if ((m_settings.m_squelch != settings.m_squelch) || force) { m_squelchLevel = CalcDb::powerFromdB(settings.m_squelch); - reverseAPIKeys.append("squelchLevel"); + reverseAPIKeys.append("squelch"); } if ((settings.m_audioDeviceName != m_settings.m_audioDeviceName) || force) @@ -493,11 +493,31 @@ void AMDemod::applySettings(const AMDemodSettings& settings, bool force) reverseAPIKeys.append("syncAMOperation"); } + if ((m_settings.m_inputFrequencyOffset != settings.m_inputFrequencyOffset) || force) { + reverseAPIKeys.append("inputFrequencyOffset"); + } + + if ((m_settings.m_audioMute != settings.m_audioMute) || force) { + reverseAPIKeys.append("audioMute"); + } + + if ((m_settings.m_volume != settings.m_volume) || force) { + reverseAPIKeys.append("volume"); + } + + if ((m_settings.m_useReverseAPI != settings.m_useReverseAPI)) + { + if (settings.m_useReverseAPI) { + webapiReverseSendSettings(reverseAPIKeys, settings, true); + } + } + else if (m_settings.m_useReverseAPI) + { + webapiReverseSendSettings(reverseAPIKeys, settings, force); + } + m_settings = settings; - if (m_settings.m_useReverseAPI) { - webapiReverseSendSettings(reverseAPIKeys, m_settings, force); - } } QByteArray AMDemod::serialize() const @@ -655,11 +675,51 @@ void AMDemod::webapiFormatChannelReport(SWGSDRangel::SWGChannelReport& response) response.getAmDemodReport()->setChannelSampleRate(m_inputSampleRate); } -void AMDemod::webapiReverseSendSettings(QList& channelSettingsKeys, AMDemodSettings& settings, bool force) +void AMDemod::webapiReverseSendSettings(QList& channelSettingsKeys, const AMDemodSettings& settings, bool force) { - (void) channelSettingsKeys; - (void) settings; - (void) force; - // TODO + SWGSDRangel::SWGChannelSettings *swgChannelSettings = new SWGSDRangel::SWGChannelSettings(); + swgChannelSettings->setTx(0); + swgChannelSettings->setChannelType(new QString("AMDemod")); + swgChannelSettings->setAmDemodSettings(new SWGSDRangel::SWGAMDemodSettings()); + SWGSDRangel::SWGAMDemodSettings *swgAMDemodSettings = swgChannelSettings->getAmDemodSettings(); + + if (channelSettingsKeys.contains("audioMute") || force) { + swgAMDemodSettings->setAudioMute(settings.m_audioMute ? 1 : 0); + } + if (channelSettingsKeys.contains("inputFrequencyOffset") || force) { + qDebug() << "AMDemod::webapiReverseSendSettings: inputFrequencyOffset"; + swgAMDemodSettings->setInputFrequencyOffset(settings.m_inputFrequencyOffset); + } + if (channelSettingsKeys.contains("rfBandwidth") || force) { + swgAMDemodSettings->setRfBandwidth(settings.m_rfBandwidth); + } + if (channelSettingsKeys.contains("rgbColor") || force) { + swgAMDemodSettings->setRgbColor(settings.m_rgbColor); + } + if (channelSettingsKeys.contains("squelch") || force) { + swgAMDemodSettings->setSquelch(settings.m_squelch); + } + if (channelSettingsKeys.contains("title") || force) { + swgAMDemodSettings->setTitle(new QString(settings.m_title)); + } + if (channelSettingsKeys.contains("volume") || force) { + swgAMDemodSettings->setVolume(settings.m_volume); + } + if (channelSettingsKeys.contains("bandpassEnable") || force) { + swgAMDemodSettings->setBandpassEnable(settings.m_bandpassEnable ? 1 : 0); + } + if (channelSettingsKeys.contains("audioDeviceName") || force) { + swgAMDemodSettings->setAudioDeviceName(new QString(settings.m_audioDeviceName)); + } + if (channelSettingsKeys.contains("pll") || force) { + swgAMDemodSettings->setPll(settings.m_pll); + } + if (channelSettingsKeys.contains("syncAMOperation") || force) { + swgAMDemodSettings->setSyncAmOperation((int) settings.m_syncAMOperation); + } + + qDebug("AMDemod::webapiReverseSendSettings: \n%s", swgChannelSettings->asJson().toStdString().c_str()); + + delete swgChannelSettings; } diff --git a/plugins/channelrx/demodam/amdemod.h b/plugins/channelrx/demodam/amdemod.h index 3d64034b2..f75466a44 100644 --- a/plugins/channelrx/demodam/amdemod.h +++ b/plugins/channelrx/demodam/amdemod.h @@ -211,7 +211,7 @@ private: void applyAudioSampleRate(int sampleRate); void webapiFormatChannelSettings(SWGSDRangel::SWGChannelSettings& response, const AMDemodSettings& settings); void webapiFormatChannelReport(SWGSDRangel::SWGChannelReport& response); - void webapiReverseSendSettings(QList& channelSettingsKeys, AMDemodSettings& settings, bool force); + void webapiReverseSendSettings(QList& channelSettingsKeys, const AMDemodSettings& settings, bool force); void processOneSample(Complex &ci); };