From 2274d208566af66769b71d7defedb031c5524639 Mon Sep 17 00:00:00 2001 From: f4exb Date: Thu, 1 Aug 2019 23:21:57 +0200 Subject: [PATCH] REST API: config: GET (5): all API supported channels refactoring to use static methods for settings GET. PUT. PATCH --- plugins/channelrx/demodam/amdemod.cpp | 1 + plugins/channelrx/demodbfm/bfmdemod.cpp | 52 +++++----- plugins/channelrx/demodbfm/bfmdemod.h | 10 +- plugins/channelrx/demoddsd/dsddemod.cpp | 52 +++++----- plugins/channelrx/demoddsd/dsddemod.h | 10 +- plugins/channelrx/demodfreedv/freedvdemod.cpp | 52 +++++----- plugins/channelrx/demodfreedv/freedvdemod.h | 10 +- plugins/channelrx/demodnfm/nfmdemod.cpp | 52 +++++----- plugins/channelrx/demodnfm/nfmdemod.h | 10 +- plugins/channelrx/demodssb/ssbdemod.cpp | 52 +++++----- plugins/channelrx/demodssb/ssbdemod.h | 10 +- plugins/channelrx/demodwfm/wfmdemod.cpp | 52 +++++----- plugins/channelrx/demodwfm/wfmdemod.h | 10 +- plugins/channelrx/freqtracker/freqtracker.cpp | 49 ++++++---- plugins/channelrx/freqtracker/freqtracker.h | 10 +- plugins/channelrx/localsink/localsink.cpp | 47 +++++---- plugins/channelrx/localsink/localsink.h | 12 ++- plugins/channelrx/remotesink/remotesink.cpp | 47 +++++---- plugins/channelrx/remotesink/remotesink.h | 12 ++- plugins/channelrx/udpsink/udpsink.cpp | 56 ++++++----- plugins/channelrx/udpsink/udpsink.h | 10 +- plugins/channeltx/filesource/filesource.cpp | 35 ++++--- plugins/channeltx/filesource/filesource.h | 12 ++- plugins/channeltx/localsource/localsource.cpp | 47 +++++---- plugins/channeltx/localsource/localsource.h | 12 ++- plugins/channeltx/modam/ammod.cpp | 93 +++++++++--------- plugins/channeltx/modam/ammod.h | 10 +- plugins/channeltx/modatv/atvmod.cpp | 16 +-- plugins/channeltx/modatv/atvmod.h | 10 +- plugins/channeltx/modatv/atvmodsettings.cpp | 5 + plugins/channeltx/modatv/atvmodsettings.h | 2 + plugins/channeltx/modfreedv/freedvmod.cpp | 91 +++++++++-------- plugins/channeltx/modfreedv/freedvmod.h | 10 +- plugins/channeltx/modnfm/nfmmod.cpp | 97 +++++++++---------- plugins/channeltx/modnfm/nfmmod.h | 10 +- plugins/channeltx/modssb/ssbmod.cpp | 91 +++++++++-------- plugins/channeltx/modssb/ssbmod.h | 10 +- plugins/channeltx/modwfm/wfmmod.cpp | 95 +++++++++--------- plugins/channeltx/modwfm/wfmmod.h | 10 +- .../channeltx/remotesource/remotesource.cpp | 35 ++++--- plugins/channeltx/remotesource/remotesource.h | 10 +- plugins/channeltx/udpsource/udpsource.cpp | 54 ++++++----- plugins/channeltx/udpsource/udpsource.h | 10 +- 43 files changed, 821 insertions(+), 560 deletions(-) diff --git a/plugins/channelrx/demodam/amdemod.cpp b/plugins/channelrx/demodam/amdemod.cpp index 10de284fe..8533e7309 100644 --- a/plugins/channelrx/demodam/amdemod.cpp +++ b/plugins/channelrx/demodam/amdemod.cpp @@ -598,6 +598,7 @@ int AMDemod::webapiSettingsPutPatch( SWGSDRangel::SWGChannelSettings& response, QString& errorMessage) { + (void) errorMessage; AMDemodSettings settings = m_settings; webapiUpdateChannelSettings(settings, channelSettingsKeys, response); diff --git a/plugins/channelrx/demodbfm/bfmdemod.cpp b/plugins/channelrx/demodbfm/bfmdemod.cpp index 77364e19a..8e30626ca 100644 --- a/plugins/channelrx/demodbfm/bfmdemod.cpp +++ b/plugins/channelrx/demodbfm/bfmdemod.cpp @@ -596,12 +596,37 @@ int BFMDemod::webapiSettingsPutPatch( { (void) errorMessage; BFMDemodSettings settings = m_settings; - bool frequencyOffsetChanged = false; + webapiUpdateChannelSettings(settings, channelSettingsKeys, response); - if (channelSettingsKeys.contains("inputFrequencyOffset")) + if (settings.m_inputFrequencyOffset != m_settings.m_inputFrequencyOffset) { + MsgConfigureChannelizer* channelConfigMsg = MsgConfigureChannelizer::create( + requiredBW(settings.m_rfBandwidth), settings.m_inputFrequencyOffset); + m_inputMessageQueue.push(channelConfigMsg); + } + + MsgConfigureBFMDemod *msg = MsgConfigureBFMDemod::create(settings, force); + m_inputMessageQueue.push(msg); + + qDebug("BFMDemod::webapiSettingsPutPatch: forward to GUI: %p", m_guiMessageQueue); + if (m_guiMessageQueue) // forward to GUI if any + { + MsgConfigureBFMDemod *msgToGUI = MsgConfigureBFMDemod::create(settings, force); + m_guiMessageQueue->push(msgToGUI); + } + + webapiFormatChannelSettings(response, settings); + + return 200; +} + +void BFMDemod::webapiUpdateChannelSettings( + BFMDemodSettings& settings, + const QStringList& channelSettingsKeys, + SWGSDRangel::SWGChannelSettings& response) +{ + if (channelSettingsKeys.contains("inputFrequencyOffset")) { settings.m_inputFrequencyOffset = response.getBfmDemodSettings()->getInputFrequencyOffset(); - frequencyOffsetChanged = true; } if (channelSettingsKeys.contains("rfBandwidth")) { settings.m_rfBandwidth = response.getBfmDemodSettings()->getRfBandwidth(); @@ -651,27 +676,6 @@ int BFMDemod::webapiSettingsPutPatch( if (channelSettingsKeys.contains("reverseAPIChannelIndex")) { settings.m_reverseAPIChannelIndex = response.getBfmDemodSettings()->getReverseApiChannelIndex(); } - - if (frequencyOffsetChanged) - { - MsgConfigureChannelizer* channelConfigMsg = MsgConfigureChannelizer::create( - requiredBW(settings.m_rfBandwidth), settings.m_inputFrequencyOffset); - m_inputMessageQueue.push(channelConfigMsg); - } - - MsgConfigureBFMDemod *msg = MsgConfigureBFMDemod::create(settings, force); - m_inputMessageQueue.push(msg); - - qDebug("BFMDemod::webapiSettingsPutPatch: forward to GUI: %p", m_guiMessageQueue); - if (m_guiMessageQueue) // forward to GUI if any - { - MsgConfigureBFMDemod *msgToGUI = MsgConfigureBFMDemod::create(settings, force); - m_guiMessageQueue->push(msgToGUI); - } - - webapiFormatChannelSettings(response, settings); - - return 200; } int BFMDemod::webapiReportGet( diff --git a/plugins/channelrx/demodbfm/bfmdemod.h b/plugins/channelrx/demodbfm/bfmdemod.h index c367fc957..f680b4d53 100644 --- a/plugins/channelrx/demodbfm/bfmdemod.h +++ b/plugins/channelrx/demodbfm/bfmdemod.h @@ -194,6 +194,15 @@ public: SWGSDRangel::SWGChannelReport& response, QString& errorMessage); + static void webapiFormatChannelSettings( + SWGSDRangel::SWGChannelSettings& response, + const BFMDemodSettings& settings); + + static void webapiUpdateChannelSettings( + BFMDemodSettings& settings, + const QStringList& channelSettingsKeys, + SWGSDRangel::SWGChannelSettings& response); + static int requiredBW(int rfBW) { if (rfBW <= 48000) { @@ -292,7 +301,6 @@ private: void applyChannelSettings(int inputSampleRate, int inputFrequencyOffset, bool force = false); void applySettings(const BFMDemodSettings& settings, bool force = false); - void webapiFormatChannelSettings(SWGSDRangel::SWGChannelSettings& response, const BFMDemodSettings& settings); void webapiFormatChannelReport(SWGSDRangel::SWGChannelReport& response); void webapiFormatRDSReport(SWGSDRangel::SWGRDSReport *report); void webapiReverseSendSettings(QList& channelSettingsKeys, const BFMDemodSettings& settings, bool force); diff --git a/plugins/channelrx/demoddsd/dsddemod.cpp b/plugins/channelrx/demoddsd/dsddemod.cpp index c62d43fad..f2aca7cf7 100644 --- a/plugins/channelrx/demoddsd/dsddemod.cpp +++ b/plugins/channelrx/demoddsd/dsddemod.cpp @@ -846,12 +846,37 @@ int DSDDemod::webapiSettingsPutPatch( { (void) errorMessage; DSDDemodSettings settings = m_settings; - bool frequencyOffsetChanged = false; + webapiUpdateChannelSettings(settings, channelSettingsKeys, response); - if (channelSettingsKeys.contains("inputFrequencyOffset")) + if (settings.m_inputFrequencyOffset != m_settings.m_inputFrequencyOffset) { + MsgConfigureChannelizer* channelConfigMsg = MsgConfigureChannelizer::create( + m_audioSampleRate, settings.m_inputFrequencyOffset); + m_inputMessageQueue.push(channelConfigMsg); + } + + MsgConfigureDSDDemod *msg = MsgConfigureDSDDemod::create(settings, force); + m_inputMessageQueue.push(msg); + + qDebug("DSDDemod::webapiSettingsPutPatch: forward to GUI: %p", m_guiMessageQueue); + if (m_guiMessageQueue) // forward to GUI if any + { + MsgConfigureDSDDemod *msgToGUI = MsgConfigureDSDDemod::create(settings, force); + m_guiMessageQueue->push(msgToGUI); + } + + webapiFormatChannelSettings(response, settings); + + return 200; +} + +void DSDDemod::webapiUpdateChannelSettings( + DSDDemodSettings& settings, + const QStringList& channelSettingsKeys, + SWGSDRangel::SWGChannelSettings& response) +{ + if (channelSettingsKeys.contains("inputFrequencyOffset")) { settings.m_inputFrequencyOffset = response.getDsdDemodSettings()->getInputFrequencyOffset(); - frequencyOffsetChanged = true; } if (channelSettingsKeys.contains("rfBandwidth")) { settings.m_rfBandwidth = response.getDsdDemodSettings()->getRfBandwidth(); @@ -931,27 +956,6 @@ int DSDDemod::webapiSettingsPutPatch( if (channelSettingsKeys.contains("reverseAPIChannelIndex")) { settings.m_reverseAPIChannelIndex = response.getDsdDemodSettings()->getReverseApiChannelIndex(); } - - if (frequencyOffsetChanged) - { - MsgConfigureChannelizer* channelConfigMsg = MsgConfigureChannelizer::create( - m_audioSampleRate, settings.m_inputFrequencyOffset); - m_inputMessageQueue.push(channelConfigMsg); - } - - MsgConfigureDSDDemod *msg = MsgConfigureDSDDemod::create(settings, force); - m_inputMessageQueue.push(msg); - - qDebug("DSDDemod::webapiSettingsPutPatch: forward to GUI: %p", m_guiMessageQueue); - if (m_guiMessageQueue) // forward to GUI if any - { - MsgConfigureDSDDemod *msgToGUI = MsgConfigureDSDDemod::create(settings, force); - m_guiMessageQueue->push(msgToGUI); - } - - webapiFormatChannelSettings(response, settings); - - return 200; } int DSDDemod::webapiReportGet( diff --git a/plugins/channelrx/demoddsd/dsddemod.h b/plugins/channelrx/demoddsd/dsddemod.h index 037e09d26..b1fa6edce 100644 --- a/plugins/channelrx/demoddsd/dsddemod.h +++ b/plugins/channelrx/demoddsd/dsddemod.h @@ -164,6 +164,15 @@ public: SWGSDRangel::SWGChannelReport& response, QString& errorMessage); + static void webapiFormatChannelSettings( + SWGSDRangel::SWGChannelSettings& response, + const DSDDemodSettings& settings); + + static void webapiUpdateChannelSettings( + DSDDemodSettings& settings, + const QStringList& channelSettingsKeys, + SWGSDRangel::SWGChannelSettings& response); + static const QString m_channelIdURI; static const QString m_channelId; @@ -272,7 +281,6 @@ private: void applySettings(const DSDDemodSettings& settings, bool force = false); void formatStatusText(); - void webapiFormatChannelSettings(SWGSDRangel::SWGChannelSettings& response, const DSDDemodSettings& settings); void webapiFormatChannelReport(SWGSDRangel::SWGChannelReport& response); void webapiReverseSendSettings(QList& channelSettingsKeys, const DSDDemodSettings& settings, bool force); diff --git a/plugins/channelrx/demodfreedv/freedvdemod.cpp b/plugins/channelrx/demodfreedv/freedvdemod.cpp index 90b383ee5..c908fe6d8 100644 --- a/plugins/channelrx/demodfreedv/freedvdemod.cpp +++ b/plugins/channelrx/demodfreedv/freedvdemod.cpp @@ -820,12 +820,37 @@ int FreeDVDemod::webapiSettingsPutPatch( { (void) errorMessage; FreeDVDemodSettings settings = m_settings; - bool frequencyOffsetChanged = false; + webapiUpdateChannelSettings(settings, channelSettingsKeys, response); - if (channelSettingsKeys.contains("inputFrequencyOffset")) + if (settings.m_inputFrequencyOffset != m_settings.m_inputFrequencyOffset) { + MsgConfigureChannelizer* channelConfigMsg = MsgConfigureChannelizer::create( + m_modemSampleRate, settings.m_inputFrequencyOffset); + m_inputMessageQueue.push(channelConfigMsg); + } + + MsgConfigureFreeDVDemod *msg = MsgConfigureFreeDVDemod::create(settings, force); + m_inputMessageQueue.push(msg); + + qDebug("FreeDVDemod::webapiSettingsPutPatch: forward to GUI: %p", m_guiMessageQueue); + if (m_guiMessageQueue) // forward to GUI if any + { + MsgConfigureFreeDVDemod *msgToGUI = MsgConfigureFreeDVDemod::create(settings, force); + m_guiMessageQueue->push(msgToGUI); + } + + webapiFormatChannelSettings(response, settings); + + return 200; +} + +void FreeDVDemod::webapiUpdateChannelSettings( + FreeDVDemodSettings& settings, + const QStringList& channelSettingsKeys, + SWGSDRangel::SWGChannelSettings& response) +{ + if (channelSettingsKeys.contains("inputFrequencyOffset")) { settings.m_inputFrequencyOffset = response.getFreeDvDemodSettings()->getInputFrequencyOffset(); - frequencyOffsetChanged = true; } if (channelSettingsKeys.contains("freeDVMode")) { settings.m_freeDVMode = (FreeDVDemodSettings::FreeDVMode) response.getFreeDvDemodSettings()->getFreeDvMode(); @@ -869,27 +894,6 @@ int FreeDVDemod::webapiSettingsPutPatch( if (channelSettingsKeys.contains("reverseAPIChannelIndex")) { settings.m_reverseAPIChannelIndex = response.getFreeDvDemodSettings()->getReverseApiChannelIndex(); } - - if (frequencyOffsetChanged) - { - MsgConfigureChannelizer* channelConfigMsg = MsgConfigureChannelizer::create( - m_modemSampleRate, settings.m_inputFrequencyOffset); - m_inputMessageQueue.push(channelConfigMsg); - } - - MsgConfigureFreeDVDemod *msg = MsgConfigureFreeDVDemod::create(settings, force); - m_inputMessageQueue.push(msg); - - qDebug("FreeDVDemod::webapiSettingsPutPatch: forward to GUI: %p", m_guiMessageQueue); - if (m_guiMessageQueue) // forward to GUI if any - { - MsgConfigureFreeDVDemod *msgToGUI = MsgConfigureFreeDVDemod::create(settings, force); - m_guiMessageQueue->push(msgToGUI); - } - - webapiFormatChannelSettings(response, settings); - - return 200; } int FreeDVDemod::webapiReportGet( diff --git a/plugins/channelrx/demodfreedv/freedvdemod.h b/plugins/channelrx/demodfreedv/freedvdemod.h index 68b7a134d..b1c608441 100644 --- a/plugins/channelrx/demodfreedv/freedvdemod.h +++ b/plugins/channelrx/demodfreedv/freedvdemod.h @@ -193,6 +193,15 @@ public: SWGSDRangel::SWGChannelReport& response, QString& errorMessage); + static void webapiFormatChannelSettings( + SWGSDRangel::SWGChannelSettings& response, + const FreeDVDemodSettings& settings); + + static void webapiUpdateChannelSettings( + FreeDVDemodSettings& settings, + const QStringList& channelSettingsKeys, + SWGSDRangel::SWGChannelSettings& response); + static const QString m_channelIdURI; static const QString m_channelId; @@ -416,7 +425,6 @@ private: void applyAudioSampleRate(int sampleRate); void applyFreeDVMode(FreeDVDemodSettings::FreeDVMode mode); void processOneSample(Complex &ci); - void webapiFormatChannelSettings(SWGSDRangel::SWGChannelSettings& response, const FreeDVDemodSettings& settings); void webapiFormatChannelReport(SWGSDRangel::SWGChannelReport& response); void webapiReverseSendSettings(QList& channelSettingsKeys, const FreeDVDemodSettings& settings, bool force); diff --git a/plugins/channelrx/demodnfm/nfmdemod.cpp b/plugins/channelrx/demodnfm/nfmdemod.cpp index 2b224786f..6c1032822 100644 --- a/plugins/channelrx/demodnfm/nfmdemod.cpp +++ b/plugins/channelrx/demodnfm/nfmdemod.cpp @@ -687,8 +687,34 @@ int NFMDemod::webapiSettingsPutPatch( { (void) errorMessage; NFMDemodSettings settings = m_settings; - bool frequencyOffsetChanged = false; + webapiUpdateChannelSettings(settings, channelSettingsKeys, response); + if (settings.m_inputFrequencyOffset != m_settings.m_inputFrequencyOffset) + { + MsgConfigureChannelizer* channelConfigMsg = MsgConfigureChannelizer::create( + m_audioSampleRate, settings.m_inputFrequencyOffset); + m_inputMessageQueue.push(channelConfigMsg); + } + + MsgConfigureNFMDemod *msg = MsgConfigureNFMDemod::create(settings, force); + m_inputMessageQueue.push(msg); + + if (m_guiMessageQueue) // forward to GUI if any + { + MsgConfigureNFMDemod *msgToGUI = MsgConfigureNFMDemod::create(settings, force); + m_guiMessageQueue->push(msgToGUI); + } + + webapiFormatChannelSettings(response, settings); + + return 200; +} + +void NFMDemod::webapiUpdateChannelSettings( + NFMDemodSettings& settings, + const QStringList& channelSettingsKeys, + SWGSDRangel::SWGChannelSettings& response) +{ if (channelSettingsKeys.contains("afBandwidth")) { settings.m_afBandwidth = response.getNfmDemodSettings()->getAfBandwidth(); } @@ -710,10 +736,8 @@ int NFMDemod::webapiSettingsPutPatch( if (channelSettingsKeys.contains("fmDeviation")) { settings.m_fmDeviation = response.getNfmDemodSettings()->getFmDeviation(); } - if (channelSettingsKeys.contains("inputFrequencyOffset")) - { + if (channelSettingsKeys.contains("inputFrequencyOffset")) { settings.m_inputFrequencyOffset = response.getNfmDemodSettings()->getInputFrequencyOffset(); - frequencyOffsetChanged = true; } if (channelSettingsKeys.contains("rfBandwidth")) { settings.m_rfBandwidth = response.getNfmDemodSettings()->getRfBandwidth(); @@ -751,26 +775,6 @@ int NFMDemod::webapiSettingsPutPatch( if (channelSettingsKeys.contains("reverseAPIChannelIndex")) { settings.m_reverseAPIChannelIndex = response.getNfmDemodSettings()->getReverseApiChannelIndex(); } - - if (frequencyOffsetChanged) - { - MsgConfigureChannelizer* channelConfigMsg = MsgConfigureChannelizer::create( - m_audioSampleRate, settings.m_inputFrequencyOffset); - m_inputMessageQueue.push(channelConfigMsg); - } - - MsgConfigureNFMDemod *msg = MsgConfigureNFMDemod::create(settings, force); - m_inputMessageQueue.push(msg); - - if (m_guiMessageQueue) // forward to GUI if any - { - MsgConfigureNFMDemod *msgToGUI = MsgConfigureNFMDemod::create(settings, force); - m_guiMessageQueue->push(msgToGUI); - } - - webapiFormatChannelSettings(response, settings); - - return 200; } int NFMDemod::webapiReportGet( diff --git a/plugins/channelrx/demodnfm/nfmdemod.h b/plugins/channelrx/demodnfm/nfmdemod.h index 0d0aeab47..aea270eb8 100644 --- a/plugins/channelrx/demodnfm/nfmdemod.h +++ b/plugins/channelrx/demodnfm/nfmdemod.h @@ -156,6 +156,15 @@ public: SWGSDRangel::SWGChannelReport& response, QString& errorMessage); + static void webapiFormatChannelSettings( + SWGSDRangel::SWGChannelSettings& response, + const NFMDemodSettings& settings); + + static void webapiUpdateChannelSettings( + NFMDemodSettings& settings, + const QStringList& channelSettingsKeys, + SWGSDRangel::SWGChannelSettings& response); + const Real *getCtcssToneSet(int& nbTones) const { nbTones = m_ctcssDetector.getNTones(); return m_ctcssDetector.getToneSet(); @@ -261,7 +270,6 @@ private: void applyChannelSettings(int inputSampleRate, int inputFrequencyOffset, bool force = false); void applySettings(const NFMDemodSettings& settings, bool force = false); void applyAudioSampleRate(int sampleRate); - void webapiFormatChannelSettings(SWGSDRangel::SWGChannelSettings& response, const NFMDemodSettings& settings); void webapiFormatChannelReport(SWGSDRangel::SWGChannelReport& response); void webapiReverseSendSettings(QList& channelSettingsKeys, const NFMDemodSettings& settings, bool force); diff --git a/plugins/channelrx/demodssb/ssbdemod.cpp b/plugins/channelrx/demodssb/ssbdemod.cpp index 8a64cb445..fc82fc20a 100644 --- a/plugins/channelrx/demodssb/ssbdemod.cpp +++ b/plugins/channelrx/demodssb/ssbdemod.cpp @@ -685,12 +685,37 @@ int SSBDemod::webapiSettingsPutPatch( { (void) errorMessage; SSBDemodSettings settings = m_settings; - bool frequencyOffsetChanged = false; + webapiUpdateChannelSettings(settings, channelSettingsKeys, response); - if (channelSettingsKeys.contains("inputFrequencyOffset")) + if (settings.m_inputFrequencyOffset != m_settings.m_inputFrequencyOffset) { + MsgConfigureChannelizer* channelConfigMsg = MsgConfigureChannelizer::create( + m_audioSampleRate, settings.m_inputFrequencyOffset); + m_inputMessageQueue.push(channelConfigMsg); + } + + MsgConfigureSSBDemod *msg = MsgConfigureSSBDemod::create(settings, force); + m_inputMessageQueue.push(msg); + + qDebug("SSBDemod::webapiSettingsPutPatch: forward to GUI: %p", m_guiMessageQueue); + if (m_guiMessageQueue) // forward to GUI if any + { + MsgConfigureSSBDemod *msgToGUI = MsgConfigureSSBDemod::create(settings, force); + m_guiMessageQueue->push(msgToGUI); + } + + webapiFormatChannelSettings(response, settings); + + return 200; +} + +void SSBDemod::webapiUpdateChannelSettings( + SSBDemodSettings& settings, + const QStringList& channelSettingsKeys, + SWGSDRangel::SWGChannelSettings& response) +{ + if (channelSettingsKeys.contains("inputFrequencyOffset")) { settings.m_inputFrequencyOffset = response.getSsbDemodSettings()->getInputFrequencyOffset(); - frequencyOffsetChanged = true; } if (channelSettingsKeys.contains("rfBandwidth")) { settings.m_rfBandwidth = response.getSsbDemodSettings()->getRfBandwidth(); @@ -755,27 +780,6 @@ int SSBDemod::webapiSettingsPutPatch( if (channelSettingsKeys.contains("reverseAPIChannelIndex")) { settings.m_reverseAPIChannelIndex = response.getSsbDemodSettings()->getReverseApiChannelIndex(); } - - if (frequencyOffsetChanged) - { - MsgConfigureChannelizer* channelConfigMsg = MsgConfigureChannelizer::create( - m_audioSampleRate, settings.m_inputFrequencyOffset); - m_inputMessageQueue.push(channelConfigMsg); - } - - MsgConfigureSSBDemod *msg = MsgConfigureSSBDemod::create(settings, force); - m_inputMessageQueue.push(msg); - - qDebug("SSBDemod::webapiSettingsPutPatch: forward to GUI: %p", m_guiMessageQueue); - if (m_guiMessageQueue) // forward to GUI if any - { - MsgConfigureSSBDemod *msgToGUI = MsgConfigureSSBDemod::create(settings, force); - m_guiMessageQueue->push(msgToGUI); - } - - webapiFormatChannelSettings(response, settings); - - return 200; } int SSBDemod::webapiReportGet( diff --git a/plugins/channelrx/demodssb/ssbdemod.h b/plugins/channelrx/demodssb/ssbdemod.h index 4b7d1542d..08e3e5492 100644 --- a/plugins/channelrx/demodssb/ssbdemod.h +++ b/plugins/channelrx/demodssb/ssbdemod.h @@ -173,6 +173,15 @@ public: SWGSDRangel::SWGChannelReport& response, QString& errorMessage); + static void webapiFormatChannelSettings( + SWGSDRangel::SWGChannelSettings& response, + const SSBDemodSettings& settings); + + static void webapiUpdateChannelSettings( + SSBDemodSettings& settings, + const QStringList& channelSettingsKeys, + SWGSDRangel::SWGChannelSettings& response); + static const QString m_channelIdURI; static const QString m_channelId; @@ -335,7 +344,6 @@ private: void applyChannelSettings(int inputSampleRate, int inputFrequencyOffset, bool force = false); void applySettings(const SSBDemodSettings& settings, bool force = false); void applyAudioSampleRate(int sampleRate); - void webapiFormatChannelSettings(SWGSDRangel::SWGChannelSettings& response, const SSBDemodSettings& settings); void webapiFormatChannelReport(SWGSDRangel::SWGChannelReport& response); void webapiReverseSendSettings(QList& channelSettingsKeys, const SSBDemodSettings& settings, bool force); diff --git a/plugins/channelrx/demodwfm/wfmdemod.cpp b/plugins/channelrx/demodwfm/wfmdemod.cpp index 72b656861..b8667f31e 100644 --- a/plugins/channelrx/demodwfm/wfmdemod.cpp +++ b/plugins/channelrx/demodwfm/wfmdemod.cpp @@ -456,12 +456,37 @@ int WFMDemod::webapiSettingsPutPatch( { (void) errorMessage; WFMDemodSettings settings = m_settings; - bool frequencyOffsetChanged = false; + webapiUpdateChannelSettings(settings, channelSettingsKeys, response); - if (channelSettingsKeys.contains("inputFrequencyOffset")) + if (settings.m_inputFrequencyOffset != m_settings.m_inputFrequencyOffset) { + MsgConfigureChannelizer* channelConfigMsg = MsgConfigureChannelizer::create( + requiredBW(settings.m_rfBandwidth), settings.m_inputFrequencyOffset); + m_inputMessageQueue.push(channelConfigMsg); + } + + MsgConfigureWFMDemod *msg = MsgConfigureWFMDemod::create(settings, force); + m_inputMessageQueue.push(msg); + + qDebug("WFMDemod::webapiSettingsPutPatch: forward to GUI: %p", m_guiMessageQueue); + if (m_guiMessageQueue) // forward to GUI if any + { + MsgConfigureWFMDemod *msgToGUI = MsgConfigureWFMDemod::create(settings, force); + m_guiMessageQueue->push(msgToGUI); + } + + webapiFormatChannelSettings(response, settings); + + return 200; +} + +void WFMDemod::webapiUpdateChannelSettings( + WFMDemodSettings& settings, + const QStringList& channelSettingsKeys, + SWGSDRangel::SWGChannelSettings& response) +{ + if (channelSettingsKeys.contains("inputFrequencyOffset")) { settings.m_inputFrequencyOffset = response.getWfmDemodSettings()->getInputFrequencyOffset(); - frequencyOffsetChanged = true; } if (channelSettingsKeys.contains("rfBandwidth")) { settings.m_rfBandwidth = response.getWfmDemodSettings()->getRfBandwidth(); @@ -502,27 +527,6 @@ int WFMDemod::webapiSettingsPutPatch( if (channelSettingsKeys.contains("reverseAPIChannelIndex")) { settings.m_reverseAPIChannelIndex = response.getWfmDemodSettings()->getReverseApiChannelIndex(); } - - if (frequencyOffsetChanged) - { - MsgConfigureChannelizer* channelConfigMsg = MsgConfigureChannelizer::create( - requiredBW(settings.m_rfBandwidth), settings.m_inputFrequencyOffset); - m_inputMessageQueue.push(channelConfigMsg); - } - - MsgConfigureWFMDemod *msg = MsgConfigureWFMDemod::create(settings, force); - m_inputMessageQueue.push(msg); - - qDebug("WFMDemod::webapiSettingsPutPatch: forward to GUI: %p", m_guiMessageQueue); - if (m_guiMessageQueue) // forward to GUI if any - { - MsgConfigureWFMDemod *msgToGUI = MsgConfigureWFMDemod::create(settings, force); - m_guiMessageQueue->push(msgToGUI); - } - - webapiFormatChannelSettings(response, settings); - - return 200; } int WFMDemod::webapiReportGet( diff --git a/plugins/channelrx/demodwfm/wfmdemod.h b/plugins/channelrx/demodwfm/wfmdemod.h index dc36bb849..3e1465562 100644 --- a/plugins/channelrx/demodwfm/wfmdemod.h +++ b/plugins/channelrx/demodwfm/wfmdemod.h @@ -155,6 +155,15 @@ public: SWGSDRangel::SWGChannelReport& response, QString& errorMessage); + static void webapiFormatChannelSettings( + SWGSDRangel::SWGChannelSettings& response, + const WFMDemodSettings& settings); + + static void webapiUpdateChannelSettings( + WFMDemodSettings& settings, + const QStringList& channelSettingsKeys, + SWGSDRangel::SWGChannelSettings& response); + static int requiredBW(int rfBW) { if (rfBW <= 48000) { @@ -228,7 +237,6 @@ private: void applyChannelSettings(int inputSampleRate, int inputFrequencyOffset, bool force = false); void applySettings(const WFMDemodSettings& settings, bool force = false); - void webapiFormatChannelSettings(SWGSDRangel::SWGChannelSettings& response, const WFMDemodSettings& settings); void webapiFormatChannelReport(SWGSDRangel::SWGChannelReport& response); void webapiReverseSendSettings(QList& channelSettingsKeys, const WFMDemodSettings& settings, bool force); diff --git a/plugins/channelrx/freqtracker/freqtracker.cpp b/plugins/channelrx/freqtracker/freqtracker.cpp index fe139c613..1a0b771a4 100644 --- a/plugins/channelrx/freqtracker/freqtracker.cpp +++ b/plugins/channelrx/freqtracker/freqtracker.cpp @@ -552,7 +552,28 @@ int FreqTracker::webapiSettingsPutPatch( { (void) errorMessage; FreqTrackerSettings settings = m_settings; + webapiUpdateChannelSettings(settings, channelSettingsKeys, response); + MsgConfigureFreqTracker *msg = MsgConfigureFreqTracker::create(settings, force); + m_inputMessageQueue.push(msg); + + qDebug("FreqTracker::webapiSettingsPutPatch: forward to GUI: %p", m_guiMessageQueue); + if (m_guiMessageQueue) // forward to GUI if any + { + MsgConfigureFreqTracker *msgToGUI = MsgConfigureFreqTracker::create(settings, force); + m_guiMessageQueue->push(msgToGUI); + } + + webapiFormatChannelSettings(response, settings); + + return 200; +} + +void FreqTracker::webapiUpdateChannelSettings( + FreqTrackerSettings& settings, + const QStringList& channelSettingsKeys, + SWGSDRangel::SWGChannelSettings& response) +{ if (channelSettingsKeys.contains("inputFrequencyOffset")) { settings.m_inputFrequencyOffset = response.getFreqTrackerSettings()->getInputFrequencyOffset(); } @@ -612,20 +633,6 @@ int FreqTracker::webapiSettingsPutPatch( if (channelSettingsKeys.contains("reverseAPIChannelIndex")) { settings.m_reverseAPIChannelIndex = response.getAmDemodSettings()->getReverseApiChannelIndex(); } - - MsgConfigureFreqTracker *msg = MsgConfigureFreqTracker::create(settings, force); - m_inputMessageQueue.push(msg); - - qDebug("FreqTracker::webapiSettingsPutPatch: forward to GUI: %p", m_guiMessageQueue); - if (m_guiMessageQueue) // forward to GUI if any - { - MsgConfigureFreqTracker *msgToGUI = MsgConfigureFreqTracker::create(settings, force); - m_guiMessageQueue->push(msgToGUI); - } - - webapiFormatChannelSettings(response, settings); - - return 200; } int FreqTracker::webapiReportGet( @@ -653,13 +660,13 @@ void FreqTracker::webapiFormatChannelSettings(SWGSDRangel::SWGChannelSettings& r response.getFreqTrackerSettings()->setTitle(new QString(settings.m_title)); } - response.getFreqTrackerSettings()->setAlphaEma(m_settings.m_alphaEMA); - response.getFreqTrackerSettings()->setTracking(m_settings.m_tracking ? 1 : 0); - response.getFreqTrackerSettings()->setTrackerType((int) m_settings.m_trackerType); - response.getFreqTrackerSettings()->setPllPskOrder(m_settings.m_pllPskOrder); - response.getFreqTrackerSettings()->setRrc(m_settings.m_rrc ? 1 : 0); - response.getFreqTrackerSettings()->setRrcRolloff(m_settings.m_rrcRolloff); - response.getFreqTrackerSettings()->setSquelchGate(m_settings.m_squelchGate); + response.getFreqTrackerSettings()->setAlphaEma(settings.m_alphaEMA); + response.getFreqTrackerSettings()->setTracking(settings.m_tracking ? 1 : 0); + response.getFreqTrackerSettings()->setTrackerType((int) settings.m_trackerType); + response.getFreqTrackerSettings()->setPllPskOrder(settings.m_pllPskOrder); + response.getFreqTrackerSettings()->setRrc(settings.m_rrc ? 1 : 0); + response.getFreqTrackerSettings()->setRrcRolloff(settings.m_rrcRolloff); + response.getFreqTrackerSettings()->setSquelchGate(settings.m_squelchGate); response.getFreqTrackerSettings()->setUseReverseApi(settings.m_useReverseAPI ? 1 : 0); if (response.getFreqTrackerSettings()->getReverseApiAddress()) { diff --git a/plugins/channelrx/freqtracker/freqtracker.h b/plugins/channelrx/freqtracker/freqtracker.h index fa625998c..969076e75 100644 --- a/plugins/channelrx/freqtracker/freqtracker.h +++ b/plugins/channelrx/freqtracker/freqtracker.h @@ -157,6 +157,15 @@ public: SWGSDRangel::SWGChannelReport& response, QString& errorMessage); + static void webapiFormatChannelSettings( + SWGSDRangel::SWGChannelSettings& response, + const FreqTrackerSettings& settings); + + static void webapiUpdateChannelSettings( + FreqTrackerSettings& settings, + const QStringList& channelSettingsKeys, + SWGSDRangel::SWGChannelSettings& response); + uint32_t getSampleRate() const { return m_channelSampleRate; } double getMagSq() const { return m_magsq; } bool getSquelchOpen() const { return m_squelchOpen; } @@ -250,7 +259,6 @@ private: void configureChannelizer(); void connectTimer(); void disconnectTimer(); - void webapiFormatChannelSettings(SWGSDRangel::SWGChannelSettings& response, const FreqTrackerSettings& settings); void webapiFormatChannelReport(SWGSDRangel::SWGChannelReport& response); void webapiReverseSendSettings(QList& channelSettingsKeys, const FreqTrackerSettings& settings, bool force); diff --git a/plugins/channelrx/localsink/localsink.cpp b/plugins/channelrx/localsink/localsink.cpp index ee61a6b77..4cfd67a9a 100644 --- a/plugins/channelrx/localsink/localsink.cpp +++ b/plugins/channelrx/localsink/localsink.cpp @@ -355,7 +355,34 @@ int LocalSink::webapiSettingsPutPatch( { (void) errorMessage; LocalSinkSettings settings = m_settings; + webapiUpdateChannelSettings(settings, channelSettingsKeys, response); + MsgConfigureLocalSink *msg = MsgConfigureLocalSink::create(settings, force); + m_inputMessageQueue.push(msg); + + if ((settings.m_log2Decim != m_settings.m_log2Decim) || (settings.m_filterChainHash != m_settings.m_filterChainHash) || force) + { + MsgConfigureChannelizer *msg = MsgConfigureChannelizer::create(settings.m_log2Decim, settings.m_filterChainHash); + m_inputMessageQueue.push(msg); + } + + qDebug("LocalSink::webapiSettingsPutPatch: forward to GUI: %p", m_guiMessageQueue); + if (m_guiMessageQueue) // forward to GUI if any + { + MsgConfigureLocalSink *msgToGUI = MsgConfigureLocalSink::create(settings, force); + m_guiMessageQueue->push(msgToGUI); + } + + webapiFormatChannelSettings(response, settings); + + return 200; +} + +void LocalSink::webapiUpdateChannelSettings( + LocalSinkSettings& settings, + const QStringList& channelSettingsKeys, + SWGSDRangel::SWGChannelSettings& response) +{ if (channelSettingsKeys.contains("localDeviceIndex")) { settings.m_localDeviceIndex = response.getLocalSinkSettings()->getLocalDeviceIndex(); } @@ -390,26 +417,6 @@ int LocalSink::webapiSettingsPutPatch( if (channelSettingsKeys.contains("reverseAPIChannelIndex")) { settings.m_reverseAPIChannelIndex = response.getLocalSinkSettings()->getReverseApiChannelIndex(); } - - MsgConfigureLocalSink *msg = MsgConfigureLocalSink::create(settings, force); - m_inputMessageQueue.push(msg); - - if ((settings.m_log2Decim != m_settings.m_log2Decim) || (settings.m_filterChainHash != m_settings.m_filterChainHash) || force) - { - MsgConfigureChannelizer *msg = MsgConfigureChannelizer::create(settings.m_log2Decim, settings.m_filterChainHash); - m_inputMessageQueue.push(msg); - } - - qDebug("LocalSink::webapiSettingsPutPatch: forward to GUI: %p", m_guiMessageQueue); - if (m_guiMessageQueue) // forward to GUI if any - { - MsgConfigureLocalSink *msgToGUI = MsgConfigureLocalSink::create(settings, force); - m_guiMessageQueue->push(msgToGUI); - } - - webapiFormatChannelSettings(response, settings); - - return 200; } void LocalSink::webapiFormatChannelSettings(SWGSDRangel::SWGChannelSettings& response, const LocalSinkSettings& settings) diff --git a/plugins/channelrx/localsink/localsink.h b/plugins/channelrx/localsink/localsink.h index 5e58066ca..047ebff99 100644 --- a/plugins/channelrx/localsink/localsink.h +++ b/plugins/channelrx/localsink/localsink.h @@ -138,6 +138,15 @@ public: SWGSDRangel::SWGChannelSettings& response, QString& errorMessage); + static void webapiFormatChannelSettings( + SWGSDRangel::SWGChannelSettings& response, + const LocalSinkSettings& settings); + + static void webapiUpdateChannelSettings( + LocalSinkSettings& settings, + const QStringList& channelSettingsKeys, + SWGSDRangel::SWGChannelSettings& response); + /** Set center frequency given in Hz */ void setCenterFrequency(uint64_t centerFrequency) { m_centerFrequency = centerFrequency; } @@ -173,9 +182,8 @@ private: void applySettings(const LocalSinkSettings& settings, bool force = false); DeviceSampleSource *getLocalDevice(uint32_t index); void propagateSampleRateAndFrequency(uint32_t index); - void validateFilterChainHash(LocalSinkSettings& settings); + static void validateFilterChainHash(LocalSinkSettings& settings); void calculateFrequencyOffset(); - void webapiFormatChannelSettings(SWGSDRangel::SWGChannelSettings& response, const LocalSinkSettings& settings); void webapiReverseSendSettings(QList& channelSettingsKeys, const LocalSinkSettings& settings, bool force); private slots: diff --git a/plugins/channelrx/remotesink/remotesink.cpp b/plugins/channelrx/remotesink/remotesink.cpp index 3259a69fb..32e38b5eb 100644 --- a/plugins/channelrx/remotesink/remotesink.cpp +++ b/plugins/channelrx/remotesink/remotesink.cpp @@ -448,7 +448,34 @@ int RemoteSink::webapiSettingsPutPatch( { (void) errorMessage; RemoteSinkSettings settings = m_settings; + webapiUpdateChannelSettings(settings, channelSettingsKeys, response); + MsgConfigureRemoteSink *msg = MsgConfigureRemoteSink::create(settings, force); + m_inputMessageQueue.push(msg); + + if ((settings.m_log2Decim != m_settings.m_log2Decim) || (settings.m_filterChainHash != m_settings.m_filterChainHash) || force) + { + MsgConfigureChannelizer *msg = MsgConfigureChannelizer::create(settings.m_log2Decim, settings.m_filterChainHash); + m_inputMessageQueue.push(msg); + } + + qDebug("RemoteSink::webapiSettingsPutPatch: forward to GUI: %p", m_guiMessageQueue); + if (m_guiMessageQueue) // forward to GUI if any + { + MsgConfigureRemoteSink *msgToGUI = MsgConfigureRemoteSink::create(settings, force); + m_guiMessageQueue->push(msgToGUI); + } + + webapiFormatChannelSettings(response, settings); + + return 200; +} + +void RemoteSink::webapiUpdateChannelSettings( + RemoteSinkSettings& settings, + const QStringList& channelSettingsKeys, + SWGSDRangel::SWGChannelSettings& response) +{ if (channelSettingsKeys.contains("nbFECBlocks")) { int nbFECBlocks = response.getRemoteSinkSettings()->getNbFecBlocks(); @@ -517,26 +544,6 @@ int RemoteSink::webapiSettingsPutPatch( if (channelSettingsKeys.contains("reverseAPIChannelIndex")) { settings.m_reverseAPIChannelIndex = response.getRemoteSinkSettings()->getReverseApiChannelIndex(); } - - MsgConfigureRemoteSink *msg = MsgConfigureRemoteSink::create(settings, force); - m_inputMessageQueue.push(msg); - - if ((settings.m_log2Decim != m_settings.m_log2Decim) || (settings.m_filterChainHash != m_settings.m_filterChainHash) || force) - { - MsgConfigureChannelizer *msg = MsgConfigureChannelizer::create(settings.m_log2Decim, settings.m_filterChainHash); - m_inputMessageQueue.push(msg); - } - - qDebug("RemoteSink::webapiSettingsPutPatch: forward to GUI: %p", m_guiMessageQueue); - if (m_guiMessageQueue) // forward to GUI if any - { - MsgConfigureRemoteSink *msgToGUI = MsgConfigureRemoteSink::create(settings, force); - m_guiMessageQueue->push(msgToGUI); - } - - webapiFormatChannelSettings(response, settings); - - return 200; } void RemoteSink::webapiFormatChannelSettings(SWGSDRangel::SWGChannelSettings& response, const RemoteSinkSettings& settings) diff --git a/plugins/channelrx/remotesink/remotesink.h b/plugins/channelrx/remotesink/remotesink.h index 66c11e701..81fcfb139 100644 --- a/plugins/channelrx/remotesink/remotesink.h +++ b/plugins/channelrx/remotesink/remotesink.h @@ -145,6 +145,15 @@ public: SWGSDRangel::SWGChannelSettings& response, QString& errorMessage); + static void webapiFormatChannelSettings( + SWGSDRangel::SWGChannelSettings& response, + const RemoteSinkSettings& settings); + + static void webapiUpdateChannelSettings( + RemoteSinkSettings& settings, + const QStringList& channelSettingsKeys, + SWGSDRangel::SWGChannelSettings& response); + /** Set center frequency given in Hz */ void setCenterFrequency(uint64_t centerFrequency) { m_centerFrequency = centerFrequency; } @@ -192,9 +201,8 @@ private: QNetworkRequest m_networkRequest; void applySettings(const RemoteSinkSettings& settings, bool force = false); - void validateFilterChainHash(RemoteSinkSettings& settings); + static void validateFilterChainHash(RemoteSinkSettings& settings); void calculateFrequencyOffset(); - void webapiFormatChannelSettings(SWGSDRangel::SWGChannelSettings& response, const RemoteSinkSettings& settings); void webapiReverseSendSettings(QList& channelSettingsKeys, const RemoteSinkSettings& settings, bool force); private slots: diff --git a/plugins/channelrx/udpsink/udpsink.cpp b/plugins/channelrx/udpsink/udpsink.cpp index 123f86d20..7101ba920 100644 --- a/plugins/channelrx/udpsink/udpsink.cpp +++ b/plugins/channelrx/udpsink/udpsink.cpp @@ -736,18 +736,44 @@ int UDPSink::webapiSettingsPutPatch( { (void) errorMessage; UDPSinkSettings settings = m_settings; - bool frequencyOffsetChanged = false; + webapiUpdateChannelSettings(settings, channelSettingsKeys, response); + if (m_settings.m_inputFrequencyOffset != settings.m_inputFrequencyOffset) + { + UDPSink::MsgConfigureChannelizer *msgChan = UDPSink::MsgConfigureChannelizer::create( + (int) settings.m_outputSampleRate, + (int) settings.m_inputFrequencyOffset); + m_inputMessageQueue.push(msgChan); + } + + MsgConfigureUDPSource *msg = MsgConfigureUDPSource::create(settings, force); + m_inputMessageQueue.push(msg); + + qDebug("getUdpSinkSettings::webapiSettingsPutPatch: forward to GUI: %p", m_guiMessageQueue); + if (m_guiMessageQueue) // forward to GUI if any + { + MsgConfigureUDPSource *msgToGUI = MsgConfigureUDPSource::create(settings, force); + m_guiMessageQueue->push(msgToGUI); + } + + webapiFormatChannelSettings(response, settings); + + return 200; +} + +void UDPSink::webapiUpdateChannelSettings( + UDPSinkSettings& settings, + const QStringList& channelSettingsKeys, + SWGSDRangel::SWGChannelSettings& response) +{ if (channelSettingsKeys.contains("outputSampleRate")) { settings.m_outputSampleRate = response.getUdpSinkSettings()->getOutputSampleRate(); } if (channelSettingsKeys.contains("sampleFormat")) { settings.m_sampleFormat = (UDPSinkSettings::SampleFormat) response.getUdpSinkSettings()->getSampleFormat(); } - if (channelSettingsKeys.contains("inputFrequencyOffset")) - { + if (channelSettingsKeys.contains("inputFrequencyOffset")) { settings.m_inputFrequencyOffset = response.getUdpSinkSettings()->getInputFrequencyOffset(); - frequencyOffsetChanged = true; } if (channelSettingsKeys.contains("rfBandwidth")) { settings.m_rfBandwidth = response.getUdpSinkSettings()->getRfBandwidth(); @@ -812,28 +838,6 @@ int UDPSink::webapiSettingsPutPatch( if (channelSettingsKeys.contains("reverseAPIChannelIndex")) { settings.m_reverseAPIChannelIndex = response.getUdpSinkSettings()->getReverseApiChannelIndex(); } - - if (frequencyOffsetChanged) - { - UDPSink::MsgConfigureChannelizer *msgChan = UDPSink::MsgConfigureChannelizer::create( - (int) settings.m_outputSampleRate, - (int) settings.m_inputFrequencyOffset); - m_inputMessageQueue.push(msgChan); - } - - MsgConfigureUDPSource *msg = MsgConfigureUDPSource::create(settings, force); - m_inputMessageQueue.push(msg); - - qDebug("getUdpSinkSettings::webapiSettingsPutPatch: forward to GUI: %p", m_guiMessageQueue); - if (m_guiMessageQueue) // forward to GUI if any - { - MsgConfigureUDPSource *msgToGUI = MsgConfigureUDPSource::create(settings, force); - m_guiMessageQueue->push(msgToGUI); - } - - webapiFormatChannelSettings(response, settings); - - return 200; } int UDPSink::webapiReportGet( diff --git a/plugins/channelrx/udpsink/udpsink.h b/plugins/channelrx/udpsink/udpsink.h index 0923f4219..49463e3f8 100644 --- a/plugins/channelrx/udpsink/udpsink.h +++ b/plugins/channelrx/udpsink/udpsink.h @@ -142,6 +142,15 @@ public: SWGSDRangel::SWGChannelReport& response, QString& errorMessage); + static void webapiFormatChannelSettings( + SWGSDRangel::SWGChannelSettings& response, + const UDPSinkSettings& settings); + + static void webapiUpdateChannelSettings( + UDPSinkSettings& settings, + const QStringList& channelSettingsKeys, + SWGSDRangel::SWGChannelSettings& response); + static const QString m_channelIdURI; static const QString m_channelId; static const int udpBlockSize = 512; // UDP block size in number of bytes @@ -252,7 +261,6 @@ protected: void applyChannelSettings(int inputSampleRate, int inputFrequencyOffset, bool force = true); void applySettings(const UDPSinkSettings& settings, bool force = false); - void webapiFormatChannelSettings(SWGSDRangel::SWGChannelSettings& response, const UDPSinkSettings& settings); void webapiFormatChannelReport(SWGSDRangel::SWGChannelReport& response); void webapiReverseSendSettings(QList& channelSettingsKeys, const UDPSinkSettings& settings, bool force); diff --git a/plugins/channeltx/filesource/filesource.cpp b/plugins/channeltx/filesource/filesource.cpp index edfb48a9f..d6c972742 100644 --- a/plugins/channeltx/filesource/filesource.cpp +++ b/plugins/channeltx/filesource/filesource.cpp @@ -531,7 +531,28 @@ int FileSource::webapiSettingsPutPatch( { (void) errorMessage; FileSourceSettings settings = m_settings; + webapiUpdateChannelSettings(settings, channelSettingsKeys, response); + MsgConfigureFileSource *msg = MsgConfigureFileSource::create(settings, force); + m_inputMessageQueue.push(msg); + + qDebug("FileSource::webapiSettingsPutPatch: forward to GUI: %p", m_guiMessageQueue); + if (m_guiMessageQueue) // forward to GUI if any + { + MsgConfigureFileSource *msgToGUI = MsgConfigureFileSource::create(settings, force); + m_guiMessageQueue->push(msgToGUI); + } + + webapiFormatChannelSettings(response, settings); + + return 200; +} + +void FileSource::webapiUpdateChannelSettings( + FileSourceSettings& settings, + const QStringList& channelSettingsKeys, + SWGSDRangel::SWGChannelSettings& response) +{ if (channelSettingsKeys.contains("log2Interp")) { settings.m_log2Interp = response.getFileSourceSettings()->getLog2Interp(); } @@ -566,20 +587,6 @@ int FileSource::webapiSettingsPutPatch( if (channelSettingsKeys.contains("reverseAPIChannelIndex")) { settings.m_reverseAPIChannelIndex = response.getFileSourceSettings()->getReverseApiChannelIndex(); } - - MsgConfigureFileSource *msg = MsgConfigureFileSource::create(settings, force); - m_inputMessageQueue.push(msg); - - qDebug("FileSource::webapiSettingsPutPatch: forward to GUI: %p", m_guiMessageQueue); - if (m_guiMessageQueue) // forward to GUI if any - { - MsgConfigureFileSource *msgToGUI = MsgConfigureFileSource::create(settings, force); - m_guiMessageQueue->push(msgToGUI); - } - - webapiFormatChannelSettings(response, settings); - - return 200; } int FileSource::webapiReportGet( diff --git a/plugins/channeltx/filesource/filesource.h b/plugins/channeltx/filesource/filesource.h index 72b2e0cdf..70817aab6 100644 --- a/plugins/channeltx/filesource/filesource.h +++ b/plugins/channeltx/filesource/filesource.h @@ -347,6 +347,15 @@ public: SWGSDRangel::SWGChannelReport& response, QString& errorMessage); + static void webapiFormatChannelSettings( + SWGSDRangel::SWGChannelSettings& response, + const FileSourceSettings& settings); + + static void webapiUpdateChannelSettings( + FileSourceSettings& settings, + const QStringList& channelSettingsKeys, + SWGSDRangel::SWGChannelSettings& response); + /** Set center frequency given in Hz */ void setCenterFrequency(uint64_t centerFrequency) { m_centerFrequency = centerFrequency; } @@ -421,9 +430,8 @@ private: void seekFileStream(int seekMillis); void handleEOF(); void applySettings(const FileSourceSettings& settings, bool force = false); - void validateFilterChainHash(FileSourceSettings& settings); + static void validateFilterChainHash(FileSourceSettings& settings); void calculateFrequencyOffset(); - void webapiFormatChannelSettings(SWGSDRangel::SWGChannelSettings& response, const FileSourceSettings& settings); void webapiFormatChannelReport(SWGSDRangel::SWGChannelReport& response); void webapiReverseSendSettings(QList& channelSettingsKeys, const FileSourceSettings& settings, bool force); diff --git a/plugins/channeltx/localsource/localsource.cpp b/plugins/channeltx/localsource/localsource.cpp index 0ae044b65..c9993e80b 100644 --- a/plugins/channeltx/localsource/localsource.cpp +++ b/plugins/channeltx/localsource/localsource.cpp @@ -427,7 +427,34 @@ int LocalSource::webapiSettingsPutPatch( { (void) errorMessage; LocalSourceSettings settings = m_settings; + webapiUpdateChannelSettings(settings, channelSettingsKeys, response); + MsgConfigureLocalSource *msg = MsgConfigureLocalSource::create(settings, force); + m_inputMessageQueue.push(msg); + + if ((settings.m_log2Interp != m_settings.m_log2Interp) || (settings.m_filterChainHash != m_settings.m_filterChainHash) || force) + { + MsgConfigureChannelizer *msg = MsgConfigureChannelizer::create(settings.m_log2Interp, settings.m_filterChainHash); + m_inputMessageQueue.push(msg); + } + + qDebug("LocalSource::webapiSettingsPutPatch: forward to GUI: %p", m_guiMessageQueue); + if (m_guiMessageQueue) // forward to GUI if any + { + MsgConfigureLocalSource *msgToGUI = MsgConfigureLocalSource::create(settings, force); + m_guiMessageQueue->push(msgToGUI); + } + + webapiFormatChannelSettings(response, settings); + + return 200; +} + +void LocalSource::webapiUpdateChannelSettings( + LocalSourceSettings& settings, + const QStringList& channelSettingsKeys, + SWGSDRangel::SWGChannelSettings& response) +{ if (channelSettingsKeys.contains("localDeviceIndex")) { settings.m_localDeviceIndex = response.getLocalSourceSettings()->getLocalDeviceIndex(); } @@ -462,26 +489,6 @@ int LocalSource::webapiSettingsPutPatch( if (channelSettingsKeys.contains("reverseAPIChannelIndex")) { settings.m_reverseAPIChannelIndex = response.getLocalSourceSettings()->getReverseApiChannelIndex(); } - - MsgConfigureLocalSource *msg = MsgConfigureLocalSource::create(settings, force); - m_inputMessageQueue.push(msg); - - if ((settings.m_log2Interp != m_settings.m_log2Interp) || (settings.m_filterChainHash != m_settings.m_filterChainHash) || force) - { - MsgConfigureChannelizer *msg = MsgConfigureChannelizer::create(settings.m_log2Interp, settings.m_filterChainHash); - m_inputMessageQueue.push(msg); - } - - qDebug("LocalSource::webapiSettingsPutPatch: forward to GUI: %p", m_guiMessageQueue); - if (m_guiMessageQueue) // forward to GUI if any - { - MsgConfigureLocalSource *msgToGUI = MsgConfigureLocalSource::create(settings, force); - m_guiMessageQueue->push(msgToGUI); - } - - webapiFormatChannelSettings(response, settings); - - return 200; } void LocalSource::webapiFormatChannelSettings(SWGSDRangel::SWGChannelSettings& response, const LocalSourceSettings& settings) diff --git a/plugins/channeltx/localsource/localsource.h b/plugins/channeltx/localsource/localsource.h index d99dc7f7e..f04ada792 100644 --- a/plugins/channeltx/localsource/localsource.h +++ b/plugins/channeltx/localsource/localsource.h @@ -140,6 +140,15 @@ public: SWGSDRangel::SWGChannelSettings& response, QString& errorMessage); + static void webapiFormatChannelSettings( + SWGSDRangel::SWGChannelSettings& response, + const LocalSourceSettings& settings); + + static void webapiUpdateChannelSettings( + LocalSourceSettings& settings, + const QStringList& channelSettingsKeys, + SWGSDRangel::SWGChannelSettings& response); + /** Set center frequency given in Hz */ void setCenterFrequency(uint64_t centerFrequency) { m_centerFrequency = centerFrequency; } @@ -182,9 +191,8 @@ private: void applySettings(const LocalSourceSettings& settings, bool force = false); DeviceSampleSink *getLocalDevice(uint32_t index); void propagateSampleRateAndFrequency(uint32_t index); - void validateFilterChainHash(LocalSourceSettings& settings); + static void validateFilterChainHash(LocalSourceSettings& settings); void calculateFrequencyOffset(); - void webapiFormatChannelSettings(SWGSDRangel::SWGChannelSettings& response, const LocalSourceSettings& settings); void webapiReverseSendSettings(QList& channelSettingsKeys, const LocalSourceSettings& settings, bool force); private slots: diff --git a/plugins/channeltx/modam/ammod.cpp b/plugins/channeltx/modam/ammod.cpp index eb0108493..459d51abc 100644 --- a/plugins/channeltx/modam/ammod.cpp +++ b/plugins/channeltx/modam/ammod.cpp @@ -682,6 +682,11 @@ int AMMod::webapiSettingsGet( response.setAmModSettings(new SWGSDRangel::SWGAMModSettings()); response.getAmModSettings()->init(); webapiFormatChannelSettings(response, m_settings); + + SWGSDRangel::SWGCWKeyerSettings *apiCwKeyerSettings = response.getAmModSettings()->getCwKeyer(); + const CWKeyerSettings& cwKeyerSettings = m_cwKeyer.getSettings(); + CWKeyer::webapiFormatChannelSettings(apiCwKeyerSettings, cwKeyerSettings); + return 200; } @@ -693,15 +698,55 @@ int AMMod::webapiSettingsPutPatch( { (void) errorMessage; AMModSettings settings = m_settings; - bool frequencyOffsetChanged = false; + webapiUpdateChannelSettings(settings, channelSettingsKeys, response); + if (channelSettingsKeys.contains("cwKeyer")) + { + SWGSDRangel::SWGCWKeyerSettings *apiCwKeyerSettings = response.getAmModSettings()->getCwKeyer(); + CWKeyerSettings cwKeyerSettings = m_cwKeyer.getSettings(); + CWKeyer::webapiSettingsPutPatch(channelSettingsKeys, cwKeyerSettings, apiCwKeyerSettings); + + CWKeyer::MsgConfigureCWKeyer *msgCwKeyer = CWKeyer::MsgConfigureCWKeyer::create(cwKeyerSettings, force); + m_cwKeyer.getInputMessageQueue()->push(msgCwKeyer); + + if (m_guiMessageQueue) // forward to GUI if any + { + CWKeyer::MsgConfigureCWKeyer *msgCwKeyerToGUI = CWKeyer::MsgConfigureCWKeyer::create(cwKeyerSettings, force); + m_guiMessageQueue->push(msgCwKeyerToGUI); + } + } + + if (m_settings.m_inputFrequencyOffset != settings.m_inputFrequencyOffset) + { + AMMod::MsgConfigureChannelizer *msgChan = AMMod::MsgConfigureChannelizer::create( + m_audioSampleRate, settings.m_inputFrequencyOffset); + m_inputMessageQueue.push(msgChan); + } + + MsgConfigureAMMod *msg = MsgConfigureAMMod::create(settings, force); + m_inputMessageQueue.push(msg); + + if (m_guiMessageQueue) // forward to GUI if any + { + MsgConfigureAMMod *msgToGUI = MsgConfigureAMMod::create(settings, force); + m_guiMessageQueue->push(msgToGUI); + } + + webapiFormatChannelSettings(response, settings); + + return 200; +} + +void AMMod::webapiUpdateChannelSettings( + AMModSettings& settings, + const QStringList& channelSettingsKeys, + SWGSDRangel::SWGChannelSettings& response) +{ if (channelSettingsKeys.contains("channelMute")) { settings.m_channelMute = response.getAmModSettings()->getChannelMute() != 0; } - if (channelSettingsKeys.contains("inputFrequencyOffset")) - { + if (channelSettingsKeys.contains("inputFrequencyOffset")) { settings.m_inputFrequencyOffset = response.getAmModSettings()->getInputFrequencyOffset(); - frequencyOffsetChanged = true; } if (channelSettingsKeys.contains("modAFInput")) { settings.m_modAFInput = (AMModSettings::AMModInputAF) response.getAmModSettings()->getModAfInput(); @@ -745,42 +790,6 @@ int AMMod::webapiSettingsPutPatch( if (channelSettingsKeys.contains("reverseAPIChannelIndex")) { settings.m_reverseAPIChannelIndex = response.getAmModSettings()->getReverseApiChannelIndex(); } - - if (channelSettingsKeys.contains("cwKeyer")) - { - SWGSDRangel::SWGCWKeyerSettings *apiCwKeyerSettings = response.getAmModSettings()->getCwKeyer(); - CWKeyerSettings cwKeyerSettings = m_cwKeyer.getSettings(); - m_cwKeyer.webapiSettingsPutPatch(channelSettingsKeys, cwKeyerSettings, apiCwKeyerSettings); - - CWKeyer::MsgConfigureCWKeyer *msgCwKeyer = CWKeyer::MsgConfigureCWKeyer::create(cwKeyerSettings, force); - m_cwKeyer.getInputMessageQueue()->push(msgCwKeyer); - - if (m_guiMessageQueue) // forward to GUI if any - { - CWKeyer::MsgConfigureCWKeyer *msgCwKeyerToGUI = CWKeyer::MsgConfigureCWKeyer::create(cwKeyerSettings, force); - m_guiMessageQueue->push(msgCwKeyerToGUI); - } - } - - if (frequencyOffsetChanged) - { - AMMod::MsgConfigureChannelizer *msgChan = AMMod::MsgConfigureChannelizer::create( - m_audioSampleRate, settings.m_inputFrequencyOffset); - m_inputMessageQueue.push(msgChan); - } - - MsgConfigureAMMod *msg = MsgConfigureAMMod::create(settings, force); - m_inputMessageQueue.push(msg); - - if (m_guiMessageQueue) // forward to GUI if any - { - MsgConfigureAMMod *msgToGUI = MsgConfigureAMMod::create(settings, force); - m_guiMessageQueue->push(msgToGUI); - } - - webapiFormatChannelSettings(response, settings); - - return 200; } int AMMod::webapiReportGet( @@ -817,10 +826,6 @@ void AMMod::webapiFormatChannelSettings(SWGSDRangel::SWGChannelSettings& respons response.getAmModSettings()->setCwKeyer(new SWGSDRangel::SWGCWKeyerSettings); } - SWGSDRangel::SWGCWKeyerSettings *apiCwKeyerSettings = response.getAmModSettings()->getCwKeyer(); - const CWKeyerSettings& cwKeyerSettings = m_cwKeyer.getSettings(); - m_cwKeyer.webapiFormatChannelSettings(apiCwKeyerSettings, cwKeyerSettings); - if (response.getAmModSettings()->getAudioDeviceName()) { *response.getAmModSettings()->getAudioDeviceName() = settings.m_audioDeviceName; } else { diff --git a/plugins/channeltx/modam/ammod.h b/plugins/channeltx/modam/ammod.h index 9048ec7e7..a0de48bf1 100644 --- a/plugins/channeltx/modam/ammod.h +++ b/plugins/channeltx/modam/ammod.h @@ -242,6 +242,15 @@ public: SWGSDRangel::SWGChannelReport& response, QString& errorMessage); + static void webapiFormatChannelSettings( + SWGSDRangel::SWGChannelSettings& response, + const AMModSettings& settings); + + static void webapiUpdateChannelSettings( + AMModSettings& settings, + const QStringList& channelSettingsKeys, + SWGSDRangel::SWGChannelSettings& response); + double getMagSq() const { return m_magsq; } CWKeyer *getCWKeyer() { return &m_cwKeyer; } @@ -331,7 +340,6 @@ private: void modulateSample(); void openFileStream(); void seekFileStream(int seekPercentage); - void webapiFormatChannelSettings(SWGSDRangel::SWGChannelSettings& response, const AMModSettings& settings); void webapiFormatChannelReport(SWGSDRangel::SWGChannelReport& response); void webapiReverseSendSettings(QList& channelSettingsKeys, const AMModSettings& settings, bool force); void webapiReverseSendCWSettings(const CWKeyerSettings& settings); diff --git a/plugins/channeltx/modatv/atvmod.cpp b/plugins/channeltx/modatv/atvmod.cpp index a317a7c40..1b602b8c5 100644 --- a/plugins/channeltx/modatv/atvmod.cpp +++ b/plugins/channeltx/modatv/atvmod.cpp @@ -812,7 +812,7 @@ void ATVMod::openImage(const QString& fileName) if (m_imageOK) { - m_imageFileName = fileName; + m_settings.m_imageFileName = fileName; m_imageFromFile.copyTo(m_imageOriginal); if (m_settings.m_showOverlayText) { @@ -823,7 +823,7 @@ void ATVMod::openImage(const QString& fileName) } else { - m_imageFileName.clear(); + m_settings.m_imageFileName.clear(); qDebug("ATVMod::openImage: cannot open image file %s", qPrintable(fileName)); } } @@ -836,7 +836,7 @@ void ATVMod::openVideo(const QString& fileName) if (m_videoOK) { - m_videoFileName = fileName; + m_settings.m_videoFileName = fileName; m_videoFPS = m_video.get(CV_CAP_PROP_FPS); m_videoWidth = (int) m_video.get(CV_CAP_PROP_FRAME_WIDTH); m_videoHeight = (int) m_video.get(CV_CAP_PROP_FRAME_HEIGHT); @@ -864,7 +864,7 @@ void ATVMod::openVideo(const QString& fileName) } else { - m_videoFileName.clear(); + m_settings.m_videoFileName.clear(); qDebug("ATVMod::openVideo: cannot open video file %s", qPrintable(fileName)); } } @@ -1469,15 +1469,15 @@ void ATVMod::webapiFormatChannelSettings(SWGSDRangel::SWGChannelSettings& respon } if (response.getAtvModSettings()->getImageFileName()) { - *response.getAtvModSettings()->getImageFileName() = m_imageFileName; + *response.getAtvModSettings()->getImageFileName() = settings.m_imageFileName; } else { - response.getAtvModSettings()->setImageFileName(new QString(m_imageFileName)); + response.getAtvModSettings()->setImageFileName(new QString(settings.m_imageFileName)); } if (response.getAtvModSettings()->getVideoFileName()) { - *response.getAtvModSettings()->getVideoFileName() = m_videoFileName; + *response.getAtvModSettings()->getVideoFileName() = settings.m_videoFileName; } else { - response.getAtvModSettings()->setVideoFileName(new QString(m_videoFileName)); + response.getAtvModSettings()->setVideoFileName(new QString(settings.m_videoFileName)); } response.getAtvModSettings()->setUseReverseApi(settings.m_useReverseAPI ? 1 : 0); diff --git a/plugins/channeltx/modatv/atvmod.h b/plugins/channeltx/modatv/atvmod.h index 18075b5c4..c0a55fcac 100644 --- a/plugins/channeltx/modatv/atvmod.h +++ b/plugins/channeltx/modatv/atvmod.h @@ -396,6 +396,15 @@ public: SWGSDRangel::SWGChannelReport& response, QString& errorMessage); + static void webapiFormatChannelSettings( + SWGSDRangel::SWGChannelSettings& response, + const ATVModSettings& settings); + + static void webapiUpdateChannelSettings( + ATVModSettings& settings, + const QStringList& channelSettingsKeys, + SWGSDRangel::SWGChannelSettings& response); + int getEffectiveSampleRate() const { return m_tvSampleRate; }; double getMagSq() const { return m_movingAverage.asDouble(); } void getCameraNumbers(std::vector& numbers); @@ -574,7 +583,6 @@ private: void resizeCamera(); void mixImageAndText(cv::Mat& image); - void webapiFormatChannelSettings(SWGSDRangel::SWGChannelSettings& response, const ATVModSettings& settings); void webapiFormatChannelReport(SWGSDRangel::SWGChannelReport& response); void webapiReverseSendSettings(QList& channelSettingsKeys, const ATVModSettings& settings, bool force); diff --git a/plugins/channeltx/modatv/atvmodsettings.cpp b/plugins/channeltx/modatv/atvmodsettings.cpp index ba1ad66e8..3df412973 100644 --- a/plugins/channeltx/modatv/atvmodsettings.cpp +++ b/plugins/channeltx/modatv/atvmodsettings.cpp @@ -87,6 +87,8 @@ QByteArray ATVModSettings::serialize() const s.writeU32(19, m_reverseAPIPort); s.writeU32(20, m_reverseAPIDeviceIndex); s.writeU32(21, m_reverseAPIChannelIndex); + s.writeString(22, m_imageFileName); + s.writeString(23, m_videoFileName); return s.final(); } @@ -150,6 +152,9 @@ bool ATVModSettings::deserialize(const QByteArray& data) m_reverseAPIDeviceIndex = utmp > 99 ? 99 : utmp; d.readU32(21, &utmp, 0); m_reverseAPIChannelIndex = utmp > 99 ? 99 : utmp; + d.readString(22, &m_imageFileName); + d.readString(23, &m_videoFileName); + return true; } else diff --git a/plugins/channeltx/modatv/atvmodsettings.h b/plugins/channeltx/modatv/atvmodsettings.h index f4358f578..29cd0b1bb 100644 --- a/plugins/channeltx/modatv/atvmodsettings.h +++ b/plugins/channeltx/modatv/atvmodsettings.h @@ -80,6 +80,8 @@ struct ATVModSettings QString m_overlayText; quint32 m_rgbColor; QString m_title; + QString m_imageFileName; + QString m_videoFileName; bool m_useReverseAPI; QString m_reverseAPIAddress; uint16_t m_reverseAPIPort; diff --git a/plugins/channeltx/modfreedv/freedvmod.cpp b/plugins/channeltx/modfreedv/freedvmod.cpp index d065dba82..16f1eb633 100644 --- a/plugins/channeltx/modfreedv/freedvmod.cpp +++ b/plugins/channeltx/modfreedv/freedvmod.cpp @@ -842,6 +842,11 @@ int FreeDVMod::webapiSettingsGet( response.setFreeDvModSettings(new SWGSDRangel::SWGFreeDVModSettings()); response.getFreeDvModSettings()->init(); webapiFormatChannelSettings(response, m_settings); + + SWGSDRangel::SWGCWKeyerSettings *apiCwKeyerSettings = response.getFreeDvModSettings()->getCwKeyer(); + const CWKeyerSettings& cwKeyerSettings = m_cwKeyer.getSettings(); + CWKeyer::webapiFormatChannelSettings(apiCwKeyerSettings, cwKeyerSettings); + return 200; } @@ -853,12 +858,52 @@ int FreeDVMod::webapiSettingsPutPatch( { (void) errorMessage; FreeDVModSettings settings = m_settings; - bool frequencyOffsetChanged = false; + webapiUpdateChannelSettings(settings, channelSettingsKeys, response); - if (channelSettingsKeys.contains("inputFrequencyOffset")) + if (channelSettingsKeys.contains("cwKeyer")) { + SWGSDRangel::SWGCWKeyerSettings *apiCwKeyerSettings = response.getFreeDvModSettings()->getCwKeyer(); + CWKeyerSettings cwKeyerSettings = m_cwKeyer.getSettings(); + CWKeyer::webapiSettingsPutPatch(channelSettingsKeys, cwKeyerSettings, apiCwKeyerSettings); + + CWKeyer::MsgConfigureCWKeyer *msgCwKeyer = CWKeyer::MsgConfigureCWKeyer::create(cwKeyerSettings, force); + m_cwKeyer.getInputMessageQueue()->push(msgCwKeyer); + + if (m_guiMessageQueue) // forward to GUI if any + { + CWKeyer::MsgConfigureCWKeyer *msgCwKeyerToGUI = CWKeyer::MsgConfigureCWKeyer::create(cwKeyerSettings, force); + m_guiMessageQueue->push(msgCwKeyerToGUI); + } + } + + if (m_settings.m_inputFrequencyOffset != settings.m_inputFrequencyOffset) + { + FreeDVMod::MsgConfigureChannelizer *msgChan = FreeDVMod::MsgConfigureChannelizer::create( + m_audioSampleRate, settings.m_inputFrequencyOffset); + m_inputMessageQueue.push(msgChan); + } + + MsgConfigureFreeDVMod *msg = MsgConfigureFreeDVMod::create(settings, force); + m_inputMessageQueue.push(msg); + + if (m_guiMessageQueue) // forward to GUI if any + { + MsgConfigureFreeDVMod *msgToGUI = MsgConfigureFreeDVMod::create(settings, force); + m_guiMessageQueue->push(msgToGUI); + } + + webapiFormatChannelSettings(response, settings); + + return 200; +} + +void FreeDVMod::webapiUpdateChannelSettings( + FreeDVModSettings& settings, + const QStringList& channelSettingsKeys, + SWGSDRangel::SWGChannelSettings& response) +{ + if (channelSettingsKeys.contains("inputFrequencyOffset")) { settings.m_inputFrequencyOffset = response.getFreeDvModSettings()->getInputFrequencyOffset(); - frequencyOffsetChanged = true; } if (channelSettingsKeys.contains("toneFrequency")) { settings.m_toneFrequency = response.getFreeDvModSettings()->getToneFrequency(); @@ -908,42 +953,6 @@ int FreeDVMod::webapiSettingsPutPatch( if (channelSettingsKeys.contains("reverseAPIChannelIndex")) { settings.m_reverseAPIChannelIndex = response.getFreeDvModSettings()->getReverseApiChannelIndex(); } - - if (channelSettingsKeys.contains("cwKeyer")) - { - SWGSDRangel::SWGCWKeyerSettings *apiCwKeyerSettings = response.getFreeDvModSettings()->getCwKeyer(); - CWKeyerSettings cwKeyerSettings = m_cwKeyer.getSettings(); - m_cwKeyer.webapiSettingsPutPatch(channelSettingsKeys, cwKeyerSettings, apiCwKeyerSettings); - - CWKeyer::MsgConfigureCWKeyer *msgCwKeyer = CWKeyer::MsgConfigureCWKeyer::create(cwKeyerSettings, force); - m_cwKeyer.getInputMessageQueue()->push(msgCwKeyer); - - if (m_guiMessageQueue) // forward to GUI if any - { - CWKeyer::MsgConfigureCWKeyer *msgCwKeyerToGUI = CWKeyer::MsgConfigureCWKeyer::create(cwKeyerSettings, force); - m_guiMessageQueue->push(msgCwKeyerToGUI); - } - } - - if (frequencyOffsetChanged) - { - FreeDVMod::MsgConfigureChannelizer *msgChan = FreeDVMod::MsgConfigureChannelizer::create( - m_audioSampleRate, settings.m_inputFrequencyOffset); - m_inputMessageQueue.push(msgChan); - } - - MsgConfigureFreeDVMod *msg = MsgConfigureFreeDVMod::create(settings, force); - m_inputMessageQueue.push(msg); - - if (m_guiMessageQueue) // forward to GUI if any - { - MsgConfigureFreeDVMod *msgToGUI = MsgConfigureFreeDVMod::create(settings, force); - m_guiMessageQueue->push(msgToGUI); - } - - webapiFormatChannelSettings(response, settings); - - return 200; } int FreeDVMod::webapiReportGet( @@ -987,10 +996,6 @@ void FreeDVMod::webapiFormatChannelSettings(SWGSDRangel::SWGChannelSettings& res response.getFreeDvModSettings()->setCwKeyer(new SWGSDRangel::SWGCWKeyerSettings); } - SWGSDRangel::SWGCWKeyerSettings *apiCwKeyerSettings = response.getFreeDvModSettings()->getCwKeyer(); - const CWKeyerSettings& cwKeyerSettings = m_cwKeyer.getSettings(); - m_cwKeyer.webapiFormatChannelSettings(apiCwKeyerSettings, cwKeyerSettings); - response.getFreeDvModSettings()->setUseReverseApi(settings.m_useReverseAPI ? 1 : 0); if (response.getFreeDvModSettings()->getReverseApiAddress()) { diff --git a/plugins/channeltx/modfreedv/freedvmod.h b/plugins/channeltx/modfreedv/freedvmod.h index 9f657b6a4..a03ae0fc1 100644 --- a/plugins/channeltx/modfreedv/freedvmod.h +++ b/plugins/channeltx/modfreedv/freedvmod.h @@ -248,6 +248,15 @@ public: SWGSDRangel::SWGChannelReport& response, QString& errorMessage); + static void webapiFormatChannelSettings( + SWGSDRangel::SWGChannelSettings& response, + const FreeDVModSettings& settings); + + static void webapiUpdateChannelSettings( + FreeDVModSettings& settings, + const QStringList& channelSettingsKeys, + SWGSDRangel::SWGChannelSettings& response); + uint32_t getAudioSampleRate() const { return m_audioSampleRate; } uint32_t getModemSampleRate() const { return m_modemSampleRate; } double getMagSq() const { return m_magsq; } @@ -352,7 +361,6 @@ private: void modulateSample(); void openFileStream(); void seekFileStream(int seekPercentage); - void webapiFormatChannelSettings(SWGSDRangel::SWGChannelSettings& response, const FreeDVModSettings& settings); void webapiFormatChannelReport(SWGSDRangel::SWGChannelReport& response); void webapiReverseSendSettings(QList& channelSettingsKeys, const FreeDVModSettings& settings, bool force); void webapiReverseSendCWSettings(const CWKeyerSettings& settings); diff --git a/plugins/channeltx/modnfm/nfmmod.cpp b/plugins/channeltx/modnfm/nfmmod.cpp index 1a25d652d..5b0cb0437 100644 --- a/plugins/channeltx/modnfm/nfmmod.cpp +++ b/plugins/channeltx/modnfm/nfmmod.cpp @@ -727,6 +727,11 @@ int NFMMod::webapiSettingsGet( response.setNfmModSettings(new SWGSDRangel::SWGNFMModSettings()); response.getNfmModSettings()->init(); webapiFormatChannelSettings(response, m_settings); + + SWGSDRangel::SWGCWKeyerSettings *apiCwKeyerSettings = response.getNfmModSettings()->getCwKeyer(); + const CWKeyerSettings& cwKeyerSettings = m_cwKeyer.getSettings(); + CWKeyer::webapiFormatChannelSettings(apiCwKeyerSettings, cwKeyerSettings); + return 200; } @@ -738,12 +743,50 @@ int NFMMod::webapiSettingsPutPatch( { (void) errorMessage; NFMModSettings settings = m_settings; - bool frequencyOffsetChanged = false; + webapiUpdateChannelSettings(settings, channelSettingsKeys, response); -// for (int i = 0; i < channelSettingsKeys.size(); i++) { -// qDebug("NFMMod::webapiSettingsPutPatch: settingKey: %s", qPrintable(channelSettingsKeys.at(i))); -// } + if (channelSettingsKeys.contains("cwKeyer")) + { + SWGSDRangel::SWGCWKeyerSettings *apiCwKeyerSettings = response.getNfmModSettings()->getCwKeyer(); + CWKeyerSettings cwKeyerSettings = m_cwKeyer.getSettings(); + CWKeyer::webapiSettingsPutPatch(channelSettingsKeys, cwKeyerSettings, apiCwKeyerSettings); + CWKeyer::MsgConfigureCWKeyer *msgCwKeyer = CWKeyer::MsgConfigureCWKeyer::create(cwKeyerSettings, force); + m_cwKeyer.getInputMessageQueue()->push(msgCwKeyer); + + if (m_guiMessageQueue) // forward to GUI if any + { + CWKeyer::MsgConfigureCWKeyer *msgCwKeyerToGUI = CWKeyer::MsgConfigureCWKeyer::create(cwKeyerSettings, force); + m_guiMessageQueue->push(msgCwKeyerToGUI); + } + } + + if (m_settings.m_inputFrequencyOffset != settings.m_inputFrequencyOffset) + { + NFMMod::MsgConfigureChannelizer *msgChan = NFMMod::MsgConfigureChannelizer::create( + m_audioSampleRate, settings.m_inputFrequencyOffset); + m_inputMessageQueue.push(msgChan); + } + + MsgConfigureNFMMod *msg = MsgConfigureNFMMod::create(settings, force); + m_inputMessageQueue.push(msg); + + if (m_guiMessageQueue) // forward to GUI if any + { + MsgConfigureNFMMod *msgToGUI = MsgConfigureNFMMod::create(settings, force); + m_guiMessageQueue->push(msgToGUI); + } + + webapiFormatChannelSettings(response, settings); + + return 200; +} + +void NFMMod::webapiUpdateChannelSettings( + NFMModSettings& settings, + const QStringList& channelSettingsKeys, + SWGSDRangel::SWGChannelSettings& response) +{ if (channelSettingsKeys.contains("afBandwidth")) { settings.m_afBandwidth = response.getNfmModSettings()->getAfBandwidth(); } @@ -759,10 +802,8 @@ int NFMMod::webapiSettingsPutPatch( if (channelSettingsKeys.contains("fmDeviation")) { settings.m_fmDeviation = response.getNfmModSettings()->getFmDeviation(); } - if (channelSettingsKeys.contains("inputFrequencyOffset")) - { + if (channelSettingsKeys.contains("inputFrequencyOffset")) { settings.m_inputFrequencyOffset = response.getNfmModSettings()->getInputFrequencyOffset(); - frequencyOffsetChanged = true; } if (channelSettingsKeys.contains("modAFInput")) { settings.m_modAFInput = (NFMModSettings::NFMModInputAF) response.getNfmModSettings()->getModAfInput(); @@ -800,42 +841,6 @@ int NFMMod::webapiSettingsPutPatch( if (channelSettingsKeys.contains("reverseAPIChannelIndex")) { settings.m_reverseAPIChannelIndex = response.getNfmModSettings()->getReverseApiChannelIndex(); } - - if (channelSettingsKeys.contains("cwKeyer")) - { - SWGSDRangel::SWGCWKeyerSettings *apiCwKeyerSettings = response.getNfmModSettings()->getCwKeyer(); - CWKeyerSettings cwKeyerSettings = m_cwKeyer.getSettings(); - m_cwKeyer.webapiSettingsPutPatch(channelSettingsKeys, cwKeyerSettings, apiCwKeyerSettings); - - CWKeyer::MsgConfigureCWKeyer *msgCwKeyer = CWKeyer::MsgConfigureCWKeyer::create(cwKeyerSettings, force); - m_cwKeyer.getInputMessageQueue()->push(msgCwKeyer); - - if (m_guiMessageQueue) // forward to GUI if any - { - CWKeyer::MsgConfigureCWKeyer *msgCwKeyerToGUI = CWKeyer::MsgConfigureCWKeyer::create(cwKeyerSettings, force); - m_guiMessageQueue->push(msgCwKeyerToGUI); - } - } - - if (frequencyOffsetChanged) - { - NFMMod::MsgConfigureChannelizer *msgChan = NFMMod::MsgConfigureChannelizer::create( - m_audioSampleRate, settings.m_inputFrequencyOffset); - m_inputMessageQueue.push(msgChan); - } - - MsgConfigureNFMMod *msg = MsgConfigureNFMMod::create(settings, force); - m_inputMessageQueue.push(msg); - - if (m_guiMessageQueue) // forward to GUI if any - { - MsgConfigureNFMMod *msgToGUI = MsgConfigureNFMMod::create(settings, force); - m_guiMessageQueue->push(msgToGUI); - } - - webapiFormatChannelSettings(response, settings); - - return 200; } int NFMMod::webapiReportGet( @@ -875,18 +880,12 @@ void NFMMod::webapiFormatChannelSettings(SWGSDRangel::SWGChannelSettings& respon response.getNfmModSettings()->setCwKeyer(new SWGSDRangel::SWGCWKeyerSettings); } - SWGSDRangel::SWGCWKeyerSettings *apiCwKeyerSettings = response.getNfmModSettings()->getCwKeyer(); - const CWKeyerSettings& cwKeyerSettings = m_cwKeyer.getSettings(); - m_cwKeyer.webapiFormatChannelSettings(apiCwKeyerSettings, cwKeyerSettings); - if (response.getNfmModSettings()->getAudioDeviceName()) { *response.getNfmModSettings()->getAudioDeviceName() = settings.m_audioDeviceName; } else { response.getNfmModSettings()->setAudioDeviceName(new QString(settings.m_audioDeviceName)); } - apiCwKeyerSettings->setWpm(cwKeyerSettings.m_wpm); - response.getNfmModSettings()->setUseReverseApi(settings.m_useReverseAPI ? 1 : 0); if (response.getNfmModSettings()->getReverseApiAddress()) { diff --git a/plugins/channeltx/modnfm/nfmmod.h b/plugins/channeltx/modnfm/nfmmod.h index ccd71b2c3..fcdc3acc3 100644 --- a/plugins/channeltx/modnfm/nfmmod.h +++ b/plugins/channeltx/modnfm/nfmmod.h @@ -244,6 +244,15 @@ public: SWGSDRangel::SWGChannelReport& response, QString& errorMessage); + static void webapiFormatChannelSettings( + SWGSDRangel::SWGChannelSettings& response, + const NFMModSettings& settings); + + static void webapiUpdateChannelSettings( + NFMModSettings& settings, + const QStringList& channelSettingsKeys, + SWGSDRangel::SWGChannelSettings& response); + double getMagSq() const { return m_magsq; } CWKeyer *getCWKeyer() { return &m_cwKeyer; } @@ -339,7 +348,6 @@ private: void modulateSample(); void openFileStream(); void seekFileStream(int seekPercentage); - void webapiFormatChannelSettings(SWGSDRangel::SWGChannelSettings& response, const NFMModSettings& settings); void webapiFormatChannelReport(SWGSDRangel::SWGChannelReport& response); void webapiReverseSendSettings(QList& channelSettingsKeys, const NFMModSettings& settings, bool force); void webapiReverseSendCWSettings(const CWKeyerSettings& settings); diff --git a/plugins/channeltx/modssb/ssbmod.cpp b/plugins/channeltx/modssb/ssbmod.cpp index e77c81cef..babe750f1 100644 --- a/plugins/channeltx/modssb/ssbmod.cpp +++ b/plugins/channeltx/modssb/ssbmod.cpp @@ -1015,6 +1015,11 @@ int SSBMod::webapiSettingsGet( response.setSsbModSettings(new SWGSDRangel::SWGSSBModSettings()); response.getSsbModSettings()->init(); webapiFormatChannelSettings(response, m_settings); + + SWGSDRangel::SWGCWKeyerSettings *apiCwKeyerSettings = response.getSsbModSettings()->getCwKeyer(); + const CWKeyerSettings& cwKeyerSettings = m_cwKeyer.getSettings(); + CWKeyer::webapiFormatChannelSettings(apiCwKeyerSettings, cwKeyerSettings); + return 200; } @@ -1026,12 +1031,52 @@ int SSBMod::webapiSettingsPutPatch( { (void) errorMessage; SSBModSettings settings = m_settings; - bool frequencyOffsetChanged = false; + webapiUpdateChannelSettings(settings, channelSettingsKeys, response); - if (channelSettingsKeys.contains("inputFrequencyOffset")) + if (channelSettingsKeys.contains("cwKeyer")) { + SWGSDRangel::SWGCWKeyerSettings *apiCwKeyerSettings = response.getSsbModSettings()->getCwKeyer(); + CWKeyerSettings cwKeyerSettings = m_cwKeyer.getSettings(); + CWKeyer::webapiSettingsPutPatch(channelSettingsKeys, cwKeyerSettings, apiCwKeyerSettings); + + CWKeyer::MsgConfigureCWKeyer *msgCwKeyer = CWKeyer::MsgConfigureCWKeyer::create(cwKeyerSettings, force); + m_cwKeyer.getInputMessageQueue()->push(msgCwKeyer); + + if (m_guiMessageQueue) // forward to GUI if any + { + CWKeyer::MsgConfigureCWKeyer *msgCwKeyerToGUI = CWKeyer::MsgConfigureCWKeyer::create(cwKeyerSettings, force); + m_guiMessageQueue->push(msgCwKeyerToGUI); + } + } + + if (m_settings.m_inputFrequencyOffset != settings.m_inputFrequencyOffset) + { + SSBMod::MsgConfigureChannelizer *msgChan = SSBMod::MsgConfigureChannelizer::create( + m_audioSampleRate, settings.m_inputFrequencyOffset); + m_inputMessageQueue.push(msgChan); + } + + MsgConfigureSSBMod *msg = MsgConfigureSSBMod::create(settings, force); + m_inputMessageQueue.push(msg); + + if (m_guiMessageQueue) // forward to GUI if any + { + MsgConfigureSSBMod *msgToGUI = MsgConfigureSSBMod::create(settings, force); + m_guiMessageQueue->push(msgToGUI); + } + + webapiFormatChannelSettings(response, settings); + + return 200; +} + +void SSBMod::webapiUpdateChannelSettings( + SSBModSettings& settings, + const QStringList& channelSettingsKeys, + SWGSDRangel::SWGChannelSettings& response) +{ + if (channelSettingsKeys.contains("inputFrequencyOffset")) { settings.m_inputFrequencyOffset = response.getSsbModSettings()->getInputFrequencyOffset(); - frequencyOffsetChanged = true; } if (channelSettingsKeys.contains("bandwidth")) { settings.m_bandwidth = response.getSsbModSettings()->getBandwidth(); @@ -1096,42 +1141,6 @@ int SSBMod::webapiSettingsPutPatch( if (channelSettingsKeys.contains("reverseAPIChannelIndex")) { settings.m_reverseAPIChannelIndex = response.getSsbModSettings()->getReverseApiChannelIndex(); } - - if (channelSettingsKeys.contains("cwKeyer")) - { - SWGSDRangel::SWGCWKeyerSettings *apiCwKeyerSettings = response.getSsbModSettings()->getCwKeyer(); - CWKeyerSettings cwKeyerSettings = m_cwKeyer.getSettings(); - m_cwKeyer.webapiSettingsPutPatch(channelSettingsKeys, cwKeyerSettings, apiCwKeyerSettings); - - CWKeyer::MsgConfigureCWKeyer *msgCwKeyer = CWKeyer::MsgConfigureCWKeyer::create(cwKeyerSettings, force); - m_cwKeyer.getInputMessageQueue()->push(msgCwKeyer); - - if (m_guiMessageQueue) // forward to GUI if any - { - CWKeyer::MsgConfigureCWKeyer *msgCwKeyerToGUI = CWKeyer::MsgConfigureCWKeyer::create(cwKeyerSettings, force); - m_guiMessageQueue->push(msgCwKeyerToGUI); - } - } - - if (frequencyOffsetChanged) - { - SSBMod::MsgConfigureChannelizer *msgChan = SSBMod::MsgConfigureChannelizer::create( - m_audioSampleRate, settings.m_inputFrequencyOffset); - m_inputMessageQueue.push(msgChan); - } - - MsgConfigureSSBMod *msg = MsgConfigureSSBMod::create(settings, force); - m_inputMessageQueue.push(msg); - - if (m_guiMessageQueue) // forward to GUI if any - { - MsgConfigureSSBMod *msgToGUI = MsgConfigureSSBMod::create(settings, force); - m_guiMessageQueue->push(msgToGUI); - } - - webapiFormatChannelSettings(response, settings); - - return 200; } int SSBMod::webapiReportGet( @@ -1180,10 +1189,6 @@ void SSBMod::webapiFormatChannelSettings(SWGSDRangel::SWGChannelSettings& respon response.getSsbModSettings()->setCwKeyer(new SWGSDRangel::SWGCWKeyerSettings); } - SWGSDRangel::SWGCWKeyerSettings *apiCwKeyerSettings = response.getSsbModSettings()->getCwKeyer(); - const CWKeyerSettings& cwKeyerSettings = m_cwKeyer.getSettings(); - m_cwKeyer.webapiFormatChannelSettings(apiCwKeyerSettings, cwKeyerSettings); - response.getSsbModSettings()->setUseReverseApi(settings.m_useReverseAPI ? 1 : 0); if (response.getSsbModSettings()->getReverseApiAddress()) { diff --git a/plugins/channeltx/modssb/ssbmod.h b/plugins/channeltx/modssb/ssbmod.h index 9e49ec93f..2c6a137ac 100644 --- a/plugins/channeltx/modssb/ssbmod.h +++ b/plugins/channeltx/modssb/ssbmod.h @@ -246,6 +246,15 @@ public: SWGSDRangel::SWGChannelReport& response, QString& errorMessage); + static void webapiFormatChannelSettings( + SWGSDRangel::SWGChannelSettings& response, + const SSBModSettings& settings); + + static void webapiUpdateChannelSettings( + SSBModSettings& settings, + const QStringList& channelSettingsKeys, + SWGSDRangel::SWGChannelSettings& response); + uint32_t getAudioSampleRate() const { return m_audioSampleRate; } double getMagSq() const { return m_magsq; } @@ -353,7 +362,6 @@ private: void modulateSample(); void openFileStream(); void seekFileStream(int seekPercentage); - void webapiFormatChannelSettings(SWGSDRangel::SWGChannelSettings& response, const SSBModSettings& settings); void webapiFormatChannelReport(SWGSDRangel::SWGChannelReport& response); void webapiReverseSendSettings(QList& channelSettingsKeys, const SSBModSettings& settings, bool force); void webapiReverseSendCWSettings(const CWKeyerSettings& settings); diff --git a/plugins/channeltx/modwfm/wfmmod.cpp b/plugins/channeltx/modwfm/wfmmod.cpp index 868b7a029..fa1b9261f 100644 --- a/plugins/channeltx/modwfm/wfmmod.cpp +++ b/plugins/channeltx/modwfm/wfmmod.cpp @@ -608,6 +608,11 @@ int WFMMod::webapiSettingsGet( response.setWfmModSettings(new SWGSDRangel::SWGWFMModSettings()); response.getWfmModSettings()->init(); webapiFormatChannelSettings(response, m_settings); + + SWGSDRangel::SWGCWKeyerSettings *apiCwKeyerSettings = response.getWfmModSettings()->getCwKeyer(); + const CWKeyerSettings& cwKeyerSettings = m_cwKeyer.getSettings(); + CWKeyer::webapiFormatChannelSettings(apiCwKeyerSettings, cwKeyerSettings); + return 200; } @@ -619,15 +624,56 @@ int WFMMod::webapiSettingsPutPatch( { (void) errorMessage; WFMModSettings settings = m_settings; - bool channelizerChange = false; + webapiUpdateChannelSettings(settings, channelSettingsKeys, response); + if (channelSettingsKeys.contains("cwKeyer")) + { + SWGSDRangel::SWGCWKeyerSettings *apiCwKeyerSettings = response.getWfmModSettings()->getCwKeyer(); + CWKeyerSettings cwKeyerSettings = m_cwKeyer.getSettings(); + CWKeyer::webapiSettingsPutPatch(channelSettingsKeys, cwKeyerSettings, apiCwKeyerSettings); + + CWKeyer::MsgConfigureCWKeyer *msgCwKeyer = CWKeyer::MsgConfigureCWKeyer::create(cwKeyerSettings, force); + m_cwKeyer.getInputMessageQueue()->push(msgCwKeyer); + + if (m_guiMessageQueue) // forward to GUI if any + { + CWKeyer::MsgConfigureCWKeyer *msgCwKeyerToGUI = CWKeyer::MsgConfigureCWKeyer::create(cwKeyerSettings, force); + m_guiMessageQueue->push(msgCwKeyerToGUI); + } + } + + if ((m_settings.m_inputFrequencyOffset != settings.m_inputFrequencyOffset) + ||(m_settings.m_rfBandwidth != settings.m_rfBandwidth)) + { + WFMMod::MsgConfigureChannelizer *msgChan = WFMMod::MsgConfigureChannelizer::create( + settings.m_rfBandwidth, settings.m_inputFrequencyOffset); + m_inputMessageQueue.push(msgChan); + } + + MsgConfigureWFMMod *msg = MsgConfigureWFMMod::create(settings, force); + m_inputMessageQueue.push(msg); + + if (m_guiMessageQueue) // forward to GUI if any + { + MsgConfigureWFMMod *msgToGUI = MsgConfigureWFMMod::create(settings, force); + m_guiMessageQueue->push(msgToGUI); + } + + webapiFormatChannelSettings(response, settings); + + return 200; +} + +void WFMMod::webapiUpdateChannelSettings( + WFMModSettings& settings, + const QStringList& channelSettingsKeys, + SWGSDRangel::SWGChannelSettings& response) +{ if (channelSettingsKeys.contains("channelMute")) { settings.m_channelMute = response.getWfmModSettings()->getChannelMute() != 0; } - if (channelSettingsKeys.contains("inputFrequencyOffset")) - { + if (channelSettingsKeys.contains("inputFrequencyOffset")) { settings.m_inputFrequencyOffset = response.getWfmModSettings()->getInputFrequencyOffset(); - channelizerChange = true; } if (channelSettingsKeys.contains("modAFInput")) { settings.m_modAFInput = (WFMModSettings::WFMModInputAF) response.getWfmModSettings()->getModAfInput(); @@ -637,7 +683,6 @@ int WFMMod::webapiSettingsPutPatch( } if (channelSettingsKeys.contains("rfBandwidth")) { settings.m_rfBandwidth = response.getWfmModSettings()->getRfBandwidth(); - channelizerChange = true; } if (channelSettingsKeys.contains("afBandwidth")) { settings.m_afBandwidth = response.getWfmModSettings()->getAfBandwidth(); @@ -672,42 +717,6 @@ int WFMMod::webapiSettingsPutPatch( if (channelSettingsKeys.contains("reverseAPIChannelIndex")) { settings.m_reverseAPIChannelIndex = response.getWfmModSettings()->getReverseApiChannelIndex(); } - - if (channelSettingsKeys.contains("cwKeyer")) - { - SWGSDRangel::SWGCWKeyerSettings *apiCwKeyerSettings = response.getWfmModSettings()->getCwKeyer(); - CWKeyerSettings cwKeyerSettings = m_cwKeyer.getSettings(); - m_cwKeyer.webapiSettingsPutPatch(channelSettingsKeys, cwKeyerSettings, apiCwKeyerSettings); - - CWKeyer::MsgConfigureCWKeyer *msgCwKeyer = CWKeyer::MsgConfigureCWKeyer::create(cwKeyerSettings, force); - m_cwKeyer.getInputMessageQueue()->push(msgCwKeyer); - - if (m_guiMessageQueue) // forward to GUI if any - { - CWKeyer::MsgConfigureCWKeyer *msgCwKeyerToGUI = CWKeyer::MsgConfigureCWKeyer::create(cwKeyerSettings, force); - m_guiMessageQueue->push(msgCwKeyerToGUI); - } - } - - if (channelizerChange) - { - WFMMod::MsgConfigureChannelizer *msgChan = WFMMod::MsgConfigureChannelizer::create( - settings.m_rfBandwidth, settings.m_inputFrequencyOffset); - m_inputMessageQueue.push(msgChan); - } - - MsgConfigureWFMMod *msg = MsgConfigureWFMMod::create(settings, force); - m_inputMessageQueue.push(msg); - - if (m_guiMessageQueue) // forward to GUI if any - { - MsgConfigureWFMMod *msgToGUI = MsgConfigureWFMMod::create(settings, force); - m_guiMessageQueue->push(msgToGUI); - } - - webapiFormatChannelSettings(response, settings); - - return 200; } int WFMMod::webapiReportGet( @@ -745,10 +754,6 @@ void WFMMod::webapiFormatChannelSettings(SWGSDRangel::SWGChannelSettings& respon response.getWfmModSettings()->setCwKeyer(new SWGSDRangel::SWGCWKeyerSettings); } - SWGSDRangel::SWGCWKeyerSettings *apiCwKeyerSettings = response.getWfmModSettings()->getCwKeyer(); - const CWKeyerSettings& cwKeyerSettings = m_cwKeyer.getSettings(); - m_cwKeyer.webapiFormatChannelSettings(apiCwKeyerSettings, cwKeyerSettings); - if (response.getWfmModSettings()->getAudioDeviceName()) { *response.getWfmModSettings()->getAudioDeviceName() = settings.m_audioDeviceName; } else { diff --git a/plugins/channeltx/modwfm/wfmmod.h b/plugins/channeltx/modwfm/wfmmod.h index c6370bc61..97c160172 100644 --- a/plugins/channeltx/modwfm/wfmmod.h +++ b/plugins/channeltx/modwfm/wfmmod.h @@ -243,6 +243,15 @@ public: SWGSDRangel::SWGChannelReport& response, QString& errorMessage); + static void webapiFormatChannelSettings( + SWGSDRangel::SWGChannelSettings& response, + const WFMModSettings& settings); + + static void webapiUpdateChannelSettings( + WFMModSettings& settings, + const QStringList& channelSettingsKeys, + SWGSDRangel::SWGChannelSettings& response); + double getMagSq() const { return m_magsq; } CWKeyer *getCWKeyer() { return &m_cwKeyer; } @@ -323,7 +332,6 @@ private: void calculateLevel(const Real& sample); void openFileStream(); void seekFileStream(int seekPercentage); - void webapiFormatChannelSettings(SWGSDRangel::SWGChannelSettings& response, const WFMModSettings& settings); void webapiFormatChannelReport(SWGSDRangel::SWGChannelReport& response); void webapiReverseSendSettings(QList& channelSettingsKeys, const WFMModSettings& settings, bool force); void webapiReverseSendCWSettings(const CWKeyerSettings& settings); diff --git a/plugins/channeltx/remotesource/remotesource.cpp b/plugins/channeltx/remotesource/remotesource.cpp index cab97a2ff..de9266655 100644 --- a/plugins/channeltx/remotesource/remotesource.cpp +++ b/plugins/channeltx/remotesource/remotesource.cpp @@ -404,7 +404,28 @@ int RemoteSource::webapiSettingsPutPatch( { (void) errorMessage; RemoteSourceSettings settings = m_settings; + webapiUpdateChannelSettings(settings, channelSettingsKeys, response); + MsgConfigureRemoteSource *msg = MsgConfigureRemoteSource::create(settings, force); + m_inputMessageQueue.push(msg); + + qDebug("RemoteSource::webapiSettingsPutPatch: forward to GUI: %p", m_guiMessageQueue); + if (m_guiMessageQueue) // forward to GUI if any + { + MsgConfigureRemoteSource *msgToGUI = MsgConfigureRemoteSource::create(settings, force); + m_guiMessageQueue->push(msgToGUI); + } + + webapiFormatChannelSettings(response, settings); + + return 200; +} + +void RemoteSource::webapiUpdateChannelSettings( + RemoteSourceSettings& settings, + const QStringList& channelSettingsKeys, + SWGSDRangel::SWGChannelSettings& response) +{ if (channelSettingsKeys.contains("dataAddress")) { settings.m_dataAddress = *response.getRemoteSourceSettings()->getDataAddress(); } @@ -439,20 +460,6 @@ int RemoteSource::webapiSettingsPutPatch( if (channelSettingsKeys.contains("reverseAPIChannelIndex")) { settings.m_reverseAPIChannelIndex = response.getRemoteSourceSettings()->getReverseApiChannelIndex(); } - - MsgConfigureRemoteSource *msg = MsgConfigureRemoteSource::create(settings, force); - m_inputMessageQueue.push(msg); - - qDebug("RemoteSource::webapiSettingsPutPatch: forward to GUI: %p", m_guiMessageQueue); - if (m_guiMessageQueue) // forward to GUI if any - { - MsgConfigureRemoteSource *msgToGUI = MsgConfigureRemoteSource::create(settings, force); - m_guiMessageQueue->push(msgToGUI); - } - - webapiFormatChannelSettings(response, settings); - - return 200; } int RemoteSource::webapiReportGet( diff --git a/plugins/channeltx/remotesource/remotesource.h b/plugins/channeltx/remotesource/remotesource.h index 5f84b3931..cb42b1d1c 100644 --- a/plugins/channeltx/remotesource/remotesource.h +++ b/plugins/channeltx/remotesource/remotesource.h @@ -223,6 +223,15 @@ public: SWGSDRangel::SWGChannelReport& response, QString& errorMessage); + static void webapiFormatChannelSettings( + SWGSDRangel::SWGChannelSettings& response, + const RemoteSourceSettings& settings); + + static void webapiUpdateChannelSettings( + RemoteSourceSettings& settings, + const QStringList& channelSettingsKeys, + SWGSDRangel::SWGChannelSettings& response); + void setDataLink(const QString& dataAddress, uint16_t dataPort); static const QString m_channelIdURI; @@ -255,7 +264,6 @@ private: void handleDataBlock(RemoteDataBlock *dataBlock); void printMeta(const QString& header, RemoteMetaDataFEC *metaData); uint32_t calculateDataReadQueueSize(int sampleRate); - void webapiFormatChannelSettings(SWGSDRangel::SWGChannelSettings& response, const RemoteSourceSettings& settings); void webapiFormatChannelReport(SWGSDRangel::SWGChannelReport& response); void webapiReverseSendSettings(QList& channelSettingsKeys, const RemoteSourceSettings& settings, bool force); diff --git a/plugins/channeltx/udpsource/udpsource.cpp b/plugins/channeltx/udpsource/udpsource.cpp index 3b513797f..8ea1c9735 100644 --- a/plugins/channeltx/udpsource/udpsource.cpp +++ b/plugins/channeltx/udpsource/udpsource.cpp @@ -690,18 +690,43 @@ int UDPSource::webapiSettingsPutPatch( { (void) errorMessage; UDPSourceSettings settings = m_settings; - bool frequencyOffsetChanged = false; + webapiUpdateChannelSettings(settings, channelSettingsKeys, response); + if (m_settings.m_inputFrequencyOffset != settings.m_inputFrequencyOffset) + { + UDPSource::MsgConfigureChannelizer *msgChan = UDPSource::MsgConfigureChannelizer::create( + settings.m_inputSampleRate, + settings.m_inputFrequencyOffset); + m_inputMessageQueue.push(msgChan); + } + + MsgConfigureUDPSource *msg = MsgConfigureUDPSource::create(settings, force); + m_inputMessageQueue.push(msg); + + if (m_guiMessageQueue) // forward to GUI if any + { + MsgConfigureUDPSource *msgToGUI = MsgConfigureUDPSource::create(settings, force); + m_guiMessageQueue->push(msgToGUI); + } + + webapiFormatChannelSettings(response, settings); + + return 200; +} + +void UDPSource::webapiUpdateChannelSettings( + UDPSourceSettings& settings, + const QStringList& channelSettingsKeys, + SWGSDRangel::SWGChannelSettings& response) +{ if (channelSettingsKeys.contains("sampleFormat")) { settings.m_sampleFormat = (UDPSourceSettings::SampleFormat) response.getUdpSourceSettings()->getSampleFormat(); } if (channelSettingsKeys.contains("inputSampleRate")) { settings.m_inputSampleRate = response.getUdpSourceSettings()->getInputSampleRate(); } - if (channelSettingsKeys.contains("inputFrequencyOffset")) - { + if (channelSettingsKeys.contains("inputFrequencyOffset")) { settings.m_inputFrequencyOffset = response.getUdpSourceSettings()->getInputFrequencyOffset(); - frequencyOffsetChanged = true; } if (channelSettingsKeys.contains("rfBandwidth")) { settings.m_rfBandwidth = response.getUdpSourceSettings()->getRfBandwidth(); @@ -766,27 +791,6 @@ int UDPSource::webapiSettingsPutPatch( if (channelSettingsKeys.contains("reverseAPIChannelIndex")) { settings.m_reverseAPIChannelIndex = response.getUdpSourceSettings()->getReverseApiChannelIndex(); } - - if (frequencyOffsetChanged) - { - UDPSource::MsgConfigureChannelizer *msgChan = UDPSource::MsgConfigureChannelizer::create( - settings.m_inputSampleRate, - settings.m_inputFrequencyOffset); - m_inputMessageQueue.push(msgChan); - } - - MsgConfigureUDPSource *msg = MsgConfigureUDPSource::create(settings, force); - m_inputMessageQueue.push(msg); - - if (m_guiMessageQueue) // forward to GUI if any - { - MsgConfigureUDPSource *msgToGUI = MsgConfigureUDPSource::create(settings, force); - m_guiMessageQueue->push(msgToGUI); - } - - webapiFormatChannelSettings(response, settings); - - return 200; } int UDPSource::webapiReportGet( diff --git a/plugins/channeltx/udpsource/udpsource.h b/plugins/channeltx/udpsource/udpsource.h index 784753cd5..56f422895 100644 --- a/plugins/channeltx/udpsource/udpsource.h +++ b/plugins/channeltx/udpsource/udpsource.h @@ -132,6 +132,15 @@ public: SWGSDRangel::SWGChannelReport& response, QString& errorMessage); + static void webapiFormatChannelSettings( + SWGSDRangel::SWGChannelSettings& response, + const UDPSourceSettings& settings); + + static void webapiUpdateChannelSettings( + UDPSourceSettings& settings, + const QStringList& channelSettingsKeys, + SWGSDRangel::SWGChannelSettings& response); + double getMagSq() const { return m_magsq; } double getInMagSq() const { return m_inMagsq; } int32_t getBufferGauge() const { return m_udpHandler.getBufferGauge(); } @@ -257,7 +266,6 @@ private: void calculateLevel(Real sample); void calculateLevel(Complex sample); - void webapiFormatChannelSettings(SWGSDRangel::SWGChannelSettings& response, const UDPSourceSettings& settings); void webapiFormatChannelReport(SWGSDRangel::SWGChannelReport& response); void webapiReverseSendSettings(QList& channelSettingsKeys, const UDPSourceSettings& settings, bool force);