From 9a7337f3d89f077aed206fe66a8b655635191267 Mon Sep 17 00:00:00 2001 From: f4exb Date: Thu, 4 Nov 2021 00:13:08 +0100 Subject: [PATCH] DATV demod: fixed missing method --- plugins/channelrx/demoddatv/datvdemod.cpp | 30 +++++++++++++++++++++++ plugins/channelrx/demoddatv/datvdemod.h | 2 ++ 2 files changed, 32 insertions(+) diff --git a/plugins/channelrx/demoddatv/datvdemod.cpp b/plugins/channelrx/demoddatv/datvdemod.cpp index 4ac7da94d..c1c458139 100644 --- a/plugins/channelrx/demoddatv/datvdemod.cpp +++ b/plugins/channelrx/demoddatv/datvdemod.cpp @@ -20,6 +20,7 @@ #include #include #include +#include #include "SWGChannelSettings.h" #include "SWGDATVDemodSettings.h" @@ -51,11 +52,15 @@ DATVDemod::DATVDemod(DeviceAPI *deviceAPI) : m_deviceAPI->addChannelSink(this); m_deviceAPI->addChannelSinkAPI(this); + m_networkManager = new QNetworkAccessManager(); + connect(m_networkManager, SIGNAL(finished(QNetworkReply*)), this, SLOT(networkManagerFinished(QNetworkReply*))); } DATVDemod::~DATVDemod() { qDebug("DATVDemod::~DATVDemod"); + disconnect(m_networkManager, SIGNAL(finished(QNetworkReply*)), this, SLOT(networkManagerFinished(QNetworkReply*))); + delete m_networkManager; m_deviceAPI->removeChannelSinkAPI(this); m_deviceAPI->removeChannelSink(this); @@ -605,6 +610,31 @@ void DATVDemod::webapiFormatChannelSettings( } } +void DATVDemod::webapiReverseSendSettings(QList& channelSettingsKeys, const DATVDemodSettings& settings, bool force) +{ + SWGSDRangel::SWGChannelSettings *swgChannelSettings = new SWGSDRangel::SWGChannelSettings(); + webapiFormatChannelSettings(channelSettingsKeys, swgChannelSettings, settings, force); + + QString channelSettingsURL = QString("http://%1:%2/sdrangel/deviceset/%3/channel/%4/settings") + .arg(settings.m_reverseAPIAddress) + .arg(settings.m_reverseAPIPort) + .arg(settings.m_reverseAPIDeviceIndex) + .arg(settings.m_reverseAPIChannelIndex); + m_networkRequest.setUrl(QUrl(channelSettingsURL)); + m_networkRequest.setHeader(QNetworkRequest::ContentTypeHeader, "application/json"); + + QBuffer *buffer = new QBuffer(); + buffer->open((QBuffer::ReadWrite)); + buffer->write(swgChannelSettings->asJson().toUtf8()); + buffer->seek(0); + + // Always use PATCH to avoid passing reverse API settings + QNetworkReply *reply = m_networkManager->sendCustomRequest(m_networkRequest, "PATCH", buffer); + buffer->setParent(reply); + + delete swgChannelSettings; +} + void DATVDemod::networkManagerFinished(QNetworkReply *reply) { QNetworkReply::NetworkError replyError = reply->error(); diff --git a/plugins/channelrx/demoddatv/datvdemod.h b/plugins/channelrx/demoddatv/datvdemod.h index 40dc093f9..5dd5f937a 100644 --- a/plugins/channelrx/demoddatv/datvdemod.h +++ b/plugins/channelrx/demoddatv/datvdemod.h @@ -157,6 +157,8 @@ private: DATVDemodBaseband* m_basebandSink; DATVDemodSettings m_settings; int m_basebandSampleRate; //!< stored from device message used when starting baseband sink + QNetworkAccessManager *m_networkManager; + QNetworkRequest m_networkRequest; void applySettings(const DATVDemodSettings& settings, bool force = false); void webapiFormatChannelReport(SWGSDRangel::SWGChannelReport& response);