From 9a16afd74432f37cada55aefd338b98a5ad2da55 Mon Sep 17 00:00:00 2001 From: f4exb Date: Sat, 15 Jan 2022 19:19:47 +0100 Subject: [PATCH] API: added histogram and waterfall markers to spectrum settings --- sdrbase/dsp/spectrumsettings.cpp | 86 +++++++ sdrbase/dsp/spectrumsettings.h | 4 + sdrbase/dsp/spectrumvis.cpp | 114 +------- sdrbase/resources/webapi/doc/html2/index.html | 62 ++++- .../doc/swagger/include/GLSpectrum.yaml | 55 ++++ sdrbase/webapi/webapirequestmapper.cpp | 243 +++++++++--------- sdrgui/gui/glspectrumgui.cpp | 8 + .../api/swagger/include/GLSpectrum.yaml | 55 ++++ swagger/sdrangel/code/html2/index.html | 62 ++++- .../code/qt5/client/SWGGLSpectrum.cpp | 58 +++++ .../sdrangel/code/qt5/client/SWGGLSpectrum.h | 15 ++ .../code/qt5/client/SWGModelFactory.h | 12 + .../qt5/client/SWGSpectrumHistogramMarker.cpp | 200 ++++++++++++++ .../qt5/client/SWGSpectrumHistogramMarker.h | 82 ++++++ .../qt5/client/SWGSpectrumWaterfallMarker.cpp | 177 +++++++++++++ .../qt5/client/SWGSpectrumWaterfallMarker.h | 76 ++++++ 16 files changed, 1080 insertions(+), 229 deletions(-) create mode 100644 swagger/sdrangel/code/qt5/client/SWGSpectrumHistogramMarker.cpp create mode 100644 swagger/sdrangel/code/qt5/client/SWGSpectrumHistogramMarker.h create mode 100644 swagger/sdrangel/code/qt5/client/SWGSpectrumWaterfallMarker.cpp create mode 100644 swagger/sdrangel/code/qt5/client/SWGSpectrumWaterfallMarker.h diff --git a/sdrbase/dsp/spectrumsettings.cpp b/sdrbase/dsp/spectrumsettings.cpp index 357353514..1792d0f0f 100644 --- a/sdrbase/dsp/spectrumsettings.cpp +++ b/sdrbase/dsp/spectrumsettings.cpp @@ -224,6 +224,38 @@ void SpectrumSettings::formatTo(SWGSDRangel::SWGObject *swgObject) const swgSpectrum->setDisplayWaterfall(m_displayWaterfall ? 1 : 0); swgSpectrum->setDisplayGrid(m_displayGrid ? 1 : 0); swgSpectrum->setDisplayGridIntensity(m_displayGridIntensity); + swgSpectrum->setSsb(m_ssb ? 1 : 0); + swgSpectrum->setUsb(m_usb ? 1 : 0); + swgSpectrum->setWaterfallShare(m_waterfallShare); + + if (m_histogramMarkers.size() > 0) + { + swgSpectrum->setHistogramMarkers(new QList); + + for (const auto &marker : m_histogramMarkers) + { + swgSpectrum->getHistogramMarkers()->append(new SWGSDRangel::SWGSpectrumHistogramMarker); + swgSpectrum->getHistogramMarkers()->back()->setFrequency(marker.m_frequency); + swgSpectrum->getHistogramMarkers()->back()->setPower(marker.m_power); + swgSpectrum->getHistogramMarkers()->back()->setMarkerType((int) marker.m_markerType); + swgSpectrum->getHistogramMarkers()->back()->setMarkerColor(qColorToInt(marker.m_markerColor)); + swgSpectrum->getHistogramMarkers()->back()->setShow(marker.m_show ? 1 : 0); + } + } + + if (m_waterfallMarkers.size() > 0) + { + swgSpectrum->setWaterfallMarkers(new QList); + + for (const auto &marker : m_waterfallMarkers) + { + swgSpectrum->getWaterfallMarkers()->append(new SWGSDRangel::SWGSpectrumWaterfallMarker); + swgSpectrum->getWaterfallMarkers()->back()->setFrequency(marker.m_frequency); + swgSpectrum->getWaterfallMarkers()->back()->setTime(marker.m_time); + swgSpectrum->getWaterfallMarkers()->back()->setMarkerColor(qColorToInt(marker.m_markerColor)); + swgSpectrum->getWaterfallMarkers()->back()->setShow(marker.m_show ? 1 : 0); + } + } } void SpectrumSettings::updateFrom(const QStringList& keys, const SWGSDRangel::SWGObject *swgObject) @@ -305,6 +337,46 @@ void SpectrumSettings::updateFrom(const QStringList& keys, const SWGSDRangel::SW if (keys.contains("spectrumConfig.displayGridIntensity")) { m_displayGridIntensity = swgSpectrum->getDisplayGridIntensity(); } + if (keys.contains("spectrumConfig.ssb")) { + m_ssb = swgSpectrum->getSsb() != 0; + } + if (keys.contains("spectrumConfig.usb")) { + m_usb = swgSpectrum->getUsb() != 0; + } + if (keys.contains("spectrumConfig.waterfallShare")) { + m_waterfallShare = swgSpectrum->getWaterfallShare(); + } + + if (keys.contains("spectrumConfig.histogramMarkers")) + { + QList *swgHistogramMarkers = swgSpectrum->getHistogramMarkers(); + m_histogramMarkers.clear(); + + for (const auto &swgHistogramMarker : *swgHistogramMarkers) + { + m_histogramMarkers.push_back(SpectrumHistogramMarker()); + m_histogramMarkers.back().m_frequency = swgHistogramMarker->getFrequency(); + m_histogramMarkers.back().m_power = swgHistogramMarker->getPower(); + m_histogramMarkers.back().m_markerType = (SpectrumHistogramMarker::SpectrumMarkerType) swgHistogramMarker->getMarkerType(); + m_histogramMarkers.back().m_markerColor = intToQColor(swgHistogramMarker->getMarkerColor()); + m_histogramMarkers.back().m_show = swgHistogramMarker->getShow() != 0; + } + } + + if (keys.contains("spectrumConfig.waterfallMarkers")) + { + QList *swgWaterfallMarkers = swgSpectrum->getWaterfallMarkers(); + m_waterfallMarkers.clear(); + + for (const auto &swgWaterfallMarker : *swgWaterfallMarkers) + { + m_waterfallMarkers.push_back(SpectrumWaterfallMarker()); + m_waterfallMarkers.back().m_frequency = swgWaterfallMarker->getFrequency(); + m_waterfallMarkers.back().m_time = swgWaterfallMarker->getTime(); + m_waterfallMarkers.back().m_markerColor = intToQColor(swgWaterfallMarker->getMarkerColor()); + m_waterfallMarkers.back().m_show = swgWaterfallMarker->getShow() != 0; + } + } } int SpectrumSettings::getAveragingMaxScale(AveragingMode averagingMode) @@ -381,3 +453,17 @@ uint64_t SpectrumSettings::getMaxAveragingValue(int fftSize, AveragingMode avera return (1<<20); // fixed 1 MS } } + +int SpectrumSettings::qColorToInt(const QColor& color) +{ + return 256*256*color.blue() + 256*color.green() + color.red(); +} + +QColor SpectrumSettings::intToQColor(int intColor) +{ + int r = intColor % 256; + int bg = intColor / 256; + int g = bg % 256; + int b = bg / 256; + return QColor(r, g, b); +} diff --git a/sdrbase/dsp/spectrumsettings.h b/sdrbase/dsp/spectrumsettings.h index 28098b98c..665dc54ae 100644 --- a/sdrbase/dsp/spectrumsettings.h +++ b/sdrbase/dsp/spectrumsettings.h @@ -92,6 +92,10 @@ public: static int getAveragingValue(int averagingIndex, AveragingMode averagingMode); static int getAveragingIndex(int averagingValue, AveragingMode averagingMode); static uint64_t getMaxAveragingValue(int fftSize, AveragingMode averagingMode); + +private: + static int qColorToInt(const QColor& color); + static QColor intToQColor(int intColor); }; #endif // SDRBASE_DSP_SPECTRUMSETTNGS_H diff --git a/sdrbase/dsp/spectrumvis.cpp b/sdrbase/dsp/spectrumvis.cpp index a0fd79a0b..5e6d553fa 100644 --- a/sdrbase/dsp/spectrumvis.cpp +++ b/sdrbase/dsp/spectrumvis.cpp @@ -1040,36 +1040,7 @@ int SpectrumVis::webapiSpectrumServerDelete(SWGSDRangel::SWGSuccessResponse& res void SpectrumVis::webapiFormatSpectrumSettings(SWGSDRangel::SWGGLSpectrum& response, const SpectrumSettings& settings) { - response.setFftSize(settings.m_fftSize); - response.setFftOverlap(settings.m_fftOverlap); - response.setFftWindow((int) settings.m_fftWindow); - response.setRefLevel(settings.m_refLevel); - response.setPowerRange(settings.m_powerRange); - response.setFpsPeriodMs(settings.m_fpsPeriodMs); - response.setDecay(settings.m_decay); - response.setDecayDivisor(settings.m_decayDivisor); - response.setHistogramStroke(settings.m_histogramStroke); - response.setDisplayGridIntensity(settings.m_displayGridIntensity); - response.setDisplayTraceIntensity(settings.m_displayTraceIntensity); - response.setDisplayWaterfall(settings.m_displayWaterfall ? 1 : 0); - response.setInvertedWaterfall(settings.m_invertedWaterfall ? 1 : 0); - response.setWaterfallShare(settings.m_waterfallShare); - response.setDisplayMaxHold(settings.m_displayMaxHold ? 1 : 0); - response.setDisplayCurrent(settings.m_displayCurrent ? 1 : 0); - response.setDisplayHistogram(settings.m_displayHistogram ? 1 : 0); - response.setDisplayGrid(settings.m_displayGrid ? 1 : 0); - response.setAveragingMode((int) settings.m_averagingMode); - response.setAveragingValue(SpectrumSettings::getAveragingValue(settings.m_averagingIndex, settings.m_averagingMode)); - response.setLinear(settings.m_linear ? 1 : 0); - response.setSsb(settings.m_ssb ? 1 : 0); - response.setUsb(settings.m_usb ? 1 : 0); - response.setWsSpectrumPort(settings.m_wsSpectrumPort); - - if (response.getWsSpectrumAddress()) { - *response.getWsSpectrumAddress() = settings.m_wsSpectrumAddress; - } else { - response.setWsSpectrumAddress(new QString(settings.m_wsSpectrumAddress)); - } + settings.formatTo(&response); } void SpectrumVis::webapiUpdateSpectrumSettings( @@ -1077,82 +1048,11 @@ void SpectrumVis::webapiUpdateSpectrumSettings( const QStringList& spectrumSettingsKeys, SWGSDRangel::SWGGLSpectrum& response) { - if (spectrumSettingsKeys.contains("fftSize")) { - settings.m_fftSize = response.getFftSize(); - } - if (spectrumSettingsKeys.contains("fftOverlap")) { - settings.m_fftOverlap = response.getFftOverlap(); - } - if (spectrumSettingsKeys.contains("fftWindow")) { - settings.m_fftWindow = (FFTWindow::Function) response.getFftWindow(); - } - if (spectrumSettingsKeys.contains("refLevel")) { - settings.m_refLevel = response.getRefLevel(); - } - if (spectrumSettingsKeys.contains("powerRange")) { - settings.m_powerRange = response.getPowerRange(); - } - if (spectrumSettingsKeys.contains("fpsPeriodMs")) { - settings.m_fpsPeriodMs = response.getFpsPeriodMs(); - } - if (spectrumSettingsKeys.contains("decay")) { - settings.m_decay = response.getDecay(); - } - if (spectrumSettingsKeys.contains("decayDivisor")) { - settings.m_decayDivisor = response.getDecayDivisor(); - } - if (spectrumSettingsKeys.contains("histogramStroke")) { - settings.m_histogramStroke = response.getHistogramStroke(); - } - if (spectrumSettingsKeys.contains("displayGridIntensity")) { - settings.m_displayGridIntensity = response.getDisplayGridIntensity(); - } - if (spectrumSettingsKeys.contains("displayTraceIntensity")) { - settings.m_displayTraceIntensity = response.getDisplayTraceIntensity(); - } - if (spectrumSettingsKeys.contains("displayWaterfall")) { - settings.m_displayWaterfall = response.getDisplayWaterfall() != 0; - } - if (spectrumSettingsKeys.contains("invertedWaterfall")) { - settings.m_invertedWaterfall = response.getInvertedWaterfall() != 0; - } - if (spectrumSettingsKeys.contains("waterfallShare")) { - settings.m_waterfallShare = response.getWaterfallShare(); - } - if (spectrumSettingsKeys.contains("displayMaxHold")) { - settings.m_displayMaxHold = response.getDisplayMaxHold() != 0; - } - if (spectrumSettingsKeys.contains("displayCurrent")) { - settings.m_displayCurrent = response.getDisplayCurrent() != 0; - } - if (spectrumSettingsKeys.contains("displayHistogram")) { - settings.m_displayHistogram = response.getDisplayHistogram() != 0; - } - if (spectrumSettingsKeys.contains("displayGrid")) { - settings.m_displayGrid = response.getDisplayGrid() != 0; - } - if (spectrumSettingsKeys.contains("averagingMode")) { - settings.m_averagingMode = (SpectrumSettings::AveragingMode) response.getAveragingMode(); - } - if (spectrumSettingsKeys.contains("averagingValue")) - { - qint32 tmp = response.getAveragingValue(); - settings.m_averagingIndex = SpectrumSettings::getAveragingIndex(tmp, settings.m_averagingMode); - settings.m_averagingValue = SpectrumSettings::getAveragingValue(settings.m_averagingIndex, settings.m_averagingMode); - } - if (spectrumSettingsKeys.contains("linear")) { - settings.m_linear = response.getLinear() != 0; - } - if (spectrumSettingsKeys.contains("ssb")) { - settings.m_ssb = response.getSsb() != 0; - } - if (spectrumSettingsKeys.contains("usb")) { - settings.m_usb = response.getUsb() != 0; - } - if (spectrumSettingsKeys.contains("wsSpectrumAddress")) { - settings.m_wsSpectrumAddress = *response.getWsSpectrumAddress(); - } - if (spectrumSettingsKeys.contains("wsSpectrumPort")) { - settings.m_wsSpectrumPort = response.getWsSpectrumPort(); + QStringList prefixedKeys; + + for (const auto &key : spectrumSettingsKeys) { + prefixedKeys.append(tr("spectrumConfig.%1").arg(key)); } + + settings.updateFrom(prefixedKeys, &response); } diff --git a/sdrbase/resources/webapi/doc/html2/index.html b/sdrbase/resources/webapi/doc/html2/index.html index 0762ffa0f..f38f4db06 100644 --- a/sdrbase/resources/webapi/doc/html2/index.html +++ b/sdrbase/resources/webapi/doc/html2/index.html @@ -6150,6 +6150,18 @@ margin-bottom: 20px; "wsSpectrumPort" : { "type" : "integer", "description" : "port on which the websocket server is listening" + }, + "histogramMarkers" : { + "type" : "array", + "items" : { + "$ref" : "#/definitions/SpectrumHistogramMarker" + } + }, + "waterfallMarkers" : { + "type" : "array", + "items" : { + "$ref" : "#/definitions/SpectrumWaterfallMarker" + } } }, "description" : "GLSpectrumGUI settings" @@ -11770,6 +11782,32 @@ margin-bottom: 20px; } }, "description" : "SoapySDR" +}; + defs.SpectrumHistogramMarker = { + "properties" : { + "frequency" : { + "type" : "number", + "format" : "float" + }, + "power" : { + "type" : "number", + "format" : "float", + "description" : "Fixed power mark" + }, + "markerType" : { + "type" : "integer", + "description" : "Marker type\n * 0 - Fixed power\n * 1 - Current power\n * 2 - Max power\n" + }, + "markerColor" : { + "type" : "integer", + "description" : "Color in 8 bit RGB serie" + }, + "show" : { + "type" : "integer", + "description" : "Boolean - Marker display state\n * 0 - Hidden\n * 1 - Visible\n" + } + }, + "description" : "Spectrum histogram marker settings" }; defs.SpectrumServer = { "properties" : { @@ -11802,6 +11840,28 @@ margin-bottom: 20px; "type" : "integer" } } +}; + defs.SpectrumWaterfallMarker = { + "properties" : { + "frequency" : { + "type" : "number", + "format" : "float" + }, + "time" : { + "type" : "number", + "format" : "float", + "description" : "Time shift in seconds" + }, + "markerColor" : { + "type" : "integer", + "description" : "Color in 8 bit RGB serie" + }, + "show" : { + "type" : "integer", + "description" : "Boolean - Marker display state\n * 0 - Hidden\n * 1 - Visible\n" + } + }, + "description" : "Spectrum waterfall marker settings" }; defs.StarTrackerActions = { "properties" : { @@ -51883,7 +51943,7 @@ except ApiException as e:
- Generated 2022-01-09T04:50:11.883+01:00 + Generated 2022-01-15T03:12:23.419+01:00
diff --git a/sdrbase/resources/webapi/doc/swagger/include/GLSpectrum.yaml b/sdrbase/resources/webapi/doc/swagger/include/GLSpectrum.yaml index d931dc488..09a0c1564 100644 --- a/sdrbase/resources/webapi/doc/swagger/include/GLSpectrum.yaml +++ b/sdrbase/resources/webapi/doc/swagger/include/GLSpectrum.yaml @@ -1,3 +1,50 @@ +SpectrumHistogramMarker: + description: Spectrum histogram marker settings + properties: + frequency: + type: number + format: float + power: + type: number + format: float + description: Fixed power mark + markerType: + type: integer + description: > + Marker type + * 0 - Fixed power + * 1 - Current power + * 2 - Max power + markerColor: + type: integer + description: Color in 8 bit RGB serie + show: + type: integer + description: > + Boolean - Marker display state + * 0 - Hidden + * 1 - Visible + +SpectrumWaterfallMarker: + description: Spectrum waterfall marker settings + properties: + frequency: + type: number + format: float + time: + type: number + format: float + description: Time shift in seconds + markerColor: + type: integer + description: Color in 8 bit RGB serie + show: + type: integer + description: > + Boolean - Marker display state + * 0 - Hidden + * 1 - Visible + GLSpectrum: description: GLSpectrumGUI settings properties: @@ -74,3 +121,11 @@ GLSpectrum: wsSpectrumPort: description: port on which the websocket server is listening type: integer + histogramMarkers: + type: array + items: + $ref: "/doc/swagger/include/GLSpectrum.yaml#/SpectrumHistogramMarker" + waterfallMarkers: + type: array + items: + $ref: "/doc/swagger/include/GLSpectrum.yaml#/SpectrumWaterfallMarker" diff --git a/sdrbase/webapi/webapirequestmapper.cpp b/sdrbase/webapi/webapirequestmapper.cpp index d5427b4a4..c43d78f13 100644 --- a/sdrbase/webapi/webapirequestmapper.cpp +++ b/sdrbase/webapi/webapirequestmapper.cpp @@ -3709,126 +3709,129 @@ bool WebAPIRequestMapper::validateLimeRFEConfig(SWGSDRangel::SWGLimeRFESettings& bool WebAPIRequestMapper::validateSpectrumSettings(SWGSDRangel::SWGGLSpectrum& spectrumSettings, QJsonObject& jsonObject, QStringList& spectrumSettingsKeys) { - if (jsonObject.contains("fftSize")) - { - spectrumSettings.setFftSize(jsonObject["fftSize"].toInt(1024)); - spectrumSettingsKeys.append("fftSize"); - } - if (jsonObject.contains("fftOverlap")) - { - spectrumSettings.setFftOverlap(jsonObject["fftOverlap"].toInt(0)); - spectrumSettingsKeys.append("fftOverlap"); - } - if (jsonObject.contains("fftWindow")) - { - spectrumSettings.setFftWindow(jsonObject["fftWindow"].toInt(0)); - spectrumSettingsKeys.append("fftWindow"); - } - if (jsonObject.contains("refLevel")) - { - spectrumSettings.setRefLevel(jsonObject["refLevel"].toDouble(0.0)); - spectrumSettingsKeys.append("refLevel"); - } - if (jsonObject.contains("powerRange")) - { - spectrumSettings.setPowerRange(jsonObject["powerRange"].toDouble(100.0)); - spectrumSettingsKeys.append("powerRange"); - } - if (jsonObject.contains("fpsPeriodMs")) - { - spectrumSettings.setFpsPeriodMs(jsonObject["fpsPeriodMs"].toInt(50)); - spectrumSettingsKeys.append("fpsPeriodMs"); - } - if (jsonObject.contains("displayWaterfall")) - { - spectrumSettings.setDisplayWaterfall(jsonObject["displayWaterfall"].toInt(0)); - spectrumSettingsKeys.append("displayWaterfall"); - } - if (jsonObject.contains("invertedWaterfall")) - { - spectrumSettings.setInvertedWaterfall(jsonObject["invertedWaterfall"].toInt(0)); - spectrumSettingsKeys.append("invertedWaterfall"); - } - if (jsonObject.contains("displayHistogram")) - { - spectrumSettings.setDisplayHistogram(jsonObject["displayHistogram"].toInt(0)); - spectrumSettingsKeys.append("displayHistogram"); - } - if (jsonObject.contains("decay")) - { - spectrumSettings.setDecay(jsonObject["decay"].toInt(1)); - spectrumSettingsKeys.append("decay"); - } - if (jsonObject.contains("displayGrid")) - { - spectrumSettings.setDisplayGrid(jsonObject["displayGrid"].toInt(0)); - spectrumSettingsKeys.append("displayGrid"); - } - if (jsonObject.contains("displayGridIntensity")) - { - spectrumSettings.setDisplayGridIntensity(jsonObject["displayGridIntensity"].toInt(30)); - spectrumSettingsKeys.append("displayGridIntensity"); - } - if (jsonObject.contains("decayDivisor")) - { - spectrumSettings.setDecayDivisor(jsonObject["decayDivisor"].toInt(1)); - spectrumSettingsKeys.append("decayDivisor"); - } - if (jsonObject.contains("histogramStroke")) - { - spectrumSettings.setHistogramStroke(jsonObject["histogramStroke"].toInt(10)); - spectrumSettingsKeys.append("histogramStroke"); - } - if (jsonObject.contains("displayCurrent")) - { - spectrumSettings.setDisplayCurrent(jsonObject["displayCurrent"].toInt(1)); - spectrumSettingsKeys.append("displayCurrent"); - } - if (jsonObject.contains("displayTraceIntensity")) - { - spectrumSettings.setDisplayTraceIntensity(jsonObject["displayTraceIntensity"].toInt(50)); - spectrumSettingsKeys.append("displayTraceIntensity"); - } - if (jsonObject.contains("waterfallShare")) - { - spectrumSettings.setWaterfallShare(jsonObject["waterfallShare"].toDouble(0.5)); - spectrumSettingsKeys.append("waterfallShare"); - } - if (jsonObject.contains("averagingMode")) - { - spectrumSettings.setAveragingMode(jsonObject["averagingMode"].toInt(0)); - spectrumSettingsKeys.append("averagingMode"); - } - if (jsonObject.contains("averagingValue")) - { - spectrumSettings.setAveragingValue(jsonObject["averagingValue"].toInt(0)); - spectrumSettingsKeys.append("averagingValue"); - } - if (jsonObject.contains("linear")) - { - spectrumSettings.setLinear(jsonObject["linear"].toInt(0)); - spectrumSettingsKeys.append("linear"); - } - if (jsonObject.contains("ssb")) - { - spectrumSettings.setSsb(jsonObject["ssb"].toInt(0)); - spectrumSettingsKeys.append("ssb"); - } - if (jsonObject.contains("usb")) - { - spectrumSettings.setUsb(jsonObject["usb"].toInt(1)); - spectrumSettingsKeys.append("usb"); - } - if (jsonObject.contains("wsSpectrumAddress") && jsonObject["wsSpectrumAddress"].isString()) - { - spectrumSettings.setWsSpectrumAddress(new QString(jsonObject["wsSpectrumAddress"].toString())); - spectrumSettingsKeys.append("wsSpectrumAddress"); - } - if (jsonObject.contains("wsSpectrumPort")) - { - spectrumSettings.setWsSpectrumPort(jsonObject["wsSpectrumPort"].toInt(8887)); - spectrumSettingsKeys.append("wsSpectrumPort"); - } + extractKeys(jsonObject, spectrumSettingsKeys); + spectrumSettings.init(); + spectrumSettings.fromJsonObject(jsonObject); + // if (jsonObject.contains("fftSize")) + // { + // spectrumSettings.setFftSize(jsonObject["fftSize"].toInt(1024)); + // spectrumSettingsKeys.append("fftSize"); + // } + // if (jsonObject.contains("fftOverlap")) + // { + // spectrumSettings.setFftOverlap(jsonObject["fftOverlap"].toInt(0)); + // spectrumSettingsKeys.append("fftOverlap"); + // } + // if (jsonObject.contains("fftWindow")) + // { + // spectrumSettings.setFftWindow(jsonObject["fftWindow"].toInt(0)); + // spectrumSettingsKeys.append("fftWindow"); + // } + // if (jsonObject.contains("refLevel")) + // { + // spectrumSettings.setRefLevel(jsonObject["refLevel"].toDouble(0.0)); + // spectrumSettingsKeys.append("refLevel"); + // } + // if (jsonObject.contains("powerRange")) + // { + // spectrumSettings.setPowerRange(jsonObject["powerRange"].toDouble(100.0)); + // spectrumSettingsKeys.append("powerRange"); + // } + // if (jsonObject.contains("fpsPeriodMs")) + // { + // spectrumSettings.setFpsPeriodMs(jsonObject["fpsPeriodMs"].toInt(50)); + // spectrumSettingsKeys.append("fpsPeriodMs"); + // } + // if (jsonObject.contains("displayWaterfall")) + // { + // spectrumSettings.setDisplayWaterfall(jsonObject["displayWaterfall"].toInt(0)); + // spectrumSettingsKeys.append("displayWaterfall"); + // } + // if (jsonObject.contains("invertedWaterfall")) + // { + // spectrumSettings.setInvertedWaterfall(jsonObject["invertedWaterfall"].toInt(0)); + // spectrumSettingsKeys.append("invertedWaterfall"); + // } + // if (jsonObject.contains("displayHistogram")) + // { + // spectrumSettings.setDisplayHistogram(jsonObject["displayHistogram"].toInt(0)); + // spectrumSettingsKeys.append("displayHistogram"); + // } + // if (jsonObject.contains("decay")) + // { + // spectrumSettings.setDecay(jsonObject["decay"].toInt(1)); + // spectrumSettingsKeys.append("decay"); + // } + // if (jsonObject.contains("displayGrid")) + // { + // spectrumSettings.setDisplayGrid(jsonObject["displayGrid"].toInt(0)); + // spectrumSettingsKeys.append("displayGrid"); + // } + // if (jsonObject.contains("displayGridIntensity")) + // { + // spectrumSettings.setDisplayGridIntensity(jsonObject["displayGridIntensity"].toInt(30)); + // spectrumSettingsKeys.append("displayGridIntensity"); + // } + // if (jsonObject.contains("decayDivisor")) + // { + // spectrumSettings.setDecayDivisor(jsonObject["decayDivisor"].toInt(1)); + // spectrumSettingsKeys.append("decayDivisor"); + // } + // if (jsonObject.contains("histogramStroke")) + // { + // spectrumSettings.setHistogramStroke(jsonObject["histogramStroke"].toInt(10)); + // spectrumSettingsKeys.append("histogramStroke"); + // } + // if (jsonObject.contains("displayCurrent")) + // { + // spectrumSettings.setDisplayCurrent(jsonObject["displayCurrent"].toInt(1)); + // spectrumSettingsKeys.append("displayCurrent"); + // } + // if (jsonObject.contains("displayTraceIntensity")) + // { + // spectrumSettings.setDisplayTraceIntensity(jsonObject["displayTraceIntensity"].toInt(50)); + // spectrumSettingsKeys.append("displayTraceIntensity"); + // } + // if (jsonObject.contains("waterfallShare")) + // { + // spectrumSettings.setWaterfallShare(jsonObject["waterfallShare"].toDouble(0.5)); + // spectrumSettingsKeys.append("waterfallShare"); + // } + // if (jsonObject.contains("averagingMode")) + // { + // spectrumSettings.setAveragingMode(jsonObject["averagingMode"].toInt(0)); + // spectrumSettingsKeys.append("averagingMode"); + // } + // if (jsonObject.contains("averagingValue")) + // { + // spectrumSettings.setAveragingValue(jsonObject["averagingValue"].toInt(0)); + // spectrumSettingsKeys.append("averagingValue"); + // } + // if (jsonObject.contains("linear")) + // { + // spectrumSettings.setLinear(jsonObject["linear"].toInt(0)); + // spectrumSettingsKeys.append("linear"); + // } + // if (jsonObject.contains("ssb")) + // { + // spectrumSettings.setSsb(jsonObject["ssb"].toInt(0)); + // spectrumSettingsKeys.append("ssb"); + // } + // if (jsonObject.contains("usb")) + // { + // spectrumSettings.setUsb(jsonObject["usb"].toInt(1)); + // spectrumSettingsKeys.append("usb"); + // } + // if (jsonObject.contains("wsSpectrumAddress") && jsonObject["wsSpectrumAddress"].isString()) + // { + // spectrumSettings.setWsSpectrumAddress(new QString(jsonObject["wsSpectrumAddress"].toString())); + // spectrumSettingsKeys.append("wsSpectrumAddress"); + // } + // if (jsonObject.contains("wsSpectrumPort")) + // { + // spectrumSettings.setWsSpectrumPort(jsonObject["wsSpectrumPort"].toInt(8887)); + // spectrumSettingsKeys.append("wsSpectrumPort"); + // } return true; } diff --git a/sdrgui/gui/glspectrumgui.cpp b/sdrgui/gui/glspectrumgui.cpp index 11302d7dd..022f19f6a 100644 --- a/sdrgui/gui/glspectrumgui.cpp +++ b/sdrgui/gui/glspectrumgui.cpp @@ -247,6 +247,9 @@ void GLSpectrumGUI::applySpectrumSettings() m_glSpectrum->setPowerRange(powerRange); m_glSpectrum->setFPSPeriodMs(m_settings.m_fpsPeriodMs); m_glSpectrum->setLinear(m_settings.m_linear); + + m_glSpectrum->setHistogramMarkers(m_settings.m_histogramMarkers); + m_glSpectrum->setWaterfallMarkers(m_settings.m_waterfallMarkers); } void GLSpectrumGUI::on_fftWindow_currentIndexChanged(int index) @@ -375,6 +378,11 @@ void GLSpectrumGUI::on_markers_clicked(bool checked) connect(&markersDialog, SIGNAL(updateWaterfall()), this, SLOT(updateWaterfallMarkers())); markersDialog.exec(); + + m_settings.m_histogramMarkers = m_glSpectrum->getHistogramMarkers(); + m_settings.m_waterfallMarkers = m_glSpectrum->getWaterfallMarkers(); + + applySettings(); } void GLSpectrumGUI::on_refLevel_valueChanged(int value) diff --git a/swagger/sdrangel/api/swagger/include/GLSpectrum.yaml b/swagger/sdrangel/api/swagger/include/GLSpectrum.yaml index d931dc488..a644f40c8 100644 --- a/swagger/sdrangel/api/swagger/include/GLSpectrum.yaml +++ b/swagger/sdrangel/api/swagger/include/GLSpectrum.yaml @@ -1,3 +1,50 @@ +SpectrumHistogramMarker: + description: Spectrum histogram marker settings + properties: + frequency: + type: number + format: float + power: + type: number + format: float + description: Fixed power mark + markerType: + type: integer + description: > + Marker type + * 0 - Fixed power + * 1 - Current power + * 2 - Max power + markerColor: + type: integer + description: Color in 8 bit RGB serie + show: + type: integer + description: > + Boolean - Marker display state + * 0 - Hidden + * 1 - Visible + +SpectrumWaterfallMarker: + description: Spectrum waterfall marker settings + properties: + frequency: + type: number + format: float + time: + type: number + format: float + description: Time shift in seconds + markerColor: + type: integer + description: Color in 8 bit RGB serie + show: + type: integer + description: > + Boolean - Marker display state + * 0 - Hidden + * 1 - Visible + GLSpectrum: description: GLSpectrumGUI settings properties: @@ -74,3 +121,11 @@ GLSpectrum: wsSpectrumPort: description: port on which the websocket server is listening type: integer + histogramMarkers: + type: array + items: + $ref: "http://swgserver:8081/api/swagger/include/GLSpectrum.yaml#/SpectrumHistogramMarker" + waterfallMarkers: + type: array + items: + $ref: "http://swgserver:8081/api/swagger/include/GLSpectrum.yaml#/SpectrumWaterfallMarker" diff --git a/swagger/sdrangel/code/html2/index.html b/swagger/sdrangel/code/html2/index.html index 0762ffa0f..f38f4db06 100644 --- a/swagger/sdrangel/code/html2/index.html +++ b/swagger/sdrangel/code/html2/index.html @@ -6150,6 +6150,18 @@ margin-bottom: 20px; "wsSpectrumPort" : { "type" : "integer", "description" : "port on which the websocket server is listening" + }, + "histogramMarkers" : { + "type" : "array", + "items" : { + "$ref" : "#/definitions/SpectrumHistogramMarker" + } + }, + "waterfallMarkers" : { + "type" : "array", + "items" : { + "$ref" : "#/definitions/SpectrumWaterfallMarker" + } } }, "description" : "GLSpectrumGUI settings" @@ -11770,6 +11782,32 @@ margin-bottom: 20px; } }, "description" : "SoapySDR" +}; + defs.SpectrumHistogramMarker = { + "properties" : { + "frequency" : { + "type" : "number", + "format" : "float" + }, + "power" : { + "type" : "number", + "format" : "float", + "description" : "Fixed power mark" + }, + "markerType" : { + "type" : "integer", + "description" : "Marker type\n * 0 - Fixed power\n * 1 - Current power\n * 2 - Max power\n" + }, + "markerColor" : { + "type" : "integer", + "description" : "Color in 8 bit RGB serie" + }, + "show" : { + "type" : "integer", + "description" : "Boolean - Marker display state\n * 0 - Hidden\n * 1 - Visible\n" + } + }, + "description" : "Spectrum histogram marker settings" }; defs.SpectrumServer = { "properties" : { @@ -11802,6 +11840,28 @@ margin-bottom: 20px; "type" : "integer" } } +}; + defs.SpectrumWaterfallMarker = { + "properties" : { + "frequency" : { + "type" : "number", + "format" : "float" + }, + "time" : { + "type" : "number", + "format" : "float", + "description" : "Time shift in seconds" + }, + "markerColor" : { + "type" : "integer", + "description" : "Color in 8 bit RGB serie" + }, + "show" : { + "type" : "integer", + "description" : "Boolean - Marker display state\n * 0 - Hidden\n * 1 - Visible\n" + } + }, + "description" : "Spectrum waterfall marker settings" }; defs.StarTrackerActions = { "properties" : { @@ -51883,7 +51943,7 @@ except ApiException as e:
- Generated 2022-01-09T04:50:11.883+01:00 + Generated 2022-01-15T03:12:23.419+01:00
diff --git a/swagger/sdrangel/code/qt5/client/SWGGLSpectrum.cpp b/swagger/sdrangel/code/qt5/client/SWGGLSpectrum.cpp index 2be71acb2..caf795dac 100644 --- a/swagger/sdrangel/code/qt5/client/SWGGLSpectrum.cpp +++ b/swagger/sdrangel/code/qt5/client/SWGGLSpectrum.cpp @@ -80,6 +80,10 @@ SWGGLSpectrum::SWGGLSpectrum() { m_ws_spectrum_address_isSet = false; ws_spectrum_port = 0; m_ws_spectrum_port_isSet = false; + histogram_markers = nullptr; + m_histogram_markers_isSet = false; + waterfall_markers = nullptr; + m_waterfall_markers_isSet = false; } SWGGLSpectrum::~SWGGLSpectrum() { @@ -140,6 +144,10 @@ SWGGLSpectrum::init() { m_ws_spectrum_address_isSet = false; ws_spectrum_port = 0; m_ws_spectrum_port_isSet = false; + histogram_markers = new QList(); + m_histogram_markers_isSet = false; + waterfall_markers = new QList(); + m_waterfall_markers_isSet = false; } void @@ -172,6 +180,20 @@ SWGGLSpectrum::cleanup() { delete ws_spectrum_address; } + if(histogram_markers != nullptr) { + auto arr = histogram_markers; + for(auto o: *arr) { + delete o; + } + delete histogram_markers; + } + if(waterfall_markers != nullptr) { + auto arr = waterfall_markers; + for(auto o: *arr) { + delete o; + } + delete waterfall_markers; + } } SWGGLSpectrum* @@ -237,6 +259,10 @@ SWGGLSpectrum::fromJsonObject(QJsonObject &pJson) { ::SWGSDRangel::setValue(&ws_spectrum_port, pJson["wsSpectrumPort"], "qint32", ""); + + ::SWGSDRangel::setValue(&histogram_markers, pJson["histogramMarkers"], "QList", "SWGSpectrumHistogramMarker"); + + ::SWGSDRangel::setValue(&waterfall_markers, pJson["waterfallMarkers"], "QList", "SWGSpectrumWaterfallMarker"); } QString @@ -331,6 +357,12 @@ SWGGLSpectrum::asJsonObject() { if(m_ws_spectrum_port_isSet){ obj->insert("wsSpectrumPort", QJsonValue(ws_spectrum_port)); } + if(histogram_markers && histogram_markers->size() > 0){ + toJsonArray((QList*)histogram_markers, obj, "histogramMarkers", "SWGSpectrumHistogramMarker"); + } + if(waterfall_markers && waterfall_markers->size() > 0){ + toJsonArray((QList*)waterfall_markers, obj, "waterfallMarkers", "SWGSpectrumWaterfallMarker"); + } return obj; } @@ -595,6 +627,26 @@ SWGGLSpectrum::setWsSpectrumPort(qint32 ws_spectrum_port) { this->m_ws_spectrum_port_isSet = true; } +QList* +SWGGLSpectrum::getHistogramMarkers() { + return histogram_markers; +} +void +SWGGLSpectrum::setHistogramMarkers(QList* histogram_markers) { + this->histogram_markers = histogram_markers; + this->m_histogram_markers_isSet = true; +} + +QList* +SWGGLSpectrum::getWaterfallMarkers() { + return waterfall_markers; +} +void +SWGGLSpectrum::setWaterfallMarkers(QList* waterfall_markers) { + this->waterfall_markers = waterfall_markers; + this->m_waterfall_markers_isSet = true; +} + bool SWGGLSpectrum::isSet(){ @@ -678,6 +730,12 @@ SWGGLSpectrum::isSet(){ if(m_ws_spectrum_port_isSet){ isObjectUpdated = true; break; } + if(histogram_markers && (histogram_markers->size() > 0)){ + isObjectUpdated = true; break; + } + if(waterfall_markers && (waterfall_markers->size() > 0)){ + isObjectUpdated = true; break; + } }while(false); return isObjectUpdated; } diff --git a/swagger/sdrangel/code/qt5/client/SWGGLSpectrum.h b/swagger/sdrangel/code/qt5/client/SWGGLSpectrum.h index beb29f00b..9f4276a35 100644 --- a/swagger/sdrangel/code/qt5/client/SWGGLSpectrum.h +++ b/swagger/sdrangel/code/qt5/client/SWGGLSpectrum.h @@ -22,6 +22,9 @@ #include +#include "SWGSpectrumHistogramMarker.h" +#include "SWGSpectrumWaterfallMarker.h" +#include #include #include "SWGObject.h" @@ -120,6 +123,12 @@ public: qint32 getWsSpectrumPort(); void setWsSpectrumPort(qint32 ws_spectrum_port); + QList* getHistogramMarkers(); + void setHistogramMarkers(QList* histogram_markers); + + QList* getWaterfallMarkers(); + void setWaterfallMarkers(QList* waterfall_markers); + virtual bool isSet() override; @@ -202,6 +211,12 @@ private: qint32 ws_spectrum_port; bool m_ws_spectrum_port_isSet; + QList* histogram_markers; + bool m_histogram_markers_isSet; + + QList* waterfall_markers; + bool m_waterfall_markers_isSet; + }; } diff --git a/swagger/sdrangel/code/qt5/client/SWGModelFactory.h b/swagger/sdrangel/code/qt5/client/SWGModelFactory.h index 67f357946..1aa8c468d 100644 --- a/swagger/sdrangel/code/qt5/client/SWGModelFactory.h +++ b/swagger/sdrangel/code/qt5/client/SWGModelFactory.h @@ -264,8 +264,10 @@ #include "SWGSoapySDRInputSettings.h" #include "SWGSoapySDROutputSettings.h" #include "SWGSoapySDRReport.h" +#include "SWGSpectrumHistogramMarker.h" #include "SWGSpectrumServer.h" #include "SWGSpectrumServer_clients.h" +#include "SWGSpectrumWaterfallMarker.h" #include "SWGStarTrackerActions.h" #include "SWGStarTrackerDisplayLoSSettings.h" #include "SWGStarTrackerDisplayLoSSettings_2.h" @@ -1562,6 +1564,11 @@ namespace SWGSDRangel { obj->init(); return obj; } + if(QString("SWGSpectrumHistogramMarker").compare(type) == 0) { + SWGSpectrumHistogramMarker *obj = new SWGSpectrumHistogramMarker(); + obj->init(); + return obj; + } if(QString("SWGSpectrumServer").compare(type) == 0) { SWGSpectrumServer *obj = new SWGSpectrumServer(); obj->init(); @@ -1572,6 +1579,11 @@ namespace SWGSDRangel { obj->init(); return obj; } + if(QString("SWGSpectrumWaterfallMarker").compare(type) == 0) { + SWGSpectrumWaterfallMarker *obj = new SWGSpectrumWaterfallMarker(); + obj->init(); + return obj; + } if(QString("SWGStarTrackerActions").compare(type) == 0) { SWGStarTrackerActions *obj = new SWGStarTrackerActions(); obj->init(); diff --git a/swagger/sdrangel/code/qt5/client/SWGSpectrumHistogramMarker.cpp b/swagger/sdrangel/code/qt5/client/SWGSpectrumHistogramMarker.cpp new file mode 100644 index 000000000..52a7b3dec --- /dev/null +++ b/swagger/sdrangel/code/qt5/client/SWGSpectrumHistogramMarker.cpp @@ -0,0 +1,200 @@ +/** + * SDRangel + * This is the web REST/JSON API of SDRangel SDR software. SDRangel is an Open Source Qt5/OpenGL 3.0+ (4.3+ in Windows) GUI and server Software Defined Radio and signal analyzer in software. It supports Airspy, BladeRF, HackRF, LimeSDR, PlutoSDR, RTL-SDR, SDRplay RSP1 and FunCube --- Limitations and specifcities: * In SDRangel GUI the first Rx device set cannot be deleted. Conversely the server starts with no device sets and its number of device sets can be reduced to zero by as many calls as necessary to /sdrangel/deviceset with DELETE method. * Preset import and export from/to file is a server only feature. * Device set focus is a GUI only feature. * The following channels are not implemented (status 501 is returned): ATV and DATV demodulators, Channel Analyzer NG, LoRa demodulator * The device settings and report structures contains only the sub-structure corresponding to the device type. The DeviceSettings and DeviceReport structures documented here shows all of them but only one will be or should be present at a time * The channel settings and report structures contains only the sub-structure corresponding to the channel type. The ChannelSettings and ChannelReport structures documented here shows all of them but only one will be or should be present at a time --- + * + * OpenAPI spec version: 6.0.0 + * Contact: f4exb06@gmail.com + * + * NOTE: This class is auto generated by the swagger code generator program. + * https://github.com/swagger-api/swagger-codegen.git + * Do not edit the class manually. + */ + + +#include "SWGSpectrumHistogramMarker.h" + +#include "SWGHelpers.h" + +#include +#include +#include +#include + +namespace SWGSDRangel { + +SWGSpectrumHistogramMarker::SWGSpectrumHistogramMarker(QString* json) { + init(); + this->fromJson(*json); +} + +SWGSpectrumHistogramMarker::SWGSpectrumHistogramMarker() { + frequency = 0.0f; + m_frequency_isSet = false; + power = 0.0f; + m_power_isSet = false; + marker_type = 0; + m_marker_type_isSet = false; + marker_color = 0; + m_marker_color_isSet = false; + show = 0; + m_show_isSet = false; +} + +SWGSpectrumHistogramMarker::~SWGSpectrumHistogramMarker() { + this->cleanup(); +} + +void +SWGSpectrumHistogramMarker::init() { + frequency = 0.0f; + m_frequency_isSet = false; + power = 0.0f; + m_power_isSet = false; + marker_type = 0; + m_marker_type_isSet = false; + marker_color = 0; + m_marker_color_isSet = false; + show = 0; + m_show_isSet = false; +} + +void +SWGSpectrumHistogramMarker::cleanup() { + + + + + +} + +SWGSpectrumHistogramMarker* +SWGSpectrumHistogramMarker::fromJson(QString &json) { + QByteArray array (json.toStdString().c_str()); + QJsonDocument doc = QJsonDocument::fromJson(array); + QJsonObject jsonObject = doc.object(); + this->fromJsonObject(jsonObject); + return this; +} + +void +SWGSpectrumHistogramMarker::fromJsonObject(QJsonObject &pJson) { + ::SWGSDRangel::setValue(&frequency, pJson["frequency"], "float", ""); + + ::SWGSDRangel::setValue(&power, pJson["power"], "float", ""); + + ::SWGSDRangel::setValue(&marker_type, pJson["markerType"], "qint32", ""); + + ::SWGSDRangel::setValue(&marker_color, pJson["markerColor"], "qint32", ""); + + ::SWGSDRangel::setValue(&show, pJson["show"], "qint32", ""); + +} + +QString +SWGSpectrumHistogramMarker::asJson () +{ + QJsonObject* obj = this->asJsonObject(); + + QJsonDocument doc(*obj); + QByteArray bytes = doc.toJson(); + delete obj; + return QString(bytes); +} + +QJsonObject* +SWGSpectrumHistogramMarker::asJsonObject() { + QJsonObject* obj = new QJsonObject(); + if(m_frequency_isSet){ + obj->insert("frequency", QJsonValue(frequency)); + } + if(m_power_isSet){ + obj->insert("power", QJsonValue(power)); + } + if(m_marker_type_isSet){ + obj->insert("markerType", QJsonValue(marker_type)); + } + if(m_marker_color_isSet){ + obj->insert("markerColor", QJsonValue(marker_color)); + } + if(m_show_isSet){ + obj->insert("show", QJsonValue(show)); + } + + return obj; +} + +float +SWGSpectrumHistogramMarker::getFrequency() { + return frequency; +} +void +SWGSpectrumHistogramMarker::setFrequency(float frequency) { + this->frequency = frequency; + this->m_frequency_isSet = true; +} + +float +SWGSpectrumHistogramMarker::getPower() { + return power; +} +void +SWGSpectrumHistogramMarker::setPower(float power) { + this->power = power; + this->m_power_isSet = true; +} + +qint32 +SWGSpectrumHistogramMarker::getMarkerType() { + return marker_type; +} +void +SWGSpectrumHistogramMarker::setMarkerType(qint32 marker_type) { + this->marker_type = marker_type; + this->m_marker_type_isSet = true; +} + +qint32 +SWGSpectrumHistogramMarker::getMarkerColor() { + return marker_color; +} +void +SWGSpectrumHistogramMarker::setMarkerColor(qint32 marker_color) { + this->marker_color = marker_color; + this->m_marker_color_isSet = true; +} + +qint32 +SWGSpectrumHistogramMarker::getShow() { + return show; +} +void +SWGSpectrumHistogramMarker::setShow(qint32 show) { + this->show = show; + this->m_show_isSet = true; +} + + +bool +SWGSpectrumHistogramMarker::isSet(){ + bool isObjectUpdated = false; + do{ + if(m_frequency_isSet){ + isObjectUpdated = true; break; + } + if(m_power_isSet){ + isObjectUpdated = true; break; + } + if(m_marker_type_isSet){ + isObjectUpdated = true; break; + } + if(m_marker_color_isSet){ + isObjectUpdated = true; break; + } + if(m_show_isSet){ + isObjectUpdated = true; break; + } + }while(false); + return isObjectUpdated; +} +} + diff --git a/swagger/sdrangel/code/qt5/client/SWGSpectrumHistogramMarker.h b/swagger/sdrangel/code/qt5/client/SWGSpectrumHistogramMarker.h new file mode 100644 index 000000000..5997db5ec --- /dev/null +++ b/swagger/sdrangel/code/qt5/client/SWGSpectrumHistogramMarker.h @@ -0,0 +1,82 @@ +/** + * SDRangel + * This is the web REST/JSON API of SDRangel SDR software. SDRangel is an Open Source Qt5/OpenGL 3.0+ (4.3+ in Windows) GUI and server Software Defined Radio and signal analyzer in software. It supports Airspy, BladeRF, HackRF, LimeSDR, PlutoSDR, RTL-SDR, SDRplay RSP1 and FunCube --- Limitations and specifcities: * In SDRangel GUI the first Rx device set cannot be deleted. Conversely the server starts with no device sets and its number of device sets can be reduced to zero by as many calls as necessary to /sdrangel/deviceset with DELETE method. * Preset import and export from/to file is a server only feature. * Device set focus is a GUI only feature. * The following channels are not implemented (status 501 is returned): ATV and DATV demodulators, Channel Analyzer NG, LoRa demodulator * The device settings and report structures contains only the sub-structure corresponding to the device type. The DeviceSettings and DeviceReport structures documented here shows all of them but only one will be or should be present at a time * The channel settings and report structures contains only the sub-structure corresponding to the channel type. The ChannelSettings and ChannelReport structures documented here shows all of them but only one will be or should be present at a time --- + * + * OpenAPI spec version: 6.0.0 + * Contact: f4exb06@gmail.com + * + * NOTE: This class is auto generated by the swagger code generator program. + * https://github.com/swagger-api/swagger-codegen.git + * Do not edit the class manually. + */ + +/* + * SWGSpectrumHistogramMarker.h + * + * Spectrum histogram marker settings + */ + +#ifndef SWGSpectrumHistogramMarker_H_ +#define SWGSpectrumHistogramMarker_H_ + +#include + + + +#include "SWGObject.h" +#include "export.h" + +namespace SWGSDRangel { + +class SWG_API SWGSpectrumHistogramMarker: public SWGObject { +public: + SWGSpectrumHistogramMarker(); + SWGSpectrumHistogramMarker(QString* json); + virtual ~SWGSpectrumHistogramMarker(); + void init(); + void cleanup(); + + virtual QString asJson () override; + virtual QJsonObject* asJsonObject() override; + virtual void fromJsonObject(QJsonObject &json) override; + virtual SWGSpectrumHistogramMarker* fromJson(QString &jsonString) override; + + float getFrequency(); + void setFrequency(float frequency); + + float getPower(); + void setPower(float power); + + qint32 getMarkerType(); + void setMarkerType(qint32 marker_type); + + qint32 getMarkerColor(); + void setMarkerColor(qint32 marker_color); + + qint32 getShow(); + void setShow(qint32 show); + + + virtual bool isSet() override; + +private: + float frequency; + bool m_frequency_isSet; + + float power; + bool m_power_isSet; + + qint32 marker_type; + bool m_marker_type_isSet; + + qint32 marker_color; + bool m_marker_color_isSet; + + qint32 show; + bool m_show_isSet; + +}; + +} + +#endif /* SWGSpectrumHistogramMarker_H_ */ diff --git a/swagger/sdrangel/code/qt5/client/SWGSpectrumWaterfallMarker.cpp b/swagger/sdrangel/code/qt5/client/SWGSpectrumWaterfallMarker.cpp new file mode 100644 index 000000000..a4801c045 --- /dev/null +++ b/swagger/sdrangel/code/qt5/client/SWGSpectrumWaterfallMarker.cpp @@ -0,0 +1,177 @@ +/** + * SDRangel + * This is the web REST/JSON API of SDRangel SDR software. SDRangel is an Open Source Qt5/OpenGL 3.0+ (4.3+ in Windows) GUI and server Software Defined Radio and signal analyzer in software. It supports Airspy, BladeRF, HackRF, LimeSDR, PlutoSDR, RTL-SDR, SDRplay RSP1 and FunCube --- Limitations and specifcities: * In SDRangel GUI the first Rx device set cannot be deleted. Conversely the server starts with no device sets and its number of device sets can be reduced to zero by as many calls as necessary to /sdrangel/deviceset with DELETE method. * Preset import and export from/to file is a server only feature. * Device set focus is a GUI only feature. * The following channels are not implemented (status 501 is returned): ATV and DATV demodulators, Channel Analyzer NG, LoRa demodulator * The device settings and report structures contains only the sub-structure corresponding to the device type. The DeviceSettings and DeviceReport structures documented here shows all of them but only one will be or should be present at a time * The channel settings and report structures contains only the sub-structure corresponding to the channel type. The ChannelSettings and ChannelReport structures documented here shows all of them but only one will be or should be present at a time --- + * + * OpenAPI spec version: 6.0.0 + * Contact: f4exb06@gmail.com + * + * NOTE: This class is auto generated by the swagger code generator program. + * https://github.com/swagger-api/swagger-codegen.git + * Do not edit the class manually. + */ + + +#include "SWGSpectrumWaterfallMarker.h" + +#include "SWGHelpers.h" + +#include +#include +#include +#include + +namespace SWGSDRangel { + +SWGSpectrumWaterfallMarker::SWGSpectrumWaterfallMarker(QString* json) { + init(); + this->fromJson(*json); +} + +SWGSpectrumWaterfallMarker::SWGSpectrumWaterfallMarker() { + frequency = 0.0f; + m_frequency_isSet = false; + time = 0.0f; + m_time_isSet = false; + marker_color = 0; + m_marker_color_isSet = false; + show = 0; + m_show_isSet = false; +} + +SWGSpectrumWaterfallMarker::~SWGSpectrumWaterfallMarker() { + this->cleanup(); +} + +void +SWGSpectrumWaterfallMarker::init() { + frequency = 0.0f; + m_frequency_isSet = false; + time = 0.0f; + m_time_isSet = false; + marker_color = 0; + m_marker_color_isSet = false; + show = 0; + m_show_isSet = false; +} + +void +SWGSpectrumWaterfallMarker::cleanup() { + + + + +} + +SWGSpectrumWaterfallMarker* +SWGSpectrumWaterfallMarker::fromJson(QString &json) { + QByteArray array (json.toStdString().c_str()); + QJsonDocument doc = QJsonDocument::fromJson(array); + QJsonObject jsonObject = doc.object(); + this->fromJsonObject(jsonObject); + return this; +} + +void +SWGSpectrumWaterfallMarker::fromJsonObject(QJsonObject &pJson) { + ::SWGSDRangel::setValue(&frequency, pJson["frequency"], "float", ""); + + ::SWGSDRangel::setValue(&time, pJson["time"], "float", ""); + + ::SWGSDRangel::setValue(&marker_color, pJson["markerColor"], "qint32", ""); + + ::SWGSDRangel::setValue(&show, pJson["show"], "qint32", ""); + +} + +QString +SWGSpectrumWaterfallMarker::asJson () +{ + QJsonObject* obj = this->asJsonObject(); + + QJsonDocument doc(*obj); + QByteArray bytes = doc.toJson(); + delete obj; + return QString(bytes); +} + +QJsonObject* +SWGSpectrumWaterfallMarker::asJsonObject() { + QJsonObject* obj = new QJsonObject(); + if(m_frequency_isSet){ + obj->insert("frequency", QJsonValue(frequency)); + } + if(m_time_isSet){ + obj->insert("time", QJsonValue(time)); + } + if(m_marker_color_isSet){ + obj->insert("markerColor", QJsonValue(marker_color)); + } + if(m_show_isSet){ + obj->insert("show", QJsonValue(show)); + } + + return obj; +} + +float +SWGSpectrumWaterfallMarker::getFrequency() { + return frequency; +} +void +SWGSpectrumWaterfallMarker::setFrequency(float frequency) { + this->frequency = frequency; + this->m_frequency_isSet = true; +} + +float +SWGSpectrumWaterfallMarker::getTime() { + return time; +} +void +SWGSpectrumWaterfallMarker::setTime(float time) { + this->time = time; + this->m_time_isSet = true; +} + +qint32 +SWGSpectrumWaterfallMarker::getMarkerColor() { + return marker_color; +} +void +SWGSpectrumWaterfallMarker::setMarkerColor(qint32 marker_color) { + this->marker_color = marker_color; + this->m_marker_color_isSet = true; +} + +qint32 +SWGSpectrumWaterfallMarker::getShow() { + return show; +} +void +SWGSpectrumWaterfallMarker::setShow(qint32 show) { + this->show = show; + this->m_show_isSet = true; +} + + +bool +SWGSpectrumWaterfallMarker::isSet(){ + bool isObjectUpdated = false; + do{ + if(m_frequency_isSet){ + isObjectUpdated = true; break; + } + if(m_time_isSet){ + isObjectUpdated = true; break; + } + if(m_marker_color_isSet){ + isObjectUpdated = true; break; + } + if(m_show_isSet){ + isObjectUpdated = true; break; + } + }while(false); + return isObjectUpdated; +} +} + diff --git a/swagger/sdrangel/code/qt5/client/SWGSpectrumWaterfallMarker.h b/swagger/sdrangel/code/qt5/client/SWGSpectrumWaterfallMarker.h new file mode 100644 index 000000000..852fcb251 --- /dev/null +++ b/swagger/sdrangel/code/qt5/client/SWGSpectrumWaterfallMarker.h @@ -0,0 +1,76 @@ +/** + * SDRangel + * This is the web REST/JSON API of SDRangel SDR software. SDRangel is an Open Source Qt5/OpenGL 3.0+ (4.3+ in Windows) GUI and server Software Defined Radio and signal analyzer in software. It supports Airspy, BladeRF, HackRF, LimeSDR, PlutoSDR, RTL-SDR, SDRplay RSP1 and FunCube --- Limitations and specifcities: * In SDRangel GUI the first Rx device set cannot be deleted. Conversely the server starts with no device sets and its number of device sets can be reduced to zero by as many calls as necessary to /sdrangel/deviceset with DELETE method. * Preset import and export from/to file is a server only feature. * Device set focus is a GUI only feature. * The following channels are not implemented (status 501 is returned): ATV and DATV demodulators, Channel Analyzer NG, LoRa demodulator * The device settings and report structures contains only the sub-structure corresponding to the device type. The DeviceSettings and DeviceReport structures documented here shows all of them but only one will be or should be present at a time * The channel settings and report structures contains only the sub-structure corresponding to the channel type. The ChannelSettings and ChannelReport structures documented here shows all of them but only one will be or should be present at a time --- + * + * OpenAPI spec version: 6.0.0 + * Contact: f4exb06@gmail.com + * + * NOTE: This class is auto generated by the swagger code generator program. + * https://github.com/swagger-api/swagger-codegen.git + * Do not edit the class manually. + */ + +/* + * SWGSpectrumWaterfallMarker.h + * + * Spectrum waterfall marker settings + */ + +#ifndef SWGSpectrumWaterfallMarker_H_ +#define SWGSpectrumWaterfallMarker_H_ + +#include + + + +#include "SWGObject.h" +#include "export.h" + +namespace SWGSDRangel { + +class SWG_API SWGSpectrumWaterfallMarker: public SWGObject { +public: + SWGSpectrumWaterfallMarker(); + SWGSpectrumWaterfallMarker(QString* json); + virtual ~SWGSpectrumWaterfallMarker(); + void init(); + void cleanup(); + + virtual QString asJson () override; + virtual QJsonObject* asJsonObject() override; + virtual void fromJsonObject(QJsonObject &json) override; + virtual SWGSpectrumWaterfallMarker* fromJson(QString &jsonString) override; + + float getFrequency(); + void setFrequency(float frequency); + + float getTime(); + void setTime(float time); + + qint32 getMarkerColor(); + void setMarkerColor(qint32 marker_color); + + qint32 getShow(); + void setShow(qint32 show); + + + virtual bool isSet() override; + +private: + float frequency; + bool m_frequency_isSet; + + float time; + bool m_time_isSet; + + qint32 marker_color; + bool m_marker_color_isSet; + + qint32 show; + bool m_show_isSet; + +}; + +} + +#endif /* SWGSpectrumWaterfallMarker_H_ */