From 166d7fca395e9282c73f1a2ab917020b525bde3a Mon Sep 17 00:00:00 2001 From: f4exb Date: Fri, 21 Dec 2018 17:39:04 +0100 Subject: [PATCH] Reverse API: Daemon sink --- plugins/channelrx/daemonsink/daemonsink.cpp | 133 +++++++++++++++++- plugins/channelrx/daemonsink/daemonsink.h | 9 ++ .../channelrx/daemonsink/daemonsinkgui.cpp | 12 ++ .../daemonsink/daemonsinksettings.cpp | 24 ++++ .../channelrx/daemonsink/daemonsinksettings.h | 5 + sdrbase/resources/webapi/doc/html2/index.html | 18 ++- .../doc/swagger/include/DaemonSink.yaml | 15 +- .../api/swagger/include/DaemonSink.yaml | 15 +- swagger/sdrangel/code/html2/index.html | 18 ++- .../code/qt5/client/SWGDaemonSinkSettings.cpp | 107 ++++++++++++++ .../code/qt5/client/SWGDaemonSinkSettings.h | 30 ++++ 11 files changed, 375 insertions(+), 11 deletions(-) diff --git a/plugins/channelrx/daemonsink/daemonsink.cpp b/plugins/channelrx/daemonsink/daemonsink.cpp index 797e5b429..94f7cb867 100644 --- a/plugins/channelrx/daemonsink/daemonsink.cpp +++ b/plugins/channelrx/daemonsink/daemonsink.cpp @@ -25,6 +25,10 @@ #include #include +#include +#include +#include + #include "SWGChannelSettings.h" #include "util/simpleserializer.h" @@ -63,14 +67,21 @@ DaemonSink::DaemonSink(DeviceSourceAPI *deviceAPI) : m_threadedChannelizer = new ThreadedBasebandSampleSink(m_channelizer, this); m_deviceAPI->addThreadedSink(m_threadedChannelizer); m_deviceAPI->addChannelAPI(this); + + m_networkManager = new QNetworkAccessManager(); + connect(m_networkManager, SIGNAL(finished(QNetworkReply*)), this, SLOT(networkManagerFinished(QNetworkReply*))); } DaemonSink::~DaemonSink() { + disconnect(m_networkManager, SIGNAL(finished(QNetworkReply*)), this, SLOT(networkManagerFinished(QNetworkReply*))); + delete m_networkManager; m_dataBlockMutex.lock(); + if (m_dataBlock && !m_dataBlock->m_txControlBlock.m_complete) { delete m_dataBlock; } + m_dataBlockMutex.unlock(); m_deviceAPI->removeChannelAPI(this); m_deviceAPI->removeThreadedSink(m_threadedChannelizer); @@ -325,23 +336,43 @@ void DaemonSink::applySettings(const DaemonSinkSettings& settings, bool force) << " m_dataPort: " << settings.m_dataPort << " force: " << force; - if ((m_settings.m_nbFECBlocks != settings.m_nbFECBlocks) || force) { + QList reverseAPIKeys; + + if ((m_settings.m_nbFECBlocks != settings.m_nbFECBlocks) || force) + { + reverseAPIKeys.append("nbFECBlocks"); setNbBlocksFEC(settings.m_nbFECBlocks); setTxDelay(settings.m_txDelay, settings.m_nbFECBlocks); } - if ((m_settings.m_txDelay != settings.m_txDelay) || force) { + if ((m_settings.m_txDelay != settings.m_txDelay) || force) + { + reverseAPIKeys.append("txDelay"); setTxDelay(settings.m_txDelay, settings.m_nbFECBlocks); } - if ((m_settings.m_dataAddress != settings.m_dataAddress) || force) { + if ((m_settings.m_dataAddress != settings.m_dataAddress) || force) + { + reverseAPIKeys.append("dataAddress"); m_dataAddress = settings.m_dataAddress; } - if ((m_settings.m_dataPort != settings.m_dataPort) || force) { + if ((m_settings.m_dataPort != settings.m_dataPort) || force) + { + reverseAPIKeys.append("dataPort"); m_dataPort = settings.m_dataPort; } + if ((settings.m_useReverseAPI) && (reverseAPIKeys.size() != 0)) + { + bool fullUpdate = ((m_settings.m_useReverseAPI != settings.m_useReverseAPI) && settings.m_useReverseAPI) || + (m_settings.m_reverseAPIAddress != settings.m_reverseAPIAddress) || + (m_settings.m_reverseAPIPort != settings.m_reverseAPIPort) || + (m_settings.m_reverseAPIDeviceIndex != settings.m_reverseAPIDeviceIndex) || + (m_settings.m_reverseAPIChannelIndex != settings.m_reverseAPIChannelIndex); + webapiReverseSendSettings(reverseAPIKeys, settings, fullUpdate || force); + } + m_settings = settings; } @@ -408,7 +439,21 @@ int DaemonSink::webapiSettingsPutPatch( if (channelSettingsKeys.contains("title")) { settings.m_title = *response.getDaemonSinkSettings()->getTitle(); } - + if (channelSettingsKeys.contains("useReverseAPI")) { + settings.m_useReverseAPI = response.getDaemonSinkSettings()->getUseReverseApi() != 0; + } + if (channelSettingsKeys.contains("reverseAPIAddress")) { + settings.m_reverseAPIAddress = *response.getDaemonSinkSettings()->getReverseApiAddress() != 0; + } + if (channelSettingsKeys.contains("reverseAPIPort")) { + settings.m_reverseAPIPort = response.getDaemonSinkSettings()->getReverseApiPort(); + } + if (channelSettingsKeys.contains("reverseAPIDeviceIndex")) { + settings.m_reverseAPIDeviceIndex = response.getDaemonSinkSettings()->getReverseApiDeviceIndex(); + } + if (channelSettingsKeys.contains("reverseAPIChannelIndex")) { + settings.m_reverseAPIChannelIndex = response.getDaemonSinkSettings()->getReverseApiChannelIndex(); + } MsgConfigureDaemonSink *msg = MsgConfigureDaemonSink::create(settings, force); m_inputMessageQueue.push(msg); @@ -445,4 +490,82 @@ void DaemonSink::webapiFormatChannelSettings(SWGSDRangel::SWGChannelSettings& re response.getDaemonSinkSettings()->setTitle(new QString(settings.m_title)); } + response.getDaemonSinkSettings()->setUseReverseApi(settings.m_useReverseAPI ? 1 : 0); + + if (response.getDaemonSinkSettings()->getReverseApiAddress()) { + *response.getDaemonSinkSettings()->getReverseApiAddress() = settings.m_reverseAPIAddress; + } else { + response.getDaemonSinkSettings()->setReverseApiAddress(new QString(settings.m_reverseAPIAddress)); + } + + response.getDaemonSinkSettings()->setReverseApiPort(settings.m_reverseAPIPort); + response.getDaemonSinkSettings()->setReverseApiDeviceIndex(settings.m_reverseAPIDeviceIndex); + response.getDaemonSinkSettings()->setReverseApiChannelIndex(settings.m_reverseAPIChannelIndex); +} + +void DaemonSink::webapiReverseSendSettings(QList& channelSettingsKeys, const DaemonSinkSettings& settings, bool force) +{ + SWGSDRangel::SWGChannelSettings *swgChannelSettings = new SWGSDRangel::SWGChannelSettings(); + swgChannelSettings->setTx(0); + swgChannelSettings->setChannelType(new QString("DaemonSink")); + swgChannelSettings->setDaemonSinkSettings(new SWGSDRangel::SWGDaemonSinkSettings()); + SWGSDRangel::SWGDaemonSinkSettings *swgDaemonSinkSettings = swgChannelSettings->getDaemonSinkSettings(); + + // transfer data that has been modified. When force is on transfer all data except reverse API data + + if (channelSettingsKeys.contains("nbFECBlocks") || force) { + swgDaemonSinkSettings->setNbFecBlocks(settings.m_nbFECBlocks); + } + if (channelSettingsKeys.contains("txDelay") || force) + { + swgDaemonSinkSettings->setTxDelay(settings.m_txDelay); + } + if (channelSettingsKeys.contains("dataAddress") || force) { + swgDaemonSinkSettings->setDataAddress(new QString(settings.m_dataAddress)); + } + if (channelSettingsKeys.contains("dataPort") || force) { + swgDaemonSinkSettings->setDataPort(settings.m_dataPort); + } + if (channelSettingsKeys.contains("rgbColor") || force) { + swgDaemonSinkSettings->setRgbColor(settings.m_rgbColor); + } + if (channelSettingsKeys.contains("title") || force) { + swgDaemonSinkSettings->setTitle(new QString(settings.m_title)); + } + + 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 + m_networkManager->sendCustomRequest(m_networkRequest, "PATCH", buffer); + + delete swgChannelSettings; +} + +void DaemonSink::networkManagerFinished(QNetworkReply *reply) +{ + QNetworkReply::NetworkError replyError = reply->error(); + + if (replyError) + { + qWarning() << "DaemonSink::networkManagerFinished:" + << " error(" << (int) replyError + << "): " << replyError + << ": " << reply->errorString(); + return; + } + + QString answer = reply->readAll(); + answer.chop(1); // remove last \n + qDebug("DaemonSink::networkManagerFinished: reply:\n%s", answer.toStdString().c_str()); } diff --git a/plugins/channelrx/daemonsink/daemonsink.h b/plugins/channelrx/daemonsink/daemonsink.h index b50986c48..82aa71230 100644 --- a/plugins/channelrx/daemonsink/daemonsink.h +++ b/plugins/channelrx/daemonsink/daemonsink.h @@ -25,12 +25,15 @@ #include #include +#include #include "dsp/basebandsamplesink.h" #include "channel/channelsinkapi.h" #include "channel/sdrdaemondatablock.h" #include "daemonsinksettings.h" +class QNetworkAccessManager; +class QNetworkReply; class DeviceSourceAPI; class ThreadedBasebandSampleSink; class DownChannelizer; @@ -148,9 +151,15 @@ private: int m_txDelay; QString m_dataAddress; uint16_t m_dataPort; + QNetworkAccessManager *m_networkManager; + QNetworkRequest m_networkRequest; void applySettings(const DaemonSinkSettings& settings, bool force = false); void webapiFormatChannelSettings(SWGSDRangel::SWGChannelSettings& response, const DaemonSinkSettings& settings); + void webapiReverseSendSettings(QList& channelSettingsKeys, const DaemonSinkSettings& settings, bool force); + +private slots: + void networkManagerFinished(QNetworkReply *reply); }; #endif /* INCLUDE_DAEMONSINK_H_ */ diff --git a/plugins/channelrx/daemonsink/daemonsinkgui.cpp b/plugins/channelrx/daemonsink/daemonsinkgui.cpp index a77bc9a64..69d2866e0 100644 --- a/plugins/channelrx/daemonsink/daemonsinkgui.cpp +++ b/plugins/channelrx/daemonsink/daemonsinkgui.cpp @@ -113,6 +113,7 @@ DaemonSinkGUI::DaemonSinkGUI(PluginAPI* pluginAPI, DeviceUISet *deviceUISet, Bas ui->setupUi(this); setAttribute(Qt::WA_DeleteOnClose, true); connect(this, SIGNAL(widgetRolled(QWidget*,bool)), this, SLOT(onWidgetRolled(QWidget*,bool))); + connect(this, SIGNAL(customContextMenuRequested(const QPoint &)), this, SLOT(onMenuDialogCalled(const QPoint &))); m_daemonSink = (DaemonSink*) channelrx; m_daemonSink->setMessageQueueToGUI(getInputMessageQueue()); @@ -217,11 +218,22 @@ void DaemonSinkGUI::onWidgetRolled(QWidget* widget, bool rollDown) void DaemonSinkGUI::onMenuDialogCalled(const QPoint &p) { BasicChannelSettingsDialog dialog(&m_channelMarker, this); + dialog.setUseReverseAPI(m_settings.m_useReverseAPI); + dialog.setReverseAPIAddress(m_settings.m_reverseAPIAddress); + dialog.setReverseAPIPort(m_settings.m_reverseAPIPort); + dialog.setReverseAPIDeviceIndex(m_settings.m_reverseAPIDeviceIndex); + dialog.setReverseAPIChannelIndex(m_settings.m_reverseAPIChannelIndex); + dialog.move(p); dialog.exec(); m_settings.m_rgbColor = m_channelMarker.getColor().rgb(); m_settings.m_title = m_channelMarker.getTitle(); + m_settings.m_useReverseAPI = dialog.useReverseAPI(); + m_settings.m_reverseAPIAddress = dialog.getReverseAPIAddress(); + m_settings.m_reverseAPIPort = dialog.getReverseAPIPort(); + m_settings.m_reverseAPIDeviceIndex = dialog.getReverseAPIDeviceIndex(); + m_settings.m_reverseAPIChannelIndex = dialog.getReverseAPIChannelIndex(); setWindowTitle(m_settings.m_title); setTitleColor(m_settings.m_rgbColor); diff --git a/plugins/channelrx/daemonsink/daemonsinksettings.cpp b/plugins/channelrx/daemonsink/daemonsinksettings.cpp index 1579bc80f..54fb2208c 100644 --- a/plugins/channelrx/daemonsink/daemonsinksettings.cpp +++ b/plugins/channelrx/daemonsink/daemonsinksettings.cpp @@ -40,6 +40,11 @@ void DaemonSinkSettings::resetToDefaults() m_rgbColor = QColor(140, 4, 4).rgb(); m_title = "Daemon sink"; m_channelMarker = nullptr; + m_useReverseAPI = false; + m_reverseAPIAddress = "127.0.0.1"; + m_reverseAPIPort = 8888; + m_reverseAPIDeviceIndex = 0; + m_reverseAPIChannelIndex = 0; } QByteArray DaemonSinkSettings::serialize() const @@ -51,6 +56,11 @@ QByteArray DaemonSinkSettings::serialize() const s.writeU32(4, m_dataPort); s.writeU32(5, m_rgbColor); s.writeString(6, m_title); + s.writeBool(7, m_useReverseAPI); + s.writeString(8, m_reverseAPIAddress); + s.writeU32(9, m_reverseAPIPort); + s.writeU32(10, m_reverseAPIDeviceIndex); + s.writeU32(11, m_reverseAPIChannelIndex); return s.final(); } @@ -90,6 +100,20 @@ bool DaemonSinkSettings::deserialize(const QByteArray& data) d.readU32(5, &m_rgbColor, QColor(0, 255, 255).rgb()); d.readString(6, &m_title, "Daemon sink"); + d.readBool(7, &m_useReverseAPI, false); + d.readString(8, &m_reverseAPIAddress, "127.0.0.1"); + d.readU32(9, &tmp, 0); + + if ((tmp > 1023) && (tmp < 65535)) { + m_reverseAPIPort = tmp; + } else { + m_reverseAPIPort = 8888; + } + + d.readU32(10, &tmp, 0); + m_reverseAPIDeviceIndex = tmp > 99 ? 99 : tmp; + d.readU32(11, &tmp, 0); + m_reverseAPIChannelIndex = tmp > 99 ? 99 : tmp; return true; } diff --git a/plugins/channelrx/daemonsink/daemonsinksettings.h b/plugins/channelrx/daemonsink/daemonsinksettings.h index 49584c57c..304446384 100644 --- a/plugins/channelrx/daemonsink/daemonsinksettings.h +++ b/plugins/channelrx/daemonsink/daemonsinksettings.h @@ -35,6 +35,11 @@ struct DaemonSinkSettings uint16_t m_dataPort; quint32 m_rgbColor; QString m_title; + bool m_useReverseAPI; + QString m_reverseAPIAddress; + uint16_t m_reverseAPIPort; + uint16_t m_reverseAPIDeviceIndex; + uint16_t m_reverseAPIChannelIndex; Serializable *m_channelMarker; diff --git a/sdrbase/resources/webapi/doc/html2/index.html b/sdrbase/resources/webapi/doc/html2/index.html index 927a15c19..398c9614a 100644 --- a/sdrbase/resources/webapi/doc/html2/index.html +++ b/sdrbase/resources/webapi/doc/html2/index.html @@ -1935,6 +1935,22 @@ margin-bottom: 20px; }, "title" : { "type" : "string" + }, + "useReverseAPI" : { + "type" : "integer", + "description" : "Synchronize with reverse API (1 for yes, 0 for no)" + }, + "reverseAPIAddress" : { + "type" : "string" + }, + "reverseAPIPort" : { + "type" : "integer" + }, + "reverseAPIDeviceIndex" : { + "type" : "integer" + }, + "reverseAPIChannelIndex" : { + "type" : "integer" } }, "description" : "Daemon channel sink settings" @@ -23829,7 +23845,7 @@ except ApiException as e:
- Generated 2018-12-21T16:57:30.140+01:00 + Generated 2018-12-21T17:28:44.403+01:00
diff --git a/sdrbase/resources/webapi/doc/swagger/include/DaemonSink.yaml b/sdrbase/resources/webapi/doc/swagger/include/DaemonSink.yaml index f381ced78..787afb7f1 100644 --- a/sdrbase/resources/webapi/doc/swagger/include/DaemonSink.yaml +++ b/sdrbase/resources/webapi/doc/swagger/include/DaemonSink.yaml @@ -14,6 +14,17 @@ DaemonSinkSettings: description: "Minimum delay in ms between consecutive USB blocks transmissions" type: integer rgbColor: - type: integer + type: integer title: - type: string + type: string + useReverseAPI: + description: Synchronize with reverse API (1 for yes, 0 for no) + type: integer + reverseAPIAddress: + type: string + reverseAPIPort: + type: integer + reverseAPIDeviceIndex: + type: integer + reverseAPIChannelIndex: + type: integer diff --git a/swagger/sdrangel/api/swagger/include/DaemonSink.yaml b/swagger/sdrangel/api/swagger/include/DaemonSink.yaml index f381ced78..787afb7f1 100644 --- a/swagger/sdrangel/api/swagger/include/DaemonSink.yaml +++ b/swagger/sdrangel/api/swagger/include/DaemonSink.yaml @@ -14,6 +14,17 @@ DaemonSinkSettings: description: "Minimum delay in ms between consecutive USB blocks transmissions" type: integer rgbColor: - type: integer + type: integer title: - type: string + type: string + useReverseAPI: + description: Synchronize with reverse API (1 for yes, 0 for no) + type: integer + reverseAPIAddress: + type: string + reverseAPIPort: + type: integer + reverseAPIDeviceIndex: + type: integer + reverseAPIChannelIndex: + type: integer diff --git a/swagger/sdrangel/code/html2/index.html b/swagger/sdrangel/code/html2/index.html index 927a15c19..398c9614a 100644 --- a/swagger/sdrangel/code/html2/index.html +++ b/swagger/sdrangel/code/html2/index.html @@ -1935,6 +1935,22 @@ margin-bottom: 20px; }, "title" : { "type" : "string" + }, + "useReverseAPI" : { + "type" : "integer", + "description" : "Synchronize with reverse API (1 for yes, 0 for no)" + }, + "reverseAPIAddress" : { + "type" : "string" + }, + "reverseAPIPort" : { + "type" : "integer" + }, + "reverseAPIDeviceIndex" : { + "type" : "integer" + }, + "reverseAPIChannelIndex" : { + "type" : "integer" } }, "description" : "Daemon channel sink settings" @@ -23829,7 +23845,7 @@ except ApiException as e:
- Generated 2018-12-21T16:57:30.140+01:00 + Generated 2018-12-21T17:28:44.403+01:00
diff --git a/swagger/sdrangel/code/qt5/client/SWGDaemonSinkSettings.cpp b/swagger/sdrangel/code/qt5/client/SWGDaemonSinkSettings.cpp index 586402538..c067be0e3 100644 --- a/swagger/sdrangel/code/qt5/client/SWGDaemonSinkSettings.cpp +++ b/swagger/sdrangel/code/qt5/client/SWGDaemonSinkSettings.cpp @@ -40,6 +40,16 @@ SWGDaemonSinkSettings::SWGDaemonSinkSettings() { m_rgb_color_isSet = false; title = nullptr; m_title_isSet = false; + use_reverse_api = 0; + m_use_reverse_api_isSet = false; + reverse_api_address = nullptr; + m_reverse_api_address_isSet = false; + reverse_api_port = 0; + m_reverse_api_port_isSet = false; + reverse_api_device_index = 0; + m_reverse_api_device_index_isSet = false; + reverse_api_channel_index = 0; + m_reverse_api_channel_index_isSet = false; } SWGDaemonSinkSettings::~SWGDaemonSinkSettings() { @@ -60,6 +70,16 @@ SWGDaemonSinkSettings::init() { m_rgb_color_isSet = false; title = new QString(""); m_title_isSet = false; + use_reverse_api = 0; + m_use_reverse_api_isSet = false; + reverse_api_address = new QString(""); + m_reverse_api_address_isSet = false; + reverse_api_port = 0; + m_reverse_api_port_isSet = false; + reverse_api_device_index = 0; + m_reverse_api_device_index_isSet = false; + reverse_api_channel_index = 0; + m_reverse_api_channel_index_isSet = false; } void @@ -74,6 +94,13 @@ SWGDaemonSinkSettings::cleanup() { if(title != nullptr) { delete title; } + + if(reverse_api_address != nullptr) { + delete reverse_api_address; + } + + + } SWGDaemonSinkSettings* @@ -99,6 +126,16 @@ SWGDaemonSinkSettings::fromJsonObject(QJsonObject &pJson) { ::SWGSDRangel::setValue(&title, pJson["title"], "QString", "QString"); + ::SWGSDRangel::setValue(&use_reverse_api, pJson["useReverseAPI"], "qint32", ""); + + ::SWGSDRangel::setValue(&reverse_api_address, pJson["reverseAPIAddress"], "QString", "QString"); + + ::SWGSDRangel::setValue(&reverse_api_port, pJson["reverseAPIPort"], "qint32", ""); + + ::SWGSDRangel::setValue(&reverse_api_device_index, pJson["reverseAPIDeviceIndex"], "qint32", ""); + + ::SWGSDRangel::setValue(&reverse_api_channel_index, pJson["reverseAPIChannelIndex"], "qint32", ""); + } QString @@ -133,6 +170,21 @@ SWGDaemonSinkSettings::asJsonObject() { if(title != nullptr && *title != QString("")){ toJsonValue(QString("title"), title, obj, QString("QString")); } + if(m_use_reverse_api_isSet){ + obj->insert("useReverseAPI", QJsonValue(use_reverse_api)); + } + if(reverse_api_address != nullptr && *reverse_api_address != QString("")){ + toJsonValue(QString("reverseAPIAddress"), reverse_api_address, obj, QString("QString")); + } + if(m_reverse_api_port_isSet){ + obj->insert("reverseAPIPort", QJsonValue(reverse_api_port)); + } + if(m_reverse_api_device_index_isSet){ + obj->insert("reverseAPIDeviceIndex", QJsonValue(reverse_api_device_index)); + } + if(m_reverse_api_channel_index_isSet){ + obj->insert("reverseAPIChannelIndex", QJsonValue(reverse_api_channel_index)); + } return obj; } @@ -197,6 +249,56 @@ SWGDaemonSinkSettings::setTitle(QString* title) { this->m_title_isSet = true; } +qint32 +SWGDaemonSinkSettings::getUseReverseApi() { + return use_reverse_api; +} +void +SWGDaemonSinkSettings::setUseReverseApi(qint32 use_reverse_api) { + this->use_reverse_api = use_reverse_api; + this->m_use_reverse_api_isSet = true; +} + +QString* +SWGDaemonSinkSettings::getReverseApiAddress() { + return reverse_api_address; +} +void +SWGDaemonSinkSettings::setReverseApiAddress(QString* reverse_api_address) { + this->reverse_api_address = reverse_api_address; + this->m_reverse_api_address_isSet = true; +} + +qint32 +SWGDaemonSinkSettings::getReverseApiPort() { + return reverse_api_port; +} +void +SWGDaemonSinkSettings::setReverseApiPort(qint32 reverse_api_port) { + this->reverse_api_port = reverse_api_port; + this->m_reverse_api_port_isSet = true; +} + +qint32 +SWGDaemonSinkSettings::getReverseApiDeviceIndex() { + return reverse_api_device_index; +} +void +SWGDaemonSinkSettings::setReverseApiDeviceIndex(qint32 reverse_api_device_index) { + this->reverse_api_device_index = reverse_api_device_index; + this->m_reverse_api_device_index_isSet = true; +} + +qint32 +SWGDaemonSinkSettings::getReverseApiChannelIndex() { + return reverse_api_channel_index; +} +void +SWGDaemonSinkSettings::setReverseApiChannelIndex(qint32 reverse_api_channel_index) { + this->reverse_api_channel_index = reverse_api_channel_index; + this->m_reverse_api_channel_index_isSet = true; +} + bool SWGDaemonSinkSettings::isSet(){ @@ -208,6 +310,11 @@ SWGDaemonSinkSettings::isSet(){ if(m_tx_delay_isSet){ isObjectUpdated = true; break;} if(m_rgb_color_isSet){ isObjectUpdated = true; break;} if(title != nullptr && *title != QString("")){ isObjectUpdated = true; break;} + if(m_use_reverse_api_isSet){ isObjectUpdated = true; break;} + if(reverse_api_address != nullptr && *reverse_api_address != QString("")){ isObjectUpdated = true; break;} + if(m_reverse_api_port_isSet){ isObjectUpdated = true; break;} + if(m_reverse_api_device_index_isSet){ isObjectUpdated = true; break;} + if(m_reverse_api_channel_index_isSet){ isObjectUpdated = true; break;} }while(false); return isObjectUpdated; } diff --git a/swagger/sdrangel/code/qt5/client/SWGDaemonSinkSettings.h b/swagger/sdrangel/code/qt5/client/SWGDaemonSinkSettings.h index b0b285ff3..522766381 100644 --- a/swagger/sdrangel/code/qt5/client/SWGDaemonSinkSettings.h +++ b/swagger/sdrangel/code/qt5/client/SWGDaemonSinkSettings.h @@ -60,6 +60,21 @@ public: QString* getTitle(); void setTitle(QString* title); + qint32 getUseReverseApi(); + void setUseReverseApi(qint32 use_reverse_api); + + QString* getReverseApiAddress(); + void setReverseApiAddress(QString* reverse_api_address); + + qint32 getReverseApiPort(); + void setReverseApiPort(qint32 reverse_api_port); + + qint32 getReverseApiDeviceIndex(); + void setReverseApiDeviceIndex(qint32 reverse_api_device_index); + + qint32 getReverseApiChannelIndex(); + void setReverseApiChannelIndex(qint32 reverse_api_channel_index); + virtual bool isSet() override; @@ -82,6 +97,21 @@ private: QString* title; bool m_title_isSet; + qint32 use_reverse_api; + bool m_use_reverse_api_isSet; + + QString* reverse_api_address; + bool m_reverse_api_address_isSet; + + qint32 reverse_api_port; + bool m_reverse_api_port_isSet; + + qint32 reverse_api_device_index; + bool m_reverse_api_device_index_isSet; + + qint32 reverse_api_channel_index; + bool m_reverse_api_channel_index_isSet; + }; }