From 71f63e3a9c8746bb94742b435567aa1e461f4535 Mon Sep 17 00:00:00 2001 From: f4exb Date: Fri, 3 Dec 2021 23:08:48 +0100 Subject: [PATCH] API: implemented Channel Marker in MIMO channels --- .../beamsteeringcwmod/beamsteeringcwmod.cpp | 25 +++++++++++++++++++ .../beamsteeringcwmodgui.cpp | 1 + .../interferometer/interferometer.cpp | 24 ++++++++++++++++++ .../interferometer/interferometergui.cpp | 1 + sdrbase/resources/webapi/doc/html2/index.html | 8 +++++- .../swagger/include/BeamSteeringCWMod.yaml | 2 ++ .../doc/swagger/include/Interferometer.yaml | 2 ++ .../swagger/include/BeamSteeringCWMod.yaml | 2 ++ .../api/swagger/include/Interferometer.yaml | 2 ++ swagger/sdrangel/code/html2/index.html | 8 +++++- .../client/SWGBeamSteeringCWModSettings.cpp | 25 +++++++++++++++++++ .../qt5/client/SWGBeamSteeringCWModSettings.h | 7 ++++++ .../qt5/client/SWGInterferometerSettings.cpp | 25 +++++++++++++++++++ .../qt5/client/SWGInterferometerSettings.h | 7 ++++++ 14 files changed, 137 insertions(+), 2 deletions(-) diff --git a/plugins/channelmimo/beamsteeringcwmod/beamsteeringcwmod.cpp b/plugins/channelmimo/beamsteeringcwmod/beamsteeringcwmod.cpp index bdfca7bd7..d649c985f 100644 --- a/plugins/channelmimo/beamsteeringcwmod/beamsteeringcwmod.cpp +++ b/plugins/channelmimo/beamsteeringcwmod/beamsteeringcwmod.cpp @@ -26,6 +26,7 @@ #include "device/deviceapi.h" #include "dsp/hbfilterchainconverter.h" #include "dsp/dspcommands.h" +#include "settings/serializable.h" #include "feature/feature.h" #include "maincore.h" @@ -323,6 +324,9 @@ void BeamSteeringCWMod::webapiUpdateChannelSettings( if (channelSettingsKeys.contains("reverseAPIChannelIndex")) { settings.m_reverseAPIChannelIndex = response.getBeamSteeringCwModSettings()->getReverseApiChannelIndex(); } + if (settings.m_channelMarker && channelSettingsKeys.contains("channelMarker")) { + settings.m_channelMarker->updateFrom(channelSettingsKeys, response.getBeamSteeringCwModSettings()->getChannelMarker()); + } } void BeamSteeringCWMod::webapiFormatChannelSettings(SWGSDRangel::SWGChannelSettings& response, const BeamSteeringCWModSettings& settings) @@ -349,6 +353,20 @@ void BeamSteeringCWMod::webapiFormatChannelSettings(SWGSDRangel::SWGChannelSetti response.getBeamSteeringCwModSettings()->setReverseApiPort(settings.m_reverseAPIPort); response.getBeamSteeringCwModSettings()->setReverseApiDeviceIndex(settings.m_reverseAPIDeviceIndex); response.getBeamSteeringCwModSettings()->setReverseApiChannelIndex(settings.m_reverseAPIChannelIndex); + + if (settings.m_channelMarker) + { + if (response.getBeamSteeringCwModSettings()->getChannelMarker()) + { + settings.m_channelMarker->formatTo(response.getBeamSteeringCwModSettings()->getChannelMarker()); + } + else + { + SWGSDRangel::SWGChannelMarker *swgChannelMarker = new SWGSDRangel::SWGChannelMarker(); + settings.m_channelMarker->formatTo(swgChannelMarker); + response.getBeamSteeringCwModSettings()->setChannelMarker(swgChannelMarker); + } + } } void BeamSteeringCWMod::webapiReverseSendSettings(QList& channelSettingsKeys, const BeamSteeringCWModSettings& settings, bool force) @@ -429,6 +447,13 @@ void BeamSteeringCWMod::webapiFormatChannelSettings( if (channelSettingsKeys.contains("filterChainHash") || force) { swgBeamSteeringCWSettings->setFilterChainHash(settings.m_filterChainHash); } + + if (settings.m_channelMarker && (channelSettingsKeys.contains("channelMarker") || force)) + { + SWGSDRangel::SWGChannelMarker *swgChannelMarker = new SWGSDRangel::SWGChannelMarker(); + settings.m_channelMarker->formatTo(swgChannelMarker); + swgBeamSteeringCWSettings->setChannelMarker(swgChannelMarker); + } } void BeamSteeringCWMod::networkManagerFinished(QNetworkReply *reply) diff --git a/plugins/channelmimo/beamsteeringcwmod/beamsteeringcwmodgui.cpp b/plugins/channelmimo/beamsteeringcwmod/beamsteeringcwmodgui.cpp index 95ec32035..0dc854f02 100644 --- a/plugins/channelmimo/beamsteeringcwmod/beamsteeringcwmodgui.cpp +++ b/plugins/channelmimo/beamsteeringcwmod/beamsteeringcwmodgui.cpp @@ -76,6 +76,7 @@ bool BeamSteeringCWModGUI::handleMessage(const Message& message) const BeamSteeringCWMod::MsgConfigureBeamSteeringCWMod& cfg = (BeamSteeringCWMod::MsgConfigureBeamSteeringCWMod&) message; m_settings = cfg.getSettings(); blockApplySettings(true); + m_channelMarker.updateSettings(static_cast(m_settings.m_channelMarker)); displaySettings(); blockApplySettings(false); return true; diff --git a/plugins/channelmimo/interferometer/interferometer.cpp b/plugins/channelmimo/interferometer/interferometer.cpp index 5980d66fe..838e84de9 100644 --- a/plugins/channelmimo/interferometer/interferometer.cpp +++ b/plugins/channelmimo/interferometer/interferometer.cpp @@ -348,6 +348,9 @@ void Interferometer::webapiUpdateChannelSettings( if (settings.m_scopeGUI && channelSettingsKeys.contains("scopeConfig")) { settings.m_scopeGUI->updateFrom(channelSettingsKeys, response.getInterferometerSettings()->getScopeConfig()); } + if (settings.m_channelMarker && channelSettingsKeys.contains("channelMarker")) { + settings.m_channelMarker->updateFrom(channelSettingsKeys, response.getInterferometerSettings()->getChannelMarker()); + } } void Interferometer::webapiFormatChannelSettings(SWGSDRangel::SWGChannelSettings& response, const InterferometerSettings& settings) @@ -401,6 +404,20 @@ void Interferometer::webapiFormatChannelSettings(SWGSDRangel::SWGChannelSettings response.getInterferometerSettings()->setScopeConfig(swgGLScope); } } + + if (settings.m_channelMarker) + { + if (response.getInterferometerSettings()->getChannelMarker()) + { + settings.m_channelMarker->formatTo(response.getInterferometerSettings()->getChannelMarker()); + } + else + { + SWGSDRangel::SWGChannelMarker *swgChannelMarker = new SWGSDRangel::SWGChannelMarker(); + settings.m_channelMarker->formatTo(swgChannelMarker); + response.getInterferometerSettings()->setChannelMarker(swgChannelMarker); + } + } } void Interferometer::webapiReverseSendSettings(QList& channelSettingsKeys, const InterferometerSettings& settings, bool force) @@ -492,6 +509,13 @@ void Interferometer::webapiFormatChannelSettings( settings.m_scopeGUI->formatTo(swgInterferometerSettings->getScopeConfig()); } } + + if (settings.m_channelMarker && (channelSettingsKeys.contains("channelMarker") || force)) + { + SWGSDRangel::SWGChannelMarker *swgChannelMarker = new SWGSDRangel::SWGChannelMarker(); + settings.m_channelMarker->formatTo(swgChannelMarker); + swgInterferometerSettings->setChannelMarker(swgChannelMarker); + } } void Interferometer::networkManagerFinished(QNetworkReply *reply) diff --git a/plugins/channelmimo/interferometer/interferometergui.cpp b/plugins/channelmimo/interferometer/interferometergui.cpp index 20ace3efe..f965cf2b2 100644 --- a/plugins/channelmimo/interferometer/interferometergui.cpp +++ b/plugins/channelmimo/interferometer/interferometergui.cpp @@ -87,6 +87,7 @@ bool InterferometerGUI::handleMessage(const Message& message) m_settings = notif.getSettings(); ui->scopeGUI->updateSettings(); ui->spectrumGUI->updateSettings(); + m_channelMarker.updateSettings(static_cast(m_settings.m_channelMarker)); displaySettings(); return true; } diff --git a/sdrbase/resources/webapi/doc/html2/index.html b/sdrbase/resources/webapi/doc/html2/index.html index 5f7687aed..7a079394a 100644 --- a/sdrbase/resources/webapi/doc/html2/index.html +++ b/sdrbase/resources/webapi/doc/html2/index.html @@ -2399,6 +2399,9 @@ margin-bottom: 20px; }, "reverseAPIChannelIndex" : { "type" : "integer" + }, + "channelMarker" : { + "$ref" : "#/definitions/ChannelMarker" } }, "description" : "BeamSteeringCWMod" @@ -6680,6 +6683,9 @@ margin-bottom: 20px; }, "scopeConfig" : { "$ref" : "#/definitions/GLScope" + }, + "channelMarker" : { + "$ref" : "#/definitions/ChannelMarker" } }, "description" : "Interferometer" @@ -51599,7 +51605,7 @@ except ApiException as e:
- Generated 2021-12-03T00:35:44.973+01:00 + Generated 2021-12-03T22:37:52.628+01:00
diff --git a/sdrbase/resources/webapi/doc/swagger/include/BeamSteeringCWMod.yaml b/sdrbase/resources/webapi/doc/swagger/include/BeamSteeringCWMod.yaml index dfa50c861..08d3b8910 100644 --- a/sdrbase/resources/webapi/doc/swagger/include/BeamSteeringCWMod.yaml +++ b/sdrbase/resources/webapi/doc/swagger/include/BeamSteeringCWMod.yaml @@ -22,3 +22,5 @@ BeamSteeringCWModSettings: type: integer reverseAPIChannelIndex: type: integer + channelMarker: + $ref: "/doc/swagger/include/ChannelMarker.yaml#/ChannelMarker" diff --git a/sdrbase/resources/webapi/doc/swagger/include/Interferometer.yaml b/sdrbase/resources/webapi/doc/swagger/include/Interferometer.yaml index 3b0e16478..83d95aceb 100644 --- a/sdrbase/resources/webapi/doc/swagger/include/Interferometer.yaml +++ b/sdrbase/resources/webapi/doc/swagger/include/Interferometer.yaml @@ -27,3 +27,5 @@ InterferometerSettings: $ref: "/doc/swagger/include/GLSpectrum.yaml#/GLSpectrum" scopeConfig: $ref: "/doc/swagger/include/GLScope.yaml#/GLScope" + channelMarker: + $ref: "/doc/swagger/include/ChannelMarker.yaml#/ChannelMarker" diff --git a/swagger/sdrangel/api/swagger/include/BeamSteeringCWMod.yaml b/swagger/sdrangel/api/swagger/include/BeamSteeringCWMod.yaml index dfa50c861..7e75f6d24 100644 --- a/swagger/sdrangel/api/swagger/include/BeamSteeringCWMod.yaml +++ b/swagger/sdrangel/api/swagger/include/BeamSteeringCWMod.yaml @@ -22,3 +22,5 @@ BeamSteeringCWModSettings: type: integer reverseAPIChannelIndex: type: integer + channelMarker: + $ref: "http://swgserver:8081/api/swagger/include/ChannelMarker.yaml#/ChannelMarker" diff --git a/swagger/sdrangel/api/swagger/include/Interferometer.yaml b/swagger/sdrangel/api/swagger/include/Interferometer.yaml index e041d44e5..9523e665d 100644 --- a/swagger/sdrangel/api/swagger/include/Interferometer.yaml +++ b/swagger/sdrangel/api/swagger/include/Interferometer.yaml @@ -27,3 +27,5 @@ InterferometerSettings: $ref: "http://swgserver:8081/api/swagger/include/GLSpectrum.yaml#/GLSpectrum" scopeConfig: $ref: "http://swgserver:8081/api/swagger/include/GLScope.yaml#/GLScope" + channelMarker: + $ref: "http://swgserver:8081/api/swagger/include/ChannelMarker.yaml#/ChannelMarker" diff --git a/swagger/sdrangel/code/html2/index.html b/swagger/sdrangel/code/html2/index.html index 5f7687aed..7a079394a 100644 --- a/swagger/sdrangel/code/html2/index.html +++ b/swagger/sdrangel/code/html2/index.html @@ -2399,6 +2399,9 @@ margin-bottom: 20px; }, "reverseAPIChannelIndex" : { "type" : "integer" + }, + "channelMarker" : { + "$ref" : "#/definitions/ChannelMarker" } }, "description" : "BeamSteeringCWMod" @@ -6680,6 +6683,9 @@ margin-bottom: 20px; }, "scopeConfig" : { "$ref" : "#/definitions/GLScope" + }, + "channelMarker" : { + "$ref" : "#/definitions/ChannelMarker" } }, "description" : "Interferometer" @@ -51599,7 +51605,7 @@ except ApiException as e:
- Generated 2021-12-03T00:35:44.973+01:00 + Generated 2021-12-03T22:37:52.628+01:00
diff --git a/swagger/sdrangel/code/qt5/client/SWGBeamSteeringCWModSettings.cpp b/swagger/sdrangel/code/qt5/client/SWGBeamSteeringCWModSettings.cpp index 1243f025d..674160fb5 100644 --- a/swagger/sdrangel/code/qt5/client/SWGBeamSteeringCWModSettings.cpp +++ b/swagger/sdrangel/code/qt5/client/SWGBeamSteeringCWModSettings.cpp @@ -48,6 +48,8 @@ SWGBeamSteeringCWModSettings::SWGBeamSteeringCWModSettings() { m_reverse_api_device_index_isSet = false; reverse_api_channel_index = 0; m_reverse_api_channel_index_isSet = false; + channel_marker = nullptr; + m_channel_marker_isSet = false; } SWGBeamSteeringCWModSettings::~SWGBeamSteeringCWModSettings() { @@ -76,6 +78,8 @@ SWGBeamSteeringCWModSettings::init() { m_reverse_api_device_index_isSet = false; reverse_api_channel_index = 0; m_reverse_api_channel_index_isSet = false; + channel_marker = new SWGChannelMarker(); + m_channel_marker_isSet = false; } void @@ -94,6 +98,9 @@ SWGBeamSteeringCWModSettings::cleanup() { + if(channel_marker != nullptr) { + delete channel_marker; + } } SWGBeamSteeringCWModSettings* @@ -127,6 +134,8 @@ SWGBeamSteeringCWModSettings::fromJsonObject(QJsonObject &pJson) { ::SWGSDRangel::setValue(&reverse_api_channel_index, pJson["reverseAPIChannelIndex"], "qint32", ""); + ::SWGSDRangel::setValue(&channel_marker, pJson["channelMarker"], "SWGChannelMarker", "SWGChannelMarker"); + } QString @@ -173,6 +182,9 @@ SWGBeamSteeringCWModSettings::asJsonObject() { if(m_reverse_api_channel_index_isSet){ obj->insert("reverseAPIChannelIndex", QJsonValue(reverse_api_channel_index)); } + if((channel_marker != nullptr) && (channel_marker->isSet())){ + toJsonValue(QString("channelMarker"), channel_marker, obj, QString("SWGChannelMarker")); + } return obj; } @@ -277,6 +289,16 @@ SWGBeamSteeringCWModSettings::setReverseApiChannelIndex(qint32 reverse_api_chann this->m_reverse_api_channel_index_isSet = true; } +SWGChannelMarker* +SWGBeamSteeringCWModSettings::getChannelMarker() { + return channel_marker; +} +void +SWGBeamSteeringCWModSettings::setChannelMarker(SWGChannelMarker* channel_marker) { + this->channel_marker = channel_marker; + this->m_channel_marker_isSet = true; +} + bool SWGBeamSteeringCWModSettings::isSet(){ @@ -312,6 +334,9 @@ SWGBeamSteeringCWModSettings::isSet(){ if(m_reverse_api_channel_index_isSet){ isObjectUpdated = true; break; } + if(channel_marker && channel_marker->isSet()){ + isObjectUpdated = true; break; + } }while(false); return isObjectUpdated; } diff --git a/swagger/sdrangel/code/qt5/client/SWGBeamSteeringCWModSettings.h b/swagger/sdrangel/code/qt5/client/SWGBeamSteeringCWModSettings.h index 31ec35da3..b11c82d76 100644 --- a/swagger/sdrangel/code/qt5/client/SWGBeamSteeringCWModSettings.h +++ b/swagger/sdrangel/code/qt5/client/SWGBeamSteeringCWModSettings.h @@ -22,6 +22,7 @@ #include +#include "SWGChannelMarker.h" #include #include "SWGObject.h" @@ -72,6 +73,9 @@ public: qint32 getReverseApiChannelIndex(); void setReverseApiChannelIndex(qint32 reverse_api_channel_index); + SWGChannelMarker* getChannelMarker(); + void setChannelMarker(SWGChannelMarker* channel_marker); + virtual bool isSet() override; @@ -106,6 +110,9 @@ private: qint32 reverse_api_channel_index; bool m_reverse_api_channel_index_isSet; + SWGChannelMarker* channel_marker; + bool m_channel_marker_isSet; + }; } diff --git a/swagger/sdrangel/code/qt5/client/SWGInterferometerSettings.cpp b/swagger/sdrangel/code/qt5/client/SWGInterferometerSettings.cpp index dac5cf74e..48a2d7317 100644 --- a/swagger/sdrangel/code/qt5/client/SWGInterferometerSettings.cpp +++ b/swagger/sdrangel/code/qt5/client/SWGInterferometerSettings.cpp @@ -52,6 +52,8 @@ SWGInterferometerSettings::SWGInterferometerSettings() { m_spectrum_config_isSet = false; scope_config = nullptr; m_scope_config_isSet = false; + channel_marker = nullptr; + m_channel_marker_isSet = false; } SWGInterferometerSettings::~SWGInterferometerSettings() { @@ -84,6 +86,8 @@ SWGInterferometerSettings::init() { m_spectrum_config_isSet = false; scope_config = new SWGGLScope(); m_scope_config_isSet = false; + channel_marker = new SWGChannelMarker(); + m_channel_marker_isSet = false; } void @@ -108,6 +112,9 @@ SWGInterferometerSettings::cleanup() { if(scope_config != nullptr) { delete scope_config; } + if(channel_marker != nullptr) { + delete channel_marker; + } } SWGInterferometerSettings* @@ -145,6 +152,8 @@ SWGInterferometerSettings::fromJsonObject(QJsonObject &pJson) { ::SWGSDRangel::setValue(&scope_config, pJson["scopeConfig"], "SWGGLScope", "SWGGLScope"); + ::SWGSDRangel::setValue(&channel_marker, pJson["channelMarker"], "SWGChannelMarker", "SWGChannelMarker"); + } QString @@ -197,6 +206,9 @@ SWGInterferometerSettings::asJsonObject() { if((scope_config != nullptr) && (scope_config->isSet())){ toJsonValue(QString("scopeConfig"), scope_config, obj, QString("SWGGLScope")); } + if((channel_marker != nullptr) && (channel_marker->isSet())){ + toJsonValue(QString("channelMarker"), channel_marker, obj, QString("SWGChannelMarker")); + } return obj; } @@ -321,6 +333,16 @@ SWGInterferometerSettings::setScopeConfig(SWGGLScope* scope_config) { this->m_scope_config_isSet = true; } +SWGChannelMarker* +SWGInterferometerSettings::getChannelMarker() { + return channel_marker; +} +void +SWGInterferometerSettings::setChannelMarker(SWGChannelMarker* channel_marker) { + this->channel_marker = channel_marker; + this->m_channel_marker_isSet = true; +} + bool SWGInterferometerSettings::isSet(){ @@ -362,6 +384,9 @@ SWGInterferometerSettings::isSet(){ if(scope_config && scope_config->isSet()){ isObjectUpdated = true; break; } + if(channel_marker && channel_marker->isSet()){ + isObjectUpdated = true; break; + } }while(false); return isObjectUpdated; } diff --git a/swagger/sdrangel/code/qt5/client/SWGInterferometerSettings.h b/swagger/sdrangel/code/qt5/client/SWGInterferometerSettings.h index 1e347307d..df89c48ea 100644 --- a/swagger/sdrangel/code/qt5/client/SWGInterferometerSettings.h +++ b/swagger/sdrangel/code/qt5/client/SWGInterferometerSettings.h @@ -22,6 +22,7 @@ #include +#include "SWGChannelMarker.h" #include "SWGGLScope.h" #include "SWGGLSpectrum.h" #include @@ -80,6 +81,9 @@ public: SWGGLScope* getScopeConfig(); void setScopeConfig(SWGGLScope* scope_config); + SWGChannelMarker* getChannelMarker(); + void setChannelMarker(SWGChannelMarker* channel_marker); + virtual bool isSet() override; @@ -120,6 +124,9 @@ private: SWGGLScope* scope_config; bool m_scope_config_isSet; + SWGChannelMarker* channel_marker; + bool m_channel_marker_isSet; + }; }