diff --git a/plugins/channelmimo/beamsteeringcwmod/beamsteeringcwmod.cpp b/plugins/channelmimo/beamsteeringcwmod/beamsteeringcwmod.cpp index d649c985f..331bc8144 100644 --- a/plugins/channelmimo/beamsteeringcwmod/beamsteeringcwmod.cpp +++ b/plugins/channelmimo/beamsteeringcwmod/beamsteeringcwmod.cpp @@ -327,6 +327,9 @@ void BeamSteeringCWMod::webapiUpdateChannelSettings( if (settings.m_channelMarker && channelSettingsKeys.contains("channelMarker")) { settings.m_channelMarker->updateFrom(channelSettingsKeys, response.getBeamSteeringCwModSettings()->getChannelMarker()); } + if (settings.m_rollupState && channelSettingsKeys.contains("rollupState")) { + settings.m_rollupState->updateFrom(channelSettingsKeys, response.getBeamSteeringCwModSettings()->getRollupState()); + } } void BeamSteeringCWMod::webapiFormatChannelSettings(SWGSDRangel::SWGChannelSettings& response, const BeamSteeringCWModSettings& settings) @@ -367,6 +370,20 @@ void BeamSteeringCWMod::webapiFormatChannelSettings(SWGSDRangel::SWGChannelSetti response.getBeamSteeringCwModSettings()->setChannelMarker(swgChannelMarker); } } + + if (settings.m_rollupState) + { + if (response.getBeamSteeringCwModSettings()->getRollupState()) + { + settings.m_rollupState->formatTo(response.getBeamSteeringCwModSettings()->getRollupState()); + } + else + { + SWGSDRangel::SWGRollupState *swgRollupState = new SWGSDRangel::SWGRollupState(); + settings.m_rollupState->formatTo(swgRollupState); + response.getBeamSteeringCwModSettings()->setRollupState(swgRollupState); + } + } } void BeamSteeringCWMod::webapiReverseSendSettings(QList& channelSettingsKeys, const BeamSteeringCWModSettings& settings, bool force) @@ -454,6 +471,13 @@ void BeamSteeringCWMod::webapiFormatChannelSettings( settings.m_channelMarker->formatTo(swgChannelMarker); swgBeamSteeringCWSettings->setChannelMarker(swgChannelMarker); } + + if (settings.m_rollupState && (channelSettingsKeys.contains("rollupState") || force)) + { + SWGSDRangel::SWGRollupState *swgRollupState = new SWGSDRangel::SWGRollupState(); + settings.m_rollupState->formatTo(swgRollupState); + swgBeamSteeringCWSettings->setRollupState(swgRollupState); + } } void BeamSteeringCWMod::networkManagerFinished(QNetworkReply *reply) diff --git a/plugins/channelmimo/beamsteeringcwmod/beamsteeringcwmodgui.cpp b/plugins/channelmimo/beamsteeringcwmod/beamsteeringcwmodgui.cpp index 0dc854f02..bcf3afc0b 100644 --- a/plugins/channelmimo/beamsteeringcwmod/beamsteeringcwmodgui.cpp +++ b/plugins/channelmimo/beamsteeringcwmod/beamsteeringcwmodgui.cpp @@ -119,6 +119,7 @@ BeamSteeringCWModGUI::BeamSteeringCWModGUI(PluginAPI* pluginAPI, DeviceUISet *de m_channelMarker.setVisible(true); // activate signal on the last setting only m_settings.setChannelMarker(&m_channelMarker); + m_settings.setRollupState(&m_rollupState); m_deviceUISet->addChannelMarker(&m_channelMarker); m_deviceUISet->addRollupWidget(this); @@ -168,7 +169,7 @@ void BeamSteeringCWModGUI::displaySettings() ui->interpolationFactor->setCurrentIndex(m_settings.m_log2Interp); applyInterpolation(); ui->steeringDegreesText->setText(tr("%1").arg(m_settings.m_steerDegrees)); - restoreState(m_settings.m_rollupState); + restoreState(m_rollupState); blockApplySettings(false); } @@ -211,7 +212,7 @@ void BeamSteeringCWModGUI::onWidgetRolled(QWidget* widget, bool rollDown) (void) widget; (void) rollDown; - m_settings.m_rollupState = saveState(); + saveState(m_rollupState); applySettings(); } diff --git a/plugins/channelmimo/beamsteeringcwmod/beamsteeringcwmodgui.h b/plugins/channelmimo/beamsteeringcwmod/beamsteeringcwmodgui.h index 70beabe43..8e5eaef05 100644 --- a/plugins/channelmimo/beamsteeringcwmod/beamsteeringcwmodgui.h +++ b/plugins/channelmimo/beamsteeringcwmod/beamsteeringcwmodgui.h @@ -25,6 +25,7 @@ #include "dsp/channelmarker.h" #include "channel/channelgui.h" #include "util/messagequeue.h" +#include "settings/rollupstate.h" #include "beamsteeringcwmodsettings.h" @@ -53,6 +54,7 @@ private: PluginAPI* m_pluginAPI; DeviceUISet* m_deviceUISet; ChannelMarker m_channelMarker; + RollupState m_rollupState; BeamSteeringCWModSettings m_settings; int m_basebandSampleRate; qint64 m_centerFrequency; diff --git a/plugins/channelmimo/beamsteeringcwmod/beamsteeringcwmodplugin.cpp b/plugins/channelmimo/beamsteeringcwmod/beamsteeringcwmodplugin.cpp index 1b00263e9..cf595560a 100644 --- a/plugins/channelmimo/beamsteeringcwmod/beamsteeringcwmodplugin.cpp +++ b/plugins/channelmimo/beamsteeringcwmod/beamsteeringcwmodplugin.cpp @@ -29,7 +29,7 @@ const PluginDescriptor BeamSteeringCWModPlugin::m_pluginDescriptor = { BeamSteeringCWMod::m_channelId, QStringLiteral("BeamSteeringCWMod"), - QStringLiteral("6.0.0"), + QStringLiteral("6.18.0"), QStringLiteral("(c) Edouard Griffiths, F4EXB"), QStringLiteral("https://github.com/f4exb/sdrangel"), true, diff --git a/plugins/channelmimo/beamsteeringcwmod/beamsteeringcwmodsettings.cpp b/plugins/channelmimo/beamsteeringcwmod/beamsteeringcwmodsettings.cpp index 2fb7c4df9..95df8dab7 100644 --- a/plugins/channelmimo/beamsteeringcwmod/beamsteeringcwmodsettings.cpp +++ b/plugins/channelmimo/beamsteeringcwmod/beamsteeringcwmodsettings.cpp @@ -37,6 +37,7 @@ void BeamSteeringCWModSettings::resetToDefaults() m_filterChainHash = 0; m_channelOutput = 0; m_channelMarker = nullptr; + m_rollupState = nullptr; m_useReverseAPI = false; m_reverseAPIAddress = "127.0.0.1"; m_reverseAPIPort = 8888; @@ -58,7 +59,10 @@ QByteArray BeamSteeringCWModSettings::serialize() const s.writeU32(12, m_log2Interp); s.writeU32(13, m_filterChainHash); s.writeS32(14, m_channelOutput); - s.writeBlob(15, m_rollupState); + + if (m_rollupState) { + s.writeBlob(15, m_rollupState->serialize()); + } return s.final(); } @@ -78,6 +82,7 @@ bool BeamSteeringCWModSettings::deserialize(const QByteArray& data) uint32_t tmp; int stmp; QString strtmp; + QByteArray bytetmp; d.readS32(1, &stmp, 90); m_steerDegrees = stmp < 0 ? -0 : stmp > 180 ? 180 : stmp; @@ -102,7 +107,12 @@ bool BeamSteeringCWModSettings::deserialize(const QByteArray& data) d.readU32(13, &m_filterChainHash, 0); d.readS32(14, &stmp, 0); m_channelOutput = stmp < 0 ? 0 : stmp > 2 ? 2 : stmp; - d.readBlob(15, &m_rollupState); + + if (m_rollupState) + { + d.readBlob(15, &bytetmp); + m_rollupState->deserialize(bytetmp); + } return true; } diff --git a/plugins/channelmimo/beamsteeringcwmod/beamsteeringcwmodsettings.h b/plugins/channelmimo/beamsteeringcwmod/beamsteeringcwmodsettings.h index a0a0869ab..cdac05bea 100644 --- a/plugins/channelmimo/beamsteeringcwmod/beamsteeringcwmodsettings.h +++ b/plugins/channelmimo/beamsteeringcwmod/beamsteeringcwmodsettings.h @@ -38,11 +38,12 @@ struct BeamSteeringCWModSettings uint16_t m_reverseAPIChannelIndex; Serializable *m_channelMarker; - QByteArray m_rollupState; + Serializable *m_rollupState; BeamSteeringCWModSettings(); void resetToDefaults(); void setChannelMarker(Serializable *channelMarker) { m_channelMarker = channelMarker; } + void setRollupState(Serializable *RollupState) { m_rollupState = RollupState; } QByteArray serialize() const; bool deserialize(const QByteArray& data); }; diff --git a/plugins/channelmimo/interferometer/interferometer.cpp b/plugins/channelmimo/interferometer/interferometer.cpp index 838e84de9..7cd5afc6c 100644 --- a/plugins/channelmimo/interferometer/interferometer.cpp +++ b/plugins/channelmimo/interferometer/interferometer.cpp @@ -351,6 +351,9 @@ void Interferometer::webapiUpdateChannelSettings( if (settings.m_channelMarker && channelSettingsKeys.contains("channelMarker")) { settings.m_channelMarker->updateFrom(channelSettingsKeys, response.getInterferometerSettings()->getChannelMarker()); } + if (settings.m_rollupState && channelSettingsKeys.contains("rollupState")) { + settings.m_rollupState->updateFrom(channelSettingsKeys, response.getInterferometerSettings()->getRollupState()); + } } void Interferometer::webapiFormatChannelSettings(SWGSDRangel::SWGChannelSettings& response, const InterferometerSettings& settings) @@ -418,6 +421,20 @@ void Interferometer::webapiFormatChannelSettings(SWGSDRangel::SWGChannelSettings response.getInterferometerSettings()->setChannelMarker(swgChannelMarker); } } + + if (settings.m_rollupState) + { + if (response.getInterferometerSettings()->getRollupState()) + { + settings.m_rollupState->formatTo(response.getInterferometerSettings()->getRollupState()); + } + else + { + SWGSDRangel::SWGRollupState *swgRollupState = new SWGSDRangel::SWGRollupState(); + settings.m_rollupState->formatTo(swgRollupState); + response.getInterferometerSettings()->setRollupState(swgRollupState); + } + } } void Interferometer::webapiReverseSendSettings(QList& channelSettingsKeys, const InterferometerSettings& settings, bool force) @@ -516,6 +533,13 @@ void Interferometer::webapiFormatChannelSettings( settings.m_channelMarker->formatTo(swgChannelMarker); swgInterferometerSettings->setChannelMarker(swgChannelMarker); } + + if (settings.m_rollupState && (channelSettingsKeys.contains("rollupState") || force)) + { + SWGSDRangel::SWGRollupState *swgRollupState = new SWGSDRangel::SWGRollupState(); + settings.m_rollupState->formatTo(swgRollupState); + swgInterferometerSettings->setRollupState(swgRollupState); + } } void Interferometer::networkManagerFinished(QNetworkReply *reply) diff --git a/plugins/channelmimo/interferometer/interferometergui.cpp b/plugins/channelmimo/interferometer/interferometergui.cpp index f965cf2b2..4930a24e9 100644 --- a/plugins/channelmimo/interferometer/interferometergui.cpp +++ b/plugins/channelmimo/interferometer/interferometergui.cpp @@ -141,6 +141,7 @@ InterferometerGUI::InterferometerGUI(PluginAPI* pluginAPI, DeviceUISet *deviceUI m_channelMarker.setVisible(true); // activate signal on the last setting only m_settings.setChannelMarker(&m_channelMarker); + m_settings.setRollupState(&m_rollupState); m_settings.setScopeGUI(ui->scopeGUI); m_settings.setSpectrumGUI(ui->spectrumGUI); @@ -201,7 +202,7 @@ void InterferometerGUI::displaySettings() applyDecimation(); ui->phaseCorrection->setValue(m_settings.m_phase); ui->phaseCorrectionText->setText(tr("%1").arg(m_settings.m_phase)); - restoreState(m_settings.m_rollupState); + restoreState(m_rollupState); blockApplySettings(false); } @@ -246,7 +247,7 @@ void InterferometerGUI::onWidgetRolled(QWidget* widget, bool rollDown) (void) widget; (void) rollDown; - m_settings.m_rollupState = saveState(); + saveState(m_rollupState); applySettings(); } diff --git a/plugins/channelmimo/interferometer/interferometergui.h b/plugins/channelmimo/interferometer/interferometergui.h index cf3a7c147..97a4a2b3f 100644 --- a/plugins/channelmimo/interferometer/interferometergui.h +++ b/plugins/channelmimo/interferometer/interferometergui.h @@ -22,6 +22,7 @@ #include "dsp/channelmarker.h" #include "util/movingaverage.h" #include "util/messagequeue.h" +#include "settings/rollupstate.h" #include "interferometersettings.h" @@ -52,6 +53,7 @@ private: PluginAPI* m_pluginAPI; DeviceUISet* m_deviceUISet; ChannelMarker m_channelMarker; + RollupState m_rollupState; InterferometerSettings m_settings; int m_sampleRate; qint64 m_centerFrequency; diff --git a/plugins/channelmimo/interferometer/interferometerplugin.cpp b/plugins/channelmimo/interferometer/interferometerplugin.cpp index cdbfba0e1..dc3d1b37b 100644 --- a/plugins/channelmimo/interferometer/interferometerplugin.cpp +++ b/plugins/channelmimo/interferometer/interferometerplugin.cpp @@ -30,7 +30,7 @@ const PluginDescriptor InterferometerPlugin::m_pluginDescriptor = { Interferometer::m_channelId, QStringLiteral("Interferometer"), - QStringLiteral("6.15.0"), + QStringLiteral("6.18.0"), QStringLiteral("(c) Edouard Griffiths, F4EXB"), QStringLiteral("https://github.com/f4exb/sdrangel"), true, diff --git a/plugins/channelmimo/interferometer/interferometersettings.cpp b/plugins/channelmimo/interferometer/interferometersettings.cpp index 8ef7d2b3d..128ba8528 100644 --- a/plugins/channelmimo/interferometer/interferometersettings.cpp +++ b/plugins/channelmimo/interferometer/interferometersettings.cpp @@ -26,7 +26,8 @@ InterferometerSettings::InterferometerSettings() : m_channelMarker(nullptr), m_spectrumGUI(nullptr), - m_scopeGUI(nullptr) + m_scopeGUI(nullptr), + m_rollupState(nullptr) { resetToDefaults(); } @@ -70,7 +71,9 @@ QByteArray InterferometerSettings::serialize() const if (m_channelMarker) { s.writeBlob(22, m_channelMarker->serialize()); } - s.writeBlob(23, m_rollupState); + if (m_rollupState) { + s.writeBlob(23, m_rollupState->serialize()); + } return s.final(); } @@ -115,21 +118,29 @@ bool InterferometerSettings::deserialize(const QByteArray& data) d.readS32(12, &tmp, 0); m_phase = tmp < -180 ? -180 : tmp > 180 ? 180 : tmp; - if (m_spectrumGUI) { + if (m_spectrumGUI) + { d.readBlob(20, &bytetmp); m_spectrumGUI->deserialize(bytetmp); } - if (m_scopeGUI) { + if (m_scopeGUI) + { d.readBlob(21, &bytetmp); m_scopeGUI->deserialize(bytetmp); } - if (m_channelMarker) { + if (m_channelMarker) + { d.readBlob(22, &bytetmp); m_channelMarker->deserialize(bytetmp); } - d.readBlob(23, &m_rollupState); + + if (m_rollupState) + { + d.readBlob(23, &bytetmp); + m_rollupState->deserialize(bytetmp); + } return true; } @@ -138,4 +149,4 @@ bool InterferometerSettings::deserialize(const QByteArray& data) resetToDefaults(); return false; } -} \ No newline at end of file +} diff --git a/plugins/channelmimo/interferometer/interferometersettings.h b/plugins/channelmimo/interferometer/interferometersettings.h index 15c74900f..387902402 100644 --- a/plugins/channelmimo/interferometer/interferometersettings.h +++ b/plugins/channelmimo/interferometer/interferometersettings.h @@ -52,10 +52,11 @@ struct InterferometerSettings Serializable *m_channelMarker; Serializable *m_spectrumGUI; Serializable *m_scopeGUI; - QByteArray m_rollupState; + Serializable *m_rollupState; InterferometerSettings(); void resetToDefaults(); + void setRollupState(Serializable *rollupState) { m_rollupState = rollupState; } void setChannelMarker(Serializable *channelMarker) { m_channelMarker = channelMarker; } void setSpectrumGUI(Serializable *spectrumGUI) { m_spectrumGUI = spectrumGUI; } void setScopeGUI(Serializable *scopeGUI) { m_scopeGUI = scopeGUI; } @@ -63,4 +64,4 @@ struct InterferometerSettings bool deserialize(const QByteArray& data); }; -#endif // INCLUDE_INTERFEROMETERSETTINGS_H \ No newline at end of file +#endif // INCLUDE_INTERFEROMETERSETTINGS_H diff --git a/plugins/channelrx/chanalyzer/chanalyzer.cpp b/plugins/channelrx/chanalyzer/chanalyzer.cpp index 7a09237c5..252d6bb5d 100644 --- a/plugins/channelrx/chanalyzer/chanalyzer.cpp +++ b/plugins/channelrx/chanalyzer/chanalyzer.cpp @@ -311,6 +311,9 @@ void ChannelAnalyzer::webapiUpdateChannelSettings( if (settings.m_channelMarker && channelSettingsKeys.contains("channelMarker")) { settings.m_channelMarker->updateFrom(channelSettingsKeys, response.getChannelAnalyzerSettings()->getChannelMarker()); } + if (settings.m_rollupState && channelSettingsKeys.contains("rollupState")) { + settings.m_rollupState->updateFrom(channelSettingsKeys, response.getChannelAnalyzerSettings()->getRollupState()); + } } void ChannelAnalyzer::webapiFormatChannelSettings( @@ -397,6 +400,20 @@ void ChannelAnalyzer::webapiFormatChannelSettings( response.getChannelAnalyzerSettings()->setChannelMarker(swgChannelMarker); } } + + if (settings.m_rollupState) + { + if (response.getChannelAnalyzerSettings()->getRollupState()) + { + settings.m_rollupState->formatTo(response.getChannelAnalyzerSettings()->getRollupState()); + } + else + { + SWGSDRangel::SWGRollupState *swgRollupState = new SWGSDRangel::SWGRollupState(); + settings.m_rollupState->formatTo(swgRollupState); + response.getChannelAnalyzerSettings()->setRollupState(swgRollupState); + } + } } void ChannelAnalyzer::webapiReverseSendSettings( @@ -562,6 +579,13 @@ void ChannelAnalyzer::webapiFormatChannelSettings( settings.m_channelMarker->formatTo(swgChannelMarker); swgChannelAnalyzerSettings->setChannelMarker(swgChannelMarker); } + + if (settings.m_rollupState && (channelSettingsKeys.contains("rollupState") || force)) + { + SWGSDRangel::SWGRollupState *swgRollupState = new SWGSDRangel::SWGRollupState(); + settings.m_rollupState->formatTo(swgRollupState); + swgChannelAnalyzerSettings->setRollupState(swgRollupState); + } } void ChannelAnalyzer::networkManagerFinished(QNetworkReply *reply) diff --git a/plugins/channelrx/chanalyzer/chanalyzergui.cpp b/plugins/channelrx/chanalyzer/chanalyzergui.cpp index 0ecf4ff0c..011804635 100644 --- a/plugins/channelrx/chanalyzer/chanalyzergui.cpp +++ b/plugins/channelrx/chanalyzer/chanalyzergui.cpp @@ -97,7 +97,7 @@ void ChannelAnalyzerGUI::displaySettings() QString rolloffStr = QString::number(m_settings.m_rrcRolloff/100.0, 'f', 2); ui->rrcRolloffText->setText(rolloffStr); - restoreState(m_settings.m_rollupState); + restoreState(m_rollupState); blockApplySettings(false); } @@ -450,7 +450,7 @@ void ChannelAnalyzerGUI::onWidgetRolled(QWidget* widget, bool rollDown) (void) widget; (void) rollDown; - m_settings.m_rollupState = saveState(); + saveState(m_rollupState); applySettings(); } @@ -536,6 +536,7 @@ ChannelAnalyzerGUI::ChannelAnalyzerGUI(PluginAPI* pluginAPI, DeviceUISet *device ui->scopeGUI->setBuddies(m_scopeVis->getInputMessageQueue(), m_scopeVis, ui->glScope); m_settings.setChannelMarker(&m_channelMarker); + m_settings.setRollupState(&m_rollupState); m_settings.setSpectrumGUI(ui->spectrumGUI); m_settings.setScopeGUI(ui->scopeGUI); diff --git a/plugins/channelrx/chanalyzer/chanalyzergui.h b/plugins/channelrx/chanalyzer/chanalyzergui.h index ab088f13a..1e847a84c 100644 --- a/plugins/channelrx/chanalyzer/chanalyzergui.h +++ b/plugins/channelrx/chanalyzer/chanalyzergui.h @@ -23,6 +23,7 @@ #include "dsp/dsptypes.h" #include "util/movingaverage.h" #include "util/messagequeue.h" +#include "settings/rollupstate.h" #include "chanalyzersettings.h" @@ -58,6 +59,7 @@ private: PluginAPI* m_pluginAPI; DeviceUISet* m_deviceUISet; ChannelMarker m_channelMarker; + RollupState m_rollupState; ChannelAnalyzerSettings m_settings; bool m_doApplySettings; int m_basebandSampleRate; //!< sample rate after final in-channel decimation (spanlog2) diff --git a/plugins/channelrx/chanalyzer/chanalyzerplugin.cpp b/plugins/channelrx/chanalyzer/chanalyzerplugin.cpp index 08e54ec65..2f2a7fca4 100644 --- a/plugins/channelrx/chanalyzer/chanalyzerplugin.cpp +++ b/plugins/channelrx/chanalyzer/chanalyzerplugin.cpp @@ -26,7 +26,7 @@ const PluginDescriptor ChannelAnalyzerPlugin::m_pluginDescriptor = { ChannelAnalyzer::m_channelId, QStringLiteral("Channel Analyzer"), - QStringLiteral("6.17.3"), + QStringLiteral("6.18.0"), QStringLiteral("(c) Edouard Griffiths, F4EXB"), QStringLiteral("https://github.com/f4exb/sdrangel"), true, diff --git a/plugins/channelrx/chanalyzer/chanalyzersettings.cpp b/plugins/channelrx/chanalyzer/chanalyzersettings.cpp index f9e0d72fa..f145946ed 100644 --- a/plugins/channelrx/chanalyzer/chanalyzersettings.cpp +++ b/plugins/channelrx/chanalyzer/chanalyzersettings.cpp @@ -24,9 +24,10 @@ #include "chanalyzersettings.h" ChannelAnalyzerSettings::ChannelAnalyzerSettings() : - m_channelMarker(0), - m_spectrumGUI(0), - m_scopeGUI(0) + m_channelMarker(nullptr), + m_spectrumGUI(nullptr), + m_scopeGUI(nullptr), + m_rollupState(nullptr) { resetToDefaults(); } @@ -66,12 +67,20 @@ QByteArray ChannelAnalyzerSettings::serialize() const s.writeS32(1, m_inputFrequencyOffset); s.writeS32(2, m_bandwidth); - s.writeBlob(3, m_spectrumGUI->serialize()); + + if (m_spectrumGUI) { + s.writeBlob(3, m_spectrumGUI->serialize()); + } + s.writeU32(4, m_rgbColor); s.writeS32(5, m_lowCutoff); s.writeS32(6, m_log2Decim); s.writeBool(7, m_ssb); - s.writeBlob(8, m_scopeGUI->serialize()); + + if (m_scopeGUI) { + s.writeBlob(8, m_scopeGUI->serialize()); + } + s.writeBool(9, m_rationalDownSample); s.writeU32(10, m_rationalDownSamplerRate); s.writeBool(11, m_pll); @@ -85,7 +94,11 @@ QByteArray ChannelAnalyzerSettings::serialize() const s.writeFloat(19, m_pllDampingFactor); s.writeFloat(20, m_pllLoopGain); s.writeBool(21, m_costasLoop); - s.writeBlob(22, m_rollupState); + + if (m_rollupState) { + s.writeBlob(22, m_rollupState->serialize()); + } + s.writeBool(23, m_useReverseAPI); s.writeString(24, m_reverseAPIAddress); s.writeU32(25, m_reverseAPIPort); @@ -144,7 +157,13 @@ bool ChannelAnalyzerSettings::deserialize(const QByteArray& data) d.readFloat(19, &m_pllDampingFactor, 0.5f); d.readFloat(20, &m_pllLoopGain, 10.0f); d.readBool(21, &m_costasLoop, false); - d.readBlob(22, &m_rollupState); + + if (m_rollupState) + { + d.readBlob(22, &bytetmp); + m_rollupState->deserialize(bytetmp); + } + d.readBool(18, &m_useReverseAPI, false); d.readString(19, &m_reverseAPIAddress, "127.0.0.1"); d.readU32(20, &utmp, 0); diff --git a/plugins/channelrx/chanalyzer/chanalyzersettings.h b/plugins/channelrx/chanalyzer/chanalyzersettings.h index c382e3853..f0878e489 100644 --- a/plugins/channelrx/chanalyzer/chanalyzersettings.h +++ b/plugins/channelrx/chanalyzer/chanalyzersettings.h @@ -53,7 +53,7 @@ struct ChannelAnalyzerSettings Serializable *m_channelMarker; Serializable *m_spectrumGUI; Serializable *m_scopeGUI; - QByteArray m_rollupState; + Serializable *m_rollupState; int m_streamIndex; //!< MIMO channel. Not relevant when connected to SI (single Rx). bool m_useReverseAPI; QString m_reverseAPIAddress; @@ -64,6 +64,7 @@ struct ChannelAnalyzerSettings ChannelAnalyzerSettings(); void resetToDefaults(); void setChannelMarker(Serializable *channelMarker) { m_channelMarker = channelMarker; } + void setRollupState(Serializable *rollupState) { m_rollupState = rollupState; } void setSpectrumGUI(Serializable *spectrumGUI) { m_spectrumGUI = spectrumGUI; } void setScopeGUI(Serializable *scopeGUI) { m_scopeGUI = scopeGUI; } QByteArray serialize() const; diff --git a/plugins/channelrx/demodadsb/adsbdemod.cpp b/plugins/channelrx/demodadsb/adsbdemod.cpp index 8210fbc4b..3d3205ee3 100644 --- a/plugins/channelrx/demodadsb/adsbdemod.cpp +++ b/plugins/channelrx/demodadsb/adsbdemod.cpp @@ -408,6 +408,9 @@ void ADSBDemod::webapiUpdateChannelSettings( if (settings.m_channelMarker && channelSettingsKeys.contains("channelMarker")) { settings.m_channelMarker->updateFrom(channelSettingsKeys, response.getAdsbDemodSettings()->getChannelMarker()); } + if (settings.m_rollupState && channelSettingsKeys.contains("rollupState")) { + settings.m_rollupState->updateFrom(channelSettingsKeys, response.getAdsbDemodSettings()->getRollupState()); + } } int ADSBDemod::webapiReportGet( @@ -472,6 +475,20 @@ void ADSBDemod::webapiFormatChannelSettings(SWGSDRangel::SWGChannelSettings& res response.getAdsbDemodSettings()->setChannelMarker(swgChannelMarker); } } + + if (settings.m_rollupState) + { + if (response.getAdsbDemodSettings()->getRollupState()) + { + settings.m_rollupState->formatTo(response.getAdsbDemodSettings()->getRollupState()); + } + else + { + SWGSDRangel::SWGRollupState *swgRollupState = new SWGSDRangel::SWGRollupState(); + settings.m_rollupState->formatTo(swgRollupState); + response.getAdsbDemodSettings()->setRollupState(swgRollupState); + } + } } void ADSBDemod::webapiFormatChannelReport(SWGSDRangel::SWGChannelReport& response) diff --git a/plugins/channelrx/demodadsb/adsbdemodgui.cpp b/plugins/channelrx/demodadsb/adsbdemodgui.cpp index 41d027e08..228f7e0e7 100644 --- a/plugins/channelrx/demodadsb/adsbdemodgui.cpp +++ b/plugins/channelrx/demodadsb/adsbdemodgui.cpp @@ -2010,7 +2010,7 @@ void ADSBDemodGUI::onWidgetRolled(QWidget* widget, bool rollDown) (void) widget; (void) rollDown; - m_settings.m_rollupState = saveState(); + saveState(m_rollupState); applySettings(); } @@ -2572,6 +2572,7 @@ ADSBDemodGUI::ADSBDemodGUI(PluginAPI* pluginAPI, DeviceUISet *deviceUISet, Baseb m_channelMarker.setVisible(true); // activate signal on the last setting only m_settings.setChannelMarker(&m_channelMarker); + m_settings.setRollupState(&m_rollupState); m_deviceUISet->addChannelMarker(&m_channelMarker); m_deviceUISet->addRollupWidget(this); @@ -2797,7 +2798,7 @@ void ADSBDemodGUI::displaySettings() applyMapSettings(); - restoreState(m_settings.m_rollupState); + restoreState(m_rollupState); blockApplySettings(false); } diff --git a/plugins/channelrx/demodadsb/adsbdemodgui.h b/plugins/channelrx/demodadsb/adsbdemodgui.h index 2821b5eef..14c033f62 100644 --- a/plugins/channelrx/demodadsb/adsbdemodgui.h +++ b/plugins/channelrx/demodadsb/adsbdemodgui.h @@ -38,6 +38,7 @@ #include "util/flightinformation.h" #include "util/openaip.h" #include "util/planespotters.h" +#include "settings/rollupstate.h" #include "maincore.h" #include "adsbdemodsettings.h" @@ -665,6 +666,7 @@ private: PluginAPI* m_pluginAPI; DeviceUISet* m_deviceUISet; ChannelMarker m_channelMarker; + RollupState m_rollupState; ADSBDemodSettings m_settings; bool m_basicSettingsShown; bool m_doApplySettings; diff --git a/plugins/channelrx/demodadsb/adsbdemodsettings.cpp b/plugins/channelrx/demodadsb/adsbdemodsettings.cpp index 380adcace..68a1294d4 100644 --- a/plugins/channelrx/demodadsb/adsbdemodsettings.cpp +++ b/plugins/channelrx/demodadsb/adsbdemodsettings.cpp @@ -23,11 +23,13 @@ #include "dsp/dspengine.h" #include "util/simpleserializer.h" #include "settings/serializable.h" +#include "settings/rollupstate.h" #include "adsbdemodsettings.h" ADSBDemodSettings::ADSBDemodSettings() : - m_channelMarker(0) + m_channelMarker(nullptr), + m_rollupState(nullptr) { resetToDefaults(); } @@ -92,11 +94,12 @@ QByteArray ADSBDemodSettings::serialize() const s.writeBool(6, m_feedEnabled); s.writeString(7, m_feedHost); s.writeU32(8, m_feedPort); - s.writeU32(9, m_rgbColor); + if (m_channelMarker) { s.writeBlob(10, m_channelMarker->serialize()); } + s.writeString(11, m_title); s.writeBool(12, m_useReverseAPI); s.writeString(13, m_reverseAPIAddress); @@ -133,7 +136,10 @@ QByteArray ADSBDemodSettings::serialize() const s.writeS32(40, (int)m_mapType); s.writeBool(41, m_displayNavAids); s.writeBool(42, m_displayPhotos); - s.writeBlob(43, m_rollupState); + + if (m_rollupState) { + s.writeBlob(43, m_rollupState->serialize()); + } for (int i = 0; i < ADSBDEMOD_COLUMNS; i++) { s.writeS32(100 + i, m_columnIndexes[i]); @@ -232,7 +238,12 @@ bool ADSBDemodSettings::deserialize(const QByteArray& data) d.readS32(40, (int *)&m_mapType, (int)AVIATION_LIGHT); d.readBool(41, &m_displayNavAids, true); d.readBool(42, &m_displayPhotos, true); - d.readBlob(43, &m_rollupState); + + if (m_rollupState) + { + d.readBlob(43, &bytetmp); + m_rollupState->deserialize(bytetmp); + } for (int i = 0; i < ADSBDEMOD_COLUMNS; i++) { d.readS32(100 + i, &m_columnIndexes[i], i); diff --git a/plugins/channelrx/demodadsb/adsbdemodsettings.h b/plugins/channelrx/demodadsb/adsbdemodsettings.h index 2bac1651e..7e46fb27f 100644 --- a/plugins/channelrx/demodadsb/adsbdemodsettings.h +++ b/plugins/channelrx/demodadsb/adsbdemodsettings.h @@ -144,11 +144,12 @@ struct ADSBDemodSettings } m_mapType; bool m_displayNavAids; bool m_displayPhotos; - QByteArray m_rollupState; + Serializable *m_rollupState; ADSBDemodSettings(); void resetToDefaults(); void setChannelMarker(Serializable *channelMarker) { m_channelMarker = channelMarker; } + void setRollupState(Serializable *rollupState) { m_rollupState = rollupState; } QByteArray serialize() const; bool deserialize(const QByteArray& data); QByteArray serializeNotificationSettings(QList notificationSettings) const; diff --git a/plugins/channelrx/demodadsb/adsbplugin.cpp b/plugins/channelrx/demodadsb/adsbplugin.cpp index e80193b4c..18b20b27f 100644 --- a/plugins/channelrx/demodadsb/adsbplugin.cpp +++ b/plugins/channelrx/demodadsb/adsbplugin.cpp @@ -30,7 +30,7 @@ const PluginDescriptor ADSBPlugin::m_pluginDescriptor = { ADSBDemod::m_channelId, QStringLiteral("ADS-B Demodulator"), - QStringLiteral("6.17.5"), + QStringLiteral("6.18.0"), QStringLiteral("(c) Jon Beniston, M7RCE"), QStringLiteral("https://github.com/f4exb/sdrangel"), true, diff --git a/plugins/channelrx/demodais/aisdemod.cpp b/plugins/channelrx/demodais/aisdemod.cpp index 896b2f583..ad1c1a1a8 100644 --- a/plugins/channelrx/demodais/aisdemod.cpp +++ b/plugins/channelrx/demodais/aisdemod.cpp @@ -483,6 +483,9 @@ void AISDemod::webapiUpdateChannelSettings( if (settings.m_channelMarker && channelSettingsKeys.contains("channelMarker")) { settings.m_channelMarker->updateFrom(channelSettingsKeys, response.getAisDemodSettings()->getChannelMarker()); } + if (settings.m_rollupState && channelSettingsKeys.contains("rollupState")) { + settings.m_rollupState->updateFrom(channelSettingsKeys, response.getAisDemodSettings()->getRollupState()); + } } void AISDemod::webapiFormatChannelSettings(SWGSDRangel::SWGChannelSettings& response, const AISDemodSettings& settings) @@ -546,6 +549,20 @@ void AISDemod::webapiFormatChannelSettings(SWGSDRangel::SWGChannelSettings& resp response.getAisDemodSettings()->setChannelMarker(swgChannelMarker); } } + + if (settings.m_rollupState) + { + if (response.getAisDemodSettings()->getRollupState()) + { + settings.m_rollupState->formatTo(response.getAisDemodSettings()->getRollupState()); + } + else + { + SWGSDRangel::SWGRollupState *swgRollupState = new SWGSDRangel::SWGRollupState(); + settings.m_rollupState->formatTo(swgRollupState); + response.getAisDemodSettings()->setRollupState(swgRollupState); + } + } } void AISDemod::webapiReverseSendSettings(QList& channelSettingsKeys, const AISDemodSettings& settings, bool force) diff --git a/plugins/channelrx/demodais/aisdemodgui.cpp b/plugins/channelrx/demodais/aisdemodgui.cpp index b6ec721ce..36adb15fb 100644 --- a/plugins/channelrx/demodais/aisdemodgui.cpp +++ b/plugins/channelrx/demodais/aisdemodgui.cpp @@ -364,7 +364,7 @@ void AISDemodGUI::onWidgetRolled(QWidget* widget, bool rollDown) } } - m_settings.m_rollupState = saveState(); + saveState(m_rollupState); applySettings(); } @@ -478,6 +478,7 @@ AISDemodGUI::AISDemodGUI(PluginAPI* pluginAPI, DeviceUISet *deviceUISet, Baseban setTitleColor(m_channelMarker.getColor()); m_settings.setChannelMarker(&m_channelMarker); m_settings.setScopeGUI(ui->scopeGUI); + m_settings.setRollupState(&m_rollupState); m_deviceUISet->addChannelMarker(&m_channelMarker); m_deviceUISet->addRollupWidget(this); @@ -601,9 +602,10 @@ void AISDemodGUI::displaySettings() ui->messages->setColumnWidth(i, m_settings.m_messageColumnSizes[i]); header->moveSection(header->visualIndex(i), m_settings.m_messageColumnIndexes[i]); } + filter(); - restoreState(m_settings.m_rollupState); + restoreState(m_rollupState); blockApplySettings(false); } diff --git a/plugins/channelrx/demodais/aisdemodgui.h b/plugins/channelrx/demodais/aisdemodgui.h index caafac32b..ac6a329ee 100644 --- a/plugins/channelrx/demodais/aisdemodgui.h +++ b/plugins/channelrx/demodais/aisdemodgui.h @@ -28,6 +28,7 @@ #include "channel/channelgui.h" #include "dsp/channelmarker.h" #include "util/messagequeue.h" +#include "settings/rollupstate.h" #include "aisdemodsettings.h" #include "aisdemod.h" @@ -67,6 +68,7 @@ private: PluginAPI* m_pluginAPI; DeviceUISet* m_deviceUISet; ChannelMarker m_channelMarker; + RollupState m_rollupState; AISDemodSettings m_settings; bool m_doApplySettings; ScopeVis* m_scopeVis; diff --git a/plugins/channelrx/demodais/aisdemodplugin.cpp b/plugins/channelrx/demodais/aisdemodplugin.cpp index 32a78439c..b810d08ea 100644 --- a/plugins/channelrx/demodais/aisdemodplugin.cpp +++ b/plugins/channelrx/demodais/aisdemodplugin.cpp @@ -29,7 +29,7 @@ const PluginDescriptor AISDemodPlugin::m_pluginDescriptor = { AISDemod::m_channelId, QStringLiteral("AIS Demodulator"), - QStringLiteral("6.17.4"), + QStringLiteral("6.18.0"), QStringLiteral("(c) Jon Beniston, M7RCE"), QStringLiteral("https://github.com/f4exb/sdrangel"), true, diff --git a/plugins/channelrx/demodais/aisdemodsettings.cpp b/plugins/channelrx/demodais/aisdemodsettings.cpp index f5f43303b..9adad474a 100644 --- a/plugins/channelrx/demodais/aisdemodsettings.cpp +++ b/plugins/channelrx/demodais/aisdemodsettings.cpp @@ -24,8 +24,9 @@ #include "aisdemodsettings.h" AISDemodSettings::AISDemodSettings() : - m_channelMarker(0), - m_scopeGUI(0) + m_channelMarker(nullptr), + m_scopeGUI(nullptr), + m_rollupState(nullptr) { resetToDefaults(); } @@ -79,9 +80,11 @@ QByteArray AISDemodSettings::serialize() const s.writeS32(11, m_scopeCh2); s.writeU32(12, m_rgbColor); s.writeString(13, m_title); + if (m_channelMarker) { s.writeBlob(14, m_channelMarker->serialize()); } + s.writeS32(15, m_streamIndex); s.writeBool(16, m_useReverseAPI); s.writeString(17, m_reverseAPIAddress); @@ -92,7 +95,10 @@ QByteArray AISDemodSettings::serialize() const s.writeString(22, m_logFilename); s.writeBool(23, m_logEnabled); s.writeS32(24, m_baud); - s.writeBlob(25, m_rollupState); + + if (m_rollupState) { + s.writeBlob(25, m_rollupState->serialize()); + } for (int i = 0; i < AISDEMOD_MESSAGE_COLUMNS; i++) s.writeS32(100 + i, m_messageColumnIndexes[i]); @@ -126,29 +132,36 @@ bool AISDemodSettings::deserialize(const QByteArray& data) d.readBool(6, &m_udpEnabled); d.readString(7, &m_udpAddress); d.readU32(8, &utmp); + if ((utmp > 1023) && (utmp < 65535)) { m_udpPort = utmp; } else { m_udpPort = 9999; } + d.readS32(9, (int *)&m_udpFormat, (int)Binary); d.readS32(10, &m_scopeCh1, 0); d.readS32(11, &m_scopeCh2, 0); d.readU32(12, &m_rgbColor, QColor(102, 0, 0).rgb()); d.readString(13, &m_title, "AIS Demodulator"); - d.readBlob(14, &bytetmp); - if (m_channelMarker) { + + if (m_channelMarker) + { + d.readBlob(14, &bytetmp); m_channelMarker->deserialize(bytetmp); } + d.readS32(15, &m_streamIndex, 0); d.readBool(16, &m_useReverseAPI, false); d.readString(17, &m_reverseAPIAddress, "127.0.0.1"); d.readU32(18, &utmp, 0); + if ((utmp > 1023) && (utmp < 65535)) { m_reverseAPIPort = utmp; } else { m_reverseAPIPort = 8888; } + d.readU32(19, &utmp, 0); m_reverseAPIDeviceIndex = utmp > 99 ? 99 : utmp; d.readU32(20, &utmp, 0); @@ -163,12 +176,20 @@ bool AISDemodSettings::deserialize(const QByteArray& data) d.readString(22, &m_logFilename, "ais_log.csv"); d.readBool(23, &m_logEnabled, false); d.readS32(24, &m_baud, 9600); - d.readBlob(25, &m_rollupState); - for (int i = 0; i < AISDEMOD_MESSAGE_COLUMNS; i++) + if (m_rollupState) + { + d.readBlob(25, &bytetmp); + m_rollupState->deserialize(bytetmp); + } + + for (int i = 0; i < AISDEMOD_MESSAGE_COLUMNS; i++) { d.readS32(100 + i, &m_messageColumnIndexes[i], i); - for (int i = 0; i < AISDEMOD_MESSAGE_COLUMNS; i++) + } + + for (int i = 0; i < AISDEMOD_MESSAGE_COLUMNS; i++) { d.readS32(200 + i, &m_messageColumnSizes[i], -1); + } return true; } diff --git a/plugins/channelrx/demodais/aisdemodsettings.h b/plugins/channelrx/demodais/aisdemodsettings.h index 19add71dd..02fd0396b 100644 --- a/plugins/channelrx/demodais/aisdemodsettings.h +++ b/plugins/channelrx/demodais/aisdemodsettings.h @@ -60,7 +60,7 @@ struct AISDemodSettings uint16_t m_reverseAPIDeviceIndex; uint16_t m_reverseAPIChannelIndex; Serializable *m_scopeGUI; - QByteArray m_rollupState; + Serializable *m_rollupState; int m_messageColumnIndexes[AISDEMOD_MESSAGE_COLUMNS];//!< How the columns are ordered in the table int m_messageColumnSizes[AISDEMOD_MESSAGE_COLUMNS]; //!< Size of the columns in the table @@ -70,6 +70,7 @@ struct AISDemodSettings AISDemodSettings(); void resetToDefaults(); void setChannelMarker(Serializable *channelMarker) { m_channelMarker = channelMarker; } + void setRollupState(Serializable *rollupState) { m_rollupState = rollupState; } void setScopeGUI(Serializable *scopeGUI) { m_scopeGUI = scopeGUI; } QByteArray serialize() const; bool deserialize(const QByteArray& data); diff --git a/plugins/channelrx/demodam/amdemod.cpp b/plugins/channelrx/demodam/amdemod.cpp index d6566b92f..2100745f4 100644 --- a/plugins/channelrx/demodam/amdemod.cpp +++ b/plugins/channelrx/demodam/amdemod.cpp @@ -400,6 +400,9 @@ void AMDemod::webapiUpdateChannelSettings( if (settings.m_channelMarker && channelSettingsKeys.contains("channelMarker")) { settings.m_channelMarker->updateFrom(channelSettingsKeys, response.getAmDemodSettings()->getChannelMarker()); } + if (settings.m_rollupState && channelSettingsKeys.contains("rollupState")) { + settings.m_rollupState->updateFrom(channelSettingsKeys, response.getAmDemodSettings()->getRollupState()); + } } int AMDemod::webapiReportGet( @@ -463,6 +466,20 @@ void AMDemod::webapiFormatChannelSettings(SWGSDRangel::SWGChannelSettings& respo response.getAmDemodSettings()->setChannelMarker(swgChannelMarker); } } + + if (settings.m_rollupState) + { + if (response.getAmDemodSettings()->getRollupState()) + { + settings.m_rollupState->formatTo(response.getAmDemodSettings()->getRollupState()); + } + else + { + SWGSDRangel::SWGRollupState *swgRollupState = new SWGSDRangel::SWGRollupState(); + settings.m_rollupState->formatTo(swgRollupState); + response.getAmDemodSettings()->setRollupState(swgRollupState); + } + } } void AMDemod::webapiFormatChannelReport(SWGSDRangel::SWGChannelReport& response) @@ -583,6 +600,13 @@ void AMDemod::webapiFormatChannelSettings( settings.m_channelMarker->formatTo(swgChannelMarker); swgAMDemodSettings->setChannelMarker(swgChannelMarker); } + + if (settings.m_rollupState && (channelSettingsKeys.contains("rollupState") || force)) + { + SWGSDRangel::SWGRollupState *swgRollupState = new SWGSDRangel::SWGRollupState(); + settings.m_rollupState->formatTo(swgRollupState); + swgAMDemodSettings->setRollupState(swgRollupState); + } } void AMDemod::networkManagerFinished(QNetworkReply *reply) diff --git a/plugins/channelrx/demodam/amdemodgui.cpp b/plugins/channelrx/demodam/amdemodgui.cpp index 127d5f3d5..c37dfb739 100644 --- a/plugins/channelrx/demodam/amdemodgui.cpp +++ b/plugins/channelrx/demodam/amdemodgui.cpp @@ -182,7 +182,7 @@ void AMDemodGUI::onWidgetRolled(QWidget* widget, bool rollDown) m_nfmDemod->setSpectrum(m_threadedSampleSink->getMessageQueue(), rollDown); */ - m_settings.m_rollupState = saveState(); + saveState(m_rollupState); applySettings(); } @@ -275,6 +275,7 @@ AMDemodGUI::AMDemodGUI(PluginAPI* pluginAPI, DeviceUISet *deviceUISet, BasebandS setTitleColor(m_channelMarker.getColor()); m_settings.setChannelMarker(&m_channelMarker); + m_settings.setRollupState(&m_rollupState); m_deviceUISet->addChannelMarker(&m_channelMarker); m_deviceUISet->addRollupWidget(this); @@ -372,7 +373,7 @@ void AMDemodGUI::displaySettings() displayStreamIndex(); - restoreState(m_settings.m_rollupState); + restoreState(m_rollupState); blockApplySettings(false); } diff --git a/plugins/channelrx/demodam/amdemodgui.h b/plugins/channelrx/demodam/amdemodgui.h index fed8a4b57..7320227bd 100644 --- a/plugins/channelrx/demodam/amdemodgui.h +++ b/plugins/channelrx/demodam/amdemodgui.h @@ -7,6 +7,7 @@ #include "dsp/channelmarker.h" #include "dsp/movingaverage.h" #include "util/messagequeue.h" +#include "settings/rollupstate.h" #include "amdemodsettings.h" class PluginAPI; @@ -40,6 +41,7 @@ private: PluginAPI* m_pluginAPI; DeviceUISet* m_deviceUISet; ChannelMarker m_channelMarker; + RollupState m_rollupState; AMDemodSettings m_settings; bool m_doApplySettings; diff --git a/plugins/channelrx/demodam/amdemodplugin.cpp b/plugins/channelrx/demodam/amdemodplugin.cpp index c60c7a463..c991cdb28 100644 --- a/plugins/channelrx/demodam/amdemodplugin.cpp +++ b/plugins/channelrx/demodam/amdemodplugin.cpp @@ -11,7 +11,7 @@ const PluginDescriptor AMDemodPlugin::m_pluginDescriptor = { AMDemod::m_channelId, QStringLiteral("AM Demodulator"), - QStringLiteral("6.6.1"), + QStringLiteral("6.18.0"), QStringLiteral("(c) Edouard Griffiths, F4EXB"), QStringLiteral("https://github.com/f4exb/sdrangel"), true, diff --git a/plugins/channelrx/demodam/amdemodsettings.cpp b/plugins/channelrx/demodam/amdemodsettings.cpp index 958e15ab3..db6a1950e 100644 --- a/plugins/channelrx/demodam/amdemodsettings.cpp +++ b/plugins/channelrx/demodam/amdemodsettings.cpp @@ -20,10 +20,12 @@ #include "dsp/dspengine.h" #include "util/simpleserializer.h" #include "settings/serializable.h" +#include "settings/rollupstate.h" #include "amdemodsettings.h" AMDemodSettings::AMDemodSettings() : - m_channelMarker(0) + m_channelMarker(nullptr), + m_rollupState(nullptr) { resetToDefaults(); } @@ -73,7 +75,10 @@ QByteArray AMDemodSettings::serialize() const s.writeU32(16, m_reverseAPIPort); s.writeU32(17, m_reverseAPIDeviceIndex); s.writeU32(18, m_reverseAPIChannelIndex); - s.writeBlob(19, m_rollupState); + + if (m_rollupState) { + s.writeBlob(19, m_rollupState->serialize()); + } return s.final(); } @@ -103,9 +108,10 @@ bool AMDemodSettings::deserialize(const QByteArray& data) m_volume = tmp * 0.1; d.readS32(5, &tmp, -40); m_squelch = tmp; - d.readBlob(6, &bytetmp); - if (m_channelMarker) { + if (m_channelMarker) + { + d.readBlob(6, &bytetmp); m_channelMarker->deserialize(bytetmp); } @@ -130,7 +136,12 @@ bool AMDemodSettings::deserialize(const QByteArray& data) m_reverseAPIDeviceIndex = utmp > 99 ? 99 : utmp; d.readU32(18, &utmp, 0); m_reverseAPIChannelIndex = utmp > 99 ? 99 : utmp; - d.readBlob(19, &m_rollupState); + + if (m_rollupState) + { + d.readBlob(19, &bytetmp); + m_rollupState->deserialize(bytetmp); + } return true; } diff --git a/plugins/channelrx/demodam/amdemodsettings.h b/plugins/channelrx/demodam/amdemodsettings.h index 4c280e68f..d200eeb06 100644 --- a/plugins/channelrx/demodam/amdemodsettings.h +++ b/plugins/channelrx/demodam/amdemodsettings.h @@ -49,11 +49,12 @@ struct AMDemodSettings uint16_t m_reverseAPIPort; uint16_t m_reverseAPIDeviceIndex; uint16_t m_reverseAPIChannelIndex; - QByteArray m_rollupState; + Serializable *m_rollupState; AMDemodSettings(); void resetToDefaults(); void setChannelMarker(Serializable *channelMarker) { m_channelMarker = channelMarker; } + void setRollupState(Serializable *rollupState) { m_rollupState = rollupState; } QByteArray serialize() const; bool deserialize(const QByteArray& data); }; diff --git a/plugins/channelrx/demodapt/aptdemod.cpp b/plugins/channelrx/demodapt/aptdemod.cpp index c35179dd7..19a11857c 100644 --- a/plugins/channelrx/demodapt/aptdemod.cpp +++ b/plugins/channelrx/demodapt/aptdemod.cpp @@ -453,6 +453,9 @@ void APTDemod::webapiUpdateChannelSettings( if (settings.m_channelMarker && channelSettingsKeys.contains("channelMarker")) { settings.m_channelMarker->updateFrom(channelSettingsKeys, response.getAptDemodSettings()->getChannelMarker()); } + if (settings.m_rollupState && channelSettingsKeys.contains("rollupState")) { + settings.m_rollupState->updateFrom(channelSettingsKeys, response.getAptDemodSettings()->getRollupState()); + } } void APTDemod::webapiFormatChannelSettings(SWGSDRangel::SWGChannelSettings& response, const APTDemodSettings& settings) @@ -506,6 +509,20 @@ void APTDemod::webapiFormatChannelSettings(SWGSDRangel::SWGChannelSettings& resp response.getAptDemodSettings()->setChannelMarker(swgChannelMarker); } } + + if (settings.m_rollupState) + { + if (response.getAptDemodSettings()->getRollupState()) + { + settings.m_rollupState->formatTo(response.getAptDemodSettings()->getRollupState()); + } + else + { + SWGSDRangel::SWGRollupState *swgRollupState = new SWGSDRangel::SWGRollupState(); + settings.m_rollupState->formatTo(swgRollupState); + response.getAptDemodSettings()->setRollupState(swgRollupState); + } + } } void APTDemod::webapiReverseSendSettings(QList& channelSettingsKeys, const APTDemodSettings& settings, bool force) @@ -607,6 +624,13 @@ void APTDemod::webapiFormatChannelSettings( settings.m_channelMarker->formatTo(swgChannelMarker); swgAPTDemodSettings->setChannelMarker(swgChannelMarker); } + + if (settings.m_rollupState && (channelSettingsKeys.contains("rollupState") || force)) + { + SWGSDRangel::SWGRollupState *swgRollupState = new SWGSDRangel::SWGRollupState(); + settings.m_rollupState->formatTo(swgRollupState); + swgAPTDemodSettings->setRollupState(swgRollupState); + } } int APTDemod::webapiActionsPost( diff --git a/plugins/channelrx/demodapt/aptdemodgui.cpp b/plugins/channelrx/demodapt/aptdemodgui.cpp index bca1bcaaf..7718d4d90 100644 --- a/plugins/channelrx/demodapt/aptdemodgui.cpp +++ b/plugins/channelrx/demodapt/aptdemodgui.cpp @@ -391,7 +391,7 @@ void APTDemodGUI::onWidgetRolled(QWidget* widget, bool rollDown) (void) widget; (void) rollDown; - m_settings.m_rollupState = saveState(); + saveState(m_rollupState); applySettings(); } @@ -477,6 +477,7 @@ APTDemodGUI::APTDemodGUI(PluginAPI* pluginAPI, DeviceUISet *deviceUISet, Baseban setTitleColor(m_channelMarker.getColor()); m_settings.setChannelMarker(&m_channelMarker); + m_settings.setRollupState(&m_rollupState); m_deviceUISet->addChannelMarker(&m_channelMarker); m_deviceUISet->addRollupWidget(this); @@ -544,15 +545,18 @@ void APTDemodGUI::displaySettings() ui->histogram->setChecked(m_settings.m_histogramEqualise); ui->precipitation->setChecked(m_settings.m_precipitationOverlay); ui->flip->setChecked(m_settings.m_flip); - if (m_settings.m_flip) + + if (m_settings.m_flip) { ui->image->setAlignment(Qt::AlignBottom | Qt::AlignHCenter); - else + } else { ui->image->setAlignment(Qt::AlignTop | Qt::AlignHCenter); + } + ui->channels->setCurrentIndex((int)m_settings.m_channels); displayStreamIndex(); - restoreState(m_settings.m_rollupState); + restoreState(m_rollupState); blockApplySettings(false); } diff --git a/plugins/channelrx/demodapt/aptdemodgui.h b/plugins/channelrx/demodapt/aptdemodgui.h index b80c35f8d..ca68df731 100644 --- a/plugins/channelrx/demodapt/aptdemodgui.h +++ b/plugins/channelrx/demodapt/aptdemodgui.h @@ -35,6 +35,7 @@ #include "dsp/channelmarker.h" #include "dsp/movingaverage.h" #include "util/messagequeue.h" +#include "settings/rollupstate.h" #include "aptdemodsettings.h" class PluginAPI; @@ -72,6 +73,7 @@ private: PluginAPI* m_pluginAPI; DeviceUISet* m_deviceUISet; ChannelMarker m_channelMarker; + RollupState m_rollupState; APTDemodSettings m_settings; bool m_doApplySettings; diff --git a/plugins/channelrx/demodapt/aptdemodplugin.cpp b/plugins/channelrx/demodapt/aptdemodplugin.cpp index 25dabf0de..ad430e904 100644 --- a/plugins/channelrx/demodapt/aptdemodplugin.cpp +++ b/plugins/channelrx/demodapt/aptdemodplugin.cpp @@ -29,7 +29,7 @@ const PluginDescriptor APTDemodPlugin::m_pluginDescriptor = { APTDemod::m_channelId, QStringLiteral("APT Demodulator"), - QStringLiteral("6.17.3"), + QStringLiteral("6.18.0"), QStringLiteral("(c) Jon Beniston, M7RCE and Aptdec authors"), QStringLiteral("https://github.com/f4exb/sdrangel"), true, diff --git a/plugins/channelrx/demodapt/aptdemodsettings.cpp b/plugins/channelrx/demodapt/aptdemodsettings.cpp index 58bf8957f..c162e3bcd 100644 --- a/plugins/channelrx/demodapt/aptdemodsettings.cpp +++ b/plugins/channelrx/demodapt/aptdemodsettings.cpp @@ -24,7 +24,8 @@ #include "aptdemodsettings.h" APTDemodSettings::APTDemodSettings() : - m_channelMarker(0) + m_channelMarker(nullptr), + m_rollupState(nullptr) { resetToDefaults(); } @@ -90,7 +91,10 @@ QByteArray APTDemodSettings::serialize() const s.writeU32(25, m_reverseAPIPort); s.writeU32(26, m_reverseAPIDeviceIndex); s.writeU32(27, m_reverseAPIChannelIndex); - s.writeBlob(28, m_rollupState); + + if (m_rollupState) { + s.writeBlob(28, m_rollupState->serialize()); + } return s.final(); } @@ -129,9 +133,9 @@ bool APTDemodSettings::deserialize(const QByteArray& data) d.readString(16, &m_autoSavePath, ""); d.readS32(17, &m_autoSaveMinScanLines, 200); - d.readBlob(20, &bytetmp); - - if (m_channelMarker) { + if (m_channelMarker) + { + d.readBlob(20, &bytetmp); m_channelMarker->deserialize(bytetmp); } @@ -151,7 +155,12 @@ bool APTDemodSettings::deserialize(const QByteArray& data) m_reverseAPIDeviceIndex = utmp > 99 ? 99 : utmp; d.readU32(27, &utmp, 0); m_reverseAPIChannelIndex = utmp > 99 ? 99 : utmp; - d.readBlob(28, &m_rollupState); + + if (m_rollupState) + { + d.readBlob(28, &bytetmp); + m_rollupState->deserialize(bytetmp); + } return true; } diff --git a/plugins/channelrx/demodapt/aptdemodsettings.h b/plugins/channelrx/demodapt/aptdemodsettings.h index dde7a4385..10ad3c383 100644 --- a/plugins/channelrx/demodapt/aptdemodsettings.h +++ b/plugins/channelrx/demodapt/aptdemodsettings.h @@ -53,11 +53,12 @@ struct APTDemodSettings uint16_t m_reverseAPIPort; uint16_t m_reverseAPIDeviceIndex; uint16_t m_reverseAPIChannelIndex; - QByteArray m_rollupState; + Serializable *m_rollupState; APTDemodSettings(); void resetToDefaults(); void setChannelMarker(Serializable *channelMarker) { m_channelMarker = channelMarker; } + void setRollupState(Serializable *rollupState) { m_rollupState = rollupState; } QByteArray serialize() const; bool deserialize(const QByteArray& data); }; diff --git a/plugins/channelrx/demodatv/atvdemodgui.cpp b/plugins/channelrx/demodatv/atvdemodgui.cpp index 87731f7a2..f804b197d 100644 --- a/plugins/channelrx/demodatv/atvdemodgui.cpp +++ b/plugins/channelrx/demodatv/atvdemodgui.cpp @@ -119,7 +119,7 @@ void ATVDemodGUI::displaySettings() ui->amScaleOffsetText->setText(QString("%1").arg(m_settings.m_amOffsetFactor)); applySampleRate(); - restoreState(m_settings.m_rollupState); + restoreState(m_rollupState); m_doApplySettings = true; } @@ -208,7 +208,7 @@ void ATVDemodGUI::onWidgetRolled(QWidget* widget, bool rollDown) (void) widget; (void) rollDown; - m_settings.m_rollupState = saveState(); + saveState(m_rollupState); applySettings(); } @@ -247,6 +247,9 @@ ATVDemodGUI::ATVDemodGUI(PluginAPI* objPluginAPI, DeviceUISet *deviceUISet, Base m_channelMarker.blockSignals(false); m_channelMarker.setVisible(true); // activate signal on the last setting only + m_settings.setChannelMarker(&m_channelMarker); + m_settings.setRollupState(&m_rollupState); + setTitleColor(m_channelMarker.getColor()); m_deviceUISet->addChannelMarker(&m_channelMarker); diff --git a/plugins/channelrx/demodatv/atvdemodgui.h b/plugins/channelrx/demodatv/atvdemodgui.h index ed3846ab5..cadfa42a0 100644 --- a/plugins/channelrx/demodatv/atvdemodgui.h +++ b/plugins/channelrx/demodatv/atvdemodgui.h @@ -23,6 +23,7 @@ #include "dsp/channelmarker.h" #include "util/movingaverage.h" #include "util/messagequeue.h" +#include "settings/rollupstate.h" #include "atvdemodsettings.h" @@ -59,6 +60,7 @@ private: PluginAPI* m_pluginAPI; DeviceUISet* m_deviceUISet; ChannelMarker m_channelMarker; + RollupState m_rollupState; ATVDemod* m_atvDemod; ATVDemodSettings m_settings; diff --git a/plugins/channelrx/demodatv/atvdemodplugin.cpp b/plugins/channelrx/demodatv/atvdemodplugin.cpp index 3dd705423..33a1fcb9e 100644 --- a/plugins/channelrx/demodatv/atvdemodplugin.cpp +++ b/plugins/channelrx/demodatv/atvdemodplugin.cpp @@ -30,7 +30,7 @@ const PluginDescriptor ATVDemodPlugin::m_ptrPluginDescriptor = { ATVDemod::m_channelId, QString("ATV Demodulator"), - QString("6.17.3"), + QString("6.18.0"), QString("(c) F4HKW for F4EXB / SDRAngel"), QString("https://github.com/f4exb/sdrangel"), true, diff --git a/plugins/channelrx/demodatv/atvdemodsettings.cpp b/plugins/channelrx/demodatv/atvdemodsettings.cpp index a6883f208..82b689946 100644 --- a/plugins/channelrx/demodatv/atvdemodsettings.cpp +++ b/plugins/channelrx/demodatv/atvdemodsettings.cpp @@ -23,7 +23,8 @@ #include "atvdemodsettings.h" ATVDemodSettings::ATVDemodSettings() : - m_channelMarker(0) + m_channelMarker(nullptr), + m_rollupState(nullptr) { resetToDefaults(); } @@ -85,7 +86,10 @@ QByteArray ATVDemodSettings::serialize() const s.writeS32(22, m_amScalingFactor); s.writeS32(23, m_amOffsetFactor); s.writeBool(24, m_fftFiltering); - s.writeBlob(25, m_rollupState); + + if (m_rollupState) { + s.writeBlob(25, m_rollupState->serialize()); + } return s.final(); } @@ -129,12 +133,24 @@ bool ATVDemodSettings::deserialize(const QByteArray& arrData) d.readS32(17, &tmp, 250); m_fmDeviation = tmp / 500.0f; d.readS32(18, &tmp, 1); + + if (m_channelMarker) + { + d.readBlob(19, &bytetmp); + m_channelMarker->deserialize(bytetmp); + } + m_atvStd = static_cast(tmp); d.readS32(21, &m_streamIndex, 0); d.readS32(22, &m_amScalingFactor, 100); d.readS32(23, &m_amOffsetFactor, 0); d.readBool(24, &m_fftFiltering, false); - d.readBlob(25, &m_rollupState); + + if (m_rollupState) + { + d.readBlob(25, &bytetmp); + m_rollupState->deserialize(bytetmp); + } return true; } @@ -322,4 +338,4 @@ void ATVDemodSettings::getBaseValues(int sampleRate, int linesPerSecond, uint32_ { nbPointsPerLine = sampleRate / linesPerSecond; nbPointsPerLine = nbPointsPerLine == 0 ? 1 : nbPointsPerLine; -} \ No newline at end of file +} diff --git a/plugins/channelrx/demodatv/atvdemodsettings.h b/plugins/channelrx/demodatv/atvdemodsettings.h index 377cb8af8..64f8f5275 100644 --- a/plugins/channelrx/demodatv/atvdemodsettings.h +++ b/plugins/channelrx/demodatv/atvdemodsettings.h @@ -74,11 +74,12 @@ struct ATVDemodSettings uint16_t m_udpPort; Serializable *m_channelMarker; int m_streamIndex; - QByteArray m_rollupState; + Serializable *m_rollupState; ATVDemodSettings(); void resetToDefaults(); void setChannelMarker(Serializable *channelMarker) { m_channelMarker = channelMarker; } + void setRollupState(Serializable *rollupState) { m_rollupState = rollupState; } QByteArray serialize() const; bool deserialize(const QByteArray& data); diff --git a/plugins/channelrx/demodbfm/bfmdemod.cpp b/plugins/channelrx/demodbfm/bfmdemod.cpp index 74379536b..457cbc69d 100644 --- a/plugins/channelrx/demodbfm/bfmdemod.cpp +++ b/plugins/channelrx/demodbfm/bfmdemod.cpp @@ -364,6 +364,9 @@ void BFMDemod::webapiUpdateChannelSettings( if (settings.m_channelMarker && channelSettingsKeys.contains("channelMarker")) { settings.m_channelMarker->updateFrom(channelSettingsKeys, response.getBfmDemodSettings()->getChannelMarker()); } + if (settings.m_rollupState && channelSettingsKeys.contains("rollupState")) { + settings.m_rollupState->updateFrom(channelSettingsKeys, response.getBfmDemodSettings()->getRollupState()); + } } int BFMDemod::webapiReportGet( @@ -442,6 +445,20 @@ void BFMDemod::webapiFormatChannelSettings(SWGSDRangel::SWGChannelSettings& resp response.getBfmDemodSettings()->setChannelMarker(swgChannelMarker); } } + + if (settings.m_rollupState) + { + if (response.getBfmDemodSettings()->getRollupState()) + { + settings.m_rollupState->formatTo(response.getBfmDemodSettings()->getRollupState()); + } + else + { + SWGSDRangel::SWGRollupState *swgRollupState = new SWGSDRangel::SWGRollupState(); + settings.m_rollupState->formatTo(swgRollupState); + response.getBfmDemodSettings()->setRollupState(swgRollupState); + } + } } void BFMDemod::webapiFormatChannelReport(SWGSDRangel::SWGChannelReport& response) @@ -612,6 +629,13 @@ void BFMDemod::webapiFormatChannelSettings( settings.m_channelMarker->formatTo(swgChannelMarker); swgBFMDemodSettings->setChannelMarker(swgChannelMarker); } + + if (settings.m_rollupState && (channelSettingsKeys.contains("rollupState") || force)) + { + SWGSDRangel::SWGRollupState *swgRollupState = new SWGSDRangel::SWGRollupState(); + settings.m_rollupState->formatTo(swgRollupState); + swgBFMDemodSettings->setRollupState(swgRollupState); + } } void BFMDemod::networkManagerFinished(QNetworkReply *reply) diff --git a/plugins/channelrx/demodbfm/bfmdemodgui.cpp b/plugins/channelrx/demodbfm/bfmdemodgui.cpp index 77a27df24..5ead1ec61 100644 --- a/plugins/channelrx/demodbfm/bfmdemodgui.cpp +++ b/plugins/channelrx/demodbfm/bfmdemodgui.cpp @@ -296,7 +296,7 @@ void BFMDemodGUI::onWidgetRolled(QWidget* widget, bool rollDown) (void) widget; (void) rollDown; - m_settings.m_rollupState = saveState(); + saveState(m_rollupState); applySettings(); } @@ -394,6 +394,7 @@ BFMDemodGUI::BFMDemodGUI(PluginAPI* pluginAPI, DeviceUISet *deviceUISet, Baseban m_settings.setChannelMarker(&m_channelMarker); m_settings.setSpectrumGUI(ui->spectrumGUI); + m_settings.setRollupState(&m_rollupState); m_deviceUISet->addChannelMarker(&m_channelMarker); m_deviceUISet->addRollupWidget(this); @@ -467,7 +468,7 @@ void BFMDemodGUI::displaySettings() displayStreamIndex(); - restoreState(m_settings.m_rollupState); + restoreState(m_rollupState); blockApplySettings(false); } diff --git a/plugins/channelrx/demodbfm/bfmdemodgui.h b/plugins/channelrx/demodbfm/bfmdemodgui.h index c49e7a5a6..eb2f08a01 100644 --- a/plugins/channelrx/demodbfm/bfmdemodgui.h +++ b/plugins/channelrx/demodbfm/bfmdemodgui.h @@ -22,6 +22,7 @@ #include "channel/channelgui.h" #include "dsp/channelmarker.h" #include "util/messagequeue.h" +#include "settings/rollupstate.h" #include "bfmdemodsettings.h" class PluginAPI; @@ -57,6 +58,7 @@ private: PluginAPI* m_pluginAPI; DeviceUISet* m_deviceUISet; ChannelMarker m_channelMarker; + RollupState m_rollupState; BFMDemodSettings m_settings; bool m_doApplySettings; int m_rdsTimerCount; diff --git a/plugins/channelrx/demodbfm/bfmdemodsettings.cpp b/plugins/channelrx/demodbfm/bfmdemodsettings.cpp index 42e985090..2a2c93bf8 100644 --- a/plugins/channelrx/demodbfm/bfmdemodsettings.cpp +++ b/plugins/channelrx/demodbfm/bfmdemodsettings.cpp @@ -29,8 +29,9 @@ const int BFMDemodSettings::m_rfBW[] = { }; BFMDemodSettings::BFMDemodSettings() : - m_channelMarker(0), - m_spectrumGUI(0) + m_channelMarker(nullptr), + m_spectrumGUI(nullptr), + m_rollupState(nullptr) { resetToDefaults(); } @@ -86,7 +87,10 @@ QByteArray BFMDemodSettings::serialize() const s.writeU32(17, m_reverseAPIDeviceIndex); s.writeU32(18, m_reverseAPIChannelIndex); s.writeS32(19, m_streamIndex); - s.writeBlob(20, m_rollupState); + + if (m_rollupState) { + s.writeBlob(20, m_rollupState->serialize()); + } return s.final(); } @@ -120,18 +124,19 @@ bool BFMDemodSettings::deserialize(const QByteArray& data) m_squelch = tmp; d.readU32(7, &m_rgbColor); - d.readBlob(8, &bytetmp); - if (m_spectrumGUI) { + if (m_spectrumGUI) + { + d.readBlob(8, &bytetmp); m_spectrumGUI->deserialize(bytetmp); } d.readBool(9, &m_audioStereo, false); d.readBool(10, &m_lsbStereo, false); - d.readBlob(11, &bytetmp); - - if (m_channelMarker) { + if (m_channelMarker) + { + d.readBlob(11, &bytetmp); m_channelMarker->deserialize(bytetmp); } @@ -152,7 +157,12 @@ bool BFMDemodSettings::deserialize(const QByteArray& data) d.readU32(18, &utmp, 0); m_reverseAPIChannelIndex = utmp > 99 ? 99 : utmp; d.readS32(19, &m_streamIndex, 0); - d.readBlob(20, &m_rollupState); + + if (m_rollupState) + { + d.readBlob(20, &bytetmp); + m_rollupState->deserialize(bytetmp); + } return true; } diff --git a/plugins/channelrx/demodbfm/bfmdemodsettings.h b/plugins/channelrx/demodbfm/bfmdemodsettings.h index da2855060..b2cdf7003 100644 --- a/plugins/channelrx/demodbfm/bfmdemodsettings.h +++ b/plugins/channelrx/demodbfm/bfmdemodsettings.h @@ -45,7 +45,7 @@ struct BFMDemodSettings Serializable *m_channelMarker; Serializable *m_spectrumGUI; - QByteArray m_rollupState; + Serializable *m_rollupState; static const int m_nbRFBW; static const int m_rfBW[]; @@ -53,6 +53,7 @@ struct BFMDemodSettings BFMDemodSettings(); void resetToDefaults(); void setChannelMarker(Serializable *channelMarker) { m_channelMarker = channelMarker; } + void setRollupState(Serializable *rollupState) { m_rollupState = rollupState; } void setSpectrumGUI(Serializable *spectrumGUI) { m_spectrumGUI = spectrumGUI; } QByteArray serialize() const; bool deserialize(const QByteArray& data); diff --git a/plugins/channelrx/demodbfm/bfmplugin.cpp b/plugins/channelrx/demodbfm/bfmplugin.cpp index 4b0d1f918..69e2e5518 100644 --- a/plugins/channelrx/demodbfm/bfmplugin.cpp +++ b/plugins/channelrx/demodbfm/bfmplugin.cpp @@ -31,7 +31,7 @@ const PluginDescriptor BFMPlugin::m_pluginDescriptor = { BFMDemod::m_channelId, QStringLiteral("Broadcast FM Demodulator"), - QStringLiteral("6.6.1"), + QStringLiteral("6.18.0"), QStringLiteral("(c) Edouard Griffiths, F4EXB"), QStringLiteral("https://github.com/f4exb/sdrangel"), true, diff --git a/plugins/channelrx/demodchirpchat/chirpchatdemod.cpp b/plugins/channelrx/demodchirpchat/chirpchatdemod.cpp index e9c4689ba..a365a46b3 100644 --- a/plugins/channelrx/demodchirpchat/chirpchatdemod.cpp +++ b/plugins/channelrx/demodchirpchat/chirpchatdemod.cpp @@ -609,6 +609,9 @@ void ChirpChatDemod::webapiUpdateChannelSettings( if (settings.m_channelMarker && channelSettingsKeys.contains("channelMarker")) { settings.m_channelMarker->updateFrom(channelSettingsKeys, response.getChirpChatDemodSettings()->getChannelMarker()); } + if (settings.m_rollupState && channelSettingsKeys.contains("rollupState")) { + settings.m_rollupState->updateFrom(channelSettingsKeys, response.getChirpChatDemodSettings()->getRollupState()); + } } int ChirpChatDemod::webapiReportGet( @@ -694,6 +697,20 @@ void ChirpChatDemod::webapiFormatChannelSettings(SWGSDRangel::SWGChannelSettings response.getChirpChatDemodSettings()->setChannelMarker(swgChannelMarker); } } + + if (settings.m_rollupState) + { + if (response.getChirpChatDemodSettings()->getRollupState()) + { + settings.m_rollupState->formatTo(response.getChirpChatDemodSettings()->getRollupState()); + } + else + { + SWGSDRangel::SWGRollupState *swgRollupState = new SWGSDRangel::SWGRollupState(); + settings.m_rollupState->formatTo(swgRollupState); + response.getChirpChatDemodSettings()->setRollupState(swgRollupState); + } + } } void ChirpChatDemod::webapiFormatChannelReport(SWGSDRangel::SWGChannelReport& response) @@ -860,6 +877,13 @@ void ChirpChatDemod::webapiFormatChannelSettings( settings.m_channelMarker->formatTo(swgChannelMarker); swgChirpChatDemodSettings->setChannelMarker(swgChannelMarker); } + + if (settings.m_rollupState && (channelSettingsKeys.contains("rollupState") || force)) + { + SWGSDRangel::SWGRollupState *swgRollupState = new SWGSDRangel::SWGRollupState(); + settings.m_rollupState->formatTo(swgRollupState); + swgChirpChatDemodSettings->setRollupState(swgRollupState); + } } void ChirpChatDemod::networkManagerFinished(QNetworkReply *reply) diff --git a/plugins/channelrx/demodchirpchat/chirpchatdemodgui.cpp b/plugins/channelrx/demodchirpchat/chirpchatdemodgui.cpp index b9a206012..6d937002a 100644 --- a/plugins/channelrx/demodchirpchat/chirpchatdemodgui.cpp +++ b/plugins/channelrx/demodchirpchat/chirpchatdemodgui.cpp @@ -323,7 +323,7 @@ void ChirpChatDemodGUI::onWidgetRolled(QWidget* widget, bool rollDown) (void) widget; (void) rollDown; - m_settings.m_rollupState = saveState(); + saveState(m_rollupState); applySettings(); } @@ -418,6 +418,7 @@ ChirpChatDemodGUI::ChirpChatDemodGUI(PluginAPI* pluginAPI, DeviceUISet *deviceUI m_settings.setChannelMarker(&m_channelMarker); m_settings.setSpectrumGUI(ui->spectrumGUI); + m_settings.setRollupState(&m_rollupState); connect(getInputMessageQueue(), SIGNAL(messageEnqueued()), this, SLOT(handleInputMessages())); @@ -498,7 +499,7 @@ void ChirpChatDemodGUI::displaySettings() displaySquelch(); - restoreState(m_settings.m_rollupState); + restoreState(m_rollupState); blockApplySettings(false); } diff --git a/plugins/channelrx/demodchirpchat/chirpchatdemodgui.h b/plugins/channelrx/demodchirpchat/chirpchatdemodgui.h index fddf7d551..0dc73f3ba 100644 --- a/plugins/channelrx/demodchirpchat/chirpchatdemodgui.h +++ b/plugins/channelrx/demodchirpchat/chirpchatdemodgui.h @@ -21,6 +21,7 @@ #include "channel/channelgui.h" #include "dsp/channelmarker.h" #include "util/messagequeue.h" +#include "settings/rollupstate.h" #include "chirpchatdemodsettings.h" @@ -86,6 +87,7 @@ private: PluginAPI* m_pluginAPI; DeviceUISet* m_deviceUISet; ChannelMarker m_channelMarker; + RollupState m_rollupState; ChirpChatDemodSettings m_settings; int m_basebandSampleRate; bool m_doApplySettings; diff --git a/plugins/channelrx/demodchirpchat/chirpchatdemodsettings.cpp b/plugins/channelrx/demodchirpchat/chirpchatdemodsettings.cpp index d1e973f9b..4a51c67da 100644 --- a/plugins/channelrx/demodchirpchat/chirpchatdemodsettings.cpp +++ b/plugins/channelrx/demodchirpchat/chirpchatdemodsettings.cpp @@ -127,7 +127,10 @@ QByteArray ChirpChatDemodSettings::serialize() const s.writeBool(26, m_sendViaUDP); s.writeString(27, m_udpAddress); s.writeU32(28, m_udpPort); - s.writeBlob(29, m_rollupState); + + if (m_rollupState) { + s.writeBlob(29, m_rollupState->serialize()); + } return s.final(); } @@ -152,12 +155,14 @@ bool ChirpChatDemodSettings::deserialize(const QByteArray& data) d.readS32(2, &m_bandwidthIndex, 0); d.readS32(3, &m_spreadFactor, 0); - if (m_spectrumGUI) { + if (m_spectrumGUI) + { d.readBlob(4, &bytetmp); m_spectrumGUI->deserialize(bytetmp); } - if (m_channelMarker) { + if (m_channelMarker) + { d.readBlob(5, &bytetmp); m_channelMarker->deserialize(bytetmp); } @@ -200,7 +205,12 @@ bool ChirpChatDemodSettings::deserialize(const QByteArray& data) } else { m_udpPort = 9999; } - d.readBlob(29, &m_rollupState); + + if (m_rollupState) + { + d.readBlob(29, &bytetmp); + m_rollupState->deserialize(bytetmp); + } return true; } diff --git a/plugins/channelrx/demodchirpchat/chirpchatdemodsettings.h b/plugins/channelrx/demodchirpchat/chirpchatdemodsettings.h index 91c93771e..93d9ba6b6 100644 --- a/plugins/channelrx/demodchirpchat/chirpchatdemodsettings.h +++ b/plugins/channelrx/demodchirpchat/chirpchatdemodsettings.h @@ -66,7 +66,7 @@ struct ChirpChatDemodSettings Serializable *m_channelMarker; Serializable *m_spectrumGUI; - QByteArray m_rollupState; + Serializable *m_rollupState; static const int bandwidths[]; static const int nbBandwidths; @@ -75,6 +75,7 @@ struct ChirpChatDemodSettings ChirpChatDemodSettings(); void resetToDefaults(); void setChannelMarker(Serializable *channelMarker) { m_channelMarker = channelMarker; } + void setRollupState(Serializable *rollupState) { m_rollupState = rollupState; } void setSpectrumGUI(Serializable *spectrumGUI) { m_spectrumGUI = spectrumGUI; } unsigned int getNbSFDFourths() const; //!< Get the number of SFD period fourths (depends on coding scheme) bool hasSyncWord() const; //!< Only LoRa has a syncword (for the moment) diff --git a/plugins/channelrx/demodchirpchat/chirpchatplugin.cpp b/plugins/channelrx/demodchirpchat/chirpchatplugin.cpp index 5ceb713f7..e6ca75626 100644 --- a/plugins/channelrx/demodchirpchat/chirpchatplugin.cpp +++ b/plugins/channelrx/demodchirpchat/chirpchatplugin.cpp @@ -27,7 +27,7 @@ const PluginDescriptor ChirpChatPlugin::m_pluginDescriptor = { ChirpChatDemod::m_channelId, QStringLiteral("ChirpChat Demodulator"), - QStringLiteral("6.17.4"), + QStringLiteral("6.18.0"), QStringLiteral("(c) Edouard Griffiths, F4EXB"), QStringLiteral("https://github.com/f4exb/sdrangel"), true, diff --git a/plugins/channelrx/demoddab/dabdemod.cpp b/plugins/channelrx/demoddab/dabdemod.cpp index fafa96e82..88c90b016 100644 --- a/plugins/channelrx/demoddab/dabdemod.cpp +++ b/plugins/channelrx/demoddab/dabdemod.cpp @@ -472,6 +472,9 @@ void DABDemod::webapiUpdateChannelSettings( if (settings.m_channelMarker && channelSettingsKeys.contains("channelMarker")) { settings.m_channelMarker->updateFrom(channelSettingsKeys, response.getDabDemodSettings()->getChannelMarker()); } + if (settings.m_rollupState && channelSettingsKeys.contains("rollupState")) { + settings.m_rollupState->updateFrom(channelSettingsKeys, response.getDabDemodSettings()->getRollupState()); + } } void DABDemod::webapiFormatChannelSettings(SWGSDRangel::SWGChannelSettings& response, const DABDemodSettings& settings) @@ -516,6 +519,20 @@ void DABDemod::webapiFormatChannelSettings(SWGSDRangel::SWGChannelSettings& resp response.getDabDemodSettings()->setChannelMarker(swgChannelMarker); } } + + if (settings.m_rollupState) + { + if (response.getDabDemodSettings()->getRollupState()) + { + settings.m_rollupState->formatTo(response.getDabDemodSettings()->getRollupState()); + } + else + { + SWGSDRangel::SWGRollupState *swgRollupState = new SWGSDRangel::SWGRollupState(); + settings.m_rollupState->formatTo(swgRollupState); + response.getDabDemodSettings()->setRollupState(swgRollupState); + } + } } void DABDemod::webapiReverseSendSettings(QList& channelSettingsKeys, const DABDemodSettings& settings, bool force) @@ -593,6 +610,13 @@ void DABDemod::webapiFormatChannelSettings( settings.m_channelMarker->formatTo(swgChannelMarker); swgDABDemodSettings->setChannelMarker(swgChannelMarker); } + + if (settings.m_rollupState && (channelSettingsKeys.contains("rollupState") || force)) + { + SWGSDRangel::SWGRollupState *swgRollupState = new SWGSDRangel::SWGRollupState(); + settings.m_rollupState->formatTo(swgRollupState); + swgDABDemodSettings->setRollupState(swgRollupState); + } } void DABDemod::networkManagerFinished(QNetworkReply *reply) diff --git a/plugins/channelrx/demoddab/dabdemodgui.cpp b/plugins/channelrx/demoddab/dabdemodgui.cpp index fc5e5bc59..406410d5b 100644 --- a/plugins/channelrx/demoddab/dabdemodgui.cpp +++ b/plugins/channelrx/demoddab/dabdemodgui.cpp @@ -384,7 +384,7 @@ void DABDemodGUI::onWidgetRolled(QWidget* widget, bool rollDown) (void) widget; (void) rollDown; - m_settings.m_rollupState = saveState(); + saveState(m_rollupState); applySettings(); } @@ -475,6 +475,7 @@ DABDemodGUI::DABDemodGUI(PluginAPI* pluginAPI, DeviceUISet *deviceUISet, Baseban setTitleColor(m_channelMarker.getColor()); m_settings.setChannelMarker(&m_channelMarker); + m_settings.setRollupState(&m_rollupState); m_deviceUISet->addChannelMarker(&m_channelMarker); m_deviceUISet->addRollupWidget(this); @@ -568,7 +569,7 @@ void DABDemodGUI::displaySettings() filter(); - restoreState(m_settings.m_rollupState); + restoreState(m_rollupState); blockApplySettings(false); } diff --git a/plugins/channelrx/demoddab/dabdemodgui.h b/plugins/channelrx/demoddab/dabdemodgui.h index 44a09933f..c8ba0270a 100644 --- a/plugins/channelrx/demoddab/dabdemodgui.h +++ b/plugins/channelrx/demoddab/dabdemodgui.h @@ -27,6 +27,7 @@ #include "dsp/channelmarker.h" #include "dsp/movingaverage.h" #include "util/messagequeue.h" +#include "settings/rollupstate.h" #include "dabdemodsettings.h" #include "dabdemod.h" @@ -62,6 +63,7 @@ private: PluginAPI* m_pluginAPI; DeviceUISet* m_deviceUISet; ChannelMarker m_channelMarker; + RollupState m_rollupState; DABDemodSettings m_settings; bool m_doApplySettings; diff --git a/plugins/channelrx/demoddab/dabdemodplugin.cpp b/plugins/channelrx/demoddab/dabdemodplugin.cpp index ad33f9368..0261b8caf 100644 --- a/plugins/channelrx/demoddab/dabdemodplugin.cpp +++ b/plugins/channelrx/demoddab/dabdemodplugin.cpp @@ -29,7 +29,7 @@ const PluginDescriptor DABDemodPlugin::m_pluginDescriptor = { DABDemod::m_channelId, QStringLiteral("DAB Demodulator"), - QStringLiteral("6.17.5"), + QStringLiteral("6.18.0"), QStringLiteral("(c) Jon Beniston, M7RCE. DAB library by Jvan Katwijk"), QStringLiteral("https://github.com/f4exb/sdrangel"), true, diff --git a/plugins/channelrx/demoddab/dabdemodsettings.cpp b/plugins/channelrx/demoddab/dabdemodsettings.cpp index f8448ec00..029729006 100644 --- a/plugins/channelrx/demoddab/dabdemodsettings.cpp +++ b/plugins/channelrx/demoddab/dabdemodsettings.cpp @@ -24,7 +24,8 @@ #include "dabdemodsettings.h" DABDemodSettings::DABDemodSettings() : - m_channelMarker(0) + m_channelMarker(nullptr), + m_rollupState(nullptr) { resetToDefaults(); } @@ -76,12 +77,18 @@ QByteArray DABDemodSettings::serialize() const s.writeU32(13, m_reverseAPIPort); s.writeU32(14, m_reverseAPIDeviceIndex); s.writeU32(15, m_reverseAPIChannelIndex); - s.writeBlob(16, m_rollupState); - for (int i = 0; i < DABDEMOD_COLUMNS; i++) + if (m_rollupState) { + s.writeBlob(16, m_rollupState->serialize()); + } + + for (int i = 0; i < DABDEMOD_COLUMNS; i++) { s.writeS32(100 + i, m_columnIndexes[i]); - for (int i = 0; i < DABDEMOD_COLUMNS; i++) + } + + for (int i = 0; i < DABDEMOD_COLUMNS; i++) { s.writeS32(200 + i, m_columnSizes[i]); + } return s.final(); } @@ -110,9 +117,9 @@ bool DABDemodSettings::deserialize(const QByteArray& data) d.readBool(6, &m_audioMute, false); d.readString(7, &m_audioDeviceName, AudioDeviceManager::m_defaultDeviceName); - d.readBlob(8, &bytetmp); - - if (m_channelMarker) { + if (m_channelMarker) + { + d.readBlob(8, &bytetmp); m_channelMarker->deserialize(bytetmp); } @@ -132,12 +139,20 @@ bool DABDemodSettings::deserialize(const QByteArray& data) m_reverseAPIDeviceIndex = utmp > 99 ? 99 : utmp; d.readU32(15, &utmp, 0); m_reverseAPIChannelIndex = utmp > 99 ? 99 : utmp; - d.readBlob(16, &m_rollupState); - for (int i = 0; i < DABDEMOD_COLUMNS; i++) + if (m_rollupState) + { + d.readBlob(16, &bytetmp); + m_rollupState->deserialize(bytetmp); + } + + for (int i = 0; i < DABDEMOD_COLUMNS; i++) { d.readS32(100 + i, &m_columnIndexes[i], i); - for (int i = 0; i < DABDEMOD_COLUMNS; i++) + } + + for (int i = 0; i < DABDEMOD_COLUMNS; i++) { d.readS32(200 + i, &m_columnSizes[i], -1); + } return true; } diff --git a/plugins/channelrx/demoddab/dabdemodsettings.h b/plugins/channelrx/demoddab/dabdemodsettings.h index 320261d4c..80234e935 100644 --- a/plugins/channelrx/demoddab/dabdemodsettings.h +++ b/plugins/channelrx/demoddab/dabdemodsettings.h @@ -45,7 +45,7 @@ struct DABDemodSettings uint16_t m_reverseAPIPort; uint16_t m_reverseAPIDeviceIndex; uint16_t m_reverseAPIChannelIndex; - QByteArray m_rollupState; + Serializable *m_rollupState; int m_columnIndexes[DABDEMOD_COLUMNS];//!< How the columns are ordered in the table int m_columnSizes[DABDEMOD_COLUMNS]; //!< Size of the columns in the table @@ -53,6 +53,7 @@ struct DABDemodSettings DABDemodSettings(); void resetToDefaults(); void setChannelMarker(Serializable *channelMarker) { m_channelMarker = channelMarker; } + void setRollupState(Serializable *rollupState) { m_rollupState = rollupState; } QByteArray serialize() const; bool deserialize(const QByteArray& data); }; diff --git a/plugins/channelrx/demoddatv/datvdemod.cpp b/plugins/channelrx/demoddatv/datvdemod.cpp index ca78fe016..94c029a4e 100644 --- a/plugins/channelrx/demoddatv/datvdemod.cpp +++ b/plugins/channelrx/demoddatv/datvdemod.cpp @@ -414,6 +414,9 @@ void DATVDemod::webapiUpdateChannelSettings( if (settings.m_channelMarker && channelSettingsKeys.contains("channelMarker")) { settings.m_channelMarker->updateFrom(channelSettingsKeys, response.getDatvDemodSettings()->getChannelMarker()); } + if (settings.m_rollupState && channelSettingsKeys.contains("rollupState")) { + settings.m_rollupState->updateFrom(channelSettingsKeys, response.getDatvDemodSettings()->getRollupState()); + } } void DATVDemod::webapiFormatChannelSettings(SWGSDRangel::SWGChannelSettings& response, const DATVDemodSettings& settings) @@ -496,6 +499,20 @@ void DATVDemod::webapiFormatChannelSettings(SWGSDRangel::SWGChannelSettings& res response.getDatvDemodSettings()->setChannelMarker(swgChannelMarker); } } + + if (settings.m_rollupState) + { + if (response.getDatvDemodSettings()->getRollupState()) + { + settings.m_rollupState->formatTo(response.getDatvDemodSettings()->getRollupState()); + } + else + { + SWGSDRangel::SWGRollupState *swgRollupState = new SWGSDRangel::SWGRollupState(); + settings.m_rollupState->formatTo(swgRollupState); + response.getDatvDemodSettings()->setRollupState(swgRollupState); + } + } } void DATVDemod::webapiFormatChannelReport(SWGSDRangel::SWGChannelReport& response) @@ -646,6 +663,13 @@ void DATVDemod::webapiFormatChannelSettings( settings.m_channelMarker->formatTo(swgChannelMarker); swgDATVDemodSettings->setChannelMarker(swgChannelMarker); } + + if (settings.m_rollupState && (channelSettingsKeys.contains("rollupState") || force)) + { + SWGSDRangel::SWGRollupState *swgRollupState = new SWGSDRangel::SWGRollupState(); + settings.m_rollupState->formatTo(swgRollupState); + swgDATVDemodSettings->setRollupState(swgRollupState); + } } void DATVDemod::webapiReverseSendSettings(QList& channelSettingsKeys, const DATVDemodSettings& settings, bool force) diff --git a/plugins/channelrx/demoddatv/datvdemodgui.cpp b/plugins/channelrx/demoddatv/datvdemodgui.cpp index d403fb91d..93e9bd612 100644 --- a/plugins/channelrx/demoddatv/datvdemodgui.cpp +++ b/plugins/channelrx/demoddatv/datvdemodgui.cpp @@ -137,7 +137,7 @@ void DATVDemodGUI::onWidgetRolled(QWidget* widget, bool rollDown) (void) widget; (void) rollDown; - m_settings.m_rollupState = saveState(); + saveState(m_rollupState); applySettings(); } @@ -228,6 +228,7 @@ DATVDemodGUI::DATVDemodGUI(PluginAPI* objPluginAPI, DeviceUISet *deviceUISet, Ba } m_settings.setChannelMarker(&m_objChannelMarker); + m_settings.setRollupState(&m_rollupState); connect(ui->screenTV_2, &DATVideoRender::onMetaDataChanged, this, &DATVDemodGUI::on_StreamMetaDataChanged); @@ -394,7 +395,7 @@ void DATVDemodGUI::displaySettings() connect(m_datvDemod->getUDPStream(), &DATVUDPStream::fifoData, this, &DATVDemodGUI::on_StreamDataAvailable); } - restoreState(m_settings.m_rollupState); + restoreState(m_rollupState); blockApplySettings(false); } diff --git a/plugins/channelrx/demoddatv/datvdemodgui.h b/plugins/channelrx/demoddatv/datvdemodgui.h index 71afc7e9a..efd4f6283 100644 --- a/plugins/channelrx/demoddatv/datvdemodgui.h +++ b/plugins/channelrx/demoddatv/datvdemodgui.h @@ -23,6 +23,7 @@ #include "channel/channelgui.h" #include "dsp/channelmarker.h" #include "dsp/movingaverage.h" +#include "settings/rollupstate.h" #include "datvdemod.h" @@ -101,6 +102,7 @@ private: DeviceUISet* m_deviceUISet; ChannelMarker m_objChannelMarker; + RollupState m_rollupState; DATVDemod* m_datvDemod; MessageQueue m_inputMessageQueue; DATVDemodSettings m_settings; diff --git a/plugins/channelrx/demoddatv/datvdemodplugin.cpp b/plugins/channelrx/demoddatv/datvdemodplugin.cpp index fa3942431..eb49440dc 100644 --- a/plugins/channelrx/demoddatv/datvdemodplugin.cpp +++ b/plugins/channelrx/demoddatv/datvdemodplugin.cpp @@ -30,7 +30,7 @@ const PluginDescriptor DATVDemodPlugin::m_ptrPluginDescriptor = { DATVDemod::m_channelId, QString("DATV Demodulator"), - QString("6.17.3"), + QString("6.18.0"), QString("(c) F4HKW for SDRAngel using LeanSDR framework (c) F4DAV"), QString("https://github.com/f4exb/sdrangel"), true, diff --git a/plugins/channelrx/demoddatv/datvdemodsettings.cpp b/plugins/channelrx/demoddatv/datvdemodsettings.cpp index 9afd69604..ceb3b4bc5 100644 --- a/plugins/channelrx/demoddatv/datvdemodsettings.cpp +++ b/plugins/channelrx/demoddatv/datvdemodsettings.cpp @@ -28,7 +28,8 @@ #include "datvdemodsettings.h" DATVDemodSettings::DATVDemodSettings() : - m_channelMarker(0) + m_channelMarker(nullptr), + m_rollupState(nullptr) { resetToDefaults(); } @@ -113,7 +114,10 @@ QByteArray DATVDemodSettings::serialize() const s.writeString(34, m_softLDPCToolPath); s.writeS32(35, m_softLDPCMaxTrials); s.writeBool(36, m_playerEnable); - s.writeBlob(37, m_rollupState); + + if (m_rollupState) { + s.writeBlob(37, m_rollupState->serialize()); + } return s.final(); } @@ -146,9 +150,9 @@ bool DATVDemodSettings::deserialize(const QByteArray& data) tmp = tmp < 0 ? 0 : tmp >= (int) MOD_UNSET ? (int) MOD_UNSET - 1 : tmp; m_modulation = (DATVModulation) tmp; - d.readBlob(6, &bytetmp); - - if (m_channelMarker) { + if (m_channelMarker) + { + d.readBlob(6, &bytetmp); m_channelMarker->deserialize(bytetmp); } @@ -202,7 +206,12 @@ bool DATVDemodSettings::deserialize(const QByteArray& data) d.readS32(35, &tmp, 8); m_softLDPCMaxTrials = tmp < 1 ? 1 : tmp > m_softLDPCMaxMaxTrials ? m_softLDPCMaxMaxTrials : tmp; d.readBool(36, &m_playerEnable, true); - d.readBlob(37, &m_rollupState); + + if (m_rollupState) + { + d.readBlob(37, &bytetmp); + m_rollupState->deserialize(bytetmp); + } validateSystemConfiguration(); diff --git a/plugins/channelrx/demoddatv/datvdemodsettings.h b/plugins/channelrx/demoddatv/datvdemodsettings.h index 88cd4da98..4d5712d7e 100644 --- a/plugins/channelrx/demoddatv/datvdemodsettings.h +++ b/plugins/channelrx/demoddatv/datvdemodsettings.h @@ -107,12 +107,13 @@ struct DATVDemodSettings uint16_t m_reverseAPIPort; uint16_t m_reverseAPIDeviceIndex; uint16_t m_reverseAPIChannelIndex; - QByteArray m_rollupState; + Serializable *m_rollupState; static const int m_softLDPCMaxMaxTrials = 50; DATVDemodSettings(); void resetToDefaults(); void setChannelMarker(Serializable *channelMarker) { m_channelMarker = channelMarker; } + void setRollupState(Serializable *rollupState) { m_rollupState = rollupState; } QByteArray serialize() const; bool deserialize(const QByteArray& data); void debug(const QString& msg) const; diff --git a/plugins/channelrx/demoddsd/dsddemod.cpp b/plugins/channelrx/demoddsd/dsddemod.cpp index 945570561..8e21022db 100644 --- a/plugins/channelrx/demoddsd/dsddemod.cpp +++ b/plugins/channelrx/demoddsd/dsddemod.cpp @@ -453,6 +453,9 @@ void DSDDemod::webapiUpdateChannelSettings( if (settings.m_channelMarker && channelSettingsKeys.contains("channelMarker")) { settings.m_channelMarker->updateFrom(channelSettingsKeys, response.getDsdDemodSettings()->getChannelMarker()); } + if (settings.m_rollupState && channelSettingsKeys.contains("rollupState")) { + settings.m_rollupState->updateFrom(channelSettingsKeys, response.getDsdDemodSettings()->getRollupState()); + } } int DSDDemod::webapiReportGet( @@ -527,6 +530,20 @@ void DSDDemod::webapiFormatChannelSettings(SWGSDRangel::SWGChannelSettings& resp response.getDsdDemodSettings()->setChannelMarker(swgChannelMarker); } } + + if (settings.m_rollupState) + { + if (response.getDsdDemodSettings()->getRollupState()) + { + settings.m_rollupState->formatTo(response.getDsdDemodSettings()->getRollupState()); + } + else + { + SWGSDRangel::SWGRollupState *swgRollupState = new SWGSDRangel::SWGRollupState(); + settings.m_rollupState->formatTo(swgRollupState); + response.getDsdDemodSettings()->setRollupState(swgRollupState); + } + } } void DSDDemod::webapiFormatChannelReport(SWGSDRangel::SWGChannelReport& response) @@ -689,6 +706,13 @@ void DSDDemod::webapiFormatChannelSettings( settings.m_channelMarker->formatTo(swgChannelMarker); swgDSDDemodSettings->setChannelMarker(swgChannelMarker); } + + if (settings.m_rollupState && (channelSettingsKeys.contains("rollupState") || force)) + { + SWGSDRangel::SWGRollupState *swgRollupState = new SWGSDRangel::SWGRollupState(); + settings.m_rollupState->formatTo(swgRollupState); + swgDSDDemodSettings->setRollupState(swgRollupState); + } } void DSDDemod::networkManagerFinished(QNetworkReply *reply) diff --git a/plugins/channelrx/demoddsd/dsddemodgui.cpp b/plugins/channelrx/demoddsd/dsddemodgui.cpp index 8a25c9803..b6f79dea8 100644 --- a/plugins/channelrx/demoddsd/dsddemodgui.cpp +++ b/plugins/channelrx/demoddsd/dsddemodgui.cpp @@ -248,7 +248,7 @@ void DSDDemodGUI::onWidgetRolled(QWidget* widget, bool rollDown) (void) widget; (void) rollDown; - m_settings.m_rollupState = saveState(); + saveState(m_rollupState); applySettings(); } @@ -378,6 +378,7 @@ DSDDemodGUI::DSDDemodGUI(PluginAPI* pluginAPI, DeviceUISet *deviceUISet, Baseban connect(&m_channelMarker, SIGNAL(highlightedByCursor()), this, SLOT(channelMarkerHighlightedByCursor())); m_settings.setChannelMarker(&m_channelMarker); + m_settings.setRollupState(&m_rollupState); updateMyPosition(); displaySettings(); @@ -462,7 +463,7 @@ void DSDDemodGUI::displaySettings() displayStreamIndex(); - restoreState(m_settings.m_rollupState); + restoreState(m_rollupState); blockApplySettings(false); } diff --git a/plugins/channelrx/demoddsd/dsddemodgui.h b/plugins/channelrx/demoddsd/dsddemodgui.h index 31809e6d1..d72985ae5 100644 --- a/plugins/channelrx/demoddsd/dsddemodgui.h +++ b/plugins/channelrx/demoddsd/dsddemodgui.h @@ -26,6 +26,7 @@ #include "dsp/channelmarker.h" #include "dsp/movingaverage.h" #include "util/messagequeue.h" +#include "settings/rollupstate.h" #include "dsddemodsettings.h" #include "dsdstatustextdialog.h" @@ -70,6 +71,7 @@ private: PluginAPI* m_pluginAPI; DeviceUISet* m_deviceUISet; ChannelMarker m_channelMarker; + RollupState m_rollupState; DSDDemodSettings m_settings; bool m_doApplySettings; diff --git a/plugins/channelrx/demoddsd/dsddemodplugin.cpp b/plugins/channelrx/demoddsd/dsddemodplugin.cpp index 48250b4bc..c120b3e88 100644 --- a/plugins/channelrx/demoddsd/dsddemodplugin.cpp +++ b/plugins/channelrx/demoddsd/dsddemodplugin.cpp @@ -30,7 +30,7 @@ const PluginDescriptor DSDDemodPlugin::m_pluginDescriptor = { DSDDemod::m_channelId, QStringLiteral("DSD Demodulator"), - QStringLiteral("6.10.1"), + QStringLiteral("6.18.0"), QStringLiteral("(c) Edouard Griffiths, F4EXB"), QStringLiteral("https://github.com/f4exb/sdrangel"), true, diff --git a/plugins/channelrx/demoddsd/dsddemodsettings.cpp b/plugins/channelrx/demoddsd/dsddemodsettings.cpp index be27306dd..02dd24b33 100644 --- a/plugins/channelrx/demoddsd/dsddemodsettings.cpp +++ b/plugins/channelrx/demoddsd/dsddemodsettings.cpp @@ -23,7 +23,8 @@ #include "dsddemodsettings.h" DSDDemodSettings::DSDDemodSettings() : - m_channelMarker(nullptr) + m_channelMarker(nullptr), + m_rollupState(nullptr) { resetToDefaults(); } @@ -96,7 +97,10 @@ QByteArray DSDDemodSettings::serialize() const s.writeU32(28, m_reverseAPIChannelIndex); s.writeBool(29, m_audioMute); s.writeS32(30, m_streamIndex); - s.writeBlob(31, m_rollupState); + + if (m_rollupState) { + s.writeBlob(31, m_rollupState->serialize()); + } return s.final(); } @@ -118,7 +122,8 @@ bool DSDDemodSettings::deserialize(const QByteArray& data) qint32 tmp; uint32_t utmp; - if (m_channelMarker) { + if (m_channelMarker) + { d.readBlob(17, &bytetmp); m_channelMarker->deserialize(bytetmp); } @@ -169,7 +174,12 @@ bool DSDDemodSettings::deserialize(const QByteArray& data) m_reverseAPIChannelIndex = utmp > 99 ? 99 : utmp; d.readBool(29, &m_audioMute, false); d.readS32(30, &m_streamIndex, 0); - d.readBlob(31, &m_rollupState); + + if (m_rollupState) + { + d.readBlob(31, &bytetmp); + m_rollupState->deserialize(bytetmp); + } return true; } diff --git a/plugins/channelrx/demoddsd/dsddemodsettings.h b/plugins/channelrx/demoddsd/dsddemodsettings.h index 12c907978..e16dd5d7d 100644 --- a/plugins/channelrx/demoddsd/dsddemodsettings.h +++ b/plugins/channelrx/demoddsd/dsddemodsettings.h @@ -54,11 +54,12 @@ struct DSDDemodSettings uint16_t m_reverseAPIChannelIndex; Serializable *m_channelMarker; - QByteArray m_rollupState; + Serializable *m_rollupState; DSDDemodSettings(); void resetToDefaults(); void setChannelMarker(Serializable *channelMarker) { m_channelMarker = channelMarker; } + void setRollupState(Serializable *rollupState) { m_rollupState = rollupState; } QByteArray serialize() const; bool deserialize(const QByteArray& data); }; diff --git a/plugins/channelrx/demodfreedv/freedvdemod.cpp b/plugins/channelrx/demodfreedv/freedvdemod.cpp index 5ff507573..6982c0823 100644 --- a/plugins/channelrx/demodfreedv/freedvdemod.cpp +++ b/plugins/channelrx/demodfreedv/freedvdemod.cpp @@ -360,6 +360,9 @@ void FreeDVDemod::webapiUpdateChannelSettings( if (settings.m_channelMarker && channelSettingsKeys.contains("channelMarker")) { settings.m_channelMarker->updateFrom(channelSettingsKeys, response.getFreeDvDemodSettings()->getChannelMarker()); } + if (settings.m_rollupState && channelSettingsKeys.contains("rollupState")) { + settings.m_rollupState->updateFrom(channelSettingsKeys, response.getFreeDvDemodSettings()->getRollupState()); + } } int FreeDVDemod::webapiReportGet( @@ -437,6 +440,20 @@ void FreeDVDemod::webapiFormatChannelSettings(SWGSDRangel::SWGChannelSettings& r response.getFreeDvDemodSettings()->setChannelMarker(swgChannelMarker); } } + + if (settings.m_rollupState) + { + if (response.getFreeDvDemodSettings()->getRollupState()) + { + settings.m_rollupState->formatTo(response.getFreeDvDemodSettings()->getRollupState()); + } + else + { + SWGSDRangel::SWGRollupState *swgRollupState = new SWGSDRangel::SWGRollupState(); + settings.m_rollupState->formatTo(swgRollupState); + response.getFreeDvDemodSettings()->setRollupState(swgRollupState); + } + } } void FreeDVDemod::webapiFormatChannelReport(SWGSDRangel::SWGChannelReport& response) @@ -561,6 +578,13 @@ void FreeDVDemod::webapiFormatChannelSettings( settings.m_channelMarker->formatTo(swgChannelMarker); swgFreeDVDemodSettings->setChannelMarker(swgChannelMarker); } + + if (settings.m_rollupState && (channelSettingsKeys.contains("rollupState") || force)) + { + SWGSDRangel::SWGRollupState *swgRollupState = new SWGSDRangel::SWGRollupState(); + settings.m_rollupState->formatTo(swgRollupState); + swgFreeDVDemodSettings->setRollupState(swgRollupState); + } } void FreeDVDemod::networkManagerFinished(QNetworkReply *reply) diff --git a/plugins/channelrx/demodfreedv/freedvdemodgui.cpp b/plugins/channelrx/demodfreedv/freedvdemodgui.cpp index 0dd72b933..51138defa 100644 --- a/plugins/channelrx/demodfreedv/freedvdemodgui.cpp +++ b/plugins/channelrx/demodfreedv/freedvdemodgui.cpp @@ -236,7 +236,7 @@ void FreeDVDemodGUI::onWidgetRolled(QWidget* widget, bool rollDown) (void) widget; (void) rollDown; - m_settings.m_rollupState = saveState(); + saveState(m_rollupState); applySettings(); } @@ -290,6 +290,7 @@ FreeDVDemodGUI::FreeDVDemodGUI(PluginAPI* pluginAPI, DeviceUISet *deviceUISet, B m_settings.setChannelMarker(&m_channelMarker); m_settings.setSpectrumGUI(ui->spectrumGUI); + m_settings.setRollupState(&m_rollupState); m_deviceUISet->addChannelMarker(&m_channelMarker); m_deviceUISet->addRollupWidget(this); @@ -392,7 +393,7 @@ void FreeDVDemodGUI::displaySettings() displayStreamIndex(); - restoreState(m_settings.m_rollupState); + restoreState(m_rollupState); blockApplySettings(false); } diff --git a/plugins/channelrx/demodfreedv/freedvdemodgui.h b/plugins/channelrx/demodfreedv/freedvdemodgui.h index c53aaa955..d36c30436 100644 --- a/plugins/channelrx/demodfreedv/freedvdemodgui.h +++ b/plugins/channelrx/demodfreedv/freedvdemodgui.h @@ -24,6 +24,7 @@ #include "dsp/channelmarker.h" #include "dsp/movingaverage.h" #include "util/messagequeue.h" +#include "settings/rollupstate.h" #include "freedvdemodsettings.h" class PluginAPI; @@ -59,6 +60,7 @@ private: PluginAPI* m_pluginAPI; DeviceUISet* m_deviceUISet; ChannelMarker m_channelMarker; + RollupState m_rollupState; FreeDVDemodSettings m_settings; bool m_doApplySettings; int m_spectrumRate; diff --git a/plugins/channelrx/demodfreedv/freedvdemodsettings.cpp b/plugins/channelrx/demodfreedv/freedvdemodsettings.cpp index f4ba75fb4..f5fea767f 100644 --- a/plugins/channelrx/demodfreedv/freedvdemodsettings.cpp +++ b/plugins/channelrx/demodfreedv/freedvdemodsettings.cpp @@ -31,8 +31,9 @@ const float FreeDVDemodSettings::m_mminPowerThresholdDBf = 100.0f; #endif FreeDVDemodSettings::FreeDVDemodSettings() : - m_channelMarker(0), - m_spectrumGUI(0) + m_channelMarker(nullptr), + m_spectrumGUI(nullptr), + m_rollupState(nullptr) { resetToDefaults(); } @@ -80,7 +81,10 @@ QByteArray FreeDVDemodSettings::serialize() const s.writeU32(22, m_reverseAPIChannelIndex); s.writeS32(23, (int) m_freeDVMode); s.writeS32(24, m_streamIndex); - s.writeBlob(25, m_rollupState); + + if (m_rollupState) { + s.writeBlob(25, m_rollupState->serialize()); + } return s.final(); } @@ -107,7 +111,8 @@ bool FreeDVDemodSettings::deserialize(const QByteArray& data) d.readS32(3, &tmp, 30); m_volume = tmp / 10.0; - if (m_spectrumGUI) { + if (m_spectrumGUI) + { d.readBlob(4, &bytetmp); m_spectrumGUI->deserialize(bytetmp); } @@ -142,7 +147,12 @@ bool FreeDVDemodSettings::deserialize(const QByteArray& data) } d.readS32(24, &m_streamIndex, 0); - d.readBlob(25, &m_rollupState); + + if (m_rollupState) + { + d.readBlob(25, &bytetmp); + m_rollupState->deserialize(bytetmp); + } return true; } diff --git a/plugins/channelrx/demodfreedv/freedvdemodsettings.h b/plugins/channelrx/demodfreedv/freedvdemodsettings.h index 98ee02970..ef3ce36eb 100644 --- a/plugins/channelrx/demodfreedv/freedvdemodsettings.h +++ b/plugins/channelrx/demodfreedv/freedvdemodsettings.h @@ -54,11 +54,12 @@ struct FreeDVDemodSettings Serializable *m_channelMarker; Serializable *m_spectrumGUI; - QByteArray m_rollupState; + Serializable *m_rollupState; FreeDVDemodSettings(); void resetToDefaults(); void setChannelMarker(Serializable *channelMarker) { m_channelMarker = channelMarker; } + void setRollupState(Serializable *rollupState) { m_rollupState = rollupState; } void setSpectrumGUI(Serializable *spectrumGUI) { m_spectrumGUI = spectrumGUI; } QByteArray serialize() const; bool deserialize(const QByteArray& data); diff --git a/plugins/channelrx/demodfreedv/freedvplugin.cpp b/plugins/channelrx/demodfreedv/freedvplugin.cpp index 32818f3de..767625a28 100644 --- a/plugins/channelrx/demodfreedv/freedvplugin.cpp +++ b/plugins/channelrx/demodfreedv/freedvplugin.cpp @@ -28,7 +28,7 @@ const PluginDescriptor FreeDVPlugin::m_pluginDescriptor = { FreeDVDemod::m_channelId, QStringLiteral("FreeDV Demodulator"), - QStringLiteral("6.3.3"), + QStringLiteral("6.18.0"), QStringLiteral("(c) Edouard Griffiths, F4EXB"), QStringLiteral("https://github.com/f4exb/sdrangel"), true, diff --git a/plugins/channelrx/demodnfm/nfmdemod.cpp b/plugins/channelrx/demodnfm/nfmdemod.cpp index a59e3620b..40f0d2903 100644 --- a/plugins/channelrx/demodnfm/nfmdemod.cpp +++ b/plugins/channelrx/demodnfm/nfmdemod.cpp @@ -416,6 +416,9 @@ void NFMDemod::webapiUpdateChannelSettings( if (settings.m_channelMarker && channelSettingsKeys.contains("channelMarker")) { settings.m_channelMarker->updateFrom(channelSettingsKeys, response.getNfmDemodSettings()->getChannelMarker()); } + if (settings.m_rollupState && channelSettingsKeys.contains("rollupState")) { + settings.m_rollupState->updateFrom(channelSettingsKeys, response.getNfmDemodSettings()->getRollupState()); + } } int NFMDemod::webapiReportGet( @@ -483,6 +486,20 @@ void NFMDemod::webapiFormatChannelSettings(SWGSDRangel::SWGChannelSettings& resp response.getNfmDemodSettings()->setChannelMarker(swgChannelMarker); } } + + if (settings.m_rollupState) + { + if (response.getNfmDemodSettings()->getRollupState()) + { + settings.m_rollupState->formatTo(response.getNfmDemodSettings()->getRollupState()); + } + else + { + SWGSDRangel::SWGRollupState *swgRollupState = new SWGSDRangel::SWGRollupState(); + settings.m_rollupState->formatTo(swgRollupState); + response.getNfmDemodSettings()->setRollupState(swgRollupState); + } + } } void NFMDemod::webapiFormatChannelReport(SWGSDRangel::SWGChannelReport& response) @@ -626,6 +643,13 @@ void NFMDemod::webapiFormatChannelSettings( settings.m_channelMarker->formatTo(swgChannelMarker); swgNFMDemodSettings->setChannelMarker(swgChannelMarker); } + + if (settings.m_rollupState && (channelSettingsKeys.contains("rollupState") || force)) + { + SWGSDRangel::SWGRollupState *swgRollupState = new SWGSDRangel::SWGRollupState(); + settings.m_rollupState->formatTo(swgRollupState); + swgNFMDemodSettings->setRollupState(swgRollupState); + } } void NFMDemod::networkManagerFinished(QNetworkReply *reply) diff --git a/plugins/channelrx/demodnfm/nfmdemodgui.cpp b/plugins/channelrx/demodnfm/nfmdemodgui.cpp index 4759a1914..831ac89ad 100644 --- a/plugins/channelrx/demodnfm/nfmdemodgui.cpp +++ b/plugins/channelrx/demodnfm/nfmdemodgui.cpp @@ -280,7 +280,7 @@ void NFMDemodGUI::onWidgetRolled(QWidget* widget, bool rollDown) m_nfmDemod->setSpectrum(m_threadedSampleSink->getMessageQueue(), rollDown); */ - m_settings.m_rollupState = saveState(); + saveState(m_rollupState); applySettings(); } @@ -406,6 +406,7 @@ NFMDemodGUI::NFMDemodGUI(PluginAPI* pluginAPI, DeviceUISet *deviceUISet, Baseban m_channelMarker.setVisible(true); // activate signal on the last setting only m_settings.setChannelMarker(&m_channelMarker); + m_settings.setRollupState(&m_rollupState); m_deviceUISet->addChannelMarker(&m_channelMarker); m_deviceUISet->addRollupWidget(this); @@ -508,7 +509,7 @@ void NFMDemodGUI::displaySettings() setDcsCode(m_reportedDcsCode); displayStreamIndex(); - restoreState(m_settings.m_rollupState); + restoreState(m_rollupState); blockApplySettings(false); } diff --git a/plugins/channelrx/demodnfm/nfmdemodgui.h b/plugins/channelrx/demodnfm/nfmdemodgui.h index 0e7377744..da1ce7d94 100644 --- a/plugins/channelrx/demodnfm/nfmdemodgui.h +++ b/plugins/channelrx/demodnfm/nfmdemodgui.h @@ -6,6 +6,7 @@ #include "dsp/channelmarker.h" #include "dsp/movingaverage.h" #include "util/messagequeue.h" +#include "settings/rollupstate.h" #include "nfmdemodsettings.h" @@ -39,6 +40,7 @@ private: PluginAPI* m_pluginAPI; DeviceUISet* m_deviceUISet; ChannelMarker m_channelMarker; + RollupState m_rollupState; NFMDemodSettings m_settings; bool m_basicSettingsShown; bool m_doApplySettings; diff --git a/plugins/channelrx/demodnfm/nfmdemodsettings.cpp b/plugins/channelrx/demodnfm/nfmdemodsettings.cpp index 7bd85b723..3be041951 100644 --- a/plugins/channelrx/demodnfm/nfmdemodsettings.cpp +++ b/plugins/channelrx/demodnfm/nfmdemodsettings.cpp @@ -42,7 +42,8 @@ const int NFMDemodSettings::m_fmDev[] = { // peak deviation (Hz) - full is doubl const int NFMDemodSettings::m_nbChannelSpacings = 7; NFMDemodSettings::NFMDemodSettings() : - m_channelMarker(0) + m_channelMarker(nullptr), + m_rollupState(nullptr) { resetToDefaults(); } @@ -107,7 +108,10 @@ QByteArray NFMDemodSettings::serialize() const s.writeBool(23, m_dcsOn); s.writeU32(24, m_dcsCode); s.writeBool(25, m_dcsPositive); - s.writeBlob(26, m_rollupState); + + if (m_rollupState) { + s.writeBlob(26, m_rollupState->serialize()); + } return s.final(); } @@ -171,7 +175,12 @@ bool NFMDemodSettings::deserialize(const QByteArray& data) d.readU32(24, &utmp, 0023); m_dcsCode = utmp < 511 ? utmp : 511; d.readBool(25, &m_dcsPositive, false); - d.readBlob(26, &m_rollupState); + + if (m_rollupState) + { + d.readBlob(26, &bytetmp); + m_rollupState->deserialize(bytetmp); + } return true; } diff --git a/plugins/channelrx/demodnfm/nfmdemodsettings.h b/plugins/channelrx/demodnfm/nfmdemodsettings.h index 2f9b10efd..3db632a36 100644 --- a/plugins/channelrx/demodnfm/nfmdemodsettings.h +++ b/plugins/channelrx/demodnfm/nfmdemodsettings.h @@ -54,13 +54,14 @@ struct NFMDemodSettings uint16_t m_reverseAPIPort; uint16_t m_reverseAPIDeviceIndex; uint16_t m_reverseAPIChannelIndex; - QByteArray m_rollupState; Serializable *m_channelMarker; + Serializable *m_rollupState; NFMDemodSettings(); void resetToDefaults(); void setChannelMarker(Serializable *channelMarker) { m_channelMarker = channelMarker; } + void setRollupState(Serializable *rollupState) { m_rollupState = rollupState; } QByteArray serialize() const; bool deserialize(const QByteArray& data); diff --git a/plugins/channelrx/demodnfm/nfmplugin.cpp b/plugins/channelrx/demodnfm/nfmplugin.cpp index 76e4bc905..4abb66ff9 100644 --- a/plugins/channelrx/demodnfm/nfmplugin.cpp +++ b/plugins/channelrx/demodnfm/nfmplugin.cpp @@ -12,7 +12,7 @@ const PluginDescriptor NFMPlugin::m_pluginDescriptor = { NFMDemod::m_channelId, QStringLiteral("NFM Demodulator"), - QStringLiteral("6.10.0"), + QStringLiteral("6.18.0"), QStringLiteral("(c) Edouard Griffiths, F4EXB"), QStringLiteral("https://github.com/f4exb/sdrangel"), true, diff --git a/plugins/channelrx/demodpacket/packetdemod.cpp b/plugins/channelrx/demodpacket/packetdemod.cpp index 1c5cf3da1..0bae4b0be 100644 --- a/plugins/channelrx/demodpacket/packetdemod.cpp +++ b/plugins/channelrx/demodpacket/packetdemod.cpp @@ -480,6 +480,9 @@ void PacketDemod::webapiUpdateChannelSettings( if (settings.m_channelMarker && channelSettingsKeys.contains("channelMarker")) { settings.m_channelMarker->updateFrom(channelSettingsKeys, response.getPacketDemodSettings()->getChannelMarker()); } + if (settings.m_rollupState && channelSettingsKeys.contains("rollupState")) { + settings.m_rollupState->updateFrom(channelSettingsKeys, response.getPacketDemodSettings()->getRollupState()); + } } void PacketDemod::webapiFormatChannelSettings(SWGSDRangel::SWGChannelSettings& response, const PacketDemodSettings& settings) @@ -527,6 +530,20 @@ void PacketDemod::webapiFormatChannelSettings(SWGSDRangel::SWGChannelSettings& r response.getPacketDemodSettings()->setChannelMarker(swgChannelMarker); } } + + if (settings.m_rollupState) + { + if (response.getPacketDemodSettings()->getRollupState()) + { + settings.m_rollupState->formatTo(response.getPacketDemodSettings()->getRollupState()); + } + else + { + SWGSDRangel::SWGRollupState *swgRollupState = new SWGSDRangel::SWGRollupState(); + settings.m_rollupState->formatTo(swgRollupState); + response.getPacketDemodSettings()->setRollupState(swgRollupState); + } + } } void PacketDemod::webapiFormatChannelReport(SWGSDRangel::SWGChannelReport& response) @@ -623,6 +640,13 @@ void PacketDemod::webapiFormatChannelSettings( settings.m_channelMarker->formatTo(swgChannelMarker); swgPacketDemodSettings->setChannelMarker(swgChannelMarker); } + + if (settings.m_rollupState && (channelSettingsKeys.contains("rollupState") || force)) + { + SWGSDRangel::SWGRollupState *swgRollupState = new SWGSDRangel::SWGRollupState(); + settings.m_rollupState->formatTo(swgRollupState); + swgPacketDemodSettings->setRollupState(swgRollupState); + } } void PacketDemod::networkManagerFinished(QNetworkReply *reply) diff --git a/plugins/channelrx/demodpacket/packetdemodgui.cpp b/plugins/channelrx/demodpacket/packetdemodgui.cpp index de4d2e1a8..dd4e69094 100644 --- a/plugins/channelrx/demodpacket/packetdemodgui.cpp +++ b/plugins/channelrx/demodpacket/packetdemodgui.cpp @@ -362,7 +362,7 @@ void PacketDemodGUI::onWidgetRolled(QWidget* widget, bool rollDown) (void) widget; (void) rollDown; - m_settings.m_rollupState = saveState(); + saveState(m_rollupState); applySettings(); } @@ -446,6 +446,7 @@ PacketDemodGUI::PacketDemodGUI(PluginAPI* pluginAPI, DeviceUISet *deviceUISet, B setTitleColor(m_channelMarker.getColor()); m_settings.setChannelMarker(&m_channelMarker); + m_settings.setRollupState(&m_rollupState); m_deviceUISet->addChannelMarker(&m_channelMarker); m_deviceUISet->addRollupWidget(this); @@ -545,7 +546,7 @@ void PacketDemodGUI::displaySettings() filter(); - restoreState(m_settings.m_rollupState); + restoreState(m_rollupState); blockApplySettings(false); } diff --git a/plugins/channelrx/demodpacket/packetdemodgui.h b/plugins/channelrx/demodpacket/packetdemodgui.h index 521dcd8d9..0e4bf46ca 100644 --- a/plugins/channelrx/demodpacket/packetdemodgui.h +++ b/plugins/channelrx/demodpacket/packetdemodgui.h @@ -33,6 +33,7 @@ #include "dsp/channelmarker.h" #include "dsp/movingaverage.h" #include "util/messagequeue.h" +#include "settings/rollupstate.h" #include "packetdemodsettings.h" class PluginAPI; @@ -67,6 +68,7 @@ private: PluginAPI* m_pluginAPI; DeviceUISet* m_deviceUISet; ChannelMarker m_channelMarker; + RollupState m_rollupState; PacketDemodSettings m_settings; bool m_doApplySettings; diff --git a/plugins/channelrx/demodpacket/packetdemodplugin.cpp b/plugins/channelrx/demodpacket/packetdemodplugin.cpp index 417f72879..2ba24deb8 100644 --- a/plugins/channelrx/demodpacket/packetdemodplugin.cpp +++ b/plugins/channelrx/demodpacket/packetdemodplugin.cpp @@ -29,7 +29,7 @@ const PluginDescriptor PacketDemodPlugin::m_pluginDescriptor = { PacketDemod::m_channelId, QStringLiteral("Packet Demodulator"), - QStringLiteral("6.17.4"), + QStringLiteral("6.18.0"), QStringLiteral("(c) Jon Beniston, M7RCE"), QStringLiteral("https://github.com/f4exb/sdrangel"), true, diff --git a/plugins/channelrx/demodpacket/packetdemodsettings.cpp b/plugins/channelrx/demodpacket/packetdemodsettings.cpp index a74c5bd91..a44381513 100644 --- a/plugins/channelrx/demodpacket/packetdemodsettings.cpp +++ b/plugins/channelrx/demodpacket/packetdemodsettings.cpp @@ -24,7 +24,8 @@ #include "packetdemodsettings.h" PacketDemodSettings::PacketDemodSettings() : - m_channelMarker(0) + m_channelMarker(nullptr), + m_rollupState(nullptr) { resetToDefaults(); } @@ -89,12 +90,18 @@ QByteArray PacketDemodSettings::serialize() const s.writeString(25, m_logFilename); s.writeBool(26, m_logEnabled); - s.writeBlob(27, m_rollupState); - for (int i = 0; i < PACKETDEMOD_COLUMNS; i++) + if (m_rollupState) { + s.writeBlob(27, m_rollupState->serialize()); + } + + for (int i = 0; i < PACKETDEMOD_COLUMNS; i++) { s.writeS32(100 + i, m_columnIndexes[i]); - for (int i = 0; i < PACKETDEMOD_COLUMNS; i++) + } + + for (int i = 0; i < PACKETDEMOD_COLUMNS; i++) { s.writeS32(200 + i, m_columnSizes[i]); + } return s.final(); } @@ -120,9 +127,10 @@ bool PacketDemodSettings::deserialize(const QByteArray& data) d.readString(3, &m_filterFrom, ""); d.readString(4, &m_filterTo, ""); d.readString(5, &m_filterPID, ""); - d.readBlob(6, &bytetmp); - if (m_channelMarker) { + if (m_channelMarker) + { + d.readBlob(6, &bytetmp); m_channelMarker->deserialize(bytetmp); } @@ -149,6 +157,7 @@ bool PacketDemodSettings::deserialize(const QByteArray& data) d.readBool(22, &m_udpEnabled); d.readString(23, &m_udpAddress); d.readU32(24, &utmp); + if ((utmp > 1023) && (utmp < 65535)) { m_udpPort = utmp; } else { @@ -157,12 +166,20 @@ bool PacketDemodSettings::deserialize(const QByteArray& data) d.readString(25, &m_logFilename, "pager_log.csv"); d.readBool(26, &m_logEnabled, false); - d.readBlob(27, &m_rollupState); - for (int i = 0; i < PACKETDEMOD_COLUMNS; i++) + if (m_rollupState) + { + d.readBlob(27, &bytetmp); + m_rollupState->deserialize(bytetmp); + } + + for (int i = 0; i < PACKETDEMOD_COLUMNS; i++) { d.readS32(100 + i, &m_columnIndexes[i], i); - for (int i = 0; i < PACKETDEMOD_COLUMNS; i++) + } + + for (int i = 0; i < PACKETDEMOD_COLUMNS; i++) { d.readS32(200 + i, &m_columnSizes[i], -1); + } return true; } diff --git a/plugins/channelrx/demodpacket/packetdemodsettings.h b/plugins/channelrx/demodpacket/packetdemodsettings.h index 0b28fcf71..76e6efa87 100644 --- a/plugins/channelrx/demodpacket/packetdemodsettings.h +++ b/plugins/channelrx/demodpacket/packetdemodsettings.h @@ -56,7 +56,7 @@ struct PacketDemodSettings QString m_logFilename; bool m_logEnabled; - QByteArray m_rollupState; + Serializable *m_rollupState; int m_columnIndexes[PACKETDEMOD_COLUMNS];//!< How the columns are ordered in the table int m_columnSizes[PACKETDEMOD_COLUMNS]; //!< Size of the columns in the table @@ -66,6 +66,7 @@ struct PacketDemodSettings PacketDemodSettings(); void resetToDefaults(); void setChannelMarker(Serializable *channelMarker) { m_channelMarker = channelMarker; } + void setRollupState(Serializable *rollupState) { m_rollupState = rollupState; } QByteArray serialize() const; bool deserialize(const QByteArray& data); int getBaudRate() const; diff --git a/plugins/channelrx/demodpager/pagerdemod.cpp b/plugins/channelrx/demodpager/pagerdemod.cpp index e1ca1fc28..61ea2e8a9 100644 --- a/plugins/channelrx/demodpager/pagerdemod.cpp +++ b/plugins/channelrx/demodpager/pagerdemod.cpp @@ -465,6 +465,9 @@ void PagerDemod::webapiUpdateChannelSettings( if (settings.m_channelMarker && channelSettingsKeys.contains("channelMarker")) { settings.m_channelMarker->updateFrom(channelSettingsKeys, response.getPagerDemodSettings()->getChannelMarker()); } + if (settings.m_rollupState && channelSettingsKeys.contains("rollupState")) { + settings.m_rollupState->updateFrom(channelSettingsKeys, response.getPagerDemodSettings()->getRollupState()); + } } void PagerDemod::webapiFormatChannelSettings(SWGSDRangel::SWGChannelSettings& response, const PagerDemodSettings& settings) @@ -529,6 +532,19 @@ void PagerDemod::webapiFormatChannelSettings(SWGSDRangel::SWGChannelSettings& re } } + if (settings.m_rollupState) + { + if (response.getPagerDemodSettings()->getRollupState()) + { + settings.m_rollupState->formatTo(response.getPagerDemodSettings()->getRollupState()); + } + else + { + SWGSDRangel::SWGRollupState *swgRollupState = new SWGSDRangel::SWGRollupState(); + settings.m_rollupState->formatTo(swgRollupState); + response.getPagerDemodSettings()->setRollupState(swgRollupState); + } + } } void PagerDemod::webapiFormatChannelReport(SWGSDRangel::SWGChannelReport& response) @@ -638,6 +654,13 @@ void PagerDemod::webapiFormatChannelSettings( settings.m_channelMarker->formatTo(swgChannelMarker); swgPagerDemodSettings->setChannelMarker(swgChannelMarker); } + + if (settings.m_rollupState && (channelSettingsKeys.contains("rollupState") || force)) + { + SWGSDRangel::SWGRollupState *swgRollupState = new SWGSDRangel::SWGRollupState(); + settings.m_rollupState->formatTo(swgRollupState); + swgPagerDemodSettings->setRollupState(swgRollupState); + } } void PagerDemod::networkManagerFinished(QNetworkReply *reply) diff --git a/plugins/channelrx/demodpager/pagerdemod.h b/plugins/channelrx/demodpager/pagerdemod.h index 03a151ba8..5fa294e7a 100644 --- a/plugins/channelrx/demodpager/pagerdemod.h +++ b/plugins/channelrx/demodpager/pagerdemod.h @@ -51,8 +51,7 @@ public: const PagerDemodSettings& getSettings() const { return m_settings; } bool getForce() const { return m_force; } - static MsgConfigurePagerDemod* create(const PagerDemodSettings& settings, bool force) - { + static MsgConfigurePagerDemod* create(const PagerDemodSettings& settings, bool force) { return new MsgConfigurePagerDemod(settings, force); } @@ -79,9 +78,24 @@ public: int getBCHParityErrors() const { return m_bchParityErrors; } QDateTime getDateTime() const { return m_dateTime; } - static MsgPagerMessage* create(int address, int functionBits, const QString& alphaMessage, const QString& numericMessage, int evenParityErrors, int bchParityErrors) + static MsgPagerMessage* create( + int address, + int functionBits, + const QString& alphaMessage, + const QString& numericMessage, + int evenParityErrors, + int bchParityErrors + ) { - return new MsgPagerMessage(address, functionBits, alphaMessage, numericMessage, evenParityErrors, bchParityErrors, QDateTime::currentDateTime()); + return new MsgPagerMessage( + address, + functionBits, + alphaMessage, + numericMessage, + evenParityErrors, + bchParityErrors, + QDateTime::currentDateTime() + ); } private: diff --git a/plugins/channelrx/demodpager/pagerdemodgui.cpp b/plugins/channelrx/demodpager/pagerdemodgui.cpp index e6488e83e..426d3b05a 100644 --- a/plugins/channelrx/demodpager/pagerdemodgui.cpp +++ b/plugins/channelrx/demodpager/pagerdemodgui.cpp @@ -413,7 +413,7 @@ void PagerDemodGUI::onWidgetRolled(QWidget* widget, bool rollDown) } } - m_settings.m_rollupState = saveState(); + saveState(m_rollupState); applySettings(); } @@ -505,6 +505,7 @@ PagerDemodGUI::PagerDemodGUI(PluginAPI* pluginAPI, DeviceUISet *deviceUISet, Bas setTitleColor(m_channelMarker.getColor()); m_settings.setChannelMarker(&m_channelMarker); m_settings.setScopeGUI(ui->scopeGUI); + m_settings.setRollupState(&m_rollupState); m_deviceUISet->addChannelMarker(&m_channelMarker); m_deviceUISet->addRollupWidget(this); @@ -624,6 +625,7 @@ void PagerDemodGUI::displaySettings() // Order and size columns QHeaderView *header = ui->messages->horizontalHeader(); + for (int i = 0; i < PAGERDEMOD_MESSAGE_COLUMNS; i++) { bool hidden = m_settings.m_messageColumnSizes[i] == 0; @@ -633,9 +635,10 @@ void PagerDemodGUI::displaySettings() ui->messages->setColumnWidth(i, m_settings.m_messageColumnSizes[i]); header->moveSection(header->visualIndex(i), m_settings.m_messageColumnIndexes[i]); } + filter(); - restoreState(m_settings.m_rollupState); + restoreState(m_rollupState); blockApplySettings(false); } diff --git a/plugins/channelrx/demodpager/pagerdemodgui.h b/plugins/channelrx/demodpager/pagerdemodgui.h index 472c84a4c..1ad9ed1d3 100644 --- a/plugins/channelrx/demodpager/pagerdemodgui.h +++ b/plugins/channelrx/demodpager/pagerdemodgui.h @@ -24,6 +24,7 @@ #include "channel/channelgui.h" #include "dsp/channelmarker.h" #include "util/messagequeue.h" +#include "settings/rollupstate.h" #include "pagerdemodsettings.h" #include "pagerdemod.h" @@ -61,6 +62,7 @@ private: PluginAPI* m_pluginAPI; DeviceUISet* m_deviceUISet; ChannelMarker m_channelMarker; + RollupState m_rollupState; PagerDemodSettings m_settings; bool m_doApplySettings; ScopeVis* m_scopeVis; diff --git a/plugins/channelrx/demodpager/pagerdemodplugin.cpp b/plugins/channelrx/demodpager/pagerdemodplugin.cpp index d69d761ff..fcfce031b 100644 --- a/plugins/channelrx/demodpager/pagerdemodplugin.cpp +++ b/plugins/channelrx/demodpager/pagerdemodplugin.cpp @@ -29,7 +29,7 @@ const PluginDescriptor PagerDemodPlugin::m_pluginDescriptor = { PagerDemod::m_channelId, QStringLiteral("Pager Demodulator"), - QStringLiteral("6.17.4"), + QStringLiteral("6.18.0"), QStringLiteral("(c) Jon Beniston, M7RCE"), QStringLiteral("https://github.com/f4exb/sdrangel"), true, diff --git a/plugins/channelrx/demodpager/pagerdemodsettings.cpp b/plugins/channelrx/demodpager/pagerdemodsettings.cpp index 7d4b9f686..6556548f8 100644 --- a/plugins/channelrx/demodpager/pagerdemodsettings.cpp +++ b/plugins/channelrx/demodpager/pagerdemodsettings.cpp @@ -25,8 +25,9 @@ #include "pagerdemodsettings.h" PagerDemodSettings::PagerDemodSettings() : - m_channelMarker(0), - m_scopeGUI(0) + m_channelMarker(nullptr), + m_scopeGUI(nullptr), + m_rollupState(nullptr) { resetToDefaults(); } @@ -80,9 +81,11 @@ QByteArray PagerDemodSettings::serialize() const s.writeS32(11, m_scopeCh2); s.writeU32(12, m_rgbColor); s.writeString(13, m_title); + if (m_channelMarker) { s.writeBlob(14, m_channelMarker->serialize()); } + s.writeS32(15, m_streamIndex); s.writeBool(16, m_useReverseAPI); s.writeString(17, m_reverseAPIAddress); @@ -93,10 +96,12 @@ QByteArray PagerDemodSettings::serialize() const s.writeBool(22, m_reverse); s.writeBlob(23, serializeIntList(m_sevenbit)); s.writeBlob(24, serializeIntList(m_unicode)); - s.writeString(25, m_logFilename); s.writeBool(26, m_logEnabled); - s.writeBlob(27, m_rollupState); + + if (m_rollupState) { + s.writeBlob(27, m_rollupState->serialize()); + } for (int i = 0; i < PAGERDEMOD_MESSAGE_COLUMNS; i++) { s.writeS32(100 + i, m_messageColumnIndexes[i]); @@ -134,28 +139,35 @@ bool PagerDemodSettings::deserialize(const QByteArray& data) d.readBool(7, &m_udpEnabled); d.readString(8, &m_udpAddress); d.readU32(9, &utmp); + if ((utmp > 1023) && (utmp < 65535)) { m_udpPort = utmp; } else { m_udpPort = 9999; } + d.readS32(10, &m_scopeCh1, 4); d.readS32(11, &m_scopeCh2, 9); d.readU32(12, &m_rgbColor, QColor(200, 191, 231).rgb()); d.readString(13, &m_title, "Pager Demodulator"); - d.readBlob(14, &bytetmp); - if (m_channelMarker) { + + if (m_channelMarker) + { + d.readBlob(14, &bytetmp); m_channelMarker->deserialize(bytetmp); } + d.readS32(15, &m_streamIndex, 0); d.readBool(16, &m_useReverseAPI, false); d.readString(17, &m_reverseAPIAddress, "127.0.0.1"); d.readU32(18, &utmp, 0); + if ((utmp > 1023) && (utmp < 65535)) { m_reverseAPIPort = utmp; } else { m_reverseAPIPort = 8888; } + d.readU32(19, &utmp, 0); m_reverseAPIDeviceIndex = utmp > 99 ? 99 : utmp; d.readU32(20, &utmp, 0); @@ -166,6 +178,7 @@ bool PagerDemodSettings::deserialize(const QByteArray& data) d.readBlob(21, &bytetmp); m_scopeGUI->deserialize(bytetmp); } + d.readBool(22, &m_reverse, false); d.readBlob(23, &blob); deserializeIntList(blob, m_sevenbit); @@ -174,11 +187,17 @@ bool PagerDemodSettings::deserialize(const QByteArray& data) d.readString(25, &m_logFilename, "pager_log.csv"); d.readBool(26, &m_logEnabled, false); - d.readBlob(27, &m_rollupState); + + if (m_rollupState) + { + d.readBlob(27, &bytetmp); + m_rollupState->deserialize(bytetmp); + } for (int i = 0; i < PAGERDEMOD_MESSAGE_COLUMNS; i++) { d.readS32(100 + i, &m_messageColumnIndexes[i], i); } + for (int i = 0; i < PAGERDEMOD_MESSAGE_COLUMNS; i++) { d.readS32(200 + i, &m_messageColumnSizes[i], -1); } diff --git a/plugins/channelrx/demodpager/pagerdemodsettings.h b/plugins/channelrx/demodpager/pagerdemodsettings.h index 8442cab25..819f0092f 100644 --- a/plugins/channelrx/demodpager/pagerdemodsettings.h +++ b/plugins/channelrx/demodpager/pagerdemodsettings.h @@ -66,7 +66,7 @@ struct PagerDemodSettings QString m_logFilename; bool m_logEnabled; - QByteArray m_rollupState; + Serializable *m_rollupState; int m_messageColumnIndexes[PAGERDEMOD_MESSAGE_COLUMNS];//!< How the columns are ordered in the table int m_messageColumnSizes[PAGERDEMOD_MESSAGE_COLUMNS]; //!< Size of the columns in the table @@ -76,6 +76,7 @@ struct PagerDemodSettings PagerDemodSettings(); void resetToDefaults(); void setChannelMarker(Serializable *channelMarker) { m_channelMarker = channelMarker; } + void setRollupState(Serializable *rollupState) { m_rollupState = rollupState; } void setScopeGUI(Serializable *scopeGUI) { m_scopeGUI = scopeGUI; } QByteArray serialize() const; bool deserialize(const QByteArray& data); diff --git a/plugins/channelrx/demodssb/ssbdemod.cpp b/plugins/channelrx/demodssb/ssbdemod.cpp index 76c879bef..0a5f52d51 100644 --- a/plugins/channelrx/demodssb/ssbdemod.cpp +++ b/plugins/channelrx/demodssb/ssbdemod.cpp @@ -436,6 +436,9 @@ void SSBDemod::webapiUpdateChannelSettings( if (settings.m_channelMarker && channelSettingsKeys.contains("channelMarker")) { settings.m_channelMarker->updateFrom(channelSettingsKeys, response.getSsbDemodSettings()->getChannelMarker()); } + if (settings.m_rollupState && channelSettingsKeys.contains("rollupState")) { + settings.m_rollupState->updateFrom(channelSettingsKeys, response.getSsbDemodSettings()->getRollupState()); + } } int SSBDemod::webapiReportGet( @@ -520,6 +523,20 @@ void SSBDemod::webapiFormatChannelSettings(SWGSDRangel::SWGChannelSettings& resp response.getSsbDemodSettings()->setChannelMarker(swgChannelMarker); } } + + if (settings.m_rollupState) + { + if (response.getSsbDemodSettings()->getRollupState()) + { + settings.m_rollupState->formatTo(response.getSsbDemodSettings()->getRollupState()); + } + else + { + SWGSDRangel::SWGRollupState *swgRollupState = new SWGSDRangel::SWGRollupState(); + settings.m_rollupState->formatTo(swgRollupState); + response.getSsbDemodSettings()->setRollupState(swgRollupState); + } + } } void SSBDemod::webapiFormatChannelReport(SWGSDRangel::SWGChannelReport& response) @@ -665,6 +682,13 @@ void SSBDemod::webapiFormatChannelSettings( settings.m_channelMarker->formatTo(swgChannelMarker); swgSSBDemodSettings->setChannelMarker(swgChannelMarker); } + + if (settings.m_rollupState && (channelSettingsKeys.contains("rollupState") || force)) + { + SWGSDRangel::SWGRollupState *swgRolllupState = new SWGSDRangel::SWGRollupState(); + settings.m_rollupState->formatTo(swgRolllupState); + swgSSBDemodSettings->setRollupState(swgRolllupState); + } } void SSBDemod::networkManagerFinished(QNetworkReply *reply) diff --git a/plugins/channelrx/demodssb/ssbdemodgui.cpp b/plugins/channelrx/demodssb/ssbdemodgui.cpp index 422c75ef8..177a3a6d8 100644 --- a/plugins/channelrx/demodssb/ssbdemodgui.cpp +++ b/plugins/channelrx/demodssb/ssbdemodgui.cpp @@ -276,7 +276,7 @@ void SSBDemodGUI::onWidgetRolled(QWidget* widget, bool rollDown) (void) widget; (void) rollDown; - m_settings.m_rollupState = saveState(); + saveState(m_rollupState); applySettings(); } @@ -333,6 +333,7 @@ SSBDemodGUI::SSBDemodGUI(PluginAPI* pluginAPI, DeviceUISet *deviceUISet, Baseban m_settings.setChannelMarker(&m_channelMarker); m_settings.setSpectrumGUI(ui->spectrumGUI); + m_settings.setRollupState(&m_rollupState); m_deviceUISet->addChannelMarker(&m_channelMarker); m_deviceUISet->addRollupWidget(this); @@ -574,7 +575,7 @@ void SSBDemodGUI::displaySettings() displayStreamIndex(); - restoreState(m_settings.m_rollupState); + restoreState(m_rollupState); blockApplySettings(false); } diff --git a/plugins/channelrx/demodssb/ssbdemodgui.h b/plugins/channelrx/demodssb/ssbdemodgui.h index 6ec6fa40a..2867f51c9 100644 --- a/plugins/channelrx/demodssb/ssbdemodgui.h +++ b/plugins/channelrx/demodssb/ssbdemodgui.h @@ -7,6 +7,7 @@ #include "dsp/channelmarker.h" #include "dsp/movingaverage.h" #include "util/messagequeue.h" +#include "settings/rollupstate.h" #include "ssbdemodsettings.h" class PluginAPI; @@ -42,6 +43,7 @@ private: PluginAPI* m_pluginAPI; DeviceUISet* m_deviceUISet; ChannelMarker m_channelMarker; + RollupState m_rollupState; SSBDemodSettings m_settings; bool m_doApplySettings; int m_spectrumRate; diff --git a/plugins/channelrx/demodssb/ssbdemodsettings.cpp b/plugins/channelrx/demodssb/ssbdemodsettings.cpp index cf7daf02c..e980a5df3 100644 --- a/plugins/channelrx/demodssb/ssbdemodsettings.cpp +++ b/plugins/channelrx/demodssb/ssbdemodsettings.cpp @@ -31,8 +31,9 @@ const float SSBDemodSettings::m_mminPowerThresholdDBf = 100.0f; #endif SSBDemodSettings::SSBDemodSettings() : - m_channelMarker(0), - m_spectrumGUI(0) + m_channelMarker(nullptr), + m_spectrumGUI(nullptr), + m_rollupState(nullptr) { resetToDefaults(); } @@ -94,7 +95,10 @@ QByteArray SSBDemodSettings::serialize() const s.writeU32(21, m_reverseAPIDeviceIndex); s.writeU32(22, m_reverseAPIChannelIndex); s.writeS32(23, m_streamIndex); - s.writeBlob(24, m_rollupState); + + if (m_rollupState) { + s.writeBlob(24, m_rollupState->serialize()); + } return s.final(); } @@ -122,7 +126,8 @@ bool SSBDemodSettings::deserialize(const QByteArray& data) d.readS32(3, &tmp, 30); m_volume = tmp / 10.0; - if (m_spectrumGUI) { + if (m_spectrumGUI) + { d.readBlob(4, &bytetmp); m_spectrumGUI->deserialize(bytetmp); } @@ -156,7 +161,12 @@ bool SSBDemodSettings::deserialize(const QByteArray& data) d.readU32(22, &utmp, 0); m_reverseAPIChannelIndex = utmp > 99 ? 99 : utmp; d.readS32(23, &m_streamIndex, 0); - d.readBlob(24, &m_rollupState); + + if (m_rollupState) + { + d.readBlob(24, &bytetmp); + m_rollupState->deserialize(bytetmp); + } return true; } diff --git a/plugins/channelrx/demodssb/ssbdemodsettings.h b/plugins/channelrx/demodssb/ssbdemodsettings.h index 7773bd452..9e9de931a 100644 --- a/plugins/channelrx/demodssb/ssbdemodsettings.h +++ b/plugins/channelrx/demodssb/ssbdemodsettings.h @@ -50,12 +50,13 @@ struct SSBDemodSettings Serializable *m_channelMarker; Serializable *m_spectrumGUI; - QByteArray m_rollupState; + Serializable *m_rollupState; SSBDemodSettings(); void resetToDefaults(); void setChannelMarker(Serializable *channelMarker) { m_channelMarker = channelMarker; } void setSpectrumGUI(Serializable *spectrumGUI) { m_spectrumGUI = spectrumGUI; } + void setRollupState(Serializable *rollupState) { m_rollupState = rollupState; } QByteArray serialize() const; bool deserialize(const QByteArray& data); diff --git a/plugins/channelrx/demodssb/ssbplugin.cpp b/plugins/channelrx/demodssb/ssbplugin.cpp index f8118bd33..062ab5829 100644 --- a/plugins/channelrx/demodssb/ssbplugin.cpp +++ b/plugins/channelrx/demodssb/ssbplugin.cpp @@ -12,7 +12,7 @@ const PluginDescriptor SSBPlugin::m_pluginDescriptor = { SSBDemod::m_channelId, QStringLiteral("SSB Demodulator"), - QStringLiteral("6.16.0"), + QStringLiteral("6.18.0"), QStringLiteral("(c) Edouard Griffiths, F4EXB"), QStringLiteral("https://github.com/f4exb/sdrangel"), true, diff --git a/plugins/channelrx/demodvor/vordemod.cpp b/plugins/channelrx/demodvor/vordemod.cpp index 48efc60e5..219e96974 100644 --- a/plugins/channelrx/demodvor/vordemod.cpp +++ b/plugins/channelrx/demodvor/vordemod.cpp @@ -37,6 +37,7 @@ #include "dsp/dspcommands.h" #include "device/deviceapi.h" #include "feature/feature.h" +#include "settings/serializable.h" #include "util/db.h" #include "maincore.h" @@ -328,6 +329,12 @@ void VORDemod::webapiUpdateChannelSettings( if (channelSettingsKeys.contains("magDecAdjust")) { settings.m_magDecAdjust = response.getVorDemodSettings()->getMagDecAdjust() != 0; } + if (settings.m_channelMarker && channelSettingsKeys.contains("channelMarker")) { + settings.m_channelMarker->updateFrom(channelSettingsKeys, response.getVorDemodSettings()->getChannelMarker()); + } + if (settings.m_rollupState && channelSettingsKeys.contains("rollupState")) { + settings.m_rollupState->updateFrom(channelSettingsKeys, response.getVorDemodSettings()->getRollupState()); + } } int VORDemod::webapiReportGet( @@ -375,6 +382,34 @@ void VORDemod::webapiFormatChannelSettings(SWGSDRangel::SWGChannelSettings& resp response.getVorDemodSettings()->setIdentThreshold(settings.m_identThreshold); response.getVorDemodSettings()->setMagDecAdjust(settings.m_magDecAdjust ? 1 : 0); + + if (settings.m_channelMarker) + { + if (response.getVorDemodSettings()->getChannelMarker()) + { + settings.m_channelMarker->formatTo(response.getVorDemodSettings()->getChannelMarker()); + } + else + { + SWGSDRangel::SWGChannelMarker *swgChannelMarker = new SWGSDRangel::SWGChannelMarker(); + settings.m_channelMarker->formatTo(swgChannelMarker); + response.getVorDemodSettings()->setChannelMarker(swgChannelMarker); + } + } + + if (settings.m_rollupState) + { + if (response.getVorDemodSettings()->getRollupState()) + { + settings.m_rollupState->formatTo(response.getVorDemodSettings()->getRollupState()); + } + else + { + SWGSDRangel::SWGRollupState *swgRollupState = new SWGSDRangel::SWGRollupState(); + settings.m_rollupState->formatTo(swgRollupState); + response.getVorDemodSettings()->setRollupState(swgRollupState); + } + } } void VORDemod::webapiFormatChannelReport(SWGSDRangel::SWGChannelReport& response) @@ -478,6 +513,20 @@ void VORDemod::webapiFormatChannelSettings( if (channelSettingsKeys.contains("magDecAdjust") || force) { swgVORDemodSettings->setMagDecAdjust(settings.m_magDecAdjust ? 1 : 0); } + + if (settings.m_channelMarker && (channelSettingsKeys.contains("channelMarker") || force)) + { + SWGSDRangel::SWGChannelMarker *swgChannelMarker = new SWGSDRangel::SWGChannelMarker(); + settings.m_channelMarker->formatTo(swgChannelMarker); + swgVORDemodSettings->setChannelMarker(swgChannelMarker); + } + + if (settings.m_rollupState && (channelSettingsKeys.contains("rollupState") || force)) + { + SWGSDRangel::SWGRollupState *swgRollupState = new SWGSDRangel::SWGRollupState(); + settings.m_rollupState->formatTo(swgRollupState); + swgVORDemodSettings->setRollupState(swgRollupState); + } } void VORDemod::networkManagerFinished(QNetworkReply *reply) diff --git a/plugins/channelrx/demodvor/vordemodgui.cpp b/plugins/channelrx/demodvor/vordemodgui.cpp index 021fef3a1..6cf3bec8a 100644 --- a/plugins/channelrx/demodvor/vordemodgui.cpp +++ b/plugins/channelrx/demodvor/vordemodgui.cpp @@ -1105,7 +1105,7 @@ void VORDemodGUI::onWidgetRolled(QWidget* widget, bool rollDown) (void) widget; (void) rollDown; - m_settings.m_rollupState = saveState(); + saveState(m_rollupState); applySettings(); } @@ -1200,6 +1200,7 @@ VORDemodGUI::VORDemodGUI(PluginAPI* pluginAPI, DeviceUISet *deviceUISet, Baseban setTitleColor(m_channelMarker.getColor()); m_settings.setChannelMarker(&m_channelMarker); + m_settings.setRollupState(&m_rollupState); m_deviceUISet->addChannelMarker(&m_channelMarker); m_deviceUISet->addRollupWidget(this); @@ -1332,7 +1333,7 @@ void VORDemodGUI::displaySettings() header->moveSection(header->visualIndex(i), m_settings.m_columnIndexes[i]); } - restoreState(m_settings.m_rollupState); + restoreState(m_rollupState); blockApplySettings(false); } diff --git a/plugins/channelrx/demodvor/vordemodgui.h b/plugins/channelrx/demodvor/vordemodgui.h index 268fc963a..4d3238204 100644 --- a/plugins/channelrx/demodvor/vordemodgui.h +++ b/plugins/channelrx/demodvor/vordemodgui.h @@ -37,6 +37,7 @@ #include "util/messagequeue.h" #include "util/httpdownloadmanager.h" #include "util/azel.h" +#include "settings/rollupstate.h" #include "vordemodsettings.h" #include "navaid.h" @@ -224,6 +225,7 @@ private: PluginAPI* m_pluginAPI; DeviceUISet* m_deviceUISet; ChannelMarker m_channelMarker; + RollupState m_rollupState; VORDemodSettings m_settings; bool m_doApplySettings; diff --git a/plugins/channelrx/demodvor/vordemodplugin.cpp b/plugins/channelrx/demodvor/vordemodplugin.cpp index 59a19dd42..9aa2d680a 100644 --- a/plugins/channelrx/demodvor/vordemodplugin.cpp +++ b/plugins/channelrx/demodvor/vordemodplugin.cpp @@ -29,7 +29,7 @@ const PluginDescriptor VORDemodPlugin::m_pluginDescriptor = { VORDemod::m_channelId, QStringLiteral("VOR Demodulator"), - QStringLiteral("6.17.5"), + QStringLiteral("6.18.0"), QStringLiteral("(c) Jon Beniston, M7RCE"), QStringLiteral("https://github.com/f4exb/sdrangel"), true, diff --git a/plugins/channelrx/demodvor/vordemodsettings.cpp b/plugins/channelrx/demodvor/vordemodsettings.cpp index 3c5ae77f9..0c181bdc5 100644 --- a/plugins/channelrx/demodvor/vordemodsettings.cpp +++ b/plugins/channelrx/demodvor/vordemodsettings.cpp @@ -24,7 +24,8 @@ #include "vordemodsettings.h" VORDemodSettings::VORDemodSettings() : - m_channelMarker(0) + m_channelMarker(nullptr), + m_rollupState(nullptr) { resetToDefaults(); } @@ -75,17 +76,22 @@ QByteArray VORDemodSettings::serialize() const s.writeU32(16, m_reverseAPIPort); s.writeU32(17, m_reverseAPIDeviceIndex); s.writeU32(18, m_reverseAPIChannelIndex); - s.writeReal(20, m_identThreshold); s.writeReal(21, m_refThresholdDB); s.writeReal(22, m_varThresholdDB); s.writeBool(23, m_magDecAdjust); - s.writeBlob(24, m_rollupState); - for (int i = 0; i < VORDEMOD_COLUMNS; i++) + if (m_rollupState) { + s.writeBlob(24, m_rollupState->serialize()); + } + + for (int i = 0; i < VORDEMOD_COLUMNS; i++) { s.writeS32(100 + i, m_columnIndexes[i]); - for (int i = 0; i < VORDEMOD_COLUMNS; i++) + } + + for (int i = 0; i < VORDEMOD_COLUMNS; i++) { s.writeS32(200 + i, m_columnSizes[i]); + } return s.final(); } @@ -112,9 +118,10 @@ bool VORDemodSettings::deserialize(const QByteArray& data) m_volume = tmp * 0.1; d.readS32(5, &tmp, -40); m_squelch = tmp; - d.readBlob(6, &bytetmp); - if (m_channelMarker) { + if (m_channelMarker) + { + d.readBlob(6, &bytetmp); m_channelMarker->deserialize(bytetmp); } @@ -135,17 +142,24 @@ bool VORDemodSettings::deserialize(const QByteArray& data) m_reverseAPIDeviceIndex = utmp > 99 ? 99 : utmp; d.readU32(18, &utmp, 0); m_reverseAPIChannelIndex = utmp > 99 ? 99 : utmp; - d.readReal(20, &m_identThreshold, 2.0); d.readReal(21, &m_refThresholdDB, -45.0); d.readReal(22, &m_varThresholdDB, -90.0); d.readBool(23, &m_magDecAdjust, true); - d.readBlob(24, &m_rollupState); - for (int i = 0; i < VORDEMOD_COLUMNS; i++) + if (m_rollupState) + { + d.readBlob(24, &bytetmp); + m_rollupState->deserialize(bytetmp); + } + + for (int i = 0; i < VORDEMOD_COLUMNS; i++) { d.readS32(100 + i, &m_columnIndexes[i], i); - for (int i = 0; i < VORDEMOD_COLUMNS; i++) + } + + for (int i = 0; i < VORDEMOD_COLUMNS; i++) { d.readS32(200 + i, &m_columnSizes[i], -1); + } return true; } diff --git a/plugins/channelrx/demodvor/vordemodsettings.h b/plugins/channelrx/demodvor/vordemodsettings.h index b01e24181..0855dde72 100644 --- a/plugins/channelrx/demodvor/vordemodsettings.h +++ b/plugins/channelrx/demodvor/vordemodsettings.h @@ -53,7 +53,7 @@ struct VORDemodSettings Real m_refThresholdDB; //!< Threshold in dB for valid VOR reference signal Real m_varThresholdDB; //!< Threshold in dB for valid VOR variable signal bool m_magDecAdjust; //!< Adjust for magnetic declination when drawing radials on the map - QByteArray m_rollupState; + Serializable *m_rollupState; int m_columnIndexes[VORDEMOD_COLUMNS];//!< How the columns are ordered in the table int m_columnSizes[VORDEMOD_COLUMNS]; //!< Size of the coumns in the table @@ -63,6 +63,7 @@ struct VORDemodSettings VORDemodSettings(); void resetToDefaults(); void setChannelMarker(Serializable *channelMarker) { m_channelMarker = channelMarker; } + void setRollupState(Serializable *rollupState) { m_rollupState = rollupState; } QByteArray serialize() const; bool deserialize(const QByteArray& data); }; diff --git a/plugins/channelrx/demodvorsc/vordemodsc.cpp b/plugins/channelrx/demodvorsc/vordemodsc.cpp index c34add462..514dec2dc 100644 --- a/plugins/channelrx/demodvorsc/vordemodsc.cpp +++ b/plugins/channelrx/demodvorsc/vordemodsc.cpp @@ -35,6 +35,7 @@ #include "dsp/dspcommands.h" #include "device/deviceapi.h" #include "feature/feature.h" +#include "settings/serializable.h" #include "util/db.h" #include "maincore.h" @@ -370,7 +371,6 @@ void VORDemodSC::webapiUpdateChannelSettings( if (channelSettingsKeys.contains("audioDeviceName")) { settings.m_audioDeviceName = *response.getVorDemodScSettings()->getAudioDeviceName(); } - if (channelSettingsKeys.contains("streamIndex")) { settings.m_streamIndex = response.getVorDemodScSettings()->getStreamIndex(); } @@ -392,6 +392,12 @@ void VORDemodSC::webapiUpdateChannelSettings( if (channelSettingsKeys.contains("identThreshold")) { settings.m_identThreshold = response.getVorDemodScSettings()->getIdentThreshold(); } + if (settings.m_channelMarker && channelSettingsKeys.contains("channelMarker")) { + settings.m_channelMarker->updateFrom(channelSettingsKeys, response.getVorDemodScSettings()->getChannelMarker()); + } + if (settings.m_rollupState && channelSettingsKeys.contains("rollupState")) { + settings.m_rollupState->updateFrom(channelSettingsKeys, response.getVorDemodScSettings()->getRollupState()); + } } int VORDemodSC::webapiReportGet( @@ -438,8 +444,35 @@ void VORDemodSC::webapiFormatChannelSettings(SWGSDRangel::SWGChannelSettings& re response.getVorDemodScSettings()->setReverseApiPort(settings.m_reverseAPIPort); response.getVorDemodScSettings()->setReverseApiDeviceIndex(settings.m_reverseAPIDeviceIndex); response.getVorDemodScSettings()->setReverseApiChannelIndex(settings.m_reverseAPIChannelIndex); - response.getVorDemodScSettings()->setIdentThreshold(settings.m_identThreshold); + + if (settings.m_channelMarker) + { + if (response.getVorDemodScSettings()->getChannelMarker()) + { + settings.m_channelMarker->formatTo(response.getVorDemodScSettings()->getChannelMarker()); + } + else + { + SWGSDRangel::SWGChannelMarker *swgChannelMarker = new SWGSDRangel::SWGChannelMarker(); + settings.m_channelMarker->formatTo(swgChannelMarker); + response.getVorDemodScSettings()->setChannelMarker(swgChannelMarker); + } + } + + if (settings.m_rollupState) + { + if (response.getVorDemodScSettings()->getRollupState()) + { + settings.m_rollupState->formatTo(response.getVorDemodScSettings()->getRollupState()); + } + else + { + SWGSDRangel::SWGRollupState *swgRollupState = new SWGSDRangel::SWGRollupState(); + settings.m_rollupState->formatTo(swgRollupState); + response.getVorDemodScSettings()->setRollupState(swgRollupState); + } + } } void VORDemodSC::webapiFormatChannelReport(SWGSDRangel::SWGChannelReport& response) @@ -579,6 +612,20 @@ void VORDemodSC::webapiFormatChannelSettings( if (channelSettingsKeys.contains("identThreshold") || force) { swgVORDemodSCSettings->setAudioMute(settings.m_identThreshold); } + + if (settings.m_channelMarker && (channelSettingsKeys.contains("channelMarker") || force)) + { + SWGSDRangel::SWGChannelMarker *swgChannelMarker = new SWGSDRangel::SWGChannelMarker(); + settings.m_channelMarker->formatTo(swgChannelMarker); + swgVORDemodSCSettings->setChannelMarker(swgChannelMarker); + } + + if (settings.m_rollupState && (channelSettingsKeys.contains("rollupState") || force)) + { + SWGSDRangel::SWGRollupState *swgRollupState = new SWGSDRangel::SWGRollupState(); + settings.m_rollupState->formatTo(swgRollupState); + swgVORDemodSCSettings->setRollupState(swgRollupState); + } } void VORDemodSC::networkManagerFinished(QNetworkReply *reply) diff --git a/plugins/channelrx/demodvorsc/vordemodscgui.cpp b/plugins/channelrx/demodvorsc/vordemodscgui.cpp index 44e810e83..ffaf706a4 100644 --- a/plugins/channelrx/demodvorsc/vordemodscgui.cpp +++ b/plugins/channelrx/demodvorsc/vordemodscgui.cpp @@ -223,7 +223,7 @@ void VORDemodSCGUI::onWidgetRolled(QWidget* widget, bool rollDown) (void) widget; (void) rollDown; - m_settings.m_rollupState = saveState(); + saveState(m_rollupState); applySettings(); } @@ -311,6 +311,7 @@ VORDemodSCGUI::VORDemodSCGUI(PluginAPI* pluginAPI, DeviceUISet *deviceUISet, Bas setTitleColor(m_channelMarker.getColor()); m_settings.setChannelMarker(&m_channelMarker); + m_settings.setRollupState(&m_rollupState); m_deviceUISet->addChannelMarker(&m_channelMarker); m_deviceUISet->addRollupWidget(this); @@ -371,7 +372,7 @@ void VORDemodSCGUI::displaySettings() displayStreamIndex(); - restoreState(m_settings.m_rollupState); + restoreState(m_rollupState); blockApplySettings(false); } diff --git a/plugins/channelrx/demodvorsc/vordemodscgui.h b/plugins/channelrx/demodvorsc/vordemodscgui.h index b72010a52..97ac65a13 100644 --- a/plugins/channelrx/demodvorsc/vordemodscgui.h +++ b/plugins/channelrx/demodvorsc/vordemodscgui.h @@ -23,6 +23,7 @@ #include "dsp/channelmarker.h" #include "dsp/movingaverage.h" #include "util/messagequeue.h" +#include "settings/rollupstate.h" #include "vordemodscsettings.h" class PluginAPI; @@ -57,6 +58,7 @@ private: PluginAPI* m_pluginAPI; DeviceUISet* m_deviceUISet; ChannelMarker m_channelMarker; + RollupState m_rollupState; VORDemodSCSettings m_settings; bool m_doApplySettings; diff --git a/plugins/channelrx/demodvorsc/vordemodscplugin.cpp b/plugins/channelrx/demodvorsc/vordemodscplugin.cpp index fefb3f79f..1b3831194 100644 --- a/plugins/channelrx/demodvorsc/vordemodscplugin.cpp +++ b/plugins/channelrx/demodvorsc/vordemodscplugin.cpp @@ -29,7 +29,7 @@ const PluginDescriptor VORDemodSCPlugin::m_pluginDescriptor = { VORDemodSC::m_channelId, QStringLiteral("VOR Single Channel Demodulator"), - QStringLiteral("6.6.1"), + QStringLiteral("6.18.0"), QStringLiteral("(c) Jon Beniston, M7RCE"), QStringLiteral("https://github.com/f4exb/sdrangel"), true, diff --git a/plugins/channelrx/demodvorsc/vordemodscsettings.cpp b/plugins/channelrx/demodvorsc/vordemodscsettings.cpp index 0c2a4d0c4..3d4dab2b6 100644 --- a/plugins/channelrx/demodvorsc/vordemodscsettings.cpp +++ b/plugins/channelrx/demodvorsc/vordemodscsettings.cpp @@ -24,7 +24,8 @@ #include "vordemodscsettings.h" VORDemodSCSettings::VORDemodSCSettings() : - m_channelMarker(0) + m_channelMarker(nullptr), + m_rollupState(nullptr) { resetToDefaults(); } @@ -71,11 +72,13 @@ QByteArray VORDemodSCSettings::serialize() const s.writeU32(16, m_reverseAPIPort); s.writeU32(17, m_reverseAPIDeviceIndex); s.writeU32(18, m_reverseAPIChannelIndex); - s.writeReal(20, m_identThreshold); s.writeReal(21, m_refThresholdDB); s.writeReal(22, m_varThresholdDB); - s.writeBlob(23, m_rollupState); + + if (m_rollupState) { + s.writeBlob(23, m_rollupState->serialize()); + } return s.final(); } @@ -103,9 +106,10 @@ bool VORDemodSCSettings::deserialize(const QByteArray& data) m_volume = tmp * 0.1; d.readS32(5, &tmp, -40); m_squelch = tmp; - d.readBlob(6, &bytetmp); - if (m_channelMarker) { + if (m_channelMarker) + { + d.readBlob(6, &bytetmp); m_channelMarker->deserialize(bytetmp); } @@ -126,11 +130,15 @@ bool VORDemodSCSettings::deserialize(const QByteArray& data) m_reverseAPIDeviceIndex = utmp > 99 ? 99 : utmp; d.readU32(18, &utmp, 0); m_reverseAPIChannelIndex = utmp > 99 ? 99 : utmp; - d.readReal(20, &m_identThreshold, 2.0); d.readReal(21, &m_refThresholdDB, -45.0); d.readReal(22, &m_varThresholdDB, -90.0); - d.readBlob(23, &m_rollupState); + + if (m_rollupState) + { + d.readBlob(23, &bytetmp); + m_rollupState->deserialize(bytetmp); + } return true; } diff --git a/plugins/channelrx/demodvorsc/vordemodscsettings.h b/plugins/channelrx/demodvorsc/vordemodscsettings.h index 19a3d0833..5a9a6f898 100644 --- a/plugins/channelrx/demodvorsc/vordemodscsettings.h +++ b/plugins/channelrx/demodvorsc/vordemodscsettings.h @@ -45,7 +45,7 @@ struct VORDemodSCSettings Real m_identThreshold; //!< Linear SNR threshold for Morse demodulator Real m_refThresholdDB; //!< Threshold in dB for valid VOR reference signal Real m_varThresholdDB; //!< Threshold in dB for valid VOR variable signal - QByteArray m_rollupState; + Serializable *m_rollupState; // Highest frequency is the FM subcarrier at up to ~11kHz // However, old VORs can have 0.005% frequency offset, which is 6kHz @@ -58,6 +58,7 @@ struct VORDemodSCSettings VORDemodSCSettings(); void resetToDefaults(); void setChannelMarker(Serializable *channelMarker) { m_channelMarker = channelMarker; } + void setRollupState(Serializable *rollupState) { m_rollupState = rollupState; } QByteArray serialize() const; bool deserialize(const QByteArray& data); }; diff --git a/plugins/channelrx/demodwfm/wfmdemod.cpp b/plugins/channelrx/demodwfm/wfmdemod.cpp index 0e8d1734a..6814e6f42 100644 --- a/plugins/channelrx/demodwfm/wfmdemod.cpp +++ b/plugins/channelrx/demodwfm/wfmdemod.cpp @@ -39,6 +39,7 @@ #include "dsp/devicesamplemimo.h" #include "device/deviceapi.h" #include "feature/feature.h" +#include "settings/serializable.h" #include "util/db.h" #include "maincore.h" @@ -371,6 +372,12 @@ void WFMDemod::webapiUpdateChannelSettings( if (channelSettingsKeys.contains("reverseAPIChannelIndex")) { settings.m_reverseAPIChannelIndex = response.getWfmDemodSettings()->getReverseApiChannelIndex(); } + if (settings.m_channelMarker && channelSettingsKeys.contains("channelMarker")) { + settings.m_channelMarker->updateFrom(channelSettingsKeys, response.getWfmDemodSettings()->getChannelMarker()); + } + if (settings.m_rollupState && channelSettingsKeys.contains("rollupState")) { + settings.m_rollupState->updateFrom(channelSettingsKeys, response.getWfmDemodSettings()->getRollupState()); + } } int WFMDemod::webapiReportGet( @@ -418,6 +425,34 @@ void WFMDemod::webapiFormatChannelSettings(SWGSDRangel::SWGChannelSettings& resp response.getWfmDemodSettings()->setReverseApiPort(settings.m_reverseAPIPort); response.getWfmDemodSettings()->setReverseApiDeviceIndex(settings.m_reverseAPIDeviceIndex); response.getWfmDemodSettings()->setReverseApiChannelIndex(settings.m_reverseAPIChannelIndex); + + if (settings.m_channelMarker) + { + if (response.getWfmDemodSettings()->getChannelMarker()) + { + settings.m_channelMarker->formatTo(response.getWfmDemodSettings()->getChannelMarker()); + } + else + { + SWGSDRangel::SWGChannelMarker *swgChannelMarker = new SWGSDRangel::SWGChannelMarker(); + settings.m_channelMarker->formatTo(swgChannelMarker); + response.getWfmDemodSettings()->setChannelMarker(swgChannelMarker); + } + } + + if (settings.m_rollupState) + { + if (response.getWfmDemodSettings()->getRollupState()) + { + settings.m_rollupState->formatTo(response.getWfmDemodSettings()->getRollupState()); + } + else + { + SWGSDRangel::SWGRollupState *swgRollupState = new SWGSDRangel::SWGRollupState(); + settings.m_rollupState->formatTo(swgRollupState); + response.getWfmDemodSettings()->setRollupState(swgRollupState); + } + } } void WFMDemod::webapiFormatChannelReport(SWGSDRangel::SWGChannelReport& response) @@ -525,6 +560,20 @@ void WFMDemod::webapiFormatChannelSettings( if (channelSettingsKeys.contains("streamIndex") || force) { swgWFMDemodSettings->setStreamIndex(settings.m_streamIndex); } + + if (settings.m_channelMarker && (channelSettingsKeys.contains("channelMarker") || force)) + { + SWGSDRangel::SWGChannelMarker *swgChannelMarker = new SWGSDRangel::SWGChannelMarker(); + settings.m_channelMarker->formatTo(swgChannelMarker); + swgWFMDemodSettings->setChannelMarker(swgChannelMarker); + } + + if (settings.m_rollupState && (channelSettingsKeys.contains("rollupState") || force)) + { + SWGSDRangel::SWGRollupState *swgRollupState = new SWGSDRangel::SWGRollupState(); + settings.m_rollupState->formatTo(swgRollupState); + swgWFMDemodSettings->setRollupState(swgRollupState); + } } void WFMDemod::networkManagerFinished(QNetworkReply *reply) diff --git a/plugins/channelrx/demodwfm/wfmdemodgui.cpp b/plugins/channelrx/demodwfm/wfmdemodgui.cpp index 6be0b4c68..0781bbbd0 100644 --- a/plugins/channelrx/demodwfm/wfmdemodgui.cpp +++ b/plugins/channelrx/demodwfm/wfmdemodgui.cpp @@ -144,7 +144,7 @@ void WFMDemodGUI::onWidgetRolled(QWidget* widget, bool rollDown) (void) widget; (void) rollDown; - m_settings.m_rollupState = saveState(); + saveState(m_rollupState); applySettings(); } @@ -237,6 +237,7 @@ WFMDemodGUI::WFMDemodGUI(PluginAPI* pluginAPI, DeviceUISet *deviceUISet, Baseban setTitleColor(m_channelMarker.getColor()); m_settings.setChannelMarker(&m_channelMarker); + m_settings.setRollupState(&m_rollupState); m_deviceUISet->addChannelMarker(&m_channelMarker); m_deviceUISet->addRollupWidget(this); @@ -293,7 +294,7 @@ void WFMDemodGUI::displaySettings() displayStreamIndex(); - restoreState(m_settings.m_rollupState); + restoreState(m_rollupState); blockApplySettings(false); } diff --git a/plugins/channelrx/demodwfm/wfmdemodgui.h b/plugins/channelrx/demodwfm/wfmdemodgui.h index 4a4b044f1..e8205df57 100644 --- a/plugins/channelrx/demodwfm/wfmdemodgui.h +++ b/plugins/channelrx/demodwfm/wfmdemodgui.h @@ -4,6 +4,7 @@ #include "channel/channelgui.h" #include "dsp/channelmarker.h" #include "util/messagequeue.h" +#include "settings/rollupstate.h" #include "wfmdemodsettings.h" @@ -37,6 +38,7 @@ private: PluginAPI* m_pluginAPI; DeviceUISet* m_deviceUISet; ChannelMarker m_channelMarker; + RollupState m_rollupState; WFMDemodSettings m_settings; bool m_basicSettingsShown; bool m_doApplySettings; diff --git a/plugins/channelrx/demodwfm/wfmdemodsettings.cpp b/plugins/channelrx/demodwfm/wfmdemodsettings.cpp index d1a48c8a8..077f4fe5a 100644 --- a/plugins/channelrx/demodwfm/wfmdemodsettings.cpp +++ b/plugins/channelrx/demodwfm/wfmdemodsettings.cpp @@ -29,7 +29,8 @@ const int WFMDemodSettings::m_rfBWMax = 300000; const int WFMDemodSettings::m_rfBWDigits = 6; WFMDemodSettings::WFMDemodSettings() : - m_channelMarker(0) + m_channelMarker(nullptr), + m_rollupState(nullptr) { resetToDefaults(); } @@ -75,7 +76,10 @@ QByteArray WFMDemodSettings::serialize() const s.writeU32(15, m_reverseAPIDeviceIndex); s.writeU32(16, m_reverseAPIChannelIndex); s.writeS32(17, m_streamIndex); - s.writeBlob(18, m_rollupState); + + if (m_rollupState) { + s.writeBlob(18, m_rollupState->serialize()); + } return s.final(); } @@ -111,9 +115,9 @@ bool WFMDemodSettings::deserialize(const QByteArray& data) d.readString(8, &m_title, "WFM Demodulator"); d.readString(9, &m_audioDeviceName, AudioDeviceManager::m_defaultDeviceName); - d.readBlob(11, &bytetmp); - - if (m_channelMarker) { + if (m_channelMarker) + { + d.readBlob(11, &bytetmp); m_channelMarker->deserialize(bytetmp); } @@ -132,7 +136,12 @@ bool WFMDemodSettings::deserialize(const QByteArray& data) d.readU32(16, &utmp, 0); m_reverseAPIChannelIndex = utmp > 99 ? 99 : utmp; d.readS32(17, &m_streamIndex, 0); - d.readBlob(18, &m_rollupState); + + if (m_rollupState) + { + d.readBlob(18, &bytetmp); + m_rollupState->deserialize(bytetmp); + } return true; } diff --git a/plugins/channelrx/demodwfm/wfmdemodsettings.h b/plugins/channelrx/demodwfm/wfmdemodsettings.h index 9c05189a3..3c7651f66 100644 --- a/plugins/channelrx/demodwfm/wfmdemodsettings.h +++ b/plugins/channelrx/demodwfm/wfmdemodsettings.h @@ -40,9 +40,9 @@ struct WFMDemodSettings uint16_t m_reverseAPIPort; uint16_t m_reverseAPIDeviceIndex; uint16_t m_reverseAPIChannelIndex; - QByteArray m_rollupState; Serializable *m_channelMarker; + Serializable *m_rollupState; static const int m_rfBWMin; static const int m_rfBWMax; @@ -51,6 +51,7 @@ struct WFMDemodSettings WFMDemodSettings(); void resetToDefaults(); void setChannelMarker(Serializable *channelMarker) { m_channelMarker = channelMarker; } + void setRollupState(Serializable *rollupState) { m_rollupState = rollupState; } QByteArray serialize() const; bool deserialize(const QByteArray& data); diff --git a/plugins/channelrx/demodwfm/wfmplugin.cpp b/plugins/channelrx/demodwfm/wfmplugin.cpp index 0dc51dc62..e9f2036d9 100644 --- a/plugins/channelrx/demodwfm/wfmplugin.cpp +++ b/plugins/channelrx/demodwfm/wfmplugin.cpp @@ -13,7 +13,7 @@ const PluginDescriptor WFMPlugin::m_pluginDescriptor = { WFMDemod::m_channelId, QStringLiteral("WFM Demodulator"), - QStringLiteral("6.6.1"), + QStringLiteral("6.18.0"), QStringLiteral("(c) Edouard Griffiths, F4EXB"), QStringLiteral("https://github.com/f4exb/sdrangel"), true, diff --git a/plugins/channelrx/filesink/filesink.cpp b/plugins/channelrx/filesink/filesink.cpp index 3017bc05e..331afed7f 100644 --- a/plugins/channelrx/filesink/filesink.cpp +++ b/plugins/channelrx/filesink/filesink.cpp @@ -500,6 +500,9 @@ void FileSink::webapiUpdateChannelSettings( if (settings.m_channelMarker && channelSettingsKeys.contains("channelMarker")) { settings.m_channelMarker->updateFrom(channelSettingsKeys, response.getFileSinkSettings()->getChannelMarker()); } + if (settings.m_rollupState && channelSettingsKeys.contains("rollupState")) { + settings.m_rollupState->updateFrom(channelSettingsKeys, response.getFileSinkSettings()->getRollupState()); + } } void FileSink::webapiFormatChannelSettings(SWGSDRangel::SWGChannelSettings& response, const FileSinkSettings& settings) @@ -566,6 +569,20 @@ void FileSink::webapiFormatChannelSettings(SWGSDRangel::SWGChannelSettings& resp response.getFileSinkSettings()->setChannelMarker(swgChannelMarker); } } + + if (settings.m_rollupState) + { + if (response.getFileSinkSettings()->getRollupState()) + { + settings.m_rollupState->formatTo(response.getFileSinkSettings()->getRollupState()); + } + else + { + SWGSDRangel::SWGRollupState *swgRollupState = new SWGSDRangel::SWGRollupState(); + settings.m_rollupState->formatTo(swgRollupState); + response.getFileSinkSettings()->setRollupState(swgRollupState); + } + } } void FileSink::webapiFormatChannelReport(SWGSDRangel::SWGChannelReport& response) @@ -690,6 +707,13 @@ void FileSink::webapiFormatChannelSettings( settings.m_channelMarker->formatTo(swgChannelMarker); swgFileSinkSettings->setChannelMarker(swgChannelMarker); } + + if (settings.m_rollupState && (channelSettingsKeys.contains("rollupState") || force)) + { + SWGSDRangel::SWGRollupState *swgRollupState = new SWGSDRangel::SWGRollupState(); + settings.m_rollupState->formatTo(swgRollupState); + swgFileSinkSettings->setRollupState(swgRollupState); + } } void FileSink::networkManagerFinished(QNetworkReply *reply) diff --git a/plugins/channelrx/filesink/filesinkgui.cpp b/plugins/channelrx/filesink/filesinkgui.cpp index d7319a40c..ab6122984 100644 --- a/plugins/channelrx/filesink/filesinkgui.cpp +++ b/plugins/channelrx/filesink/filesinkgui.cpp @@ -211,6 +211,7 @@ FileSinkGUI::FileSinkGUI(PluginAPI* pluginAPI, DeviceUISet *deviceUISet, Baseban m_settings.setChannelMarker(&m_channelMarker); m_settings.setSpectrumGUI(ui->glSpectrumGUI); + m_settings.setRollupState(&m_rollupState); m_deviceUISet->addChannelMarker(&m_channelMarker); m_deviceUISet->addRollupWidget(this); @@ -279,7 +280,7 @@ void FileSinkGUI::displaySettings() displayStreamIndex(); setPosFromFrequency(); - restoreState(m_settings.m_rollupState); + restoreState(m_rollupState); blockApplySettings(false); } @@ -350,7 +351,7 @@ void FileSinkGUI::onWidgetRolled(QWidget* widget, bool rollDown) (void) widget; (void) rollDown; - m_settings.m_rollupState = saveState(); + saveState(m_rollupState); applySettings(); } diff --git a/plugins/channelrx/filesink/filesinkgui.h b/plugins/channelrx/filesink/filesinkgui.h index dad76fc6e..2c86a0c50 100644 --- a/plugins/channelrx/filesink/filesinkgui.h +++ b/plugins/channelrx/filesink/filesinkgui.h @@ -25,6 +25,7 @@ #include "dsp/channelmarker.h" #include "channel/channelgui.h" #include "util/messagequeue.h" +#include "settings/rollupstate.h" #include "filesinksettings.h" @@ -58,6 +59,7 @@ private: PluginAPI* m_pluginAPI; DeviceUISet* m_deviceUISet; ChannelMarker m_channelMarker; + RollupState m_rollupState; FileSinkSettings m_settings; bool m_running; int m_fixedShiftIndex; diff --git a/plugins/channelrx/filesink/filesinkplugin.cpp b/plugins/channelrx/filesink/filesinkplugin.cpp index 8e80c7161..2eb55a859 100644 --- a/plugins/channelrx/filesink/filesinkplugin.cpp +++ b/plugins/channelrx/filesink/filesinkplugin.cpp @@ -29,7 +29,7 @@ const PluginDescriptor FileSinkPlugin::m_pluginDescriptor = { FileSink::m_channelId, QStringLiteral("File Sink"), - QStringLiteral("6.17.0"), + QStringLiteral("6.18.0"), QStringLiteral("(c) Edouard Griffiths, F4EXB"), QStringLiteral("https://github.com/f4exb/sdrangel"), true, diff --git a/plugins/channelrx/filesink/filesinksettings.cpp b/plugins/channelrx/filesink/filesinksettings.cpp index 210d8a213..74eb15bdf 100644 --- a/plugins/channelrx/filesink/filesinksettings.cpp +++ b/plugins/channelrx/filesink/filesinksettings.cpp @@ -22,7 +22,10 @@ #include "filesinksettings.h" -FileSinkSettings::FileSinkSettings() +FileSinkSettings::FileSinkSettings() : + m_spectrumGUI(nullptr), + m_channelMarker(nullptr), + m_rollupState(nullptr) { resetToDefaults(); } @@ -52,6 +55,11 @@ QByteArray FileSinkSettings::serialize() const { SimpleSerializer s(1); s.writeS32(1, m_inputFrequencyOffset); + + if (m_channelMarker) { + s.writeBlob(2, m_channelMarker->serialize()); + } + s.writeString(3, m_fileRecordName); s.writeS32(4, m_streamIndex); s.writeU32(5, m_rgbColor); @@ -72,7 +80,10 @@ QByteArray FileSinkSettings::serialize() const s.writeS32(16, m_preRecordTime); s.writeS32(17, m_squelchPostRecordTime); s.writeBool(18, m_squelchRecordingEnable); - s.writeBlob(19, m_rollupState); + + if (m_rollupState) { + s.writeBlob(19, m_rollupState->serialize()); + } return s.final(); } @@ -95,6 +106,13 @@ bool FileSinkSettings::deserialize(const QByteArray& data) QByteArray bytetmp; d.readS32(1, &m_inputFrequencyOffset, 0); + + if (m_channelMarker) + { + d.readBlob(2, &bytetmp); + m_channelMarker->deserialize(bytetmp); + } + d.readString(3, &m_fileRecordName, ""); d.readS32(4, &m_streamIndex, 0); d.readU32(5, &m_rgbColor, QColor(0, 255, 255).rgb()); @@ -128,7 +146,12 @@ bool FileSinkSettings::deserialize(const QByteArray& data) d.readS32(16, &m_preRecordTime, 0); d.readS32(17, &m_squelchPostRecordTime, 0); d.readBool(18, &m_squelchRecordingEnable, false); - d.readBlob(19, &m_rollupState); + + if (m_rollupState) + { + d.readBlob(19, &bytetmp); + m_rollupState->deserialize(bytetmp); + } return true; } diff --git a/plugins/channelrx/filesink/filesinksettings.h b/plugins/channelrx/filesink/filesinksettings.h index 2e3c33647..aa76798f2 100644 --- a/plugins/channelrx/filesink/filesinksettings.h +++ b/plugins/channelrx/filesink/filesinksettings.h @@ -44,12 +44,13 @@ struct FileSinkSettings Serializable *m_spectrumGUI; Serializable *m_channelMarker; - QByteArray m_rollupState; + Serializable *m_rollupState; FileSinkSettings(); void resetToDefaults(); void setSpectrumGUI(Serializable *spectrumGUI) { m_spectrumGUI = spectrumGUI; } void setChannelMarker(Serializable *channelMarker) { m_channelMarker = channelMarker; } + void setRollupState(Serializable *rollupState) { m_rollupState = rollupState; } QByteArray serialize() const; bool deserialize(const QByteArray& data); diff --git a/plugins/channelrx/freqtracker/freqtracker.cpp b/plugins/channelrx/freqtracker/freqtracker.cpp index c9a2bbcaf..8a9fe12f6 100644 --- a/plugins/channelrx/freqtracker/freqtracker.cpp +++ b/plugins/channelrx/freqtracker/freqtracker.cpp @@ -418,6 +418,9 @@ void FreqTracker::webapiUpdateChannelSettings( if (settings.m_channelMarker && channelSettingsKeys.contains("channelMarker")) { settings.m_channelMarker->updateFrom(channelSettingsKeys, response.getFreqTrackerSettings()->getChannelMarker()); } + if (settings.m_rollupState && channelSettingsKeys.contains("rollupState")) { + settings.m_rollupState->updateFrom(channelSettingsKeys, response.getFreqTrackerSettings()->getRollupState()); + } } int FreqTracker::webapiReportGet( @@ -493,6 +496,20 @@ void FreqTracker::webapiFormatChannelSettings(SWGSDRangel::SWGChannelSettings& r response.getFreqTrackerSettings()->setChannelMarker(swgChannelMarker); } } + + if (settings.m_rollupState) + { + if (response.getFreqTrackerSettings()->getRollupState()) + { + settings.m_rollupState->formatTo(response.getFreqTrackerSettings()->getRollupState()); + } + else + { + SWGSDRangel::SWGRollupState *swgRollupState = new SWGSDRangel::SWGRollupState(); + settings.m_rollupState->formatTo(swgRollupState); + response.getFreqTrackerSettings()->setRollupState(swgRollupState); + } + } } void FreqTracker::webapiFormatChannelReport(SWGSDRangel::SWGChannelReport& response) @@ -629,6 +646,13 @@ void FreqTracker::webapiFormatChannelSettings( settings.m_channelMarker->formatTo(swgChannelMarker); swgFreqTrackerSettings->setChannelMarker(swgChannelMarker); } + + if (settings.m_rollupState && (channelSettingsKeys.contains("rollupState") || force)) + { + SWGSDRangel::SWGRollupState *swgRollupState = new SWGSDRangel::SWGRollupState(); + settings.m_rollupState->formatTo(swgRollupState); + swgFreqTrackerSettings->setRollupState(swgRollupState); + } } void FreqTracker::networkManagerFinished(QNetworkReply *reply) diff --git a/plugins/channelrx/freqtracker/freqtrackergui.cpp b/plugins/channelrx/freqtracker/freqtrackergui.cpp index b65904173..8afe85d48 100644 --- a/plugins/channelrx/freqtracker/freqtrackergui.cpp +++ b/plugins/channelrx/freqtracker/freqtrackergui.cpp @@ -251,7 +251,7 @@ void FreqTrackerGUI::onWidgetRolled(QWidget* widget, bool rollDown) (void) widget; (void) rollDown; - m_settings.m_rollupState = saveState(); + saveState(m_rollupState); applySettings(); } @@ -341,6 +341,7 @@ FreqTrackerGUI::FreqTrackerGUI(PluginAPI* pluginAPI, DeviceUISet *deviceUISet, B setTitleColor(m_channelMarker.getColor()); m_settings.setChannelMarker(&m_channelMarker); m_settings.setSpectrumGUI(ui->spectrumGUI); + m_settings.setRollupState(&m_rollupState); m_deviceUISet->addChannelMarker(&m_channelMarker); m_deviceUISet->addRollupWidget(this); @@ -432,7 +433,7 @@ void FreqTrackerGUI::displaySettings() displaySpectrumBandwidth(m_settings.m_spanLog2); displayStreamIndex(); - restoreState(m_settings.m_rollupState); + restoreState(m_rollupState); blockApplySettings(false); } diff --git a/plugins/channelrx/freqtracker/freqtrackergui.h b/plugins/channelrx/freqtracker/freqtrackergui.h index 4c7943bef..5af7178ee 100644 --- a/plugins/channelrx/freqtracker/freqtrackergui.h +++ b/plugins/channelrx/freqtracker/freqtrackergui.h @@ -24,6 +24,8 @@ #include "dsp/channelmarker.h" #include "dsp/movingaverage.h" #include "util/messagequeue.h" +#include "settings/rollupstate.h" + #include "freqtrackersettings.h" class PluginAPI; @@ -58,6 +60,7 @@ private: DeviceUISet* m_deviceUISet; ChannelMarker m_channelMarker; ChannelMarker m_pllChannelMarker; + RollupState m_rollupState; FreqTrackerSettings m_settings; int m_basebandSampleRate; bool m_doApplySettings; diff --git a/plugins/channelrx/freqtracker/freqtrackerplugin.cpp b/plugins/channelrx/freqtracker/freqtrackerplugin.cpp index 2fc88c4b7..3279e56f7 100644 --- a/plugins/channelrx/freqtracker/freqtrackerplugin.cpp +++ b/plugins/channelrx/freqtracker/freqtrackerplugin.cpp @@ -28,7 +28,7 @@ const PluginDescriptor FreqTrackerPlugin::m_pluginDescriptor = { FreqTracker::m_channelId, QStringLiteral("Frequency Tracker"), - QStringLiteral("6.3.3"), + QStringLiteral("6.18.0"), QStringLiteral("(c) Edouard Griffiths, F4EXB"), QStringLiteral("https://github.com/f4exb/sdrangel"), true, diff --git a/plugins/channelrx/freqtracker/freqtrackersettings.cpp b/plugins/channelrx/freqtracker/freqtrackersettings.cpp index b95eb811c..58c0338b8 100644 --- a/plugins/channelrx/freqtracker/freqtrackersettings.cpp +++ b/plugins/channelrx/freqtracker/freqtrackersettings.cpp @@ -23,8 +23,9 @@ #include "freqtrackersettings.h" FreqTrackerSettings::FreqTrackerSettings() : - m_channelMarker(0), - m_spectrumGUI(0) + m_channelMarker(nullptr), + m_spectrumGUI(nullptr), + m_rollupState(nullptr) { resetToDefaults(); } @@ -85,7 +86,10 @@ QByteArray FreqTrackerSettings::serialize() const s.writeU32(20, m_reverseAPIChannelIndex); s.writeS32(21, m_squelchGate); s.writeS32(22, m_streamIndex); - s.writeBlob(23, m_rollupState); + + if (m_rollupState) { + s.writeBlob(23, m_rollupState->serialize()); + } return s.final(); } @@ -122,9 +126,10 @@ bool FreqTrackerSettings::deserialize(const QByteArray& data) d.readS32(5, &tmp, -40); m_squelch = tmp; - d.readBlob(6, &bytetmp); - if (m_channelMarker) { + if (m_channelMarker) + { + d.readBlob(6, &bytetmp); m_channelMarker->deserialize(bytetmp); } @@ -158,7 +163,12 @@ bool FreqTrackerSettings::deserialize(const QByteArray& data) d.readS32(21, &tmp, 5); m_squelchGate = tmp < 0 ? 0 : tmp > 99 ? 99 : tmp; d.readS32(22, &m_streamIndex, 0); - d.readBlob(23, &m_rollupState); + + if (m_rollupState) + { + d.readBlob(23, &bytetmp); + m_rollupState->deserialize(bytetmp); + } return true; } diff --git a/plugins/channelrx/freqtracker/freqtrackersettings.h b/plugins/channelrx/freqtracker/freqtrackersettings.h index 5be62981c..b2d4e6f95 100644 --- a/plugins/channelrx/freqtracker/freqtrackersettings.h +++ b/plugins/channelrx/freqtracker/freqtrackersettings.h @@ -56,11 +56,12 @@ struct FreqTrackerSettings uint16_t m_reverseAPIPort; uint16_t m_reverseAPIDeviceIndex; uint16_t m_reverseAPIChannelIndex; - QByteArray m_rollupState; + Serializable *m_rollupState; FreqTrackerSettings(); void resetToDefaults(); void setChannelMarker(Serializable *channelMarker) { m_channelMarker = channelMarker; } + void setRollupState(Serializable *rollupState) { m_rollupState = rollupState; } void setSpectrumGUI(Serializable *spectrumGUI) { m_spectrumGUI = spectrumGUI; } QByteArray serialize() const; bool deserialize(const QByteArray& data); diff --git a/plugins/channelrx/localsink/localsink.cpp b/plugins/channelrx/localsink/localsink.cpp index 5e8b3a10a..da4c919ed 100644 --- a/plugins/channelrx/localsink/localsink.cpp +++ b/plugins/channelrx/localsink/localsink.cpp @@ -415,6 +415,9 @@ void LocalSink::webapiUpdateChannelSettings( if (settings.m_channelMarker && channelSettingsKeys.contains("channelMarker")) { settings.m_channelMarker->updateFrom(channelSettingsKeys, response.getLocalSinkSettings()->getChannelMarker()); } + if (settings.m_rollupState && channelSettingsKeys.contains("rollupState")) { + settings.m_rollupState->updateFrom(channelSettingsKeys, response.getLocalSinkSettings()->getRollupState()); + } } void LocalSink::webapiFormatChannelSettings(SWGSDRangel::SWGChannelSettings& response, const LocalSinkSettings& settings) @@ -457,6 +460,20 @@ void LocalSink::webapiFormatChannelSettings(SWGSDRangel::SWGChannelSettings& res response.getLocalSinkSettings()->setChannelMarker(swgChannelMarker); } } + + if (settings.m_rollupState) + { + if (response.getLocalSinkSettings()->getRollupState()) + { + settings.m_rollupState->formatTo(response.getLocalSinkSettings()->getRollupState()); + } + else + { + SWGSDRangel::SWGRollupState *swgRollupState = new SWGSDRangel::SWGRollupState(); + settings.m_rollupState->formatTo(swgRollupState); + response.getLocalSinkSettings()->setRollupState(swgRollupState); + } + } } void LocalSink::webapiReverseSendSettings(QList& channelSettingsKeys, const LocalSinkSettings& settings, bool force) @@ -550,6 +567,13 @@ void LocalSink::webapiFormatChannelSettings( settings.m_channelMarker->formatTo(swgChannelMarker); swgLocalSinkSettings->setChannelMarker(swgChannelMarker); } + + if (settings.m_rollupState && (channelSettingsKeys.contains("rollupState") || force)) + { + SWGSDRangel::SWGRollupState *swgRollupState = new SWGSDRangel::SWGRollupState(); + settings.m_rollupState->formatTo(swgRollupState); + swgLocalSinkSettings->setRollupState(swgRollupState); + } } void LocalSink::networkManagerFinished(QNetworkReply *reply) diff --git a/plugins/channelrx/localsink/localsinkgui.cpp b/plugins/channelrx/localsink/localsinkgui.cpp index 531048768..7af286f66 100644 --- a/plugins/channelrx/localsink/localsinkgui.cpp +++ b/plugins/channelrx/localsink/localsinkgui.cpp @@ -118,6 +118,7 @@ LocalSinkGUI::LocalSinkGUI(PluginAPI* pluginAPI, DeviceUISet *deviceUISet, Baseb m_channelMarker.setVisible(true); // activate signal on the last setting only m_settings.setChannelMarker(&m_channelMarker); + m_settings.setRollupState(&m_rollupState); m_deviceUISet->addChannelMarker(&m_channelMarker); m_deviceUISet->addRollupWidget(this); @@ -175,7 +176,7 @@ void LocalSinkGUI::displaySettings() applyDecimation(); displayStreamIndex(); - restoreState(m_settings.m_rollupState); + restoreState(m_rollupState); blockApplySettings(false); } @@ -253,7 +254,7 @@ void LocalSinkGUI::onWidgetRolled(QWidget* widget, bool rollDown) (void) widget; (void) rollDown; - m_settings.m_rollupState = saveState(); + saveState(m_rollupState); applySettings(); } diff --git a/plugins/channelrx/localsink/localsinkgui.h b/plugins/channelrx/localsink/localsinkgui.h index be5363245..07f6c8c09 100644 --- a/plugins/channelrx/localsink/localsinkgui.h +++ b/plugins/channelrx/localsink/localsinkgui.h @@ -25,6 +25,7 @@ #include "dsp/channelmarker.h" #include "channel/channelgui.h" #include "util/messagequeue.h" +#include "settings/rollupstate.h" #include "localsinksettings.h" @@ -53,6 +54,7 @@ private: PluginAPI* m_pluginAPI; DeviceUISet* m_deviceUISet; ChannelMarker m_channelMarker; + RollupState m_rollupState; LocalSinkSettings m_settings; int m_basebandSampleRate; double m_shiftFrequencyFactor; //!< Channel frequency shift factor diff --git a/plugins/channelrx/localsink/localsinkplugin.cpp b/plugins/channelrx/localsink/localsinkplugin.cpp index ee42bf297..e566d7541 100644 --- a/plugins/channelrx/localsink/localsinkplugin.cpp +++ b/plugins/channelrx/localsink/localsinkplugin.cpp @@ -30,7 +30,7 @@ const PluginDescriptor LocalSinkPlugin::m_pluginDescriptor = { LocalSink::m_channelId, QStringLiteral("Local channel sink"), - QStringLiteral("6.3.3"), + QStringLiteral("6.18.0"), QStringLiteral("(c) Edouard Griffiths, F4EXB"), QStringLiteral("https://github.com/f4exb/sdrangel"), true, diff --git a/plugins/channelrx/localsink/localsinksettings.cpp b/plugins/channelrx/localsink/localsinksettings.cpp index 6039962ee..dfa674910 100644 --- a/plugins/channelrx/localsink/localsinksettings.cpp +++ b/plugins/channelrx/localsink/localsinksettings.cpp @@ -36,6 +36,7 @@ void LocalSinkSettings::resetToDefaults() m_log2Decim = 0; m_filterChainHash = 0; m_channelMarker = nullptr; + m_rollupState = nullptr; m_play = false; m_streamIndex = 0; m_useReverseAPI = false; @@ -49,6 +50,11 @@ QByteArray LocalSinkSettings::serialize() const { SimpleSerializer s(1); s.writeU32(1, m_localDeviceIndex); + + if (m_channelMarker) { + s.writeBlob(2, m_channelMarker->serialize()); + } + s.writeU32(5, m_rgbColor); s.writeString(6, m_title); s.writeBool(7, m_useReverseAPI); @@ -59,7 +65,10 @@ QByteArray LocalSinkSettings::serialize() const s.writeU32(12, m_log2Decim); s.writeU32(13, m_filterChainHash); s.writeS32(14, m_streamIndex); - s.writeBlob(15, m_rollupState); + + if (m_rollupState) { + s.writeBlob(15, m_rollupState->serialize()); + } return s.final(); } @@ -78,8 +87,16 @@ bool LocalSinkSettings::deserialize(const QByteArray& data) { uint32_t tmp; QString strtmp; + QByteArray bytetmp; d.readU32(1, &m_localDeviceIndex, 0); + + if (m_channelMarker) + { + d.readBlob(2, &bytetmp); + m_channelMarker->deserialize(bytetmp); + } + d.readU32(5, &m_rgbColor, QColor(0, 255, 255).rgb()); d.readString(6, &m_title, "Local sink"); d.readBool(7, &m_useReverseAPI, false); @@ -100,7 +117,12 @@ bool LocalSinkSettings::deserialize(const QByteArray& data) m_log2Decim = tmp > 6 ? 6 : tmp; d.readU32(13, &m_filterChainHash, 0); d.readS32(14, &m_streamIndex, 0); - d.readBlob(15, &m_rollupState); + + if (m_rollupState) + { + d.readBlob(15, &bytetmp); + m_rollupState->deserialize(bytetmp); + } return true; } diff --git a/plugins/channelrx/localsink/localsinksettings.h b/plugins/channelrx/localsink/localsinksettings.h index 63db110cc..02b9cf680 100644 --- a/plugins/channelrx/localsink/localsinksettings.h +++ b/plugins/channelrx/localsink/localsinksettings.h @@ -39,11 +39,12 @@ struct LocalSinkSettings uint16_t m_reverseAPIChannelIndex; Serializable *m_channelMarker; - QByteArray m_rollupState; + Serializable *m_rollupState; LocalSinkSettings(); void resetToDefaults(); void setChannelMarker(Serializable *channelMarker) { m_channelMarker = channelMarker; } + void setRollupState(Serializable *rollupState) { m_rollupState = rollupState; } QByteArray serialize() const; bool deserialize(const QByteArray& data); }; diff --git a/plugins/channelrx/noisefigure/noisefigure.cpp b/plugins/channelrx/noisefigure/noisefigure.cpp index 4cdc8237b..3519e8a1e 100644 --- a/plugins/channelrx/noisefigure/noisefigure.cpp +++ b/plugins/channelrx/noisefigure/noisefigure.cpp @@ -684,6 +684,9 @@ void NoiseFigure::webapiUpdateChannelSettings( if (settings.m_channelMarker && channelSettingsKeys.contains("channelMarker")) { settings.m_channelMarker->updateFrom(channelSettingsKeys, response.getNoiseFigureSettings()->getChannelMarker()); } + if (settings.m_rollupState && channelSettingsKeys.contains("rollupState")) { + settings.m_rollupState->updateFrom(channelSettingsKeys, response.getNoiseFigureSettings()->getRollupState()); + } } void NoiseFigure::webapiFormatChannelSettings(SWGSDRangel::SWGChannelSettings& response, const NoiseFigureSettings& settings) @@ -723,6 +726,20 @@ void NoiseFigure::webapiFormatChannelSettings(SWGSDRangel::SWGChannelSettings& r response.getNoiseFigureSettings()->setChannelMarker(swgChannelMarker); } } + + if (settings.m_rollupState) + { + if (response.getNoiseFigureSettings()->getRollupState()) + { + settings.m_rollupState->formatTo(response.getNoiseFigureSettings()->getRollupState()); + } + else + { + SWGSDRangel::SWGRollupState *swgRollupState = new SWGSDRangel::SWGRollupState(); + settings.m_rollupState->formatTo(swgRollupState); + response.getNoiseFigureSettings()->setRollupState(swgRollupState); + } + } } void NoiseFigure::webapiReverseSendSettings(QList& channelSettingsKeys, const NoiseFigureSettings& settings, bool force) @@ -830,6 +847,13 @@ void NoiseFigure::webapiFormatChannelSettings( settings.m_channelMarker->formatTo(swgChannelMarker); swgNoiseFigureSettings->setChannelMarker(swgChannelMarker); } + + if (settings.m_rollupState && (channelSettingsKeys.contains("rollupState") || force)) + { + SWGSDRangel::SWGRollupState *swgRollupState = new SWGSDRangel::SWGRollupState(); + settings.m_rollupState->formatTo(swgRollupState); + swgNoiseFigureSettings->setRollupState(swgRollupState); + } } void NoiseFigure::networkManagerFinished(QNetworkReply *reply) diff --git a/plugins/channelrx/noisefigure/noisefiguregui.cpp b/plugins/channelrx/noisefigure/noisefiguregui.cpp index 8daea300f..bd5afea7d 100644 --- a/plugins/channelrx/noisefigure/noisefiguregui.cpp +++ b/plugins/channelrx/noisefigure/noisefiguregui.cpp @@ -551,7 +551,7 @@ void NoiseFigureGUI::onWidgetRolled(QWidget* widget, bool rollDown) (void) widget; (void) rollDown; - m_settings.m_rollupState = saveState(); + saveState(m_rollupState); applySettings(); } @@ -638,6 +638,7 @@ NoiseFigureGUI::NoiseFigureGUI(PluginAPI* pluginAPI, DeviceUISet *deviceUISet, B setTitleColor(m_channelMarker.getColor()); m_settings.setChannelMarker(&m_channelMarker); + m_settings.setRollupState(&m_rollupState); m_deviceUISet->addChannelMarker(&m_channelMarker); m_deviceUISet->addRollupWidget(this); @@ -760,7 +761,7 @@ void NoiseFigureGUI::displaySettings() header->moveSection(header->visualIndex(i), m_settings.m_resultsColumnIndexes[i]); } - restoreState(m_settings.m_rollupState); + restoreState(m_rollupState); blockApplySettings(false); } diff --git a/plugins/channelrx/noisefigure/noisefiguregui.h b/plugins/channelrx/noisefigure/noisefiguregui.h index 9d45438d7..9d2e9ad8c 100644 --- a/plugins/channelrx/noisefigure/noisefiguregui.h +++ b/plugins/channelrx/noisefigure/noisefiguregui.h @@ -27,6 +27,7 @@ #include "channel/channelgui.h" #include "dsp/channelmarker.h" #include "util/messagequeue.h" +#include "settings/rollupstate.h" #include "noisefiguresettings.h" #include "noisefigure.h" @@ -64,6 +65,7 @@ private: PluginAPI* m_pluginAPI; DeviceUISet* m_deviceUISet; ChannelMarker m_channelMarker; + RollupState m_rollupState; NoiseFigureSettings m_settings; bool m_doApplySettings; diff --git a/plugins/channelrx/noisefigure/noisefigureplugin.cpp b/plugins/channelrx/noisefigure/noisefigureplugin.cpp index 8fdac4713..7756130d1 100644 --- a/plugins/channelrx/noisefigure/noisefigureplugin.cpp +++ b/plugins/channelrx/noisefigure/noisefigureplugin.cpp @@ -29,7 +29,7 @@ const PluginDescriptor NoiseFigurePlugin::m_pluginDescriptor = { NoiseFigure::m_channelId, QStringLiteral("Noise Figure"), - QStringLiteral("6.17.3"), + QStringLiteral("6.18.0"), QStringLiteral("(c) Jon Beniston, M7RCE"), QStringLiteral("https://github.com/f4exb/sdrangel"), true, diff --git a/plugins/channelrx/noisefigure/noisefiguresettings.cpp b/plugins/channelrx/noisefigure/noisefiguresettings.cpp index 6d2ac4bec..53f2b36a1 100644 --- a/plugins/channelrx/noisefigure/noisefiguresettings.cpp +++ b/plugins/channelrx/noisefigure/noisefiguresettings.cpp @@ -25,7 +25,8 @@ #include "noisefiguresettings.h" NoiseFigureSettings::NoiseFigureSettings() : - m_channelMarker(0) + m_channelMarker(nullptr), + m_rollupState(nullptr) { resetToDefaults(); } @@ -98,24 +99,28 @@ QByteArray NoiseFigureSettings::serialize() const s.writeU32(17, m_rgbColor); s.writeString(18, m_title); + if (m_channelMarker) { s.writeBlob(19, m_channelMarker->serialize()); } + s.writeS32(20, m_streamIndex); s.writeBool(21, m_useReverseAPI); s.writeString(22, m_reverseAPIAddress); s.writeU32(23, m_reverseAPIPort); s.writeU32(24, m_reverseAPIDeviceIndex); s.writeU32(25, m_reverseAPIChannelIndex); - s.writeS32(26, (int)m_interpolation); - s.writeString(27, m_setting); - s.writeBlob(28, m_rollupState); + + if (m_rollupState) { + s.writeBlob(28, m_rollupState->serialize()); + } for (int i = 0; i < NOISEFIGURE_COLUMNS; i++) { s.writeS32(100 + i, m_resultsColumnIndexes[i]); } + for (int i = 0; i < NOISEFIGURE_COLUMNS; i++) { s.writeS32(200 + i, m_resultsColumnSizes[i]); } @@ -143,14 +148,12 @@ bool NoiseFigureSettings::deserialize(const QByteArray& data) d.readS32(1, &m_inputFrequencyOffset, 0); d.readS32(2, &m_fftSize, 64); d.readFloat(3, &m_fftCount, 10000.0f); - d.readS32(4, (int*)&m_sweepSpec, NoiseFigureSettings::RANGE); d.readDouble(5, &m_startValue, 430.0); d.readDouble(6, &m_stopValue, 440.0); d.readS32(7, &m_steps, 3); d.readDouble(8, &m_step, 5.0); d.readString(9, &m_sweepList, DEFAULT_FREQUENCIES); - d.readString(10, &m_visaDevice, DEFAULT_VISA_DEVICE); d.readString(11, &m_powerOnSCPI, DEFAULT_POWER_ON); d.readString(12, &m_powerOffSCPI, DEFAULT_POWER_OFF); @@ -163,32 +166,41 @@ bool NoiseFigureSettings::deserialize(const QByteArray& data) d.readU32(17, &m_rgbColor, QColor(0, 100, 200).rgb()); d.readString(18, &m_title, "Noise Figure"); - d.readBlob(19, &bytetmp); - if (m_channelMarker) { + + if (m_channelMarker) + { + d.readBlob(19, &bytetmp); m_channelMarker->deserialize(bytetmp); } + d.readS32(20, &m_streamIndex, 0); d.readBool(21, &m_useReverseAPI, false); d.readString(22, &m_reverseAPIAddress, "127.0.0.1"); d.readU32(23, &utmp, 0); + if ((utmp > 1023) && (utmp < 65535)) { m_reverseAPIPort = utmp; } else { m_reverseAPIPort = 8888; } + d.readU32(24, &utmp, 0); m_reverseAPIDeviceIndex = utmp > 99 ? 99 : utmp; d.readU32(25, &utmp, 0); m_reverseAPIChannelIndex = utmp > 99 ? 99 : utmp; - d.readS32(26, (int*)&m_interpolation, LINEAR); - d.readString(27, &m_setting, "centerFrequency"); - d.readBlob(28, &m_rollupState); + + if (m_rollupState) + { + d.readBlob(28, &bytetmp); + m_rollupState->deserialize(bytetmp); + } for (int i = 0; i < NOISEFIGURE_COLUMNS; i++) { d.readS32(100 + i, &m_resultsColumnIndexes[i], i); } + for (int i = 0; i < NOISEFIGURE_COLUMNS; i++) { d.readS32(200 + i, &m_resultsColumnSizes[i], -1); } diff --git a/plugins/channelrx/noisefigure/noisefiguresettings.h b/plugins/channelrx/noisefigure/noisefiguresettings.h index 15d653b05..8ad3dbdd4 100644 --- a/plugins/channelrx/noisefigure/noisefiguresettings.h +++ b/plugins/channelrx/noisefigure/noisefiguresettings.h @@ -85,7 +85,7 @@ struct NoiseFigureSettings uint16_t m_reverseAPIPort; uint16_t m_reverseAPIDeviceIndex; uint16_t m_reverseAPIChannelIndex; - QByteArray m_rollupState; + Serializable *m_rollupState; int m_resultsColumnIndexes[NOISEFIGURE_COLUMNS];//!< How the columns are ordered in the table int m_resultsColumnSizes[NOISEFIGURE_COLUMNS]; //!< Size of the columns in the table @@ -93,6 +93,7 @@ struct NoiseFigureSettings NoiseFigureSettings(); void resetToDefaults(); void setChannelMarker(Serializable *channelMarker) { m_channelMarker = channelMarker; } + void setRollupState(Serializable *rollupState) { m_rollupState = rollupState; } QByteArray serialize() const; bool deserialize(const QByteArray& data); QByteArray serializeENRs(QList enrs) const; diff --git a/plugins/channelrx/radioastronomy/radioastronomy.cpp b/plugins/channelrx/radioastronomy/radioastronomy.cpp index 29573eda6..f68184ec5 100644 --- a/plugins/channelrx/radioastronomy/radioastronomy.cpp +++ b/plugins/channelrx/radioastronomy/radioastronomy.cpp @@ -940,6 +940,9 @@ void RadioAstronomy::webapiUpdateChannelSettings( if (settings.m_channelMarker && channelSettingsKeys.contains("channelMarker")) { settings.m_channelMarker->updateFrom(channelSettingsKeys, response.getRadioAstronomySettings()->getChannelMarker()); } + if (settings.m_rollupState && channelSettingsKeys.contains("rollupState")) { + settings.m_rollupState->updateFrom(channelSettingsKeys, response.getRadioAstronomySettings()->getRollupState()); + } } void RadioAstronomy::webapiFormatChannelSettings(SWGSDRangel::SWGChannelSettings& response, const RadioAstronomySettings& settings) @@ -1001,6 +1004,20 @@ void RadioAstronomy::webapiFormatChannelSettings(SWGSDRangel::SWGChannelSettings response.getRadioAstronomySettings()->setChannelMarker(swgChannelMarker); } } + + if (settings.m_rollupState) + { + if (response.getRadioAstronomySettings()->getRollupState()) + { + settings.m_rollupState->formatTo(response.getRadioAstronomySettings()->getRollupState()); + } + else + { + SWGSDRangel::SWGRollupState *swgRollupState = new SWGSDRangel::SWGRollupState(); + settings.m_rollupState->formatTo(swgRollupState); + response.getRadioAstronomySettings()->setRollupState(swgRollupState); + } + } } void RadioAstronomy::webapiReverseSendSettings(QList& channelSettingsKeys, const RadioAstronomySettings& settings, bool force) @@ -1126,6 +1143,13 @@ void RadioAstronomy::webapiFormatChannelSettings( settings.m_channelMarker->formatTo(swgChannelMarker); swgRadioAstronomySettings->setChannelMarker(swgChannelMarker); } + + if (settings.m_rollupState && (channelSettingsKeys.contains("rollupState") || force)) + { + SWGSDRangel::SWGRollupState *swgRollupState = new SWGSDRangel::SWGRollupState(); + settings.m_rollupState->formatTo(swgRollupState); + swgRadioAstronomySettings->setRollupState(swgRollupState); + } } void RadioAstronomy::networkManagerFinished(QNetworkReply *reply) diff --git a/plugins/channelrx/radioastronomy/radioastronomygui.cpp b/plugins/channelrx/radioastronomy/radioastronomygui.cpp index c1e3eb634..d483b2fd7 100644 --- a/plugins/channelrx/radioastronomy/radioastronomygui.cpp +++ b/plugins/channelrx/radioastronomy/radioastronomygui.cpp @@ -1937,6 +1937,9 @@ void RadioAstronomyGUI::onWidgetRolled(QWidget* widget, bool rollDown) { (void) widget; (void) rollDown; + + saveState(m_rollupState); + applySettings(); } void RadioAstronomyGUI::onMenuDialogCalled(const QPoint &p) @@ -2086,6 +2089,7 @@ RadioAstronomyGUI::RadioAstronomyGUI(PluginAPI* pluginAPI, DeviceUISet *deviceUI setTitleColor(m_channelMarker.getColor()); m_settings.setChannelMarker(&m_channelMarker); + m_settings.setRollupState(&m_rollupState); m_deviceUISet->addChannelMarker(&m_channelMarker); m_deviceUISet->addRollupWidget(this); @@ -2538,6 +2542,7 @@ void RadioAstronomyGUI::displaySettings() header->moveSection(header->visualIndex(i), m_settings.m_powerTableColumnIndexes[i]); } + restoreState(m_rollupState); blockApplySettings(false); arrangeRollups(); } diff --git a/plugins/channelrx/radioastronomy/radioastronomygui.h b/plugins/channelrx/radioastronomy/radioastronomygui.h index 0725492fe..8ace48613 100644 --- a/plugins/channelrx/radioastronomy/radioastronomygui.h +++ b/plugins/channelrx/radioastronomy/radioastronomygui.h @@ -33,6 +33,7 @@ #include "dsp/channelmarker.h" #include "util/messagequeue.h" #include "util/httpdownloadmanager.h" +#include "settings/rollupstate.h" #include "pipes/pipeendpoint.h" #include "radioastronomysettings.h" @@ -208,6 +209,7 @@ private: PluginAPI* m_pluginAPI; DeviceUISet* m_deviceUISet; ChannelMarker m_channelMarker; + RollupState m_rollupState; RadioAstronomySettings m_settings; bool m_doApplySettings; QList m_availablePipes; diff --git a/plugins/channelrx/radioastronomy/radioastronomyplugin.cpp b/plugins/channelrx/radioastronomy/radioastronomyplugin.cpp index b561ff976..269081dac 100644 --- a/plugins/channelrx/radioastronomy/radioastronomyplugin.cpp +++ b/plugins/channelrx/radioastronomy/radioastronomyplugin.cpp @@ -29,7 +29,7 @@ const PluginDescriptor RadioAstronomyPlugin::m_pluginDescriptor = { RadioAstronomy::m_channelId, QStringLiteral("Radio Astronomy"), - QStringLiteral("6.17.3"), + QStringLiteral("6.18.0"), QStringLiteral("(c) Jon Beniston, M7RCE"), QStringLiteral("https://github.com/f4exb/sdrangel"), true, diff --git a/plugins/channelrx/radioastronomy/radioastronomysettings.cpp b/plugins/channelrx/radioastronomy/radioastronomysettings.cpp index fe03f8cfa..19c2802d2 100644 --- a/plugins/channelrx/radioastronomy/radioastronomysettings.cpp +++ b/plugins/channelrx/radioastronomy/radioastronomysettings.cpp @@ -32,7 +32,8 @@ const QStringList RadioAstronomySettings::m_pipeURIs = { }; RadioAstronomySettings::RadioAstronomySettings() : - m_channelMarker(0) + m_channelMarker(nullptr), + m_rollupState(nullptr) { resetToDefaults(); } diff --git a/plugins/channelrx/radioastronomy/radioastronomysettings.h b/plugins/channelrx/radioastronomy/radioastronomysettings.h index dc1a2c9e9..a3363ea2f 100644 --- a/plugins/channelrx/radioastronomy/radioastronomysettings.h +++ b/plugins/channelrx/radioastronomy/radioastronomysettings.h @@ -202,6 +202,7 @@ struct RadioAstronomySettings quint32 m_rgbColor; QString m_title; Serializable *m_channelMarker; + Serializable *m_rollupState; int m_streamIndex; //!< MIMO channel. Not relevant when connected to SI (single Rx). bool m_useReverseAPI; QString m_reverseAPIAddress; @@ -215,6 +216,7 @@ struct RadioAstronomySettings RadioAstronomySettings(); void resetToDefaults(); void setChannelMarker(Serializable *channelMarker) { m_channelMarker = channelMarker; } + void setRollupState(Serializable *rollupState) { m_rollupState = rollupState; } QByteArray serialize() const; bool deserialize(const QByteArray& data); diff --git a/plugins/channelrx/radioclock/radioclock.cpp b/plugins/channelrx/radioclock/radioclock.cpp index 2d8b3b9c8..c06d81751 100644 --- a/plugins/channelrx/radioclock/radioclock.cpp +++ b/plugins/channelrx/radioclock/radioclock.cpp @@ -352,6 +352,9 @@ void RadioClock::webapiUpdateChannelSettings( if (settings.m_channelMarker && channelSettingsKeys.contains("channelMarker")) { settings.m_channelMarker->updateFrom(channelSettingsKeys, response.getRadioClockSettings()->getChannelMarker()); } + if (settings.m_rollupState && channelSettingsKeys.contains("rollupState")) { + settings.m_rollupState->updateFrom(channelSettingsKeys, response.getRadioClockSettings()->getRollupState()); + } } void RadioClock::webapiFormatChannelSettings(SWGSDRangel::SWGChannelSettings& response, const RadioClockSettings& settings) @@ -409,6 +412,20 @@ void RadioClock::webapiFormatChannelSettings(SWGSDRangel::SWGChannelSettings& re response.getRadioClockSettings()->setChannelMarker(swgChannelMarker); } } + + if (settings.m_rollupState) + { + if (response.getRadioClockSettings()->getRollupState()) + { + settings.m_rollupState->formatTo(response.getRadioClockSettings()->getRollupState()); + } + else + { + SWGSDRangel::SWGRollupState *swgRollupState = new SWGSDRangel::SWGRollupState(); + settings.m_rollupState->formatTo(swgRollupState); + response.getRadioClockSettings()->setRollupState(swgRollupState); + } + } } void RadioClock::webapiFormatChannelReport(SWGSDRangel::SWGChannelReport& response) @@ -513,6 +530,13 @@ void RadioClock::webapiFormatChannelSettings( settings.m_channelMarker->formatTo(swgChannelMarker); swgRadioClockSettings->setChannelMarker(swgChannelMarker); } + + if (settings.m_rollupState && (channelSettingsKeys.contains("rollupState") || force)) + { + SWGSDRangel::SWGRollupState *swgRollupState = new SWGSDRangel::SWGRollupState(); + settings.m_rollupState->formatTo(swgRollupState); + swgRadioClockSettings->setRollupState(swgRollupState); + } } void RadioClock::networkManagerFinished(QNetworkReply *reply) diff --git a/plugins/channelrx/radioclock/radioclockgui.cpp b/plugins/channelrx/radioclock/radioclockgui.cpp index dc26c2cd4..5e544cff7 100644 --- a/plugins/channelrx/radioclock/radioclockgui.cpp +++ b/plugins/channelrx/radioclock/radioclockgui.cpp @@ -211,7 +211,7 @@ void RadioClockGUI::onWidgetRolled(QWidget* widget, bool rollDown) } } - m_settings.m_rollupState = saveState(); + saveState(m_rollupState); applySettings(); } @@ -305,6 +305,7 @@ RadioClockGUI::RadioClockGUI(PluginAPI* pluginAPI, DeviceUISet *deviceUISet, Bas setTitleColor(m_channelMarker.getColor()); m_settings.setChannelMarker(&m_channelMarker); + m_settings.setRollupState(&m_rollupState); m_settings.setScopeGUI(ui->scopeGUI); m_deviceUISet->addChannelMarker(&m_channelMarker); @@ -366,7 +367,7 @@ void RadioClockGUI::displaySettings() displayStreamIndex(); - restoreState(m_settings.m_rollupState); + restoreState(m_rollupState); blockApplySettings(false); } diff --git a/plugins/channelrx/radioclock/radioclockgui.h b/plugins/channelrx/radioclock/radioclockgui.h index c6e167f11..827a6340c 100644 --- a/plugins/channelrx/radioclock/radioclockgui.h +++ b/plugins/channelrx/radioclock/radioclockgui.h @@ -22,6 +22,7 @@ #include "channel/channelgui.h" #include "dsp/channelmarker.h" #include "util/messagequeue.h" +#include "settings/rollupstate.h" #include "radioclocksettings.h" #include "radioclock.h" @@ -60,6 +61,7 @@ private: PluginAPI* m_pluginAPI; DeviceUISet* m_deviceUISet; ChannelMarker m_channelMarker; + RollupState m_rollupState; RadioClockSettings m_settings; bool m_doApplySettings; ScopeVis* m_scopeVis; diff --git a/plugins/channelrx/radioclock/radioclockplugin.cpp b/plugins/channelrx/radioclock/radioclockplugin.cpp index b04ea1c39..a44e5ff46 100644 --- a/plugins/channelrx/radioclock/radioclockplugin.cpp +++ b/plugins/channelrx/radioclock/radioclockplugin.cpp @@ -29,7 +29,7 @@ const PluginDescriptor RadioClockPlugin::m_pluginDescriptor = { RadioClock::m_channelId, QStringLiteral("Radio Clock"), - QStringLiteral("6.16.2"), + QStringLiteral("6.18.0"), QStringLiteral("(c) Jon Beniston, M7RCE"), QStringLiteral("https://github.com/f4exb/sdrangel"), true, diff --git a/plugins/channelrx/radioclock/radioclocksettings.cpp b/plugins/channelrx/radioclock/radioclocksettings.cpp index 7ccbb0716..14cb04116 100644 --- a/plugins/channelrx/radioclock/radioclocksettings.cpp +++ b/plugins/channelrx/radioclock/radioclocksettings.cpp @@ -24,8 +24,9 @@ #include "radioclocksettings.h" RadioClockSettings::RadioClockSettings() : - m_channelMarker(0), - m_scopeGUI(0) + m_channelMarker(nullptr), + m_rollupState(nullptr), + m_scopeGUI(nullptr) { resetToDefaults(); } @@ -58,17 +59,25 @@ QByteArray RadioClockSettings::serialize() const s.writeS32(6, (int)m_timezone); s.writeU32(12, m_rgbColor); s.writeString(13, m_title); + if (m_channelMarker) { s.writeBlob(14, m_channelMarker->serialize()); } + s.writeS32(15, m_streamIndex); s.writeBool(16, m_useReverseAPI); s.writeString(17, m_reverseAPIAddress); s.writeU32(18, m_reverseAPIPort); s.writeU32(19, m_reverseAPIDeviceIndex); s.writeU32(20, m_reverseAPIChannelIndex); - s.writeBlob(21, m_scopeGUI->serialize()); - s.writeBlob(22, m_rollupState); + + if (m_scopeGUI) { + s.writeBlob(21, m_scopeGUI->serialize()); + } + + if (m_rollupState) { + s.writeBlob(22, m_rollupState->serialize()); + } return s.final(); } @@ -96,19 +105,24 @@ bool RadioClockSettings::deserialize(const QByteArray& data) d.readS32(6, (int *)&m_timezone, BROADCAST); d.readU32(12, &m_rgbColor, QColor(102, 0, 0).rgb()); d.readString(13, &m_title, "Radio Clock"); - d.readBlob(14, &bytetmp); - if (m_channelMarker) { + + if (m_channelMarker) + { + d.readBlob(14, &bytetmp); m_channelMarker->deserialize(bytetmp); } + d.readS32(15, &m_streamIndex, 0); d.readBool(16, &m_useReverseAPI, false); d.readString(17, &m_reverseAPIAddress, "127.0.0.1"); d.readU32(18, &utmp, 0); + if ((utmp > 1023) && (utmp < 65535)) { m_reverseAPIPort = utmp; } else { m_reverseAPIPort = 8888; } + d.readU32(19, &utmp, 0); m_reverseAPIDeviceIndex = utmp > 99 ? 99 : utmp; d.readU32(20, &utmp, 0); @@ -119,7 +133,12 @@ bool RadioClockSettings::deserialize(const QByteArray& data) d.readBlob(21, &bytetmp); m_scopeGUI->deserialize(bytetmp); } - d.readBlob(22, &m_rollupState); + + if (m_rollupState) + { + d.readBlob(22, &bytetmp); + m_rollupState->deserialize(bytetmp); + } return true; } diff --git a/plugins/channelrx/radioclock/radioclocksettings.h b/plugins/channelrx/radioclock/radioclocksettings.h index 72ba6f9fb..317be4503 100644 --- a/plugins/channelrx/radioclock/radioclocksettings.h +++ b/plugins/channelrx/radioclock/radioclocksettings.h @@ -53,13 +53,14 @@ struct RadioClockSettings uint16_t m_reverseAPIDeviceIndex; uint16_t m_reverseAPIChannelIndex; Serializable *m_scopeGUI; - QByteArray m_rollupState; + Serializable *m_rollupState; static const int RADIOCLOCK_CHANNEL_SAMPLE_RATE = 1000; static const int m_scopeStreams = 8; RadioClockSettings(); void resetToDefaults(); void setChannelMarker(Serializable *channelMarker) { m_channelMarker = channelMarker; } + void setRollupState(Serializable *rollupState) { m_rollupState = rollupState; } void setScopeGUI(Serializable *scopeGUI) { m_scopeGUI = scopeGUI; } QByteArray serialize() const; bool deserialize(const QByteArray& data); diff --git a/plugins/channelrx/remotesink/remotesink.cpp b/plugins/channelrx/remotesink/remotesink.cpp index ea593c068..073c2cb69 100644 --- a/plugins/channelrx/remotesink/remotesink.cpp +++ b/plugins/channelrx/remotesink/remotesink.cpp @@ -414,6 +414,9 @@ void RemoteSink::webapiUpdateChannelSettings( if (settings.m_channelMarker && channelSettingsKeys.contains("channelMarker")) { settings.m_channelMarker->updateFrom(channelSettingsKeys, response.getRemoteSinkSettings()->getChannelMarker()); } + if (settings.m_rollupState && channelSettingsKeys.contains("rollupState")) { + settings.m_rollupState->updateFrom(channelSettingsKeys, response.getRemoteSinkSettings()->getRollupState()); + } } void RemoteSink::webapiFormatChannelSettings(SWGSDRangel::SWGChannelSettings& response, const RemoteSinkSettings& settings) @@ -465,6 +468,20 @@ void RemoteSink::webapiFormatChannelSettings(SWGSDRangel::SWGChannelSettings& re response.getRemoteSinkSettings()->setChannelMarker(swgChannelMarker); } } + + if (settings.m_rollupState) + { + if (response.getRemoteSinkSettings()->getRollupState()) + { + settings.m_rollupState->formatTo(response.getRemoteSinkSettings()->getRollupState()); + } + else + { + SWGSDRangel::SWGRollupState *swgRollupState = new SWGSDRangel::SWGRollupState(); + settings.m_rollupState->formatTo(swgRollupState); + response.getRemoteSinkSettings()->setRollupState(swgRollupState); + } + } } void RemoteSink::webapiReverseSendSettings(QList& channelSettingsKeys, const RemoteSinkSettings& settings, bool force) @@ -567,6 +584,13 @@ void RemoteSink::webapiFormatChannelSettings( settings.m_channelMarker->formatTo(swgChannelMarker); swgRemoteSinkSettings->setChannelMarker(swgChannelMarker); } + + if (settings.m_rollupState && (channelSettingsKeys.contains("rollupState") || force)) + { + SWGSDRangel::SWGRollupState *swgRollupState = new SWGSDRangel::SWGRollupState(); + settings.m_rollupState->formatTo(swgRollupState); + swgRemoteSinkSettings->setRollupState(swgRollupState); + } } void RemoteSink::networkManagerFinished(QNetworkReply *reply) diff --git a/plugins/channelrx/remotesink/remotesinkgui.cpp b/plugins/channelrx/remotesink/remotesinkgui.cpp index 69f704ef7..01e5f4600 100644 --- a/plugins/channelrx/remotesink/remotesinkgui.cpp +++ b/plugins/channelrx/remotesink/remotesinkgui.cpp @@ -117,6 +117,7 @@ RemoteSinkGUI::RemoteSinkGUI(PluginAPI* pluginAPI, DeviceUISet *deviceUISet, Bas m_channelMarker.setVisible(true); // activate signal on the last setting only m_settings.setChannelMarker(&m_channelMarker); + m_settings.setRollupState(&m_rollupState); m_deviceUISet->addChannelMarker(&m_channelMarker); m_deviceUISet->addRollupWidget(this); @@ -171,7 +172,7 @@ void RemoteSinkGUI::displaySettings() ui->nbTxBytes->setCurrentIndex(log2(m_settings.m_nbTxBytes)); applyDecimation(); displayStreamIndex(); - restoreState(m_settings.m_rollupState); + restoreState(m_rollupState); blockApplySettings(false); } @@ -223,7 +224,7 @@ void RemoteSinkGUI::onWidgetRolled(QWidget* widget, bool rollDown) (void) widget; (void) rollDown; - m_settings.m_rollupState = saveState(); + saveState(m_rollupState); applySettings(); } diff --git a/plugins/channelrx/remotesink/remotesinkgui.h b/plugins/channelrx/remotesink/remotesinkgui.h index 3c83b910e..b0361fa82 100644 --- a/plugins/channelrx/remotesink/remotesinkgui.h +++ b/plugins/channelrx/remotesink/remotesinkgui.h @@ -25,6 +25,7 @@ #include "dsp/channelmarker.h" #include "channel/channelgui.h" #include "util/messagequeue.h" +#include "settings/rollupstate.h" #include "remotesinksettings.h" @@ -53,6 +54,7 @@ private: PluginAPI* m_pluginAPI; DeviceUISet* m_deviceUISet; ChannelMarker m_channelMarker; + RollupState m_rollupState; RemoteSinkSettings m_settings; int m_basebandSampleRate; quint64 m_deviceCenterFrequency; //!< Center frequency in device diff --git a/plugins/channelrx/remotesink/remotesinkplugin.cpp b/plugins/channelrx/remotesink/remotesinkplugin.cpp index cb1b330a3..b3aec186d 100644 --- a/plugins/channelrx/remotesink/remotesinkplugin.cpp +++ b/plugins/channelrx/remotesink/remotesinkplugin.cpp @@ -30,7 +30,7 @@ const PluginDescriptor RemoteSinkPlugin::m_pluginDescriptor = { RemoteSink::m_channelId, QStringLiteral("Remote channel sink"), - QStringLiteral("6.17.6"), + QStringLiteral("6.18.0"), QStringLiteral("(c) Edouard Griffiths, F4EXB"), QStringLiteral("https://github.com/f4exb/sdrangel"), true, diff --git a/plugins/channelrx/remotesink/remotesinksettings.cpp b/plugins/channelrx/remotesink/remotesinksettings.cpp index 2f51645f1..1181a41ce 100644 --- a/plugins/channelrx/remotesink/remotesinksettings.cpp +++ b/plugins/channelrx/remotesink/remotesinksettings.cpp @@ -46,6 +46,7 @@ void RemoteSinkSettings::resetToDefaults() m_log2Decim = 0; m_filterChainHash = 0; m_channelMarker = nullptr; + m_rollupState = nullptr; m_streamIndex = 0; m_useReverseAPI = false; m_reverseAPIAddress = "127.0.0.1"; @@ -71,9 +72,17 @@ QByteArray RemoteSinkSettings::serialize() const s.writeU32(12, m_log2Decim); s.writeU32(13, m_filterChainHash); s.writeS32(14, m_streamIndex); - s.writeBlob(15, m_rollupState); + + if (m_rollupState) { + s.writeBlob(15, m_rollupState->serialize()); + } + s.writeU64(16, m_deviceCenterFrequency); + if (m_channelMarker) { + s.writeBlob(17, m_channelMarker->serialize()); + } + return s.final(); } @@ -91,6 +100,7 @@ bool RemoteSinkSettings::deserialize(const QByteArray& data) { uint32_t tmp; QString strtmp; + QByteArray bytetmp; d.readU32(1, &tmp, 0); @@ -130,9 +140,21 @@ bool RemoteSinkSettings::deserialize(const QByteArray& data) m_log2Decim = tmp > 6 ? 6 : tmp; d.readU32(13, &m_filterChainHash, 0); d.readS32(14, &m_streamIndex, 0); - d.readBlob(15, &m_rollupState); + + if (m_rollupState) + { + d.readBlob(15, &bytetmp); + m_rollupState->deserialize(bytetmp); + } + d.readU64(16, &m_deviceCenterFrequency, 0); + if (m_channelMarker) + { + d.readBlob(17, &bytetmp); + m_channelMarker->deserialize(bytetmp); + } + return true; } else diff --git a/plugins/channelrx/remotesink/remotesinksettings.h b/plugins/channelrx/remotesink/remotesinksettings.h index d6f4adca7..2828ba48d 100644 --- a/plugins/channelrx/remotesink/remotesinksettings.h +++ b/plugins/channelrx/remotesink/remotesinksettings.h @@ -48,11 +48,12 @@ struct RemoteSinkSettings uint16_t m_reverseAPIChannelIndex; Serializable *m_channelMarker; - QByteArray m_rollupState; + Serializable *m_rollupState; RemoteSinkSettings(); void resetToDefaults(); void setChannelMarker(Serializable *channelMarker) { m_channelMarker = channelMarker; } + void setRollupState(Serializable *rollupState) { m_rollupState = rollupState; } QByteArray serialize() const; bool deserialize(const QByteArray& data); }; diff --git a/plugins/channelrx/sigmffilesink/sigmffilesink.cpp b/plugins/channelrx/sigmffilesink/sigmffilesink.cpp index 582c97a8f..eb5e53716 100644 --- a/plugins/channelrx/sigmffilesink/sigmffilesink.cpp +++ b/plugins/channelrx/sigmffilesink/sigmffilesink.cpp @@ -500,6 +500,9 @@ void SigMFFileSink::webapiUpdateChannelSettings( if (settings.m_channelMarker && channelSettingsKeys.contains("channelMarker")) { settings.m_channelMarker->updateFrom(channelSettingsKeys, response.getSigMfFileSinkSettings()->getChannelMarker()); } + if (settings.m_rollupState && channelSettingsKeys.contains("rollupState")) { + settings.m_rollupState->updateFrom(channelSettingsKeys, response.getSigMfFileSinkSettings()->getRollupState()); + } } void SigMFFileSink::webapiFormatChannelSettings(SWGSDRangel::SWGChannelSettings& response, const SigMFFileSinkSettings& settings) @@ -566,6 +569,20 @@ void SigMFFileSink::webapiFormatChannelSettings(SWGSDRangel::SWGChannelSettings& response.getSigMfFileSinkSettings()->setChannelMarker(swgChannelMarker); } } + + if (settings.m_rollupState) + { + if (response.getSigMfFileSinkSettings()->getRollupState()) + { + settings.m_rollupState->formatTo(response.getSigMfFileSinkSettings()->getRollupState()); + } + else + { + SWGSDRangel::SWGRollupState *swgRollupState = new SWGSDRangel::SWGRollupState(); + settings.m_rollupState->formatTo(swgRollupState); + response.getSigMfFileSinkSettings()->setRollupState(swgRollupState); + } + } } void SigMFFileSink::webapiFormatChannelReport(SWGSDRangel::SWGChannelReport& response) @@ -690,6 +707,13 @@ void SigMFFileSink::webapiFormatChannelSettings( settings.m_channelMarker->formatTo(swgChannelMarker); swgSigMFFileSinkSettings->setChannelMarker(swgChannelMarker); } + + if (settings.m_rollupState && (channelSettingsKeys.contains("rollupState") || force)) + { + SWGSDRangel::SWGRollupState *swgRollupState = new SWGSDRangel::SWGRollupState(); + settings.m_rollupState->formatTo(swgRollupState); + swgSigMFFileSinkSettings->setRollupState(swgRollupState); + } } void SigMFFileSink::networkManagerFinished(QNetworkReply *reply) diff --git a/plugins/channelrx/sigmffilesink/sigmffilesinkgui.cpp b/plugins/channelrx/sigmffilesink/sigmffilesinkgui.cpp index d0c29c4c0..0a279d12f 100644 --- a/plugins/channelrx/sigmffilesink/sigmffilesinkgui.cpp +++ b/plugins/channelrx/sigmffilesink/sigmffilesinkgui.cpp @@ -198,6 +198,7 @@ SigMFFileSinkGUI::SigMFFileSinkGUI(PluginAPI* pluginAPI, DeviceUISet *deviceUISe m_settings.setSpectrumGUI(ui->glSpectrumGUI); m_settings.setChannelMarker(&m_channelMarker); + m_settings.setRollupState(&m_rollupState); m_deviceUISet->addChannelMarker(&m_channelMarker); m_deviceUISet->addRollupWidget(this); @@ -272,7 +273,7 @@ void SigMFFileSinkGUI::displaySettings() displayStreamIndex(); setPosFromFrequency(); - restoreState(m_settings.m_rollupState); + restoreState(m_rollupState); blockApplySettings(false); } @@ -343,7 +344,7 @@ void SigMFFileSinkGUI::onWidgetRolled(QWidget* widget, bool rollDown) (void) widget; (void) rollDown; - m_settings.m_rollupState = saveState(); + saveState(m_rollupState); applySettings(); } diff --git a/plugins/channelrx/sigmffilesink/sigmffilesinkgui.h b/plugins/channelrx/sigmffilesink/sigmffilesinkgui.h index 1497d10ac..654b53124 100644 --- a/plugins/channelrx/sigmffilesink/sigmffilesinkgui.h +++ b/plugins/channelrx/sigmffilesink/sigmffilesinkgui.h @@ -25,6 +25,7 @@ #include "dsp/channelmarker.h" #include "channel/channelgui.h" #include "util/messagequeue.h" +#include "settings/rollupstate.h" #include "sigmffilesinksettings.h" @@ -58,6 +59,7 @@ private: PluginAPI* m_pluginAPI; DeviceUISet* m_deviceUISet; ChannelMarker m_channelMarker; + RollupState m_rollupState; SigMFFileSinkSettings m_settings; bool m_running; int m_fixedShiftIndex; diff --git a/plugins/channelrx/sigmffilesink/sigmffilesinkplugin.cpp b/plugins/channelrx/sigmffilesink/sigmffilesinkplugin.cpp index e206da72c..2398b58f5 100644 --- a/plugins/channelrx/sigmffilesink/sigmffilesinkplugin.cpp +++ b/plugins/channelrx/sigmffilesink/sigmffilesinkplugin.cpp @@ -29,7 +29,7 @@ const PluginDescriptor SigMFFileSinkPlugin::m_pluginDescriptor = { SigMFFileSink::m_channelId, QStringLiteral("SigMF File Sink"), - QStringLiteral("6.17.0"), + QStringLiteral("6.18.0"), QStringLiteral("(c) Edouard Griffiths, F4EXB"), QStringLiteral("https://github.com/f4exb/sdrangel"), true, diff --git a/plugins/channelrx/sigmffilesink/sigmffilesinksettings.cpp b/plugins/channelrx/sigmffilesink/sigmffilesinksettings.cpp index ada96921b..aa785a33b 100644 --- a/plugins/channelrx/sigmffilesink/sigmffilesinksettings.cpp +++ b/plugins/channelrx/sigmffilesink/sigmffilesinksettings.cpp @@ -35,7 +35,9 @@ void SigMFFileSinkSettings::resetToDefaults() m_rgbColor = QColor(140, 4, 4).rgb(); m_title = "SigMF File Sink"; m_log2Decim = 0; + m_channelMarker = nullptr; m_spectrumGUI = nullptr; + m_rollupState = nullptr; m_spectrumSquelchMode = false; m_spectrumSquelch = -50; m_preRecordTime = 0; @@ -74,7 +76,14 @@ QByteArray SigMFFileSinkSettings::serialize() const s.writeS32(16, m_preRecordTime); s.writeS32(17, m_squelchPostRecordTime); s.writeBool(18, m_squelchRecordingEnable); - s.writeBlob(19, m_rollupState); + + if (m_rollupState) { + s.writeBlob(19, m_rollupState->serialize()); + } + + if (m_channelMarker) { + s.writeBlob(20, m_channelMarker->serialize()); + } return s.final(); } @@ -131,7 +140,18 @@ bool SigMFFileSinkSettings::deserialize(const QByteArray& data) d.readS32(16, &m_preRecordTime, 0); d.readS32(17, &m_squelchPostRecordTime, 0); d.readBool(18, &m_squelchRecordingEnable, false); - d.readBlob(19, &m_rollupState); + + if (m_rollupState) + { + d.readBlob(19, &bytetmp); + m_rollupState->deserialize(bytetmp); + } + + if (m_channelMarker) + { + d.readBlob(20, &bytetmp); + m_channelMarker->deserialize(bytetmp); + } return true; } diff --git a/plugins/channelrx/sigmffilesink/sigmffilesinksettings.h b/plugins/channelrx/sigmffilesink/sigmffilesinksettings.h index 02a8172e0..dea649745 100644 --- a/plugins/channelrx/sigmffilesink/sigmffilesinksettings.h +++ b/plugins/channelrx/sigmffilesink/sigmffilesinksettings.h @@ -45,12 +45,13 @@ struct SigMFFileSinkSettings Serializable *m_spectrumGUI; Serializable *m_channelMarker; - QByteArray m_rollupState; + Serializable *m_rollupState; SigMFFileSinkSettings(); void resetToDefaults(); void setSpectrumGUI(Serializable *spectrumGUI) { m_spectrumGUI = spectrumGUI; } void setChannelMarker(Serializable *channelMarker) { m_channelMarker = channelMarker; } + void setRollupState(Serializable *rollupState) { m_rollupState = rollupState; } QByteArray serialize() const; bool deserialize(const QByteArray& data); diff --git a/plugins/channelrx/udpsink/udpsink.cpp b/plugins/channelrx/udpsink/udpsink.cpp index e1dd3b262..3863bb8a7 100644 --- a/plugins/channelrx/udpsink/udpsink.cpp +++ b/plugins/channelrx/udpsink/udpsink.cpp @@ -404,6 +404,9 @@ void UDPSink::webapiUpdateChannelSettings( if (settings.m_channelMarker && channelSettingsKeys.contains("channelMarker")) { settings.m_channelMarker->updateFrom(channelSettingsKeys, response.getUdpSinkSettings()->getChannelMarker()); } + if (settings.m_rollupState && channelSettingsKeys.contains("rollupState")) { + settings.m_rollupState->updateFrom(channelSettingsKeys, response.getUdpSinkSettings()->getRollupState()); + } } int UDPSink::webapiReportGet( @@ -490,6 +493,20 @@ void UDPSink::webapiFormatChannelSettings(SWGSDRangel::SWGChannelSettings& respo response.getUdpSinkSettings()->setChannelMarker(swgChannelMarker); } } + + if (settings.m_rollupState) + { + if (response.getUdpSinkSettings()->getRollupState()) + { + settings.m_rollupState->formatTo(response.getUdpSinkSettings()->getRollupState()); + } + else + { + SWGSDRangel::SWGRollupState *swgRollupState = new SWGSDRangel::SWGRollupState(); + settings.m_rollupState->formatTo(swgRollupState); + response.getUdpSinkSettings()->setRollupState(swgRollupState); + } + } } void UDPSink::webapiFormatChannelReport(SWGSDRangel::SWGChannelReport& response) @@ -637,6 +654,13 @@ void UDPSink::webapiFormatChannelSettings( settings.m_channelMarker->formatTo(swgChannelMarker); swgUDPSinkSettings->setChannelMarker(swgChannelMarker); } + + if (settings.m_rollupState && (channelSettingsKeys.contains("rollupState") || force)) + { + SWGSDRangel::SWGRollupState *swgRollupState = new SWGSDRangel::SWGRollupState(); + settings.m_rollupState->formatTo(swgRollupState); + swgUDPSinkSettings->setRollupState(swgRollupState); + } } void UDPSink::networkManagerFinished(QNetworkReply *reply) diff --git a/plugins/channelrx/udpsink/udpsinkgui.cpp b/plugins/channelrx/udpsink/udpsinkgui.cpp index ec11e5907..f64f517c3 100644 --- a/plugins/channelrx/udpsink/udpsinkgui.cpp +++ b/plugins/channelrx/udpsink/udpsinkgui.cpp @@ -184,6 +184,7 @@ UDPSinkGUI::UDPSinkGUI(PluginAPI* pluginAPI, DeviceUISet *deviceUISet, BasebandS m_settings.setChannelMarker(&m_channelMarker); m_settings.setSpectrumGUI(ui->spectrumGUI); + m_settings.setRollupState(&m_rollupState); m_deviceUISet->addChannelMarker(&m_channelMarker); m_deviceUISet->addRollupWidget(this); @@ -257,7 +258,7 @@ void UDPSinkGUI::displaySettings() displayStreamIndex(); - restoreState(m_settings.m_rollupState); + restoreState(m_rollupState); blockApplySettings(false); ui->glSpectrum->setSampleRate(m_settings.m_outputSampleRate); @@ -589,7 +590,7 @@ void UDPSinkGUI::onWidgetRolled(QWidget* widget, bool rollDown) m_udpSink->enableSpectrum(rollDown); } - m_settings.m_rollupState = saveState(); + saveState(m_rollupState); applySettings(); } diff --git a/plugins/channelrx/udpsink/udpsinkgui.h b/plugins/channelrx/udpsink/udpsinkgui.h index d1d961fb8..dd2fd6828 100644 --- a/plugins/channelrx/udpsink/udpsinkgui.h +++ b/plugins/channelrx/udpsink/udpsinkgui.h @@ -24,6 +24,7 @@ #include "dsp/channelmarker.h" #include "dsp/movingaverage.h" #include "util/messagequeue.h" +#include "settings/rollupstate.h" #include "udpsink.h" #include "udpsinksettings.h" @@ -60,6 +61,7 @@ private: UDPSink* m_udpSink; UDPSinkSettings m_settings; ChannelMarker m_channelMarker; + RollupState m_rollupState; MovingAverage m_channelPowerAvg; MovingAverage m_inPowerAvg; uint32_t m_tickCount; diff --git a/plugins/channelrx/udpsink/udpsinkplugin.cpp b/plugins/channelrx/udpsink/udpsinkplugin.cpp index 38776d940..6717aa21f 100644 --- a/plugins/channelrx/udpsink/udpsinkplugin.cpp +++ b/plugins/channelrx/udpsink/udpsinkplugin.cpp @@ -29,7 +29,7 @@ const PluginDescriptor UDPSinkPlugin::m_pluginDescriptor = { UDPSink::m_channelId, QStringLiteral("UDP Channel Sink"), - QStringLiteral("6.3.3"), + QStringLiteral("6.18.0"), QStringLiteral("(c) Edouard Griffiths, F4EXB"), QStringLiteral("https://github.com/f4exb/sdrangel"), true, diff --git a/plugins/channelrx/udpsink/udpsinksettings.cpp b/plugins/channelrx/udpsink/udpsinksettings.cpp index c27083aa3..169fc129f 100644 --- a/plugins/channelrx/udpsink/udpsinksettings.cpp +++ b/plugins/channelrx/udpsink/udpsinksettings.cpp @@ -23,8 +23,9 @@ #include "udpsinksettings.h" UDPSinkSettings::UDPSinkSettings() : - m_channelMarker(0), - m_spectrumGUI(0) + m_channelMarker(nullptr), + m_spectrumGUI(nullptr), + m_rollupState(nullptr) { resetToDefaults(); } @@ -93,7 +94,10 @@ QByteArray UDPSinkSettings::serialize() const s.writeU32(26, m_reverseAPIDeviceIndex); s.writeU32(27, m_reverseAPIChannelIndex); s.writeS32(28, m_streamIndex); - s.writeBlob(29, m_rollupState); + + if (m_rollupState) { + s.writeBlob(29, m_rollupState->serialize()); + } return s.final(); @@ -116,7 +120,8 @@ bool UDPSinkSettings::deserialize(const QByteArray& data) int32_t s32tmp; quint32 u32tmp; - if (m_channelMarker) { + if (m_channelMarker) + { d.readBlob(6, &bytetmp); m_channelMarker->deserialize(bytetmp); } @@ -135,7 +140,8 @@ bool UDPSinkSettings::deserialize(const QByteArray& data) d.readReal(4, &m_outputSampleRate, 48000.0); d.readReal(5, &m_rfBandwidth, 32000.0); - if (m_spectrumGUI) { + if (m_spectrumGUI) + { d.readBlob(7, &bytetmp); m_spectrumGUI->deserialize(bytetmp); } @@ -184,7 +190,12 @@ bool UDPSinkSettings::deserialize(const QByteArray& data) d.readU32(27, &u32tmp, 0); m_reverseAPIChannelIndex = u32tmp > 99 ? 99 : u32tmp; d.readS32(28, &m_streamIndex, 0); - d.readBlob(29, &m_rollupState); + + if (m_rollupState) + { + d.readBlob(29, &bytetmp); + m_rollupState->deserialize(bytetmp); + } return true; } diff --git a/plugins/channelrx/udpsink/udpsinksettings.h b/plugins/channelrx/udpsink/udpsinksettings.h index 811a544f1..b24e23385 100644 --- a/plugins/channelrx/udpsink/udpsinksettings.h +++ b/plugins/channelrx/udpsink/udpsinksettings.h @@ -72,11 +72,12 @@ struct UDPSinkSettings Serializable *m_channelMarker; Serializable *m_spectrumGUI; - QByteArray m_rollupState; + Serializable *m_rollupState; UDPSinkSettings(); void resetToDefaults(); void setChannelMarker(Serializable *channelMarker) { m_channelMarker = channelMarker; } + void setRollupState(Serializable *rollupState) { m_rollupState = rollupState; } void setSpectrumGUI(Serializable *spectrumGUI) { m_spectrumGUI = spectrumGUI; } QByteArray serialize() const; bool deserialize(const QByteArray& data); diff --git a/plugins/channeltx/filesource/filesource.cpp b/plugins/channeltx/filesource/filesource.cpp index b446dc2b8..af031b1b5 100644 --- a/plugins/channeltx/filesource/filesource.cpp +++ b/plugins/channeltx/filesource/filesource.cpp @@ -377,6 +377,9 @@ void FileSource::webapiUpdateChannelSettings( if (settings.m_channelMarker && channelSettingsKeys.contains("channelMarker")) { settings.m_channelMarker->updateFrom(channelSettingsKeys, response.getFileSourceSettings()->getChannelMarker()); } + if (settings.m_rollupState && channelSettingsKeys.contains("rollupState")) { + settings.m_rollupState->updateFrom(channelSettingsKeys, response.getFileSourceSettings()->getRollupState()); + } } int FileSource::webapiReportGet( @@ -481,6 +484,20 @@ void FileSource::webapiFormatChannelSettings(SWGSDRangel::SWGChannelSettings& re response.getFileSourceSettings()->setChannelMarker(swgChannelMarker); } } + + if (settings.m_rollupState) + { + if (response.getFileSourceSettings()->getRollupState()) + { + settings.m_rollupState->formatTo(response.getFileSourceSettings()->getRollupState()); + } + else + { + SWGSDRangel::SWGRollupState *swgRollupState = new SWGSDRangel::SWGRollupState(); + settings.m_rollupState->formatTo(swgRollupState); + response.getFileSourceSettings()->setRollupState(swgRollupState); + } + } } void FileSource::webapiFormatChannelReport(SWGSDRangel::SWGChannelReport& response) @@ -609,6 +626,13 @@ void FileSource::webapiFormatChannelSettings( settings.m_channelMarker->formatTo(swgChannelMarker); swgFileSourceSettings->setChannelMarker(swgChannelMarker); } + + if (settings.m_rollupState && (channelSettingsKeys.contains("rollupState") || force)) + { + SWGSDRangel::SWGRollupState *swgRollupState = new SWGSDRangel::SWGRollupState(); + settings.m_rollupState->formatTo(swgRollupState); + swgFileSourceSettings->setRollupState(swgRollupState); + } } void FileSource::networkManagerFinished(QNetworkReply *reply) diff --git a/plugins/channeltx/filesource/filesourcegui.cpp b/plugins/channeltx/filesource/filesourcegui.cpp index fdffc867a..fd2cf66f6 100644 --- a/plugins/channeltx/filesource/filesourcegui.cpp +++ b/plugins/channeltx/filesource/filesourcegui.cpp @@ -202,6 +202,7 @@ FileSourceGUI::FileSourceGUI(PluginAPI* pluginAPI, DeviceUISet *deviceUISet, Bas m_channelMarker.setVisible(true); // activate signal on the last setting only m_settings.setChannelMarker(&m_channelMarker); + m_settings.setRollupState(&m_rollupState); m_deviceUISet->addChannelMarker(&m_channelMarker); m_deviceUISet->addRollupWidget(this); @@ -309,7 +310,7 @@ void FileSourceGUI::displaySettings() ui->gainText->setText(tr("%1 dB").arg(m_settings.m_gainDB)); ui->interpolationFactor->setCurrentIndex(m_settings.m_log2Interp); applyInterpolation(); - restoreState(m_settings.m_rollupState); + restoreState(m_rollupState); blockApplySettings(false); } @@ -361,7 +362,7 @@ void FileSourceGUI::onWidgetRolled(QWidget* widget, bool rollDown) (void) widget; (void) rollDown; - m_settings.m_rollupState = saveState(); + saveState(m_rollupState); applySettings(); } diff --git a/plugins/channeltx/filesource/filesourcegui.h b/plugins/channeltx/filesource/filesourcegui.h index fd051200e..2e03655ca 100644 --- a/plugins/channeltx/filesource/filesourcegui.h +++ b/plugins/channeltx/filesource/filesourcegui.h @@ -21,6 +21,7 @@ #include "dsp/channelmarker.h" #include "channel/channelgui.h" #include "util/messagequeue.h" +#include "settings/rollupstate.h" #include "filesourcesettings.h" @@ -53,6 +54,7 @@ private: PluginAPI* m_pluginAPI; DeviceUISet* m_deviceUISet; ChannelMarker m_channelMarker; + RollupState m_rollupState; FileSourceSettings m_settings; int m_sampleRate; double m_shiftFrequencyFactor; //!< Channel frequency shift factor diff --git a/plugins/channeltx/filesource/filesourceplugin.cpp b/plugins/channeltx/filesource/filesourceplugin.cpp index 9435a863c..b6a771bad 100644 --- a/plugins/channeltx/filesource/filesourceplugin.cpp +++ b/plugins/channeltx/filesource/filesourceplugin.cpp @@ -28,7 +28,7 @@ const PluginDescriptor FileSourcePlugin::m_pluginDescriptor = { FileSource::m_channelId, QStringLiteral("File channel source"), - QStringLiteral("6.16.2"), + QStringLiteral("6.18.0"), QStringLiteral("(c) Edouard Griffiths, F4EXB"), QStringLiteral("https://github.com/f4exb/sdrangel"), true, diff --git a/plugins/channeltx/filesource/filesourcesettings.cpp b/plugins/channeltx/filesource/filesourcesettings.cpp index 7ab8ece41..019e4bd1e 100644 --- a/plugins/channeltx/filesource/filesourcesettings.cpp +++ b/plugins/channeltx/filesource/filesourcesettings.cpp @@ -38,6 +38,7 @@ void FileSourceSettings::resetToDefaults() m_rgbColor = QColor(140, 4, 4).rgb(); m_title = "File source"; m_channelMarker = nullptr; + m_rollupState = nullptr; m_streamIndex = 0; m_useReverseAPI = false; m_reverseAPIAddress = "127.0.0.1"; @@ -62,7 +63,14 @@ QByteArray FileSourceSettings::serialize() const s.writeU32(11, m_reverseAPIDeviceIndex); s.writeU32(12, m_reverseAPIChannelIndex); s.writeS32(13, m_streamIndex); - s.writeBlob(14, m_rollupState); + + if (m_rollupState) { + s.writeBlob(14, m_rollupState->serialize()); + } + + if (m_channelMarker) { + s.writeBlob(15, m_channelMarker->serialize()); + } return s.final(); } @@ -82,6 +90,7 @@ bool FileSourceSettings::deserialize(const QByteArray& data) uint32_t tmp; int itmp; QString strtmp; + QByteArray bytetmp; d.readString(1, &m_fileName, "test.sdriq"); d.readBool(2, &m_loop, false); @@ -107,7 +116,18 @@ bool FileSourceSettings::deserialize(const QByteArray& data) d.readU32(12, &tmp, 0); m_reverseAPIChannelIndex = tmp > 99 ? 99 : tmp; d.readS32(13, &m_streamIndex, 0); - d.readBlob(14, &m_rollupState); + + if (m_rollupState) + { + d.readBlob(14, &bytetmp); + m_rollupState->deserialize(bytetmp); + } + + if (m_channelMarker) + { + d.readBlob(15, &bytetmp); + m_channelMarker->deserialize(bytetmp); + } return true; } diff --git a/plugins/channeltx/filesource/filesourcesettings.h b/plugins/channeltx/filesource/filesourcesettings.h index ab77fc161..8225ce4c9 100644 --- a/plugins/channeltx/filesource/filesourcesettings.h +++ b/plugins/channeltx/filesource/filesourcesettings.h @@ -40,11 +40,12 @@ struct FileSourceSettings uint16_t m_reverseAPIChannelIndex; Serializable *m_channelMarker; - QByteArray m_rollupState; + Serializable *m_rollupState; FileSourceSettings(); void resetToDefaults(); void setChannelMarker(Serializable *channelMarker) { m_channelMarker = channelMarker; } + void setRollupState(Serializable *rollupState) { m_rollupState = rollupState; } QByteArray serialize() const; bool deserialize(const QByteArray& data); }; diff --git a/plugins/channeltx/localsource/localsource.cpp b/plugins/channeltx/localsource/localsource.cpp index c89b0cddd..6cb3881ab 100644 --- a/plugins/channeltx/localsource/localsource.cpp +++ b/plugins/channeltx/localsource/localsource.cpp @@ -418,6 +418,9 @@ void LocalSource::webapiUpdateChannelSettings( if (settings.m_channelMarker && channelSettingsKeys.contains("channelMarker")) { settings.m_channelMarker->updateFrom(channelSettingsKeys, response.getLocalSourceSettings()->getChannelMarker()); } + if (settings.m_rollupState && channelSettingsKeys.contains("rollupState")) { + settings.m_rollupState->updateFrom(channelSettingsKeys, response.getLocalSourceSettings()->getRollupState()); + } } void LocalSource::webapiFormatChannelSettings(SWGSDRangel::SWGChannelSettings& response, const LocalSourceSettings& settings) @@ -459,6 +462,20 @@ void LocalSource::webapiFormatChannelSettings(SWGSDRangel::SWGChannelSettings& r response.getLocalSourceSettings()->setChannelMarker(swgChannelMarker); } } + + if (settings.m_rollupState) + { + if (response.getLocalSourceSettings()->getRollupState()) + { + settings.m_rollupState->formatTo(response.getLocalSourceSettings()->getRollupState()); + } + else + { + SWGSDRangel::SWGRollupState *swgRollupState = new SWGSDRangel::SWGRollupState(); + settings.m_rollupState->formatTo(swgRollupState); + response.getLocalSourceSettings()->setRollupState(swgRollupState); + } + } } void LocalSource::webapiReverseSendSettings(QList& channelSettingsKeys, const LocalSourceSettings& settings, bool force) @@ -552,6 +569,13 @@ void LocalSource::webapiFormatChannelSettings( settings.m_channelMarker->formatTo(swgChannelMarker); swgLocalSourceSettings->setChannelMarker(swgChannelMarker); } + + if (settings.m_rollupState && (channelSettingsKeys.contains("rollupState") || force)) + { + SWGSDRangel::SWGRollupState *swgRollupState = new SWGSDRangel::SWGRollupState(); + settings.m_rollupState->formatTo(swgRollupState); + swgLocalSourceSettings->setRollupState(swgRollupState); + } } void LocalSource::networkManagerFinished(QNetworkReply *reply) diff --git a/plugins/channeltx/localsource/localsourcegui.cpp b/plugins/channeltx/localsource/localsourcegui.cpp index f587e8790..f6a7a7fd1 100644 --- a/plugins/channeltx/localsource/localsourcegui.cpp +++ b/plugins/channeltx/localsource/localsourcegui.cpp @@ -113,6 +113,7 @@ LocalSourceGUI::LocalSourceGUI(PluginAPI* pluginAPI, DeviceUISet *deviceUISet, B m_channelMarker.setVisible(true); // activate signal on the last setting only m_settings.setChannelMarker(&m_channelMarker); + m_settings.setRollupState(&m_rollupState); m_deviceUISet->addChannelMarker(&m_channelMarker); m_deviceUISet->addRollupWidget(this); @@ -163,7 +164,7 @@ void LocalSourceGUI::displaySettings() ui->interpolationFactor->setCurrentIndex(m_settings.m_log2Interp); ui->localDevicePlay->setChecked(m_settings.m_play); applyInterpolation(); - restoreState(m_settings.m_rollupState); + restoreState(m_rollupState); blockApplySettings(false); } @@ -227,7 +228,7 @@ void LocalSourceGUI::onWidgetRolled(QWidget* widget, bool rollDown) (void) widget; (void) rollDown; - m_settings.m_rollupState = saveState(); + saveState(m_rollupState); applySettings(); } diff --git a/plugins/channeltx/localsource/localsourcegui.h b/plugins/channeltx/localsource/localsourcegui.h index 8eae13632..c106998ac 100644 --- a/plugins/channeltx/localsource/localsourcegui.h +++ b/plugins/channeltx/localsource/localsourcegui.h @@ -25,6 +25,7 @@ #include "dsp/channelmarker.h" #include "channel/channelgui.h" #include "util/messagequeue.h" +#include "settings/rollupstate.h" #include "localsourcesettings.h" @@ -53,6 +54,7 @@ private: PluginAPI* m_pluginAPI; DeviceUISet* m_deviceUISet; ChannelMarker m_channelMarker; + RollupState m_rollupState; LocalSourceSettings m_settings; int m_basebandSampleRate; quint64 m_deviceCenterFrequency; //!< Center frequency in device diff --git a/plugins/channeltx/localsource/localsourceplugin.cpp b/plugins/channeltx/localsource/localsourceplugin.cpp index edcc12254..478949de2 100644 --- a/plugins/channeltx/localsource/localsourceplugin.cpp +++ b/plugins/channeltx/localsource/localsourceplugin.cpp @@ -30,7 +30,7 @@ const PluginDescriptor LocalSourcePlugin::m_pluginDescriptor = { LocalSource::m_channelId, QStringLiteral("Local channel source"), - QStringLiteral("6.3.3"), + QStringLiteral("6.18.0"), QStringLiteral("(c) Edouard Griffiths, F4EXB"), QStringLiteral("https://github.com/f4exb/sdrangel"), true, diff --git a/plugins/channeltx/localsource/localsourcesettings.cpp b/plugins/channeltx/localsource/localsourcesettings.cpp index 0a91d899c..a5d7dea51 100644 --- a/plugins/channeltx/localsource/localsourcesettings.cpp +++ b/plugins/channeltx/localsource/localsourcesettings.cpp @@ -36,6 +36,7 @@ void LocalSourceSettings::resetToDefaults() m_log2Interp = 0; m_filterChainHash = 0; m_channelMarker = nullptr; + m_rollupState = nullptr; m_play = false; m_streamIndex = 0; m_useReverseAPI = false; @@ -59,7 +60,14 @@ QByteArray LocalSourceSettings::serialize() const s.writeU32(12, m_log2Interp); s.writeU32(13, m_filterChainHash); s.writeS32(14, m_streamIndex); - s.writeBlob(15, m_rollupState); + + if (m_rollupState) { + s.writeBlob(15, m_rollupState->serialize()); + } + + if (m_channelMarker) { + s.writeBlob(16, m_channelMarker->serialize()); + } return s.final(); } @@ -78,6 +86,7 @@ bool LocalSourceSettings::deserialize(const QByteArray& data) { uint32_t tmp; QString strtmp; + QByteArray bytetmp; d.readU32(1, &m_localDeviceIndex, 0); d.readU32(5, &m_rgbColor, QColor(0, 255, 255).rgb()); @@ -100,7 +109,18 @@ bool LocalSourceSettings::deserialize(const QByteArray& data) m_log2Interp = tmp > 6 ? 6 : tmp; d.readU32(13, &m_filterChainHash, 0); d.readS32(14, &m_streamIndex, 0); - d.readBlob(15, &m_rollupState); + + if (m_rollupState) + { + d.readBlob(15, &bytetmp); + m_rollupState->deserialize(bytetmp); + } + + if (m_channelMarker) + { + d.readBlob(16, &bytetmp); + m_channelMarker->deserialize(bytetmp); + } return true; } diff --git a/plugins/channeltx/localsource/localsourcesettings.h b/plugins/channeltx/localsource/localsourcesettings.h index fbd8a1b2c..81740e0bd 100644 --- a/plugins/channeltx/localsource/localsourcesettings.h +++ b/plugins/channeltx/localsource/localsourcesettings.h @@ -39,11 +39,12 @@ struct LocalSourceSettings uint16_t m_reverseAPIChannelIndex; Serializable *m_channelMarker; - QByteArray m_rollupState; + Serializable *m_rollupState; LocalSourceSettings(); void resetToDefaults(); void setChannelMarker(Serializable *channelMarker) { m_channelMarker = channelMarker; } + void setRollupState(Serializable *rollupState) { m_rollupState = rollupState; } QByteArray serialize() const; bool deserialize(const QByteArray& data); }; diff --git a/plugins/channeltx/mod802.15.4/ieee_802_15_4_mod.cpp b/plugins/channeltx/mod802.15.4/ieee_802_15_4_mod.cpp index bf902a4be..f60be43e4 100644 --- a/plugins/channeltx/mod802.15.4/ieee_802_15_4_mod.cpp +++ b/plugins/channeltx/mod802.15.4/ieee_802_15_4_mod.cpp @@ -557,6 +557,9 @@ void IEEE_802_15_4_Mod::webapiUpdateChannelSettings( if (settings.m_channelMarker && channelSettingsKeys.contains("channelMarker")) { settings.m_channelMarker->updateFrom(channelSettingsKeys, response.getIeee802154ModSettings()->getChannelMarker()); } + if (settings.m_rollupState && channelSettingsKeys.contains("rollupState")) { + settings.m_rollupState->updateFrom(channelSettingsKeys, response.getIeee802154ModSettings()->getRollupState()); + } } int IEEE_802_15_4_Mod::webapiReportGet( @@ -685,6 +688,20 @@ void IEEE_802_15_4_Mod::webapiFormatChannelSettings(SWGSDRangel::SWGChannelSetti response.getIeee802154ModSettings()->setChannelMarker(swgChannelMarker); } } + + if (settings.m_rollupState) + { + if (response.getIeee802154ModSettings()->getRollupState()) + { + settings.m_rollupState->formatTo(response.getIeee802154ModSettings()->getRollupState()); + } + else + { + SWGSDRangel::SWGRollupState *swgRollupState = new SWGSDRangel::SWGRollupState(); + settings.m_rollupState->formatTo(swgRollupState); + response.getIeee802154ModSettings()->setRollupState(swgRollupState); + } + } } void IEEE_802_15_4_Mod::webapiFormatChannelReport(SWGSDRangel::SWGChannelReport& response) @@ -871,6 +888,13 @@ void IEEE_802_15_4_Mod::webapiFormatChannelSettings( settings.m_channelMarker->formatTo(swgChannelMarker); swgIEEE_802_15_4_ModSettings->setChannelMarker(swgChannelMarker); } + + if (settings.m_rollupState && (channelSettingsKeys.contains("rollupState") || force)) + { + SWGSDRangel::SWGRollupState *swgRollupState = new SWGSDRangel::SWGRollupState(); + settings.m_rollupState->formatTo(swgRollupState); + swgIEEE_802_15_4_ModSettings->setRollupState(swgRollupState); + } } void IEEE_802_15_4_Mod::networkManagerFinished(QNetworkReply *reply) diff --git a/plugins/channeltx/mod802.15.4/ieee_802_15_4_modgui.cpp b/plugins/channeltx/mod802.15.4/ieee_802_15_4_modgui.cpp index 579d0dbd6..773a8fcf1 100644 --- a/plugins/channeltx/mod802.15.4/ieee_802_15_4_modgui.cpp +++ b/plugins/channeltx/mod802.15.4/ieee_802_15_4_modgui.cpp @@ -321,7 +321,7 @@ void IEEE_802_15_4_ModGUI::onWidgetRolled(QWidget* widget, bool rollDown) (void) widget; (void) rollDown; - m_settings.m_rollupState = saveState(); + saveState(m_rollupState); applySettings(); } @@ -461,6 +461,7 @@ IEEE_802_15_4_ModGUI::IEEE_802_15_4_ModGUI(PluginAPI* pluginAPI, DeviceUISet *de m_IEEE_802_15_4_Mod->setLevelMeter(ui->volumeMeter); m_settings.setChannelMarker(&m_channelMarker); + m_settings.setRollupState(&m_rollupState); ui->spectrumGUI->setBuddies(m_spectrumVis, ui->glSpectrum); @@ -566,7 +567,7 @@ void IEEE_802_15_4_ModGUI::displaySettings() ui->udpAddress->setText(m_settings.m_udpAddress); ui->udpPort->setText(QString::number(m_settings.m_udpPort)); - restoreState(m_settings.m_rollupState); + restoreState(m_rollupState); blockApplySettings(false); } diff --git a/plugins/channeltx/mod802.15.4/ieee_802_15_4_modgui.h b/plugins/channeltx/mod802.15.4/ieee_802_15_4_modgui.h index 4b24d2b94..041928bc4 100644 --- a/plugins/channeltx/mod802.15.4/ieee_802_15_4_modgui.h +++ b/plugins/channeltx/mod802.15.4/ieee_802_15_4_modgui.h @@ -23,6 +23,7 @@ #include "dsp/channelmarker.h" #include "util/movingaverage.h" #include "util/messagequeue.h" +#include "settings/rollupstate.h" #include "ieee_802_15_4_mod.h" #include "ieee_802_15_4_modsettings.h" @@ -64,6 +65,7 @@ private: PluginAPI* m_pluginAPI; DeviceUISet* m_deviceUISet; ChannelMarker m_channelMarker; + RollupState m_rollupState; IEEE_802_15_4_ModSettings m_settings; bool m_doApplySettings; SpectrumVis* m_spectrumVis; diff --git a/plugins/channeltx/mod802.15.4/ieee_802_15_4_modplugin.cpp b/plugins/channeltx/mod802.15.4/ieee_802_15_4_modplugin.cpp index 0a3394854..7cf9491ee 100644 --- a/plugins/channeltx/mod802.15.4/ieee_802_15_4_modplugin.cpp +++ b/plugins/channeltx/mod802.15.4/ieee_802_15_4_modplugin.cpp @@ -29,7 +29,7 @@ const PluginDescriptor IEEE_802_15_4_ModPlugin::m_pluginDescriptor = { IEEE_802_15_4_Mod::m_channelId, QStringLiteral("802.15.4 Modulator"), - QStringLiteral("6.17.4"), + QStringLiteral("6.18.0"), QStringLiteral("(c) Jon Beniston, M7RCE"), QStringLiteral("https://github.com/f4exb/sdrangel"), true, diff --git a/plugins/channeltx/mod802.15.4/ieee_802_15_4_modsettings.cpp b/plugins/channeltx/mod802.15.4/ieee_802_15_4_modsettings.cpp index b3707a4ae..3540274ab 100644 --- a/plugins/channeltx/mod802.15.4/ieee_802_15_4_modsettings.cpp +++ b/plugins/channeltx/mod802.15.4/ieee_802_15_4_modsettings.cpp @@ -25,7 +25,9 @@ #include "ieee_802_15_4_modsettings.h" #include "ieee_802_15_4_macframe.h" -IEEE_802_15_4_ModSettings::IEEE_802_15_4_ModSettings() +IEEE_802_15_4_ModSettings::IEEE_802_15_4_ModSettings() : + m_channelMarker(nullptr), + m_rollupState(nullptr) { resetToDefaults(); } @@ -172,9 +174,11 @@ QByteArray IEEE_802_15_4_ModSettings::serialize() const s.writeU32(18, m_rgbColor); s.writeString(19, m_title); + if (m_channelMarker) { s.writeBlob(20, m_channelMarker->serialize()); } + s.writeS32(21, m_streamIndex); s.writeBool(22, m_useReverseAPI); s.writeString(23, m_reverseAPIAddress); @@ -193,7 +197,10 @@ QByteArray IEEE_802_15_4_ModSettings::serialize() const s.writeString(35, m_udpAddress); s.writeU32(36, m_udpPort); s.writeBool(37, m_udpBytesFormat); - s.writeBlob(38, m_rollupState); + + if (m_rollupState) { + s.writeBlob(38, m_rollupState->serialize()); + } return s.final(); } @@ -232,30 +239,30 @@ bool IEEE_802_15_4_ModSettings::deserialize(const QByteArray& data) d.readBool(15, &m_bbNoise, false); d.readBool(16, &m_writeToFile, false); d.readString(17, &m_data, ""); - d.readU32(18, &m_rgbColor); d.readString(19, &m_title, "802.15.4 Modulator"); - if (m_channelMarker) { + if (m_channelMarker) + { d.readBlob(20, &bytetmp); m_channelMarker->deserialize(bytetmp); } d.readS32(21, &m_streamIndex, 0); - d.readBool(22, &m_useReverseAPI, false); d.readString(23, &m_reverseAPIAddress, "127.0.0.1"); d.readU32(24, &utmp, 0); + if ((utmp > 1023) && (utmp < 65535)) { m_reverseAPIPort = utmp; } else { m_reverseAPIPort = 8888; } + d.readU32(25, &utmp, 0); m_reverseAPIDeviceIndex = utmp > 99 ? 99 : utmp; d.readU32(26, &utmp, 0); m_reverseAPIChannelIndex = utmp > 99 ? 99 : utmp; - d.readBool(27, &m_scramble, false); d.readS32(28, &m_polynomial, 0x108); d.readS32(29, (qint32 *)&m_pulseShaping, RC); @@ -266,13 +273,20 @@ bool IEEE_802_15_4_ModSettings::deserialize(const QByteArray& data) d.readBool(34, &m_udpEnabled); d.readString(35, &m_udpAddress, "127.0.0.1"); d.readU32(36, &utmp); + if ((utmp > 1023) && (utmp < 65535)) { m_udpPort = utmp; } else { m_udpPort = 9998; } + d.readBool(37, &m_udpBytesFormat); - d.readBlob(38, &m_rollupState); + + if (m_rollupState) + { + d.readBlob(38, &bytetmp); + m_rollupState->deserialize(bytetmp); + } return true; } diff --git a/plugins/channeltx/mod802.15.4/ieee_802_15_4_modsettings.h b/plugins/channeltx/mod802.15.4/ieee_802_15_4_modsettings.h index f0c1bced9..367570869 100644 --- a/plugins/channeltx/mod802.15.4/ieee_802_15_4_modsettings.h +++ b/plugins/channeltx/mod802.15.4/ieee_802_15_4_modsettings.h @@ -76,12 +76,13 @@ struct IEEE_802_15_4_ModSettings bool m_udpBytesFormat; //!< true for bytes payload QString m_udpAddress; uint16_t m_udpPort; - QByteArray m_rollupState; + Serializable *m_rollupState; static const int m_udpBufferSize = 100000; IEEE_802_15_4_ModSettings(); void resetToDefaults(); void setChannelMarker(Serializable *channelMarker) { m_channelMarker = channelMarker; } + void setRollupState(Serializable *rollupState) { m_rollupState = rollupState; } QByteArray serialize() const; bool deserialize(const QByteArray& data); bool setPHY(QString phy); diff --git a/plugins/channeltx/modais/aismod.cpp b/plugins/channeltx/modais/aismod.cpp index d4fb60ecd..70b9bdb8b 100644 --- a/plugins/channeltx/modais/aismod.cpp +++ b/plugins/channeltx/modais/aismod.cpp @@ -657,6 +657,9 @@ void AISMod::webapiUpdateChannelSettings( if (settings.m_channelMarker && channelSettingsKeys.contains("channelMarker")) { settings.m_channelMarker->updateFrom(channelSettingsKeys, response.getAisModSettings()->getChannelMarker()); } + if (settings.m_rollupState && channelSettingsKeys.contains("rollupState")) { + settings.m_rollupState->updateFrom(channelSettingsKeys, response.getAisModSettings()->getRollupState()); + } } int AISMod::webapiReportGet( @@ -796,6 +799,20 @@ void AISMod::webapiFormatChannelSettings(SWGSDRangel::SWGChannelSettings& respon response.getAisModSettings()->setChannelMarker(swgChannelMarker); } } + + if (settings.m_rollupState) + { + if (response.getAisModSettings()->getRollupState()) + { + settings.m_rollupState->formatTo(response.getAisModSettings()->getRollupState()); + } + else + { + SWGSDRangel::SWGRollupState *swgRollupState = new SWGSDRangel::SWGRollupState(); + settings.m_rollupState->formatTo(swgRollupState); + response.getAisModSettings()->setRollupState(swgRollupState); + } + } } void AISMod::webapiFormatChannelReport(SWGSDRangel::SWGChannelReport& response) @@ -967,6 +984,13 @@ void AISMod::webapiFormatChannelSettings( settings.m_channelMarker->formatTo(swgChannelMarker); swgAISModSettings->setChannelMarker(swgChannelMarker); } + + if (settings.m_rollupState && (channelSettingsKeys.contains("rollupState") || force)) + { + SWGSDRangel::SWGRollupState *swgRollupState = new SWGSDRangel::SWGRollupState(); + settings.m_rollupState->formatTo(swgRollupState); + swgAISModSettings->setRollupState(swgRollupState); + } } void AISMod::networkManagerFinished(QNetworkReply *reply) diff --git a/plugins/channeltx/modais/aismodgui.cpp b/plugins/channeltx/modais/aismodgui.cpp index fa14e9e6c..bc616e74e 100644 --- a/plugins/channeltx/modais/aismodgui.cpp +++ b/plugins/channeltx/modais/aismodgui.cpp @@ -331,7 +331,7 @@ void AISModGUI::onWidgetRolled(QWidget* widget, bool rollDown) (void) widget; (void) rollDown; - m_settings.m_rollupState = saveState(); + saveState(m_rollupState); applySettings(); } @@ -470,6 +470,7 @@ AISModGUI::AISModGUI(PluginAPI* pluginAPI, DeviceUISet *deviceUISet, BasebandSam m_aisMod->setLevelMeter(ui->volumeMeter); m_settings.setChannelMarker(&m_channelMarker); + m_settings.setRollupState(&m_rollupState); ui->spectrumGUI->setBuddies(m_spectrumVis, ui->glSpectrum); @@ -551,7 +552,7 @@ void AISModGUI::displaySettings() ui->heading->setValue(m_settings.m_heading); ui->message->setText(m_settings.m_data); - restoreState(m_settings.m_rollupState); + restoreState(m_rollupState); blockApplySettings(false); } diff --git a/plugins/channeltx/modais/aismodgui.h b/plugins/channeltx/modais/aismodgui.h index 511947146..86081b287 100644 --- a/plugins/channeltx/modais/aismodgui.h +++ b/plugins/channeltx/modais/aismodgui.h @@ -23,6 +23,7 @@ #include "dsp/channelmarker.h" #include "util/movingaverage.h" #include "util/messagequeue.h" +#include "settings/rollupstate.h" #include "aismod.h" #include "aismodsettings.h" @@ -57,6 +58,7 @@ private: PluginAPI* m_pluginAPI; DeviceUISet* m_deviceUISet; ChannelMarker m_channelMarker; + RollupState m_rollupState; AISModSettings m_settings; bool m_doApplySettings; SpectrumVis* m_spectrumVis; diff --git a/plugins/channeltx/modais/aismodplugin.cpp b/plugins/channeltx/modais/aismodplugin.cpp index cce5f072b..a5bb202e5 100644 --- a/plugins/channeltx/modais/aismodplugin.cpp +++ b/plugins/channeltx/modais/aismodplugin.cpp @@ -29,7 +29,7 @@ const PluginDescriptor AISModPlugin::m_pluginDescriptor = { AISMod::m_channelId, QStringLiteral("AIS Modulator"), - QStringLiteral("6.17.4"), + QStringLiteral("6.18.0"), QStringLiteral("(c) Jon Beniston, M7RCE"), QStringLiteral("https://github.com/f4exb/sdrangel"), true, diff --git a/plugins/channeltx/modais/aismodsettings.cpp b/plugins/channeltx/modais/aismodsettings.cpp index 93ccd3835..91d71ca44 100644 --- a/plugins/channeltx/modais/aismodsettings.cpp +++ b/plugins/channeltx/modais/aismodsettings.cpp @@ -24,7 +24,9 @@ #include "settings/serializable.h" #include "aismodsettings.h" -AISModSettings::AISModSettings() +AISModSettings::AISModSettings() : + m_channelMarker(nullptr), + m_rollupState(nullptr) { resetToDefaults(); } @@ -159,9 +161,11 @@ QByteArray AISModSettings::serialize() const s.writeS32(27, m_symbolSpan); s.writeU32(28, m_rgbColor); s.writeString(29, m_title); + if (m_channelMarker) { s.writeBlob(30, m_channelMarker->serialize()); } + s.writeS32(31, m_streamIndex); s.writeBool(32, m_useReverseAPI); s.writeString(33, m_reverseAPIAddress); @@ -171,7 +175,10 @@ QByteArray AISModSettings::serialize() const s.writeBool(37, m_udpEnabled); s.writeString(38, m_udpAddress); s.writeU32(39, m_udpPort); - s.writeBlob(40, m_rollupState); + + if (m_rollupState) { + s.writeBlob(40, m_rollupState->serialize()); + } return s.final(); } @@ -222,19 +229,24 @@ bool AISModSettings::deserialize(const QByteArray& data) d.readS32(27, &m_symbolSpan, 3); d.readU32(28, &m_rgbColor, QColor(102, 0, 0).rgb()); d.readString(29, &m_title, "AIS Modulator"); - if (m_channelMarker) { + + if (m_channelMarker) + { d.readBlob(30, &bytetmp); m_channelMarker->deserialize(bytetmp); } + d.readS32(31, &m_streamIndex, 0); d.readBool(32, &m_useReverseAPI, false); d.readString(33, &m_reverseAPIAddress, "127.0.0.1"); d.readU32(34, &utmp, 0); + if ((utmp > 1023) && (utmp < 65535)) { m_reverseAPIPort = utmp; } else { m_reverseAPIPort = 8888; } + d.readU32(35, &utmp, 0); m_reverseAPIDeviceIndex = utmp > 99 ? 99 : utmp; d.readU32(36, &utmp, 0); @@ -242,12 +254,18 @@ bool AISModSettings::deserialize(const QByteArray& data) d.readBool(37, &m_udpEnabled); d.readString(38, &m_udpAddress, "127.0.0.1"); d.readU32(39, &utmp); + if ((utmp > 1023) && (utmp < 65535)) { m_udpPort = utmp; } else { m_udpPort = 9998; } - d.readBlob(40, &m_rollupState); + + if (m_rollupState) + { + d.readBlob(40, &bytetmp); + m_rollupState->deserialize(bytetmp); + } return true; } diff --git a/plugins/channeltx/modais/aismodsettings.h b/plugins/channeltx/modais/aismodsettings.h index 3da6c2513..2be80462e 100644 --- a/plugins/channeltx/modais/aismodsettings.h +++ b/plugins/channeltx/modais/aismodsettings.h @@ -86,7 +86,7 @@ struct AISModSettings bool m_udpEnabled; QString m_udpAddress; uint16_t m_udpPort; - QByteArray m_rollupState; + Serializable *m_rollupState; // Sample rate is multiple of 9600 baud rate (use even multiple so Gausian filter has odd number of taps) // Is there any benefit to having this higher? @@ -95,6 +95,7 @@ struct AISModSettings AISModSettings(); void resetToDefaults(); void setChannelMarker(Serializable *channelMarker) { m_channelMarker = channelMarker; } + void setRollupState(Serializable *rollupState) { m_rollupState = rollupState; } QByteArray serialize() const; bool deserialize(const QByteArray& data); bool setMode(QString mode); diff --git a/plugins/channeltx/modam/ammod.cpp b/plugins/channeltx/modam/ammod.cpp index c9b6a65bf..d51c0b21d 100644 --- a/plugins/channeltx/modam/ammod.cpp +++ b/plugins/channeltx/modam/ammod.cpp @@ -489,6 +489,9 @@ void AMMod::webapiUpdateChannelSettings( if (settings.m_channelMarker && channelSettingsKeys.contains("channelMarker")) { settings.m_channelMarker->updateFrom(channelSettingsKeys, response.getAmModSettings()->getChannelMarker()); } + if (settings.m_rollupState && channelSettingsKeys.contains("rollupState")) { + settings.m_rollupState->updateFrom(channelSettingsKeys, response.getAmModSettings()->getRollupState()); + } } int AMMod::webapiReportGet( @@ -556,6 +559,20 @@ void AMMod::webapiFormatChannelSettings(SWGSDRangel::SWGChannelSettings& respons response.getAmModSettings()->setChannelMarker(swgChannelMarker); } } + + if (settings.m_rollupState) + { + if (response.getAmModSettings()->getRollupState()) + { + settings.m_rollupState->formatTo(response.getAmModSettings()->getRollupState()); + } + else + { + SWGSDRangel::SWGRollupState *swgRollupState = new SWGSDRangel::SWGRollupState(); + settings.m_rollupState->formatTo(swgRollupState); + response.getAmModSettings()->setRollupState(swgRollupState); + } + } } void AMMod::webapiFormatChannelReport(SWGSDRangel::SWGChannelReport& response) @@ -711,6 +728,13 @@ void AMMod::webapiFormatChannelSettings( settings.m_channelMarker->formatTo(swgChannelMarker); swgAMModSettings->setChannelMarker(swgChannelMarker); } + + if (settings.m_rollupState && (channelSettingsKeys.contains("rollupState") || force)) + { + SWGSDRangel::SWGRollupState *swgRollupState = new SWGSDRangel::SWGRollupState(); + settings.m_rollupState->formatTo(swgRollupState); + swgAMModSettings->setRollupState(swgRollupState); + } } void AMMod::networkManagerFinished(QNetworkReply *reply) diff --git a/plugins/channeltx/modam/ammodgui.cpp b/plugins/channeltx/modam/ammodgui.cpp index 1414b1dfa..7f0bc8c8f 100644 --- a/plugins/channeltx/modam/ammodgui.cpp +++ b/plugins/channeltx/modam/ammodgui.cpp @@ -271,7 +271,7 @@ void AMModGUI::onWidgetRolled(QWidget* widget, bool rollDown) (void) widget; (void) rollDown; - m_settings.m_rollupState = saveState(); + saveState(m_rollupState); applySettings(); } @@ -366,6 +366,7 @@ AMModGUI::AMModGUI(PluginAPI* pluginAPI, DeviceUISet *deviceUISet, BasebandSampl m_channelMarker.setVisible(true); // activate signal on the last setting only m_settings.setChannelMarker(&m_channelMarker); + m_settings.setRollupState(&m_rollupState); m_settings.setCWKeyerGUI(ui->cwKeyerGUI); m_deviceUISet->addChannelMarker(&m_channelMarker); @@ -456,7 +457,7 @@ void AMModGUI::displaySettings() displayStreamIndex(); - restoreState(m_settings.m_rollupState); + restoreState(m_rollupState); blockApplySettings(false); } diff --git a/plugins/channeltx/modam/ammodgui.h b/plugins/channeltx/modam/ammodgui.h index ff1995ae9..ba7ff7d77 100644 --- a/plugins/channeltx/modam/ammodgui.h +++ b/plugins/channeltx/modam/ammodgui.h @@ -22,6 +22,7 @@ #include "dsp/channelmarker.h" #include "util/movingaverage.h" #include "util/messagequeue.h" +#include "settings/rollupstate.h" #include "ammod.h" #include "ammodsettings.h" @@ -56,6 +57,7 @@ private: PluginAPI* m_pluginAPI; DeviceUISet* m_deviceUISet; ChannelMarker m_channelMarker; + RollupState m_rollupState; AMModSettings m_settings; bool m_doApplySettings; diff --git a/plugins/channeltx/modam/ammodplugin.cpp b/plugins/channeltx/modam/ammodplugin.cpp index 80767fd31..a425f4310 100644 --- a/plugins/channeltx/modam/ammodplugin.cpp +++ b/plugins/channeltx/modam/ammodplugin.cpp @@ -28,7 +28,7 @@ const PluginDescriptor AMModPlugin::m_pluginDescriptor = { AMMod::m_channelId, QStringLiteral("AM Modulator"), - QStringLiteral("6.4.0"), + QStringLiteral("6.18.0"), QStringLiteral("(c) Edouard Griffiths, F4EXB"), QStringLiteral("https://github.com/f4exb/sdrangel"), true, diff --git a/plugins/channeltx/modam/ammodsettings.cpp b/plugins/channeltx/modam/ammodsettings.cpp index 60db6cd73..909dc75d6 100644 --- a/plugins/channeltx/modam/ammodsettings.cpp +++ b/plugins/channeltx/modam/ammodsettings.cpp @@ -23,8 +23,9 @@ #include "ammodsettings.h" AMModSettings::AMModSettings() : - m_channelMarker(0), - m_cwKeyerGUI(0) + m_channelMarker(nullptr), + m_cwKeyerGUI(nullptr), + m_rollupState(nullptr) { resetToDefaults(); } @@ -86,7 +87,10 @@ QByteArray AMModSettings::serialize() const s.writeReal(18, m_feedbackVolumeFactor); s.writeBool(19, m_feedbackAudioEnable); s.writeS32(20, m_streamIndex); - s.writeBlob(21, m_rollupState); + + if (m_rollupState) { + s.writeBlob(21, m_rollupState->serialize()); + } return s.final(); } @@ -129,8 +133,8 @@ bool AMModSettings::deserialize(const QByteArray& data) d.readString(9, &m_title, "AM Modulator"); d.readString(10, &m_audioDeviceName, AudioDeviceManager::m_defaultDeviceName); - d.readS32(11, &tmp, 0); + if ((tmp < 0) || (tmp > (int) AMModInputAF::AMModInputTone)) { m_modAFInput = AMModInputNone; } else { @@ -155,7 +159,12 @@ bool AMModSettings::deserialize(const QByteArray& data) d.readReal(18, &m_feedbackVolumeFactor, 1.0); d.readBool(19, &m_feedbackAudioEnable, false); d.readS32(20, &m_streamIndex, 0); - d.readBlob(21, &m_rollupState); + + if (m_rollupState) + { + d.readBlob(21, &bytetmp); + m_rollupState->deserialize(bytetmp); + } return true; } diff --git a/plugins/channeltx/modam/ammodsettings.h b/plugins/channeltx/modam/ammodsettings.h index b4ff53a11..2bc8bfe47 100644 --- a/plugins/channeltx/modam/ammodsettings.h +++ b/plugins/channeltx/modam/ammodsettings.h @@ -60,11 +60,12 @@ struct AMModSettings Serializable *m_cwKeyerGUI; CWKeyerSettings m_cwKeyerSettings; //!< For standalone deserialize operation (without m_cwKeyerGUI) - QByteArray m_rollupState; + Serializable *m_rollupState; AMModSettings(); void resetToDefaults(); void setChannelMarker(Serializable *channelMarker) { m_channelMarker = channelMarker; } + void setRollupState(Serializable *rollupState) { m_rollupState = rollupState; } void setCWKeyerGUI(Serializable *cwKeyerGUI) { m_cwKeyerGUI = cwKeyerGUI; } QByteArray serialize() const; bool deserialize(const QByteArray& data); diff --git a/plugins/channeltx/modatv/atvmod.cpp b/plugins/channeltx/modatv/atvmod.cpp index f34794aaf..6fd487281 100644 --- a/plugins/channeltx/modatv/atvmod.cpp +++ b/plugins/channeltx/modatv/atvmod.cpp @@ -527,6 +527,9 @@ void ATVMod::webapiUpdateChannelSettings( if (settings.m_channelMarker && channelSettingsKeys.contains("channelMarker")) { settings.m_channelMarker->updateFrom(channelSettingsKeys, response.getAtvModSettings()->getChannelMarker()); } + if (settings.m_rollupState && channelSettingsKeys.contains("rollupState")) { + settings.m_rollupState->updateFrom(channelSettingsKeys, response.getAtvModSettings()->getRollupState()); + } } int ATVMod::webapiReportGet( @@ -612,6 +615,20 @@ void ATVMod::webapiFormatChannelSettings(SWGSDRangel::SWGChannelSettings& respon response.getAtvModSettings()->setChannelMarker(swgChannelMarker); } } + + if (settings.m_rollupState) + { + if (response.getAtvModSettings()->getRollupState()) + { + settings.m_rollupState->formatTo(response.getAtvModSettings()->getRollupState()); + } + else + { + SWGSDRangel::SWGRollupState *swgRollupState = new SWGSDRangel::SWGRollupState(); + settings.m_rollupState->formatTo(swgRollupState); + response.getAtvModSettings()->setRollupState(swgRollupState); + } + } } void ATVMod::webapiFormatChannelReport(SWGSDRangel::SWGChannelReport& response) @@ -756,6 +773,13 @@ void ATVMod::webapiFormatChannelSettings( settings.m_channelMarker->formatTo(swgChannelMarker); swgATVModSettings->setChannelMarker(swgChannelMarker); } + + if (settings.m_rollupState && (channelSettingsKeys.contains("rollupState") || force)) + { + SWGSDRangel::SWGRollupState *swgRollupState = new SWGSDRangel::SWGRollupState(); + settings.m_rollupState->formatTo(swgRollupState); + swgATVModSettings->setRollupState(swgRollupState); + } } void ATVMod::networkManagerFinished(QNetworkReply *reply) diff --git a/plugins/channeltx/modatv/atvmodgui.cpp b/plugins/channeltx/modatv/atvmodgui.cpp index 28e700b22..49caab00a 100644 --- a/plugins/channeltx/modatv/atvmodgui.cpp +++ b/plugins/channeltx/modatv/atvmodgui.cpp @@ -89,6 +89,7 @@ ATVModGUI::ATVModGUI(PluginAPI* pluginAPI, DeviceUISet *deviceUISet, BasebandSam setTitleColor(m_channelMarker.getColor()); m_settings.setChannelMarker(&m_channelMarker); + m_settings.setRollupState(&m_rollupState); m_deviceUISet->addChannelMarker(&m_channelMarker); m_deviceUISet->addRollupWidget(this); @@ -670,7 +671,7 @@ void ATVModGUI::onWidgetRolled(QWidget* widget, bool rollDown) (void) widget; (void) rollDown; - m_settings.m_rollupState = saveState(); + saveState(m_rollupState); applySettings(); } @@ -795,7 +796,7 @@ void ATVModGUI::displaySettings() ui->playVideo->setChecked(m_settings.m_videoPlay); ui->playLoop->setChecked(m_settings.m_videoPlayLoop); - restoreState(m_settings.m_rollupState); + restoreState(m_rollupState); blockApplySettings(false); } diff --git a/plugins/channeltx/modatv/atvmodgui.h b/plugins/channeltx/modatv/atvmodgui.h index de0a16714..cf22f35d6 100644 --- a/plugins/channeltx/modatv/atvmodgui.h +++ b/plugins/channeltx/modatv/atvmodgui.h @@ -22,6 +22,7 @@ #include "dsp/channelmarker.h" #include "util/movingaverage.h" #include "util/messagequeue.h" +#include "settings/rollupstate.h" #include "atvmod.h" #include "atvmodsettings.h" @@ -55,6 +56,7 @@ private: PluginAPI* m_pluginAPI; DeviceUISet* m_deviceUISet; ChannelMarker m_channelMarker; + RollupState m_rollupState; ATVModSettings m_settings; bool m_doApplySettings; diff --git a/plugins/channeltx/modatv/atvmodplugin.cpp b/plugins/channeltx/modatv/atvmodplugin.cpp index 21ac6203d..200b69c10 100644 --- a/plugins/channeltx/modatv/atvmodplugin.cpp +++ b/plugins/channeltx/modatv/atvmodplugin.cpp @@ -28,7 +28,7 @@ const PluginDescriptor ATVModPlugin::m_pluginDescriptor = { ATVMod::m_channelId, QStringLiteral("ATV Modulator"), - QStringLiteral("6.3.3"), + QStringLiteral("6.18.0"), QStringLiteral("(c) Edouard Griffiths, F4EXB"), QStringLiteral("https://github.com/f4exb/sdrangel"), true, diff --git a/plugins/channeltx/modatv/atvmodsettings.cpp b/plugins/channeltx/modatv/atvmodsettings.cpp index d2ee576d6..060f4237e 100644 --- a/plugins/channeltx/modatv/atvmodsettings.cpp +++ b/plugins/channeltx/modatv/atvmodsettings.cpp @@ -23,7 +23,8 @@ #include "atvmodsettings.h" ATVModSettings::ATVModSettings() : - m_channelMarker(0) + m_channelMarker(nullptr), + m_rollupState(nullptr) { resetToDefaults(); } @@ -91,7 +92,10 @@ QByteArray ATVModSettings::serialize() const s.writeString(22, m_imageFileName); s.writeString(23, m_videoFileName); s.writeS32(24, m_streamIndex); - s.writeBlob(25, m_rollupState); + + if (m_rollupState) { + s.writeBlob(25, m_rollupState->serialize()); + } return s.final(); } @@ -158,7 +162,12 @@ bool ATVModSettings::deserialize(const QByteArray& data) d.readString(22, &m_imageFileName); d.readString(23, &m_videoFileName); d.readS32(24, &m_streamIndex, 0); - d.readBlob(25, &m_rollupState); + + if (m_rollupState) + { + d.readBlob(25, &bytetmp); + m_rollupState->deserialize(bytetmp); + } return true; } diff --git a/plugins/channeltx/modatv/atvmodsettings.h b/plugins/channeltx/modatv/atvmodsettings.h index fac1a2bbf..8c4d66bf5 100644 --- a/plugins/channeltx/modatv/atvmodsettings.h +++ b/plugins/channeltx/modatv/atvmodsettings.h @@ -91,11 +91,12 @@ struct ATVModSettings uint16_t m_reverseAPIChannelIndex; Serializable *m_channelMarker; - QByteArray m_rollupState; + Serializable *m_rollupState; ATVModSettings(); void resetToDefaults(); void setChannelMarker(Serializable *channelMarker) { m_channelMarker = channelMarker; } + void setRollupState(Serializable *rollupState) { m_rollupState = rollupState; } QByteArray serialize() const; bool deserialize(const QByteArray& data); }; diff --git a/plugins/channeltx/modchirpchat/chirpchatmod.cpp b/plugins/channeltx/modchirpchat/chirpchatmod.cpp index 16b7496a4..24c33004f 100644 --- a/plugins/channeltx/modchirpchat/chirpchatmod.cpp +++ b/plugins/channeltx/modchirpchat/chirpchatmod.cpp @@ -601,6 +601,9 @@ void ChirpChatMod::webapiUpdateChannelSettings( if (settings.m_channelMarker && channelSettingsKeys.contains("channelMarker")) { settings.m_channelMarker->updateFrom(channelSettingsKeys, response.getChirpChatModSettings()->getChannelMarker()); } + if (settings.m_rollupState && channelSettingsKeys.contains("rollupState")) { + settings.m_rollupState->updateFrom(channelSettingsKeys, response.getChirpChatModSettings()->getChannelMarker()); + } } int ChirpChatMod::webapiReportGet( @@ -756,6 +759,20 @@ void ChirpChatMod::webapiFormatChannelSettings(SWGSDRangel::SWGChannelSettings& response.getChirpChatModSettings()->setChannelMarker(swgChannelMarker); } } + + if (settings.m_rollupState) + { + if (response.getChirpChatModSettings()->getRollupState()) + { + settings.m_rollupState->formatTo(response.getChirpChatModSettings()->getRollupState()); + } + else + { + SWGSDRangel::SWGRollupState *swgRollupState = new SWGSDRangel::SWGRollupState(); + settings.m_rollupState->formatTo(swgRollupState); + response.getChirpChatModSettings()->setRollupState(swgRollupState); + } + } } void ChirpChatMod::webapiFormatChannelReport(SWGSDRangel::SWGChannelReport& response) @@ -951,6 +968,13 @@ void ChirpChatMod::webapiFormatChannelSettings( settings.m_channelMarker->formatTo(swgChannelMarker); swgChirpChatModSettings->setChannelMarker(swgChannelMarker); } + + if (settings.m_rollupState && (channelSettingsKeys.contains("rollupState") || force)) + { + SWGSDRangel::SWGRollupState *swgRollupState = new SWGSDRangel::SWGRollupState(); + settings.m_rollupState->formatTo(swgRollupState); + swgChirpChatModSettings->setRollupState(swgRollupState); + } } void ChirpChatMod::networkManagerFinished(QNetworkReply *reply) diff --git a/plugins/channeltx/modchirpchat/chirpchatmodgui.cpp b/plugins/channeltx/modchirpchat/chirpchatmodgui.cpp index f508366de..d7987b6d7 100644 --- a/plugins/channeltx/modchirpchat/chirpchatmodgui.cpp +++ b/plugins/channeltx/modchirpchat/chirpchatmodgui.cpp @@ -357,7 +357,7 @@ void ChirpChatModGUI::onWidgetRolled(QWidget* widget, bool rollDown) (void) widget; (void) rollDown; - m_settings.m_rollupState = saveState(); + saveState(m_rollupState); applySettings(); } @@ -449,6 +449,7 @@ ChirpChatModGUI::ChirpChatModGUI(PluginAPI* pluginAPI, DeviceUISet *deviceUISet, connect(getInputMessageQueue(), SIGNAL(messageEnqueued()), this, SLOT(handleSourceMessages())); m_settings.setChannelMarker(&m_channelMarker); + m_settings.setRollupState(&m_rollupState); setBandwidths(); displaySettings(); @@ -524,7 +525,7 @@ void ChirpChatModGUI::displaySettings() ui->udpEnabled->setChecked(m_settings.m_udpEnabled); ui->udpAddress->setText(m_settings.m_udpAddress); ui->udpPort->setText(QString::number(m_settings.m_udpPort)); - restoreState(m_settings.m_rollupState); + restoreState(m_rollupState); blockApplySettings(false); } diff --git a/plugins/channeltx/modchirpchat/chirpchatmodgui.h b/plugins/channeltx/modchirpchat/chirpchatmodgui.h index 8e53d680b..38d776cf5 100644 --- a/plugins/channeltx/modchirpchat/chirpchatmodgui.h +++ b/plugins/channeltx/modchirpchat/chirpchatmodgui.h @@ -22,6 +22,7 @@ #include "dsp/channelmarker.h" #include "util/movingaverage.h" #include "util/messagequeue.h" +#include "settings/rollupstate.h" #include "chirpchatmod.h" #include "chirpchatmodsettings.h" @@ -54,6 +55,7 @@ private: PluginAPI* m_pluginAPI; DeviceUISet* m_deviceUISet; ChannelMarker m_channelMarker; + RollupState m_rollupState; ChirpChatModSettings m_settings; int m_basebandSampleRate; bool m_doApplySettings; diff --git a/plugins/channeltx/modchirpchat/chirpchatmodplugin.cpp b/plugins/channeltx/modchirpchat/chirpchatmodplugin.cpp index 06342bfc4..614eb6159 100644 --- a/plugins/channeltx/modchirpchat/chirpchatmodplugin.cpp +++ b/plugins/channeltx/modchirpchat/chirpchatmodplugin.cpp @@ -28,7 +28,7 @@ const PluginDescriptor ChirpChatModPlugin::m_pluginDescriptor = { ChirpChatMod::m_channelId, QStringLiteral("ChirpChat Modulator"), - QStringLiteral("6.17.4"), + QStringLiteral("6.18.0"), QStringLiteral("(c) Edouard Griffiths, F4EXB"), QStringLiteral("https://github.com/f4exb/sdrangel"), true, diff --git a/plugins/channeltx/modchirpchat/chirpchatmodsettings.cpp b/plugins/channeltx/modchirpchat/chirpchatmodsettings.cpp index 15f146722..ad5669490 100644 --- a/plugins/channeltx/modchirpchat/chirpchatmodsettings.cpp +++ b/plugins/channeltx/modchirpchat/chirpchatmodsettings.cpp @@ -57,7 +57,8 @@ const int ChirpChatModSettings::oversampling = 4; ChirpChatModSettings::ChirpChatModSettings() : m_inputFrequencyOffset(0), - m_channelMarker(0) + m_channelMarker(nullptr), + m_rollupState(nullptr) { resetToDefaults(); } @@ -195,7 +196,10 @@ QByteArray ChirpChatModSettings::serialize() const s.writeBool(56, m_udpEnabled); s.writeString(57, m_udpAddress); s.writeU32(58, m_udpPort); - s.writeBlob(59, m_rollupState); + + if (m_rollupState) { + s.writeBlob(59, m_rollupState->serialize()); + } return s.final(); } @@ -269,7 +273,6 @@ bool ChirpChatModSettings::deserialize(const QByteArray& data) d.readString(42, &m_myLoc, "AA00AA"); d.readString(43, &m_myRpt, "59"); d.readS32(44, &m_messageRepeat, 1); - d.readBool(50, &m_useReverseAPI, false); d.readString(51, &m_reverseAPIAddress, "127.0.0.1"); d.readU32(52, &utmp, 0); @@ -289,12 +292,18 @@ bool ChirpChatModSettings::deserialize(const QByteArray& data) d.readBool(56, &m_udpEnabled); d.readString(57, &m_udpAddress, "127.0.0.1"); d.readU32(58, &utmp); + if ((utmp > 1023) && (utmp < 65535)) { m_udpPort = utmp; } else { m_udpPort = 9998; } - d.readBlob(59, &m_rollupState); + + if (m_rollupState) + { + d.readBlob(59, &bytetmp); + m_rollupState->deserialize(bytetmp); + } return true; } diff --git a/plugins/channeltx/modchirpchat/chirpchatmodsettings.h b/plugins/channeltx/modchirpchat/chirpchatmodsettings.h index 756d95778..aee95ce76 100644 --- a/plugins/channeltx/modchirpchat/chirpchatmodsettings.h +++ b/plugins/channeltx/modchirpchat/chirpchatmodsettings.h @@ -90,7 +90,7 @@ struct ChirpChatModSettings uint16_t m_reverseAPIChannelIndex; Serializable *m_channelMarker; - QByteArray m_rollupState; + Serializable *m_rollupState; static const int bandwidths[]; static const int nbBandwidths; @@ -103,6 +103,7 @@ struct ChirpChatModSettings unsigned int getNbSFDFourths() const; //!< Get the number of SFD period fourths (depends on coding scheme) bool hasSyncWord() const; //!< Only LoRa has a syncword (for the moment) void setChannelMarker(Serializable *channelMarker) { m_channelMarker = channelMarker; } + void setRollupState(Serializable *rollupState) { m_rollupState = rollupState; } QByteArray serialize() const; bool deserialize(const QByteArray& data); }; diff --git a/plugins/channeltx/moddatv/datvmod.cpp b/plugins/channeltx/moddatv/datvmod.cpp index 3b4324979..c51a8d3ac 100644 --- a/plugins/channeltx/moddatv/datvmod.cpp +++ b/plugins/channeltx/moddatv/datvmod.cpp @@ -460,6 +460,9 @@ void DATVMod::webapiUpdateChannelSettings( if (settings.m_channelMarker && channelSettingsKeys.contains("channelMarker")) { settings.m_channelMarker->updateFrom(channelSettingsKeys, response.getDatvModSettings()->getChannelMarker()); } + if (settings.m_rollupState && channelSettingsKeys.contains("rollupState")) { + settings.m_rollupState->updateFrom(channelSettingsKeys, response.getDatvModSettings()->getRollupState()); + } } int DATVMod::webapiReportGet( @@ -523,6 +526,20 @@ void DATVMod::webapiFormatChannelSettings(SWGSDRangel::SWGChannelSettings& respo response.getDatvModSettings()->setChannelMarker(swgChannelMarker); } } + + if (settings.m_rollupState) + { + if (response.getDatvModSettings()->getRollupState()) + { + settings.m_rollupState->formatTo(response.getDatvModSettings()->getRollupState()); + } + else + { + SWGSDRangel::SWGRollupState *swgRollupState = new SWGSDRangel::SWGRollupState(); + settings.m_rollupState->formatTo(swgRollupState); + response.getDatvModSettings()->setRollupState(swgRollupState); + } + } } void DATVMod::webapiFormatChannelReport(SWGSDRangel::SWGChannelReport& response) @@ -664,6 +681,13 @@ void DATVMod::webapiFormatChannelSettings( settings.m_channelMarker->formatTo(swgChannelMarker); swgDATVModSettings->setChannelMarker(swgChannelMarker); } + + if (settings.m_rollupState && (channelSettingsKeys.contains("rollupState") || force)) + { + SWGSDRangel::SWGRollupState *swgRollupState = new SWGSDRangel::SWGRollupState(); + settings.m_rollupState->formatTo(swgRollupState); + swgDATVModSettings->setRollupState(swgRollupState); + } } void DATVMod::networkManagerFinished(QNetworkReply *reply) diff --git a/plugins/channeltx/moddatv/datvmodgui.cpp b/plugins/channeltx/moddatv/datvmodgui.cpp index 01096ffc9..52cdb9753 100644 --- a/plugins/channeltx/moddatv/datvmodgui.cpp +++ b/plugins/channeltx/moddatv/datvmodgui.cpp @@ -89,6 +89,7 @@ DATVModGUI::DATVModGUI(PluginAPI* pluginAPI, DeviceUISet *deviceUISet, BasebandS setTitleColor(m_channelMarker.getColor()); m_settings.setChannelMarker(&m_channelMarker); + m_settings.setRollupState(&m_rollupState); m_deviceUISet->addChannelMarker(&m_channelMarker); m_deviceUISet->addRollupWidget(this); @@ -472,7 +473,7 @@ void DATVModGUI::onWidgetRolled(QWidget* widget, bool rollDown) (void) widget; (void) rollDown; - m_settings.m_rollupState = saveState(); + saveState(m_rollupState); applySettings(); } @@ -580,7 +581,7 @@ void DATVModGUI::displaySettings() ui->udpAddress->setText(m_settings.m_udpAddress); ui->udpPort->setValue(m_settings.m_udpPort); - restoreState(m_settings.m_rollupState); + restoreState(m_rollupState); blockApplySettings(false); } diff --git a/plugins/channeltx/moddatv/datvmodgui.h b/plugins/channeltx/moddatv/datvmodgui.h index 6fef4c374..5ddc6f102 100644 --- a/plugins/channeltx/moddatv/datvmodgui.h +++ b/plugins/channeltx/moddatv/datvmodgui.h @@ -23,6 +23,7 @@ #include "dsp/channelmarker.h" #include "util/movingaverage.h" #include "util/messagequeue.h" +#include "settings/rollupstate.h" #include "datvmod.h" #include "datvmodsettings.h" @@ -56,6 +57,7 @@ private: PluginAPI* m_pluginAPI; DeviceUISet* m_deviceUISet; ChannelMarker m_channelMarker; + RollupState m_rollupState; DATVModSettings m_settings; bool m_doApplySettings; bool m_tickMsgOutstanding; diff --git a/plugins/channeltx/moddatv/datvmodplugin.cpp b/plugins/channeltx/moddatv/datvmodplugin.cpp index c749f9a99..3d9b6a851 100644 --- a/plugins/channeltx/moddatv/datvmodplugin.cpp +++ b/plugins/channeltx/moddatv/datvmodplugin.cpp @@ -29,7 +29,7 @@ const PluginDescriptor DATVModPlugin::m_pluginDescriptor = { DATVMod::m_channelId, QStringLiteral("DATV Modulator"), - QStringLiteral("6.17.2"), + QStringLiteral("6.18.0"), QStringLiteral("(c) Jon Beniston, M7RCE, Edouard Griffiths, F4EXB. DVB-S2 by G4GUO"), QStringLiteral("https://github.com/f4exb/sdrangel"), true, diff --git a/plugins/channeltx/moddatv/datvmodsettings.cpp b/plugins/channeltx/moddatv/datvmodsettings.cpp index 53c8f5af6..ee5fda37c 100644 --- a/plugins/channeltx/moddatv/datvmodsettings.cpp +++ b/plugins/channeltx/moddatv/datvmodsettings.cpp @@ -27,7 +27,8 @@ const QStringList DATVModSettings::m_codeRateStrings = {"1/2", "2/3", "3/4", "5/ const QStringList DATVModSettings::m_modulationStrings = {"BPSK", "QPSK", "8PSK", "16APSK", "32APSK"}; DATVModSettings::DATVModSettings() : - m_channelMarker(0) + m_channelMarker(nullptr), + m_rollupState(nullptr) { resetToDefaults(); } @@ -69,15 +70,14 @@ QByteArray DATVModSettings::serialize() const s.writeS32(5, (int) m_fec); s.writeS32(6, m_symbolRate); s.writeReal(7, m_rollOff); - s.writeS32(10, (int) m_source); s.writeString(11, m_tsFileName); s.writeBool(12, m_tsFilePlayLoop); s.writeString(13, m_udpAddress); s.writeU32(14, m_udpPort); - s.writeString(20, m_title); s.writeU32(21, m_rgbColor); + if (m_channelMarker) { s.writeBlob(22, m_channelMarker->serialize()); } @@ -88,7 +88,10 @@ QByteArray DATVModSettings::serialize() const s.writeU32(26, m_reverseAPIDeviceIndex); s.writeU32(27, m_reverseAPIChannelIndex); s.writeS32(28, m_streamIndex); - s.writeBlob(29, m_rollupState); + + if (m_rollupState) { + s.writeBlob(29, m_rollupState->serialize()); + } return s.final(); } @@ -117,12 +120,12 @@ bool DATVModSettings::deserialize(const QByteArray& data) d.readS32(5, (int *) &m_fec, (int)FEC12); d.readS32(6, &m_symbolRate, 250000); d.readReal(7, &m_rollOff, 0.35f); - d.readS32(10, (int *)&m_source, (int)SourceFile); d.readString(11, &m_tsFileName); d.readBool(12, &m_tsFilePlayLoop, false); d.readString(13, &m_udpAddress, "127.0.0.1"); d.readU32(14, &utmp, 0); + if ((utmp > 1023) && (utmp < 65536)) { m_udpPort = utmp; } else { @@ -131,6 +134,7 @@ bool DATVModSettings::deserialize(const QByteArray& data) d.readString(20, &m_title, "DATV Modulator"); d.readU32(21, &m_rgbColor, QColor(Qt::magenta).rgb()); + if (m_channelMarker) { d.readBlob(22, &bytetmp); @@ -140,17 +144,24 @@ bool DATVModSettings::deserialize(const QByteArray& data) d.readBool(23, &m_useReverseAPI, false); d.readString(24, &m_reverseAPIAddress, "127.0.0.1"); d.readU32(25, &utmp, 0); + if ((utmp > 1023) && (utmp < 65535)) { m_reverseAPIPort = utmp; } else { m_reverseAPIPort = 8888; } + d.readU32(26, &utmp, 0); m_reverseAPIDeviceIndex = utmp > 99 ? 99 : utmp; d.readU32(27, &utmp, 0); m_reverseAPIChannelIndex = utmp > 99 ? 99 : utmp; d.readS32(28, &m_streamIndex, 0); - d.readBlob(29, &m_rollupState); + + if (m_rollupState) + { + d.readBlob(29, &bytetmp); + m_rollupState->deserialize(bytetmp); + } return true; } diff --git a/plugins/channeltx/moddatv/datvmodsettings.h b/plugins/channeltx/moddatv/datvmodsettings.h index d1469213f..9fe609747 100644 --- a/plugins/channeltx/moddatv/datvmodsettings.h +++ b/plugins/channeltx/moddatv/datvmodsettings.h @@ -96,11 +96,12 @@ struct DATVModSettings uint16_t m_reverseAPIPort; uint16_t m_reverseAPIDeviceIndex; uint16_t m_reverseAPIChannelIndex; - QByteArray m_rollupState; + Serializable *m_rollupState; DATVModSettings(); void resetToDefaults(); void setChannelMarker(Serializable *channelMarker) { m_channelMarker = channelMarker; } + void setRollupState(Serializable *rollupState) { m_rollupState = rollupState; } QByteArray serialize() const; bool deserialize(const QByteArray& data); diff --git a/plugins/channeltx/modfreedv/freedvmod.cpp b/plugins/channeltx/modfreedv/freedvmod.cpp index 471b449e2..2e692d12e 100644 --- a/plugins/channeltx/modfreedv/freedvmod.cpp +++ b/plugins/channeltx/modfreedv/freedvmod.cpp @@ -469,6 +469,9 @@ void FreeDVMod::webapiUpdateChannelSettings( if (settings.m_channelMarker && channelSettingsKeys.contains("channelMarker")) { settings.m_channelMarker->updateFrom(channelSettingsKeys, response.getFreeDvModSettings()->getChannelMarker()); } + if (settings.m_rollupState && channelSettingsKeys.contains("rollupState")) { + settings.m_rollupState->updateFrom(channelSettingsKeys, response.getFreeDvModSettings()->getRollupState()); + } } int FreeDVMod::webapiReportGet( @@ -551,6 +554,20 @@ void FreeDVMod::webapiFormatChannelSettings(SWGSDRangel::SWGChannelSettings& res response.getFreeDvModSettings()->setChannelMarker(swgChannelMarker); } } + + if (settings.m_rollupState) + { + if (response.getFreeDvModSettings()->getRollupState()) + { + settings.m_rollupState->formatTo(response.getFreeDvModSettings()->getRollupState()); + } + else + { + SWGSDRangel::SWGRollupState *swgRollupState = new SWGSDRangel::SWGRollupState(); + settings.m_rollupState->formatTo(swgRollupState); + response.getFreeDvModSettings()->setRollupState(swgRollupState); + } + } } void FreeDVMod::webapiFormatChannelReport(SWGSDRangel::SWGChannelReport& response) @@ -709,6 +726,13 @@ void FreeDVMod::webapiFormatChannelSettings( swgFreeDVModSettings->setChannelMarker(swgChannelMarker); } + if (settings.m_rollupState && (channelSettingsKeys.contains("rollupState") || force)) + { + SWGSDRangel::SWGRollupState *swgRollupState = new SWGSDRangel::SWGRollupState(); + settings.m_rollupState->formatTo(swgRollupState); + swgFreeDVModSettings->setRollupState(swgRollupState); + } + if (force) { const CWKeyerSettings& cwKeyerSettings = m_basebandSource->getCWKeyer().getSettings(); diff --git a/plugins/channeltx/modfreedv/freedvmodgui.cpp b/plugins/channeltx/modfreedv/freedvmodgui.cpp index 74766e2ec..e0de4cd92 100644 --- a/plugins/channeltx/modfreedv/freedvmodgui.cpp +++ b/plugins/channeltx/modfreedv/freedvmodgui.cpp @@ -284,7 +284,7 @@ void FreeDVModGUI::onWidgetRolled(QWidget* widget, bool rollDown) (void) widget; (void) rollDown; - m_settings.m_rollupState = saveState(); + saveState(m_rollupState); applySettings(); } @@ -391,6 +391,7 @@ FreeDVModGUI::FreeDVModGUI(PluginAPI* pluginAPI, DeviceUISet *deviceUISet, Baseb m_settings.setChannelMarker(&m_channelMarker); m_settings.setSpectrumGUI(ui->spectrumGUI); m_settings.setCWKeyerGUI(ui->cwKeyerGUI); + m_settings.setRollupState(&m_rollupState); connect(getInputMessageQueue(), SIGNAL(messageEnqueued()), this, SLOT(handleSourceMessages())); m_freeDVMod->setLevelMeter(ui->volumeMeter); @@ -500,7 +501,7 @@ void FreeDVModGUI::displaySettings() ui->play->setChecked(m_settings.m_modAFInput == FreeDVModSettings::FreeDVModInputAF::FreeDVModInputFile); ui->morseKeyer->setChecked(m_settings.m_modAFInput == FreeDVModSettings::FreeDVModInputAF::FreeDVModInputCWTone); - restoreState(m_settings.m_rollupState); + restoreState(m_rollupState); blockApplySettings(false); } diff --git a/plugins/channeltx/modfreedv/freedvmodgui.h b/plugins/channeltx/modfreedv/freedvmodgui.h index d4d38a55a..09fbe3dc9 100644 --- a/plugins/channeltx/modfreedv/freedvmodgui.h +++ b/plugins/channeltx/modfreedv/freedvmodgui.h @@ -24,6 +24,7 @@ #include "dsp/channelmarker.h" #include "util/movingaverage.h" #include "util/messagequeue.h" +#include "settings/rollupstate.h" #include "freedvmod.h" #include "freedvmodsettings.h" @@ -57,6 +58,7 @@ private: PluginAPI* m_pluginAPI; DeviceUISet* m_deviceUISet; ChannelMarker m_channelMarker; + RollupState m_rollupState; FreeDVModSettings m_settings; bool m_doApplySettings; int m_spectrumRate; diff --git a/plugins/channeltx/modfreedv/freedvmodplugin.cpp b/plugins/channeltx/modfreedv/freedvmodplugin.cpp index fb2b6eeac..4bcd6821c 100644 --- a/plugins/channeltx/modfreedv/freedvmodplugin.cpp +++ b/plugins/channeltx/modfreedv/freedvmodplugin.cpp @@ -28,7 +28,7 @@ const PluginDescriptor FreeDVModPlugin::m_pluginDescriptor = { FreeDVMod::m_channelId, QStringLiteral("FreeDV Modulator"), - QStringLiteral("6.3.3"), + QStringLiteral("6.18.0"), QStringLiteral("(c) Edouard Griffiths, F4EXB"), QStringLiteral("https://github.com/f4exb/sdrangel"), true, diff --git a/plugins/channeltx/modfreedv/freedvmodsettings.cpp b/plugins/channeltx/modfreedv/freedvmodsettings.cpp index 11d58bde2..051a52309 100644 --- a/plugins/channeltx/modfreedv/freedvmodsettings.cpp +++ b/plugins/channeltx/modfreedv/freedvmodsettings.cpp @@ -23,9 +23,10 @@ #include "freedvmodsettings.h" FreeDVModSettings::FreeDVModSettings() : - m_channelMarker(0), - m_spectrumGUI(0), - m_cwKeyerGUI(0) + m_channelMarker(nullptr), + m_spectrumGUI(nullptr), + m_cwKeyerGUI(nullptr), + m_rollupState(nullptr) { resetToDefaults(); } @@ -88,7 +89,10 @@ QByteArray FreeDVModSettings::serialize() const s.writeU32(25, m_reverseAPIDeviceIndex); s.writeU32(26, m_reverseAPIChannelIndex); s.writeS32(27, m_streamIndex); - s.writeBlob(28, m_rollupState); + + if (m_rollupState) { + s.writeBlob(28, m_rollupState->serialize()); + } return s.final(); } @@ -170,7 +174,12 @@ bool FreeDVModSettings::deserialize(const QByteArray& data) d.readU32(26, &utmp, 0); m_reverseAPIChannelIndex = utmp > 99 ? 99 : utmp; d.readS32(27, &m_streamIndex, 0); - d.readBlob(28, &m_rollupState); + + if (m_rollupState) + { + d.readBlob(28, &bytetmp); + m_rollupState->deserialize(bytetmp); + } return true; } diff --git a/plugins/channeltx/modfreedv/freedvmodsettings.h b/plugins/channeltx/modfreedv/freedvmodsettings.h index 74504e77b..a58635433 100644 --- a/plugins/channeltx/modfreedv/freedvmodsettings.h +++ b/plugins/channeltx/modfreedv/freedvmodsettings.h @@ -72,11 +72,12 @@ struct FreeDVModSettings Serializable *m_cwKeyerGUI; CWKeyerSettings m_cwKeyerSettings; //!< For standalone deserialize operation (without m_cwKeyerGUI) - QByteArray m_rollupState; + Serializable *m_rollupState; FreeDVModSettings(); void resetToDefaults(); void setChannelMarker(Serializable *channelMarker) { m_channelMarker = channelMarker; } + void setRollupState(Serializable *rollupState) { m_rollupState = rollupState; } void setSpectrumGUI(Serializable *spectrumGUI) { m_spectrumGUI = spectrumGUI; } void setCWKeyerGUI(Serializable *cwKeyerGUI) { m_cwKeyerGUI = cwKeyerGUI; } QByteArray serialize() const; diff --git a/plugins/channeltx/modnfm/nfmmod.cpp b/plugins/channeltx/modnfm/nfmmod.cpp index 649a25e62..4e282df62 100644 --- a/plugins/channeltx/modnfm/nfmmod.cpp +++ b/plugins/channeltx/modnfm/nfmmod.cpp @@ -551,6 +551,9 @@ void NFMMod::webapiUpdateChannelSettings( if (settings.m_channelMarker && channelSettingsKeys.contains("channelMarker")) { settings.m_channelMarker->updateFrom(channelSettingsKeys, response.getNfmModSettings()->getChannelMarker()); } + if (settings.m_rollupState && channelSettingsKeys.contains("rollupState")) { + settings.m_rollupState->updateFrom(channelSettingsKeys, response.getNfmModSettings()->getRollupState()); + } } int NFMMod::webapiReportGet( @@ -624,6 +627,20 @@ void NFMMod::webapiFormatChannelSettings(SWGSDRangel::SWGChannelSettings& respon response.getNfmModSettings()->setChannelMarker(swgChannelMarker); } } + + if (settings.m_rollupState) + { + if (response.getNfmModSettings()->getRollupState()) + { + settings.m_rollupState->formatTo(response.getNfmModSettings()->getRollupState()); + } + else + { + SWGSDRangel::SWGRollupState *swgRollupState = new SWGSDRangel::SWGRollupState(); + settings.m_rollupState->formatTo(swgRollupState); + response.getNfmModSettings()->setRollupState(swgRollupState); + } + } } void NFMMod::webapiFormatChannelReport(SWGSDRangel::SWGChannelReport& response) @@ -790,6 +807,13 @@ void NFMMod::webapiFormatChannelSettings( swgNFMModSettings->setChannelMarker(swgChannelMarker); } + if (settings.m_rollupState && (channelSettingsKeys.contains("rollupState") || force)) + { + SWGSDRangel::SWGRollupState *swgRollupState = new SWGSDRangel::SWGRollupState(); + settings.m_rollupState->formatTo(swgRollupState); + swgNFMModSettings->setRollupState(swgRollupState); + } + if (force) { const CWKeyerSettings& cwKeyerSettings = m_basebandSource->getCWKeyer().getSettings(); diff --git a/plugins/channeltx/modnfm/nfmmodgui.cpp b/plugins/channeltx/modnfm/nfmmodgui.cpp index 75d868357..267f0882a 100644 --- a/plugins/channeltx/modnfm/nfmmodgui.cpp +++ b/plugins/channeltx/modnfm/nfmmodgui.cpp @@ -343,7 +343,7 @@ void NFMModGUI::onWidgetRolled(QWidget* widget, bool rollDown) (void) widget; (void) rollDown; - m_settings.m_rollupState = saveState(); + saveState(m_rollupState); applySettings(); } @@ -471,6 +471,7 @@ NFMModGUI::NFMModGUI(PluginAPI* pluginAPI, DeviceUISet *deviceUISet, BasebandSam m_settings.setChannelMarker(&m_channelMarker); m_settings.setCWKeyerGUI(ui->cwKeyerGUI); + m_settings.setRollupState(&m_rollupState); displaySettings(); applySettings(); @@ -555,7 +556,7 @@ void NFMModGUI::displaySettings() ui->feedbackVolume->setValue(roundf(m_settings.m_feedbackVolumeFactor * 100.0)); ui->feedbackVolumeText->setText(QString("%1").arg(m_settings.m_feedbackVolumeFactor, 0, 'f', 2)); - restoreState(m_settings.m_rollupState); + restoreState(m_rollupState); blockApplySettings(false); } diff --git a/plugins/channeltx/modnfm/nfmmodgui.h b/plugins/channeltx/modnfm/nfmmodgui.h index 0f89c78b6..d0c3f1a26 100644 --- a/plugins/channeltx/modnfm/nfmmodgui.h +++ b/plugins/channeltx/modnfm/nfmmodgui.h @@ -24,6 +24,7 @@ #include "dsp/channelmarker.h" #include "util/movingaverage.h" #include "util/messagequeue.h" +#include "settings/rollupstate.h" #include "nfmmod.h" #include "nfmmodsettings.h" @@ -56,6 +57,7 @@ private: PluginAPI* m_pluginAPI; DeviceUISet* m_deviceUISet; ChannelMarker m_channelMarker; + RollupState m_rollupState; NFMModSettings m_settings; bool m_doApplySettings; diff --git a/plugins/channeltx/modnfm/nfmmodplugin.cpp b/plugins/channeltx/modnfm/nfmmodplugin.cpp index 3251c1cbd..e7ea66c88 100644 --- a/plugins/channeltx/modnfm/nfmmodplugin.cpp +++ b/plugins/channeltx/modnfm/nfmmodplugin.cpp @@ -28,7 +28,7 @@ const PluginDescriptor NFMModPlugin::m_pluginDescriptor = { NFMMod::m_channelId, QStringLiteral("NFM Modulator"), - QStringLiteral("6.9.0"), + QStringLiteral("6.18.0"), QStringLiteral("(c) Edouard Griffiths, F4EXB"), QStringLiteral("https://github.com/f4exb/sdrangel"), true, diff --git a/plugins/channeltx/modnfm/nfmmodsettings.cpp b/plugins/channeltx/modnfm/nfmmodsettings.cpp index 01c3abb7e..a60ddc885 100644 --- a/plugins/channeltx/modnfm/nfmmodsettings.cpp +++ b/plugins/channeltx/modnfm/nfmmodsettings.cpp @@ -44,8 +44,9 @@ const int NFMModSettings::m_nbChannelSpacings = 7; NFMModSettings::NFMModSettings() : - m_channelMarker(0), - m_cwKeyerGUI(0) + m_channelMarker(nullptr), + m_cwKeyerGUI(nullptr), + m_rollupState(nullptr) { resetToDefaults(); } @@ -119,7 +120,10 @@ QByteArray NFMModSettings::serialize() const s.writeBool(24, m_dcsOn); s.writeS32(25, m_dcsCode); s.writeBool(26, m_dcsPositive); - s.writeBlob(27, m_rollupState); + + if (m_rollupState) { + s.writeBlob(27, m_rollupState->serialize()); + } return s.final(); } @@ -159,7 +163,8 @@ bool NFMModSettings::deserialize(const QByteArray& data) d.readBool(9, &m_ctcssOn, false); d.readS32(10, &m_ctcssIndex, 0); - if (m_channelMarker) { + if (m_channelMarker) + { d.readBlob(11, &bytetmp); m_channelMarker->deserialize(bytetmp); } @@ -174,7 +179,6 @@ bool NFMModSettings::deserialize(const QByteArray& data) } d.readString(14, &m_audioDeviceName, AudioDeviceManager::m_defaultDeviceName); - d.readBool(15, &m_useReverseAPI, false); d.readString(16, &m_reverseAPIAddress, "127.0.0.1"); d.readU32(17, &utmp, 0); @@ -197,7 +201,12 @@ bool NFMModSettings::deserialize(const QByteArray& data) d.readS32(25, &tmp, 0023); m_dcsCode = tmp < 0 ? 0 : tmp > 511 ? 511 : tmp; d.readBool(26, &m_dcsPositive, false); - d.readBlob(27, &m_rollupState); + + if (m_rollupState) + { + d.readBlob(27, &bytetmp); + m_rollupState->deserialize(bytetmp); + } return true; } diff --git a/plugins/channeltx/modnfm/nfmmodsettings.h b/plugins/channeltx/modnfm/nfmmodsettings.h index 0286b36be..82c60ece5 100644 --- a/plugins/channeltx/modnfm/nfmmodsettings.h +++ b/plugins/channeltx/modnfm/nfmmodsettings.h @@ -72,11 +72,12 @@ struct NFMModSettings Serializable *m_cwKeyerGUI; CWKeyerSettings m_cwKeyerSettings; //!< For standalone deserialize operation (without m_cwKeyerGUI) - QByteArray m_rollupState; + Serializable *m_rollupState; NFMModSettings(); void resetToDefaults(); void setChannelMarker(Serializable *channelMarker) { m_channelMarker = channelMarker; } + void setRollupState(Serializable *rollupState) { m_rollupState = rollupState; } void setCWKeyerGUI(Serializable *cwKeyerGUI) { m_cwKeyerGUI = cwKeyerGUI; } QByteArray serialize() const; bool deserialize(const QByteArray& data); diff --git a/plugins/channeltx/modpacket/packetmod.cpp b/plugins/channeltx/modpacket/packetmod.cpp index 34803a918..e3a3f5681 100644 --- a/plugins/channeltx/modpacket/packetmod.cpp +++ b/plugins/channeltx/modpacket/packetmod.cpp @@ -652,6 +652,9 @@ void PacketMod::webapiUpdateChannelSettings( if (settings.m_channelMarker && channelSettingsKeys.contains("channelMarker")) { settings.m_channelMarker->updateFrom(channelSettingsKeys, response.getPacketModSettings()->getChannelMarker()); } + if (settings.m_rollupState && channelSettingsKeys.contains("rollupState")) { + settings.m_rollupState->updateFrom(channelSettingsKeys, response.getPacketModSettings()->getRollupState()); + } } int PacketMod::webapiReportGet( @@ -826,6 +829,20 @@ void PacketMod::webapiFormatChannelSettings(SWGSDRangel::SWGChannelSettings& res response.getPacketModSettings()->setChannelMarker(swgChannelMarker); } } + + if (settings.m_rollupState) + { + if (response.getPacketModSettings()->getRollupState()) + { + settings.m_rollupState->formatTo(response.getPacketModSettings()->getRollupState()); + } + else + { + SWGSDRangel::SWGRollupState *swgRollupState = new SWGSDRangel::SWGRollupState(); + settings.m_rollupState->formatTo(swgRollupState); + response.getPacketModSettings()->setRollupState(swgRollupState); + } + } } void PacketMod::webapiFormatChannelReport(SWGSDRangel::SWGChannelReport& response) @@ -1042,6 +1059,13 @@ void PacketMod::webapiFormatChannelSettings( settings.m_channelMarker->formatTo(swgChannelMarker); swgPacketModSettings->setChannelMarker(swgChannelMarker); } + + if (settings.m_rollupState && (channelSettingsKeys.contains("rollupState") || force)) + { + SWGSDRangel::SWGRollupState *swgRollupState = new SWGSDRangel::SWGRollupState(); + settings.m_rollupState->formatTo(swgRollupState); + swgPacketModSettings->setRollupState(swgRollupState); + } } void PacketMod::networkManagerFinished(QNetworkReply *reply) diff --git a/plugins/channeltx/modpacket/packetmodgui.cpp b/plugins/channeltx/modpacket/packetmodgui.cpp index 24c4f74c1..368782df5 100644 --- a/plugins/channeltx/modpacket/packetmodgui.cpp +++ b/plugins/channeltx/modpacket/packetmodgui.cpp @@ -368,7 +368,7 @@ void PacketModGUI::onWidgetRolled(QWidget* widget, bool rollDown) (void) widget; (void) rollDown; - m_settings.m_rollupState = saveState(); + saveState(m_rollupState); applySettings(); } @@ -484,6 +484,7 @@ PacketModGUI::PacketModGUI(PluginAPI* pluginAPI, DeviceUISet *deviceUISet, Baseb m_packetMod->setLevelMeter(ui->volumeMeter); m_settings.setChannelMarker(&m_channelMarker); + m_settings.setRollupState(&m_rollupState); ui->spectrumGUI->setBuddies(m_spectrumVis, ui->glSpectrum); @@ -571,7 +572,7 @@ void PacketModGUI::displaySettings() ui->via->lineEdit()->setText(m_settings.m_via); ui->packet->setText(m_settings.m_data); - restoreState(m_settings.m_rollupState); + restoreState(m_rollupState); blockApplySettings(false); } diff --git a/plugins/channeltx/modpacket/packetmodgui.h b/plugins/channeltx/modpacket/packetmodgui.h index 2112370d9..336039d8d 100644 --- a/plugins/channeltx/modpacket/packetmodgui.h +++ b/plugins/channeltx/modpacket/packetmodgui.h @@ -23,6 +23,7 @@ #include "dsp/channelmarker.h" #include "util/movingaverage.h" #include "util/messagequeue.h" +#include "settings/rollupstate.h" #include "packetmod.h" #include "packetmodsettings.h" @@ -56,6 +57,7 @@ private: PluginAPI* m_pluginAPI; DeviceUISet* m_deviceUISet; ChannelMarker m_channelMarker; + RollupState m_rollupState; PacketModSettings m_settings; bool m_doApplySettings; SpectrumVis* m_spectrumVis; diff --git a/plugins/channeltx/modpacket/packetmodplugin.cpp b/plugins/channeltx/modpacket/packetmodplugin.cpp index 591b03929..d1e78b3f6 100644 --- a/plugins/channeltx/modpacket/packetmodplugin.cpp +++ b/plugins/channeltx/modpacket/packetmodplugin.cpp @@ -29,7 +29,7 @@ const PluginDescriptor PacketModPlugin::m_pluginDescriptor = { PacketMod::m_channelId, QStringLiteral("Packet Modulator"), - QStringLiteral("6.17.4"), + QStringLiteral("6.18.0"), QStringLiteral("(c) Jon Beniston, M7RCE"), QStringLiteral("https://github.com/f4exb/sdrangel"), true, diff --git a/plugins/channeltx/modpacket/packetmodsettings.cpp b/plugins/channeltx/modpacket/packetmodsettings.cpp index cd99ef4c2..3c4bc8d8b 100644 --- a/plugins/channeltx/modpacket/packetmodsettings.cpp +++ b/plugins/channeltx/modpacket/packetmodsettings.cpp @@ -24,7 +24,9 @@ #include "settings/serializable.h" #include "packetmodsettings.h" -PacketModSettings::PacketModSettings() +PacketModSettings::PacketModSettings() : + m_channelMarker(nullptr), + m_rollupState(nullptr) { resetToDefaults(); } @@ -197,19 +199,19 @@ QByteArray PacketModSettings::serialize() const s.writeString(28, m_to); s.writeString(29, m_via); s.writeString(30, m_data); - s.writeU32(31, m_rgbColor); s.writeString(32, m_title); + if (m_channelMarker) { s.writeBlob(33, m_channelMarker->serialize()); } + s.writeS32(34, m_streamIndex); s.writeBool(35, m_useReverseAPI); s.writeString(36, m_reverseAPIAddress); s.writeU32(37, m_reverseAPIPort); s.writeU32(38, m_reverseAPIDeviceIndex); s.writeU32(39, m_reverseAPIChannelIndex); - s.writeBool(40, m_bpf); s.writeReal(41, m_bpfLowCutoff); s.writeReal(42, m_bpfHighCutoff); @@ -224,7 +226,10 @@ QByteArray PacketModSettings::serialize() const s.writeBool(51, m_udpEnabled); s.writeString(52, m_udpAddress); s.writeU32(53, m_udpPort); - s.writeBlob(54, m_rollupState); + + if (m_rollupState) { + s.writeBlob(54, m_rollupState->serialize()); + } return s.final(); } @@ -276,30 +281,30 @@ bool PacketModSettings::deserialize(const QByteArray& data) d.readString(28, &m_to, "APRS"); d.readString(29, &m_via, "WIDE2-2"); d.readString(30, &m_data, ">Using SDRangel"); - d.readU32(31, &m_rgbColor); d.readString(32, &m_title, "Packet Modulator"); - if (m_channelMarker) { + if (m_channelMarker) + { d.readBlob(33, &bytetmp); m_channelMarker->deserialize(bytetmp); } d.readS32(34, &m_streamIndex, 0); - d.readBool(35, &m_useReverseAPI, false); d.readString(36, &m_reverseAPIAddress, "127.0.0.1"); d.readU32(37, &utmp, 0); + if ((utmp > 1023) && (utmp < 65535)) { m_reverseAPIPort = utmp; } else { m_reverseAPIPort = 8888; } + d.readU32(38, &utmp, 0); m_reverseAPIDeviceIndex = utmp > 99 ? 99 : utmp; d.readU32(39, &utmp, 0); m_reverseAPIChannelIndex = utmp > 99 ? 99 : utmp; - d.readBool(40, &m_bpf, false); d.readReal(41, &m_bpfLowCutoff, 1200.0 - 400.0f); d.readReal(42, &m_bpfHighCutoff, 2200.0 + 400.0f); @@ -314,12 +319,18 @@ bool PacketModSettings::deserialize(const QByteArray& data) d.readBool(51, &m_udpEnabled); d.readString(52, &m_udpAddress, "127.0.0.1"); d.readU32(53, &utmp); + if ((utmp > 1023) && (utmp < 65535)) { m_udpPort = utmp; } else { m_udpPort = 9998; } - d.readBlob(54, &m_rollupState); + + if (m_rollupState) + { + d.readBlob(54, &bytetmp); + m_rollupState->deserialize(bytetmp); + } return true; } diff --git a/plugins/channeltx/modpacket/packetmodsettings.h b/plugins/channeltx/modpacket/packetmodsettings.h index cef94ee99..805ae22f7 100644 --- a/plugins/channeltx/modpacket/packetmodsettings.h +++ b/plugins/channeltx/modpacket/packetmodsettings.h @@ -82,11 +82,12 @@ struct PacketModSettings bool m_udpEnabled; QString m_udpAddress; uint16_t m_udpPort; - QByteArray m_rollupState; + Serializable *m_rollupState; PacketModSettings(); void resetToDefaults(); void setChannelMarker(Serializable *channelMarker) { m_channelMarker = channelMarker; } + void setRollupState(Serializable *rollupState) { m_rollupState = rollupState; } QByteArray serialize() const; bool deserialize(const QByteArray& data); bool setMode(QString mode); diff --git a/plugins/channeltx/modssb/ssbmod.cpp b/plugins/channeltx/modssb/ssbmod.cpp index cd18905bc..1596acbd1 100644 --- a/plugins/channeltx/modssb/ssbmod.cpp +++ b/plugins/channeltx/modssb/ssbmod.cpp @@ -540,6 +540,9 @@ void SSBMod::webapiUpdateChannelSettings( if (settings.m_channelMarker && channelSettingsKeys.contains("channelMarker")) { settings.m_channelMarker->updateFrom(channelSettingsKeys, response.getSsbModSettings()->getChannelMarker()); } + if (settings.m_rollupState && channelSettingsKeys.contains("rollupState")) { + settings.m_rollupState->updateFrom(channelSettingsKeys, response.getSsbModSettings()->getRollupState()); + } } int SSBMod::webapiReportGet( @@ -629,6 +632,20 @@ void SSBMod::webapiFormatChannelSettings(SWGSDRangel::SWGChannelSettings& respon response.getSsbModSettings()->setChannelMarker(swgChannelMarker); } } + + if (settings.m_rollupState) + { + if (response.getSsbModSettings()->getRollupState()) + { + settings.m_rollupState->formatTo(response.getSsbModSettings()->getRollupState()); + } + else + { + SWGSDRangel::SWGRollupState *swgRollupState = new SWGSDRangel::SWGRollupState(); + settings.m_rollupState->formatTo(swgRollupState); + response.getSsbModSettings()->setRollupState(swgRollupState); + } + } } void SSBMod::webapiFormatChannelReport(SWGSDRangel::SWGChannelReport& response) @@ -801,7 +818,6 @@ void SSBMod::webapiFormatChannelSettings( swgSSBModSettings->setSpectrumConfig(swgGLSpectrum); } - if (settings.m_channelMarker && (channelSettingsKeys.contains("channelMarker") || force)) { SWGSDRangel::SWGChannelMarker *swgChannelMarker = new SWGSDRangel::SWGChannelMarker(); @@ -809,6 +825,13 @@ void SSBMod::webapiFormatChannelSettings( swgSSBModSettings->setChannelMarker(swgChannelMarker); } + if (settings.m_rollupState && (channelSettingsKeys.contains("rollupState") || force)) + { + SWGSDRangel::SWGRollupState *swgRollupState = new SWGSDRangel::SWGRollupState(); + settings.m_rollupState->formatTo(swgRollupState); + swgSSBModSettings->setRollupState(swgRollupState); + } + if (force) { const CWKeyerSettings& cwKeyerSettings = m_basebandSource->getCWKeyer().getSettings(); diff --git a/plugins/channeltx/modssb/ssbmodgui.cpp b/plugins/channeltx/modssb/ssbmodgui.cpp index 3c97a29b1..4c183a16f 100644 --- a/plugins/channeltx/modssb/ssbmodgui.cpp +++ b/plugins/channeltx/modssb/ssbmodgui.cpp @@ -348,7 +348,7 @@ void SSBModGUI::onWidgetRolled(QWidget* widget, bool rollDown) (void) widget; (void) rollDown; - m_settings.m_rollupState = saveState(); + saveState(m_rollupState); applySettings(); } @@ -468,6 +468,7 @@ SSBModGUI::SSBModGUI(PluginAPI* pluginAPI, DeviceUISet *deviceUISet, BasebandSam m_settings.setChannelMarker(&m_channelMarker); m_settings.setSpectrumGUI(ui->spectrumGUI); m_settings.setCWKeyerGUI(ui->cwKeyerGUI); + m_settings.setRollupState(&m_rollupState); connect(getInputMessageQueue(), SIGNAL(messageEnqueued()), this, SLOT(handleSourceMessages())); m_ssbMod->setLevelMeter(ui->volumeMeter); @@ -714,7 +715,7 @@ void SSBModGUI::displaySettings() ui->feedbackVolume->setValue(roundf(m_settings.m_feedbackVolumeFactor * 100.0)); ui->feedbackVolumeText->setText(QString("%1").arg(m_settings.m_feedbackVolumeFactor, 0, 'f', 2)); - restoreState(m_settings.m_rollupState); + restoreState(m_rollupState); blockApplySettings(false); } diff --git a/plugins/channeltx/modssb/ssbmodgui.h b/plugins/channeltx/modssb/ssbmodgui.h index acdb36e90..f5159ba7f 100644 --- a/plugins/channeltx/modssb/ssbmodgui.h +++ b/plugins/channeltx/modssb/ssbmodgui.h @@ -24,6 +24,7 @@ #include "dsp/channelmarker.h" #include "util/movingaverage.h" #include "util/messagequeue.h" +#include "settings/rollupstate.h" #include "ssbmod.h" #include "ssbmodsettings.h" @@ -57,6 +58,7 @@ private: PluginAPI* m_pluginAPI; DeviceUISet* m_deviceUISet; ChannelMarker m_channelMarker; + RollupState m_rollupState; SSBModSettings m_settings; bool m_doApplySettings; int m_spectrumRate; diff --git a/plugins/channeltx/modssb/ssbmodplugin.cpp b/plugins/channeltx/modssb/ssbmodplugin.cpp index 4890b16f1..e7a9e3091 100644 --- a/plugins/channeltx/modssb/ssbmodplugin.cpp +++ b/plugins/channeltx/modssb/ssbmodplugin.cpp @@ -28,7 +28,7 @@ const PluginDescriptor SSBModPlugin::m_pluginDescriptor = { SSBMod::m_channelId, QStringLiteral("SSB Modulator"), - QStringLiteral("6.4.0"), + QStringLiteral("6.18.0"), QStringLiteral("(c) Edouard Griffiths, F4EXB"), QStringLiteral("https://github.com/f4exb/sdrangel"), true, diff --git a/plugins/channeltx/modssb/ssbmodsettings.cpp b/plugins/channeltx/modssb/ssbmodsettings.cpp index 972ba6f3f..7ddfa67ba 100644 --- a/plugins/channeltx/modssb/ssbmodsettings.cpp +++ b/plugins/channeltx/modssb/ssbmodsettings.cpp @@ -37,9 +37,10 @@ const int SSBModSettings::m_agcTimeConstant[] = { const int SSBModSettings::m_nbAGCTimeConstants = 10; SSBModSettings::SSBModSettings() : - m_channelMarker(0), - m_spectrumGUI(0), - m_cwKeyerGUI(0) + m_channelMarker(nullptr), + m_spectrumGUI(nullptr), + m_cwKeyerGUI(nullptr), + m_rollupState(nullptr) { resetToDefaults(); } @@ -121,7 +122,10 @@ QByteArray SSBModSettings::serialize() const s.writeReal(28, m_feedbackVolumeFactor); s.writeBool(29, m_feedbackAudioEnable); s.writeS32(30, m_streamIndex); - s.writeBlob(31, m_rollupState); + + if (m_rollupState) { + s.writeBlob(31, m_rollupState->serialize()); + } return s.final(); } @@ -144,10 +148,8 @@ bool SSBModSettings::deserialize(const QByteArray& data) d.readS32(1, &tmp, 0); m_inputFrequencyOffset = tmp; - d.readS32(2, &tmp, 30); m_bandwidth = tmp * 100.0; - d.readS32(3, &tmp, 100); m_toneFrequency = tmp * 10.0; @@ -168,7 +170,6 @@ bool SSBModSettings::deserialize(const QByteArray& data) d.readS32(7, &tmp, 3); m_lowCutoff = tmp * 100.0; - d.readS32(8, &m_spanLog2, 3); d.readBool(9, &m_audioBinaural, false); d.readBool(10, &m_audioFlipChannels, false); @@ -177,15 +178,16 @@ bool SSBModSettings::deserialize(const QByteArray& data) d.readS32(13, &m_cmpPreGainDB, -10); d.readS32(14, &m_cmpThresholdDB, -60); - if (m_channelMarker) { + if (m_channelMarker) + { d.readBlob(18, &bytetmp); m_channelMarker->deserialize(bytetmp); } d.readString(19, &m_title, "SSB Modulator"); d.readString(20, &m_audioDeviceName, AudioDeviceManager::m_defaultDeviceName); - d.readS32(21, &tmp, 0); + if ((tmp < 0) || (tmp > (int) SSBModInputAF::SSBModInputTone)) { m_modAFInput = SSBModInputNone; } else { @@ -210,7 +212,12 @@ bool SSBModSettings::deserialize(const QByteArray& data) d.readReal(28, &m_feedbackVolumeFactor, 1.0); d.readBool(29, &m_feedbackAudioEnable, false); d.readS32(30, &m_streamIndex, 0); - d.readBlob(31, &m_rollupState); + + if (m_rollupState) + { + d.readBlob(31, &bytetmp); + m_rollupState->deserialize(bytetmp); + } return true; } diff --git a/plugins/channeltx/modssb/ssbmodsettings.h b/plugins/channeltx/modssb/ssbmodsettings.h index 0ec6bf2b9..dbe67f68a 100644 --- a/plugins/channeltx/modssb/ssbmodsettings.h +++ b/plugins/channeltx/modssb/ssbmodsettings.h @@ -76,11 +76,12 @@ struct SSBModSettings Serializable *m_cwKeyerGUI; CWKeyerSettings m_cwKeyerSettings; //!< For standalone deserialize operation (without m_cwKeyerGUI) - QByteArray m_rollupState; + Serializable *m_rollupState; SSBModSettings(); void resetToDefaults(); void setChannelMarker(Serializable *channelMarker) { m_channelMarker = channelMarker; } + void setRollupState(Serializable *rollupState) { m_rollupState = rollupState; } void setSpectrumGUI(Serializable *spectrumGUI) { m_spectrumGUI = spectrumGUI; } void setCWKeyerGUI(Serializable *cwKeyerGUI) { m_cwKeyerGUI = cwKeyerGUI; } QByteArray serialize() const; diff --git a/plugins/channeltx/modwfm/wfmmod.cpp b/plugins/channeltx/modwfm/wfmmod.cpp index 6e2dc7b85..2f897e7d8 100644 --- a/plugins/channeltx/modwfm/wfmmod.cpp +++ b/plugins/channeltx/modwfm/wfmmod.cpp @@ -475,6 +475,9 @@ void WFMMod::webapiUpdateChannelSettings( if (settings.m_channelMarker && channelSettingsKeys.contains("channelMarker")) { settings.m_channelMarker->updateFrom(channelSettingsKeys, response.getWfmModSettings()->getChannelMarker()); } + if (settings.m_rollupState && channelSettingsKeys.contains("rollupState")) { + settings.m_rollupState->updateFrom(channelSettingsKeys, response.getWfmModSettings()->getRollupState()); + } } int WFMMod::webapiReportGet( @@ -543,6 +546,20 @@ void WFMMod::webapiFormatChannelSettings(SWGSDRangel::SWGChannelSettings& respon response.getWfmModSettings()->setChannelMarker(swgChannelMarker); } } + + if (settings.m_rollupState) + { + if (response.getWfmModSettings()->getRollupState()) + { + settings.m_rollupState->formatTo(response.getWfmModSettings()->getRollupState()); + } + else + { + SWGSDRangel::SWGRollupState *swgRollupState = new SWGSDRangel::SWGRollupState(); + settings.m_rollupState->formatTo(swgRollupState); + response.getWfmModSettings()->setRollupState(swgRollupState); + } + } } void WFMMod::webapiFormatChannelReport(SWGSDRangel::SWGChannelReport& response) @@ -694,6 +711,13 @@ void WFMMod::webapiFormatChannelSettings( swgWFMModSettings->setChannelMarker(swgChannelMarker); } + if (settings.m_rollupState && (channelSettingsKeys.contains("rollupState") || force)) + { + SWGSDRangel::SWGRollupState *swgRollupState = new SWGSDRangel::SWGRollupState(); + settings.m_rollupState->formatTo(swgRollupState); + swgWFMModSettings->setRollupState(swgRollupState); + } + if (force) { const CWKeyerSettings& cwKeyerSettings = m_basebandSource->getCWKeyer().getSettings(); diff --git a/plugins/channeltx/modwfm/wfmmodgui.cpp b/plugins/channeltx/modwfm/wfmmodgui.cpp index e6d2f3139..2039b56d6 100644 --- a/plugins/channeltx/modwfm/wfmmodgui.cpp +++ b/plugins/channeltx/modwfm/wfmmodgui.cpp @@ -277,7 +277,7 @@ void WFMModGUI::onWidgetRolled(QWidget* widget, bool rollDown) (void) widget; (void) rollDown; - m_settings.m_rollupState = saveState(); + saveState(m_rollupState); applySettings(); } @@ -397,6 +397,7 @@ WFMModGUI::WFMModGUI(PluginAPI* pluginAPI, DeviceUISet *deviceUISet, BasebandSam m_settings.setChannelMarker(&m_channelMarker); m_settings.setCWKeyerGUI(ui->cwKeyerGUI); + m_settings.setRollupState(&m_rollupState); connect(getInputMessageQueue(), SIGNAL(messageEnqueued()), this, SLOT(handleSourceMessages())); m_wfmMod->setLevelMeter(ui->volumeMeter); @@ -474,7 +475,7 @@ void WFMModGUI::displaySettings() ui->feedbackVolume->setValue(roundf(m_settings.m_feedbackVolumeFactor * 100.0)); ui->feedbackVolumeText->setText(QString("%1").arg(m_settings.m_feedbackVolumeFactor, 0, 'f', 2)); - restoreState(m_settings.m_rollupState); + restoreState(m_rollupState); blockApplySettings(false); } diff --git a/plugins/channeltx/modwfm/wfmmodgui.h b/plugins/channeltx/modwfm/wfmmodgui.h index 327ef99a7..f85465ab5 100644 --- a/plugins/channeltx/modwfm/wfmmodgui.h +++ b/plugins/channeltx/modwfm/wfmmodgui.h @@ -22,6 +22,7 @@ #include "dsp/channelmarker.h" #include "util/movingaverage.h" #include "util/messagequeue.h" +#include "settings/rollupstate.h" #include "wfmmod.h" #include "wfmmodsettings.h" @@ -54,6 +55,7 @@ private: PluginAPI* m_pluginAPI; DeviceUISet* m_deviceUISet; ChannelMarker m_channelMarker; + RollupState m_rollupState; WFMModSettings m_settings; bool m_doApplySettings; diff --git a/plugins/channeltx/modwfm/wfmmodplugin.cpp b/plugins/channeltx/modwfm/wfmmodplugin.cpp index 0b903c297..2ab9bc6d0 100644 --- a/plugins/channeltx/modwfm/wfmmodplugin.cpp +++ b/plugins/channeltx/modwfm/wfmmodplugin.cpp @@ -28,7 +28,7 @@ const PluginDescriptor WFMModPlugin::m_pluginDescriptor = { WFMMod::m_channelId, QStringLiteral("WFM Modulator"), - QStringLiteral("6.4.0"), + QStringLiteral("6.18.0"), QStringLiteral("(c) Edouard Griffiths, F4EXB"), QStringLiteral("https://github.com/f4exb/sdrangel"), true, diff --git a/plugins/channeltx/modwfm/wfmmodsettings.cpp b/plugins/channeltx/modwfm/wfmmodsettings.cpp index 20c32ba1a..3bebd733b 100644 --- a/plugins/channeltx/modwfm/wfmmodsettings.cpp +++ b/plugins/channeltx/modwfm/wfmmodsettings.cpp @@ -30,8 +30,9 @@ const int WFMModSettings::m_rfBW[] = { const int WFMModSettings::m_nbRfBW = 14; WFMModSettings::WFMModSettings() : - m_channelMarker(0), - m_cwKeyerGUI(0) + m_channelMarker(nullptr), + m_cwKeyerGUI(nullptr), + m_rollupState(nullptr) { resetToDefaults(); } @@ -95,7 +96,10 @@ QByteArray WFMModSettings::serialize() const s.writeString(19, m_feedbackAudioDeviceName); s.writeReal(20, m_feedbackVolumeFactor); s.writeBool(21, m_feedbackAudioEnable); - s.writeBlob(22, m_rollupState); + + if (m_rollupState) { + s.writeBlob(22, m_rollupState->serialize()); + } return s.final(); } @@ -132,7 +136,8 @@ bool WFMModSettings::deserialize(const QByteArray& data) m_cwKeyerSettings.deserialize(bytetmp); } - if (m_channelMarker) { + if (m_channelMarker) + { d.readBlob(9, &bytetmp); m_channelMarker->deserialize(bytetmp); } @@ -165,7 +170,12 @@ bool WFMModSettings::deserialize(const QByteArray& data) d.readString(19, &m_feedbackAudioDeviceName, AudioDeviceManager::m_defaultDeviceName); d.readReal(20, &m_feedbackVolumeFactor, 1.0); d.readBool(21, &m_feedbackAudioEnable, false); - d.readBlob(22, &m_rollupState); + + if (m_rollupState) + { + d.readBlob(22, &bytetmp); + m_rollupState->deserialize(bytetmp); + } return true; } diff --git a/plugins/channeltx/modwfm/wfmmodsettings.h b/plugins/channeltx/modwfm/wfmmodsettings.h index d24fed7bb..6d6dbb457 100644 --- a/plugins/channeltx/modwfm/wfmmodsettings.h +++ b/plugins/channeltx/modwfm/wfmmodsettings.h @@ -64,11 +64,12 @@ struct WFMModSettings Serializable *m_cwKeyerGUI; CWKeyerSettings m_cwKeyerSettings; //!< For standalone deserialize operation (without m_cwKeyerGUI) - QByteArray m_rollupState; + Serializable *m_rollupState; WFMModSettings(); void resetToDefaults(); void setChannelMarker(Serializable *channelMarker) { m_channelMarker = channelMarker; } + void setRollupState(Serializable *rollupState) { m_rollupState = rollupState; } void setCWKeyerGUI(Serializable *cwKeyerGUI) { m_cwKeyerGUI = cwKeyerGUI; } QByteArray serialize() const; bool deserialize(const QByteArray& data); diff --git a/plugins/channeltx/remotesource/remotesource.cpp b/plugins/channeltx/remotesource/remotesource.cpp index 5522d7f4c..f48a9ad38 100644 --- a/plugins/channeltx/remotesource/remotesource.cpp +++ b/plugins/channeltx/remotesource/remotesource.cpp @@ -356,6 +356,9 @@ void RemoteSource::webapiUpdateChannelSettings( if (settings.m_channelMarker && channelSettingsKeys.contains("channelMarker")) { settings.m_channelMarker->updateFrom(channelSettingsKeys, response.getRemoteSourceSettings()->getChannelMarker()); } + if (settings.m_rollupState && channelSettingsKeys.contains("rollupState")) { + settings.m_rollupState->updateFrom(channelSettingsKeys, response.getRemoteSourceSettings()->getRollupState()); + } } int RemoteSource::webapiReportGet( @@ -413,6 +416,20 @@ void RemoteSource::webapiFormatChannelSettings(SWGSDRangel::SWGChannelSettings& response.getRemoteSourceSettings()->setChannelMarker(swgChannelMarker); } } + + if (settings.m_rollupState) + { + if (response.getRemoteSourceSettings()->getRollupState()) + { + settings.m_rollupState->formatTo(response.getRemoteSourceSettings()->getRollupState()); + } + else + { + SWGSDRangel::SWGRollupState *swgRollupState = new SWGSDRangel::SWGRollupState(); + settings.m_rollupState->formatTo(swgRollupState); + response.getRemoteSourceSettings()->setRollupState(swgRollupState); + } + } } void RemoteSource::webapiFormatChannelReport(SWGSDRangel::SWGChannelReport& response) @@ -528,6 +545,13 @@ void RemoteSource::webapiFormatChannelSettings( settings.m_channelMarker->formatTo(swgChannelMarker); swgRemoteSourceSettings->setChannelMarker(swgChannelMarker); } + + if (settings.m_rollupState && (channelSettingsKeys.contains("rollupState") || force)) + { + SWGSDRangel::SWGRollupState *swgRollupState = new SWGSDRangel::SWGRollupState(); + settings.m_rollupState->formatTo(swgRollupState); + swgRemoteSourceSettings->setRollupState(swgRollupState); + } } void RemoteSource::networkManagerFinished(QNetworkReply *reply) diff --git a/plugins/channeltx/remotesource/remotesourcegui.cpp b/plugins/channeltx/remotesource/remotesourcegui.cpp index 523adf778..998d2110f 100644 --- a/plugins/channeltx/remotesource/remotesourcegui.cpp +++ b/plugins/channeltx/remotesource/remotesourcegui.cpp @@ -189,6 +189,7 @@ RemoteSourceGUI::RemoteSourceGUI(PluginAPI* pluginAPI, DeviceUISet *deviceUISet, m_channelMarker.setVisible(true); // activate signal on the last setting only m_settings.setChannelMarker(&m_channelMarker); + m_settings.setRollupState(&m_rollupState); m_deviceUISet->addChannelMarker(&m_channelMarker); m_deviceUISet->addRollupWidget(this); @@ -241,7 +242,7 @@ void RemoteSourceGUI::displaySettings() blockApplySettings(true); ui->dataAddress->setText(m_settings.m_dataAddress); ui->dataPort->setText(tr("%1").arg(m_settings.m_dataPort)); - restoreState(m_settings.m_rollupState); + restoreState(m_rollupState); blockApplySettings(false); } @@ -301,7 +302,7 @@ void RemoteSourceGUI::onWidgetRolled(QWidget* widget, bool rollDown) (void) widget; (void) rollDown; - m_settings.m_rollupState = saveState(); + saveState(m_rollupState); applySettings(); } diff --git a/plugins/channeltx/remotesource/remotesourcegui.h b/plugins/channeltx/remotesource/remotesourcegui.h index b2e04fbe9..daca3cd25 100644 --- a/plugins/channeltx/remotesource/remotesourcegui.h +++ b/plugins/channeltx/remotesource/remotesourcegui.h @@ -23,6 +23,7 @@ #include "dsp/channelmarker.h" #include "channel/channelgui.h" #include "util/messagequeue.h" +#include "settings/rollupstate.h" #include "../remotesource/remotesourcesettings.h" @@ -55,6 +56,7 @@ private: PluginAPI* m_pluginAPI; DeviceUISet* m_deviceUISet; ChannelMarker m_channelMarker; + RollupState m_rollupState; RemoteSourceSettings m_settings; int m_remoteSampleRate; int m_basebandSampleRate; diff --git a/plugins/channeltx/remotesource/remotesourceplugin.cpp b/plugins/channeltx/remotesource/remotesourceplugin.cpp index b1c633200..fa4ed684c 100644 --- a/plugins/channeltx/remotesource/remotesourceplugin.cpp +++ b/plugins/channeltx/remotesource/remotesourceplugin.cpp @@ -28,7 +28,7 @@ const PluginDescriptor RemoteSourcePlugin::m_pluginDescriptor = { RemoteSource::m_channelId, QStringLiteral("Remote channel source"), - QStringLiteral("6.17.6"), + QStringLiteral("6.18.0"), QStringLiteral("(c) Edouard Griffiths, F4EXB"), QStringLiteral("https://github.com/f4exb/sdrangel"), true, diff --git a/plugins/channeltx/remotesource/remotesourcesettings.cpp b/plugins/channeltx/remotesource/remotesourcesettings.cpp index 060435807..d0fcbfe21 100644 --- a/plugins/channeltx/remotesource/remotesourcesettings.cpp +++ b/plugins/channeltx/remotesource/remotesourcesettings.cpp @@ -37,6 +37,7 @@ void RemoteSourceSettings::resetToDefaults() m_log2Interp = 0; m_filterChainHash = 0; m_channelMarker = nullptr; + m_rollupState = nullptr; m_streamIndex = 0; m_useReverseAPI = false; m_reverseAPIAddress = "127.0.0.1"; @@ -58,10 +59,18 @@ QByteArray RemoteSourceSettings::serialize() const s.writeU32(8, m_reverseAPIDeviceIndex); s.writeU32(9, m_reverseAPIChannelIndex); s.writeS32(10, m_streamIndex); - s.writeBlob(11, m_rollupState); + + if (m_rollupState) { + s.writeBlob(11, m_rollupState->serialize()); + } + s.writeU32(12, m_log2Interp); s.writeU32(13, m_filterChainHash); + if (m_channelMarker) { + s.writeBlob(14, m_channelMarker->serialize()); + } + return s.final(); } @@ -79,6 +88,7 @@ bool RemoteSourceSettings::deserialize(const QByteArray& data) { uint32_t tmp; QString strtmp; + QByteArray bytetmp; d.readString(1, &m_dataAddress, "127.0.0.1"); d.readU32(2, &tmp, 0); @@ -106,9 +116,21 @@ bool RemoteSourceSettings::deserialize(const QByteArray& data) d.readU32(9, &tmp, 0); m_reverseAPIChannelIndex = tmp > 99 ? 99 : tmp; d.readS32(10, &m_streamIndex, 0); - d.readBlob(11, &m_rollupState); + + if (m_rollupState) + { + d.readBlob(11, &bytetmp); + m_rollupState->deserialize(bytetmp); + } + + d.readU32(12, &m_log2Interp, 0); d.readU32(13, &m_filterChainHash, 0); - d.readS32(14, &m_streamIndex, 0); + + if (m_channelMarker) + { + d.readBlob(14, &bytetmp); + m_channelMarker->deserialize(bytetmp); + } return true; } diff --git a/plugins/channeltx/remotesource/remotesourcesettings.h b/plugins/channeltx/remotesource/remotesourcesettings.h index 3cd4e4c65..aff6a0426 100644 --- a/plugins/channeltx/remotesource/remotesourcesettings.h +++ b/plugins/channeltx/remotesource/remotesourcesettings.h @@ -39,11 +39,12 @@ struct RemoteSourceSettings uint16_t m_reverseAPIChannelIndex; Serializable *m_channelMarker; - QByteArray m_rollupState; + Serializable *m_rollupState; RemoteSourceSettings(); void resetToDefaults(); void setChannelMarker(Serializable *channelMarker) { m_channelMarker = channelMarker; } + void setRollupState(Serializable *rollupState) { m_rollupState = rollupState; } QByteArray serialize() const; bool deserialize(const QByteArray& data); }; diff --git a/plugins/channeltx/udpsource/udpsource.cpp b/plugins/channeltx/udpsource/udpsource.cpp index 437dfaf19..574dccc12 100644 --- a/plugins/channeltx/udpsource/udpsource.cpp +++ b/plugins/channeltx/udpsource/udpsource.cpp @@ -437,6 +437,9 @@ void UDPSource::webapiUpdateChannelSettings( if (settings.m_channelMarker && channelSettingsKeys.contains("channelMarker")) { settings.m_channelMarker->updateFrom(channelSettingsKeys, response.getUdpSourceSettings()->getChannelMarker()); } + if (settings.m_rollupState && channelSettingsKeys.contains("rollupState")) { + settings.m_rollupState->updateFrom(channelSettingsKeys, response.getUdpSourceSettings()->getRollupState()); + } } int UDPSource::webapiReportGet( @@ -530,6 +533,20 @@ void UDPSource::webapiFormatChannelSettings(SWGSDRangel::SWGChannelSettings& res response.getUdpSourceSettings()->setChannelMarker(swgChannelMarker); } } + + if (settings.m_rollupState) + { + if (response.getUdpSourceSettings()->getRollupState()) + { + settings.m_rollupState->formatTo(response.getUdpSourceSettings()->getRollupState()); + } + else + { + SWGSDRangel::SWGRollupState *swgRollupState = new SWGSDRangel::SWGRollupState(); + settings.m_rollupState->formatTo(swgRollupState); + response.getUdpSourceSettings()->setRollupState(swgRollupState); + } + } } void UDPSource::webapiFormatChannelReport(SWGSDRangel::SWGChannelReport& response) @@ -684,6 +701,13 @@ void UDPSource::webapiFormatChannelSettings( settings.m_channelMarker->formatTo(swgChannelMarker); swgUDPSourceSettings->setChannelMarker(swgChannelMarker); } + + if (settings.m_rollupState && (channelSettingsKeys.contains("rollupState") || force)) + { + SWGSDRangel::SWGRollupState *swgRollupState = new SWGSDRangel::SWGRollupState(); + settings.m_rollupState->formatTo(swgRollupState); + swgUDPSourceSettings->setRollupState(swgRollupState); + } } void UDPSource::networkManagerFinished(QNetworkReply *reply) diff --git a/plugins/channeltx/udpsource/udpsourcegui.cpp b/plugins/channeltx/udpsource/udpsourcegui.cpp index 3f8fafcfd..905a8cd4c 100644 --- a/plugins/channeltx/udpsource/udpsourcegui.cpp +++ b/plugins/channeltx/udpsource/udpsourcegui.cpp @@ -149,6 +149,10 @@ UDPSourceGUI::UDPSourceGUI(PluginAPI* pluginAPI, DeviceUISet *deviceUISet, Baseb connect(getInputMessageQueue(), SIGNAL(messageEnqueued()), this, SLOT(handleSourceMessages())); m_udpSource->setLevelMeter(ui->volumeMeter); + m_settings.setChannelMarker(&m_channelMarker); + m_settings.setSpectrumGUI(ui->spectrumGUI); + m_settings.setRollupState(&m_rollupState); + displaySettings(); applySettings(true); } @@ -232,7 +236,7 @@ void UDPSourceGUI::displaySettings() ui->applyBtn->setEnabled(false); ui->applyBtn->setStyleSheet("QPushButton { background:rgb(79,79,79); }"); - restoreState(m_settings.m_rollupState); + restoreState(m_rollupState); blockApplySettings(false); } @@ -468,7 +472,7 @@ void UDPSourceGUI::onWidgetRolled(QWidget* widget, bool rollDown) m_udpSource->setSpectrum(rollDown); } - m_settings.m_rollupState = saveState(); + saveState(m_rollupState); applySettings(); } diff --git a/plugins/channeltx/udpsource/udpsourcegui.h b/plugins/channeltx/udpsource/udpsourcegui.h index f4bd9e946..d20614aa5 100644 --- a/plugins/channeltx/udpsource/udpsourcegui.h +++ b/plugins/channeltx/udpsource/udpsourcegui.h @@ -24,6 +24,7 @@ #include "dsp/channelmarker.h" #include "util/messagequeue.h" #include "util/movingaverage.h" +#include "settings/rollupstate.h" #include "udpsource.h" #include "udpsourcesettings.h" @@ -62,6 +63,7 @@ private: MovingAverageUtil m_inPowerAvg; uint32_t m_tickCount; ChannelMarker m_channelMarker; + RollupState m_rollupState; // settings UDPSourceSettings m_settings; diff --git a/plugins/channeltx/udpsource/udpsourceplugin.cpp b/plugins/channeltx/udpsource/udpsourceplugin.cpp index 2382885ea..8af8c22cd 100644 --- a/plugins/channeltx/udpsource/udpsourceplugin.cpp +++ b/plugins/channeltx/udpsource/udpsourceplugin.cpp @@ -31,7 +31,7 @@ const PluginDescriptor UDPSourcePlugin::m_pluginDescriptor = { UDPSource::m_channelId, QStringLiteral("UDP Channel Source"), - QStringLiteral("6.3.3"), + QStringLiteral("6.18.0"), QStringLiteral("(c) Edouard Griffiths, F4EXB"), QStringLiteral("https://github.com/f4exb/sdrangel"), true, diff --git a/plugins/channeltx/udpsource/udpsourcesettings.cpp b/plugins/channeltx/udpsource/udpsourcesettings.cpp index a57dc52b7..5254a3e0d 100644 --- a/plugins/channeltx/udpsource/udpsourcesettings.cpp +++ b/plugins/channeltx/udpsource/udpsourcesettings.cpp @@ -24,8 +24,9 @@ #include "settings/serializable.h" UDPSourceSettings::UDPSourceSettings() : - m_channelMarker(0), - m_spectrumGUI(0) + m_channelMarker(nullptr), + m_spectrumGUI(nullptr), + m_rollupState(nullptr) { resetToDefaults(); } @@ -96,7 +97,10 @@ QByteArray UDPSourceSettings::serialize() const s.writeU32(24, m_reverseAPIDeviceIndex); s.writeU32(25, m_reverseAPIChannelIndex); s.writeS32(26, m_streamIndex); - s.writeBlob(27, m_rollupState); + + if (m_rollupState) { + s.writeBlob(27, m_rollupState->serialize()); + } return s.final(); } @@ -126,7 +130,6 @@ bool UDPSourceSettings::deserialize(const QByteArray& data) d.readS32(2, &s32tmp, 0); m_inputFrequencyOffset = s32tmp; - d.readS32(3, &s32tmp, 0); if (s32tmp < (int) FormatNone) { @@ -148,23 +151,17 @@ bool UDPSourceSettings::deserialize(const QByteArray& data) d.readBool(9, &m_multicastJoin, false); d.readS32(10, &s32tmp, 10); m_gainOut = s32tmp / 10.0; - d.readS32(11, &m_fmDeviation, 2500); d.readReal(12, &m_amModFactor, 0.95); d.readBool(13, &m_stereoInput, false); - d.readS32(14, &s32tmp, -60); m_squelch = s32tmp * 1.0; m_squelchEnabled = (s32tmp != -100); - d.readS32(15, &s32tmp, 5); m_squelchGate = s32tmp / 100.0; - d.readBool(16, &m_autoRWBalance, true); - d.readS32(17, &s32tmp, 10); m_gainIn = s32tmp / 10.0; - d.readString(18, &m_udpAddress, "127.0.0.1"); d.readU32(19, &u32tmp, 9998); @@ -191,7 +188,12 @@ bool UDPSourceSettings::deserialize(const QByteArray& data) d.readU32(25, &u32tmp, 0); m_reverseAPIChannelIndex = u32tmp > 99 ? 99 : u32tmp; d.readS32(26, &m_streamIndex, 0); - d.readBlob(27, &m_rollupState); + + if (m_rollupState) + { + d.readBlob(27, &bytetmp); + m_rollupState->deserialize(bytetmp); + } return true; } diff --git a/plugins/channeltx/udpsource/udpsourcesettings.h b/plugins/channeltx/udpsource/udpsourcesettings.h index 8e79af651..e971db7ad 100644 --- a/plugins/channeltx/udpsource/udpsourcesettings.h +++ b/plugins/channeltx/udpsource/udpsourcesettings.h @@ -70,11 +70,12 @@ struct UDPSourceSettings Serializable *m_channelMarker; Serializable *m_spectrumGUI; - QByteArray m_rollupState; + Serializable *m_rollupState; UDPSourceSettings(); void resetToDefaults(); void setChannelMarker(Serializable *channelMarker) { m_channelMarker = channelMarker; } + void setRollupState(Serializable *rollupState) { m_rollupState = rollupState; } void setSpectrumGUI(Serializable *spectrumGUI) { m_spectrumGUI = spectrumGUI; } QByteArray serialize() const; bool deserialize(const QByteArray& data); diff --git a/plugins/feature/afc/afc.cpp b/plugins/feature/afc/afc.cpp index 2f49fbec9..7ce3d654a 100644 --- a/plugins/feature/afc/afc.cpp +++ b/plugins/feature/afc/afc.cpp @@ -30,6 +30,7 @@ #include "dsp/dspengine.h" #include "device/deviceset.h" #include "channel/channelapi.h" +#include "settings/serializable.h" #include "maincore.h" #include "afcworker.h" @@ -417,6 +418,20 @@ void AFC::webapiFormatFeatureSettings( response.getAfcSettings()->setReverseApiPort(settings.m_reverseAPIPort); response.getAfcSettings()->setReverseApiFeatureSetIndex(settings.m_reverseAPIFeatureSetIndex); response.getAfcSettings()->setReverseApiFeatureIndex(settings.m_reverseAPIFeatureIndex); + + if (settings.m_rollupState) + { + if (response.getAfcSettings()->getRollupState()) + { + settings.m_rollupState->formatTo(response.getAfcSettings()->getRollupState()); + } + else + { + SWGSDRangel::SWGRollupState *swgRollupState = new SWGSDRangel::SWGRollupState(); + settings.m_rollupState->formatTo(swgRollupState); + response.getAfcSettings()->setRollupState(swgRollupState); + } + } } void AFC::webapiUpdateFeatureSettings( @@ -466,6 +481,9 @@ void AFC::webapiUpdateFeatureSettings( if (featureSettingsKeys.contains("reverseAPIFeatureIndex")) { settings.m_reverseAPIFeatureIndex = response.getAfcSettings()->getReverseApiFeatureIndex(); } + if (settings.m_rollupState && featureSettingsKeys.contains("rollupState")) { + settings.m_rollupState->updateFrom(featureSettingsKeys, response.getAfcSettings()->getRollupState()); + } } void AFC::webapiFormatFeatureReport(SWGSDRangel::SWGFeatureReport& response) diff --git a/plugins/feature/afc/afcgui.cpp b/plugins/feature/afc/afcgui.cpp index 8a5d64deb..ae219c80a 100644 --- a/plugins/feature/afc/afcgui.cpp +++ b/plugins/feature/afc/afcgui.cpp @@ -114,7 +114,7 @@ void AFCGUI::onWidgetRolled(QWidget* widget, bool rollDown) (void) widget; (void) rollDown; - m_settings.m_rollupState = saveState(); + saveState(m_rollupState); applySettings(); } @@ -153,6 +153,8 @@ AFCGUI::AFCGUI(PluginAPI* pluginAPI, FeatureUISet *featureUISet, Feature *featur m_autoTargetStatusTimer.setSingleShot(true); ui->statusIndicator->setStyleSheet("QLabel { background-color: gray; border-radius: 8px; }"); + m_settings.setRollupState(&m_rollupState); + updateDeviceSetLists(); displaySettings(); applySettings(true); @@ -179,7 +181,7 @@ void AFCGUI::displaySettings() ui->toleranceFrequency->setValue(m_settings.m_freqTolerance); ui->targetPeriod->setValue(m_settings.m_trackerAdjustPeriod); ui->targetPeriodText->setText(tr("%1").arg(m_settings.m_trackerAdjustPeriod)); - restoreState(m_settings.m_rollupState); + restoreState(m_rollupState); blockApplySettings(false); } diff --git a/plugins/feature/afc/afcgui.h b/plugins/feature/afc/afcgui.h index b9adbe79b..8befbc9a6 100644 --- a/plugins/feature/afc/afcgui.h +++ b/plugins/feature/afc/afcgui.h @@ -22,6 +22,8 @@ #include "feature/featuregui.h" #include "util/messagequeue.h" +#include "settings/rollupstate.h" + #include "afcsettings.h" class PluginAPI; @@ -48,6 +50,7 @@ private: PluginAPI* m_pluginAPI; FeatureUISet* m_featureUISet; AFCSettings m_settings; + RollupState m_rollupState; bool m_doApplySettings; AFC* m_afc; diff --git a/plugins/feature/afc/afcplugin.cpp b/plugins/feature/afc/afcplugin.cpp index 5f2deb458..2ef20a0ed 100644 --- a/plugins/feature/afc/afcplugin.cpp +++ b/plugins/feature/afc/afcplugin.cpp @@ -29,7 +29,7 @@ const PluginDescriptor AFCPlugin::m_pluginDescriptor = { AFC::m_featureId, QStringLiteral("AFC"), - QStringLiteral("6.17.2"), + QStringLiteral("6.18.0"), QStringLiteral("(c) Edouard Griffiths, F4EXB"), QStringLiteral("https://github.com/f4exb/sdrangel"), true, diff --git a/plugins/feature/afc/afcsettings.cpp b/plugins/feature/afc/afcsettings.cpp index f068b8d86..7eec426c9 100644 --- a/plugins/feature/afc/afcsettings.cpp +++ b/plugins/feature/afc/afcsettings.cpp @@ -22,7 +22,8 @@ #include "afcsettings.h" -AFCSettings::AFCSettings() +AFCSettings::AFCSettings() : + m_rollupState(nullptr) { resetToDefaults(); } @@ -63,7 +64,10 @@ QByteArray AFCSettings::serialize() const s.writeU32(12, m_reverseAPIPort); s.writeU32(13, m_reverseAPIFeatureSetIndex); s.writeU32(14, m_reverseAPIFeatureIndex); - s.writeBlob(15, m_rollupState); + + if (m_rollupState) { + s.writeBlob(15, m_rollupState->serialize()); + } return s.final(); } @@ -107,7 +111,12 @@ bool AFCSettings::deserialize(const QByteArray& data) m_reverseAPIFeatureSetIndex = utmp > 99 ? 99 : utmp; d.readU32(14, &utmp, 0); m_reverseAPIFeatureIndex = utmp > 99 ? 99 : utmp; - d.readBlob(15, &m_rollupState); + + if (m_rollupState) + { + d.readBlob(15, &bytetmp); + m_rollupState->deserialize(bytetmp); + } return true; } diff --git a/plugins/feature/afc/afcsettings.h b/plugins/feature/afc/afcsettings.h index 342185c97..115cdfebf 100644 --- a/plugins/feature/afc/afcsettings.h +++ b/plugins/feature/afc/afcsettings.h @@ -39,12 +39,13 @@ struct AFCSettings uint16_t m_reverseAPIPort; uint16_t m_reverseAPIFeatureSetIndex; uint16_t m_reverseAPIFeatureIndex; - QByteArray m_rollupState; + Serializable *m_rollupState; AFCSettings(); void resetToDefaults(); QByteArray serialize() const; bool deserialize(const QByteArray& data); + void setRollupState(Serializable *rollupState) { m_rollupState = rollupState; } }; #endif // INCLUDE_FEATURE_AFCSETTINGS_H_ diff --git a/plugins/feature/ais/ais.cpp b/plugins/feature/ais/ais.cpp index caaabc753..80a10328e 100644 --- a/plugins/feature/ais/ais.cpp +++ b/plugins/feature/ais/ais.cpp @@ -31,6 +31,7 @@ #include "device/deviceset.h" #include "channel/channelapi.h" #include "feature/featureset.h" +#include "settings/serializable.h" #include "maincore.h" #include "ais.h" @@ -219,6 +220,20 @@ void AIS::webapiFormatFeatureSettings( response.getAisSettings()->setReverseApiPort(settings.m_reverseAPIPort); response.getAisSettings()->setReverseApiFeatureSetIndex(settings.m_reverseAPIFeatureSetIndex); response.getAisSettings()->setReverseApiFeatureIndex(settings.m_reverseAPIFeatureIndex); + + if (settings.m_rollupState) + { + if (response.getAisSettings()->getRollupState()) + { + settings.m_rollupState->formatTo(response.getAisSettings()->getRollupState()); + } + else + { + SWGSDRangel::SWGRollupState *swgRollupState = new SWGSDRangel::SWGRollupState(); + settings.m_rollupState->formatTo(swgRollupState); + response.getAisSettings()->setRollupState(swgRollupState); + } + } } void AIS::webapiUpdateFeatureSettings( @@ -242,10 +257,13 @@ void AIS::webapiUpdateFeatureSettings( settings.m_reverseAPIPort = response.getAisSettings()->getReverseApiPort(); } if (featureSettingsKeys.contains("reverseAPIFeatureSetIndex")) { - settings.m_reverseAPIFeatureSetIndex = response.getStarTrackerSettings()->getReverseApiFeatureSetIndex(); + settings.m_reverseAPIFeatureSetIndex = response.getAisSettings()->getReverseApiFeatureSetIndex(); } if (featureSettingsKeys.contains("reverseAPIFeatureIndex")) { - settings.m_reverseAPIFeatureIndex = response.getStarTrackerSettings()->getReverseApiFeatureIndex(); + settings.m_reverseAPIFeatureIndex = response.getAisSettings()->getReverseApiFeatureIndex(); + } + if (settings.m_rollupState && featureSettingsKeys.contains("rollupState")) { + settings.m_rollupState->updateFrom(featureSettingsKeys, response.getAisSettings()->getRollupState()); } } diff --git a/plugins/feature/ais/aisgui.cpp b/plugins/feature/ais/aisgui.cpp index cf3439595..9aae0e98f 100644 --- a/plugins/feature/ais/aisgui.cpp +++ b/plugins/feature/ais/aisgui.cpp @@ -115,7 +115,7 @@ void AISGUI::onWidgetRolled(QWidget* widget, bool rollDown) (void) widget; (void) rollDown; - m_settings.m_rollupState = saveState(); + saveState(m_rollupState); applySettings(); } @@ -162,6 +162,8 @@ AISGUI::AISGUI(PluginAPI* pluginAPI, FeatureUISet *featureUISet, Feature *featur connect(ui->vessels->horizontalHeader(), SIGNAL(sectionMoved(int, int, int)), SLOT(vessels_sectionMoved(int, int, int))); connect(ui->vessels->horizontalHeader(), SIGNAL(sectionResized(int, int, int)), SLOT(vessels_sectionResized(int, int, int))); + m_settings.setRollupState(&m_rollupState); + displaySettings(); applySettings(true); } @@ -195,7 +197,7 @@ void AISGUI::displaySettings() header->moveSection(header->visualIndex(i), m_settings.m_vesselColumnIndexes[i]); } - restoreState(m_settings.m_rollupState); + restoreState(m_rollupState); blockApplySettings(false); arrangeRollups(); } diff --git a/plugins/feature/ais/aisgui.h b/plugins/feature/ais/aisgui.h index b65f50249..184e2d5cb 100644 --- a/plugins/feature/ais/aisgui.h +++ b/plugins/feature/ais/aisgui.h @@ -26,6 +26,8 @@ #include "util/messagequeue.h" #include "util/ais.h" #include "pipes/pipeendpoint.h" +#include "settings/rollupstate.h" + #include "aissettings.h" class PluginAPI; @@ -52,6 +54,7 @@ private: PluginAPI* m_pluginAPI; FeatureUISet* m_featureUISet; AISSettings m_settings; + RollupState m_rollupState; bool m_doApplySettings; AIS* m_ais; diff --git a/plugins/feature/ais/aisplugin.cpp b/plugins/feature/ais/aisplugin.cpp index 0338c31c7..e78b2138e 100644 --- a/plugins/feature/ais/aisplugin.cpp +++ b/plugins/feature/ais/aisplugin.cpp @@ -30,7 +30,7 @@ const PluginDescriptor AISPlugin::m_pluginDescriptor = { AIS::m_featureId, QStringLiteral("AIS"), - QStringLiteral("6.16.6"), + QStringLiteral("6.18.0"), QStringLiteral("(c) Jon Beniston, M7RCE"), QStringLiteral("https://github.com/f4exb/sdrangel"), true, diff --git a/plugins/feature/ais/aissettings.cpp b/plugins/feature/ais/aissettings.cpp index a30c31dbe..7d902d105 100644 --- a/plugins/feature/ais/aissettings.cpp +++ b/plugins/feature/ais/aissettings.cpp @@ -32,7 +32,8 @@ const QStringList AISSettings::m_pipeURIs = { QStringLiteral("sdrangel.channel.aisdemod") }; -AISSettings::AISSettings() +AISSettings::AISSettings() : + m_rollupState(nullptr) { resetToDefaults(); } @@ -46,6 +47,7 @@ void AISSettings::resetToDefaults() m_reverseAPIPort = 8888; m_reverseAPIFeatureSetIndex = 0; m_reverseAPIFeatureIndex = 0; + for (int i = 0; i < AIS_VESSEL_COLUMNS; i++) { m_vesselColumnIndexes[i] = i; @@ -64,12 +66,18 @@ QByteArray AISSettings::serialize() const s.writeU32(24, m_reverseAPIPort); s.writeU32(25, m_reverseAPIFeatureSetIndex); s.writeU32(26, m_reverseAPIFeatureIndex); - s.writeBlob(27, m_rollupState); - for (int i = 0; i < AIS_VESSEL_COLUMNS; i++) + if (m_rollupState) { + s.writeBlob(27, m_rollupState->serialize()); + } + + for (int i = 0; i < AIS_VESSEL_COLUMNS; i++) { s.writeS32(300 + i, m_vesselColumnIndexes[i]); - for (int i = 0; i < AIS_VESSEL_COLUMNS; i++) + } + + for (int i = 0; i < AIS_VESSEL_COLUMNS; i++) { s.writeS32(400 + i, m_vesselColumnSizes[i]); + } return s.final(); } @@ -107,12 +115,20 @@ bool AISSettings::deserialize(const QByteArray& data) m_reverseAPIFeatureSetIndex = utmp > 99 ? 99 : utmp; d.readU32(26, &utmp, 0); m_reverseAPIFeatureIndex = utmp > 99 ? 99 : utmp; - d.readBlob(27, &m_rollupState); - for (int i = 0; i < AIS_VESSEL_COLUMNS; i++) + if (m_rollupState) + { + d.readBlob(27, &bytetmp); + m_rollupState->deserialize(bytetmp); + } + + for (int i = 0; i < AIS_VESSEL_COLUMNS; i++) { d.readS32(300 + i, &m_vesselColumnIndexes[i], i); - for (int i = 0; i < AIS_VESSEL_COLUMNS; i++) + } + + for (int i = 0; i < AIS_VESSEL_COLUMNS; i++) { d.readS32(400 + i, &m_vesselColumnSizes[i], -1); + } return true; } diff --git a/plugins/feature/ais/aissettings.h b/plugins/feature/ais/aissettings.h index fd737aeff..49a383490 100644 --- a/plugins/feature/ais/aissettings.h +++ b/plugins/feature/ais/aissettings.h @@ -38,7 +38,7 @@ struct AISSettings uint16_t m_reverseAPIPort; uint16_t m_reverseAPIFeatureSetIndex; uint16_t m_reverseAPIFeatureIndex; - QByteArray m_rollupState; + Serializable *m_rollupState; int m_vesselColumnIndexes[AIS_VESSEL_COLUMNS]; int m_vesselColumnSizes[AIS_VESSEL_COLUMNS]; @@ -47,6 +47,7 @@ struct AISSettings void resetToDefaults(); QByteArray serialize() const; bool deserialize(const QByteArray& data); + void setRollupState(Serializable *rollupState) { m_rollupState = rollupState; } static const QStringList m_pipeTypes; static const QStringList m_pipeURIs; diff --git a/plugins/feature/antennatools/antennatools.cpp b/plugins/feature/antennatools/antennatools.cpp index dce0fdc18..7afb18d11 100644 --- a/plugins/feature/antennatools/antennatools.cpp +++ b/plugins/feature/antennatools/antennatools.cpp @@ -29,6 +29,7 @@ #include "device/deviceset.h" #include "channel/channelapi.h" #include "feature/featureset.h" +#include "settings/serializable.h" #include "maincore.h" #include "antennatools.h" @@ -207,6 +208,20 @@ void AntennaTools::webapiFormatFeatureSettings( response.getAntennaToolsSettings()->setReverseApiPort(settings.m_reverseAPIPort); response.getAntennaToolsSettings()->setReverseApiFeatureSetIndex(settings.m_reverseAPIFeatureSetIndex); response.getAntennaToolsSettings()->setReverseApiFeatureIndex(settings.m_reverseAPIFeatureIndex); + + if (settings.m_rollupState) + { + if (response.getAntennaToolsSettings()->getRollupState()) + { + settings.m_rollupState->formatTo(response.getAntennaToolsSettings()->getRollupState()); + } + else + { + SWGSDRangel::SWGRollupState *swgRollupState = new SWGSDRangel::SWGRollupState(); + settings.m_rollupState->formatTo(swgRollupState); + response.getAntennaToolsSettings()->setRollupState(swgRollupState); + } + } } void AntennaTools::webapiUpdateFeatureSettings( @@ -253,6 +268,9 @@ void AntennaTools::webapiUpdateFeatureSettings( if (featureSettingsKeys.contains("reverseAPIFeatureIndex")) { settings.m_reverseAPIFeatureIndex = response.getAntennaToolsSettings()->getReverseApiFeatureIndex(); } + if (settings.m_rollupState && featureSettingsKeys.contains("rollupState")) { + settings.m_rollupState->updateFrom(featureSettingsKeys, response.getAntennaToolsSettings()->getRollupState()); + } } void AntennaTools::webapiReverseSendSettings(QList& featureSettingsKeys, const AntennaToolsSettings& settings, bool force) diff --git a/plugins/feature/antennatools/antennatoolsgui.cpp b/plugins/feature/antennatools/antennatoolsgui.cpp index 689697995..f37f7fef8 100644 --- a/plugins/feature/antennatools/antennatoolsgui.cpp +++ b/plugins/feature/antennatools/antennatoolsgui.cpp @@ -102,7 +102,7 @@ void AntennaToolsGUI::onWidgetRolled(QWidget* widget, bool rollDown) (void) widget; (void) rollDown; - m_settings.m_rollupState = saveState(); + saveState(m_rollupState); applySettings(); } @@ -132,6 +132,8 @@ AntennaToolsGUI::AntennaToolsGUI(PluginAPI* pluginAPI, FeatureUISet *featureUISe connect(&m_statusTimer, SIGNAL(timeout()), this, SLOT(updateStatus())); m_statusTimer.start(500); + m_settings.setRollupState(&m_rollupState); + displaySettings(); applySettings(true); } @@ -168,7 +170,7 @@ void AntennaToolsGUI::displaySettings() calcDishBeamwidth(); calcDishGain(); calcDishEffectiveArea(); - restoreState(m_settings.m_rollupState); + restoreState(m_rollupState); } void AntennaToolsGUI::leaveEvent(QEvent*) diff --git a/plugins/feature/antennatools/antennatoolsgui.h b/plugins/feature/antennatools/antennatoolsgui.h index 968f2d195..46ba3be10 100644 --- a/plugins/feature/antennatools/antennatoolsgui.h +++ b/plugins/feature/antennatools/antennatoolsgui.h @@ -25,6 +25,8 @@ #include "feature/featuregui.h" #include "util/messagequeue.h" #include "pipes/pipeendpoint.h" +#include "settings/rollupstate.h" + #include "antennatoolssettings.h" class PluginAPI; @@ -51,6 +53,7 @@ private: PluginAPI* m_pluginAPI; FeatureUISet* m_featureUISet; AntennaToolsSettings m_settings; + RollupState m_rollupState; bool m_doApplySettings; AntennaTools* m_antennatools; diff --git a/plugins/feature/antennatools/antennatoolsplugin.cpp b/plugins/feature/antennatools/antennatoolsplugin.cpp index 29ad5d83c..4b6c03179 100644 --- a/plugins/feature/antennatools/antennatoolsplugin.cpp +++ b/plugins/feature/antennatools/antennatoolsplugin.cpp @@ -30,7 +30,7 @@ const PluginDescriptor AntennaToolsPlugin::m_pluginDescriptor = { AntennaTools::m_featureId, QStringLiteral("Antenna Tools"), - QStringLiteral("6.17.3"), + QStringLiteral("6.18.0"), QStringLiteral("(c) Jon Beniston, M7RCE"), QStringLiteral("https://github.com/f4exb/sdrangel"), true, diff --git a/plugins/feature/antennatools/antennatoolssettings.cpp b/plugins/feature/antennatools/antennatoolssettings.cpp index e2456fd65..2dd559bbe 100644 --- a/plugins/feature/antennatools/antennatoolssettings.cpp +++ b/plugins/feature/antennatools/antennatoolssettings.cpp @@ -23,7 +23,8 @@ #include "antennatoolssettings.h" -AntennaToolsSettings::AntennaToolsSettings() +AntennaToolsSettings::AntennaToolsSettings() : + m_rollupState(nullptr) { resetToDefaults(); } @@ -34,7 +35,6 @@ void AntennaToolsSettings::resetToDefaults() m_dipoleFrequencySelect = 0; m_dipoleEndEffectFactor = 0.95; m_dipoleLengthUnits = CM; - m_dishFrequencyMHz = 1700.0; m_dishFrequencySelect = 0; m_dishDiameter = 240.0; @@ -42,7 +42,6 @@ void AntennaToolsSettings::resetToDefaults() m_dishEfficiency = 60; m_dishLengthUnits = CM; m_dishSurfaceError = 0.0; - m_title = "Antenna Tools"; m_rgbColor = QColor(225, 25, 99).rgb(); m_useReverseAPI = false; @@ -60,7 +59,6 @@ QByteArray AntennaToolsSettings::serialize() const s.writeS32(2, m_dipoleFrequencySelect); s.writeDouble(3, m_dipoleEndEffectFactor); s.writeS32(4, (int)m_dipoleLengthUnits); - s.writeDouble(5, m_dishFrequencyMHz); s.writeS32(6, m_dishFrequencySelect); s.writeDouble(7, m_dishDiameter); @@ -68,7 +66,6 @@ QByteArray AntennaToolsSettings::serialize() const s.writeS32(9, m_dishEfficiency); s.writeS32(10, (int)m_dishLengthUnits); s.writeDouble(18, m_dishSurfaceError); - s.writeString(11, m_title); s.writeU32(12, m_rgbColor); s.writeBool(13, m_useReverseAPI); @@ -76,7 +73,10 @@ QByteArray AntennaToolsSettings::serialize() const s.writeU32(15, m_reverseAPIPort); s.writeU32(16, m_reverseAPIFeatureSetIndex); s.writeU32(17, m_reverseAPIFeatureIndex); - s.writeBlob(19, m_rollupState); + + if (m_rollupState) { + s.writeBlob(19, m_rollupState->serialize()); + } return s.final(); } @@ -101,7 +101,6 @@ bool AntennaToolsSettings::deserialize(const QByteArray& data) d.readS32(2, &m_dipoleFrequencySelect, 0); d.readDouble(3, &m_dipoleEndEffectFactor, 0.95); d.readS32(4, (int*)&m_dipoleLengthUnits, (int)CM); - d.readDouble(5, &m_dishFrequencyMHz, 1700.0); d.readS32(6, &m_dishFrequencySelect, 0); d.readDouble(7, &m_dishDiameter, 240.0); @@ -109,7 +108,6 @@ bool AntennaToolsSettings::deserialize(const QByteArray& data) d.readS32(9, &m_dishEfficiency, 60); d.readS32(10, (int*)&m_dishLengthUnits, (int)CM); d.readDouble(18, &m_dishSurfaceError, 0.0); - d.readString(11, &m_title, "Antenna Tools"); d.readU32(12, &m_rgbColor, QColor(225, 25, 99).rgb()); d.readBool(13, &m_useReverseAPI, false); @@ -127,7 +125,11 @@ bool AntennaToolsSettings::deserialize(const QByteArray& data) d.readU32(17, &utmp, 0); m_reverseAPIFeatureIndex = utmp > 99 ? 99 : utmp; - d.readBlob(19, &m_rollupState); + if (m_rollupState) + { + d.readBlob(19, &bytetmp); + m_rollupState->deserialize(bytetmp); + } return true; } diff --git a/plugins/feature/antennatools/antennatoolssettings.h b/plugins/feature/antennatools/antennatoolssettings.h index 7d87a49aa..704f17501 100644 --- a/plugins/feature/antennatools/antennatoolssettings.h +++ b/plugins/feature/antennatools/antennatoolssettings.h @@ -50,12 +50,13 @@ struct AntennaToolsSettings uint16_t m_reverseAPIPort; uint16_t m_reverseAPIFeatureSetIndex; uint16_t m_reverseAPIFeatureIndex; - QByteArray m_rollupState; + Serializable *m_rollupState; AntennaToolsSettings(); void resetToDefaults(); QByteArray serialize() const; bool deserialize(const QByteArray& data); + void setRollupState(Serializable *rollupState) { m_rollupState = rollupState; } }; #endif // INCLUDE_FEATURE_ANTENNATOOLSSETTINGS_H_ diff --git a/plugins/feature/aprs/aprs.cpp b/plugins/feature/aprs/aprs.cpp index 6074a87dc..70ede6caf 100644 --- a/plugins/feature/aprs/aprs.cpp +++ b/plugins/feature/aprs/aprs.cpp @@ -30,6 +30,7 @@ #include "device/deviceset.h" #include "channel/channelapi.h" +#include "settings/serializable.h" #include "maincore.h" #include "aprsworker.h" #include "aprs.h" @@ -300,6 +301,21 @@ void APRS::webapiFormatFeatureSettings( response.getAprsSettings()->setReverseApiPort(settings.m_reverseAPIPort); response.getAprsSettings()->setReverseApiFeatureSetIndex(settings.m_reverseAPIFeatureSetIndex); response.getAprsSettings()->setReverseApiFeatureIndex(settings.m_reverseAPIFeatureIndex); + + if (settings.m_rollupState) + { + if (response.getAprsSettings()->getRollupState()) + { + settings.m_rollupState->formatTo(response.getAprsSettings()->getRollupState()); + } + else + { + SWGSDRangel::SWGRollupState *swgRollupState = new SWGSDRangel::SWGRollupState(); + settings.m_rollupState->formatTo(swgRollupState); + response.getAprsSettings()->setRollupState(swgRollupState); + } + } + } void APRS::webapiUpdateFeatureSettings( @@ -343,6 +359,9 @@ void APRS::webapiUpdateFeatureSettings( if (featureSettingsKeys.contains("reverseAPIFeatureIndex")) { settings.m_reverseAPIFeatureIndex = response.getAprsSettings()->getReverseApiFeatureIndex(); } + if (settings.m_rollupState && featureSettingsKeys.contains("rollupState")) { + settings.m_rollupState->updateFrom(featureSettingsKeys, response.getAprsSettings()->getRollupState()); + } } void APRS::webapiReverseSendSettings(QList& featureSettingsKeys, const APRSSettings& settings, bool force) diff --git a/plugins/feature/aprs/aprsgui.cpp b/plugins/feature/aprs/aprsgui.cpp index 5967bacff..50b37e3dd 100644 --- a/plugins/feature/aprs/aprsgui.cpp +++ b/plugins/feature/aprs/aprsgui.cpp @@ -409,7 +409,7 @@ void APRSGUI::onWidgetRolled(QWidget* widget, bool rollDown) (void) widget; (void) rollDown; - m_settings.m_rollupState = saveState(); + saveState(m_rollupState); applySettings(); } @@ -549,6 +549,8 @@ APRSGUI::APRSGUI(PluginAPI* pluginAPI, FeatureUISet *featureUISet, Feature *feat m_motionChart.layout()->setContentsMargins(0, 0, 0, 0); m_motionChart.setMargins(QMargins(1, 1, 1, 1)); + m_settings.setRollupState(&m_rollupState); + displaySettings(); applySettings(true); } @@ -630,7 +632,7 @@ void APRSGUI::displaySettings() displayTableSettings(ui->telemetryTable, telemetryTableMenu, m_settings.m_telemetryTableColumnSizes, m_settings.m_telemetryTableColumnIndexes, APRS_TELEMETRY_TABLE_COLUMNS); displayTableSettings(ui->motionTable, motionTableMenu, m_settings.m_motionTableColumnSizes, m_settings.m_motionTableColumnIndexes, APRS_MOTION_TABLE_COLUMNS); - restoreState(m_settings.m_rollupState); + restoreState(m_rollupState); blockApplySettings(false); } diff --git a/plugins/feature/aprs/aprsgui.h b/plugins/feature/aprs/aprsgui.h index 9a6f94bbf..50fa006f2 100644 --- a/plugins/feature/aprs/aprsgui.h +++ b/plugins/feature/aprs/aprsgui.h @@ -30,6 +30,8 @@ #include "util/messagequeue.h" #include "pipes/pipeendpoint.h" #include "util/aprs.h" +#include "settings/rollupstate.h" + #include "aprssettings.h" class PluginAPI; @@ -113,6 +115,7 @@ private: PluginAPI* m_pluginAPI; FeatureUISet* m_featureUISet; APRSSettings m_settings; + RollupState m_rollupState; bool m_doApplySettings; QList m_availablePipes; diff --git a/plugins/feature/aprs/aprsplugin.cpp b/plugins/feature/aprs/aprsplugin.cpp index 566a31ed1..c9f4c7453 100644 --- a/plugins/feature/aprs/aprsplugin.cpp +++ b/plugins/feature/aprs/aprsplugin.cpp @@ -30,7 +30,7 @@ const PluginDescriptor APRSPlugin::m_pluginDescriptor = { APRS::m_featureId, QStringLiteral("APRS"), - QStringLiteral("6.17.4"), + QStringLiteral("6.18.0"), QStringLiteral("(c) Jon Beniston, M7RCE"), QStringLiteral("https://github.com/f4exb/sdrangel"), true, diff --git a/plugins/feature/aprs/aprssettings.cpp b/plugins/feature/aprs/aprssettings.cpp index 20c9ae2ef..5e843f04b 100644 --- a/plugins/feature/aprs/aprssettings.cpp +++ b/plugins/feature/aprs/aprssettings.cpp @@ -50,7 +50,8 @@ const QStringList APRSSettings::m_temperatureUnitNames = { }; -APRSSettings::APRSSettings() +APRSSettings::APRSSettings() : + m_rollupState(nullptr) { resetToDefaults(); } @@ -76,31 +77,37 @@ void APRSSettings::resetToDefaults() m_reverseAPIPort = 8888; m_reverseAPIFeatureSetIndex = 0; m_reverseAPIFeatureIndex = 0; + for (int i = 0; i < APRS_PACKETS_TABLE_COLUMNS; i++) { m_packetsTableColumnIndexes[i] = i; m_packetsTableColumnSizes[i] = -1; // Autosize } + for (int i = 0; i < APRS_WEATHER_TABLE_COLUMNS; i++) { m_weatherTableColumnIndexes[i] = i; m_weatherTableColumnSizes[i] = -1; // Autosize } + for (int i = 0; i < APRS_STATUS_TABLE_COLUMNS; i++) { m_statusTableColumnIndexes[i] = i; m_statusTableColumnSizes[i] = -1; // Autosize } + for (int i = 0; i < APRS_MESSAGES_TABLE_COLUMNS; i++) { m_messagesTableColumnIndexes[i] = i; m_messagesTableColumnSizes[i] = -1; // Autosize } + for (int i = 0; i < APRS_TELEMETRY_TABLE_COLUMNS; i++) { m_telemetryTableColumnIndexes[i] = i; m_telemetryTableColumnSizes[i] = -1; // Autosize } + for (int i = 0; i < APRS_MOTION_TABLE_COLUMNS; i++) { m_motionTableColumnIndexes[i] = i; @@ -131,7 +138,10 @@ QByteArray APRSSettings::serialize() const s.writeS32(17, (int)m_speedUnits); s.writeS32(18, (int)m_temperatureUnits); s.writeS32(19, (int)m_rainfallUnits); - s.writeBlob(20, m_rollupState); + + if (m_rollupState) { + s.writeBlob(20, m_rollupState->serialize()); + } for (int i = 0; i < APRS_PACKETS_TABLE_COLUMNS; i++) s.writeS32(100 + i, m_packetsTableColumnIndexes[i]); @@ -185,7 +195,6 @@ bool APRSSettings::deserialize(const QByteArray& data) d.readBool(6, &m_igateEnabled, false); d.readS32(7, (int*)&m_stationFilter, 0); d.readString(8, &m_filterAddressee, ""); - d.readString(9, &m_title, "APRS"); d.readU32(10, &m_rgbColor, QColor(225, 25, 99).rgb()); d.readBool(11, &m_useReverseAPI, false); @@ -202,13 +211,16 @@ bool APRSSettings::deserialize(const QByteArray& data) m_reverseAPIFeatureSetIndex = utmp > 99 ? 99 : utmp; d.readU32(15, &utmp, 0); m_reverseAPIFeatureIndex = utmp > 99 ? 99 : utmp; - d.readS32(16, (int *)&m_altitudeUnits, (int)FEET); d.readS32(17, (int *)&m_speedUnits, (int)KNOTS); d.readS32(18, (int *)&m_temperatureUnits, (int)FAHRENHEIT); d.readS32(19, (int *)&m_rainfallUnits, (int)HUNDREDTHS_OF_AN_INCH); - d.readBlob(20, &m_rollupState); + if (m_rollupState) + { + d.readBlob(20, &bytetmp); + m_rollupState->deserialize(bytetmp); + } for (int i = 0; i < APRS_PACKETS_TABLE_COLUMNS; i++) d.readS32(100 + i, &m_packetsTableColumnIndexes[i], i); diff --git a/plugins/feature/aprs/aprssettings.h b/plugins/feature/aprs/aprssettings.h index c6b1dbeb6..71d4cb228 100644 --- a/plugins/feature/aprs/aprssettings.h +++ b/plugins/feature/aprs/aprssettings.h @@ -65,7 +65,7 @@ struct APRSSettings uint16_t m_reverseAPIPort; uint16_t m_reverseAPIFeatureSetIndex; uint16_t m_reverseAPIFeatureIndex; - QByteArray m_rollupState; + Serializable *m_rollupState; int m_packetsTableColumnIndexes[APRS_PACKETS_TABLE_COLUMNS];//!< How the columns are ordered in the table int m_packetsTableColumnSizes[APRS_PACKETS_TABLE_COLUMNS]; //!< Size of the columns in the table @@ -84,6 +84,7 @@ struct APRSSettings void resetToDefaults(); QByteArray serialize() const; bool deserialize(const QByteArray& data); + void setRollupState(Serializable *rollupState) { m_rollupState = rollupState; } static const QStringList m_pipeTypes; static const QStringList m_pipeURIs; diff --git a/plugins/feature/demodanalyzer/demodanalyzer.cpp b/plugins/feature/demodanalyzer/demodanalyzer.cpp index 2bc4bf808..cbd591023 100644 --- a/plugins/feature/demodanalyzer/demodanalyzer.cpp +++ b/plugins/feature/demodanalyzer/demodanalyzer.cpp @@ -451,6 +451,20 @@ void DemodAnalyzer::webapiFormatFeatureSettings( response.getDemodAnalyzerSettings()->setScopeConfig(swgGLScope); } } + + if (settings.m_rollupState) + { + if (response.getDemodAnalyzerSettings()->getRollupState()) + { + settings.m_rollupState->formatTo(response.getDemodAnalyzerSettings()->getRollupState()); + } + else + { + SWGSDRangel::SWGRollupState *swgRollupState = new SWGSDRangel::SWGRollupState(); + settings.m_rollupState->formatTo(swgRollupState); + response.getDemodAnalyzerSettings()->setRollupState(swgRollupState); + } + } } void DemodAnalyzer::webapiUpdateFeatureSettings( @@ -488,6 +502,9 @@ void DemodAnalyzer::webapiUpdateFeatureSettings( if (settings.m_scopeGUI && featureSettingsKeys.contains("scopeConfig")) { settings.m_scopeGUI->updateFrom(featureSettingsKeys, response.getDemodAnalyzerSettings()->getScopeConfig()); } + if (settings.m_rollupState && featureSettingsKeys.contains("rollupState")) { + settings.m_rollupState->updateFrom(featureSettingsKeys, response.getDemodAnalyzerSettings()->getRollupState()); + } } void DemodAnalyzer::webapiReverseSendSettings(QList& featureSettingsKeys, const DemodAnalyzerSettings& settings, bool force) diff --git a/plugins/feature/demodanalyzer/demodanalyzergui.cpp b/plugins/feature/demodanalyzer/demodanalyzergui.cpp index 7c127338f..d16aefa9c 100644 --- a/plugins/feature/demodanalyzer/demodanalyzergui.cpp +++ b/plugins/feature/demodanalyzer/demodanalyzergui.cpp @@ -125,7 +125,7 @@ void DemodAnalyzerGUI::onWidgetRolled(QWidget* widget, bool rollDown) (void) widget; (void) rollDown; - m_settings.m_rollupState = saveState(); + saveState(m_rollupState); applySettings(); } @@ -173,6 +173,7 @@ DemodAnalyzerGUI::DemodAnalyzerGUI(PluginAPI* pluginAPI, FeatureUISet *featureUI m_settings.setSpectrumGUI(ui->spectrumGUI); m_settings.setScopeGUI(ui->scopeGUI); + m_settings.setRollupState(&m_rollupState); displaySettings(); applySettings(true); @@ -194,7 +195,7 @@ void DemodAnalyzerGUI::displaySettings() setWindowTitle(m_settings.m_title); blockApplySettings(true); ui->log2Decim->setCurrentIndex(m_settings.m_log2Decim); - restoreState(m_settings.m_rollupState); + restoreState(m_rollupState); blockApplySettings(false); } diff --git a/plugins/feature/demodanalyzer/demodanalyzergui.h b/plugins/feature/demodanalyzer/demodanalyzergui.h index bdaa19236..69f0fab22 100644 --- a/plugins/feature/demodanalyzer/demodanalyzergui.h +++ b/plugins/feature/demodanalyzer/demodanalyzergui.h @@ -24,6 +24,8 @@ #include "feature/featuregui.h" #include "util/movingaverage.h" #include "util/messagequeue.h" +#include "settings/rollupstate.h" + #include "demodanalyzersettings.h" class PluginAPI; @@ -53,6 +55,7 @@ private: PluginAPI* m_pluginAPI; FeatureUISet* m_featureUISet; DemodAnalyzerSettings m_settings; + RollupState m_rollupState; int m_sampleRate; bool m_doApplySettings; diff --git a/plugins/feature/demodanalyzer/demodanalyzerplugin.cpp b/plugins/feature/demodanalyzer/demodanalyzerplugin.cpp index 34f1321d1..611f8af42 100644 --- a/plugins/feature/demodanalyzer/demodanalyzerplugin.cpp +++ b/plugins/feature/demodanalyzer/demodanalyzerplugin.cpp @@ -29,7 +29,7 @@ const PluginDescriptor DemodAnalyzerPlugin::m_pluginDescriptor = { DemodAnalyzer::m_featureId, QStringLiteral("Demod Analyzer"), - QStringLiteral("6.17.3"), + QStringLiteral("6.18.0"), QStringLiteral("(c) Edouard Griffiths, F4EXB"), QStringLiteral("https://github.com/f4exb/sdrangel"), true, diff --git a/plugins/feature/demodanalyzer/demodanalyzersettings.cpp b/plugins/feature/demodanalyzer/demodanalyzersettings.cpp index 7c8e27b52..06bf2cc05 100644 --- a/plugins/feature/demodanalyzer/demodanalyzersettings.cpp +++ b/plugins/feature/demodanalyzer/demodanalyzersettings.cpp @@ -58,7 +58,8 @@ const QStringList DemodAnalyzerSettings::m_channelURIs = { DemodAnalyzerSettings::DemodAnalyzerSettings() : m_spectrumGUI(nullptr), - m_scopeGUI(nullptr) + m_scopeGUI(nullptr), + m_rollupState(nullptr) { resetToDefaults(); } @@ -79,8 +80,14 @@ QByteArray DemodAnalyzerSettings::serialize() const { SimpleSerializer s(1); - s.writeBlob(1, m_spectrumGUI->serialize()); - s.writeBlob(2, m_scopeGUI->serialize()); + if (m_spectrumGUI) { + s.writeBlob(1, m_spectrumGUI->serialize()); + } + + if (m_scopeGUI) { + s.writeBlob(2, m_scopeGUI->serialize()); + } + s.writeS32(3, m_log2Decim); s.writeString(5, m_title); s.writeU32(6, m_rgbColor); @@ -89,7 +96,10 @@ QByteArray DemodAnalyzerSettings::serialize() const s.writeU32(9, m_reverseAPIPort); s.writeU32(10, m_reverseAPIFeatureSetIndex); s.writeU32(11, m_reverseAPIFeatureIndex); - s.writeBlob(12, m_rollupState); + + if (m_rollupState) { + s.writeBlob(12, m_rollupState->serialize()); + } return s.final(); } @@ -139,7 +149,12 @@ bool DemodAnalyzerSettings::deserialize(const QByteArray& data) m_reverseAPIFeatureSetIndex = utmp > 99 ? 99 : utmp; d.readU32(11, &utmp, 0); m_reverseAPIFeatureIndex = utmp > 99 ? 99 : utmp; - d.readBlob(12, &m_rollupState); + + if (m_rollupState) + { + d.readBlob(12, &bytetmp); + m_rollupState->deserialize(bytetmp); + } return true; } diff --git a/plugins/feature/demodanalyzer/demodanalyzersettings.h b/plugins/feature/demodanalyzer/demodanalyzersettings.h index 5c4e4931d..c4ba8516a 100644 --- a/plugins/feature/demodanalyzer/demodanalyzersettings.h +++ b/plugins/feature/demodanalyzer/demodanalyzersettings.h @@ -51,7 +51,7 @@ struct DemodAnalyzerSettings uint16_t m_reverseAPIFeatureIndex; Serializable *m_spectrumGUI; Serializable *m_scopeGUI; - QByteArray m_rollupState; + Serializable *m_rollupState; DemodAnalyzerSettings(); void resetToDefaults(); @@ -59,6 +59,7 @@ struct DemodAnalyzerSettings bool deserialize(const QByteArray& data); void setSpectrumGUI(Serializable *spectrumGUI) { m_spectrumGUI = spectrumGUI; } void setScopeGUI(Serializable *scopeGUI) { m_scopeGUI = scopeGUI; } + void setRollupState(Serializable *rollupState) { m_rollupState = rollupState; } static const QStringList m_channelTypes; static const QStringList m_channelURIs; diff --git a/plugins/feature/gs232controller/gs232controller.cpp b/plugins/feature/gs232controller/gs232controller.cpp index 90ff4b315..05002a1d4 100644 --- a/plugins/feature/gs232controller/gs232controller.cpp +++ b/plugins/feature/gs232controller/gs232controller.cpp @@ -33,6 +33,7 @@ #include "dsp/dspengine.h" #include "device/deviceset.h" #include "feature/featureset.h" +#include "settings/serializable.h" #include "maincore.h" #include "gs232controller.h" @@ -467,6 +468,20 @@ void GS232Controller::webapiFormatFeatureSettings( response.getGs232ControllerSettings()->setReverseApiPort(settings.m_reverseAPIPort); response.getGs232ControllerSettings()->setReverseApiFeatureSetIndex(settings.m_reverseAPIFeatureSetIndex); response.getGs232ControllerSettings()->setReverseApiFeatureIndex(settings.m_reverseAPIFeatureIndex); + + if (settings.m_rollupState) + { + if (response.getGs232ControllerSettings()->getRollupState()) + { + settings.m_rollupState->formatTo(response.getGs232ControllerSettings()->getRollupState()); + } + else + { + SWGSDRangel::SWGRollupState *swgRollupState = new SWGSDRangel::SWGRollupState(); + settings.m_rollupState->formatTo(swgRollupState); + response.getGs232ControllerSettings()->setRollupState(swgRollupState); + } + } } void GS232Controller::webapiUpdateFeatureSettings( @@ -543,6 +558,9 @@ void GS232Controller::webapiUpdateFeatureSettings( if (featureSettingsKeys.contains("reverseAPIFeatureIndex")) { settings.m_reverseAPIFeatureIndex = response.getGs232ControllerSettings()->getReverseApiFeatureIndex(); } + if (settings.m_rollupState && featureSettingsKeys.contains("rollupState")) { + settings.m_rollupState->updateFrom(featureSettingsKeys, response.getGs232ControllerSettings()->getRollupState()); + } } void GS232Controller::webapiReverseSendSettings(QList& featureSettingsKeys, const GS232ControllerSettings& settings, bool force) diff --git a/plugins/feature/gs232controller/gs232controllergui.cpp b/plugins/feature/gs232controller/gs232controllergui.cpp index 26fdafe46..0f3dc4293 100644 --- a/plugins/feature/gs232controller/gs232controllergui.cpp +++ b/plugins/feature/gs232controller/gs232controllergui.cpp @@ -127,7 +127,7 @@ void GS232ControllerGUI::onWidgetRolled(QWidget* widget, bool rollDown) { (void) widget; (void) rollDown; - m_settings.m_rollupState = saveState(); + saveState(m_rollupState); applySettings(); } @@ -160,6 +160,9 @@ GS232ControllerGUI::GS232ControllerGUI(PluginAPI* pluginAPI, FeatureUISet *featu ui->elevationCurrentText->setText("-"); updateSerialPortList(); + + m_settings.setRollupState(&m_rollupState); + displaySettings(); applySettings(true); } @@ -199,7 +202,7 @@ void GS232ControllerGUI::displaySettings() ui->elevationMin->setValue(m_settings.m_elevationMin); ui->elevationMax->setValue(m_settings.m_elevationMax); ui->tolerance->setValue(m_settings.m_tolerance); - restoreState(m_settings.m_rollupState); + restoreState(m_rollupState); updateConnectionWidgets(); blockApplySettings(false); } diff --git a/plugins/feature/gs232controller/gs232controllergui.h b/plugins/feature/gs232controller/gs232controllergui.h index d454bafd4..04c24f467 100644 --- a/plugins/feature/gs232controller/gs232controllergui.h +++ b/plugins/feature/gs232controller/gs232controllergui.h @@ -24,6 +24,8 @@ #include "feature/featuregui.h" #include "util/messagequeue.h" #include "pipes/pipeendpoint.h" +#include "settings/rollupstate.h" + #include "gs232controllersettings.h" class PluginAPI; @@ -50,6 +52,7 @@ private: PluginAPI* m_pluginAPI; FeatureUISet* m_featureUISet; GS232ControllerSettings m_settings; + RollupState m_rollupState; bool m_doApplySettings; QList m_availablePipes; diff --git a/plugins/feature/gs232controller/gs232controllerplugin.cpp b/plugins/feature/gs232controller/gs232controllerplugin.cpp index 7fdb6f1e5..487cbbd6c 100644 --- a/plugins/feature/gs232controller/gs232controllerplugin.cpp +++ b/plugins/feature/gs232controller/gs232controllerplugin.cpp @@ -30,7 +30,7 @@ const PluginDescriptor GS232ControllerPlugin::m_pluginDescriptor = { GS232Controller::m_featureId, QStringLiteral("Rotator Controller"), - QStringLiteral("6.17.5"), + QStringLiteral("6.18.0"), QStringLiteral("(c) Jon Beniston, M7RCE"), QStringLiteral("https://github.com/f4exb/sdrangel"), true, diff --git a/plugins/feature/gs232controller/gs232controllersettings.cpp b/plugins/feature/gs232controller/gs232controllersettings.cpp index ddb8ffe0f..0e9f3d756 100644 --- a/plugins/feature/gs232controller/gs232controllersettings.cpp +++ b/plugins/feature/gs232controller/gs232controllersettings.cpp @@ -37,7 +37,8 @@ const QStringList GS232ControllerSettings::m_pipeURIs = { QStringLiteral("sdrangel.feature.satellitetracker") }; -GS232ControllerSettings::GS232ControllerSettings() +GS232ControllerSettings::GS232ControllerSettings() : + m_rollupState(nullptr) { resetToDefaults(); } @@ -98,7 +99,10 @@ QByteArray GS232ControllerSettings::serialize() const s.writeS32(23, (int)m_connection); s.writeString(24, m_host); s.writeS32(25, m_port); - s.writeBlob(26, m_rollupState); + + if (m_rollupState) { + s.writeBlob(26, m_rollupState->serialize()); + } return s.final(); } @@ -152,7 +156,12 @@ bool GS232ControllerSettings::deserialize(const QByteArray& data) d.readS32(23, (int*)&m_connection, SERIAL); d.readString(24, &m_host, "127.0.0.1"); d.readS32(25, &m_port, 4533); - d.readBlob(26, &m_rollupState); + + if (m_rollupState) + { + d.readBlob(26, &bytetmp); + m_rollupState->deserialize(bytetmp); + } return true; } diff --git a/plugins/feature/gs232controller/gs232controllersettings.h b/plugins/feature/gs232controller/gs232controllersettings.h index e79668438..d91bd6c10 100644 --- a/plugins/feature/gs232controller/gs232controllersettings.h +++ b/plugins/feature/gs232controller/gs232controllersettings.h @@ -45,7 +45,7 @@ struct GS232ControllerSettings float m_tolerance; enum Protocol { GS232, SPID, ROTCTLD } m_protocol; enum Connection { SERIAL, TCP } m_connection; - QByteArray m_rollupState; + Serializable *m_rollupState; QString m_title; quint32 m_rgbColor; bool m_useReverseAPI; @@ -58,6 +58,7 @@ struct GS232ControllerSettings void resetToDefaults(); QByteArray serialize() const; bool deserialize(const QByteArray& data); + void setRollupState(Serializable *rollupState) { m_rollupState = rollupState; } void calcTargetAzEl(float& targetAz, float& targetEl) const; static const QStringList m_pipeTypes; diff --git a/plugins/feature/jogdialcontroller/jogdialcontroller.cpp b/plugins/feature/jogdialcontroller/jogdialcontroller.cpp index 43199bba7..8e3fb9022 100644 --- a/plugins/feature/jogdialcontroller/jogdialcontroller.cpp +++ b/plugins/feature/jogdialcontroller/jogdialcontroller.cpp @@ -34,6 +34,7 @@ #include "channel/channelapi.h" #include "device/deviceapi.h" #include "commands/commandkeyreceiver.h" +#include "settings/serializable.h" #include "maincore.h" #include "jogdialcontroller.h" @@ -364,6 +365,20 @@ void JogdialController::webapiFormatFeatureSettings( response.getJogdialControllerSettings()->setReverseApiPort(settings.m_reverseAPIPort); response.getJogdialControllerSettings()->setReverseApiFeatureSetIndex(settings.m_reverseAPIFeatureSetIndex); response.getJogdialControllerSettings()->setReverseApiFeatureIndex(settings.m_reverseAPIFeatureIndex); + + if (settings.m_rollupState) + { + if (response.getJogdialControllerSettings()->getRollupState()) + { + settings.m_rollupState->formatTo(response.getJogdialControllerSettings()->getRollupState()); + } + else + { + SWGSDRangel::SWGRollupState *swgRollupState = new SWGSDRangel::SWGRollupState(); + settings.m_rollupState->formatTo(swgRollupState); + response.getJogdialControllerSettings()->setRollupState(swgRollupState); + } + } } void JogdialController::webapiUpdateFeatureSettings( @@ -392,6 +407,9 @@ void JogdialController::webapiUpdateFeatureSettings( if (featureSettingsKeys.contains("reverseAPIFeatureIndex")) { settings.m_reverseAPIFeatureIndex = response.getJogdialControllerSettings()->getReverseApiFeatureIndex(); } + if (settings.m_rollupState && featureSettingsKeys.contains("rollupState")) { + settings.m_rollupState->updateFrom(featureSettingsKeys, response.getJogdialControllerSettings()->getRollupState()); + } } void JogdialController::webapiReverseSendSettings(QList& featureSettingsKeys, const JogdialControllerSettings& settings, bool force) diff --git a/plugins/feature/jogdialcontroller/jogdialcontrollergui.cpp b/plugins/feature/jogdialcontroller/jogdialcontrollergui.cpp index 2b45a6941..12afa2009 100644 --- a/plugins/feature/jogdialcontroller/jogdialcontrollergui.cpp +++ b/plugins/feature/jogdialcontroller/jogdialcontrollergui.cpp @@ -132,7 +132,7 @@ void JogdialControllerGUI::onWidgetRolled(QWidget* widget, bool rollDown) (void) widget; (void) rollDown; - m_settings.m_rollupState = saveState(); + saveState(m_rollupState); applySettings(); } @@ -165,6 +165,8 @@ JogdialControllerGUI::JogdialControllerGUI(PluginAPI* pluginAPI, FeatureUISet *f connect(&MainCore::instance()->getMasterTimer(), SIGNAL(timeout()), this, SLOT(tick())); this->installEventFilter(&m_commandKeyReceiver); + m_settings.setRollupState(&m_rollupState); + displaySettings(); applySettings(true); } @@ -184,7 +186,7 @@ void JogdialControllerGUI::displaySettings() setTitleColor(m_settings.m_rgbColor); setWindowTitle(m_settings.m_title); blockApplySettings(true); - restoreState(m_settings.m_rollupState); + restoreState(m_rollupState); blockApplySettings(false); } diff --git a/plugins/feature/jogdialcontroller/jogdialcontrollergui.h b/plugins/feature/jogdialcontroller/jogdialcontrollergui.h index 98e2fae59..a6b680ceb 100644 --- a/plugins/feature/jogdialcontroller/jogdialcontrollergui.h +++ b/plugins/feature/jogdialcontroller/jogdialcontrollergui.h @@ -24,6 +24,8 @@ #include "feature/featuregui.h" #include "util/messagequeue.h" #include "commands/commandkeyreceiver.h" +#include "settings/rollupstate.h" + #include "jogdialcontrollersettings.h" class PluginAPI; @@ -55,6 +57,7 @@ private: PluginAPI* m_pluginAPI; FeatureUISet* m_featureUISet; JogdialControllerSettings m_settings; + RollupState m_rollupState; bool m_doApplySettings; JogdialController* m_jogdialController; diff --git a/plugins/feature/jogdialcontroller/jogdialcontrollersettings.cpp b/plugins/feature/jogdialcontroller/jogdialcontrollersettings.cpp index 58eade8f1..8893cbe5e 100644 --- a/plugins/feature/jogdialcontroller/jogdialcontrollersettings.cpp +++ b/plugins/feature/jogdialcontroller/jogdialcontrollersettings.cpp @@ -56,7 +56,8 @@ const QStringList JogdialControllerSettings::m_channelURIs = { QStringLiteral("sdrangel.channeltx.modwfm"), }; -JogdialControllerSettings::JogdialControllerSettings() +JogdialControllerSettings::JogdialControllerSettings() : + m_rollupState(nullptr) { resetToDefaults(); } @@ -83,7 +84,10 @@ QByteArray JogdialControllerSettings::serialize() const s.writeU32(9, m_reverseAPIPort); s.writeU32(10, m_reverseAPIFeatureSetIndex); s.writeU32(11, m_reverseAPIFeatureIndex); - s.writeBlob(12, m_rollupState); + + if (m_rollupState) { + s.writeBlob(12, m_rollupState->serialize()); + } return s.final(); } @@ -120,7 +124,12 @@ bool JogdialControllerSettings::deserialize(const QByteArray& data) m_reverseAPIFeatureSetIndex = utmp > 99 ? 99 : utmp; d.readU32(11, &utmp, 0); m_reverseAPIFeatureIndex = utmp > 99 ? 99 : utmp; - d.readBlob(12, &m_rollupState); + + if (m_rollupState) + { + d.readBlob(12, &bytetmp); + m_rollupState->deserialize(bytetmp); + } return true; } diff --git a/plugins/feature/jogdialcontroller/jogdialcontrollersettings.h b/plugins/feature/jogdialcontroller/jogdialcontrollersettings.h index 440fd0248..5d1b82773 100644 --- a/plugins/feature/jogdialcontroller/jogdialcontrollersettings.h +++ b/plugins/feature/jogdialcontroller/jogdialcontrollersettings.h @@ -51,12 +51,13 @@ struct JogdialControllerSettings uint16_t m_reverseAPIPort; uint16_t m_reverseAPIFeatureSetIndex; uint16_t m_reverseAPIFeatureIndex; - QByteArray m_rollupState; + Serializable *m_rollupState; JogdialControllerSettings(); void resetToDefaults(); QByteArray serialize() const; bool deserialize(const QByteArray& data); + void setRollupState(Serializable *rollupState) { m_rollupState = rollupState; } static const QStringList m_channelTypes; static const QStringList m_channelURIs; diff --git a/plugins/feature/map/map.cpp b/plugins/feature/map/map.cpp index 10b179a1c..082b05214 100644 --- a/plugins/feature/map/map.cpp +++ b/plugins/feature/map/map.cpp @@ -31,6 +31,7 @@ #include "device/deviceset.h" #include "channel/channelapi.h" #include "feature/featureset.h" +#include "settings/serializable.h" #include "maincore.h" #include "map.h" @@ -260,6 +261,20 @@ void Map::webapiFormatFeatureSettings( response.getMapSettings()->setReverseApiPort(settings.m_reverseAPIPort); response.getMapSettings()->setReverseApiFeatureSetIndex(settings.m_reverseAPIFeatureSetIndex); response.getMapSettings()->setReverseApiFeatureIndex(settings.m_reverseAPIFeatureIndex); + + if (settings.m_rollupState) + { + if (response.getMapSettings()->getRollupState()) + { + settings.m_rollupState->formatTo(response.getMapSettings()->getRollupState()); + } + else + { + SWGSDRangel::SWGRollupState *swgRollupState = new SWGSDRangel::SWGRollupState(); + settings.m_rollupState->formatTo(swgRollupState); + response.getMapSettings()->setRollupState(swgRollupState); + } + } } void Map::webapiUpdateFeatureSettings( @@ -291,6 +306,9 @@ void Map::webapiUpdateFeatureSettings( if (featureSettingsKeys.contains("reverseAPIFeatureIndex")) { settings.m_reverseAPIFeatureIndex = response.getMapSettings()->getReverseApiFeatureIndex(); } + if (settings.m_rollupState && featureSettingsKeys.contains("rollupState")) { + settings.m_rollupState->updateFrom(featureSettingsKeys, response.getMapSettings()->getRollupState()); + } } void Map::webapiReverseSendSettings(QList& featureSettingsKeys, const MapSettings& settings, bool force) diff --git a/plugins/feature/map/mapgui.cpp b/plugins/feature/map/mapgui.cpp index 01b8d1ef5..f90d27ec0 100644 --- a/plugins/feature/map/mapgui.cpp +++ b/plugins/feature/map/mapgui.cpp @@ -671,7 +671,7 @@ void MapGUI::onWidgetRolled(QWidget* widget, bool rollDown) (void) widget; (void) rollDown; - m_settings.m_rollupState = saveState(); + saveState(m_rollupState); applySettings(); } @@ -710,6 +710,7 @@ MapGUI::MapGUI(PluginAPI* pluginAPI, FeatureUISet *featureUISet, Feature *featur m_map->setMessageQueueToGUI(&m_inputMessageQueue); m_featureUISet->addRollupWidget(this); + m_settings.setRollupState(&m_rollupState); connect(this, SIGNAL(customContextMenuRequested(const QPoint &)), this, SLOT(onMenuDialogCalled(const QPoint &))); connect(getInputMessageQueue(), SIGNAL(messageEnqueued()), this, SLOT(handleInputMessages())); @@ -1146,7 +1147,7 @@ void MapGUI::displaySettings() m_mapModel.setGroundTrackColor(m_settings.m_groundTrackColor); m_mapModel.setPredictedGroundTrackColor(m_settings.m_predictedGroundTrackColor); applyMapSettings(); - restoreState(m_settings.m_rollupState); + restoreState(m_rollupState); blockApplySettings(false); } diff --git a/plugins/feature/map/mapgui.h b/plugins/feature/map/mapgui.h index 317a66b40..375109eb2 100644 --- a/plugins/feature/map/mapgui.h +++ b/plugins/feature/map/mapgui.h @@ -28,8 +28,11 @@ #include "util/messagequeue.h" #include "util/azel.h" #include "pipes/pipeendpoint.h" -#include "mapsettings.h" +#include "settings/rollupstate.h" + #include "SWGMapItem.h" + +#include "mapsettings.h" #include "mapbeacondialog.h" #include "mapibpbeacondialog.h" #include "mapradiotimedialog.h" @@ -495,6 +498,7 @@ private: PluginAPI* m_pluginAPI; FeatureUISet* m_featureUISet; MapSettings m_settings; + RollupState m_rollupState; bool m_doApplySettings; QList m_availablePipes; diff --git a/plugins/feature/map/mapplugin.cpp b/plugins/feature/map/mapplugin.cpp index e83ffb255..fe92169c0 100644 --- a/plugins/feature/map/mapplugin.cpp +++ b/plugins/feature/map/mapplugin.cpp @@ -30,7 +30,7 @@ const PluginDescriptor MapPlugin::m_pluginDescriptor = { Map::m_featureId, QStringLiteral("Map"), - QStringLiteral("6.17.5"), + QStringLiteral("6.18.0"), QStringLiteral("(c) Jon Beniston, M7RCE"), QStringLiteral("https://github.com/f4exb/sdrangel"), true, diff --git a/plugins/feature/map/mapsettings.cpp b/plugins/feature/map/mapsettings.cpp index 0659bb0c6..be7149f01 100644 --- a/plugins/feature/map/mapsettings.cpp +++ b/plugins/feature/map/mapsettings.cpp @@ -47,7 +47,8 @@ const QStringList MapSettings::m_mapProviders = { QStringLiteral("mapboxgl") }; -MapSettings::MapSettings() +MapSettings::MapSettings() : + m_rollupState(nullptr) { resetToDefaults(); } @@ -97,7 +98,11 @@ QByteArray MapSettings::serialize() const s.writeBool(16, m_displayAllGroundTracks); s.writeString(17, m_thunderforestAPIKey); s.writeString(18, m_maptilerAPIKey); - s.writeBlob(19, m_rollupState); + + if (m_rollupState) { + s.writeBlob(19, m_rollupState->serialize()); + } + s.writeString(20, m_osmURL); return s.final(); @@ -144,10 +149,15 @@ bool MapSettings::deserialize(const QByteArray& data) m_reverseAPIFeatureIndex = utmp > 99 ? 99 : utmp; d.readBool(15, &m_displaySelectedGroundTracks, true); d.readBool(16, &m_displayAllGroundTracks, true); - d.readString(17, &m_thunderforestAPIKey, ""); d.readString(18, &m_maptilerAPIKey, ""); - d.readBlob(19, &m_rollupState); + + if (m_rollupState) + { + d.readBlob(19, &bytetmp); + m_rollupState->deserialize(bytetmp); + } + d.readString(20, &m_osmURL, ""); return true; diff --git a/plugins/feature/map/mapsettings.h b/plugins/feature/map/mapsettings.h index 0db5886ec..3ac505854 100644 --- a/plugins/feature/map/mapsettings.h +++ b/plugins/feature/map/mapsettings.h @@ -48,12 +48,13 @@ struct MapSettings uint16_t m_reverseAPIPort; uint16_t m_reverseAPIFeatureSetIndex; uint16_t m_reverseAPIFeatureIndex; - QByteArray m_rollupState; + Serializable *m_rollupState; MapSettings(); void resetToDefaults(); QByteArray serialize() const; bool deserialize(const QByteArray& data); + void setRollupState(Serializable *rollupState) { m_rollupState = rollupState; } static const QStringList m_pipeTypes; static const QStringList m_pipeURIs; diff --git a/plugins/feature/pertester/pertester.cpp b/plugins/feature/pertester/pertester.cpp index 3794ffbce..9c53bfa16 100644 --- a/plugins/feature/pertester/pertester.cpp +++ b/plugins/feature/pertester/pertester.cpp @@ -32,6 +32,7 @@ #include "device/deviceset.h" #include "channel/channelapi.h" #include "feature/featureset.h" +#include "settings/serializable.h" #include "maincore.h" #include "pertester.h" @@ -351,6 +352,20 @@ void PERTester::webapiFormatFeatureSettings( } response.getPerTesterSettings()->setReverseApiPort(settings.m_reverseAPIPort); + + if (settings.m_rollupState) + { + if (response.getPerTesterSettings()->getRollupState()) + { + settings.m_rollupState->formatTo(response.getPerTesterSettings()->getRollupState()); + } + else + { + SWGSDRangel::SWGRollupState *swgRollupState = new SWGSDRangel::SWGRollupState(); + settings.m_rollupState->formatTo(swgRollupState); + response.getPerTesterSettings()->setRollupState(swgRollupState); + } + } } void PERTester::webapiUpdateFeatureSettings( @@ -406,6 +421,9 @@ void PERTester::webapiUpdateFeatureSettings( if (featureSettingsKeys.contains("reverseAPIPort")) { settings.m_reverseAPIPort = response.getPerTesterSettings()->getReverseApiPort(); } + if (settings.m_rollupState && featureSettingsKeys.contains("rollupState")) { + settings.m_rollupState->updateFrom(featureSettingsKeys, response.getPerTesterSettings()->getRollupState()); + } } void PERTester::webapiReverseSendSettings(QList& featureSettingsKeys, const PERTesterSettings& settings, bool force) diff --git a/plugins/feature/pertester/pertestergui.cpp b/plugins/feature/pertester/pertestergui.cpp index fe141a9b7..cc3083931 100644 --- a/plugins/feature/pertester/pertestergui.cpp +++ b/plugins/feature/pertester/pertestergui.cpp @@ -114,7 +114,7 @@ void PERTesterGUI::onWidgetRolled(QWidget* widget, bool rollDown) (void) widget; (void) rollDown; - m_settings.m_rollupState = saveState(); + saveState(m_rollupState); applySettings(); } @@ -135,6 +135,7 @@ PERTesterGUI::PERTesterGUI(PluginAPI* pluginAPI, FeatureUISet *featureUISet, Fea m_perTester->setMessageQueueToGUI(&m_inputMessageQueue); m_featureUISet->addRollupWidget(this); + m_settings.setRollupState(&m_rollupState); connect(this, SIGNAL(customContextMenuRequested(const QPoint &)), this, SLOT(onMenuDialogCalled(const QPoint &))); connect(getInputMessageQueue(), SIGNAL(messageEnqueued()), this, SLOT(handleInputMessages())); @@ -174,7 +175,7 @@ void PERTesterGUI::displaySettings() ui->txUDPPort->setText(QString::number(m_settings.m_txUDPPort)); ui->rxUDPAddress->setText(m_settings.m_rxUDPAddress); ui->rxUDPPort->setText(QString::number(m_settings.m_rxUDPPort)); - restoreState(m_settings.m_rollupState); + restoreState(m_rollupState); blockApplySettings(false); arrangeRollups(); } diff --git a/plugins/feature/pertester/pertestergui.h b/plugins/feature/pertester/pertestergui.h index 45039f877..839013f4a 100644 --- a/plugins/feature/pertester/pertestergui.h +++ b/plugins/feature/pertester/pertestergui.h @@ -24,6 +24,8 @@ #include "feature/featuregui.h" #include "util/messagequeue.h" #include "pipes/pipeendpoint.h" +#include "settings/rollupstate.h" + #include "pertestersettings.h" class PluginAPI; @@ -50,6 +52,7 @@ private: PluginAPI* m_pluginAPI; FeatureUISet* m_featureUISet; PERTesterSettings m_settings; + RollupState m_rollupState; bool m_doApplySettings; PERTester* m_perTester; diff --git a/plugins/feature/pertester/pertesterplugin.cpp b/plugins/feature/pertester/pertesterplugin.cpp index c12dea5ee..c11bbad05 100644 --- a/plugins/feature/pertester/pertesterplugin.cpp +++ b/plugins/feature/pertester/pertesterplugin.cpp @@ -30,7 +30,7 @@ const PluginDescriptor PERTesterPlugin::m_pluginDescriptor = { PERTester::m_featureId, QStringLiteral("Packet Error Rate Tester"), - QStringLiteral("6.17.2"), + QStringLiteral("6.18.0"), QStringLiteral("(c) Jon Beniston, M7RCE"), QStringLiteral("https://github.com/f4exb/sdrangel"), true, diff --git a/plugins/feature/pertester/pertestersettings.cpp b/plugins/feature/pertester/pertestersettings.cpp index 40ceb3085..7499902d4 100644 --- a/plugins/feature/pertester/pertestersettings.cpp +++ b/plugins/feature/pertester/pertestersettings.cpp @@ -24,7 +24,8 @@ #include "pertestersettings.h" -PERTesterSettings::PERTesterSettings() +PERTesterSettings::PERTesterSettings() : + m_rollupState(nullptr) { resetToDefaults(); } @@ -65,7 +66,6 @@ QByteArray PERTesterSettings::serialize() const s.writeS32(8, m_ignoreTrailingBytes); s.writeS32(9, (int)m_start); s.writeBlob(10, serializeStringList(m_satellites)); - s.writeString(20, m_title); s.writeU32(21, m_rgbColor); s.writeBool(22, m_useReverseAPI); @@ -73,7 +73,10 @@ QByteArray PERTesterSettings::serialize() const s.writeU32(24, m_reverseAPIPort); s.writeU32(25, m_reverseAPIFeatureSetIndex); s.writeU32(26, m_reverseAPIFeatureIndex); - s.writeBlob(27, m_rollupState); + + if (m_rollupState) { + s.writeBlob(27, m_rollupState->serialize()); + } return s.final(); } @@ -99,24 +102,27 @@ bool PERTesterSettings::deserialize(const QByteArray& data) d.readFloat(2, &m_interval, 1.0f); d.readString(3, &m_txUDPAddress); d.readU32(4, &utmp); + if ((utmp > 1023) && (utmp < 65535)) { m_txUDPPort = utmp; } else { m_txUDPPort = 8888; } + d.readString(5, &m_rxUDPAddress); d.readU32(6, &utmp); + if ((utmp > 1023) && (utmp < 65535)) { m_rxUDPPort = utmp; } else { m_rxUDPPort = 8888; } + d.readS32(7, &m_ignoreLeadingBytes, 0); d.readS32(8, &m_ignoreTrailingBytes, 2); d.readS32(9, (int*)&m_start, (int)START_IMMEDIATELY); d.readBlob(10, &blob); deserializeStringList(blob, m_satellites); - d.readString(20, &m_title, "Packet Error Rate Tester"); d.readU32(21, &m_rgbColor, QColor(225, 25, 99).rgb()); d.readBool(22, &m_useReverseAPI, false); @@ -134,7 +140,11 @@ bool PERTesterSettings::deserialize(const QByteArray& data) d.readU32(26, &utmp, 0); m_reverseAPIFeatureIndex = utmp > 99 ? 99 : utmp; - d.readBlob(27, &m_rollupState); + if (m_rollupState) + { + d.readBlob(27, &bytetmp); + m_rollupState->deserialize(bytetmp); + } return true; } diff --git a/plugins/feature/pertester/pertestersettings.h b/plugins/feature/pertester/pertestersettings.h index 486ad5a95..ea2cfcc83 100644 --- a/plugins/feature/pertester/pertestersettings.h +++ b/plugins/feature/pertester/pertestersettings.h @@ -47,12 +47,13 @@ struct PERTesterSettings uint16_t m_reverseAPIPort; uint16_t m_reverseAPIFeatureSetIndex; uint16_t m_reverseAPIFeatureIndex; - QByteArray m_rollupState; + Serializable *m_rollupState; PERTesterSettings(); void resetToDefaults(); QByteArray serialize() const; bool deserialize(const QByteArray& data); + void setRollupState(Serializable *rollupState) { m_rollupState = rollupState; } QByteArray serializeStringList(const QList& strings) const; void deserializeStringList(const QByteArray& data, QList& strings); diff --git a/plugins/feature/rigctlserver/rigctlserver.cpp b/plugins/feature/rigctlserver/rigctlserver.cpp index 32716d791..be599bd9b 100644 --- a/plugins/feature/rigctlserver/rigctlserver.cpp +++ b/plugins/feature/rigctlserver/rigctlserver.cpp @@ -27,6 +27,7 @@ #include "SWGDeviceState.h" #include "dsp/dspengine.h" +#include "settings/serializable.h" #include "rigctlserverworker.h" #include "rigctlserver.h" @@ -331,6 +332,20 @@ void RigCtlServer::webapiFormatFeatureSettings( response.getRigCtlServerSettings()->setReverseApiPort(settings.m_reverseAPIPort); response.getRigCtlServerSettings()->setReverseApiFeatureSetIndex(settings.m_reverseAPIFeatureSetIndex); response.getRigCtlServerSettings()->setReverseApiFeatureIndex(settings.m_reverseAPIFeatureIndex); + + if (settings.m_rollupState) + { + if (response.getRigCtlServerSettings()->getRollupState()) + { + settings.m_rollupState->formatTo(response.getRigCtlServerSettings()->getRollupState()); + } + else + { + SWGSDRangel::SWGRollupState *swgRollupState = new SWGSDRangel::SWGRollupState(); + settings.m_rollupState->formatTo(swgRollupState); + response.getRigCtlServerSettings()->setRollupState(swgRollupState); + } + } } void RigCtlServer::webapiUpdateFeatureSettings( @@ -374,6 +389,9 @@ void RigCtlServer::webapiUpdateFeatureSettings( if (featureSettingsKeys.contains("reverseAPIFeatureIndex")) { settings.m_reverseAPIFeatureIndex = response.getRigCtlServerSettings()->getReverseApiFeatureIndex(); } + if (settings.m_rollupState && featureSettingsKeys.contains("rollupState")) { + settings.m_rollupState->updateFrom(featureSettingsKeys, response.getRigCtlServerSettings()->getRollupState()); + } } void RigCtlServer::webapiReverseSendSettings(QList& featureSettingsKeys, const RigCtlServerSettings& settings, bool force) diff --git a/plugins/feature/rigctlserver/rigctlservergui.cpp b/plugins/feature/rigctlserver/rigctlservergui.cpp index f637c5ca4..da18a7698 100644 --- a/plugins/feature/rigctlserver/rigctlservergui.cpp +++ b/plugins/feature/rigctlserver/rigctlservergui.cpp @@ -114,7 +114,7 @@ void RigCtlServerGUI::onWidgetRolled(QWidget* widget, bool rollDown) (void) widget; (void) rollDown; - m_settings.m_rollupState = saveState(); + saveState(m_rollupState); applySettings(); } @@ -135,6 +135,7 @@ RigCtlServerGUI::RigCtlServerGUI(PluginAPI* pluginAPI, FeatureUISet *featureUISe m_rigCtlServer->setMessageQueueToGUI(&m_inputMessageQueue); m_featureUISet->addRollupWidget(this); + m_settings.setRollupState(&m_rollupState); connect(this, SIGNAL(customContextMenuRequested(const QPoint &)), this, SLOT(onMenuDialogCalled(const QPoint &))); connect(getInputMessageQueue(), SIGNAL(messageEnqueued()), this, SLOT(handleInputMessages())); @@ -164,7 +165,7 @@ void RigCtlServerGUI::displaySettings() blockApplySettings(true); ui->rigCtrlPort->setValue(m_settings.m_rigCtlPort); ui->maxFrequencyOffset->setValue(m_settings.m_maxFrequencyOffset); - restoreState(m_settings.m_rollupState); + restoreState(m_rollupState); blockApplySettings(false); } diff --git a/plugins/feature/rigctlserver/rigctlservergui.h b/plugins/feature/rigctlserver/rigctlservergui.h index 889a553fa..1529ae2bf 100644 --- a/plugins/feature/rigctlserver/rigctlservergui.h +++ b/plugins/feature/rigctlserver/rigctlservergui.h @@ -23,6 +23,8 @@ #include "feature/featuregui.h" #include "util/messagequeue.h" +#include "settings/rollupstate.h" + #include "rigctlserversettings.h" class PluginAPI; @@ -49,6 +51,7 @@ private: PluginAPI* m_pluginAPI; FeatureUISet* m_featureUISet; RigCtlServerSettings m_settings; + RollupState m_rollupState; bool m_doApplySettings; RigCtlServer* m_rigCtlServer; diff --git a/plugins/feature/rigctlserver/rigctlserverplugin.cpp b/plugins/feature/rigctlserver/rigctlserverplugin.cpp index 1bae2ee25..cd7df89d4 100644 --- a/plugins/feature/rigctlserver/rigctlserverplugin.cpp +++ b/plugins/feature/rigctlserver/rigctlserverplugin.cpp @@ -30,7 +30,7 @@ const PluginDescriptor RigCtlServerPlugin::m_pluginDescriptor = { RigCtlServer::m_featureId, QStringLiteral("RigCtl Server"), - QStringLiteral("6.17.2"), + QStringLiteral("6.18.0"), QStringLiteral("(c) Jon Beniston, M7RCE and Edouard Griffiths, F4EXB"), QStringLiteral("https://github.com/f4exb/sdrangel"), true, diff --git a/plugins/feature/rigctlserver/rigctlserversettings.cpp b/plugins/feature/rigctlserver/rigctlserversettings.cpp index 659d2b0f1..a875dc5d1 100644 --- a/plugins/feature/rigctlserver/rigctlserversettings.cpp +++ b/plugins/feature/rigctlserver/rigctlserversettings.cpp @@ -25,7 +25,8 @@ MESSAGE_CLASS_DEFINITION(RigCtlServerSettings::MsgChannelIndexChange, Message) -RigCtlServerSettings::RigCtlServerSettings() +RigCtlServerSettings::RigCtlServerSettings() : + m_rollupState(nullptr) { resetToDefaults(); } @@ -60,7 +61,10 @@ QByteArray RigCtlServerSettings::serialize() const s.writeU32(9, m_reverseAPIPort); s.writeU32(10, m_reverseAPIFeatureSetIndex); s.writeU32(11, m_reverseAPIFeatureIndex); - s.writeBlob(12, m_rollupState); + + if (m_rollupState) { + s.writeBlob(12, m_rollupState->serialize()); + } return s.final(); } @@ -108,7 +112,12 @@ bool RigCtlServerSettings::deserialize(const QByteArray& data) m_reverseAPIFeatureSetIndex = utmp > 99 ? 99 : utmp; d.readU32(11, &utmp, 0); m_reverseAPIFeatureIndex = utmp > 99 ? 99 : utmp; - d.readBlob(12, &m_rollupState); + + if (m_rollupState) + { + d.readBlob(12, &bytetmp); + m_rollupState->deserialize(bytetmp); + } return true; } diff --git a/plugins/feature/rigctlserver/rigctlserversettings.h b/plugins/feature/rigctlserver/rigctlserversettings.h index 957b58009..70bdabf65 100644 --- a/plugins/feature/rigctlserver/rigctlserversettings.h +++ b/plugins/feature/rigctlserver/rigctlserversettings.h @@ -59,12 +59,13 @@ struct RigCtlServerSettings uint16_t m_reverseAPIPort; uint16_t m_reverseAPIFeatureSetIndex; uint16_t m_reverseAPIFeatureIndex; - QByteArray m_rollupState; + Serializable *m_rollupState; RigCtlServerSettings(); void resetToDefaults(); QByteArray serialize() const; bool deserialize(const QByteArray& data); + void setRollupState(Serializable *rollupState) { m_rollupState = rollupState; } }; #endif // INCLUDE_FEATURE_RIGCTLSERVERSETTINGS_H_ diff --git a/plugins/feature/satellitetracker/satellitetracker.cpp b/plugins/feature/satellitetracker/satellitetracker.cpp index ef596bb40..11672beb4 100644 --- a/plugins/feature/satellitetracker/satellitetracker.cpp +++ b/plugins/feature/satellitetracker/satellitetracker.cpp @@ -30,6 +30,7 @@ #include "dsp/dspengine.h" #include "util/httpdownloadmanager.h" +#include "settings/serializable.h" #include "satellitetrackerworker.h" #include "satellitetracker.h" @@ -585,6 +586,20 @@ void SatelliteTracker::webapiFormatFeatureSettings( response.getSatelliteTrackerSettings()->setReverseApiPort(settings.m_reverseAPIPort); response.getSatelliteTrackerSettings()->setReverseApiFeatureSetIndex(settings.m_reverseAPIFeatureSetIndex); response.getSatelliteTrackerSettings()->setReverseApiFeatureIndex(settings.m_reverseAPIFeatureIndex); + + if (settings.m_rollupState) + { + if (response.getSatelliteTrackerSettings()->getRollupState()) + { + settings.m_rollupState->formatTo(response.getSatelliteTrackerSettings()->getRollupState()); + } + else + { + SWGSDRangel::SWGRollupState *swgRollupState = new SWGSDRangel::SWGRollupState(); + settings.m_rollupState->formatTo(swgRollupState); + response.getSatelliteTrackerSettings()->setRollupState(swgRollupState); + } + } } void SatelliteTracker::webapiUpdateFeatureSettings( @@ -697,6 +712,9 @@ void SatelliteTracker::webapiUpdateFeatureSettings( if (featureSettingsKeys.contains("reverseAPIFeatureIndex")) { settings.m_reverseAPIFeatureIndex = response.getSatelliteTrackerSettings()->getReverseApiFeatureIndex(); } + if (settings.m_rollupState && featureSettingsKeys.contains("rollupState")) { + settings.m_rollupState->updateFrom(featureSettingsKeys, response.getSatelliteTrackerSettings()->getRollupState()); + } } void SatelliteTracker::webapiReverseSendSettings(QList& featureSettingsKeys, const SatelliteTrackerSettings& settings, bool force) diff --git a/plugins/feature/satellitetracker/satellitetrackergui.cpp b/plugins/feature/satellitetracker/satellitetrackergui.cpp index 076a2dba0..0b4603cdc 100644 --- a/plugins/feature/satellitetracker/satellitetrackergui.cpp +++ b/plugins/feature/satellitetracker/satellitetrackergui.cpp @@ -227,7 +227,7 @@ void SatelliteTrackerGUI::onWidgetRolled(QWidget* widget, bool rollDown) (void) widget; (void) rollDown; - m_settings.m_rollupState = saveState(); + saveState(m_rollupState); applySettings(); } @@ -254,6 +254,7 @@ SatelliteTrackerGUI::SatelliteTrackerGUI(PluginAPI* pluginAPI, FeatureUISet *fea m_satelliteTracker->setMessageQueueToGUI(&m_inputMessageQueue); m_featureUISet->addRollupWidget(this); + m_settings.setRollupState(&m_rollupState); connect(this, SIGNAL(customContextMenuRequested(const QPoint &)), this, SLOT(onMenuDialogCalled(const QPoint &))); connect(getInputMessageQueue(), SIGNAL(messageEnqueued()), this, SLOT(handleInputMessages())); @@ -270,8 +271,9 @@ SatelliteTrackerGUI::SatelliteTrackerGUI(PluginAPI* pluginAPI, FeatureUISet *fea ui->dateTime->setDateTime(SatelliteTracker::currentDateTime()); // Use My Position from preferences, if none set - if ((m_settings.m_latitude == 0.0) && (m_settings.m_longitude == 0.0)) + if ((m_settings.m_latitude == 0.0) && (m_settings.m_longitude == 0.0)) { on_useMyPosition_clicked(); + } resizeTable(); // Allow user to reorder columns @@ -280,11 +282,13 @@ SatelliteTrackerGUI::SatelliteTrackerGUI(PluginAPI* pluginAPI, FeatureUISet *fea ui->satTable->setSortingEnabled(true); // Add context menu to allow hiding/showing of columns menu = new QMenu(ui->satTable); + for (int i = 0; i < ui->satTable->horizontalHeader()->count(); i++) { QString text = ui->satTable->horizontalHeaderItem(i)->text(); menu->addAction(createCheckableItem(text, i, true)); } + ui->satTable->horizontalHeader()->setContextMenuPolicy(Qt::CustomContextMenu); connect(ui->satTable->horizontalHeader(), SIGNAL(customContextMenuRequested(QPoint)), SLOT(columnSelectMenu(QPoint))); // Get signals when columns change @@ -337,7 +341,7 @@ void SatelliteTrackerGUI::displaySettings() } ui->autoTarget->setChecked(m_settings.m_autoTarget); ui->darkTheme->setChecked(m_settings.m_chartsDarkTheme); - restoreState(m_settings.m_rollupState); + restoreState(m_rollupState); plotChart(); blockApplySettings(false); } diff --git a/plugins/feature/satellitetracker/satellitetrackergui.h b/plugins/feature/satellitetracker/satellitetrackergui.h index 2c80f35da..215f3271c 100644 --- a/plugins/feature/satellitetracker/satellitetrackergui.h +++ b/plugins/feature/satellitetracker/satellitetrackergui.h @@ -26,6 +26,8 @@ #include "feature/featuregui.h" #include "util/messagequeue.h" +#include "settings/rollupstate.h" + #include "satellitetrackersettings.h" #include "satnogs.h" @@ -56,6 +58,7 @@ private: PluginAPI* m_pluginAPI; FeatureUISet* m_featureUISet; SatelliteTrackerSettings m_settings; + RollupState m_rollupState; bool m_doApplySettings; SatelliteTracker* m_satelliteTracker; diff --git a/plugins/feature/satellitetracker/satellitetrackerplugin.cpp b/plugins/feature/satellitetracker/satellitetrackerplugin.cpp index fcc07163b..fdf6d80a7 100644 --- a/plugins/feature/satellitetracker/satellitetrackerplugin.cpp +++ b/plugins/feature/satellitetracker/satellitetrackerplugin.cpp @@ -30,7 +30,7 @@ const PluginDescriptor SatelliteTrackerPlugin::m_pluginDescriptor = { SatelliteTracker::m_featureId, QStringLiteral("Satellite Tracker"), - QStringLiteral("6.17.4"), + QStringLiteral("6.18.0"), QStringLiteral("(c) Jon Beniston, M7RCE and Daniel Warner (SGP4 library)"), QStringLiteral("https://github.com/f4exb/sdrangel"), true, diff --git a/plugins/feature/satellitetracker/satellitetrackersettings.cpp b/plugins/feature/satellitetracker/satellitetrackersettings.cpp index 1919ae6ef..843437a82 100644 --- a/plugins/feature/satellitetracker/satellitetrackersettings.cpp +++ b/plugins/feature/satellitetracker/satellitetrackersettings.cpp @@ -30,7 +30,8 @@ #define DEFAULT_AOS_SPEECH "${name} is visible for ${duration} minutes. Max elevation, ${elevation} degrees." #define DEFAULT_LOS_SPEECH "${name} is no longer visible." -SatelliteTrackerSettings::SatelliteTrackerSettings() +SatelliteTrackerSettings::SatelliteTrackerSettings() : + m_rollupState(nullptr) { resetToDefaults(); } @@ -72,6 +73,7 @@ void SatelliteTrackerSettings::resetToDefaults() m_reverseAPIFeatureSetIndex = 0; m_reverseAPIFeatureIndex = 0; m_chartsDarkTheme = true; + for (int i = 0; i < SAT_COL_COLUMNS; i++) { m_columnIndexes[i] = i; @@ -111,7 +113,6 @@ QByteArray SatelliteTrackerSettings::serialize() const s.writeString(26, m_aosCommand); s.writeString(27, m_losCommand); s.writeBlob(28, serializeDeviceSettings(m_deviceSettings)); - s.writeString(29, m_title); s.writeU32(30, m_rgbColor); s.writeBool(31, m_useReverseAPI); @@ -120,12 +121,18 @@ QByteArray SatelliteTrackerSettings::serialize() const s.writeU32(34, m_reverseAPIFeatureSetIndex); s.writeU32(35, m_reverseAPIFeatureIndex); s.writeBool(36, m_chartsDarkTheme); - s.writeBlob(37, m_rollupState); - for (int i = 0; i < SAT_COL_COLUMNS; i++) + if (m_rollupState) { + s.writeBlob(37, m_rollupState->serialize()); + } + + for (int i = 0; i < SAT_COL_COLUMNS; i++) { s.writeS32(100 + i, m_columnIndexes[i]); - for (int i = 0; i < SAT_COL_COLUMNS; i++) + } + + for (int i = 0; i < SAT_COL_COLUMNS; i++) { s.writeS32(200 + i, m_columnSizes[i]); + } return s.final(); } @@ -180,7 +187,6 @@ bool SatelliteTrackerSettings::deserialize(const QByteArray& data) d.readString(27, &m_losCommand, ""); d.readBlob(28, &blob); deserializeDeviceSettings(blob, m_deviceSettings); - d.readString(29, &m_title, "Satellite Tracker"); d.readU32(30, &m_rgbColor, QColor(225, 25, 99).rgb()); d.readBool(31, &m_useReverseAPI, false); @@ -198,12 +204,20 @@ bool SatelliteTrackerSettings::deserialize(const QByteArray& data) d.readU32(35, &utmp, 0); m_reverseAPIFeatureIndex = utmp > 99 ? 99 : utmp; d.readBool(36, &m_chartsDarkTheme, true); - d.readBlob(37, &m_rollupState); - for (int i = 0; i < SAT_COL_COLUMNS; i++) + if (m_rollupState) + { + d.readBlob(37, &bytetmp); + m_rollupState->deserialize(bytetmp); + } + + for (int i = 0; i < SAT_COL_COLUMNS; i++) { d.readS32(100 + i, &m_columnIndexes[i], i); - for (int i = 0; i < SAT_COL_COLUMNS; i++) + } + + for (int i = 0; i < SAT_COL_COLUMNS; i++) { d.readS32(200 + i, &m_columnSizes[i], -1); + } return true; } diff --git a/plugins/feature/satellitetracker/satellitetrackersettings.h b/plugins/feature/satellitetracker/satellitetrackersettings.h index 83d0584e6..2c15a6482 100644 --- a/plugins/feature/satellitetracker/satellitetrackersettings.h +++ b/plugins/feature/satellitetracker/satellitetrackersettings.h @@ -87,12 +87,13 @@ struct SatelliteTrackerSettings uint16_t m_reverseAPIPort; uint16_t m_reverseAPIFeatureSetIndex; uint16_t m_reverseAPIFeatureIndex; - QByteArray m_rollupState; + Serializable *m_rollupState; SatelliteTrackerSettings(); void resetToDefaults(); QByteArray serialize() const; bool deserialize(const QByteArray& data); + void setRollupState(Serializable *rollupState) { m_rollupState = rollupState; } QByteArray serializeStringList(const QList& strings) const; void deserializeStringList(const QByteArray& data, QList& strings); QByteArray serializeDeviceSettings(QHash *> deviceSettings) const; diff --git a/plugins/feature/simpleptt/simpleptt.cpp b/plugins/feature/simpleptt/simpleptt.cpp index a6f5eb507..e798bc06a 100644 --- a/plugins/feature/simpleptt/simpleptt.cpp +++ b/plugins/feature/simpleptt/simpleptt.cpp @@ -27,6 +27,7 @@ #include "SWGDeviceState.h" #include "dsp/dspengine.h" +#include "settings/serializable.h" #include "simplepttworker.h" #include "simpleptt.h" @@ -361,6 +362,20 @@ void SimplePTT::webapiFormatFeatureSettings( response.getSimplePttSettings()->setReverseApiPort(settings.m_reverseAPIPort); response.getSimplePttSettings()->setReverseApiFeatureSetIndex(settings.m_reverseAPIFeatureSetIndex); response.getSimplePttSettings()->setReverseApiFeatureIndex(settings.m_reverseAPIFeatureIndex); + + if (settings.m_rollupState) + { + if (response.getSimplePttSettings()->getRollupState()) + { + settings.m_rollupState->formatTo(response.getSimplePttSettings()->getRollupState()); + } + else + { + SWGSDRangel::SWGRollupState *swgRollupState = new SWGSDRangel::SWGRollupState(); + settings.m_rollupState->formatTo(swgRollupState); + response.getSimplePttSettings()->setRollupState(swgRollupState); + } + } } void SimplePTT::webapiUpdateFeatureSettings( @@ -413,6 +428,9 @@ void SimplePTT::webapiUpdateFeatureSettings( if (featureSettingsKeys.contains("reverseAPIFeatureIndex")) { settings.m_reverseAPIFeatureIndex = response.getSimplePttSettings()->getReverseApiFeatureIndex(); } + if (settings.m_rollupState && featureSettingsKeys.contains("rollupState")) { + settings.m_rollupState->updateFrom(featureSettingsKeys, response.getSimplePttSettings()->getRollupState()); + } } void SimplePTT::webapiFormatFeatureReport(SWGSDRangel::SWGFeatureReport& response) diff --git a/plugins/feature/simpleptt/simplepttgui.cpp b/plugins/feature/simpleptt/simplepttgui.cpp index 05785470b..695a5800d 100644 --- a/plugins/feature/simpleptt/simplepttgui.cpp +++ b/plugins/feature/simpleptt/simplepttgui.cpp @@ -138,7 +138,7 @@ void SimplePTTGUI::onWidgetRolled(QWidget* widget, bool rollDown) (void) widget; (void) rollDown; - m_settings.m_rollupState = saveState(); + saveState(m_rollupState); applySettings(); } @@ -159,6 +159,7 @@ SimplePTTGUI::SimplePTTGUI(PluginAPI* pluginAPI, FeatureUISet *featureUISet, Fea m_simplePTT->setMessageQueueToGUI(&m_inputMessageQueue); m_featureUISet->addRollupWidget(this); + m_settings.setRollupState(&m_rollupState); connect(this, SIGNAL(customContextMenuRequested(const QPoint &)), this, SLOT(onMenuDialogCalled(const QPoint &))); connect(getInputMessageQueue(), SIGNAL(messageEnqueued()), this, SLOT(handleInputMessages())); @@ -198,7 +199,7 @@ void SimplePTTGUI::displaySettings() blockApplySettings(true); ui->rxtxDelay->setValue(m_settings.m_rx2TxDelayMs); ui->txrxDelay->setValue(m_settings.m_tx2RxDelayMs); - restoreState(m_settings.m_rollupState); + restoreState(m_rollupState); ui->vox->setChecked(m_settings.m_vox); ui->voxEnable->setChecked(m_settings.m_voxEnable); ui->voxLevel->setValue(m_settings.m_voxLevel); diff --git a/plugins/feature/simpleptt/simplepttgui.h b/plugins/feature/simpleptt/simplepttgui.h index 7c47f1531..b2b73fb7e 100644 --- a/plugins/feature/simpleptt/simplepttgui.h +++ b/plugins/feature/simpleptt/simplepttgui.h @@ -22,6 +22,8 @@ #include "feature/featuregui.h" #include "util/messagequeue.h" +#include "settings/rollupstate.h" + #include "simplepttsettings.h" class PluginAPI; @@ -48,6 +50,7 @@ private: PluginAPI* m_pluginAPI; FeatureUISet* m_featureUISet; SimplePTTSettings m_settings; + RollupState m_rollupState; bool m_doApplySettings; SimplePTT* m_simplePTT; diff --git a/plugins/feature/simpleptt/simplepttplugin.cpp b/plugins/feature/simpleptt/simplepttplugin.cpp index 00bc5c162..02499fd78 100644 --- a/plugins/feature/simpleptt/simplepttplugin.cpp +++ b/plugins/feature/simpleptt/simplepttplugin.cpp @@ -29,7 +29,7 @@ const PluginDescriptor SimplePTTPlugin::m_pluginDescriptor = { SimplePTT::m_featureId, QStringLiteral("Simple PTT"), - QStringLiteral("6.17.7"), + QStringLiteral("6.18.0"), QStringLiteral("(c) Edouard Griffiths, F4EXB"), QStringLiteral("https://github.com/f4exb/sdrangel"), true, diff --git a/plugins/feature/simpleptt/simplepttsettings.cpp b/plugins/feature/simpleptt/simplepttsettings.cpp index 7fd6f5e7d..1029d312f 100644 --- a/plugins/feature/simpleptt/simplepttsettings.cpp +++ b/plugins/feature/simpleptt/simplepttsettings.cpp @@ -23,7 +23,8 @@ #include "simplepttsettings.h" -SimplePTTSettings::SimplePTTSettings() +SimplePTTSettings::SimplePTTSettings() : + m_rollupState(nullptr) { resetToDefaults(); } @@ -63,7 +64,11 @@ QByteArray SimplePTTSettings::serialize() const s.writeU32(9, m_reverseAPIPort); s.writeU32(10, m_reverseAPIFeatureSetIndex); s.writeU32(11, m_reverseAPIFeatureIndex); - s.writeBlob(12, m_rollupState); + + if (m_rollupState) { + s.writeBlob(12, m_rollupState->serialize()); + } + s.writeString(13, m_audioDeviceName); s.writeS32(14, m_voxLevel); s.writeBool(15, m_vox); @@ -109,7 +114,13 @@ bool SimplePTTSettings::deserialize(const QByteArray& data) m_reverseAPIFeatureSetIndex = utmp > 99 ? 99 : utmp; d.readU32(11, &utmp, 0); m_reverseAPIFeatureIndex = utmp > 99 ? 99 : utmp; - d.readBlob(12, &m_rollupState); + + if (m_rollupState) + { + d.readBlob(12, &bytetmp); + m_rollupState->deserialize(bytetmp); + } + d.readString(13, &m_audioDeviceName, AudioDeviceManager::m_defaultDeviceName); d.readS32(14, &m_voxLevel, -20); d.readBool(15, &m_vox, false); diff --git a/plugins/feature/simpleptt/simplepttsettings.h b/plugins/feature/simpleptt/simplepttsettings.h index af67d90a9..00a12a77c 100644 --- a/plugins/feature/simpleptt/simplepttsettings.h +++ b/plugins/feature/simpleptt/simplepttsettings.h @@ -41,12 +41,13 @@ struct SimplePTTSettings uint16_t m_reverseAPIPort; uint16_t m_reverseAPIFeatureSetIndex; uint16_t m_reverseAPIFeatureIndex; - QByteArray m_rollupState; + Serializable *m_rollupState; SimplePTTSettings(); void resetToDefaults(); QByteArray serialize() const; bool deserialize(const QByteArray& data); + void setRollupState(Serializable *rollupState) { m_rollupState = rollupState; } }; #endif // INCLUDE_FEATURE_SIMPLEPTTSETTINGS_H_ diff --git a/plugins/feature/startracker/startracker.cpp b/plugins/feature/startracker/startracker.cpp index e44ac90fa..bed59ab1e 100644 --- a/plugins/feature/startracker/startracker.cpp +++ b/plugins/feature/startracker/startracker.cpp @@ -30,6 +30,7 @@ #include "dsp/dspengine.h" #include "util/weather.h" #include "util/units.h" +#include "settings/serializable.h" #include "maincore.h" #include "startrackerreport.h" @@ -485,6 +486,20 @@ void StarTracker::webapiFormatFeatureSettings( response.getStarTrackerSettings()->setB(settings.m_b); response.getStarTrackerSettings()->setAzimuthOffset(settings.m_azOffset); response.getStarTrackerSettings()->setElevationOffset(settings.m_elOffset); + + if (settings.m_rollupState) + { + if (response.getStarTrackerSettings()->getRollupState()) + { + settings.m_rollupState->formatTo(response.getStarTrackerSettings()->getRollupState()); + } + else + { + SWGSDRangel::SWGRollupState *swgRollupState = new SWGSDRangel::SWGRollupState(); + settings.m_rollupState->formatTo(swgRollupState); + response.getStarTrackerSettings()->setRollupState(swgRollupState); + } + } } void StarTracker::webapiUpdateFeatureSettings( @@ -579,6 +594,9 @@ void StarTracker::webapiUpdateFeatureSettings( if (featureSettingsKeys.contains("elevationOffset")) { settings.m_elOffset = response.getStarTrackerSettings()->getElevationOffset(); } + if (settings.m_rollupState && featureSettingsKeys.contains("rollupState")) { + settings.m_rollupState->updateFrom(featureSettingsKeys, response.getStarTrackerSettings()->getRollupState()); + } } void StarTracker::webapiReverseSendSettings(QList& featureSettingsKeys, const StarTrackerSettings& settings, bool force) diff --git a/plugins/feature/startracker/startrackergui.cpp b/plugins/feature/startracker/startrackergui.cpp index cfd50cb32..dd7b37874 100644 --- a/plugins/feature/startracker/startrackergui.cpp +++ b/plugins/feature/startracker/startrackergui.cpp @@ -224,7 +224,7 @@ void StarTrackerGUI::onWidgetRolled(QWidget* widget, bool rollDown) (void) widget; (void) rollDown; - m_settings.m_rollupState = saveState(); + saveState(m_rollupState); applySettings(); } @@ -263,6 +263,7 @@ StarTrackerGUI::StarTrackerGUI(PluginAPI* pluginAPI, FeatureUISet *featureUISet, m_starTracker->setMessageQueueToGUI(&m_inputMessageQueue); m_featureUISet->addRollupWidget(this); + m_settings.setRollupState(&m_rollupState); connect(this, SIGNAL(customContextMenuRequested(const QPoint &)), this, SLOT(onMenuDialogCalled(const QPoint &))); connect(getInputMessageQueue(), SIGNAL(messageEnqueued()), this, SLOT(handleInputMessages())); @@ -434,7 +435,7 @@ void StarTrackerGUI::displaySettings() ui->frequency->setValue(m_settings.m_frequency/1000000.0); ui->beamwidth->setValue(m_settings.m_beamwidth); updateForTarget(); - restoreState(m_settings.m_rollupState); + restoreState(m_rollupState); plotChart(); blockApplySettings(false); } diff --git a/plugins/feature/startracker/startrackergui.h b/plugins/feature/startracker/startrackergui.h index 2d4912787..b3e6b89d3 100644 --- a/plugins/feature/startracker/startrackergui.h +++ b/plugins/feature/startracker/startrackergui.h @@ -29,6 +29,8 @@ #include "util/messagequeue.h" #include "util/fits.h" #include "gui/httpdownloadmanagergui.h" +#include "settings/rollupstate.h" + #include "startrackersettings.h" class PluginAPI; @@ -70,6 +72,7 @@ private: PluginAPI* m_pluginAPI; FeatureUISet* m_featureUISet; StarTrackerSettings m_settings; + RollupState m_rollupState; bool m_doApplySettings; StarTracker* m_starTracker; diff --git a/plugins/feature/startracker/startrackerplugin.cpp b/plugins/feature/startracker/startrackerplugin.cpp index 1ed4273d3..e74ee94a1 100644 --- a/plugins/feature/startracker/startrackerplugin.cpp +++ b/plugins/feature/startracker/startrackerplugin.cpp @@ -30,7 +30,7 @@ const PluginDescriptor StarTrackerPlugin::m_pluginDescriptor = { StarTracker::m_featureId, QStringLiteral("Star Tracker"), - QStringLiteral("6.17.3"), + QStringLiteral("6.18.0"), QStringLiteral("(c) Jon Beniston, M7RCE"), QStringLiteral("https://github.com/f4exb/sdrangel"), true, diff --git a/plugins/feature/startracker/startrackersettings.cpp b/plugins/feature/startracker/startrackersettings.cpp index 14bf0a578..f15aad679 100644 --- a/plugins/feature/startracker/startrackersettings.cpp +++ b/plugins/feature/startracker/startrackersettings.cpp @@ -31,7 +31,8 @@ const QStringList StarTrackerSettings::m_pipeURIs = { QStringLiteral("sdrangel.channel.radioastronomy") }; -StarTrackerSettings::StarTrackerSettings() +StarTrackerSettings::StarTrackerSettings() : + m_rollupState(nullptr) { resetToDefaults(); } @@ -130,7 +131,10 @@ QByteArray StarTrackerSettings::serialize() const s.writeDouble(41, m_elOffset); s.writeBool(42, m_drawSunOnSkyTempChart); s.writeBool(43, m_drawMoonOnSkyTempChart); - s.writeBlob(44, m_rollupState); + + if (m_rollupState) { + s.writeBlob(44, m_rollupState->serialize()); + } return s.final(); } @@ -159,11 +163,13 @@ bool StarTrackerSettings::deserialize(const QByteArray& data) d.readString(6, &m_dateTime, ""); d.readBool(7, &m_enableServer, true); d.readU32(8, &utmp, 0); + if ((utmp > 1023) && (utmp < 65535)) { m_serverPort = utmp; } else { m_serverPort = 10001; } + d.readS32(9, (qint32 *)&m_azElUnits, DM); d.readFloat(10, &m_updatePeriod, 1.0f); d.readBool(11, &m_jnow, false); @@ -177,7 +183,6 @@ bool StarTrackerSettings::deserialize(const QByteArray& data) d.readBool(19, &m_drawSunOnMap, true); d.readBool(20, &m_drawMoonOnMap, true); d.readBool(21, &m_drawStarOnMap, true); - d.readString(22, &m_title, "Star Tracker"); d.readU32(23, &m_rgbColor, QColor(225, 25, 99).rgb()); d.readBool(24, &m_useReverseAPI, false); @@ -194,28 +199,27 @@ bool StarTrackerSettings::deserialize(const QByteArray& data) m_reverseAPIFeatureSetIndex = utmp > 99 ? 99 : utmp; d.readU32(28, &utmp, 0); m_reverseAPIFeatureIndex = utmp > 99 ? 99 : utmp; - d.readU32(29, (quint32 *)&m_solarFluxUnits, SFU); d.readDouble(30, &m_beamwidth, 25.0); d.readU32(31, (quint32 *)&m_solarFluxData, DRAO_2800); d.readBool(32, &m_chartsDarkTheme, true); - d.readDouble(33, &m_az, 0.0); d.readDouble(34, &m_el, 0.0); d.readDouble(35, &m_l, 0.0); d.readDouble(36, &m_b, 0.0); - d.readBool(37, &m_link, false); d.readString(38, &m_owmAPIKey, ""); d.readS32(39, &m_weatherUpdatePeriod, 60); - d.readDouble(40, &m_azOffset, 0.0); d.readDouble(41, &m_elOffset, 0.0); - d.readBool(42, &m_drawSunOnSkyTempChart, true); d.readBool(43, &m_drawMoonOnSkyTempChart, true); - d.readBlob(44, &m_rollupState); + if (m_rollupState) + { + d.readBlob(44, &bytetmp); + m_rollupState->deserialize(bytetmp); + } return true; } diff --git a/plugins/feature/startracker/startrackersettings.h b/plugins/feature/startracker/startrackersettings.h index 82bcd0c67..9232eea9c 100644 --- a/plugins/feature/startracker/startrackersettings.h +++ b/plugins/feature/startracker/startrackersettings.h @@ -71,12 +71,13 @@ struct StarTrackerSettings double m_elOffset; bool m_drawSunOnSkyTempChart; bool m_drawMoonOnSkyTempChart; - QByteArray m_rollupState; + Serializable *m_rollupState; StarTrackerSettings(); void resetToDefaults(); QByteArray serialize() const; bool deserialize(const QByteArray& data); + void setRollupState(Serializable *rollupState) { m_rollupState = rollupState; } static const QStringList m_pipeTypes; static const QStringList m_pipeURIs; diff --git a/plugins/feature/vorlocalizer/vorlocalizer.cpp b/plugins/feature/vorlocalizer/vorlocalizer.cpp index b2e29a337..c35ab5ef1 100644 --- a/plugins/feature/vorlocalizer/vorlocalizer.cpp +++ b/plugins/feature/vorlocalizer/vorlocalizer.cpp @@ -31,6 +31,7 @@ #include "dsp/devicesamplesource.h" #include "device/deviceset.h" #include "channel/channelapi.h" +#include "settings/serializable.h" #include "maincore.h" #include "vorlocalizerreport.h" @@ -522,6 +523,20 @@ void VORLocalizer::webapiFormatFeatureSettings( response.getVorLocalizerSettings()->setReverseApiPort(settings.m_reverseAPIPort); response.getVorLocalizerSettings()->setReverseApiFeatureSetIndex(settings.m_reverseAPIFeatureSetIndex); response.getVorLocalizerSettings()->setReverseApiFeatureIndex(settings.m_reverseAPIFeatureIndex); + + if (settings.m_rollupState) + { + if (response.getVorLocalizerSettings()->getRollupState()) + { + settings.m_rollupState->formatTo(response.getVorLocalizerSettings()->getRollupState()); + } + else + { + SWGSDRangel::SWGRollupState *swgRollupState = new SWGSDRangel::SWGRollupState(); + settings.m_rollupState->formatTo(swgRollupState); + response.getVorLocalizerSettings()->setRollupState(swgRollupState); + } + } } void VORLocalizer::webapiUpdateFeatureSettings( @@ -562,6 +577,9 @@ void VORLocalizer::webapiUpdateFeatureSettings( if (featureSettingsKeys.contains("reverseAPIFeatureIndex")) { settings.m_reverseAPIFeatureIndex = response.getVorLocalizerSettings()->getReverseApiFeatureIndex(); } + if (settings.m_rollupState && featureSettingsKeys.contains("rollupState")) { + settings.m_rollupState->updateFrom(featureSettingsKeys, response.getVorLocalizerSettings()->getRollupState()); + } } void VORLocalizer::webapiReverseSendSettings(QList& channelSettingsKeys, const VORLocalizerSettings& settings, bool force) diff --git a/plugins/feature/vorlocalizer/vorlocalizergui.cpp b/plugins/feature/vorlocalizer/vorlocalizergui.cpp index 1110be166..ae89e4612 100644 --- a/plugins/feature/vorlocalizer/vorlocalizergui.cpp +++ b/plugins/feature/vorlocalizer/vorlocalizergui.cpp @@ -1174,7 +1174,7 @@ void VORLocalizerGUI::onWidgetRolled(QWidget* widget, bool rollDown) (void) widget; (void) rollDown; - m_settings.m_rollupState = saveState(); + saveState(m_rollupState); applySettings(); } @@ -1245,6 +1245,7 @@ VORLocalizerGUI::VORLocalizerGUI(PluginAPI* pluginAPI, FeatureUISet *featureUISe connect(&MainCore::instance()->getMasterTimer(), SIGNAL(timeout()), this, SLOT(tick())); // 50 ms m_featureUISet->addRollupWidget(this); + m_settings.setRollupState(&m_rollupState); connect(getInputMessageQueue(), SIGNAL(messageEnqueued()), this, SLOT(handleInputMessages())); @@ -1377,7 +1378,7 @@ void VORLocalizerGUI::displaySettings() ui->centerShift->setValue(m_settings.m_centerShift/1000); ui->forceRRAveraging->setChecked(m_settings.m_forceRRAveraging); - restoreState(m_settings.m_rollupState); + restoreState(m_rollupState); blockApplySettings(false); } diff --git a/plugins/feature/vorlocalizer/vorlocalizergui.h b/plugins/feature/vorlocalizer/vorlocalizergui.h index 41891a134..6a0092879 100644 --- a/plugins/feature/vorlocalizer/vorlocalizergui.h +++ b/plugins/feature/vorlocalizer/vorlocalizergui.h @@ -37,6 +37,8 @@ #include "util/messagequeue.h" #include "util/httpdownloadmanager.h" #include "util/azel.h" +#include "settings/rollupstate.h" + #include "vorlocalizersettings.h" #include "navaid.h" @@ -221,6 +223,7 @@ private: PluginAPI* m_pluginAPI; FeatureUISet* m_featureUISet; VORLocalizerSettings m_settings; + RollupState m_rollupState; bool m_doApplySettings; VORLocalizer* m_vorLocalizer; diff --git a/plugins/feature/vorlocalizer/vorlocalizerplugin.cpp b/plugins/feature/vorlocalizer/vorlocalizerplugin.cpp index 061ba9ff5..667b0463b 100644 --- a/plugins/feature/vorlocalizer/vorlocalizerplugin.cpp +++ b/plugins/feature/vorlocalizer/vorlocalizerplugin.cpp @@ -29,7 +29,7 @@ const PluginDescriptor VORLocalizerPlugin::m_pluginDescriptor = { VORLocalizer::m_featureId, QStringLiteral("VOR Localizer"), - QStringLiteral("6.17.5"), + QStringLiteral("6.18.0"), QStringLiteral("(c) Jon Beniston, M7RCE"), QStringLiteral("https://github.com/f4exb/sdrangel"), true, diff --git a/plugins/feature/vorlocalizer/vorlocalizersettings.cpp b/plugins/feature/vorlocalizer/vorlocalizersettings.cpp index 7144fd230..760a450d4 100644 --- a/plugins/feature/vorlocalizer/vorlocalizersettings.cpp +++ b/plugins/feature/vorlocalizer/vorlocalizersettings.cpp @@ -23,7 +23,8 @@ #include "settings/serializable.h" #include "vorlocalizersettings.h" -VORLocalizerSettings::VORLocalizerSettings() +VORLocalizerSettings::VORLocalizerSettings() : + m_rollupState(nullptr) { resetToDefaults(); } @@ -63,7 +64,10 @@ QByteArray VORLocalizerSettings::serialize() const s.writeU32(16, m_reverseAPIPort); s.writeU32(17, m_reverseAPIFeatureSetIndex); s.writeU32(18, m_reverseAPIFeatureIndex); - s.writeBlob(19, m_rollupState); + + if (m_rollupState) { + s.writeBlob(19, m_rollupState->serialize()); + } for (int i = 0; i < VORDEMOD_COLUMNS; i++) { s.writeS32(100 + i, m_columnIndexes[i]); @@ -112,7 +116,12 @@ bool VORLocalizerSettings::deserialize(const QByteArray& data) m_reverseAPIFeatureSetIndex = utmp > 99 ? 99 : utmp; d.readU32(18, &utmp, 0); m_reverseAPIFeatureIndex = utmp > 99 ? 99 : utmp; - d.readBlob(19, &m_rollupState); + + if (m_rollupState) + { + d.readBlob(19, &bytetmp); + m_rollupState->deserialize(bytetmp); + } for (int i = 0; i < VORDEMOD_COLUMNS; i++) { d.readS32(100 + i, &m_columnIndexes[i], i); diff --git a/plugins/feature/vorlocalizer/vorlocalizersettings.h b/plugins/feature/vorlocalizer/vorlocalizersettings.h index c9ce05038..410c96331 100644 --- a/plugins/feature/vorlocalizer/vorlocalizersettings.h +++ b/plugins/feature/vorlocalizer/vorlocalizersettings.h @@ -73,7 +73,7 @@ struct VORLocalizerSettings uint16_t m_reverseAPIPort; uint16_t m_reverseAPIFeatureSetIndex; uint16_t m_reverseAPIFeatureIndex; - QByteArray m_rollupState; + Serializable *m_rollupState; static const int VORDEMOD_COLUMNS = 11; @@ -98,6 +98,7 @@ struct VORLocalizerSettings void resetToDefaults(); QByteArray serialize() const; bool deserialize(const QByteArray& data); + void setRollupState(Serializable *rollupState) { m_rollupState = rollupState; } }; #endif /* INCLUDE_VORLOCALIZERSETTINGS_H */ diff --git a/sdrbase/CMakeLists.txt b/sdrbase/CMakeLists.txt index 07b76100f..7d3bd3c2c 100644 --- a/sdrbase/CMakeLists.txt +++ b/sdrbase/CMakeLists.txt @@ -179,6 +179,7 @@ set(sdrbase_SOURCES settings/preferences.cpp settings/preset.cpp settings/mainsettings.cpp + settings/rollupstate.cpp util/ais.cpp util/ax25.cpp @@ -388,6 +389,7 @@ set(sdrbase_HEADERS settings/preferences.h settings/preset.h settings/mainsettings.h + settings/rollupstate.h util/ais.h util/ax25.h diff --git a/sdrbase/resources/webapi/doc/html2/index.html b/sdrbase/resources/webapi/doc/html2/index.html index 520361305..0762ffa0f 100644 --- a/sdrbase/resources/webapi/doc/html2/index.html +++ b/sdrbase/resources/webapi/doc/html2/index.html @@ -811,6 +811,9 @@ margin-bottom: 20px; }, "channelMarker" : { "$ref" : "#/definitions/ChannelMarker" + }, + "rollupState" : { + "$ref" : "#/definitions/RollupState" } }, "description" : "ADSBDemod" @@ -904,6 +907,9 @@ margin-bottom: 20px; }, "reverseAPIFeatureIndex" : { "type" : "integer" + }, + "rollupState" : { + "$ref" : "#/definitions/RollupState" } }, "description" : "AFC settings" @@ -996,6 +1002,9 @@ margin-bottom: 20px; }, "channelMarker" : { "$ref" : "#/definitions/ChannelMarker" + }, + "rollupState" : { + "$ref" : "#/definitions/RollupState" } }, "description" : "AISDemod" @@ -1162,6 +1171,9 @@ margin-bottom: 20px; }, "channelMarker" : { "$ref" : "#/definitions/ChannelMarker" + }, + "rollupState" : { + "$ref" : "#/definitions/RollupState" } }, "description" : "AISMod" @@ -1189,6 +1201,9 @@ margin-bottom: 20px; }, "reverseAPIFeatureIndex" : { "type" : "integer" + }, + "rollupState" : { + "$ref" : "#/definitions/RollupState" } }, "description" : "AIS settings" @@ -1310,6 +1325,9 @@ margin-bottom: 20px; }, "channelMarker" : { "$ref" : "#/definitions/ChannelMarker" + }, + "rollupState" : { + "$ref" : "#/definitions/RollupState" } }, "description" : "AMDemod" @@ -1396,6 +1414,9 @@ margin-bottom: 20px; }, "channelMarker" : { "$ref" : "#/definitions/ChannelMarker" + }, + "rollupState" : { + "$ref" : "#/definitions/RollupState" } }, "description" : "AMMod" @@ -1441,6 +1462,9 @@ margin-bottom: 20px; }, "reverseAPIFeatureIndex" : { "type" : "integer" + }, + "rollupState" : { + "$ref" : "#/definitions/RollupState" } }, "description" : "APRS settings" @@ -1565,6 +1589,9 @@ margin-bottom: 20px; }, "channelMarker" : { "$ref" : "#/definitions/ChannelMarker" + }, + "rollupState" : { + "$ref" : "#/definitions/RollupState" } }, "description" : "APTDemod" @@ -1804,6 +1831,9 @@ margin-bottom: 20px; }, "channelMarker" : { "$ref" : "#/definitions/ChannelMarker" + }, + "rollupState" : { + "$ref" : "#/definitions/RollupState" } }, "description" : "ATVMod" @@ -2020,6 +2050,9 @@ margin-bottom: 20px; }, "reverseAPIFeatureIndex" : { "type" : "integer" + }, + "rollupState" : { + "$ref" : "#/definitions/RollupState" } }, "description" : "Antenna Tools" @@ -2355,6 +2388,9 @@ margin-bottom: 20px; }, "channelMarker" : { "$ref" : "#/definitions/ChannelMarker" + }, + "rollupState" : { + "$ref" : "#/definitions/RollupState" } }, "description" : "BFMDemod" @@ -2402,6 +2438,9 @@ margin-bottom: 20px; }, "channelMarker" : { "$ref" : "#/definitions/ChannelMarker" + }, + "rollupState" : { + "$ref" : "#/definitions/RollupState" } }, "description" : "BeamSteeringCWMod" @@ -3059,6 +3098,9 @@ margin-bottom: 20px; }, "channelMarker" : { "$ref" : "#/definitions/ChannelMarker" + }, + "rollupState" : { + "$ref" : "#/definitions/RollupState" } }, "description" : "ChannelAnalyzer" @@ -3617,6 +3659,9 @@ margin-bottom: 20px; }, "channelMarker" : { "$ref" : "#/definitions/ChannelMarker" + }, + "rollupState" : { + "$ref" : "#/definitions/RollupState" } }, "description" : "ChirpChatDemod" @@ -3809,6 +3854,9 @@ margin-bottom: 20px; }, "channelMarker" : { "$ref" : "#/definitions/ChannelMarker" + }, + "rollupState" : { + "$ref" : "#/definitions/RollupState" } }, "description" : "ChirpChatMod" @@ -3909,6 +3957,9 @@ margin-bottom: 20px; }, "channelMarker" : { "$ref" : "#/definitions/ChannelMarker" + }, + "rollupState" : { + "$ref" : "#/definitions/RollupState" } }, "description" : "DABDemod" @@ -4090,6 +4141,9 @@ margin-bottom: 20px; }, "channelMarker" : { "$ref" : "#/definitions/ChannelMarker" + }, + "rollupState" : { + "$ref" : "#/definitions/RollupState" } }, "description" : "DATVDemod" @@ -4203,6 +4257,9 @@ margin-bottom: 20px; }, "channelMarker" : { "$ref" : "#/definitions/ChannelMarker" + }, + "rollupState" : { + "$ref" : "#/definitions/RollupState" } }, "description" : "DATVMod" @@ -4362,6 +4419,9 @@ margin-bottom: 20px; }, "channelMarker" : { "$ref" : "#/definitions/ChannelMarker" + }, + "rollupState" : { + "$ref" : "#/definitions/RollupState" } }, "description" : "DSDDemod" @@ -4424,6 +4484,9 @@ margin-bottom: 20px; }, "scopeConfig" : { "$ref" : "#/definitions/GLScope" + }, + "rollupState" : { + "$ref" : "#/definitions/RollupState" } }, "description" : "DemodAnalyzer" @@ -5500,6 +5563,9 @@ margin-bottom: 20px; }, "channelMarker" : { "$ref" : "#/definitions/ChannelMarker" + }, + "rollupState" : { + "$ref" : "#/definitions/RollupState" } }, "description" : "FileSink" @@ -5601,6 +5667,9 @@ margin-bottom: 20px; }, "channelMarker" : { "$ref" : "#/definitions/ChannelMarker" + }, + "rollupState" : { + "$ref" : "#/definitions/RollupState" } }, "description" : "FileSource" @@ -5689,6 +5758,9 @@ margin-bottom: 20px; }, "channelMarker" : { "$ref" : "#/definitions/ChannelMarker" + }, + "rollupState" : { + "$ref" : "#/definitions/RollupState" } }, "description" : "FreeDVDemod" @@ -5778,6 +5850,9 @@ margin-bottom: 20px; }, "channelMarker" : { "$ref" : "#/definitions/ChannelMarker" + }, + "rollupState" : { + "$ref" : "#/definitions/RollupState" } }, "description" : "FreeDVMod" @@ -5889,6 +5964,9 @@ margin-bottom: 20px; }, "channelMarker" : { "$ref" : "#/definitions/ChannelMarker" + }, + "rollupState" : { + "$ref" : "#/definitions/RollupState" } }, "description" : "FreqTracker" @@ -6220,6 +6298,9 @@ margin-bottom: 20px; }, "reverseAPIFeatureIndex" : { "type" : "integer" + }, + "rollupState" : { + "$ref" : "#/definitions/RollupState" } }, "description" : "GS-232 Controller settings" @@ -6516,6 +6597,9 @@ margin-bottom: 20px; }, "channelMarker" : { "$ref" : "#/definitions/ChannelMarker" + }, + "rollupState" : { + "$ref" : "#/definitions/RollupState" } }, "description" : "IEEE_802_15_4_Mod" @@ -6689,6 +6773,9 @@ margin-bottom: 20px; }, "channelMarker" : { "$ref" : "#/definitions/ChannelMarker" + }, + "rollupState" : { + "$ref" : "#/definitions/RollupState" } }, "description" : "Interferometer" @@ -6716,6 +6803,9 @@ margin-bottom: 20px; }, "reverseAPIFeatureIndex" : { "type" : "integer" + }, + "rollupState" : { + "$ref" : "#/definitions/RollupState" } }, "description" : "JogdialController" @@ -7551,6 +7641,9 @@ margin-bottom: 20px; }, "channelMarker" : { "$ref" : "#/definitions/ChannelMarker" + }, + "rollupState" : { + "$ref" : "#/definitions/RollupState" } }, "description" : "Local channel sink settings" @@ -7599,6 +7692,9 @@ margin-bottom: 20px; }, "channelMarker" : { "$ref" : "#/definitions/ChannelMarker" + }, + "rollupState" : { + "$ref" : "#/definitions/RollupState" } }, "description" : "Local channel source settings" @@ -7801,6 +7897,9 @@ margin-bottom: 20px; }, "reverseAPIFeatureIndex" : { "type" : "integer" + }, + "rollupState" : { + "$ref" : "#/definitions/RollupState" } }, "description" : "Map" @@ -8069,6 +8168,9 @@ margin-bottom: 20px; }, "channelMarker" : { "$ref" : "#/definitions/ChannelMarker" + }, + "rollupState" : { + "$ref" : "#/definitions/RollupState" } }, "description" : "NFMDemod" @@ -8176,6 +8278,9 @@ margin-bottom: 20px; }, "channelMarker" : { "$ref" : "#/definitions/ChannelMarker" + }, + "rollupState" : { + "$ref" : "#/definitions/RollupState" } }, "description" : "NFMMod" @@ -8289,6 +8394,9 @@ margin-bottom: 20px; }, "channelMarker" : { "$ref" : "#/definitions/ChannelMarker" + }, + "rollupState" : { + "$ref" : "#/definitions/RollupState" } }, "description" : "NoiseFigure" @@ -8398,6 +8506,9 @@ margin-bottom: 20px; }, "reverseAPIFeatureIndex" : { "type" : "integer" + }, + "rollupState" : { + "$ref" : "#/definitions/RollupState" } }, "description" : "PER Tester settings" @@ -8479,6 +8590,9 @@ margin-bottom: 20px; }, "channelMarker" : { "$ref" : "#/definitions/ChannelMarker" + }, + "rollupState" : { + "$ref" : "#/definitions/RollupState" } }, "description" : "PacketDemod" @@ -8710,6 +8824,9 @@ margin-bottom: 20px; }, "channelMarker" : { "$ref" : "#/definitions/ChannelMarker" + }, + "rollupState" : { + "$ref" : "#/definitions/RollupState" } }, "description" : "PacketMod" @@ -8810,6 +8927,9 @@ margin-bottom: 20px; }, "channelMarker" : { "$ref" : "#/definitions/ChannelMarker" + }, + "rollupState" : { + "$ref" : "#/definitions/RollupState" } }, "description" : "PagerDemod" @@ -9660,6 +9780,9 @@ margin-bottom: 20px; }, "channelMarker" : { "$ref" : "#/definitions/ChannelMarker" + }, + "rollupState" : { + "$ref" : "#/definitions/RollupState" } }, "description" : "RadioAstronomy" @@ -9738,6 +9861,9 @@ margin-bottom: 20px; }, "channelMarker" : { "$ref" : "#/definitions/ChannelMarker" + }, + "rollupState" : { + "$ref" : "#/definitions/RollupState" } }, "description" : "RadioClock" @@ -9987,6 +10113,9 @@ margin-bottom: 20px; }, "channelMarker" : { "$ref" : "#/definitions/ChannelMarker" + }, + "rollupState" : { + "$ref" : "#/definitions/RollupState" } }, "description" : "Remote channel sink settings" @@ -10093,6 +10222,9 @@ margin-bottom: 20px; }, "channelMarker" : { "$ref" : "#/definitions/ChannelMarker" + }, + "rollupState" : { + "$ref" : "#/definitions/RollupState" } }, "description" : "Remote channel source settings" @@ -10154,9 +10286,38 @@ margin-bottom: 20px; }, "reverseAPIFeatureIndex" : { "type" : "integer" + }, + "rollupState" : { + "$ref" : "#/definitions/RollupState" } }, "description" : "RigCtl server settings" +}; + defs.RollupChildState = { + "properties" : { + "objectName" : { + "type" : "string" + }, + "isHidden" : { + "type" : "integer", + "description" : "Boolean - child hidden state\n * 0 - visible\n * 1 - hidden\n" + } + }, + "description" : "Rollup widget child state" +}; + defs.RollupState = { + "properties" : { + "version" : { + "type" : "integer" + }, + "childrenStates" : { + "type" : "array", + "items" : { + "$ref" : "#/definitions/RollupChildState" + } + } + }, + "description" : "Rollup widget state" }; defs.RtlSdrReport = { "properties" : { @@ -10545,6 +10706,9 @@ margin-bottom: 20px; }, "channelMarker" : { "$ref" : "#/definitions/ChannelMarker" + }, + "rollupState" : { + "$ref" : "#/definitions/RollupState" } }, "description" : "SSBDemod" @@ -10657,6 +10821,9 @@ margin-bottom: 20px; }, "channelMarker" : { "$ref" : "#/definitions/ChannelMarker" + }, + "rollupState" : { + "$ref" : "#/definitions/RollupState" } }, "description" : "SSBMod" @@ -10961,6 +11128,9 @@ margin-bottom: 20px; }, "reverseAPIFeatureIndex" : { "type" : "integer" + }, + "rollupState" : { + "$ref" : "#/definitions/RollupState" } }, "description" : "Satellite Tracker settings" @@ -11207,6 +11377,9 @@ margin-bottom: 20px; }, "channelMarker" : { "$ref" : "#/definitions/ChannelMarker" + }, + "rollupState" : { + "$ref" : "#/definitions/RollupState" } }, "description" : "SigMFFileSink" @@ -11295,6 +11468,9 @@ margin-bottom: 20px; }, "reverseAPIFeatureIndex" : { "type" : "integer" + }, + "rollupState" : { + "$ref" : "#/definitions/RollupState" } }, "description" : "Simple PTT settings" @@ -11860,6 +12036,9 @@ margin-bottom: 20px; }, "reverseAPIFeatureIndex" : { "type" : "integer" + }, + "rollupState" : { + "$ref" : "#/definitions/RollupState" } }, "description" : "Star Tracker settings" @@ -12479,6 +12658,9 @@ margin-bottom: 20px; }, "channelMarker" : { "$ref" : "#/definitions/ChannelMarker" + }, + "rollupState" : { + "$ref" : "#/definitions/RollupState" } }, "description" : "UDPSink" @@ -12610,6 +12792,9 @@ margin-bottom: 20px; }, "channelMarker" : { "$ref" : "#/definitions/ChannelMarker" + }, + "rollupState" : { + "$ref" : "#/definitions/RollupState" } }, "description" : "UDPSource" @@ -12892,6 +13077,9 @@ margin-bottom: 20px; }, "channelMarker" : { "$ref" : "#/definitions/ChannelMarker" + }, + "rollupState" : { + "$ref" : "#/definitions/RollupState" } }, "description" : "VORDemodSC" @@ -12949,6 +13137,9 @@ margin-bottom: 20px; }, "channelMarker" : { "$ref" : "#/definitions/ChannelMarker" + }, + "rollupState" : { + "$ref" : "#/definitions/RollupState" } }, "description" : "VORDemod" @@ -13010,6 +13201,9 @@ margin-bottom: 20px; "centerShift" : { "type" : "integer", "description" : "Shift of center frequency in Hz" + }, + "rollupState" : { + "$ref" : "#/definitions/RollupState" } }, "description" : "VORLocalizer" @@ -13091,6 +13285,9 @@ margin-bottom: 20px; }, "channelMarker" : { "$ref" : "#/definitions/ChannelMarker" + }, + "rollupState" : { + "$ref" : "#/definitions/RollupState" } }, "description" : "WFMDemod" @@ -13180,6 +13377,9 @@ margin-bottom: 20px; }, "channelMarker" : { "$ref" : "#/definitions/ChannelMarker" + }, + "rollupState" : { + "$ref" : "#/definitions/RollupState" } }, "description" : "WFMMod" @@ -51683,7 +51883,7 @@ except ApiException as e:
- Generated 2022-01-04T21:15:15.924+01:00 + Generated 2022-01-09T04:50:11.883+01:00
diff --git a/sdrbase/resources/webapi/doc/swagger/include/ADSBDemod.yaml b/sdrbase/resources/webapi/doc/swagger/include/ADSBDemod.yaml index 32fff1cf7..2be543bc0 100644 --- a/sdrbase/resources/webapi/doc/swagger/include/ADSBDemod.yaml +++ b/sdrbase/resources/webapi/doc/swagger/include/ADSBDemod.yaml @@ -75,6 +75,8 @@ ADSBDemodSettings: type: integer channelMarker: $ref: "/doc/swagger/include/ChannelMarker.yaml#/ChannelMarker" + rollupState: + $ref: "/doc/swagger/include/RollupState.yaml#/RollupState" ADSBDemodReport: description: ADSBDemod diff --git a/sdrbase/resources/webapi/doc/swagger/include/AFC.yaml b/sdrbase/resources/webapi/doc/swagger/include/AFC.yaml index 4a88f4a95..5fb12f7b2 100644 --- a/sdrbase/resources/webapi/doc/swagger/include/AFC.yaml +++ b/sdrbase/resources/webapi/doc/swagger/include/AFC.yaml @@ -44,6 +44,8 @@ AFCSettings: type: integer reverseAPIFeatureIndex: type: integer + rollupState: + $ref: "/doc/swagger/include/RollupState.yaml#/RollupState" AFCReport: description: "AFC report" diff --git a/sdrbase/resources/webapi/doc/swagger/include/AIS.yaml b/sdrbase/resources/webapi/doc/swagger/include/AIS.yaml index 5a27a8ff3..6f0e26c95 100644 --- a/sdrbase/resources/webapi/doc/swagger/include/AIS.yaml +++ b/sdrbase/resources/webapi/doc/swagger/include/AIS.yaml @@ -16,3 +16,5 @@ AISSettings: type: integer reverseAPIFeatureIndex: type: integer + rollupState: + $ref: "/doc/swagger/include/RollupState.yaml#/RollupState" diff --git a/sdrbase/resources/webapi/doc/swagger/include/AISDemod.yaml b/sdrbase/resources/webapi/doc/swagger/include/AISDemod.yaml index acb5930e5..5805e7853 100644 --- a/sdrbase/resources/webapi/doc/swagger/include/AISDemod.yaml +++ b/sdrbase/resources/webapi/doc/swagger/include/AISDemod.yaml @@ -54,6 +54,8 @@ AISDemodSettings: $ref: "/doc/swagger/include/GLScope.yaml#/GLScope" channelMarker: $ref: "/doc/swagger/include/ChannelMarker.yaml#/ChannelMarker" + rollupState: + $ref: "/doc/swagger/include/RollupState.yaml#/RollupState" AISDemodReport: description: AISDemod diff --git a/sdrbase/resources/webapi/doc/swagger/include/AISMod.yaml b/sdrbase/resources/webapi/doc/swagger/include/AISMod.yaml index 4e95cecbc..22b29f1f7 100644 --- a/sdrbase/resources/webapi/doc/swagger/include/AISMod.yaml +++ b/sdrbase/resources/webapi/doc/swagger/include/AISMod.yaml @@ -118,6 +118,8 @@ AISModSettings: type: integer channelMarker: $ref: "/doc/swagger/include/ChannelMarker.yaml#/ChannelMarker" + rollupState: + $ref: "/doc/swagger/include/RollupState.yaml#/RollupState" AISModReport: description: AISMod diff --git a/sdrbase/resources/webapi/doc/swagger/include/AMDemod.yaml b/sdrbase/resources/webapi/doc/swagger/include/AMDemod.yaml index 8fb64d17d..5be1b548e 100644 --- a/sdrbase/resources/webapi/doc/swagger/include/AMDemod.yaml +++ b/sdrbase/resources/webapi/doc/swagger/include/AMDemod.yaml @@ -49,6 +49,8 @@ AMDemodSettings: type: integer channelMarker: $ref: "/doc/swagger/include/ChannelMarker.yaml#/ChannelMarker" + rollupState: + $ref: "/doc/swagger/include/RollupState.yaml#/RollupState" AMDemodReport: description: AMDemod diff --git a/sdrbase/resources/webapi/doc/swagger/include/AMMod.yaml b/sdrbase/resources/webapi/doc/swagger/include/AMMod.yaml index 34b31f874..27c752891 100644 --- a/sdrbase/resources/webapi/doc/swagger/include/AMMod.yaml +++ b/sdrbase/resources/webapi/doc/swagger/include/AMMod.yaml @@ -47,6 +47,8 @@ AMModSettings: $ref: "/doc/swagger/include/CWKeyer.yaml#/CWKeyerSettings" channelMarker: $ref: "/doc/swagger/include/ChannelMarker.yaml#/ChannelMarker" + rollupState: + $ref: "/doc/swagger/include/RollupState.yaml#/RollupState" AMModReport: description: AMMod diff --git a/sdrbase/resources/webapi/doc/swagger/include/APRS.yaml b/sdrbase/resources/webapi/doc/swagger/include/APRS.yaml index 8f4530f32..6a9045e23 100644 --- a/sdrbase/resources/webapi/doc/swagger/include/APRS.yaml +++ b/sdrbase/resources/webapi/doc/swagger/include/APRS.yaml @@ -28,3 +28,5 @@ APRSSettings: type: integer reverseAPIFeatureIndex: type: integer + rollupState: + $ref: "/doc/swagger/include/RollupState.yaml#/RollupState" diff --git a/sdrbase/resources/webapi/doc/swagger/include/APTDemod.yaml b/sdrbase/resources/webapi/doc/swagger/include/APTDemod.yaml index 5ef2c8795..cfad831b3 100644 --- a/sdrbase/resources/webapi/doc/swagger/include/APTDemod.yaml +++ b/sdrbase/resources/webapi/doc/swagger/include/APTDemod.yaml @@ -65,6 +65,8 @@ APTDemodSettings: type: integer channelMarker: $ref: "/doc/swagger/include/ChannelMarker.yaml#/ChannelMarker" + rollupState: + $ref: "/doc/swagger/include/RollupState.yaml#/RollupState" APTDemodActions: description: APTDemod diff --git a/sdrbase/resources/webapi/doc/swagger/include/ATVMod.yaml b/sdrbase/resources/webapi/doc/swagger/include/ATVMod.yaml index a146b4403..e2059ee06 100644 --- a/sdrbase/resources/webapi/doc/swagger/include/ATVMod.yaml +++ b/sdrbase/resources/webapi/doc/swagger/include/ATVMod.yaml @@ -69,6 +69,8 @@ ATVModSettings: type: integer channelMarker: $ref: "/doc/swagger/include/ChannelMarker.yaml#/ChannelMarker" + rollupState: + $ref: "/doc/swagger/include/RollupState.yaml#/RollupState" ATVModReport: description: ATVMod diff --git a/sdrbase/resources/webapi/doc/swagger/include/AntennaTools.yaml b/sdrbase/resources/webapi/doc/swagger/include/AntennaTools.yaml index dc88fa1ca..de918989d 100644 --- a/sdrbase/resources/webapi/doc/swagger/include/AntennaTools.yaml +++ b/sdrbase/resources/webapi/doc/swagger/include/AntennaTools.yaml @@ -33,3 +33,5 @@ AntennaToolsSettings: type: integer reverseAPIFeatureIndex: type: integer + rollupState: + $ref: "/doc/swagger/include/RollupState.yaml#/RollupState" diff --git a/sdrbase/resources/webapi/doc/swagger/include/BFMDemod.yaml b/sdrbase/resources/webapi/doc/swagger/include/BFMDemod.yaml index ee2da80a7..f9b1a8484 100644 --- a/sdrbase/resources/webapi/doc/swagger/include/BFMDemod.yaml +++ b/sdrbase/resources/webapi/doc/swagger/include/BFMDemod.yaml @@ -48,6 +48,8 @@ BFMDemodSettings: $ref: "/doc/swagger/include/GLSpectrum.yaml#/GLSpectrum" channelMarker: $ref: "/doc/swagger/include/ChannelMarker.yaml#/ChannelMarker" + rollupState: + $ref: "/doc/swagger/include/RollupState.yaml#/RollupState" BFMDemodReport: description: BFMDemod diff --git a/sdrbase/resources/webapi/doc/swagger/include/BeamSteeringCWMod.yaml b/sdrbase/resources/webapi/doc/swagger/include/BeamSteeringCWMod.yaml index 08d3b8910..40dc770c5 100644 --- a/sdrbase/resources/webapi/doc/swagger/include/BeamSteeringCWMod.yaml +++ b/sdrbase/resources/webapi/doc/swagger/include/BeamSteeringCWMod.yaml @@ -24,3 +24,5 @@ BeamSteeringCWModSettings: type: integer channelMarker: $ref: "/doc/swagger/include/ChannelMarker.yaml#/ChannelMarker" + rollupState: + $ref: "/doc/swagger/include/RollupState.yaml#/RollupState" diff --git a/sdrbase/resources/webapi/doc/swagger/include/ChannelAnalyzer.yaml b/sdrbase/resources/webapi/doc/swagger/include/ChannelAnalyzer.yaml index fa930df85..e5b74380e 100644 --- a/sdrbase/resources/webapi/doc/swagger/include/ChannelAnalyzer.yaml +++ b/sdrbase/resources/webapi/doc/swagger/include/ChannelAnalyzer.yaml @@ -70,3 +70,6 @@ ChannelAnalyzerSettings: $ref: "/doc/swagger/include/GLScope.yaml#/GLScope" channelMarker: $ref: "/doc/swagger/include/ChannelMarker.yaml#/ChannelMarker" + rollupState: + $ref: "/doc/swagger/include/RollupState.yaml#/RollupState" + diff --git a/sdrbase/resources/webapi/doc/swagger/include/ChirpChatDemod.yaml b/sdrbase/resources/webapi/doc/swagger/include/ChirpChatDemod.yaml index c3d2c7ec9..b7869c411 100644 --- a/sdrbase/resources/webapi/doc/swagger/include/ChirpChatDemod.yaml +++ b/sdrbase/resources/webapi/doc/swagger/include/ChirpChatDemod.yaml @@ -122,6 +122,8 @@ ChirpChatDemodSettings: $ref: "/doc/swagger/include/GLSpectrum.yaml#/GLSpectrum" channelMarker: $ref: "/doc/swagger/include/ChannelMarker.yaml#/ChannelMarker" + rollupState: + $ref: "/doc/swagger/include/RollupState.yaml#/RollupState" ChirpChatDemodReport: description: ChirpChatDemod diff --git a/sdrbase/resources/webapi/doc/swagger/include/ChirpChatMod.yaml b/sdrbase/resources/webapi/doc/swagger/include/ChirpChatMod.yaml index f161b4635..ba582def4 100644 --- a/sdrbase/resources/webapi/doc/swagger/include/ChirpChatMod.yaml +++ b/sdrbase/resources/webapi/doc/swagger/include/ChirpChatMod.yaml @@ -159,6 +159,8 @@ ChirpChatModSettings: type: integer channelMarker: $ref: "/doc/swagger/include/ChannelMarker.yaml#/ChannelMarker" + rollupState: + $ref: "/doc/swagger/include/RollupState.yaml#/RollupState" ChirpChatModReport: description: ChirpChatMod diff --git a/sdrbase/resources/webapi/doc/swagger/include/DABDemod.yaml b/sdrbase/resources/webapi/doc/swagger/include/DABDemod.yaml index 98cdfbc19..a930f2b08 100644 --- a/sdrbase/resources/webapi/doc/swagger/include/DABDemod.yaml +++ b/sdrbase/resources/webapi/doc/swagger/include/DABDemod.yaml @@ -36,3 +36,5 @@ DABDemodSettings: type: integer channelMarker: $ref: "/doc/swagger/include/ChannelMarker.yaml#/ChannelMarker" + rollupState: + $ref: "/doc/swagger/include/RollupState.yaml#/RollupState" diff --git a/sdrbase/resources/webapi/doc/swagger/include/DATVDemod.yaml b/sdrbase/resources/webapi/doc/swagger/include/DATVDemod.yaml index af5b0a38c..96afa7645 100644 --- a/sdrbase/resources/webapi/doc/swagger/include/DATVDemod.yaml +++ b/sdrbase/resources/webapi/doc/swagger/include/DATVDemod.yaml @@ -123,6 +123,8 @@ DATVDemodSettings: type: integer channelMarker: $ref: "/doc/swagger/include/ChannelMarker.yaml#/ChannelMarker" + rollupState: + $ref: "/doc/swagger/include/RollupState.yaml#/RollupState" DATVDemodReport: description: DATVDemod diff --git a/sdrbase/resources/webapi/doc/swagger/include/DATVMod.yaml b/sdrbase/resources/webapi/doc/swagger/include/DATVMod.yaml index f7199ecd4..4182af869 100644 --- a/sdrbase/resources/webapi/doc/swagger/include/DATVMod.yaml +++ b/sdrbase/resources/webapi/doc/swagger/include/DATVMod.yaml @@ -60,6 +60,8 @@ DATVModSettings: type: integer channelMarker: $ref: "/doc/swagger/include/ChannelMarker.yaml#/ChannelMarker" + rollupState: + $ref: "/doc/swagger/include/RollupState.yaml#/RollupState" DATVModReport: description: DATVMod diff --git a/sdrbase/resources/webapi/doc/swagger/include/DSDDemod.yaml b/sdrbase/resources/webapi/doc/swagger/include/DSDDemod.yaml index 1b19c0f86..ec315e4f8 100644 --- a/sdrbase/resources/webapi/doc/swagger/include/DSDDemod.yaml +++ b/sdrbase/resources/webapi/doc/swagger/include/DSDDemod.yaml @@ -70,6 +70,8 @@ DSDDemodSettings: type: integer channelMarker: $ref: "/doc/swagger/include/ChannelMarker.yaml#/ChannelMarker" + rollupState: + $ref: "/doc/swagger/include/RollupState.yaml#/RollupState" DSDDemodReport: description: DSDDemod diff --git a/sdrbase/resources/webapi/doc/swagger/include/DemodAnalyzer.yaml b/sdrbase/resources/webapi/doc/swagger/include/DemodAnalyzer.yaml index a3f1deee3..56c54771f 100644 --- a/sdrbase/resources/webapi/doc/swagger/include/DemodAnalyzer.yaml +++ b/sdrbase/resources/webapi/doc/swagger/include/DemodAnalyzer.yaml @@ -25,3 +25,5 @@ DemodAnalyzerSettings: $ref: "/doc/swagger/include/GLSpectrum.yaml#/GLSpectrum" scopeConfig: $ref: "/doc/swagger/include/GLScope.yaml#/GLScope" + rollupState: + $ref: "/doc/swagger/include/RollupState.yaml#/RollupState" diff --git a/sdrbase/resources/webapi/doc/swagger/include/FileSink.yaml b/sdrbase/resources/webapi/doc/swagger/include/FileSink.yaml index 1f67d0a38..72d0a545d 100644 --- a/sdrbase/resources/webapi/doc/swagger/include/FileSink.yaml +++ b/sdrbase/resources/webapi/doc/swagger/include/FileSink.yaml @@ -52,6 +52,8 @@ FileSinkSettings: $ref: "/doc/swagger/include/GLSpectrum.yaml#/GLSpectrum" channelMarker: $ref: "/doc/swagger/include/ChannelMarker.yaml#/ChannelMarker" + rollupState: + $ref: "/doc/swagger/include/RollupState.yaml#/RollupState" FileSinkReport: description: FileSink diff --git a/sdrbase/resources/webapi/doc/swagger/include/FileSource.yaml b/sdrbase/resources/webapi/doc/swagger/include/FileSource.yaml index aeea4033f..45534f4df 100644 --- a/sdrbase/resources/webapi/doc/swagger/include/FileSource.yaml +++ b/sdrbase/resources/webapi/doc/swagger/include/FileSource.yaml @@ -33,6 +33,8 @@ FileSourceSettings: type: integer channelMarker: $ref: "/doc/swagger/include/ChannelMarker.yaml#/ChannelMarker" + rollupState: + $ref: "/doc/swagger/include/RollupState.yaml#/RollupState" FileSourceReport: description: FileSource diff --git a/sdrbase/resources/webapi/doc/swagger/include/FreeDVDemod.yaml b/sdrbase/resources/webapi/doc/swagger/include/FreeDVDemod.yaml index 0b1c6b49a..6ad49b9ff 100644 --- a/sdrbase/resources/webapi/doc/swagger/include/FreeDVDemod.yaml +++ b/sdrbase/resources/webapi/doc/swagger/include/FreeDVDemod.yaml @@ -46,6 +46,8 @@ FreeDVDemodSettings: $ref: "/doc/swagger/include/GLSpectrum.yaml#/GLSpectrum" channelMarker: $ref: "/doc/swagger/include/ChannelMarker.yaml#/ChannelMarker" + rollupState: + $ref: "/doc/swagger/include/RollupState.yaml#/RollupState" FreeDVDemodReport: description: FreeDVDemod diff --git a/sdrbase/resources/webapi/doc/swagger/include/FreeDVMod.yaml b/sdrbase/resources/webapi/doc/swagger/include/FreeDVMod.yaml index 282ab01ae..d50e967cf 100644 --- a/sdrbase/resources/webapi/doc/swagger/include/FreeDVMod.yaml +++ b/sdrbase/resources/webapi/doc/swagger/include/FreeDVMod.yaml @@ -48,6 +48,8 @@ FreeDVModSettings: $ref: "/doc/swagger/include/GLSpectrum.yaml#/GLSpectrum" channelMarker: $ref: "/doc/swagger/include/ChannelMarker.yaml#/ChannelMarker" + rollupState: + $ref: "/doc/swagger/include/RollupState.yaml#/RollupState" FreeDVModReport: description: FreeDVMod diff --git a/sdrbase/resources/webapi/doc/swagger/include/FreqTracker.yaml b/sdrbase/resources/webapi/doc/swagger/include/FreqTracker.yaml index 684e69943..f05fbb179 100644 --- a/sdrbase/resources/webapi/doc/swagger/include/FreqTracker.yaml +++ b/sdrbase/resources/webapi/doc/swagger/include/FreqTracker.yaml @@ -61,6 +61,8 @@ FreqTrackerSettings: $ref: "/doc/swagger/include/GLSpectrum.yaml#/GLSpectrum" channelMarker: $ref: "/doc/swagger/include/ChannelMarker.yaml#/ChannelMarker" + rollupState: + $ref: "/doc/swagger/include/RollupState.yaml#/RollupState" FreqTrackerReport: description: FreqTracker diff --git a/sdrbase/resources/webapi/doc/swagger/include/GS232Controller.yaml b/sdrbase/resources/webapi/doc/swagger/include/GS232Controller.yaml index d23324ec4..3caad794a 100644 --- a/sdrbase/resources/webapi/doc/swagger/include/GS232Controller.yaml +++ b/sdrbase/resources/webapi/doc/swagger/include/GS232Controller.yaml @@ -67,6 +67,8 @@ GS232ControllerSettings: type: integer reverseAPIFeatureIndex: type: integer + rollupState: + $ref: "/doc/swagger/include/RollupState.yaml#/RollupState" GS232ControllerReport: description: "GS-232 Controller report" diff --git a/sdrbase/resources/webapi/doc/swagger/include/IEEE_802_15_4_Mod.yaml b/sdrbase/resources/webapi/doc/swagger/include/IEEE_802_15_4_Mod.yaml index d8e697208..ab5f1743c 100644 --- a/sdrbase/resources/webapi/doc/swagger/include/IEEE_802_15_4_Mod.yaml +++ b/sdrbase/resources/webapi/doc/swagger/include/IEEE_802_15_4_Mod.yaml @@ -126,6 +126,8 @@ IEEE_802_15_4_ModSettings: type: integer channelMarker: $ref: "/doc/swagger/include/ChannelMarker.yaml#/ChannelMarker" + rollupState: + $ref: "/doc/swagger/include/RollupState.yaml#/RollupState" IEEE_802_15_4_ModReport: description: IEEE_802_15_4_Mod diff --git a/sdrbase/resources/webapi/doc/swagger/include/Interferometer.yaml b/sdrbase/resources/webapi/doc/swagger/include/Interferometer.yaml index 83d95aceb..c08cf5058 100644 --- a/sdrbase/resources/webapi/doc/swagger/include/Interferometer.yaml +++ b/sdrbase/resources/webapi/doc/swagger/include/Interferometer.yaml @@ -29,3 +29,5 @@ InterferometerSettings: $ref: "/doc/swagger/include/GLScope.yaml#/GLScope" channelMarker: $ref: "/doc/swagger/include/ChannelMarker.yaml#/ChannelMarker" + rollupState: + $ref: "/doc/swagger/include/RollupState.yaml#/RollupState" diff --git a/sdrbase/resources/webapi/doc/swagger/include/JogdialController.yaml b/sdrbase/resources/webapi/doc/swagger/include/JogdialController.yaml index a5be68eba..0fed67799 100644 --- a/sdrbase/resources/webapi/doc/swagger/include/JogdialController.yaml +++ b/sdrbase/resources/webapi/doc/swagger/include/JogdialController.yaml @@ -19,3 +19,5 @@ JogdialControllerSettings: type: integer reverseAPIFeatureIndex: type: integer + rollupState: + $ref: "/doc/swagger/include/RollupState.yaml#/RollupState" diff --git a/sdrbase/resources/webapi/doc/swagger/include/LocalSink.yaml b/sdrbase/resources/webapi/doc/swagger/include/LocalSink.yaml index 6eddee8de..0cacb668d 100644 --- a/sdrbase/resources/webapi/doc/swagger/include/LocalSink.yaml +++ b/sdrbase/resources/webapi/doc/swagger/include/LocalSink.yaml @@ -31,3 +31,5 @@ LocalSinkSettings: type: integer channelMarker: $ref: "/doc/swagger/include/ChannelMarker.yaml#/ChannelMarker" + rollupState: + $ref: "/doc/swagger/include/RollupState.yaml#/RollupState" diff --git a/sdrbase/resources/webapi/doc/swagger/include/LocalSource.yaml b/sdrbase/resources/webapi/doc/swagger/include/LocalSource.yaml index 1883c9ce4..4d8f78d45 100644 --- a/sdrbase/resources/webapi/doc/swagger/include/LocalSource.yaml +++ b/sdrbase/resources/webapi/doc/swagger/include/LocalSource.yaml @@ -31,3 +31,5 @@ LocalSourceSettings: type: integer channelMarker: $ref: "/doc/swagger/include/ChannelMarker.yaml#/ChannelMarker" + rollupState: + $ref: "/doc/swagger/include/RollupState.yaml#/RollupState" diff --git a/sdrbase/resources/webapi/doc/swagger/include/Map.yaml b/sdrbase/resources/webapi/doc/swagger/include/Map.yaml index 30f7f4982..821bdcb07 100644 --- a/sdrbase/resources/webapi/doc/swagger/include/Map.yaml +++ b/sdrbase/resources/webapi/doc/swagger/include/Map.yaml @@ -19,6 +19,8 @@ MapSettings: type: integer reverseAPIFeatureIndex: type: integer + rollupState: + $ref: "/doc/swagger/include/RollupState.yaml#/RollupState" MapActions: description: Map diff --git a/sdrbase/resources/webapi/doc/swagger/include/NFMDemod.yaml b/sdrbase/resources/webapi/doc/swagger/include/NFMDemod.yaml index 5a501c7b0..3b245c478 100644 --- a/sdrbase/resources/webapi/doc/swagger/include/NFMDemod.yaml +++ b/sdrbase/resources/webapi/doc/swagger/include/NFMDemod.yaml @@ -57,6 +57,8 @@ NFMDemodSettings: type: integer channelMarker: $ref: "/doc/swagger/include/ChannelMarker.yaml#/ChannelMarker" + rollupState: + $ref: "/doc/swagger/include/RollupState.yaml#/RollupState" NFMDemodReport: description: NFMDemod diff --git a/sdrbase/resources/webapi/doc/swagger/include/NFMMod.yaml b/sdrbase/resources/webapi/doc/swagger/include/NFMMod.yaml index 57c2fb28e..2b82f5d03 100644 --- a/sdrbase/resources/webapi/doc/swagger/include/NFMMod.yaml +++ b/sdrbase/resources/webapi/doc/swagger/include/NFMMod.yaml @@ -71,6 +71,8 @@ NFMModSettings: $ref: "/doc/swagger/include/CWKeyer.yaml#/CWKeyerSettings" channelMarker: $ref: "/doc/swagger/include/ChannelMarker.yaml#/ChannelMarker" + rollupState: + $ref: "/doc/swagger/include/RollupState.yaml#/RollupState" NFMModReport: description: NFMMod diff --git a/sdrbase/resources/webapi/doc/swagger/include/NoiseFigure.yaml b/sdrbase/resources/webapi/doc/swagger/include/NoiseFigure.yaml index cc48b3502..6b5f0570b 100644 --- a/sdrbase/resources/webapi/doc/swagger/include/NoiseFigure.yaml +++ b/sdrbase/resources/webapi/doc/swagger/include/NoiseFigure.yaml @@ -60,6 +60,8 @@ NoiseFigureSettings: type: integer channelMarker: $ref: "/doc/swagger/include/ChannelMarker.yaml#/ChannelMarker" + rollupState: + $ref: "/doc/swagger/include/RollupState.yaml#/RollupState" NoiseFigureReport: description: NoiseFigure diff --git a/sdrbase/resources/webapi/doc/swagger/include/PERTester.yaml b/sdrbase/resources/webapi/doc/swagger/include/PERTester.yaml index 0747f06eb..361600140 100644 --- a/sdrbase/resources/webapi/doc/swagger/include/PERTester.yaml +++ b/sdrbase/resources/webapi/doc/swagger/include/PERTester.yaml @@ -48,6 +48,8 @@ PERTesterSettings: type: integer reverseAPIFeatureIndex: type: integer + rollupState: + $ref: "/doc/swagger/include/RollupState.yaml#/RollupState" PERTesterReport: description: PERTester diff --git a/sdrbase/resources/webapi/doc/swagger/include/PacketDemod.yaml b/sdrbase/resources/webapi/doc/swagger/include/PacketDemod.yaml index cb27f8324..738f14541 100644 --- a/sdrbase/resources/webapi/doc/swagger/include/PacketDemod.yaml +++ b/sdrbase/resources/webapi/doc/swagger/include/PacketDemod.yaml @@ -48,6 +48,8 @@ PacketDemodSettings: type: integer channelMarker: $ref: "/doc/swagger/include/ChannelMarker.yaml#/ChannelMarker" + rollupState: + $ref: "/doc/swagger/include/RollupState.yaml#/RollupState" PacketDemodReport: description: AMDemod diff --git a/sdrbase/resources/webapi/doc/swagger/include/PacketMod.yaml b/sdrbase/resources/webapi/doc/swagger/include/PacketMod.yaml index d98d6fe62..db529c3ca 100644 --- a/sdrbase/resources/webapi/doc/swagger/include/PacketMod.yaml +++ b/sdrbase/resources/webapi/doc/swagger/include/PacketMod.yaml @@ -151,6 +151,8 @@ PacketModSettings: type: integer channelMarker: $ref: "/doc/swagger/include/ChannelMarker.yaml#/ChannelMarker" + rollupState: + $ref: "/doc/swagger/include/RollupState.yaml#/RollupState" PacketModReport: description: PacketMod diff --git a/sdrbase/resources/webapi/doc/swagger/include/PagerDemod.yaml b/sdrbase/resources/webapi/doc/swagger/include/PagerDemod.yaml index 6975df164..e33cf5434 100644 --- a/sdrbase/resources/webapi/doc/swagger/include/PagerDemod.yaml +++ b/sdrbase/resources/webapi/doc/swagger/include/PagerDemod.yaml @@ -69,6 +69,8 @@ PagerDemodSettings: $ref: "/doc/swagger/include/GLScope.yaml#/GLScope" channelMarker: $ref: "/doc/swagger/include/ChannelMarker.yaml#/ChannelMarker" + rollupState: + $ref: "/doc/swagger/include/RollupState.yaml#/RollupState" PagerDemodReport: description: PagerDemod diff --git a/sdrbase/resources/webapi/doc/swagger/include/RadioAstronomy.yaml b/sdrbase/resources/webapi/doc/swagger/include/RadioAstronomy.yaml index ea352db22..20d56e540 100644 --- a/sdrbase/resources/webapi/doc/swagger/include/RadioAstronomy.yaml +++ b/sdrbase/resources/webapi/doc/swagger/include/RadioAstronomy.yaml @@ -75,6 +75,8 @@ RadioAstronomySettings: type: integer channelMarker: $ref: "/doc/swagger/include/ChannelMarker.yaml#/ChannelMarker" + rollupState: + $ref: "/doc/swagger/include/RollupState.yaml#/RollupState" RadioAstronomyReport: description: RadioAstronomy diff --git a/sdrbase/resources/webapi/doc/swagger/include/RadioClock.yaml b/sdrbase/resources/webapi/doc/swagger/include/RadioClock.yaml index 2da1ccf59..8acd20869 100644 --- a/sdrbase/resources/webapi/doc/swagger/include/RadioClock.yaml +++ b/sdrbase/resources/webapi/doc/swagger/include/RadioClock.yaml @@ -40,6 +40,8 @@ RadioClockSettings: $ref: "/doc/swagger/include/GLScope.yaml#/GLScope" channelMarker: $ref: "/doc/swagger/include/ChannelMarker.yaml#/ChannelMarker" + rollupState: + $ref: "/doc/swagger/include/RollupState.yaml#/RollupState" RadioClockReport: description: RadioClock diff --git a/sdrbase/resources/webapi/doc/swagger/include/RemoteSink.yaml b/sdrbase/resources/webapi/doc/swagger/include/RemoteSink.yaml index 66d780579..6d3793623 100644 --- a/sdrbase/resources/webapi/doc/swagger/include/RemoteSink.yaml +++ b/sdrbase/resources/webapi/doc/swagger/include/RemoteSink.yaml @@ -44,3 +44,5 @@ RemoteSinkSettings: type: integer channelMarker: $ref: "/doc/swagger/include/ChannelMarker.yaml#/ChannelMarker" + rollupState: + $ref: "/doc/swagger/include/RollupState.yaml#/RollupState" diff --git a/sdrbase/resources/webapi/doc/swagger/include/RemoteSource.yaml b/sdrbase/resources/webapi/doc/swagger/include/RemoteSource.yaml index 38431203d..347fef743 100644 --- a/sdrbase/resources/webapi/doc/swagger/include/RemoteSource.yaml +++ b/sdrbase/resources/webapi/doc/swagger/include/RemoteSource.yaml @@ -31,6 +31,8 @@ RemoteSourceSettings: type: integer channelMarker: $ref: "/doc/swagger/include/ChannelMarker.yaml#/ChannelMarker" + rollupState: + $ref: "/doc/swagger/include/RollupState.yaml#/RollupState" RemoteSourceReport: description: "Remote channel source report" diff --git a/sdrbase/resources/webapi/doc/swagger/include/RigCtlServer.yaml b/sdrbase/resources/webapi/doc/swagger/include/RigCtlServer.yaml index 2466a1434..b661b9ea9 100644 --- a/sdrbase/resources/webapi/doc/swagger/include/RigCtlServer.yaml +++ b/sdrbase/resources/webapi/doc/swagger/include/RigCtlServer.yaml @@ -33,6 +33,8 @@ RigCtlServerSettings: type: integer reverseAPIFeatureIndex: type: integer + rollupState: + $ref: "/doc/swagger/include/RollupState.yaml#/RollupState" RigCtlServerReport: description: RigCtl server report diff --git a/sdrbase/resources/webapi/doc/swagger/include/RollupState.yaml b/sdrbase/resources/webapi/doc/swagger/include/RollupState.yaml new file mode 100644 index 000000000..843e01866 --- /dev/null +++ b/sdrbase/resources/webapi/doc/swagger/include/RollupState.yaml @@ -0,0 +1,21 @@ +RollupChildState: + description: "Rollup widget child state" + properties: + objectName: + type: string + isHidden: + type: integer + description: > + Boolean - child hidden state + * 0 - visible + * 1 - hidden + +RollupState: + description: "Rollup widget state" + properties: + version: + type: integer + childrenStates: + type: array + items: + $ref: "/doc/swagger/include/RollupState.yaml#/RollupChildState" diff --git a/sdrbase/resources/webapi/doc/swagger/include/SSBDemod.yaml b/sdrbase/resources/webapi/doc/swagger/include/SSBDemod.yaml index 39c2e09ba..b6f217b8b 100644 --- a/sdrbase/resources/webapi/doc/swagger/include/SSBDemod.yaml +++ b/sdrbase/resources/webapi/doc/swagger/include/SSBDemod.yaml @@ -66,6 +66,8 @@ SSBDemodSettings: $ref: "/doc/swagger/include/GLSpectrum.yaml#/GLSpectrum" channelMarker: $ref: "/doc/swagger/include/ChannelMarker.yaml#/ChannelMarker" + rollupState: + $ref: "/doc/swagger/include/RollupState.yaml#/RollupState" SSBDemodReport: description: SSBDemod diff --git a/sdrbase/resources/webapi/doc/swagger/include/SSBMod.yaml b/sdrbase/resources/webapi/doc/swagger/include/SSBMod.yaml index 3f4d9b8c2..59d593d82 100644 --- a/sdrbase/resources/webapi/doc/swagger/include/SSBMod.yaml +++ b/sdrbase/resources/webapi/doc/swagger/include/SSBMod.yaml @@ -64,6 +64,8 @@ SSBModSettings: $ref: "/doc/swagger/include/GLSpectrum.yaml#/GLSpectrum" channelMarker: $ref: "/doc/swagger/include/ChannelMarker.yaml#/ChannelMarker" + rollupState: + $ref: "/doc/swagger/include/RollupState.yaml#/RollupState" SSBModReport: description: SSBMod diff --git a/sdrbase/resources/webapi/doc/swagger/include/SatelliteTracker.yaml b/sdrbase/resources/webapi/doc/swagger/include/SatelliteTracker.yaml index 7a8a0956a..86354c9da 100644 --- a/sdrbase/resources/webapi/doc/swagger/include/SatelliteTracker.yaml +++ b/sdrbase/resources/webapi/doc/swagger/include/SatelliteTracker.yaml @@ -112,6 +112,8 @@ SatelliteTrackerSettings: type: integer reverseAPIFeatureIndex: type: integer + rollupState: + $ref: "/doc/swagger/include/RollupState.yaml#/RollupState" SatelliteDeviceSettingsList: description: "List of device set settings for a satellite" diff --git a/sdrbase/resources/webapi/doc/swagger/include/SigMFFileSink.yaml b/sdrbase/resources/webapi/doc/swagger/include/SigMFFileSink.yaml index 40e040376..7215cd3b5 100644 --- a/sdrbase/resources/webapi/doc/swagger/include/SigMFFileSink.yaml +++ b/sdrbase/resources/webapi/doc/swagger/include/SigMFFileSink.yaml @@ -52,6 +52,8 @@ SigMFFileSinkSettings: $ref: "/doc/swagger/include/GLSpectrum.yaml#/GLSpectrum" channelMarker: $ref: "/doc/swagger/include/ChannelMarker.yaml#/ChannelMarker" + rollupState: + $ref: "/doc/swagger/include/RollupState.yaml#/RollupState" SigMFFileSinkReport: description: SigMFFileSink diff --git a/sdrbase/resources/webapi/doc/swagger/include/SimplePTT.yaml b/sdrbase/resources/webapi/doc/swagger/include/SimplePTT.yaml index 14f753ac6..4f8945f5c 100644 --- a/sdrbase/resources/webapi/doc/swagger/include/SimplePTT.yaml +++ b/sdrbase/resources/webapi/doc/swagger/include/SimplePTT.yaml @@ -48,6 +48,8 @@ SimplePTTSettings: type: integer reverseAPIFeatureIndex: type: integer + rollupState: + $ref: "/doc/swagger/include/RollupState.yaml#/RollupState" SimplePTTReport: description: "Simple PTT report" diff --git a/sdrbase/resources/webapi/doc/swagger/include/StarTracker.yaml b/sdrbase/resources/webapi/doc/swagger/include/StarTracker.yaml index 908d43df0..8f7bb641c 100644 --- a/sdrbase/resources/webapi/doc/swagger/include/StarTracker.yaml +++ b/sdrbase/resources/webapi/doc/swagger/include/StarTracker.yaml @@ -109,6 +109,8 @@ StarTrackerSettings: type: integer reverseAPIFeatureIndex: type: integer + rollupState: + $ref: "/doc/swagger/include/RollupState.yaml#/RollupState" StarTrackerTarget: description: "Star Tracker target. Sent to startracker.target message queue for other plugins to use." diff --git a/sdrbase/resources/webapi/doc/swagger/include/UDPSink.yaml b/sdrbase/resources/webapi/doc/swagger/include/UDPSink.yaml index 204c89526..359643996 100644 --- a/sdrbase/resources/webapi/doc/swagger/include/UDPSink.yaml +++ b/sdrbase/resources/webapi/doc/swagger/include/UDPSink.yaml @@ -73,6 +73,8 @@ UDPSinkSettings: $ref: "/doc/swagger/include/GLSpectrum.yaml#/GLSpectrum" channelMarker: $ref: "/doc/swagger/include/ChannelMarker.yaml#/ChannelMarker" + rollupState: + $ref: "/doc/swagger/include/RollupState.yaml#/RollupState" UDPSinkReport: description: UDPSink diff --git a/sdrbase/resources/webapi/doc/swagger/include/UDPSource.yaml b/sdrbase/resources/webapi/doc/swagger/include/UDPSource.yaml index a843fd9d8..9ae84dbd3 100644 --- a/sdrbase/resources/webapi/doc/swagger/include/UDPSource.yaml +++ b/sdrbase/resources/webapi/doc/swagger/include/UDPSource.yaml @@ -75,6 +75,8 @@ UDPSourceSettings: $ref: "/doc/swagger/include/GLSpectrum.yaml#/GLSpectrum" channelMarker: $ref: "/doc/swagger/include/ChannelMarker.yaml#/ChannelMarker" + rollupState: + $ref: "/doc/swagger/include/RollupState.yaml#/RollupState" UDPSourceReport: description: UDPSource diff --git a/sdrbase/resources/webapi/doc/swagger/include/VORDemod.yaml b/sdrbase/resources/webapi/doc/swagger/include/VORDemod.yaml index 57a151ff3..f5f7e386d 100644 --- a/sdrbase/resources/webapi/doc/swagger/include/VORDemod.yaml +++ b/sdrbase/resources/webapi/doc/swagger/include/VORDemod.yaml @@ -38,6 +38,8 @@ VORDemodSettings: type: integer channelMarker: $ref: "/doc/swagger/include/ChannelMarker.yaml#/ChannelMarker" + rollupState: + $ref: "/doc/swagger/include/RollupState.yaml#/RollupState" VORDemodReport: description: VORDemod diff --git a/sdrbase/resources/webapi/doc/swagger/include/VORDemodSC.yaml b/sdrbase/resources/webapi/doc/swagger/include/VORDemodSC.yaml index 812968d11..1b47c5c1c 100644 --- a/sdrbase/resources/webapi/doc/swagger/include/VORDemodSC.yaml +++ b/sdrbase/resources/webapi/doc/swagger/include/VORDemodSC.yaml @@ -41,6 +41,8 @@ VORDemodSCSettings: type: integer channelMarker: $ref: "/doc/swagger/include/ChannelMarker.yaml#/ChannelMarker" + rollupState: + $ref: "/doc/swagger/include/RollupState.yaml#/RollupState" VORDemodSCReport: description: VORDemodSC diff --git a/sdrbase/resources/webapi/doc/swagger/include/VORLocalizer.yaml b/sdrbase/resources/webapi/doc/swagger/include/VORLocalizer.yaml index ea708fadb..7457636d6 100644 --- a/sdrbase/resources/webapi/doc/swagger/include/VORLocalizer.yaml +++ b/sdrbase/resources/webapi/doc/swagger/include/VORLocalizer.yaml @@ -31,6 +31,8 @@ VORLocalizerSettings: centerShift: description: Shift of center frequency in Hz type: integer + rollupState: + $ref: "/doc/swagger/include/RollupState.yaml#/RollupState" VORLocalizerReport: description: VORLocalizers diff --git a/sdrbase/resources/webapi/doc/swagger/include/WFMDemod.yaml b/sdrbase/resources/webapi/doc/swagger/include/WFMDemod.yaml index 0d4d25df0..ffc071d8e 100644 --- a/sdrbase/resources/webapi/doc/swagger/include/WFMDemod.yaml +++ b/sdrbase/resources/webapi/doc/swagger/include/WFMDemod.yaml @@ -41,6 +41,8 @@ WFMDemodSettings: type: integer channelMarker: $ref: "/doc/swagger/include/ChannelMarker.yaml#/ChannelMarker" + rollupState: + $ref: "/doc/swagger/include/RollupState.yaml#/RollupState" WFMDemodReport: description: WFMDemod diff --git a/sdrbase/resources/webapi/doc/swagger/include/WFMMod.yaml b/sdrbase/resources/webapi/doc/swagger/include/WFMMod.yaml index 67ea88651..8de5aea6e 100644 --- a/sdrbase/resources/webapi/doc/swagger/include/WFMMod.yaml +++ b/sdrbase/resources/webapi/doc/swagger/include/WFMMod.yaml @@ -49,6 +49,8 @@ WFMModSettings: $ref: "/doc/swagger/include/CWKeyer.yaml#/CWKeyerSettings" channelMarker: $ref: "/doc/swagger/include/ChannelMarker.yaml#/ChannelMarker" + rollupState: + $ref: "/doc/swagger/include/RollupState.yaml#/RollupState" WFMModReport: description: WFMMod diff --git a/sdrbase/settings/rollupstate.cpp b/sdrbase/settings/rollupstate.cpp new file mode 100644 index 000000000..0c9584471 --- /dev/null +++ b/sdrbase/settings/rollupstate.cpp @@ -0,0 +1,117 @@ +/////////////////////////////////////////////////////////////////////////////////// +// Copyright (C) 2022 F4EXB // +// written by Edouard Griffiths // +// // +// This program is free software; you can redistribute it and/or modify // +// it under the terms of the GNU General Public License as published by // +// the Free Software Foundation as version 3 of the License, or // +// (at your option) any later version. // +// // +// This program is distributed in the hope that it will be useful, // +// but WITHOUT ANY WARRANTY; without even the implied warranty of // +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the // +// GNU General Public License V3 for more details. // +// // +// You should have received a copy of the GNU General Public License // +// along with this program. If not, see . // +/////////////////////////////////////////////////////////////////////////////////// + +#include +#include "SWGRollupState.h" + +#include "rollupstate.h" + +RollupState::RollupState() : + m_version(0) +{ } + +QByteArray RollupState::serialize() const +{ + QByteArray state; + QDataStream stream(&state, QIODevice::WriteOnly); + stream << VersionMarker; + stream << m_version; + stream << m_childrenStates.size(); + + for (const auto &child : m_childrenStates) + { + stream << child.m_objectName; + stream << (child.m_isHidden ? (int) 0 : (int) 1); + } + + return state; +} + +bool RollupState::deserialize(const QByteArray& data) +{ + if (data.isEmpty()) { + return false; + } + + QByteArray sd = data; + QDataStream stream(&sd, QIODevice::ReadOnly); + int marker, v; + stream >> marker; + stream >> v; + + if ((stream.status() != QDataStream::Ok) || (marker != VersionMarker) || (v != m_version)) { + return false; + } + + int count; + stream >> count; + + if (stream.status() != QDataStream::Ok) { + return false; + } + + m_childrenStates.clear(); + + for (int i = 0; i < count; ++i) + { + QString name; + int visible; + + stream >> name; + stream >> visible; + + m_childrenStates.push_back({name, visible == 0}); + } + + return true; +} + +void RollupState::formatTo(SWGSDRangel::SWGObject *swgObject) const +{ + SWGSDRangel::SWGRollupState *swgRollupState = static_cast(swgObject); + swgRollupState->setVersion(m_version); + swgRollupState->setChildrenStates(new QList); + + for (const auto &child : m_childrenStates) + { + swgRollupState->getChildrenStates()->append(new SWGSDRangel::SWGRollupChildState); + swgRollupState->getChildrenStates()->back()->init(); + swgRollupState->getChildrenStates()->back()->setObjectName(new QString(child.m_objectName)); + swgRollupState->getChildrenStates()->back()->setIsHidden(child.m_isHidden ? 1 : 0); + } +} + +void RollupState::updateFrom(const QStringList& keys, const SWGSDRangel::SWGObject *swgObject) +{ + SWGSDRangel::SWGRollupState *swgRollupState = + static_cast(const_cast(swgObject)); + + if (keys.contains("rollupState.version")) { + m_version = swgRollupState->getVersion(); + } + + if (keys.contains("rollupState.childrenStates")) + { + QList *swgChildrenStates = swgRollupState->getChildrenStates(); + m_childrenStates.clear(); + + for (const auto swgChildState : *swgChildrenStates) { + m_childrenStates.append({*swgChildState->getObjectName(), swgChildState->getIsHidden() != 0}); + } + } +} diff --git a/sdrbase/settings/rollupstate.h b/sdrbase/settings/rollupstate.h new file mode 100644 index 000000000..425025585 --- /dev/null +++ b/sdrbase/settings/rollupstate.h @@ -0,0 +1,58 @@ +/////////////////////////////////////////////////////////////////////////////////// +// Copyright (C) 2022 F4EXB // +// written by Edouard Griffiths // +// // +// This program is free software; you can redistribute it and/or modify // +// it under the terms of the GNU General Public License as published by // +// the Free Software Foundation as version 3 of the License, or // +// (at your option) any later version. // +// // +// This program is distributed in the hope that it will be useful, // +// but WITHOUT ANY WARRANTY; without even the implied warranty of // +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the // +// GNU General Public License V3 for more details. // +// // +// You should have received a copy of the GNU General Public License // +// along with this program. If not, see . // +/////////////////////////////////////////////////////////////////////////////////// + +#ifndef INCLUDE_ROLLUPSTATE_H +#define INCLUDE_ROLLUPSTATE_H + +#include +#include +#include + +#include "export.h" +#include "serializable.h" + +class SDRBASE_API RollupState : public Serializable +{ +public: + enum { + VersionMarker = 0xff + }; + struct RollupChildState + { + QString m_objectName; + bool m_isHidden; + }; + + explicit RollupState(); + virtual ~RollupState() {} + + virtual QByteArray serialize() const; + virtual bool deserialize(const QByteArray& data); + virtual void formatTo(SWGSDRangel::SWGObject *swgObject) const; + virtual void updateFrom(const QStringList& keys, const SWGSDRangel::SWGObject *swgObject); + + void setVersion(int version) { m_version = version; } + QList& getChildren() { return m_childrenStates; } + const QList& getChildren() const { return m_childrenStates; } + +private: + QList m_childrenStates; + int m_version; +}; + +#endif // INCLUDE_ROLLUPSTATE_H diff --git a/sdrgui/gui/rollupwidget.cpp b/sdrgui/gui/rollupwidget.cpp index 163f1d147..071f9c7df 100644 --- a/sdrgui/gui/rollupwidget.cpp +++ b/sdrgui/gui/rollupwidget.cpp @@ -23,6 +23,7 @@ #include #include "gui/rollupwidget.h" +#include "settings/rollupstate.h" #include "ui_glspectrumgui.h" RollupWidget::RollupWidget(QWidget* parent) : @@ -45,91 +46,135 @@ RollupWidget::RollupWidget(QWidget* parent) : m_titleTextColor = palette().highlightedText().color(); } -QByteArray RollupWidget::saveState(int version) const +// QByteArray RollupWidget::saveState(int version) const +// { +// QByteArray state; +// QDataStream stream(&state, QIODevice::WriteOnly); +// int count = 0; + +// for (int i = 0; i < children().count(); ++i) +// { +// QWidget* r = qobject_cast(children()[i]); + +// if (r) { +// count++; +// } +// } + +// stream << VersionMarker; +// stream << version; +// stream << count; + +// for (int i = 0; i < children().count(); ++i) +// { +// QWidget* r = qobject_cast(children()[i]); + +// if (r) +// { +// stream << r->objectName(); + +// if (r->isHidden()) { +// stream << (int) 0; +// } else { +// stream << (int) 1; +// } +// } +// } + +// return state; +// } + +void RollupWidget::saveState(RollupState &state) const { - QByteArray state; - QDataStream stream(&state, QIODevice::WriteOnly); - int count = 0; + QList& childrenStates = state.getChildren(); + childrenStates.clear(); for (int i = 0; i < children().count(); ++i) { QWidget* r = qobject_cast(children()[i]); if (r) { - count++; + childrenStates.push_back({r->objectName(), r->isHidden()}); } } - - stream << VersionMarker; - stream << version; - stream << count; - - for (int i = 0; i < children().count(); ++i) - { - QWidget* r = qobject_cast(children()[i]); - - if (r) - { - stream << r->objectName(); - - if (r->isHidden()) { - stream << (int) 0; - } else { - stream << (int) 1; - } - } - } - - return state; } -bool RollupWidget::restoreState(const QByteArray& state, int version) +// bool RollupWidget::restoreState(const QByteArray& state, int version) +// { +// if (state.isEmpty()) { +// return false; +// } + +// QByteArray sd = state; +// QDataStream stream(&sd, QIODevice::ReadOnly); +// int marker, v; +// stream >> marker; +// stream >> v; + +// if ((stream.status() != QDataStream::Ok) || (marker != VersionMarker) || (v != version)) { +// return false; +// } + +// int count; +// stream >> count; + +// if (stream.status() != QDataStream::Ok) { +// return false; +// } + +// for (int i = 0; i < count; ++i) +// { +// QString name; +// int visible; + +// stream >> name; +// stream >> visible; + +// if (stream.status() != QDataStream::Ok) { +// return false; +// } + +// for (int j = 0; j < children().count(); ++j) +// { +// QWidget* r = qobject_cast(children()[j]); + +// if (r) +// { +// if (r->objectName() == name) +// { +// if (visible) { +// r->show(); +// } else { +// r->hide(); +// } + +// break; +// } +// } +// } +// } + +// return true; +// } + +void RollupWidget::restoreState(const RollupState& state) { - if (state.isEmpty()) { - return false; - } + const QList& childrenStates = state.getChildren(); - QByteArray sd = state; - QDataStream stream(&sd, QIODevice::ReadOnly); - int marker, v; - stream >> marker; - stream >> v; - - if ((stream.status() != QDataStream::Ok) || (marker != VersionMarker) || (v != version)) { - return false; - } - - int count; - stream >> count; - - if (stream.status() != QDataStream::Ok) { - return false; - } - - for (int i = 0; i < count; ++i) + for (const auto &childState : childrenStates) { - QString name; - int visible; - - stream >> name; - stream >> visible; - - if (stream.status() != QDataStream::Ok) { - return false; - } - for (int j = 0; j < children().count(); ++j) { QWidget* r = qobject_cast(children()[j]); if (r) { - if (r->objectName() == name) + if (r->objectName() == childState.m_objectName) { - if (visible) { - r->show(); - } else { + if (childState.m_isHidden) { r->hide(); + } else { + r->show(); } break; @@ -137,8 +182,6 @@ bool RollupWidget::restoreState(const QByteArray& state, int version) } } } - - return true; } void RollupWidget::setTitleColor(const QColor& c) @@ -197,13 +240,13 @@ int RollupWidget::arrangeRollups() // In the future, we should probably respect 'Vertical Stretch' int extraSpace; int firstExtra; - if ((expandingChildren > 0) && (m_newHeight > pos)) + if ((expandingChildren > 0) && (m_newHeight > pos)) { int totalExtra = m_newHeight - pos; extraSpace = totalExtra / expandingChildren; firstExtra = totalExtra - (extraSpace * expandingChildren); - } - else + } + else { extraSpace = 0; firstExtra = 0; diff --git a/sdrgui/gui/rollupwidget.h b/sdrgui/gui/rollupwidget.h index 815015b9b..4e090ce47 100644 --- a/sdrgui/gui/rollupwidget.h +++ b/sdrgui/gui/rollupwidget.h @@ -23,6 +23,8 @@ #include #include "export.h" +class RollupState; + class SDRGUI_API RollupWidget : public QWidget { Q_OBJECT @@ -56,8 +58,10 @@ protected: int arrangeRollups(); - QByteArray saveState(int version = 0) const; - bool restoreState(const QByteArray& state, int version = 0); + // QByteArray saveState(int version = 0) const; + void saveState(RollupState& state) const; + // bool restoreState(const QByteArray& state, int version = 0); + void restoreState(const RollupState& state); void paintEvent(QPaintEvent*); int paintRollup(QWidget* rollup, int pos, QPainter* p, bool last, const QColor& frame); diff --git a/swagger/sdrangel/api/swagger/include/ADSBDemod.yaml b/swagger/sdrangel/api/swagger/include/ADSBDemod.yaml index 7ba2d42df..14d7690d8 100644 --- a/swagger/sdrangel/api/swagger/include/ADSBDemod.yaml +++ b/swagger/sdrangel/api/swagger/include/ADSBDemod.yaml @@ -75,6 +75,8 @@ ADSBDemodSettings: type: integer channelMarker: $ref: "http://swgserver:8081/api/swagger/include/ChannelMarker.yaml#/ChannelMarker" + rollupState: + $ref: "http://swgserver:8081/api/swagger/include/RollupState.yaml#/RollupState" ADSBDemodReport: description: ADSBDemod diff --git a/swagger/sdrangel/api/swagger/include/AFC.yaml b/swagger/sdrangel/api/swagger/include/AFC.yaml index 4a88f4a95..10861a19d 100644 --- a/swagger/sdrangel/api/swagger/include/AFC.yaml +++ b/swagger/sdrangel/api/swagger/include/AFC.yaml @@ -44,6 +44,8 @@ AFCSettings: type: integer reverseAPIFeatureIndex: type: integer + rollupState: + $ref: "http://swgserver:8081/api/swagger/include/RollupState.yaml#/RollupState" AFCReport: description: "AFC report" diff --git a/swagger/sdrangel/api/swagger/include/AIS.yaml b/swagger/sdrangel/api/swagger/include/AIS.yaml index 5a27a8ff3..e006d3c08 100644 --- a/swagger/sdrangel/api/swagger/include/AIS.yaml +++ b/swagger/sdrangel/api/swagger/include/AIS.yaml @@ -16,3 +16,5 @@ AISSettings: type: integer reverseAPIFeatureIndex: type: integer + rollupState: + $ref: "http://swgserver:8081/api/swagger/include/RollupState.yaml#/RollupState" diff --git a/swagger/sdrangel/api/swagger/include/AISDemod.yaml b/swagger/sdrangel/api/swagger/include/AISDemod.yaml index 2b4e72358..512c5f86d 100644 --- a/swagger/sdrangel/api/swagger/include/AISDemod.yaml +++ b/swagger/sdrangel/api/swagger/include/AISDemod.yaml @@ -54,6 +54,8 @@ AISDemodSettings: $ref: "http://swgserver:8081/api/swagger/include/GLScope.yaml#/GLScope" channelMarker: $ref: "http://swgserver:8081/api/swagger/include/ChannelMarker.yaml#/ChannelMarker" + rollupState: + $ref: "http://swgserver:8081/api/swagger/include/RollupState.yaml#/RollupState" AISDemodReport: description: AISDemod diff --git a/swagger/sdrangel/api/swagger/include/AISMod.yaml b/swagger/sdrangel/api/swagger/include/AISMod.yaml index 5cea39428..2e593b1ad 100644 --- a/swagger/sdrangel/api/swagger/include/AISMod.yaml +++ b/swagger/sdrangel/api/swagger/include/AISMod.yaml @@ -118,6 +118,8 @@ AISModSettings: type: integer channelMarker: $ref: "http://swgserver:8081/api/swagger/include/ChannelMarker.yaml#/ChannelMarker" + rollupState: + $ref: "http://swgserver:8081/api/swagger/include/RollupState.yaml#/RollupState" AISModReport: description: AISMod diff --git a/swagger/sdrangel/api/swagger/include/AMDemod.yaml b/swagger/sdrangel/api/swagger/include/AMDemod.yaml index 6e0977af5..53db65e2d 100644 --- a/swagger/sdrangel/api/swagger/include/AMDemod.yaml +++ b/swagger/sdrangel/api/swagger/include/AMDemod.yaml @@ -49,6 +49,8 @@ AMDemodSettings: type: integer channelMarker: $ref: "http://swgserver:8081/api/swagger/include/ChannelMarker.yaml#/ChannelMarker" + rollupState: + $ref: "http://swgserver:8081/api/swagger/include/RollupState.yaml#/RollupState" AMDemodReport: description: AMDemod diff --git a/swagger/sdrangel/api/swagger/include/AMMod.yaml b/swagger/sdrangel/api/swagger/include/AMMod.yaml index 86d460cb1..ee26baf64 100644 --- a/swagger/sdrangel/api/swagger/include/AMMod.yaml +++ b/swagger/sdrangel/api/swagger/include/AMMod.yaml @@ -47,6 +47,8 @@ AMModSettings: $ref: "http://swgserver:8081/api/swagger/include/CWKeyer.yaml#/CWKeyerSettings" channelMarker: $ref: "http://swgserver:8081/api/swagger/include/ChannelMarker.yaml#/ChannelMarker" + rollupState: + $ref: "http://swgserver:8081/api/swagger/include/RollupState.yaml#/RollupState" AMModReport: description: AMMod diff --git a/swagger/sdrangel/api/swagger/include/APRS.yaml b/swagger/sdrangel/api/swagger/include/APRS.yaml index 8f4530f32..6453d477e 100644 --- a/swagger/sdrangel/api/swagger/include/APRS.yaml +++ b/swagger/sdrangel/api/swagger/include/APRS.yaml @@ -28,3 +28,5 @@ APRSSettings: type: integer reverseAPIFeatureIndex: type: integer + rollupState: + $ref: "http://swgserver:8081/api/swagger/include/RollupState.yaml#/RollupState" diff --git a/swagger/sdrangel/api/swagger/include/APTDemod.yaml b/swagger/sdrangel/api/swagger/include/APTDemod.yaml index 8e7dd6383..76dff0050 100644 --- a/swagger/sdrangel/api/swagger/include/APTDemod.yaml +++ b/swagger/sdrangel/api/swagger/include/APTDemod.yaml @@ -65,6 +65,8 @@ APTDemodSettings: type: integer channelMarker: $ref: "http://swgserver:8081/api/swagger/include/ChannelMarker.yaml#/ChannelMarker" + rollupState: + $ref: "http://swgserver:8081/api/swagger/include/RollupState.yaml#/RollupState" APTDemodActions: description: APTDemod diff --git a/swagger/sdrangel/api/swagger/include/ATVMod.yaml b/swagger/sdrangel/api/swagger/include/ATVMod.yaml index 91e0bf15c..96fb4d160 100644 --- a/swagger/sdrangel/api/swagger/include/ATVMod.yaml +++ b/swagger/sdrangel/api/swagger/include/ATVMod.yaml @@ -69,6 +69,8 @@ ATVModSettings: type: integer channelMarker: $ref: "http://swgserver:8081/api/swagger/include/ChannelMarker.yaml#/ChannelMarker" + rollupState: + $ref: "http://swgserver:8081/api/swagger/include/RollupState.yaml#/RollupState" ATVModReport: description: ATVMod diff --git a/swagger/sdrangel/api/swagger/include/AntennaTools.yaml b/swagger/sdrangel/api/swagger/include/AntennaTools.yaml index dc88fa1ca..6c07adc15 100644 --- a/swagger/sdrangel/api/swagger/include/AntennaTools.yaml +++ b/swagger/sdrangel/api/swagger/include/AntennaTools.yaml @@ -33,3 +33,5 @@ AntennaToolsSettings: type: integer reverseAPIFeatureIndex: type: integer + rollupState: + $ref: "http://swgserver:8081/api/swagger/include/RollupState.yaml#/RollupState" diff --git a/swagger/sdrangel/api/swagger/include/BFMDemod.yaml b/swagger/sdrangel/api/swagger/include/BFMDemod.yaml index 1d6fbf29b..1535c776b 100644 --- a/swagger/sdrangel/api/swagger/include/BFMDemod.yaml +++ b/swagger/sdrangel/api/swagger/include/BFMDemod.yaml @@ -48,6 +48,8 @@ BFMDemodSettings: $ref: "http://swgserver:8081/api/swagger/include/GLSpectrum.yaml#/GLSpectrum" channelMarker: $ref: "http://swgserver:8081/api/swagger/include/ChannelMarker.yaml#/ChannelMarker" + rollupState: + $ref: "http://swgserver:8081/api/swagger/include/RollupState.yaml#/RollupState" BFMDemodReport: description: BFMDemod diff --git a/swagger/sdrangel/api/swagger/include/BeamSteeringCWMod.yaml b/swagger/sdrangel/api/swagger/include/BeamSteeringCWMod.yaml index 7e75f6d24..ed9206e01 100644 --- a/swagger/sdrangel/api/swagger/include/BeamSteeringCWMod.yaml +++ b/swagger/sdrangel/api/swagger/include/BeamSteeringCWMod.yaml @@ -24,3 +24,5 @@ BeamSteeringCWModSettings: type: integer channelMarker: $ref: "http://swgserver:8081/api/swagger/include/ChannelMarker.yaml#/ChannelMarker" + rollupState: + $ref: "http://swgserver:8081/api/swagger/include/RollupState.yaml#/RollupState" diff --git a/swagger/sdrangel/api/swagger/include/ChannelAnalyzer.yaml b/swagger/sdrangel/api/swagger/include/ChannelAnalyzer.yaml index faad591f3..89e9c00c3 100644 --- a/swagger/sdrangel/api/swagger/include/ChannelAnalyzer.yaml +++ b/swagger/sdrangel/api/swagger/include/ChannelAnalyzer.yaml @@ -70,3 +70,6 @@ ChannelAnalyzerSettings: $ref: "http://swgserver:8081/api/swagger/include/GLScope.yaml#/GLScope" channelMarker: $ref: "http://swgserver:8081/api/swagger/include/ChannelMarker.yaml#/ChannelMarker" + rollupState: + $ref: "http://swgserver:8081/api/swagger/include/RollupState.yaml#/RollupState" + diff --git a/swagger/sdrangel/api/swagger/include/ChirpChatDemod.yaml b/swagger/sdrangel/api/swagger/include/ChirpChatDemod.yaml index 89e64053a..58be9dedb 100644 --- a/swagger/sdrangel/api/swagger/include/ChirpChatDemod.yaml +++ b/swagger/sdrangel/api/swagger/include/ChirpChatDemod.yaml @@ -122,6 +122,8 @@ ChirpChatDemodSettings: $ref: "http://swgserver:8081/api/swagger/include/GLSpectrum.yaml#/GLSpectrum" channelMarker: $ref: "http://swgserver:8081/api/swagger/include/ChannelMarker.yaml#/ChannelMarker" + rollupState: + $ref: "http://swgserver:8081/api/swagger/include/RollupState.yaml#/RollupState" ChirpChatDemodReport: description: ChirpChatDemod diff --git a/swagger/sdrangel/api/swagger/include/ChirpChatMod.yaml b/swagger/sdrangel/api/swagger/include/ChirpChatMod.yaml index 5a2c4bd80..31786edfc 100644 --- a/swagger/sdrangel/api/swagger/include/ChirpChatMod.yaml +++ b/swagger/sdrangel/api/swagger/include/ChirpChatMod.yaml @@ -159,6 +159,8 @@ ChirpChatModSettings: type: integer channelMarker: $ref: "http://swgserver:8081/api/swagger/include/ChannelMarker.yaml#/ChannelMarker" + rollupState: + $ref: "http://swgserver:8081/api/swagger/include/RollupState.yaml#/RollupState" ChirpChatModReport: description: ChirpChatMod diff --git a/swagger/sdrangel/api/swagger/include/DABDemod.yaml b/swagger/sdrangel/api/swagger/include/DABDemod.yaml index bb958bce0..30b0fe15c 100644 --- a/swagger/sdrangel/api/swagger/include/DABDemod.yaml +++ b/swagger/sdrangel/api/swagger/include/DABDemod.yaml @@ -36,3 +36,5 @@ DABDemodSettings: type: integer channelMarker: $ref: "http://swgserver:8081/api/swagger/include/ChannelMarker.yaml#/ChannelMarker" + rollupState: + $ref: "http://swgserver:8081/api/swagger/include/RollupState.yaml#/RollupState" diff --git a/swagger/sdrangel/api/swagger/include/DATVDemod.yaml b/swagger/sdrangel/api/swagger/include/DATVDemod.yaml index 38b23e1c0..c2996f348 100644 --- a/swagger/sdrangel/api/swagger/include/DATVDemod.yaml +++ b/swagger/sdrangel/api/swagger/include/DATVDemod.yaml @@ -123,6 +123,8 @@ DATVDemodSettings: type: integer channelMarker: $ref: "http://swgserver:8081/api/swagger/include/ChannelMarker.yaml#/ChannelMarker" + rollupState: + $ref: "http://swgserver:8081/api/swagger/include/RollupState.yaml#/RollupState" DATVDemodReport: description: DATVDemod diff --git a/swagger/sdrangel/api/swagger/include/DATVMod.yaml b/swagger/sdrangel/api/swagger/include/DATVMod.yaml index b55240267..fee48c5fe 100644 --- a/swagger/sdrangel/api/swagger/include/DATVMod.yaml +++ b/swagger/sdrangel/api/swagger/include/DATVMod.yaml @@ -60,6 +60,8 @@ DATVModSettings: type: integer channelMarker: $ref: "http://swgserver:8081/api/swagger/include/ChannelMarker.yaml#/ChannelMarker" + rollupState: + $ref: "http://swgserver:8081/api/swagger/include/RollupState.yaml#/RollupState" DATVModReport: description: DATVMod diff --git a/swagger/sdrangel/api/swagger/include/DSDDemod.yaml b/swagger/sdrangel/api/swagger/include/DSDDemod.yaml index 3dce7ed4a..5e8e184aa 100644 --- a/swagger/sdrangel/api/swagger/include/DSDDemod.yaml +++ b/swagger/sdrangel/api/swagger/include/DSDDemod.yaml @@ -70,6 +70,8 @@ DSDDemodSettings: type: integer channelMarker: $ref: "http://swgserver:8081/api/swagger/include/ChannelMarker.yaml#/ChannelMarker" + rollupState: + $ref: "http://swgserver:8081/api/swagger/include/RollupState.yaml#/RollupState" DSDDemodReport: description: DSDDemod diff --git a/swagger/sdrangel/api/swagger/include/DemodAnalyzer.yaml b/swagger/sdrangel/api/swagger/include/DemodAnalyzer.yaml index 352dfc0f1..460da9176 100644 --- a/swagger/sdrangel/api/swagger/include/DemodAnalyzer.yaml +++ b/swagger/sdrangel/api/swagger/include/DemodAnalyzer.yaml @@ -25,3 +25,5 @@ DemodAnalyzerSettings: $ref: "http://swgserver:8081/api/swagger/include/GLSpectrum.yaml#/GLSpectrum" scopeConfig: $ref: "http://swgserver:8081/api/swagger/include/GLScope.yaml#/GLScope" + rollupState: + $ref: "http://swgserver:8081/api/swagger/include/RollupState.yaml#/RollupState" diff --git a/swagger/sdrangel/api/swagger/include/FileSink.yaml b/swagger/sdrangel/api/swagger/include/FileSink.yaml index 04edfffe2..0d2493d64 100644 --- a/swagger/sdrangel/api/swagger/include/FileSink.yaml +++ b/swagger/sdrangel/api/swagger/include/FileSink.yaml @@ -52,6 +52,8 @@ FileSinkSettings: $ref: "http://swgserver:8081/api/swagger/include/GLSpectrum.yaml#/GLSpectrum" channelMarker: $ref: "http://swgserver:8081/api/swagger/include/ChannelMarker.yaml#/ChannelMarker" + rollupState: + $ref: "http://swgserver:8081/api/swagger/include/RollupState.yaml#/RollupState" FileSinkReport: description: FileSink diff --git a/swagger/sdrangel/api/swagger/include/FileSource.yaml b/swagger/sdrangel/api/swagger/include/FileSource.yaml index 697b576f6..b26446b26 100644 --- a/swagger/sdrangel/api/swagger/include/FileSource.yaml +++ b/swagger/sdrangel/api/swagger/include/FileSource.yaml @@ -33,6 +33,8 @@ FileSourceSettings: type: integer channelMarker: $ref: "http://swgserver:8081/api/swagger/include/ChannelMarker.yaml#/ChannelMarker" + rollupState: + $ref: "http://swgserver:8081/api/swagger/include/RollupState.yaml#/RollupState" FileSourceReport: description: FileSource diff --git a/swagger/sdrangel/api/swagger/include/FreeDVDemod.yaml b/swagger/sdrangel/api/swagger/include/FreeDVDemod.yaml index 9ebd83c43..e47280b60 100644 --- a/swagger/sdrangel/api/swagger/include/FreeDVDemod.yaml +++ b/swagger/sdrangel/api/swagger/include/FreeDVDemod.yaml @@ -46,6 +46,8 @@ FreeDVDemodSettings: $ref: "http://swgserver:8081/api/swagger/include/GLSpectrum.yaml#/GLSpectrum" channelMarker: $ref: "http://swgserver:8081/api/swagger/include/ChannelMarker.yaml#/ChannelMarker" + rollupState: + $ref: "http://swgserver:8081/api/swagger/include/RollupState.yaml#/RollupState" FreeDVDemodReport: description: FreeDVDemod diff --git a/swagger/sdrangel/api/swagger/include/FreeDVMod.yaml b/swagger/sdrangel/api/swagger/include/FreeDVMod.yaml index 17514a154..efff3c9d6 100644 --- a/swagger/sdrangel/api/swagger/include/FreeDVMod.yaml +++ b/swagger/sdrangel/api/swagger/include/FreeDVMod.yaml @@ -48,6 +48,8 @@ FreeDVModSettings: $ref: "http://swgserver:8081/api/swagger/include/GLSpectrum.yaml#/GLSpectrum" channelMarker: $ref: "http://swgserver:8081/api/swagger/include/ChannelMarker.yaml#/ChannelMarker" + rollupState: + $ref: "http://swgserver:8081/api/swagger/include/RollupState.yaml#/RollupState" FreeDVModReport: description: FreeDVMod diff --git a/swagger/sdrangel/api/swagger/include/FreqTracker.yaml b/swagger/sdrangel/api/swagger/include/FreqTracker.yaml index b1c197e58..0fffb7b69 100644 --- a/swagger/sdrangel/api/swagger/include/FreqTracker.yaml +++ b/swagger/sdrangel/api/swagger/include/FreqTracker.yaml @@ -61,6 +61,8 @@ FreqTrackerSettings: $ref: "http://swgserver:8081/api/swagger/include/GLSpectrum.yaml#/GLSpectrum" channelMarker: $ref: "http://swgserver:8081/api/swagger/include/ChannelMarker.yaml#/ChannelMarker" + rollupState: + $ref: "http://swgserver:8081/api/swagger/include/RollupState.yaml#/RollupState" FreqTrackerReport: description: FreqTracker diff --git a/swagger/sdrangel/api/swagger/include/GS232Controller.yaml b/swagger/sdrangel/api/swagger/include/GS232Controller.yaml index d23324ec4..f3a201aa7 100644 --- a/swagger/sdrangel/api/swagger/include/GS232Controller.yaml +++ b/swagger/sdrangel/api/swagger/include/GS232Controller.yaml @@ -67,6 +67,8 @@ GS232ControllerSettings: type: integer reverseAPIFeatureIndex: type: integer + rollupState: + $ref: "http://swgserver:8081/api/swagger/include/RollupState.yaml#/RollupState" GS232ControllerReport: description: "GS-232 Controller report" diff --git a/swagger/sdrangel/api/swagger/include/IEEE_802_15_4_Mod.yaml b/swagger/sdrangel/api/swagger/include/IEEE_802_15_4_Mod.yaml index 06f796ac5..7cbcd6b75 100644 --- a/swagger/sdrangel/api/swagger/include/IEEE_802_15_4_Mod.yaml +++ b/swagger/sdrangel/api/swagger/include/IEEE_802_15_4_Mod.yaml @@ -126,6 +126,8 @@ IEEE_802_15_4_ModSettings: type: integer channelMarker: $ref: "http://swgserver:8081/api/swagger/include/ChannelMarker.yaml#/ChannelMarker" + rollupState: + $ref: "http://swgserver:8081/api/swagger/include/RollupState.yaml#/RollupState" IEEE_802_15_4_ModReport: description: IEEE_802_15_4_Mod diff --git a/swagger/sdrangel/api/swagger/include/Interferometer.yaml b/swagger/sdrangel/api/swagger/include/Interferometer.yaml index 9523e665d..de806c0bd 100644 --- a/swagger/sdrangel/api/swagger/include/Interferometer.yaml +++ b/swagger/sdrangel/api/swagger/include/Interferometer.yaml @@ -29,3 +29,5 @@ InterferometerSettings: $ref: "http://swgserver:8081/api/swagger/include/GLScope.yaml#/GLScope" channelMarker: $ref: "http://swgserver:8081/api/swagger/include/ChannelMarker.yaml#/ChannelMarker" + rollupState: + $ref: "http://swgserver:8081/api/swagger/include/RollupState.yaml#/RollupState" diff --git a/swagger/sdrangel/api/swagger/include/JogdialController.yaml b/swagger/sdrangel/api/swagger/include/JogdialController.yaml index a5be68eba..1bd58ed6e 100644 --- a/swagger/sdrangel/api/swagger/include/JogdialController.yaml +++ b/swagger/sdrangel/api/swagger/include/JogdialController.yaml @@ -19,3 +19,5 @@ JogdialControllerSettings: type: integer reverseAPIFeatureIndex: type: integer + rollupState: + $ref: "http://swgserver:8081/api/swagger/include/RollupState.yaml#/RollupState" diff --git a/swagger/sdrangel/api/swagger/include/LocalSink.yaml b/swagger/sdrangel/api/swagger/include/LocalSink.yaml index 9a4e9ddb9..52261d633 100644 --- a/swagger/sdrangel/api/swagger/include/LocalSink.yaml +++ b/swagger/sdrangel/api/swagger/include/LocalSink.yaml @@ -31,3 +31,5 @@ LocalSinkSettings: type: integer channelMarker: $ref: "http://swgserver:8081/api/swagger/include/ChannelMarker.yaml#/ChannelMarker" + rollupState: + $ref: "http://swgserver:8081/api/swagger/include/RollupState.yaml#/RollupState" diff --git a/swagger/sdrangel/api/swagger/include/LocalSource.yaml b/swagger/sdrangel/api/swagger/include/LocalSource.yaml index 225842773..c7d45c434 100644 --- a/swagger/sdrangel/api/swagger/include/LocalSource.yaml +++ b/swagger/sdrangel/api/swagger/include/LocalSource.yaml @@ -31,3 +31,5 @@ LocalSourceSettings: type: integer channelMarker: $ref: "http://swgserver:8081/api/swagger/include/ChannelMarker.yaml#/ChannelMarker" + rollupState: + $ref: "http://swgserver:8081/api/swagger/include/RollupState.yaml#/RollupState" diff --git a/swagger/sdrangel/api/swagger/include/Map.yaml b/swagger/sdrangel/api/swagger/include/Map.yaml index 4c60e03cc..800704e2d 100644 --- a/swagger/sdrangel/api/swagger/include/Map.yaml +++ b/swagger/sdrangel/api/swagger/include/Map.yaml @@ -19,6 +19,8 @@ MapSettings: type: integer reverseAPIFeatureIndex: type: integer + rollupState: + $ref: "http://swgserver:8081/api/swagger/include/RollupState.yaml#/RollupState" MapActions: description: Map diff --git a/swagger/sdrangel/api/swagger/include/NFMDemod.yaml b/swagger/sdrangel/api/swagger/include/NFMDemod.yaml index 68545eb08..c3cc11691 100644 --- a/swagger/sdrangel/api/swagger/include/NFMDemod.yaml +++ b/swagger/sdrangel/api/swagger/include/NFMDemod.yaml @@ -57,6 +57,8 @@ NFMDemodSettings: type: integer channelMarker: $ref: "http://swgserver:8081/api/swagger/include/ChannelMarker.yaml#/ChannelMarker" + rollupState: + $ref: "http://swgserver:8081/api/swagger/include/RollupState.yaml#/RollupState" NFMDemodReport: description: NFMDemod diff --git a/swagger/sdrangel/api/swagger/include/NFMMod.yaml b/swagger/sdrangel/api/swagger/include/NFMMod.yaml index fd8b35543..2e29f4bf5 100644 --- a/swagger/sdrangel/api/swagger/include/NFMMod.yaml +++ b/swagger/sdrangel/api/swagger/include/NFMMod.yaml @@ -71,6 +71,8 @@ NFMModSettings: $ref: "http://swgserver:8081/api/swagger/include/CWKeyer.yaml#/CWKeyerSettings" channelMarker: $ref: "http://swgserver:8081/api/swagger/include/ChannelMarker.yaml#/ChannelMarker" + rollupState: + $ref: "http://swgserver:8081/api/swagger/include/RollupState.yaml#/RollupState" NFMModReport: description: NFMMod diff --git a/swagger/sdrangel/api/swagger/include/NoiseFigure.yaml b/swagger/sdrangel/api/swagger/include/NoiseFigure.yaml index 6aa82b98e..5f25b3756 100644 --- a/swagger/sdrangel/api/swagger/include/NoiseFigure.yaml +++ b/swagger/sdrangel/api/swagger/include/NoiseFigure.yaml @@ -60,6 +60,8 @@ NoiseFigureSettings: type: integer channelMarker: $ref: "http://swgserver:8081/api/swagger/include/ChannelMarker.yaml#/ChannelMarker" + rollupState: + $ref: "http://swgserver:8081/api/swagger/include/RollupState.yaml#/RollupState" NoiseFigureReport: description: NoiseFigure diff --git a/swagger/sdrangel/api/swagger/include/PERTester.yaml b/swagger/sdrangel/api/swagger/include/PERTester.yaml index 0747f06eb..103b8c809 100644 --- a/swagger/sdrangel/api/swagger/include/PERTester.yaml +++ b/swagger/sdrangel/api/swagger/include/PERTester.yaml @@ -48,6 +48,8 @@ PERTesterSettings: type: integer reverseAPIFeatureIndex: type: integer + rollupState: + $ref: "http://swgserver:8081/api/swagger/include/RollupState.yaml#/RollupState" PERTesterReport: description: PERTester diff --git a/swagger/sdrangel/api/swagger/include/PacketDemod.yaml b/swagger/sdrangel/api/swagger/include/PacketDemod.yaml index 8d23b4a77..79f845912 100644 --- a/swagger/sdrangel/api/swagger/include/PacketDemod.yaml +++ b/swagger/sdrangel/api/swagger/include/PacketDemod.yaml @@ -48,6 +48,8 @@ PacketDemodSettings: type: integer channelMarker: $ref: "http://swgserver:8081/api/swagger/include/ChannelMarker.yaml#/ChannelMarker" + rollupState: + $ref: "http://swgserver:8081/api/swagger/include/RollupState.yaml#/RollupState" PacketDemodReport: description: AMDemod diff --git a/swagger/sdrangel/api/swagger/include/PacketMod.yaml b/swagger/sdrangel/api/swagger/include/PacketMod.yaml index b09213970..691d38cfc 100644 --- a/swagger/sdrangel/api/swagger/include/PacketMod.yaml +++ b/swagger/sdrangel/api/swagger/include/PacketMod.yaml @@ -151,6 +151,8 @@ PacketModSettings: type: integer channelMarker: $ref: "http://swgserver:8081/api/swagger/include/ChannelMarker.yaml#/ChannelMarker" + rollupState: + $ref: "http://swgserver:8081/api/swagger/include/RollupState.yaml#/RollupState" PacketModReport: description: PacketMod diff --git a/swagger/sdrangel/api/swagger/include/PagerDemod.yaml b/swagger/sdrangel/api/swagger/include/PagerDemod.yaml index 6e787b57e..7ba777ace 100644 --- a/swagger/sdrangel/api/swagger/include/PagerDemod.yaml +++ b/swagger/sdrangel/api/swagger/include/PagerDemod.yaml @@ -69,6 +69,8 @@ PagerDemodSettings: $ref: "http://swgserver:8081/api/swagger/include/GLScope.yaml#/GLScope" channelMarker: $ref: "http://swgserver:8081/api/swagger/include/ChannelMarker.yaml#/ChannelMarker" + rollupState: + $ref: "http://swgserver:8081/api/swagger/include/RollupState.yaml#/RollupState" PagerDemodReport: description: PagerDemod diff --git a/swagger/sdrangel/api/swagger/include/RadioAstronomy.yaml b/swagger/sdrangel/api/swagger/include/RadioAstronomy.yaml index 2a0bbe6cd..f5e28c926 100644 --- a/swagger/sdrangel/api/swagger/include/RadioAstronomy.yaml +++ b/swagger/sdrangel/api/swagger/include/RadioAstronomy.yaml @@ -75,6 +75,8 @@ RadioAstronomySettings: type: integer channelMarker: $ref: "http://swgserver:8081/api/swagger/include/ChannelMarker.yaml#/ChannelMarker" + rollupState: + $ref: "http://swgserver:8081/api/swagger/include/RollupState.yaml#/RollupState" RadioAstronomyReport: description: RadioAstronomy diff --git a/swagger/sdrangel/api/swagger/include/RadioClock.yaml b/swagger/sdrangel/api/swagger/include/RadioClock.yaml index 74c8c188c..f7502ae5c 100644 --- a/swagger/sdrangel/api/swagger/include/RadioClock.yaml +++ b/swagger/sdrangel/api/swagger/include/RadioClock.yaml @@ -40,6 +40,8 @@ RadioClockSettings: $ref: "http://swgserver:8081/api/swagger/include/GLScope.yaml#/GLScope" channelMarker: $ref: "http://swgserver:8081/api/swagger/include/ChannelMarker.yaml#/ChannelMarker" + rollupState: + $ref: "http://swgserver:8081/api/swagger/include/RollupState.yaml#/RollupState" RadioClockReport: description: RadioClock diff --git a/swagger/sdrangel/api/swagger/include/RemoteSink.yaml b/swagger/sdrangel/api/swagger/include/RemoteSink.yaml index d50a338d4..e7b71baf2 100644 --- a/swagger/sdrangel/api/swagger/include/RemoteSink.yaml +++ b/swagger/sdrangel/api/swagger/include/RemoteSink.yaml @@ -44,3 +44,5 @@ RemoteSinkSettings: type: integer channelMarker: $ref: "http://swgserver:8081/api/swagger/include/ChannelMarker.yaml#/ChannelMarker" + rollupState: + $ref: "http://swgserver:8081/api/swagger/include/RollupState.yaml#/RollupState" diff --git a/swagger/sdrangel/api/swagger/include/RemoteSource.yaml b/swagger/sdrangel/api/swagger/include/RemoteSource.yaml index 660e0f4f5..74374b30f 100644 --- a/swagger/sdrangel/api/swagger/include/RemoteSource.yaml +++ b/swagger/sdrangel/api/swagger/include/RemoteSource.yaml @@ -31,6 +31,8 @@ RemoteSourceSettings: type: integer channelMarker: $ref: "http://swgserver:8081/api/swagger/include/ChannelMarker.yaml#/ChannelMarker" + rollupState: + $ref: "http://swgserver:8081/api/swagger/include/RollupState.yaml#/RollupState" RemoteSourceReport: description: "Remote channel source report" diff --git a/swagger/sdrangel/api/swagger/include/RigCtlServer.yaml b/swagger/sdrangel/api/swagger/include/RigCtlServer.yaml index 2466a1434..5c338d3f4 100644 --- a/swagger/sdrangel/api/swagger/include/RigCtlServer.yaml +++ b/swagger/sdrangel/api/swagger/include/RigCtlServer.yaml @@ -33,6 +33,8 @@ RigCtlServerSettings: type: integer reverseAPIFeatureIndex: type: integer + rollupState: + $ref: "http://swgserver:8081/api/swagger/include/RollupState.yaml#/RollupState" RigCtlServerReport: description: RigCtl server report diff --git a/swagger/sdrangel/api/swagger/include/RollupState.yaml b/swagger/sdrangel/api/swagger/include/RollupState.yaml new file mode 100644 index 000000000..e9d5f8863 --- /dev/null +++ b/swagger/sdrangel/api/swagger/include/RollupState.yaml @@ -0,0 +1,21 @@ +RollupChildState: + description: "Rollup widget child state" + properties: + objectName: + type: string + isHidden: + type: integer + description: > + Boolean - child hidden state + * 0 - visible + * 1 - hidden + +RollupState: + description: "Rollup widget state" + properties: + version: + type: integer + childrenStates: + type: array + items: + $ref: "http://swgserver:8081/api/swagger/include/RollupState.yaml#/RollupChildState" diff --git a/swagger/sdrangel/api/swagger/include/SSBDemod.yaml b/swagger/sdrangel/api/swagger/include/SSBDemod.yaml index d15c76bb9..60ccb1ffc 100644 --- a/swagger/sdrangel/api/swagger/include/SSBDemod.yaml +++ b/swagger/sdrangel/api/swagger/include/SSBDemod.yaml @@ -66,6 +66,8 @@ SSBDemodSettings: $ref: "http://swgserver:8081/api/swagger/include/GLSpectrum.yaml#/GLSpectrum" channelMarker: $ref: "http://swgserver:8081/api/swagger/include/ChannelMarker.yaml#/ChannelMarker" + rollupState: + $ref: "http://swgserver:8081/api/swagger/include/RollupState.yaml#/RollupState" SSBDemodReport: description: SSBDemod diff --git a/swagger/sdrangel/api/swagger/include/SSBMod.yaml b/swagger/sdrangel/api/swagger/include/SSBMod.yaml index ed0fc1ae2..b21175a68 100644 --- a/swagger/sdrangel/api/swagger/include/SSBMod.yaml +++ b/swagger/sdrangel/api/swagger/include/SSBMod.yaml @@ -64,6 +64,8 @@ SSBModSettings: $ref: "http://swgserver:8081/api/swagger/include/GLSpectrum.yaml#/GLSpectrum" channelMarker: $ref: "http://swgserver:8081/api/swagger/include/ChannelMarker.yaml#/ChannelMarker" + rollupState: + $ref: "http://swgserver:8081/api/swagger/include/RollupState.yaml#/RollupState" SSBModReport: description: SSBMod diff --git a/swagger/sdrangel/api/swagger/include/SatelliteTracker.yaml b/swagger/sdrangel/api/swagger/include/SatelliteTracker.yaml index a6c75d9d0..f1011eddd 100644 --- a/swagger/sdrangel/api/swagger/include/SatelliteTracker.yaml +++ b/swagger/sdrangel/api/swagger/include/SatelliteTracker.yaml @@ -112,6 +112,8 @@ SatelliteTrackerSettings: type: integer reverseAPIFeatureIndex: type: integer + rollupState: + $ref: "http://swgserver:8081/api/swagger/include/RollupState.yaml#/RollupState" SatelliteDeviceSettingsList: description: "List of device set settings for a satellite" diff --git a/swagger/sdrangel/api/swagger/include/SigMFFileSink.yaml b/swagger/sdrangel/api/swagger/include/SigMFFileSink.yaml index 914820784..20dca0134 100644 --- a/swagger/sdrangel/api/swagger/include/SigMFFileSink.yaml +++ b/swagger/sdrangel/api/swagger/include/SigMFFileSink.yaml @@ -52,6 +52,8 @@ SigMFFileSinkSettings: $ref: "http://swgserver:8081/api/swagger/include/GLSpectrum.yaml#/GLSpectrum" channelMarker: $ref: "http://swgserver:8081/api/swagger/include/ChannelMarker.yaml#/ChannelMarker" + rollupState: + $ref: "http://swgserver:8081/api/swagger/include/RollupState.yaml#/RollupState" SigMFFileSinkReport: description: SigMFFileSink diff --git a/swagger/sdrangel/api/swagger/include/SimplePTT.yaml b/swagger/sdrangel/api/swagger/include/SimplePTT.yaml index 14f753ac6..b11cadd9d 100644 --- a/swagger/sdrangel/api/swagger/include/SimplePTT.yaml +++ b/swagger/sdrangel/api/swagger/include/SimplePTT.yaml @@ -48,6 +48,8 @@ SimplePTTSettings: type: integer reverseAPIFeatureIndex: type: integer + rollupState: + $ref: "http://swgserver:8081/api/swagger/include/RollupState.yaml#/RollupState" SimplePTTReport: description: "Simple PTT report" diff --git a/swagger/sdrangel/api/swagger/include/StarTracker.yaml b/swagger/sdrangel/api/swagger/include/StarTracker.yaml index 908d43df0..da7ca5acb 100644 --- a/swagger/sdrangel/api/swagger/include/StarTracker.yaml +++ b/swagger/sdrangel/api/swagger/include/StarTracker.yaml @@ -109,6 +109,8 @@ StarTrackerSettings: type: integer reverseAPIFeatureIndex: type: integer + rollupState: + $ref: "http://swgserver:8081/api/swagger/include/RollupState.yaml#/RollupState" StarTrackerTarget: description: "Star Tracker target. Sent to startracker.target message queue for other plugins to use." diff --git a/swagger/sdrangel/api/swagger/include/UDPSink.yaml b/swagger/sdrangel/api/swagger/include/UDPSink.yaml index 177519476..9ce5085c9 100644 --- a/swagger/sdrangel/api/swagger/include/UDPSink.yaml +++ b/swagger/sdrangel/api/swagger/include/UDPSink.yaml @@ -73,6 +73,8 @@ UDPSinkSettings: $ref: "http://swgserver:8081/api/swagger/include/GLSpectrum.yaml#/GLSpectrum" channelMarker: $ref: "http://swgserver:8081/api/swagger/include/ChannelMarker.yaml#/ChannelMarker" + rollupState: + $ref: "http://swgserver:8081/api/swagger/include/RollupState.yaml#/RollupState" UDPSinkReport: description: UDPSink diff --git a/swagger/sdrangel/api/swagger/include/UDPSource.yaml b/swagger/sdrangel/api/swagger/include/UDPSource.yaml index 7f458e1a0..9f7c5316c 100644 --- a/swagger/sdrangel/api/swagger/include/UDPSource.yaml +++ b/swagger/sdrangel/api/swagger/include/UDPSource.yaml @@ -75,6 +75,8 @@ UDPSourceSettings: $ref: "http://swgserver:8081/api/swagger/include/GLSpectrum.yaml#/GLSpectrum" channelMarker: $ref: "http://swgserver:8081/api/swagger/include/ChannelMarker.yaml#/ChannelMarker" + rollupState: + $ref: "http://swgserver:8081/api/swagger/include/RollupState.yaml#/RollupState" UDPSourceReport: description: UDPSource diff --git a/swagger/sdrangel/api/swagger/include/VORDemod.yaml b/swagger/sdrangel/api/swagger/include/VORDemod.yaml index 9f9ee972a..83b01cbbf 100644 --- a/swagger/sdrangel/api/swagger/include/VORDemod.yaml +++ b/swagger/sdrangel/api/swagger/include/VORDemod.yaml @@ -38,6 +38,8 @@ VORDemodSettings: type: integer channelMarker: $ref: "http://swgserver:8081/api/swagger/include/ChannelMarker.yaml#/ChannelMarker" + rollupState: + $ref: "http://swgserver:8081/api/swagger/include/RollupState.yaml#/RollupState" VORDemodReport: description: VORDemod diff --git a/swagger/sdrangel/api/swagger/include/VORDemodSC.yaml b/swagger/sdrangel/api/swagger/include/VORDemodSC.yaml index fb335cf0c..6b675ec74 100644 --- a/swagger/sdrangel/api/swagger/include/VORDemodSC.yaml +++ b/swagger/sdrangel/api/swagger/include/VORDemodSC.yaml @@ -41,6 +41,8 @@ VORDemodSCSettings: type: integer channelMarker: $ref: "http://swgserver:8081/api/swagger/include/ChannelMarker.yaml#/ChannelMarker" + rollupState: + $ref: "http://swgserver:8081/api/swagger/include/RollupState.yaml#/RollupState" VORDemodSCReport: description: VORDemodSC diff --git a/swagger/sdrangel/api/swagger/include/VORLocalizer.yaml b/swagger/sdrangel/api/swagger/include/VORLocalizer.yaml index ea708fadb..01f79a480 100644 --- a/swagger/sdrangel/api/swagger/include/VORLocalizer.yaml +++ b/swagger/sdrangel/api/swagger/include/VORLocalizer.yaml @@ -31,6 +31,8 @@ VORLocalizerSettings: centerShift: description: Shift of center frequency in Hz type: integer + rollupState: + $ref: "http://swgserver:8081/api/swagger/include/RollupState.yaml#/RollupState" VORLocalizerReport: description: VORLocalizers diff --git a/swagger/sdrangel/api/swagger/include/WFMDemod.yaml b/swagger/sdrangel/api/swagger/include/WFMDemod.yaml index a560ab5d7..21210940a 100644 --- a/swagger/sdrangel/api/swagger/include/WFMDemod.yaml +++ b/swagger/sdrangel/api/swagger/include/WFMDemod.yaml @@ -41,6 +41,8 @@ WFMDemodSettings: type: integer channelMarker: $ref: "http://swgserver:8081/api/swagger/include/ChannelMarker.yaml#/ChannelMarker" + rollupState: + $ref: "http://swgserver:8081/api/swagger/include/RollupState.yaml#/RollupState" WFMDemodReport: description: WFMDemod diff --git a/swagger/sdrangel/api/swagger/include/WFMMod.yaml b/swagger/sdrangel/api/swagger/include/WFMMod.yaml index 17d40a19b..8d0a1dc58 100644 --- a/swagger/sdrangel/api/swagger/include/WFMMod.yaml +++ b/swagger/sdrangel/api/swagger/include/WFMMod.yaml @@ -49,6 +49,8 @@ WFMModSettings: $ref: "http://swgserver:8081/api/swagger/include/CWKeyer.yaml#/CWKeyerSettings" channelMarker: $ref: "http://swgserver:8081/api/swagger/include/ChannelMarker.yaml#/ChannelMarker" + rollupState: + $ref: "http://swgserver:8081/api/swagger/include/RollupState.yaml#/RollupState" WFMModReport: description: WFMMod diff --git a/swagger/sdrangel/code/html2/index.html b/swagger/sdrangel/code/html2/index.html index 520361305..0762ffa0f 100644 --- a/swagger/sdrangel/code/html2/index.html +++ b/swagger/sdrangel/code/html2/index.html @@ -811,6 +811,9 @@ margin-bottom: 20px; }, "channelMarker" : { "$ref" : "#/definitions/ChannelMarker" + }, + "rollupState" : { + "$ref" : "#/definitions/RollupState" } }, "description" : "ADSBDemod" @@ -904,6 +907,9 @@ margin-bottom: 20px; }, "reverseAPIFeatureIndex" : { "type" : "integer" + }, + "rollupState" : { + "$ref" : "#/definitions/RollupState" } }, "description" : "AFC settings" @@ -996,6 +1002,9 @@ margin-bottom: 20px; }, "channelMarker" : { "$ref" : "#/definitions/ChannelMarker" + }, + "rollupState" : { + "$ref" : "#/definitions/RollupState" } }, "description" : "AISDemod" @@ -1162,6 +1171,9 @@ margin-bottom: 20px; }, "channelMarker" : { "$ref" : "#/definitions/ChannelMarker" + }, + "rollupState" : { + "$ref" : "#/definitions/RollupState" } }, "description" : "AISMod" @@ -1189,6 +1201,9 @@ margin-bottom: 20px; }, "reverseAPIFeatureIndex" : { "type" : "integer" + }, + "rollupState" : { + "$ref" : "#/definitions/RollupState" } }, "description" : "AIS settings" @@ -1310,6 +1325,9 @@ margin-bottom: 20px; }, "channelMarker" : { "$ref" : "#/definitions/ChannelMarker" + }, + "rollupState" : { + "$ref" : "#/definitions/RollupState" } }, "description" : "AMDemod" @@ -1396,6 +1414,9 @@ margin-bottom: 20px; }, "channelMarker" : { "$ref" : "#/definitions/ChannelMarker" + }, + "rollupState" : { + "$ref" : "#/definitions/RollupState" } }, "description" : "AMMod" @@ -1441,6 +1462,9 @@ margin-bottom: 20px; }, "reverseAPIFeatureIndex" : { "type" : "integer" + }, + "rollupState" : { + "$ref" : "#/definitions/RollupState" } }, "description" : "APRS settings" @@ -1565,6 +1589,9 @@ margin-bottom: 20px; }, "channelMarker" : { "$ref" : "#/definitions/ChannelMarker" + }, + "rollupState" : { + "$ref" : "#/definitions/RollupState" } }, "description" : "APTDemod" @@ -1804,6 +1831,9 @@ margin-bottom: 20px; }, "channelMarker" : { "$ref" : "#/definitions/ChannelMarker" + }, + "rollupState" : { + "$ref" : "#/definitions/RollupState" } }, "description" : "ATVMod" @@ -2020,6 +2050,9 @@ margin-bottom: 20px; }, "reverseAPIFeatureIndex" : { "type" : "integer" + }, + "rollupState" : { + "$ref" : "#/definitions/RollupState" } }, "description" : "Antenna Tools" @@ -2355,6 +2388,9 @@ margin-bottom: 20px; }, "channelMarker" : { "$ref" : "#/definitions/ChannelMarker" + }, + "rollupState" : { + "$ref" : "#/definitions/RollupState" } }, "description" : "BFMDemod" @@ -2402,6 +2438,9 @@ margin-bottom: 20px; }, "channelMarker" : { "$ref" : "#/definitions/ChannelMarker" + }, + "rollupState" : { + "$ref" : "#/definitions/RollupState" } }, "description" : "BeamSteeringCWMod" @@ -3059,6 +3098,9 @@ margin-bottom: 20px; }, "channelMarker" : { "$ref" : "#/definitions/ChannelMarker" + }, + "rollupState" : { + "$ref" : "#/definitions/RollupState" } }, "description" : "ChannelAnalyzer" @@ -3617,6 +3659,9 @@ margin-bottom: 20px; }, "channelMarker" : { "$ref" : "#/definitions/ChannelMarker" + }, + "rollupState" : { + "$ref" : "#/definitions/RollupState" } }, "description" : "ChirpChatDemod" @@ -3809,6 +3854,9 @@ margin-bottom: 20px; }, "channelMarker" : { "$ref" : "#/definitions/ChannelMarker" + }, + "rollupState" : { + "$ref" : "#/definitions/RollupState" } }, "description" : "ChirpChatMod" @@ -3909,6 +3957,9 @@ margin-bottom: 20px; }, "channelMarker" : { "$ref" : "#/definitions/ChannelMarker" + }, + "rollupState" : { + "$ref" : "#/definitions/RollupState" } }, "description" : "DABDemod" @@ -4090,6 +4141,9 @@ margin-bottom: 20px; }, "channelMarker" : { "$ref" : "#/definitions/ChannelMarker" + }, + "rollupState" : { + "$ref" : "#/definitions/RollupState" } }, "description" : "DATVDemod" @@ -4203,6 +4257,9 @@ margin-bottom: 20px; }, "channelMarker" : { "$ref" : "#/definitions/ChannelMarker" + }, + "rollupState" : { + "$ref" : "#/definitions/RollupState" } }, "description" : "DATVMod" @@ -4362,6 +4419,9 @@ margin-bottom: 20px; }, "channelMarker" : { "$ref" : "#/definitions/ChannelMarker" + }, + "rollupState" : { + "$ref" : "#/definitions/RollupState" } }, "description" : "DSDDemod" @@ -4424,6 +4484,9 @@ margin-bottom: 20px; }, "scopeConfig" : { "$ref" : "#/definitions/GLScope" + }, + "rollupState" : { + "$ref" : "#/definitions/RollupState" } }, "description" : "DemodAnalyzer" @@ -5500,6 +5563,9 @@ margin-bottom: 20px; }, "channelMarker" : { "$ref" : "#/definitions/ChannelMarker" + }, + "rollupState" : { + "$ref" : "#/definitions/RollupState" } }, "description" : "FileSink" @@ -5601,6 +5667,9 @@ margin-bottom: 20px; }, "channelMarker" : { "$ref" : "#/definitions/ChannelMarker" + }, + "rollupState" : { + "$ref" : "#/definitions/RollupState" } }, "description" : "FileSource" @@ -5689,6 +5758,9 @@ margin-bottom: 20px; }, "channelMarker" : { "$ref" : "#/definitions/ChannelMarker" + }, + "rollupState" : { + "$ref" : "#/definitions/RollupState" } }, "description" : "FreeDVDemod" @@ -5778,6 +5850,9 @@ margin-bottom: 20px; }, "channelMarker" : { "$ref" : "#/definitions/ChannelMarker" + }, + "rollupState" : { + "$ref" : "#/definitions/RollupState" } }, "description" : "FreeDVMod" @@ -5889,6 +5964,9 @@ margin-bottom: 20px; }, "channelMarker" : { "$ref" : "#/definitions/ChannelMarker" + }, + "rollupState" : { + "$ref" : "#/definitions/RollupState" } }, "description" : "FreqTracker" @@ -6220,6 +6298,9 @@ margin-bottom: 20px; }, "reverseAPIFeatureIndex" : { "type" : "integer" + }, + "rollupState" : { + "$ref" : "#/definitions/RollupState" } }, "description" : "GS-232 Controller settings" @@ -6516,6 +6597,9 @@ margin-bottom: 20px; }, "channelMarker" : { "$ref" : "#/definitions/ChannelMarker" + }, + "rollupState" : { + "$ref" : "#/definitions/RollupState" } }, "description" : "IEEE_802_15_4_Mod" @@ -6689,6 +6773,9 @@ margin-bottom: 20px; }, "channelMarker" : { "$ref" : "#/definitions/ChannelMarker" + }, + "rollupState" : { + "$ref" : "#/definitions/RollupState" } }, "description" : "Interferometer" @@ -6716,6 +6803,9 @@ margin-bottom: 20px; }, "reverseAPIFeatureIndex" : { "type" : "integer" + }, + "rollupState" : { + "$ref" : "#/definitions/RollupState" } }, "description" : "JogdialController" @@ -7551,6 +7641,9 @@ margin-bottom: 20px; }, "channelMarker" : { "$ref" : "#/definitions/ChannelMarker" + }, + "rollupState" : { + "$ref" : "#/definitions/RollupState" } }, "description" : "Local channel sink settings" @@ -7599,6 +7692,9 @@ margin-bottom: 20px; }, "channelMarker" : { "$ref" : "#/definitions/ChannelMarker" + }, + "rollupState" : { + "$ref" : "#/definitions/RollupState" } }, "description" : "Local channel source settings" @@ -7801,6 +7897,9 @@ margin-bottom: 20px; }, "reverseAPIFeatureIndex" : { "type" : "integer" + }, + "rollupState" : { + "$ref" : "#/definitions/RollupState" } }, "description" : "Map" @@ -8069,6 +8168,9 @@ margin-bottom: 20px; }, "channelMarker" : { "$ref" : "#/definitions/ChannelMarker" + }, + "rollupState" : { + "$ref" : "#/definitions/RollupState" } }, "description" : "NFMDemod" @@ -8176,6 +8278,9 @@ margin-bottom: 20px; }, "channelMarker" : { "$ref" : "#/definitions/ChannelMarker" + }, + "rollupState" : { + "$ref" : "#/definitions/RollupState" } }, "description" : "NFMMod" @@ -8289,6 +8394,9 @@ margin-bottom: 20px; }, "channelMarker" : { "$ref" : "#/definitions/ChannelMarker" + }, + "rollupState" : { + "$ref" : "#/definitions/RollupState" } }, "description" : "NoiseFigure" @@ -8398,6 +8506,9 @@ margin-bottom: 20px; }, "reverseAPIFeatureIndex" : { "type" : "integer" + }, + "rollupState" : { + "$ref" : "#/definitions/RollupState" } }, "description" : "PER Tester settings" @@ -8479,6 +8590,9 @@ margin-bottom: 20px; }, "channelMarker" : { "$ref" : "#/definitions/ChannelMarker" + }, + "rollupState" : { + "$ref" : "#/definitions/RollupState" } }, "description" : "PacketDemod" @@ -8710,6 +8824,9 @@ margin-bottom: 20px; }, "channelMarker" : { "$ref" : "#/definitions/ChannelMarker" + }, + "rollupState" : { + "$ref" : "#/definitions/RollupState" } }, "description" : "PacketMod" @@ -8810,6 +8927,9 @@ margin-bottom: 20px; }, "channelMarker" : { "$ref" : "#/definitions/ChannelMarker" + }, + "rollupState" : { + "$ref" : "#/definitions/RollupState" } }, "description" : "PagerDemod" @@ -9660,6 +9780,9 @@ margin-bottom: 20px; }, "channelMarker" : { "$ref" : "#/definitions/ChannelMarker" + }, + "rollupState" : { + "$ref" : "#/definitions/RollupState" } }, "description" : "RadioAstronomy" @@ -9738,6 +9861,9 @@ margin-bottom: 20px; }, "channelMarker" : { "$ref" : "#/definitions/ChannelMarker" + }, + "rollupState" : { + "$ref" : "#/definitions/RollupState" } }, "description" : "RadioClock" @@ -9987,6 +10113,9 @@ margin-bottom: 20px; }, "channelMarker" : { "$ref" : "#/definitions/ChannelMarker" + }, + "rollupState" : { + "$ref" : "#/definitions/RollupState" } }, "description" : "Remote channel sink settings" @@ -10093,6 +10222,9 @@ margin-bottom: 20px; }, "channelMarker" : { "$ref" : "#/definitions/ChannelMarker" + }, + "rollupState" : { + "$ref" : "#/definitions/RollupState" } }, "description" : "Remote channel source settings" @@ -10154,9 +10286,38 @@ margin-bottom: 20px; }, "reverseAPIFeatureIndex" : { "type" : "integer" + }, + "rollupState" : { + "$ref" : "#/definitions/RollupState" } }, "description" : "RigCtl server settings" +}; + defs.RollupChildState = { + "properties" : { + "objectName" : { + "type" : "string" + }, + "isHidden" : { + "type" : "integer", + "description" : "Boolean - child hidden state\n * 0 - visible\n * 1 - hidden\n" + } + }, + "description" : "Rollup widget child state" +}; + defs.RollupState = { + "properties" : { + "version" : { + "type" : "integer" + }, + "childrenStates" : { + "type" : "array", + "items" : { + "$ref" : "#/definitions/RollupChildState" + } + } + }, + "description" : "Rollup widget state" }; defs.RtlSdrReport = { "properties" : { @@ -10545,6 +10706,9 @@ margin-bottom: 20px; }, "channelMarker" : { "$ref" : "#/definitions/ChannelMarker" + }, + "rollupState" : { + "$ref" : "#/definitions/RollupState" } }, "description" : "SSBDemod" @@ -10657,6 +10821,9 @@ margin-bottom: 20px; }, "channelMarker" : { "$ref" : "#/definitions/ChannelMarker" + }, + "rollupState" : { + "$ref" : "#/definitions/RollupState" } }, "description" : "SSBMod" @@ -10961,6 +11128,9 @@ margin-bottom: 20px; }, "reverseAPIFeatureIndex" : { "type" : "integer" + }, + "rollupState" : { + "$ref" : "#/definitions/RollupState" } }, "description" : "Satellite Tracker settings" @@ -11207,6 +11377,9 @@ margin-bottom: 20px; }, "channelMarker" : { "$ref" : "#/definitions/ChannelMarker" + }, + "rollupState" : { + "$ref" : "#/definitions/RollupState" } }, "description" : "SigMFFileSink" @@ -11295,6 +11468,9 @@ margin-bottom: 20px; }, "reverseAPIFeatureIndex" : { "type" : "integer" + }, + "rollupState" : { + "$ref" : "#/definitions/RollupState" } }, "description" : "Simple PTT settings" @@ -11860,6 +12036,9 @@ margin-bottom: 20px; }, "reverseAPIFeatureIndex" : { "type" : "integer" + }, + "rollupState" : { + "$ref" : "#/definitions/RollupState" } }, "description" : "Star Tracker settings" @@ -12479,6 +12658,9 @@ margin-bottom: 20px; }, "channelMarker" : { "$ref" : "#/definitions/ChannelMarker" + }, + "rollupState" : { + "$ref" : "#/definitions/RollupState" } }, "description" : "UDPSink" @@ -12610,6 +12792,9 @@ margin-bottom: 20px; }, "channelMarker" : { "$ref" : "#/definitions/ChannelMarker" + }, + "rollupState" : { + "$ref" : "#/definitions/RollupState" } }, "description" : "UDPSource" @@ -12892,6 +13077,9 @@ margin-bottom: 20px; }, "channelMarker" : { "$ref" : "#/definitions/ChannelMarker" + }, + "rollupState" : { + "$ref" : "#/definitions/RollupState" } }, "description" : "VORDemodSC" @@ -12949,6 +13137,9 @@ margin-bottom: 20px; }, "channelMarker" : { "$ref" : "#/definitions/ChannelMarker" + }, + "rollupState" : { + "$ref" : "#/definitions/RollupState" } }, "description" : "VORDemod" @@ -13010,6 +13201,9 @@ margin-bottom: 20px; "centerShift" : { "type" : "integer", "description" : "Shift of center frequency in Hz" + }, + "rollupState" : { + "$ref" : "#/definitions/RollupState" } }, "description" : "VORLocalizer" @@ -13091,6 +13285,9 @@ margin-bottom: 20px; }, "channelMarker" : { "$ref" : "#/definitions/ChannelMarker" + }, + "rollupState" : { + "$ref" : "#/definitions/RollupState" } }, "description" : "WFMDemod" @@ -13180,6 +13377,9 @@ margin-bottom: 20px; }, "channelMarker" : { "$ref" : "#/definitions/ChannelMarker" + }, + "rollupState" : { + "$ref" : "#/definitions/RollupState" } }, "description" : "WFMMod" @@ -51683,7 +51883,7 @@ except ApiException as e:
- Generated 2022-01-04T21:15:15.924+01:00 + Generated 2022-01-09T04:50:11.883+01:00
diff --git a/swagger/sdrangel/code/qt5/client/SWGADSBDemodSettings.cpp b/swagger/sdrangel/code/qt5/client/SWGADSBDemodSettings.cpp index 7841898a8..9b85b35a1 100644 --- a/swagger/sdrangel/code/qt5/client/SWGADSBDemodSettings.cpp +++ b/swagger/sdrangel/code/qt5/client/SWGADSBDemodSettings.cpp @@ -76,6 +76,8 @@ SWGADSBDemodSettings::SWGADSBDemodSettings() { m_reverse_api_channel_index_isSet = false; channel_marker = nullptr; m_channel_marker_isSet = false; + rollup_state = nullptr; + m_rollup_state_isSet = false; } SWGADSBDemodSettings::~SWGADSBDemodSettings() { @@ -132,6 +134,8 @@ SWGADSBDemodSettings::init() { m_reverse_api_channel_index_isSet = false; channel_marker = new SWGChannelMarker(); m_channel_marker_isSet = false; + rollup_state = new SWGRollupState(); + m_rollup_state_isSet = false; } void @@ -170,6 +174,9 @@ SWGADSBDemodSettings::cleanup() { if(channel_marker != nullptr) { delete channel_marker; } + if(rollup_state != nullptr) { + delete rollup_state; + } } SWGADSBDemodSettings* @@ -231,6 +238,8 @@ SWGADSBDemodSettings::fromJsonObject(QJsonObject &pJson) { ::SWGSDRangel::setValue(&channel_marker, pJson["channelMarker"], "SWGChannelMarker", "SWGChannelMarker"); + ::SWGSDRangel::setValue(&rollup_state, pJson["rollupState"], "SWGRollupState", "SWGRollupState"); + } QString @@ -319,6 +328,9 @@ SWGADSBDemodSettings::asJsonObject() { if((channel_marker != nullptr) && (channel_marker->isSet())){ toJsonValue(QString("channelMarker"), channel_marker, obj, QString("SWGChannelMarker")); } + if((rollup_state != nullptr) && (rollup_state->isSet())){ + toJsonValue(QString("rollupState"), rollup_state, obj, QString("SWGRollupState")); + } return obj; } @@ -563,6 +575,16 @@ SWGADSBDemodSettings::setChannelMarker(SWGChannelMarker* channel_marker) { this->m_channel_marker_isSet = true; } +SWGRollupState* +SWGADSBDemodSettings::getRollupState() { + return rollup_state; +} +void +SWGADSBDemodSettings::setRollupState(SWGRollupState* rollup_state) { + this->rollup_state = rollup_state; + this->m_rollup_state_isSet = true; +} + bool SWGADSBDemodSettings::isSet(){ @@ -640,6 +662,9 @@ SWGADSBDemodSettings::isSet(){ if(channel_marker && channel_marker->isSet()){ isObjectUpdated = true; break; } + if(rollup_state && rollup_state->isSet()){ + isObjectUpdated = true; break; + } }while(false); return isObjectUpdated; } diff --git a/swagger/sdrangel/code/qt5/client/SWGADSBDemodSettings.h b/swagger/sdrangel/code/qt5/client/SWGADSBDemodSettings.h index 6a6c051d7..a87aac050 100644 --- a/swagger/sdrangel/code/qt5/client/SWGADSBDemodSettings.h +++ b/swagger/sdrangel/code/qt5/client/SWGADSBDemodSettings.h @@ -23,6 +23,7 @@ #include "SWGChannelMarker.h" +#include "SWGRollupState.h" #include #include "SWGObject.h" @@ -115,6 +116,9 @@ public: SWGChannelMarker* getChannelMarker(); void setChannelMarker(SWGChannelMarker* channel_marker); + SWGRollupState* getRollupState(); + void setRollupState(SWGRollupState* rollup_state); + virtual bool isSet() override; @@ -191,6 +195,9 @@ private: SWGChannelMarker* channel_marker; bool m_channel_marker_isSet; + SWGRollupState* rollup_state; + bool m_rollup_state_isSet; + }; } diff --git a/swagger/sdrangel/code/qt5/client/SWGAFCSettings.cpp b/swagger/sdrangel/code/qt5/client/SWGAFCSettings.cpp index 8edbd6782..de7fd597c 100644 --- a/swagger/sdrangel/code/qt5/client/SWGAFCSettings.cpp +++ b/swagger/sdrangel/code/qt5/client/SWGAFCSettings.cpp @@ -56,6 +56,8 @@ SWGAFCSettings::SWGAFCSettings() { m_reverse_api_feature_set_index_isSet = false; reverse_api_feature_index = 0; m_reverse_api_feature_index_isSet = false; + rollup_state = nullptr; + m_rollup_state_isSet = false; } SWGAFCSettings::~SWGAFCSettings() { @@ -92,6 +94,8 @@ SWGAFCSettings::init() { m_reverse_api_feature_set_index_isSet = false; reverse_api_feature_index = 0; m_reverse_api_feature_index_isSet = false; + rollup_state = new SWGRollupState(); + m_rollup_state_isSet = false; } void @@ -114,6 +118,9 @@ SWGAFCSettings::cleanup() { + if(rollup_state != nullptr) { + delete rollup_state; + } } SWGAFCSettings* @@ -155,6 +162,8 @@ SWGAFCSettings::fromJsonObject(QJsonObject &pJson) { ::SWGSDRangel::setValue(&reverse_api_feature_index, pJson["reverseAPIFeatureIndex"], "qint32", ""); + ::SWGSDRangel::setValue(&rollup_state, pJson["rollupState"], "SWGRollupState", "SWGRollupState"); + } QString @@ -213,6 +222,9 @@ SWGAFCSettings::asJsonObject() { if(m_reverse_api_feature_index_isSet){ obj->insert("reverseAPIFeatureIndex", QJsonValue(reverse_api_feature_index)); } + if((rollup_state != nullptr) && (rollup_state->isSet())){ + toJsonValue(QString("rollupState"), rollup_state, obj, QString("SWGRollupState")); + } return obj; } @@ -357,6 +369,16 @@ SWGAFCSettings::setReverseApiFeatureIndex(qint32 reverse_api_feature_index) { this->m_reverse_api_feature_index_isSet = true; } +SWGRollupState* +SWGAFCSettings::getRollupState() { + return rollup_state; +} +void +SWGAFCSettings::setRollupState(SWGRollupState* rollup_state) { + this->rollup_state = rollup_state; + this->m_rollup_state_isSet = true; +} + bool SWGAFCSettings::isSet(){ @@ -404,6 +426,9 @@ SWGAFCSettings::isSet(){ if(m_reverse_api_feature_index_isSet){ isObjectUpdated = true; break; } + if(rollup_state && rollup_state->isSet()){ + isObjectUpdated = true; break; + } }while(false); return isObjectUpdated; } diff --git a/swagger/sdrangel/code/qt5/client/SWGAFCSettings.h b/swagger/sdrangel/code/qt5/client/SWGAFCSettings.h index 6df71860c..73eb824fd 100644 --- a/swagger/sdrangel/code/qt5/client/SWGAFCSettings.h +++ b/swagger/sdrangel/code/qt5/client/SWGAFCSettings.h @@ -22,6 +22,7 @@ #include +#include "SWGRollupState.h" #include #include "SWGObject.h" @@ -84,6 +85,9 @@ public: qint32 getReverseApiFeatureIndex(); void setReverseApiFeatureIndex(qint32 reverse_api_feature_index); + SWGRollupState* getRollupState(); + void setRollupState(SWGRollupState* rollup_state); + virtual bool isSet() override; @@ -130,6 +134,9 @@ private: qint32 reverse_api_feature_index; bool m_reverse_api_feature_index_isSet; + SWGRollupState* rollup_state; + bool m_rollup_state_isSet; + }; } diff --git a/swagger/sdrangel/code/qt5/client/SWGAISDemodSettings.cpp b/swagger/sdrangel/code/qt5/client/SWGAISDemodSettings.cpp index 46fac3373..a56501b1c 100644 --- a/swagger/sdrangel/code/qt5/client/SWGAISDemodSettings.cpp +++ b/swagger/sdrangel/code/qt5/client/SWGAISDemodSettings.cpp @@ -70,6 +70,8 @@ SWGAISDemodSettings::SWGAISDemodSettings() { m_scope_config_isSet = false; channel_marker = nullptr; m_channel_marker_isSet = false; + rollup_state = nullptr; + m_rollup_state_isSet = false; } SWGAISDemodSettings::~SWGAISDemodSettings() { @@ -120,6 +122,8 @@ SWGAISDemodSettings::init() { m_scope_config_isSet = false; channel_marker = new SWGChannelMarker(); m_channel_marker_isSet = false; + rollup_state = new SWGRollupState(); + m_rollup_state_isSet = false; } void @@ -157,6 +161,9 @@ SWGAISDemodSettings::cleanup() { if(channel_marker != nullptr) { delete channel_marker; } + if(rollup_state != nullptr) { + delete rollup_state; + } } SWGAISDemodSettings* @@ -212,6 +219,8 @@ SWGAISDemodSettings::fromJsonObject(QJsonObject &pJson) { ::SWGSDRangel::setValue(&channel_marker, pJson["channelMarker"], "SWGChannelMarker", "SWGChannelMarker"); + ::SWGSDRangel::setValue(&rollup_state, pJson["rollupState"], "SWGRollupState", "SWGRollupState"); + } QString @@ -291,6 +300,9 @@ SWGAISDemodSettings::asJsonObject() { if((channel_marker != nullptr) && (channel_marker->isSet())){ toJsonValue(QString("channelMarker"), channel_marker, obj, QString("SWGChannelMarker")); } + if((rollup_state != nullptr) && (rollup_state->isSet())){ + toJsonValue(QString("rollupState"), rollup_state, obj, QString("SWGRollupState")); + } return obj; } @@ -505,6 +517,16 @@ SWGAISDemodSettings::setChannelMarker(SWGChannelMarker* channel_marker) { this->m_channel_marker_isSet = true; } +SWGRollupState* +SWGAISDemodSettings::getRollupState() { + return rollup_state; +} +void +SWGAISDemodSettings::setRollupState(SWGRollupState* rollup_state) { + this->rollup_state = rollup_state; + this->m_rollup_state_isSet = true; +} + bool SWGAISDemodSettings::isSet(){ @@ -573,6 +595,9 @@ SWGAISDemodSettings::isSet(){ if(channel_marker && channel_marker->isSet()){ isObjectUpdated = true; break; } + if(rollup_state && rollup_state->isSet()){ + isObjectUpdated = true; break; + } }while(false); return isObjectUpdated; } diff --git a/swagger/sdrangel/code/qt5/client/SWGAISDemodSettings.h b/swagger/sdrangel/code/qt5/client/SWGAISDemodSettings.h index 29a6e82a4..8c43690da 100644 --- a/swagger/sdrangel/code/qt5/client/SWGAISDemodSettings.h +++ b/swagger/sdrangel/code/qt5/client/SWGAISDemodSettings.h @@ -24,6 +24,7 @@ #include "SWGChannelMarker.h" #include "SWGGLScope.h" +#include "SWGRollupState.h" #include #include "SWGObject.h" @@ -107,6 +108,9 @@ public: SWGChannelMarker* getChannelMarker(); void setChannelMarker(SWGChannelMarker* channel_marker); + SWGRollupState* getRollupState(); + void setRollupState(SWGRollupState* rollup_state); + virtual bool isSet() override; @@ -174,6 +178,9 @@ private: SWGChannelMarker* channel_marker; bool m_channel_marker_isSet; + SWGRollupState* rollup_state; + bool m_rollup_state_isSet; + }; } diff --git a/swagger/sdrangel/code/qt5/client/SWGAISModSettings.cpp b/swagger/sdrangel/code/qt5/client/SWGAISModSettings.cpp index f1b7972df..991c028f6 100644 --- a/swagger/sdrangel/code/qt5/client/SWGAISModSettings.cpp +++ b/swagger/sdrangel/code/qt5/client/SWGAISModSettings.cpp @@ -102,6 +102,8 @@ SWGAISModSettings::SWGAISModSettings() { m_udp_port_isSet = false; channel_marker = nullptr; m_channel_marker_isSet = false; + rollup_state = nullptr; + m_rollup_state_isSet = false; } SWGAISModSettings::~SWGAISModSettings() { @@ -184,6 +186,8 @@ SWGAISModSettings::init() { m_udp_port_isSet = false; channel_marker = new SWGChannelMarker(); m_channel_marker_isSet = false; + rollup_state = new SWGRollupState(); + m_rollup_state_isSet = false; } void @@ -237,6 +241,9 @@ SWGAISModSettings::cleanup() { if(channel_marker != nullptr) { delete channel_marker; } + if(rollup_state != nullptr) { + delete rollup_state; + } } SWGAISModSettings* @@ -324,6 +331,8 @@ SWGAISModSettings::fromJsonObject(QJsonObject &pJson) { ::SWGSDRangel::setValue(&channel_marker, pJson["channelMarker"], "SWGChannelMarker", "SWGChannelMarker"); + ::SWGSDRangel::setValue(&rollup_state, pJson["rollupState"], "SWGRollupState", "SWGRollupState"); + } QString @@ -451,6 +460,9 @@ SWGAISModSettings::asJsonObject() { if((channel_marker != nullptr) && (channel_marker->isSet())){ toJsonValue(QString("channelMarker"), channel_marker, obj, QString("SWGChannelMarker")); } + if((rollup_state != nullptr) && (rollup_state->isSet())){ + toJsonValue(QString("rollupState"), rollup_state, obj, QString("SWGRollupState")); + } return obj; } @@ -825,6 +837,16 @@ SWGAISModSettings::setChannelMarker(SWGChannelMarker* channel_marker) { this->m_channel_marker_isSet = true; } +SWGRollupState* +SWGAISModSettings::getRollupState() { + return rollup_state; +} +void +SWGAISModSettings::setRollupState(SWGRollupState* rollup_state) { + this->rollup_state = rollup_state; + this->m_rollup_state_isSet = true; +} + bool SWGAISModSettings::isSet(){ @@ -941,6 +963,9 @@ SWGAISModSettings::isSet(){ if(channel_marker && channel_marker->isSet()){ isObjectUpdated = true; break; } + if(rollup_state && rollup_state->isSet()){ + isObjectUpdated = true; break; + } }while(false); return isObjectUpdated; } diff --git a/swagger/sdrangel/code/qt5/client/SWGAISModSettings.h b/swagger/sdrangel/code/qt5/client/SWGAISModSettings.h index b0d78d7a7..7074c812d 100644 --- a/swagger/sdrangel/code/qt5/client/SWGAISModSettings.h +++ b/swagger/sdrangel/code/qt5/client/SWGAISModSettings.h @@ -23,6 +23,7 @@ #include "SWGChannelMarker.h" +#include "SWGRollupState.h" #include #include "SWGObject.h" @@ -154,6 +155,9 @@ public: SWGChannelMarker* getChannelMarker(); void setChannelMarker(SWGChannelMarker* channel_marker); + SWGRollupState* getRollupState(); + void setRollupState(SWGRollupState* rollup_state); + virtual bool isSet() override; @@ -269,6 +273,9 @@ private: SWGChannelMarker* channel_marker; bool m_channel_marker_isSet; + SWGRollupState* rollup_state; + bool m_rollup_state_isSet; + }; } diff --git a/swagger/sdrangel/code/qt5/client/SWGAISSettings.cpp b/swagger/sdrangel/code/qt5/client/SWGAISSettings.cpp index 1f4ddcfbc..d85523b7f 100644 --- a/swagger/sdrangel/code/qt5/client/SWGAISSettings.cpp +++ b/swagger/sdrangel/code/qt5/client/SWGAISSettings.cpp @@ -42,6 +42,8 @@ SWGAISSettings::SWGAISSettings() { m_reverse_api_feature_set_index_isSet = false; reverse_api_feature_index = 0; m_reverse_api_feature_index_isSet = false; + rollup_state = nullptr; + m_rollup_state_isSet = false; } SWGAISSettings::~SWGAISSettings() { @@ -64,6 +66,8 @@ SWGAISSettings::init() { m_reverse_api_feature_set_index_isSet = false; reverse_api_feature_index = 0; m_reverse_api_feature_index_isSet = false; + rollup_state = new SWGRollupState(); + m_rollup_state_isSet = false; } void @@ -79,6 +83,9 @@ SWGAISSettings::cleanup() { + if(rollup_state != nullptr) { + delete rollup_state; + } } SWGAISSettings* @@ -106,6 +113,8 @@ SWGAISSettings::fromJsonObject(QJsonObject &pJson) { ::SWGSDRangel::setValue(&reverse_api_feature_index, pJson["reverseAPIFeatureIndex"], "qint32", ""); + ::SWGSDRangel::setValue(&rollup_state, pJson["rollupState"], "SWGRollupState", "SWGRollupState"); + } QString @@ -143,6 +152,9 @@ SWGAISSettings::asJsonObject() { if(m_reverse_api_feature_index_isSet){ obj->insert("reverseAPIFeatureIndex", QJsonValue(reverse_api_feature_index)); } + if((rollup_state != nullptr) && (rollup_state->isSet())){ + toJsonValue(QString("rollupState"), rollup_state, obj, QString("SWGRollupState")); + } return obj; } @@ -217,6 +229,16 @@ SWGAISSettings::setReverseApiFeatureIndex(qint32 reverse_api_feature_index) { this->m_reverse_api_feature_index_isSet = true; } +SWGRollupState* +SWGAISSettings::getRollupState() { + return rollup_state; +} +void +SWGAISSettings::setRollupState(SWGRollupState* rollup_state) { + this->rollup_state = rollup_state; + this->m_rollup_state_isSet = true; +} + bool SWGAISSettings::isSet(){ @@ -243,6 +265,9 @@ SWGAISSettings::isSet(){ if(m_reverse_api_feature_index_isSet){ isObjectUpdated = true; break; } + if(rollup_state && rollup_state->isSet()){ + isObjectUpdated = true; break; + } }while(false); return isObjectUpdated; } diff --git a/swagger/sdrangel/code/qt5/client/SWGAISSettings.h b/swagger/sdrangel/code/qt5/client/SWGAISSettings.h index d24a7b557..7cbb7deab 100644 --- a/swagger/sdrangel/code/qt5/client/SWGAISSettings.h +++ b/swagger/sdrangel/code/qt5/client/SWGAISSettings.h @@ -22,6 +22,7 @@ #include +#include "SWGRollupState.h" #include #include "SWGObject.h" @@ -63,6 +64,9 @@ public: qint32 getReverseApiFeatureIndex(); void setReverseApiFeatureIndex(qint32 reverse_api_feature_index); + SWGRollupState* getRollupState(); + void setRollupState(SWGRollupState* rollup_state); + virtual bool isSet() override; @@ -88,6 +92,9 @@ private: qint32 reverse_api_feature_index; bool m_reverse_api_feature_index_isSet; + SWGRollupState* rollup_state; + bool m_rollup_state_isSet; + }; } diff --git a/swagger/sdrangel/code/qt5/client/SWGAMDemodSettings.cpp b/swagger/sdrangel/code/qt5/client/SWGAMDemodSettings.cpp index 5ed3f25ac..df54d1c02 100644 --- a/swagger/sdrangel/code/qt5/client/SWGAMDemodSettings.cpp +++ b/swagger/sdrangel/code/qt5/client/SWGAMDemodSettings.cpp @@ -64,6 +64,8 @@ SWGAMDemodSettings::SWGAMDemodSettings() { m_reverse_api_channel_index_isSet = false; channel_marker = nullptr; m_channel_marker_isSet = false; + rollup_state = nullptr; + m_rollup_state_isSet = false; } SWGAMDemodSettings::~SWGAMDemodSettings() { @@ -108,6 +110,8 @@ SWGAMDemodSettings::init() { m_reverse_api_channel_index_isSet = false; channel_marker = new SWGChannelMarker(); m_channel_marker_isSet = false; + rollup_state = new SWGRollupState(); + m_rollup_state_isSet = false; } void @@ -138,6 +142,9 @@ SWGAMDemodSettings::cleanup() { if(channel_marker != nullptr) { delete channel_marker; } + if(rollup_state != nullptr) { + delete rollup_state; + } } SWGAMDemodSettings* @@ -187,6 +194,8 @@ SWGAMDemodSettings::fromJsonObject(QJsonObject &pJson) { ::SWGSDRangel::setValue(&channel_marker, pJson["channelMarker"], "SWGChannelMarker", "SWGChannelMarker"); + ::SWGSDRangel::setValue(&rollup_state, pJson["rollupState"], "SWGRollupState", "SWGRollupState"); + } QString @@ -257,6 +266,9 @@ SWGAMDemodSettings::asJsonObject() { if((channel_marker != nullptr) && (channel_marker->isSet())){ toJsonValue(QString("channelMarker"), channel_marker, obj, QString("SWGChannelMarker")); } + if((rollup_state != nullptr) && (rollup_state->isSet())){ + toJsonValue(QString("rollupState"), rollup_state, obj, QString("SWGRollupState")); + } return obj; } @@ -441,6 +453,16 @@ SWGAMDemodSettings::setChannelMarker(SWGChannelMarker* channel_marker) { this->m_channel_marker_isSet = true; } +SWGRollupState* +SWGAMDemodSettings::getRollupState() { + return rollup_state; +} +void +SWGAMDemodSettings::setRollupState(SWGRollupState* rollup_state) { + this->rollup_state = rollup_state; + this->m_rollup_state_isSet = true; +} + bool SWGAMDemodSettings::isSet(){ @@ -500,6 +522,9 @@ SWGAMDemodSettings::isSet(){ if(channel_marker && channel_marker->isSet()){ isObjectUpdated = true; break; } + if(rollup_state && rollup_state->isSet()){ + isObjectUpdated = true; break; + } }while(false); return isObjectUpdated; } diff --git a/swagger/sdrangel/code/qt5/client/SWGAMDemodSettings.h b/swagger/sdrangel/code/qt5/client/SWGAMDemodSettings.h index 488544f2b..871248949 100644 --- a/swagger/sdrangel/code/qt5/client/SWGAMDemodSettings.h +++ b/swagger/sdrangel/code/qt5/client/SWGAMDemodSettings.h @@ -23,6 +23,7 @@ #include "SWGChannelMarker.h" +#include "SWGRollupState.h" #include #include "SWGObject.h" @@ -97,6 +98,9 @@ public: SWGChannelMarker* getChannelMarker(); void setChannelMarker(SWGChannelMarker* channel_marker); + SWGRollupState* getRollupState(); + void setRollupState(SWGRollupState* rollup_state); + virtual bool isSet() override; @@ -155,6 +159,9 @@ private: SWGChannelMarker* channel_marker; bool m_channel_marker_isSet; + SWGRollupState* rollup_state; + bool m_rollup_state_isSet; + }; } diff --git a/swagger/sdrangel/code/qt5/client/SWGAMModSettings.cpp b/swagger/sdrangel/code/qt5/client/SWGAMModSettings.cpp index 332d67629..3d5bd92a6 100644 --- a/swagger/sdrangel/code/qt5/client/SWGAMModSettings.cpp +++ b/swagger/sdrangel/code/qt5/client/SWGAMModSettings.cpp @@ -66,6 +66,8 @@ SWGAMModSettings::SWGAMModSettings() { m_cw_keyer_isSet = false; channel_marker = nullptr; m_channel_marker_isSet = false; + rollup_state = nullptr; + m_rollup_state_isSet = false; } SWGAMModSettings::~SWGAMModSettings() { @@ -112,6 +114,8 @@ SWGAMModSettings::init() { m_cw_keyer_isSet = false; channel_marker = new SWGChannelMarker(); m_channel_marker_isSet = false; + rollup_state = new SWGRollupState(); + m_rollup_state_isSet = false; } void @@ -145,6 +149,9 @@ SWGAMModSettings::cleanup() { if(channel_marker != nullptr) { delete channel_marker; } + if(rollup_state != nullptr) { + delete rollup_state; + } } SWGAMModSettings* @@ -196,6 +203,8 @@ SWGAMModSettings::fromJsonObject(QJsonObject &pJson) { ::SWGSDRangel::setValue(&channel_marker, pJson["channelMarker"], "SWGChannelMarker", "SWGChannelMarker"); + ::SWGSDRangel::setValue(&rollup_state, pJson["rollupState"], "SWGRollupState", "SWGRollupState"); + } QString @@ -269,6 +278,9 @@ SWGAMModSettings::asJsonObject() { if((channel_marker != nullptr) && (channel_marker->isSet())){ toJsonValue(QString("channelMarker"), channel_marker, obj, QString("SWGChannelMarker")); } + if((rollup_state != nullptr) && (rollup_state->isSet())){ + toJsonValue(QString("rollupState"), rollup_state, obj, QString("SWGRollupState")); + } return obj; } @@ -463,6 +475,16 @@ SWGAMModSettings::setChannelMarker(SWGChannelMarker* channel_marker) { this->m_channel_marker_isSet = true; } +SWGRollupState* +SWGAMModSettings::getRollupState() { + return rollup_state; +} +void +SWGAMModSettings::setRollupState(SWGRollupState* rollup_state) { + this->rollup_state = rollup_state; + this->m_rollup_state_isSet = true; +} + bool SWGAMModSettings::isSet(){ @@ -525,6 +547,9 @@ SWGAMModSettings::isSet(){ if(channel_marker && channel_marker->isSet()){ isObjectUpdated = true; break; } + if(rollup_state && rollup_state->isSet()){ + isObjectUpdated = true; break; + } }while(false); return isObjectUpdated; } diff --git a/swagger/sdrangel/code/qt5/client/SWGAMModSettings.h b/swagger/sdrangel/code/qt5/client/SWGAMModSettings.h index b38532129..0717fcf07 100644 --- a/swagger/sdrangel/code/qt5/client/SWGAMModSettings.h +++ b/swagger/sdrangel/code/qt5/client/SWGAMModSettings.h @@ -24,6 +24,7 @@ #include "SWGCWKeyerSettings.h" #include "SWGChannelMarker.h" +#include "SWGRollupState.h" #include #include "SWGObject.h" @@ -101,6 +102,9 @@ public: SWGChannelMarker* getChannelMarker(); void setChannelMarker(SWGChannelMarker* channel_marker); + SWGRollupState* getRollupState(); + void setRollupState(SWGRollupState* rollup_state); + virtual bool isSet() override; @@ -162,6 +166,9 @@ private: SWGChannelMarker* channel_marker; bool m_channel_marker_isSet; + SWGRollupState* rollup_state; + bool m_rollup_state_isSet; + }; } diff --git a/swagger/sdrangel/code/qt5/client/SWGAPRSSettings.cpp b/swagger/sdrangel/code/qt5/client/SWGAPRSSettings.cpp index 03f69db6a..4b76c1501 100644 --- a/swagger/sdrangel/code/qt5/client/SWGAPRSSettings.cpp +++ b/swagger/sdrangel/code/qt5/client/SWGAPRSSettings.cpp @@ -54,6 +54,8 @@ SWGAPRSSettings::SWGAPRSSettings() { m_reverse_api_feature_set_index_isSet = false; reverse_api_feature_index = 0; m_reverse_api_feature_index_isSet = false; + rollup_state = nullptr; + m_rollup_state_isSet = false; } SWGAPRSSettings::~SWGAPRSSettings() { @@ -88,6 +90,8 @@ SWGAPRSSettings::init() { m_reverse_api_feature_set_index_isSet = false; reverse_api_feature_index = 0; m_reverse_api_feature_index_isSet = false; + rollup_state = new SWGRollupState(); + m_rollup_state_isSet = false; } void @@ -117,6 +121,9 @@ SWGAPRSSettings::cleanup() { + if(rollup_state != nullptr) { + delete rollup_state; + } } SWGAPRSSettings* @@ -156,6 +163,8 @@ SWGAPRSSettings::fromJsonObject(QJsonObject &pJson) { ::SWGSDRangel::setValue(&reverse_api_feature_index, pJson["reverseAPIFeatureIndex"], "qint32", ""); + ::SWGSDRangel::setValue(&rollup_state, pJson["rollupState"], "SWGRollupState", "SWGRollupState"); + } QString @@ -211,6 +220,9 @@ SWGAPRSSettings::asJsonObject() { if(m_reverse_api_feature_index_isSet){ obj->insert("reverseAPIFeatureIndex", QJsonValue(reverse_api_feature_index)); } + if((rollup_state != nullptr) && (rollup_state->isSet())){ + toJsonValue(QString("rollupState"), rollup_state, obj, QString("SWGRollupState")); + } return obj; } @@ -345,6 +357,16 @@ SWGAPRSSettings::setReverseApiFeatureIndex(qint32 reverse_api_feature_index) { this->m_reverse_api_feature_index_isSet = true; } +SWGRollupState* +SWGAPRSSettings::getRollupState() { + return rollup_state; +} +void +SWGAPRSSettings::setRollupState(SWGRollupState* rollup_state) { + this->rollup_state = rollup_state; + this->m_rollup_state_isSet = true; +} + bool SWGAPRSSettings::isSet(){ @@ -389,6 +411,9 @@ SWGAPRSSettings::isSet(){ if(m_reverse_api_feature_index_isSet){ isObjectUpdated = true; break; } + if(rollup_state && rollup_state->isSet()){ + isObjectUpdated = true; break; + } }while(false); return isObjectUpdated; } diff --git a/swagger/sdrangel/code/qt5/client/SWGAPRSSettings.h b/swagger/sdrangel/code/qt5/client/SWGAPRSSettings.h index 506de0136..c739c9766 100644 --- a/swagger/sdrangel/code/qt5/client/SWGAPRSSettings.h +++ b/swagger/sdrangel/code/qt5/client/SWGAPRSSettings.h @@ -22,6 +22,7 @@ #include +#include "SWGRollupState.h" #include #include "SWGObject.h" @@ -81,6 +82,9 @@ public: qint32 getReverseApiFeatureIndex(); void setReverseApiFeatureIndex(qint32 reverse_api_feature_index); + SWGRollupState* getRollupState(); + void setRollupState(SWGRollupState* rollup_state); + virtual bool isSet() override; @@ -124,6 +128,9 @@ private: qint32 reverse_api_feature_index; bool m_reverse_api_feature_index_isSet; + SWGRollupState* rollup_state; + bool m_rollup_state_isSet; + }; } diff --git a/swagger/sdrangel/code/qt5/client/SWGAPTDemodSettings.cpp b/swagger/sdrangel/code/qt5/client/SWGAPTDemodSettings.cpp index 93f8ad8a2..ab4f86497 100644 --- a/swagger/sdrangel/code/qt5/client/SWGAPTDemodSettings.cpp +++ b/swagger/sdrangel/code/qt5/client/SWGAPTDemodSettings.cpp @@ -74,6 +74,8 @@ SWGAPTDemodSettings::SWGAPTDemodSettings() { m_reverse_api_channel_index_isSet = false; channel_marker = nullptr; m_channel_marker_isSet = false; + rollup_state = nullptr; + m_rollup_state_isSet = false; } SWGAPTDemodSettings::~SWGAPTDemodSettings() { @@ -128,6 +130,8 @@ SWGAPTDemodSettings::init() { m_reverse_api_channel_index_isSet = false; channel_marker = new SWGChannelMarker(); m_channel_marker_isSet = false; + rollup_state = new SWGRollupState(); + m_rollup_state_isSet = false; } void @@ -163,6 +167,9 @@ SWGAPTDemodSettings::cleanup() { if(channel_marker != nullptr) { delete channel_marker; } + if(rollup_state != nullptr) { + delete rollup_state; + } } SWGAPTDemodSettings* @@ -222,6 +229,8 @@ SWGAPTDemodSettings::fromJsonObject(QJsonObject &pJson) { ::SWGSDRangel::setValue(&channel_marker, pJson["channelMarker"], "SWGChannelMarker", "SWGChannelMarker"); + ::SWGSDRangel::setValue(&rollup_state, pJson["rollupState"], "SWGRollupState", "SWGRollupState"); + } QString @@ -307,6 +316,9 @@ SWGAPTDemodSettings::asJsonObject() { if((channel_marker != nullptr) && (channel_marker->isSet())){ toJsonValue(QString("channelMarker"), channel_marker, obj, QString("SWGChannelMarker")); } + if((rollup_state != nullptr) && (rollup_state->isSet())){ + toJsonValue(QString("rollupState"), rollup_state, obj, QString("SWGRollupState")); + } return obj; } @@ -541,6 +553,16 @@ SWGAPTDemodSettings::setChannelMarker(SWGChannelMarker* channel_marker) { this->m_channel_marker_isSet = true; } +SWGRollupState* +SWGAPTDemodSettings::getRollupState() { + return rollup_state; +} +void +SWGAPTDemodSettings::setRollupState(SWGRollupState* rollup_state) { + this->rollup_state = rollup_state; + this->m_rollup_state_isSet = true; +} + bool SWGAPTDemodSettings::isSet(){ @@ -615,6 +637,9 @@ SWGAPTDemodSettings::isSet(){ if(channel_marker && channel_marker->isSet()){ isObjectUpdated = true; break; } + if(rollup_state && rollup_state->isSet()){ + isObjectUpdated = true; break; + } }while(false); return isObjectUpdated; } diff --git a/swagger/sdrangel/code/qt5/client/SWGAPTDemodSettings.h b/swagger/sdrangel/code/qt5/client/SWGAPTDemodSettings.h index 9e0426093..a90e934b1 100644 --- a/swagger/sdrangel/code/qt5/client/SWGAPTDemodSettings.h +++ b/swagger/sdrangel/code/qt5/client/SWGAPTDemodSettings.h @@ -23,6 +23,7 @@ #include "SWGChannelMarker.h" +#include "SWGRollupState.h" #include #include "SWGObject.h" @@ -112,6 +113,9 @@ public: SWGChannelMarker* getChannelMarker(); void setChannelMarker(SWGChannelMarker* channel_marker); + SWGRollupState* getRollupState(); + void setRollupState(SWGRollupState* rollup_state); + virtual bool isSet() override; @@ -185,6 +189,9 @@ private: SWGChannelMarker* channel_marker; bool m_channel_marker_isSet; + SWGRollupState* rollup_state; + bool m_rollup_state_isSet; + }; } diff --git a/swagger/sdrangel/code/qt5/client/SWGATVModSettings.cpp b/swagger/sdrangel/code/qt5/client/SWGATVModSettings.cpp index b4682e44b..b50bbc772 100644 --- a/swagger/sdrangel/code/qt5/client/SWGATVModSettings.cpp +++ b/swagger/sdrangel/code/qt5/client/SWGATVModSettings.cpp @@ -88,6 +88,8 @@ SWGATVModSettings::SWGATVModSettings() { m_reverse_api_channel_index_isSet = false; channel_marker = nullptr; m_channel_marker_isSet = false; + rollup_state = nullptr; + m_rollup_state_isSet = false; } SWGATVModSettings::~SWGATVModSettings() { @@ -156,6 +158,8 @@ SWGATVModSettings::init() { m_reverse_api_channel_index_isSet = false; channel_marker = new SWGChannelMarker(); m_channel_marker_isSet = false; + rollup_state = new SWGRollupState(); + m_rollup_state_isSet = false; } void @@ -202,6 +206,9 @@ SWGATVModSettings::cleanup() { if(channel_marker != nullptr) { delete channel_marker; } + if(rollup_state != nullptr) { + delete rollup_state; + } } SWGATVModSettings* @@ -275,6 +282,8 @@ SWGATVModSettings::fromJsonObject(QJsonObject &pJson) { ::SWGSDRangel::setValue(&channel_marker, pJson["channelMarker"], "SWGChannelMarker", "SWGChannelMarker"); + ::SWGSDRangel::setValue(&rollup_state, pJson["rollupState"], "SWGRollupState", "SWGRollupState"); + } QString @@ -381,6 +390,9 @@ SWGATVModSettings::asJsonObject() { if((channel_marker != nullptr) && (channel_marker->isSet())){ toJsonValue(QString("channelMarker"), channel_marker, obj, QString("SWGChannelMarker")); } + if((rollup_state != nullptr) && (rollup_state->isSet())){ + toJsonValue(QString("rollupState"), rollup_state, obj, QString("SWGRollupState")); + } return obj; } @@ -685,6 +697,16 @@ SWGATVModSettings::setChannelMarker(SWGChannelMarker* channel_marker) { this->m_channel_marker_isSet = true; } +SWGRollupState* +SWGATVModSettings::getRollupState() { + return rollup_state; +} +void +SWGATVModSettings::setRollupState(SWGRollupState* rollup_state) { + this->rollup_state = rollup_state; + this->m_rollup_state_isSet = true; +} + bool SWGATVModSettings::isSet(){ @@ -780,6 +802,9 @@ SWGATVModSettings::isSet(){ if(channel_marker && channel_marker->isSet()){ isObjectUpdated = true; break; } + if(rollup_state && rollup_state->isSet()){ + isObjectUpdated = true; break; + } }while(false); return isObjectUpdated; } diff --git a/swagger/sdrangel/code/qt5/client/SWGATVModSettings.h b/swagger/sdrangel/code/qt5/client/SWGATVModSettings.h index 2a0bab716..5da63336c 100644 --- a/swagger/sdrangel/code/qt5/client/SWGATVModSettings.h +++ b/swagger/sdrangel/code/qt5/client/SWGATVModSettings.h @@ -23,6 +23,7 @@ #include "SWGChannelMarker.h" +#include "SWGRollupState.h" #include #include "SWGObject.h" @@ -133,6 +134,9 @@ public: SWGChannelMarker* getChannelMarker(); void setChannelMarker(SWGChannelMarker* channel_marker); + SWGRollupState* getRollupState(); + void setRollupState(SWGRollupState* rollup_state); + virtual bool isSet() override; @@ -227,6 +231,9 @@ private: SWGChannelMarker* channel_marker; bool m_channel_marker_isSet; + SWGRollupState* rollup_state; + bool m_rollup_state_isSet; + }; } diff --git a/swagger/sdrangel/code/qt5/client/SWGAntennaToolsSettings.cpp b/swagger/sdrangel/code/qt5/client/SWGAntennaToolsSettings.cpp index 06c049d8f..ff220d61e 100644 --- a/swagger/sdrangel/code/qt5/client/SWGAntennaToolsSettings.cpp +++ b/swagger/sdrangel/code/qt5/client/SWGAntennaToolsSettings.cpp @@ -54,6 +54,8 @@ SWGAntennaToolsSettings::SWGAntennaToolsSettings() { m_reverse_api_feature_set_index_isSet = false; reverse_api_feature_index = 0; m_reverse_api_feature_index_isSet = false; + rollup_state = nullptr; + m_rollup_state_isSet = false; } SWGAntennaToolsSettings::~SWGAntennaToolsSettings() { @@ -88,6 +90,8 @@ SWGAntennaToolsSettings::init() { m_reverse_api_feature_set_index_isSet = false; reverse_api_feature_index = 0; m_reverse_api_feature_index_isSet = false; + rollup_state = new SWGRollupState(); + m_rollup_state_isSet = false; } void @@ -109,6 +113,9 @@ SWGAntennaToolsSettings::cleanup() { + if(rollup_state != nullptr) { + delete rollup_state; + } } SWGAntennaToolsSettings* @@ -148,6 +155,8 @@ SWGAntennaToolsSettings::fromJsonObject(QJsonObject &pJson) { ::SWGSDRangel::setValue(&reverse_api_feature_index, pJson["reverseAPIFeatureIndex"], "qint32", ""); + ::SWGSDRangel::setValue(&rollup_state, pJson["rollupState"], "SWGRollupState", "SWGRollupState"); + } QString @@ -203,6 +212,9 @@ SWGAntennaToolsSettings::asJsonObject() { if(m_reverse_api_feature_index_isSet){ obj->insert("reverseAPIFeatureIndex", QJsonValue(reverse_api_feature_index)); } + if((rollup_state != nullptr) && (rollup_state->isSet())){ + toJsonValue(QString("rollupState"), rollup_state, obj, QString("SWGRollupState")); + } return obj; } @@ -337,6 +349,16 @@ SWGAntennaToolsSettings::setReverseApiFeatureIndex(qint32 reverse_api_feature_in this->m_reverse_api_feature_index_isSet = true; } +SWGRollupState* +SWGAntennaToolsSettings::getRollupState() { + return rollup_state; +} +void +SWGAntennaToolsSettings::setRollupState(SWGRollupState* rollup_state) { + this->rollup_state = rollup_state; + this->m_rollup_state_isSet = true; +} + bool SWGAntennaToolsSettings::isSet(){ @@ -381,6 +403,9 @@ SWGAntennaToolsSettings::isSet(){ if(m_reverse_api_feature_index_isSet){ isObjectUpdated = true; break; } + if(rollup_state && rollup_state->isSet()){ + isObjectUpdated = true; break; + } }while(false); return isObjectUpdated; } diff --git a/swagger/sdrangel/code/qt5/client/SWGAntennaToolsSettings.h b/swagger/sdrangel/code/qt5/client/SWGAntennaToolsSettings.h index 78adbb1bc..650bfc5e7 100644 --- a/swagger/sdrangel/code/qt5/client/SWGAntennaToolsSettings.h +++ b/swagger/sdrangel/code/qt5/client/SWGAntennaToolsSettings.h @@ -22,6 +22,7 @@ #include +#include "SWGRollupState.h" #include #include "SWGObject.h" @@ -81,6 +82,9 @@ public: qint32 getReverseApiFeatureIndex(); void setReverseApiFeatureIndex(qint32 reverse_api_feature_index); + SWGRollupState* getRollupState(); + void setRollupState(SWGRollupState* rollup_state); + virtual bool isSet() override; @@ -124,6 +128,9 @@ private: qint32 reverse_api_feature_index; bool m_reverse_api_feature_index_isSet; + SWGRollupState* rollup_state; + bool m_rollup_state_isSet; + }; } diff --git a/swagger/sdrangel/code/qt5/client/SWGBFMDemodSettings.cpp b/swagger/sdrangel/code/qt5/client/SWGBFMDemodSettings.cpp index 8b32d2d6a..bacbffe5c 100644 --- a/swagger/sdrangel/code/qt5/client/SWGBFMDemodSettings.cpp +++ b/swagger/sdrangel/code/qt5/client/SWGBFMDemodSettings.cpp @@ -68,6 +68,8 @@ SWGBFMDemodSettings::SWGBFMDemodSettings() { m_spectrum_config_isSet = false; channel_marker = nullptr; m_channel_marker_isSet = false; + rollup_state = nullptr; + m_rollup_state_isSet = false; } SWGBFMDemodSettings::~SWGBFMDemodSettings() { @@ -116,6 +118,8 @@ SWGBFMDemodSettings::init() { m_spectrum_config_isSet = false; channel_marker = new SWGChannelMarker(); m_channel_marker_isSet = false; + rollup_state = new SWGRollupState(); + m_rollup_state_isSet = false; } void @@ -150,6 +154,9 @@ SWGBFMDemodSettings::cleanup() { if(channel_marker != nullptr) { delete channel_marker; } + if(rollup_state != nullptr) { + delete rollup_state; + } } SWGBFMDemodSettings* @@ -203,6 +210,8 @@ SWGBFMDemodSettings::fromJsonObject(QJsonObject &pJson) { ::SWGSDRangel::setValue(&channel_marker, pJson["channelMarker"], "SWGChannelMarker", "SWGChannelMarker"); + ::SWGSDRangel::setValue(&rollup_state, pJson["rollupState"], "SWGRollupState", "SWGRollupState"); + } QString @@ -279,6 +288,9 @@ SWGBFMDemodSettings::asJsonObject() { if((channel_marker != nullptr) && (channel_marker->isSet())){ toJsonValue(QString("channelMarker"), channel_marker, obj, QString("SWGChannelMarker")); } + if((rollup_state != nullptr) && (rollup_state->isSet())){ + toJsonValue(QString("rollupState"), rollup_state, obj, QString("SWGRollupState")); + } return obj; } @@ -483,6 +495,16 @@ SWGBFMDemodSettings::setChannelMarker(SWGChannelMarker* channel_marker) { this->m_channel_marker_isSet = true; } +SWGRollupState* +SWGBFMDemodSettings::getRollupState() { + return rollup_state; +} +void +SWGBFMDemodSettings::setRollupState(SWGRollupState* rollup_state) { + this->rollup_state = rollup_state; + this->m_rollup_state_isSet = true; +} + bool SWGBFMDemodSettings::isSet(){ @@ -548,6 +570,9 @@ SWGBFMDemodSettings::isSet(){ if(channel_marker && channel_marker->isSet()){ isObjectUpdated = true; break; } + if(rollup_state && rollup_state->isSet()){ + isObjectUpdated = true; break; + } }while(false); return isObjectUpdated; } diff --git a/swagger/sdrangel/code/qt5/client/SWGBFMDemodSettings.h b/swagger/sdrangel/code/qt5/client/SWGBFMDemodSettings.h index 75f67a447..472cf81f7 100644 --- a/swagger/sdrangel/code/qt5/client/SWGBFMDemodSettings.h +++ b/swagger/sdrangel/code/qt5/client/SWGBFMDemodSettings.h @@ -24,6 +24,7 @@ #include "SWGChannelMarker.h" #include "SWGGLSpectrum.h" +#include "SWGRollupState.h" #include #include "SWGObject.h" @@ -104,6 +105,9 @@ public: SWGChannelMarker* getChannelMarker(); void setChannelMarker(SWGChannelMarker* channel_marker); + SWGRollupState* getRollupState(); + void setRollupState(SWGRollupState* rollup_state); + virtual bool isSet() override; @@ -168,6 +172,9 @@ private: SWGChannelMarker* channel_marker; bool m_channel_marker_isSet; + SWGRollupState* rollup_state; + bool m_rollup_state_isSet; + }; } diff --git a/swagger/sdrangel/code/qt5/client/SWGBeamSteeringCWModSettings.cpp b/swagger/sdrangel/code/qt5/client/SWGBeamSteeringCWModSettings.cpp index 674160fb5..7264c4931 100644 --- a/swagger/sdrangel/code/qt5/client/SWGBeamSteeringCWModSettings.cpp +++ b/swagger/sdrangel/code/qt5/client/SWGBeamSteeringCWModSettings.cpp @@ -50,6 +50,8 @@ SWGBeamSteeringCWModSettings::SWGBeamSteeringCWModSettings() { m_reverse_api_channel_index_isSet = false; channel_marker = nullptr; m_channel_marker_isSet = false; + rollup_state = nullptr; + m_rollup_state_isSet = false; } SWGBeamSteeringCWModSettings::~SWGBeamSteeringCWModSettings() { @@ -80,6 +82,8 @@ SWGBeamSteeringCWModSettings::init() { m_reverse_api_channel_index_isSet = false; channel_marker = new SWGChannelMarker(); m_channel_marker_isSet = false; + rollup_state = new SWGRollupState(); + m_rollup_state_isSet = false; } void @@ -101,6 +105,9 @@ SWGBeamSteeringCWModSettings::cleanup() { if(channel_marker != nullptr) { delete channel_marker; } + if(rollup_state != nullptr) { + delete rollup_state; + } } SWGBeamSteeringCWModSettings* @@ -136,6 +143,8 @@ SWGBeamSteeringCWModSettings::fromJsonObject(QJsonObject &pJson) { ::SWGSDRangel::setValue(&channel_marker, pJson["channelMarker"], "SWGChannelMarker", "SWGChannelMarker"); + ::SWGSDRangel::setValue(&rollup_state, pJson["rollupState"], "SWGRollupState", "SWGRollupState"); + } QString @@ -185,6 +194,9 @@ SWGBeamSteeringCWModSettings::asJsonObject() { if((channel_marker != nullptr) && (channel_marker->isSet())){ toJsonValue(QString("channelMarker"), channel_marker, obj, QString("SWGChannelMarker")); } + if((rollup_state != nullptr) && (rollup_state->isSet())){ + toJsonValue(QString("rollupState"), rollup_state, obj, QString("SWGRollupState")); + } return obj; } @@ -299,6 +311,16 @@ SWGBeamSteeringCWModSettings::setChannelMarker(SWGChannelMarker* channel_marker) this->m_channel_marker_isSet = true; } +SWGRollupState* +SWGBeamSteeringCWModSettings::getRollupState() { + return rollup_state; +} +void +SWGBeamSteeringCWModSettings::setRollupState(SWGRollupState* rollup_state) { + this->rollup_state = rollup_state; + this->m_rollup_state_isSet = true; +} + bool SWGBeamSteeringCWModSettings::isSet(){ @@ -337,6 +359,9 @@ SWGBeamSteeringCWModSettings::isSet(){ if(channel_marker && channel_marker->isSet()){ isObjectUpdated = true; break; } + if(rollup_state && rollup_state->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 b11c82d76..7a2e518a0 100644 --- a/swagger/sdrangel/code/qt5/client/SWGBeamSteeringCWModSettings.h +++ b/swagger/sdrangel/code/qt5/client/SWGBeamSteeringCWModSettings.h @@ -23,6 +23,7 @@ #include "SWGChannelMarker.h" +#include "SWGRollupState.h" #include #include "SWGObject.h" @@ -76,6 +77,9 @@ public: SWGChannelMarker* getChannelMarker(); void setChannelMarker(SWGChannelMarker* channel_marker); + SWGRollupState* getRollupState(); + void setRollupState(SWGRollupState* rollup_state); + virtual bool isSet() override; @@ -113,6 +117,9 @@ private: SWGChannelMarker* channel_marker; bool m_channel_marker_isSet; + SWGRollupState* rollup_state; + bool m_rollup_state_isSet; + }; } diff --git a/swagger/sdrangel/code/qt5/client/SWGChannelAnalyzerSettings.cpp b/swagger/sdrangel/code/qt5/client/SWGChannelAnalyzerSettings.cpp index 264b5cb55..7eca21fbd 100644 --- a/swagger/sdrangel/code/qt5/client/SWGChannelAnalyzerSettings.cpp +++ b/swagger/sdrangel/code/qt5/client/SWGChannelAnalyzerSettings.cpp @@ -84,6 +84,8 @@ SWGChannelAnalyzerSettings::SWGChannelAnalyzerSettings() { m_scope_config_isSet = false; channel_marker = nullptr; m_channel_marker_isSet = false; + rollup_state = nullptr; + m_rollup_state_isSet = false; } SWGChannelAnalyzerSettings::~SWGChannelAnalyzerSettings() { @@ -148,6 +150,8 @@ SWGChannelAnalyzerSettings::init() { m_scope_config_isSet = false; channel_marker = new SWGChannelMarker(); m_channel_marker_isSet = false; + rollup_state = new SWGRollupState(); + m_rollup_state_isSet = false; } void @@ -190,6 +194,9 @@ SWGChannelAnalyzerSettings::cleanup() { if(channel_marker != nullptr) { delete channel_marker; } + if(rollup_state != nullptr) { + delete rollup_state; + } } SWGChannelAnalyzerSettings* @@ -259,6 +266,8 @@ SWGChannelAnalyzerSettings::fromJsonObject(QJsonObject &pJson) { ::SWGSDRangel::setValue(&channel_marker, pJson["channelMarker"], "SWGChannelMarker", "SWGChannelMarker"); + ::SWGSDRangel::setValue(&rollup_state, pJson["rollupState"], "SWGRollupState", "SWGRollupState"); + } QString @@ -359,6 +368,9 @@ SWGChannelAnalyzerSettings::asJsonObject() { if((channel_marker != nullptr) && (channel_marker->isSet())){ toJsonValue(QString("channelMarker"), channel_marker, obj, QString("SWGChannelMarker")); } + if((rollup_state != nullptr) && (rollup_state->isSet())){ + toJsonValue(QString("rollupState"), rollup_state, obj, QString("SWGRollupState")); + } return obj; } @@ -643,6 +655,16 @@ SWGChannelAnalyzerSettings::setChannelMarker(SWGChannelMarker* channel_marker) { this->m_channel_marker_isSet = true; } +SWGRollupState* +SWGChannelAnalyzerSettings::getRollupState() { + return rollup_state; +} +void +SWGChannelAnalyzerSettings::setRollupState(SWGRollupState* rollup_state) { + this->rollup_state = rollup_state; + this->m_rollup_state_isSet = true; +} + bool SWGChannelAnalyzerSettings::isSet(){ @@ -732,6 +754,9 @@ SWGChannelAnalyzerSettings::isSet(){ if(channel_marker && channel_marker->isSet()){ isObjectUpdated = true; break; } + if(rollup_state && rollup_state->isSet()){ + isObjectUpdated = true; break; + } }while(false); return isObjectUpdated; } diff --git a/swagger/sdrangel/code/qt5/client/SWGChannelAnalyzerSettings.h b/swagger/sdrangel/code/qt5/client/SWGChannelAnalyzerSettings.h index c029d6ebc..3fc136d92 100644 --- a/swagger/sdrangel/code/qt5/client/SWGChannelAnalyzerSettings.h +++ b/swagger/sdrangel/code/qt5/client/SWGChannelAnalyzerSettings.h @@ -25,6 +25,7 @@ #include "SWGChannelMarker.h" #include "SWGGLScope.h" #include "SWGGLSpectrum.h" +#include "SWGRollupState.h" #include #include "SWGObject.h" @@ -129,6 +130,9 @@ public: SWGChannelMarker* getChannelMarker(); void setChannelMarker(SWGChannelMarker* channel_marker); + SWGRollupState* getRollupState(); + void setRollupState(SWGRollupState* rollup_state); + virtual bool isSet() override; @@ -217,6 +221,9 @@ private: SWGChannelMarker* channel_marker; bool m_channel_marker_isSet; + SWGRollupState* rollup_state; + bool m_rollup_state_isSet; + }; } diff --git a/swagger/sdrangel/code/qt5/client/SWGChirpChatDemodSettings.cpp b/swagger/sdrangel/code/qt5/client/SWGChirpChatDemodSettings.cpp index 7108a3939..a9ff9c941 100644 --- a/swagger/sdrangel/code/qt5/client/SWGChirpChatDemodSettings.cpp +++ b/swagger/sdrangel/code/qt5/client/SWGChirpChatDemodSettings.cpp @@ -86,6 +86,8 @@ SWGChirpChatDemodSettings::SWGChirpChatDemodSettings() { m_spectrum_config_isSet = false; channel_marker = nullptr; m_channel_marker_isSet = false; + rollup_state = nullptr; + m_rollup_state_isSet = false; } SWGChirpChatDemodSettings::~SWGChirpChatDemodSettings() { @@ -152,6 +154,8 @@ SWGChirpChatDemodSettings::init() { m_spectrum_config_isSet = false; channel_marker = new SWGChannelMarker(); m_channel_marker_isSet = false; + rollup_state = new SWGRollupState(); + m_rollup_state_isSet = false; } void @@ -195,6 +199,9 @@ SWGChirpChatDemodSettings::cleanup() { if(channel_marker != nullptr) { delete channel_marker; } + if(rollup_state != nullptr) { + delete rollup_state; + } } SWGChirpChatDemodSettings* @@ -266,6 +273,8 @@ SWGChirpChatDemodSettings::fromJsonObject(QJsonObject &pJson) { ::SWGSDRangel::setValue(&channel_marker, pJson["channelMarker"], "SWGChannelMarker", "SWGChannelMarker"); + ::SWGSDRangel::setValue(&rollup_state, pJson["rollupState"], "SWGRollupState", "SWGRollupState"); + } QString @@ -369,6 +378,9 @@ SWGChirpChatDemodSettings::asJsonObject() { if((channel_marker != nullptr) && (channel_marker->isSet())){ toJsonValue(QString("channelMarker"), channel_marker, obj, QString("SWGChannelMarker")); } + if((rollup_state != nullptr) && (rollup_state->isSet())){ + toJsonValue(QString("rollupState"), rollup_state, obj, QString("SWGRollupState")); + } return obj; } @@ -663,6 +675,16 @@ SWGChirpChatDemodSettings::setChannelMarker(SWGChannelMarker* channel_marker) { this->m_channel_marker_isSet = true; } +SWGRollupState* +SWGChirpChatDemodSettings::getRollupState() { + return rollup_state; +} +void +SWGChirpChatDemodSettings::setRollupState(SWGRollupState* rollup_state) { + this->rollup_state = rollup_state; + this->m_rollup_state_isSet = true; +} + bool SWGChirpChatDemodSettings::isSet(){ @@ -755,6 +777,9 @@ SWGChirpChatDemodSettings::isSet(){ if(channel_marker && channel_marker->isSet()){ isObjectUpdated = true; break; } + if(rollup_state && rollup_state->isSet()){ + isObjectUpdated = true; break; + } }while(false); return isObjectUpdated; } diff --git a/swagger/sdrangel/code/qt5/client/SWGChirpChatDemodSettings.h b/swagger/sdrangel/code/qt5/client/SWGChirpChatDemodSettings.h index eed7686b1..d0b4f5c8d 100644 --- a/swagger/sdrangel/code/qt5/client/SWGChirpChatDemodSettings.h +++ b/swagger/sdrangel/code/qt5/client/SWGChirpChatDemodSettings.h @@ -24,6 +24,7 @@ #include "SWGChannelMarker.h" #include "SWGGLSpectrum.h" +#include "SWGRollupState.h" #include #include "SWGObject.h" @@ -131,6 +132,9 @@ public: SWGChannelMarker* getChannelMarker(); void setChannelMarker(SWGChannelMarker* channel_marker); + SWGRollupState* getRollupState(); + void setRollupState(SWGRollupState* rollup_state); + virtual bool isSet() override; @@ -222,6 +226,9 @@ private: SWGChannelMarker* channel_marker; bool m_channel_marker_isSet; + SWGRollupState* rollup_state; + bool m_rollup_state_isSet; + }; } diff --git a/swagger/sdrangel/code/qt5/client/SWGChirpChatModSettings.cpp b/swagger/sdrangel/code/qt5/client/SWGChirpChatModSettings.cpp index f34e796ff..598f3bbc0 100644 --- a/swagger/sdrangel/code/qt5/client/SWGChirpChatModSettings.cpp +++ b/swagger/sdrangel/code/qt5/client/SWGChirpChatModSettings.cpp @@ -108,6 +108,8 @@ SWGChirpChatModSettings::SWGChirpChatModSettings() { m_reverse_api_channel_index_isSet = false; channel_marker = nullptr; m_channel_marker_isSet = false; + rollup_state = nullptr; + m_rollup_state_isSet = false; } SWGChirpChatModSettings::~SWGChirpChatModSettings() { @@ -196,6 +198,8 @@ SWGChirpChatModSettings::init() { m_reverse_api_channel_index_isSet = false; channel_marker = new SWGChannelMarker(); m_channel_marker_isSet = false; + rollup_state = new SWGRollupState(); + m_rollup_state_isSet = false; } void @@ -280,6 +284,9 @@ SWGChirpChatModSettings::cleanup() { if(channel_marker != nullptr) { delete channel_marker; } + if(rollup_state != nullptr) { + delete rollup_state; + } } SWGChirpChatModSettings* @@ -373,6 +380,8 @@ SWGChirpChatModSettings::fromJsonObject(QJsonObject &pJson) { ::SWGSDRangel::setValue(&channel_marker, pJson["channelMarker"], "SWGChannelMarker", "SWGChannelMarker"); + ::SWGSDRangel::setValue(&rollup_state, pJson["rollupState"], "SWGRollupState", "SWGRollupState"); + } QString @@ -509,6 +518,9 @@ SWGChirpChatModSettings::asJsonObject() { if((channel_marker != nullptr) && (channel_marker->isSet())){ toJsonValue(QString("channelMarker"), channel_marker, obj, QString("SWGChannelMarker")); } + if((rollup_state != nullptr) && (rollup_state->isSet())){ + toJsonValue(QString("rollupState"), rollup_state, obj, QString("SWGRollupState")); + } return obj; } @@ -913,6 +925,16 @@ SWGChirpChatModSettings::setChannelMarker(SWGChannelMarker* channel_marker) { this->m_channel_marker_isSet = true; } +SWGRollupState* +SWGChirpChatModSettings::getRollupState() { + return rollup_state; +} +void +SWGChirpChatModSettings::setRollupState(SWGRollupState* rollup_state) { + this->rollup_state = rollup_state; + this->m_rollup_state_isSet = true; +} + bool SWGChirpChatModSettings::isSet(){ @@ -1038,6 +1060,9 @@ SWGChirpChatModSettings::isSet(){ if(channel_marker && channel_marker->isSet()){ isObjectUpdated = true; break; } + if(rollup_state && rollup_state->isSet()){ + isObjectUpdated = true; break; + } }while(false); return isObjectUpdated; } diff --git a/swagger/sdrangel/code/qt5/client/SWGChirpChatModSettings.h b/swagger/sdrangel/code/qt5/client/SWGChirpChatModSettings.h index 80d7e4971..b5ccbe2f5 100644 --- a/swagger/sdrangel/code/qt5/client/SWGChirpChatModSettings.h +++ b/swagger/sdrangel/code/qt5/client/SWGChirpChatModSettings.h @@ -23,6 +23,7 @@ #include "SWGChannelMarker.h" +#include "SWGRollupState.h" #include #include @@ -164,6 +165,9 @@ public: SWGChannelMarker* getChannelMarker(); void setChannelMarker(SWGChannelMarker* channel_marker); + SWGRollupState* getRollupState(); + void setRollupState(SWGRollupState* rollup_state); + virtual bool isSet() override; @@ -288,6 +292,9 @@ private: SWGChannelMarker* channel_marker; bool m_channel_marker_isSet; + SWGRollupState* rollup_state; + bool m_rollup_state_isSet; + }; } diff --git a/swagger/sdrangel/code/qt5/client/SWGDABDemodSettings.cpp b/swagger/sdrangel/code/qt5/client/SWGDABDemodSettings.cpp index 87a868def..645f868b5 100644 --- a/swagger/sdrangel/code/qt5/client/SWGDABDemodSettings.cpp +++ b/swagger/sdrangel/code/qt5/client/SWGDABDemodSettings.cpp @@ -58,6 +58,8 @@ SWGDABDemodSettings::SWGDABDemodSettings() { m_reverse_api_channel_index_isSet = false; channel_marker = nullptr; m_channel_marker_isSet = false; + rollup_state = nullptr; + m_rollup_state_isSet = false; } SWGDABDemodSettings::~SWGDABDemodSettings() { @@ -96,6 +98,8 @@ SWGDABDemodSettings::init() { m_reverse_api_channel_index_isSet = false; channel_marker = new SWGChannelMarker(); m_channel_marker_isSet = false; + rollup_state = new SWGRollupState(); + m_rollup_state_isSet = false; } void @@ -125,6 +129,9 @@ SWGDABDemodSettings::cleanup() { if(channel_marker != nullptr) { delete channel_marker; } + if(rollup_state != nullptr) { + delete rollup_state; + } } SWGDABDemodSettings* @@ -168,6 +175,8 @@ SWGDABDemodSettings::fromJsonObject(QJsonObject &pJson) { ::SWGSDRangel::setValue(&channel_marker, pJson["channelMarker"], "SWGChannelMarker", "SWGChannelMarker"); + ::SWGSDRangel::setValue(&rollup_state, pJson["rollupState"], "SWGRollupState", "SWGRollupState"); + } QString @@ -229,6 +238,9 @@ SWGDABDemodSettings::asJsonObject() { if((channel_marker != nullptr) && (channel_marker->isSet())){ toJsonValue(QString("channelMarker"), channel_marker, obj, QString("SWGChannelMarker")); } + if((rollup_state != nullptr) && (rollup_state->isSet())){ + toJsonValue(QString("rollupState"), rollup_state, obj, QString("SWGRollupState")); + } return obj; } @@ -383,6 +395,16 @@ SWGDABDemodSettings::setChannelMarker(SWGChannelMarker* channel_marker) { this->m_channel_marker_isSet = true; } +SWGRollupState* +SWGDABDemodSettings::getRollupState() { + return rollup_state; +} +void +SWGDABDemodSettings::setRollupState(SWGRollupState* rollup_state) { + this->rollup_state = rollup_state; + this->m_rollup_state_isSet = true; +} + bool SWGDABDemodSettings::isSet(){ @@ -433,6 +455,9 @@ SWGDABDemodSettings::isSet(){ if(channel_marker && channel_marker->isSet()){ isObjectUpdated = true; break; } + if(rollup_state && rollup_state->isSet()){ + isObjectUpdated = true; break; + } }while(false); return isObjectUpdated; } diff --git a/swagger/sdrangel/code/qt5/client/SWGDABDemodSettings.h b/swagger/sdrangel/code/qt5/client/SWGDABDemodSettings.h index 3eeaa8f43..fdafc7756 100644 --- a/swagger/sdrangel/code/qt5/client/SWGDABDemodSettings.h +++ b/swagger/sdrangel/code/qt5/client/SWGDABDemodSettings.h @@ -23,6 +23,7 @@ #include "SWGChannelMarker.h" +#include "SWGRollupState.h" #include #include "SWGObject.h" @@ -88,6 +89,9 @@ public: SWGChannelMarker* getChannelMarker(); void setChannelMarker(SWGChannelMarker* channel_marker); + SWGRollupState* getRollupState(); + void setRollupState(SWGRollupState* rollup_state); + virtual bool isSet() override; @@ -137,6 +141,9 @@ private: SWGChannelMarker* channel_marker; bool m_channel_marker_isSet; + SWGRollupState* rollup_state; + bool m_rollup_state_isSet; + }; } diff --git a/swagger/sdrangel/code/qt5/client/SWGDATVDemodSettings.cpp b/swagger/sdrangel/code/qt5/client/SWGDATVDemodSettings.cpp index fc3e5fa67..9a41dc9f8 100644 --- a/swagger/sdrangel/code/qt5/client/SWGDATVDemodSettings.cpp +++ b/swagger/sdrangel/code/qt5/client/SWGDATVDemodSettings.cpp @@ -98,6 +98,8 @@ SWGDATVDemodSettings::SWGDATVDemodSettings() { m_reverse_api_channel_index_isSet = false; channel_marker = nullptr; m_channel_marker_isSet = false; + rollup_state = nullptr; + m_rollup_state_isSet = false; } SWGDATVDemodSettings::~SWGDATVDemodSettings() { @@ -176,6 +178,8 @@ SWGDATVDemodSettings::init() { m_reverse_api_channel_index_isSet = false; channel_marker = new SWGChannelMarker(); m_channel_marker_isSet = false; + rollup_state = new SWGRollupState(); + m_rollup_state_isSet = false; } void @@ -227,6 +231,9 @@ SWGDATVDemodSettings::cleanup() { if(channel_marker != nullptr) { delete channel_marker; } + if(rollup_state != nullptr) { + delete rollup_state; + } } SWGDATVDemodSettings* @@ -310,6 +317,8 @@ SWGDATVDemodSettings::fromJsonObject(QJsonObject &pJson) { ::SWGSDRangel::setValue(&channel_marker, pJson["channelMarker"], "SWGChannelMarker", "SWGChannelMarker"); + ::SWGSDRangel::setValue(&rollup_state, pJson["rollupState"], "SWGRollupState", "SWGRollupState"); + } QString @@ -431,6 +440,9 @@ SWGDATVDemodSettings::asJsonObject() { if((channel_marker != nullptr) && (channel_marker->isSet())){ toJsonValue(QString("channelMarker"), channel_marker, obj, QString("SWGChannelMarker")); } + if((rollup_state != nullptr) && (rollup_state->isSet())){ + toJsonValue(QString("rollupState"), rollup_state, obj, QString("SWGRollupState")); + } return obj; } @@ -785,6 +797,16 @@ SWGDATVDemodSettings::setChannelMarker(SWGChannelMarker* channel_marker) { this->m_channel_marker_isSet = true; } +SWGRollupState* +SWGDATVDemodSettings::getRollupState() { + return rollup_state; +} +void +SWGDATVDemodSettings::setRollupState(SWGRollupState* rollup_state) { + this->rollup_state = rollup_state; + this->m_rollup_state_isSet = true; +} + bool SWGDATVDemodSettings::isSet(){ @@ -895,6 +917,9 @@ SWGDATVDemodSettings::isSet(){ if(channel_marker && channel_marker->isSet()){ isObjectUpdated = true; break; } + if(rollup_state && rollup_state->isSet()){ + isObjectUpdated = true; break; + } }while(false); return isObjectUpdated; } diff --git a/swagger/sdrangel/code/qt5/client/SWGDATVDemodSettings.h b/swagger/sdrangel/code/qt5/client/SWGDATVDemodSettings.h index 85cbb6384..238c2e005 100644 --- a/swagger/sdrangel/code/qt5/client/SWGDATVDemodSettings.h +++ b/swagger/sdrangel/code/qt5/client/SWGDATVDemodSettings.h @@ -23,6 +23,7 @@ #include "SWGChannelMarker.h" +#include "SWGRollupState.h" #include #include "SWGObject.h" @@ -148,6 +149,9 @@ public: SWGChannelMarker* getChannelMarker(); void setChannelMarker(SWGChannelMarker* channel_marker); + SWGRollupState* getRollupState(); + void setRollupState(SWGRollupState* rollup_state); + virtual bool isSet() override; @@ -257,6 +261,9 @@ private: SWGChannelMarker* channel_marker; bool m_channel_marker_isSet; + SWGRollupState* rollup_state; + bool m_rollup_state_isSet; + }; } diff --git a/swagger/sdrangel/code/qt5/client/SWGDATVModSettings.cpp b/swagger/sdrangel/code/qt5/client/SWGDATVModSettings.cpp index be7b6b0fd..09bf5f1d9 100644 --- a/swagger/sdrangel/code/qt5/client/SWGDATVModSettings.cpp +++ b/swagger/sdrangel/code/qt5/client/SWGDATVModSettings.cpp @@ -74,6 +74,8 @@ SWGDATVModSettings::SWGDATVModSettings() { m_reverse_api_channel_index_isSet = false; channel_marker = nullptr; m_channel_marker_isSet = false; + rollup_state = nullptr; + m_rollup_state_isSet = false; } SWGDATVModSettings::~SWGDATVModSettings() { @@ -128,6 +130,8 @@ SWGDATVModSettings::init() { m_reverse_api_channel_index_isSet = false; channel_marker = new SWGChannelMarker(); m_channel_marker_isSet = false; + rollup_state = new SWGRollupState(); + m_rollup_state_isSet = false; } void @@ -165,6 +169,9 @@ SWGDATVModSettings::cleanup() { if(channel_marker != nullptr) { delete channel_marker; } + if(rollup_state != nullptr) { + delete rollup_state; + } } SWGDATVModSettings* @@ -224,6 +231,8 @@ SWGDATVModSettings::fromJsonObject(QJsonObject &pJson) { ::SWGSDRangel::setValue(&channel_marker, pJson["channelMarker"], "SWGChannelMarker", "SWGChannelMarker"); + ::SWGSDRangel::setValue(&rollup_state, pJson["rollupState"], "SWGRollupState", "SWGRollupState"); + } QString @@ -309,6 +318,9 @@ SWGDATVModSettings::asJsonObject() { if((channel_marker != nullptr) && (channel_marker->isSet())){ toJsonValue(QString("channelMarker"), channel_marker, obj, QString("SWGChannelMarker")); } + if((rollup_state != nullptr) && (rollup_state->isSet())){ + toJsonValue(QString("rollupState"), rollup_state, obj, QString("SWGRollupState")); + } return obj; } @@ -543,6 +555,16 @@ SWGDATVModSettings::setChannelMarker(SWGChannelMarker* channel_marker) { this->m_channel_marker_isSet = true; } +SWGRollupState* +SWGDATVModSettings::getRollupState() { + return rollup_state; +} +void +SWGDATVModSettings::setRollupState(SWGRollupState* rollup_state) { + this->rollup_state = rollup_state; + this->m_rollup_state_isSet = true; +} + bool SWGDATVModSettings::isSet(){ @@ -617,6 +639,9 @@ SWGDATVModSettings::isSet(){ if(channel_marker && channel_marker->isSet()){ isObjectUpdated = true; break; } + if(rollup_state && rollup_state->isSet()){ + isObjectUpdated = true; break; + } }while(false); return isObjectUpdated; } diff --git a/swagger/sdrangel/code/qt5/client/SWGDATVModSettings.h b/swagger/sdrangel/code/qt5/client/SWGDATVModSettings.h index 491e80cfd..4a05e408d 100644 --- a/swagger/sdrangel/code/qt5/client/SWGDATVModSettings.h +++ b/swagger/sdrangel/code/qt5/client/SWGDATVModSettings.h @@ -23,6 +23,7 @@ #include "SWGChannelMarker.h" +#include "SWGRollupState.h" #include #include "SWGObject.h" @@ -112,6 +113,9 @@ public: SWGChannelMarker* getChannelMarker(); void setChannelMarker(SWGChannelMarker* channel_marker); + SWGRollupState* getRollupState(); + void setRollupState(SWGRollupState* rollup_state); + virtual bool isSet() override; @@ -185,6 +189,9 @@ private: SWGChannelMarker* channel_marker; bool m_channel_marker_isSet; + SWGRollupState* rollup_state; + bool m_rollup_state_isSet; + }; } diff --git a/swagger/sdrangel/code/qt5/client/SWGDSDDemodSettings.cpp b/swagger/sdrangel/code/qt5/client/SWGDSDDemodSettings.cpp index a0821d351..3ce987a4b 100644 --- a/swagger/sdrangel/code/qt5/client/SWGDSDDemodSettings.cpp +++ b/swagger/sdrangel/code/qt5/client/SWGDSDDemodSettings.cpp @@ -86,6 +86,8 @@ SWGDSDDemodSettings::SWGDSDDemodSettings() { m_reverse_api_channel_index_isSet = false; channel_marker = nullptr; m_channel_marker_isSet = false; + rollup_state = nullptr; + m_rollup_state_isSet = false; } SWGDSDDemodSettings::~SWGDSDDemodSettings() { @@ -152,6 +154,8 @@ SWGDSDDemodSettings::init() { m_reverse_api_channel_index_isSet = false; channel_marker = new SWGChannelMarker(); m_channel_marker_isSet = false; + rollup_state = new SWGRollupState(); + m_rollup_state_isSet = false; } void @@ -193,6 +197,9 @@ SWGDSDDemodSettings::cleanup() { if(channel_marker != nullptr) { delete channel_marker; } + if(rollup_state != nullptr) { + delete rollup_state; + } } SWGDSDDemodSettings* @@ -264,6 +271,8 @@ SWGDSDDemodSettings::fromJsonObject(QJsonObject &pJson) { ::SWGSDRangel::setValue(&channel_marker, pJson["channelMarker"], "SWGChannelMarker", "SWGChannelMarker"); + ::SWGSDRangel::setValue(&rollup_state, pJson["rollupState"], "SWGRollupState", "SWGRollupState"); + } QString @@ -367,6 +376,9 @@ SWGDSDDemodSettings::asJsonObject() { if((channel_marker != nullptr) && (channel_marker->isSet())){ toJsonValue(QString("channelMarker"), channel_marker, obj, QString("SWGChannelMarker")); } + if((rollup_state != nullptr) && (rollup_state->isSet())){ + toJsonValue(QString("rollupState"), rollup_state, obj, QString("SWGRollupState")); + } return obj; } @@ -661,6 +673,16 @@ SWGDSDDemodSettings::setChannelMarker(SWGChannelMarker* channel_marker) { this->m_channel_marker_isSet = true; } +SWGRollupState* +SWGDSDDemodSettings::getRollupState() { + return rollup_state; +} +void +SWGDSDDemodSettings::setRollupState(SWGRollupState* rollup_state) { + this->rollup_state = rollup_state; + this->m_rollup_state_isSet = true; +} + bool SWGDSDDemodSettings::isSet(){ @@ -753,6 +775,9 @@ SWGDSDDemodSettings::isSet(){ if(channel_marker && channel_marker->isSet()){ isObjectUpdated = true; break; } + if(rollup_state && rollup_state->isSet()){ + isObjectUpdated = true; break; + } }while(false); return isObjectUpdated; } diff --git a/swagger/sdrangel/code/qt5/client/SWGDSDDemodSettings.h b/swagger/sdrangel/code/qt5/client/SWGDSDDemodSettings.h index 017010b66..0d14d9ee6 100644 --- a/swagger/sdrangel/code/qt5/client/SWGDSDDemodSettings.h +++ b/swagger/sdrangel/code/qt5/client/SWGDSDDemodSettings.h @@ -23,6 +23,7 @@ #include "SWGChannelMarker.h" +#include "SWGRollupState.h" #include #include "SWGObject.h" @@ -130,6 +131,9 @@ public: SWGChannelMarker* getChannelMarker(); void setChannelMarker(SWGChannelMarker* channel_marker); + SWGRollupState* getRollupState(); + void setRollupState(SWGRollupState* rollup_state); + virtual bool isSet() override; @@ -221,6 +225,9 @@ private: SWGChannelMarker* channel_marker; bool m_channel_marker_isSet; + SWGRollupState* rollup_state; + bool m_rollup_state_isSet; + }; } diff --git a/swagger/sdrangel/code/qt5/client/SWGDemodAnalyzerSettings.cpp b/swagger/sdrangel/code/qt5/client/SWGDemodAnalyzerSettings.cpp index 007d7fbe4..737c562c6 100644 --- a/swagger/sdrangel/code/qt5/client/SWGDemodAnalyzerSettings.cpp +++ b/swagger/sdrangel/code/qt5/client/SWGDemodAnalyzerSettings.cpp @@ -48,6 +48,8 @@ SWGDemodAnalyzerSettings::SWGDemodAnalyzerSettings() { m_spectrum_config_isSet = false; scope_config = nullptr; m_scope_config_isSet = false; + rollup_state = nullptr; + m_rollup_state_isSet = false; } SWGDemodAnalyzerSettings::~SWGDemodAnalyzerSettings() { @@ -76,6 +78,8 @@ SWGDemodAnalyzerSettings::init() { m_spectrum_config_isSet = false; scope_config = new SWGGLScope(); m_scope_config_isSet = false; + rollup_state = new SWGRollupState(); + m_rollup_state_isSet = false; } void @@ -98,6 +102,9 @@ SWGDemodAnalyzerSettings::cleanup() { if(scope_config != nullptr) { delete scope_config; } + if(rollup_state != nullptr) { + delete rollup_state; + } } SWGDemodAnalyzerSettings* @@ -131,6 +138,8 @@ SWGDemodAnalyzerSettings::fromJsonObject(QJsonObject &pJson) { ::SWGSDRangel::setValue(&scope_config, pJson["scopeConfig"], "SWGGLScope", "SWGGLScope"); + ::SWGSDRangel::setValue(&rollup_state, pJson["rollupState"], "SWGRollupState", "SWGRollupState"); + } QString @@ -177,6 +186,9 @@ SWGDemodAnalyzerSettings::asJsonObject() { if((scope_config != nullptr) && (scope_config->isSet())){ toJsonValue(QString("scopeConfig"), scope_config, obj, QString("SWGGLScope")); } + if((rollup_state != nullptr) && (rollup_state->isSet())){ + toJsonValue(QString("rollupState"), rollup_state, obj, QString("SWGRollupState")); + } return obj; } @@ -281,6 +293,16 @@ SWGDemodAnalyzerSettings::setScopeConfig(SWGGLScope* scope_config) { this->m_scope_config_isSet = true; } +SWGRollupState* +SWGDemodAnalyzerSettings::getRollupState() { + return rollup_state; +} +void +SWGDemodAnalyzerSettings::setRollupState(SWGRollupState* rollup_state) { + this->rollup_state = rollup_state; + this->m_rollup_state_isSet = true; +} + bool SWGDemodAnalyzerSettings::isSet(){ @@ -316,6 +338,9 @@ SWGDemodAnalyzerSettings::isSet(){ if(scope_config && scope_config->isSet()){ isObjectUpdated = true; break; } + if(rollup_state && rollup_state->isSet()){ + isObjectUpdated = true; break; + } }while(false); return isObjectUpdated; } diff --git a/swagger/sdrangel/code/qt5/client/SWGDemodAnalyzerSettings.h b/swagger/sdrangel/code/qt5/client/SWGDemodAnalyzerSettings.h index fa25bbe85..a98d66e8a 100644 --- a/swagger/sdrangel/code/qt5/client/SWGDemodAnalyzerSettings.h +++ b/swagger/sdrangel/code/qt5/client/SWGDemodAnalyzerSettings.h @@ -24,6 +24,7 @@ #include "SWGGLScope.h" #include "SWGGLSpectrum.h" +#include "SWGRollupState.h" #include #include "SWGObject.h" @@ -74,6 +75,9 @@ public: SWGGLScope* getScopeConfig(); void setScopeConfig(SWGGLScope* scope_config); + SWGRollupState* getRollupState(); + void setRollupState(SWGRollupState* rollup_state); + virtual bool isSet() override; @@ -108,6 +112,9 @@ private: SWGGLScope* scope_config; bool m_scope_config_isSet; + SWGRollupState* rollup_state; + bool m_rollup_state_isSet; + }; } diff --git a/swagger/sdrangel/code/qt5/client/SWGFileSinkSettings.cpp b/swagger/sdrangel/code/qt5/client/SWGFileSinkSettings.cpp index 5d9671f4d..47b567d2a 100644 --- a/swagger/sdrangel/code/qt5/client/SWGFileSinkSettings.cpp +++ b/swagger/sdrangel/code/qt5/client/SWGFileSinkSettings.cpp @@ -64,6 +64,8 @@ SWGFileSinkSettings::SWGFileSinkSettings() { m_spectrum_config_isSet = false; channel_marker = nullptr; m_channel_marker_isSet = false; + rollup_state = nullptr; + m_rollup_state_isSet = false; } SWGFileSinkSettings::~SWGFileSinkSettings() { @@ -108,6 +110,8 @@ SWGFileSinkSettings::init() { m_spectrum_config_isSet = false; channel_marker = new SWGChannelMarker(); m_channel_marker_isSet = false; + rollup_state = new SWGRollupState(); + m_rollup_state_isSet = false; } void @@ -140,6 +144,9 @@ SWGFileSinkSettings::cleanup() { if(channel_marker != nullptr) { delete channel_marker; } + if(rollup_state != nullptr) { + delete rollup_state; + } } SWGFileSinkSettings* @@ -189,6 +196,8 @@ SWGFileSinkSettings::fromJsonObject(QJsonObject &pJson) { ::SWGSDRangel::setValue(&channel_marker, pJson["channelMarker"], "SWGChannelMarker", "SWGChannelMarker"); + ::SWGSDRangel::setValue(&rollup_state, pJson["rollupState"], "SWGRollupState", "SWGRollupState"); + } QString @@ -259,6 +268,9 @@ SWGFileSinkSettings::asJsonObject() { if((channel_marker != nullptr) && (channel_marker->isSet())){ toJsonValue(QString("channelMarker"), channel_marker, obj, QString("SWGChannelMarker")); } + if((rollup_state != nullptr) && (rollup_state->isSet())){ + toJsonValue(QString("rollupState"), rollup_state, obj, QString("SWGRollupState")); + } return obj; } @@ -443,6 +455,16 @@ SWGFileSinkSettings::setChannelMarker(SWGChannelMarker* channel_marker) { this->m_channel_marker_isSet = true; } +SWGRollupState* +SWGFileSinkSettings::getRollupState() { + return rollup_state; +} +void +SWGFileSinkSettings::setRollupState(SWGRollupState* rollup_state) { + this->rollup_state = rollup_state; + this->m_rollup_state_isSet = true; +} + bool SWGFileSinkSettings::isSet(){ @@ -502,6 +524,9 @@ SWGFileSinkSettings::isSet(){ if(channel_marker && channel_marker->isSet()){ isObjectUpdated = true; break; } + if(rollup_state && rollup_state->isSet()){ + isObjectUpdated = true; break; + } }while(false); return isObjectUpdated; } diff --git a/swagger/sdrangel/code/qt5/client/SWGFileSinkSettings.h b/swagger/sdrangel/code/qt5/client/SWGFileSinkSettings.h index 9e0e0ec84..6ca87f8f7 100644 --- a/swagger/sdrangel/code/qt5/client/SWGFileSinkSettings.h +++ b/swagger/sdrangel/code/qt5/client/SWGFileSinkSettings.h @@ -24,6 +24,7 @@ #include "SWGChannelMarker.h" #include "SWGGLSpectrum.h" +#include "SWGRollupState.h" #include #include "SWGObject.h" @@ -98,6 +99,9 @@ public: SWGChannelMarker* getChannelMarker(); void setChannelMarker(SWGChannelMarker* channel_marker); + SWGRollupState* getRollupState(); + void setRollupState(SWGRollupState* rollup_state); + virtual bool isSet() override; @@ -156,6 +160,9 @@ private: SWGChannelMarker* channel_marker; bool m_channel_marker_isSet; + SWGRollupState* rollup_state; + bool m_rollup_state_isSet; + }; } diff --git a/swagger/sdrangel/code/qt5/client/SWGFileSourceSettings.cpp b/swagger/sdrangel/code/qt5/client/SWGFileSourceSettings.cpp index 662dda866..de7e29363 100644 --- a/swagger/sdrangel/code/qt5/client/SWGFileSourceSettings.cpp +++ b/swagger/sdrangel/code/qt5/client/SWGFileSourceSettings.cpp @@ -56,6 +56,8 @@ SWGFileSourceSettings::SWGFileSourceSettings() { m_reverse_api_channel_index_isSet = false; channel_marker = nullptr; m_channel_marker_isSet = false; + rollup_state = nullptr; + m_rollup_state_isSet = false; } SWGFileSourceSettings::~SWGFileSourceSettings() { @@ -92,6 +94,8 @@ SWGFileSourceSettings::init() { m_reverse_api_channel_index_isSet = false; channel_marker = new SWGChannelMarker(); m_channel_marker_isSet = false; + rollup_state = new SWGRollupState(); + m_rollup_state_isSet = false; } void @@ -118,6 +122,9 @@ SWGFileSourceSettings::cleanup() { if(channel_marker != nullptr) { delete channel_marker; } + if(rollup_state != nullptr) { + delete rollup_state; + } } SWGFileSourceSettings* @@ -159,6 +166,8 @@ SWGFileSourceSettings::fromJsonObject(QJsonObject &pJson) { ::SWGSDRangel::setValue(&channel_marker, pJson["channelMarker"], "SWGChannelMarker", "SWGChannelMarker"); + ::SWGSDRangel::setValue(&rollup_state, pJson["rollupState"], "SWGRollupState", "SWGRollupState"); + } QString @@ -217,6 +226,9 @@ SWGFileSourceSettings::asJsonObject() { if((channel_marker != nullptr) && (channel_marker->isSet())){ toJsonValue(QString("channelMarker"), channel_marker, obj, QString("SWGChannelMarker")); } + if((rollup_state != nullptr) && (rollup_state->isSet())){ + toJsonValue(QString("rollupState"), rollup_state, obj, QString("SWGRollupState")); + } return obj; } @@ -361,6 +373,16 @@ SWGFileSourceSettings::setChannelMarker(SWGChannelMarker* channel_marker) { this->m_channel_marker_isSet = true; } +SWGRollupState* +SWGFileSourceSettings::getRollupState() { + return rollup_state; +} +void +SWGFileSourceSettings::setRollupState(SWGRollupState* rollup_state) { + this->rollup_state = rollup_state; + this->m_rollup_state_isSet = true; +} + bool SWGFileSourceSettings::isSet(){ @@ -408,6 +430,9 @@ SWGFileSourceSettings::isSet(){ if(channel_marker && channel_marker->isSet()){ isObjectUpdated = true; break; } + if(rollup_state && rollup_state->isSet()){ + isObjectUpdated = true; break; + } }while(false); return isObjectUpdated; } diff --git a/swagger/sdrangel/code/qt5/client/SWGFileSourceSettings.h b/swagger/sdrangel/code/qt5/client/SWGFileSourceSettings.h index 79a14f45c..5b2b033a8 100644 --- a/swagger/sdrangel/code/qt5/client/SWGFileSourceSettings.h +++ b/swagger/sdrangel/code/qt5/client/SWGFileSourceSettings.h @@ -23,6 +23,7 @@ #include "SWGChannelMarker.h" +#include "SWGRollupState.h" #include #include "SWGObject.h" @@ -85,6 +86,9 @@ public: SWGChannelMarker* getChannelMarker(); void setChannelMarker(SWGChannelMarker* channel_marker); + SWGRollupState* getRollupState(); + void setRollupState(SWGRollupState* rollup_state); + virtual bool isSet() override; @@ -131,6 +135,9 @@ private: SWGChannelMarker* channel_marker; bool m_channel_marker_isSet; + SWGRollupState* rollup_state; + bool m_rollup_state_isSet; + }; } diff --git a/swagger/sdrangel/code/qt5/client/SWGFreeDVDemodSettings.cpp b/swagger/sdrangel/code/qt5/client/SWGFreeDVDemodSettings.cpp index 7c5af5451..1d9364c4f 100644 --- a/swagger/sdrangel/code/qt5/client/SWGFreeDVDemodSettings.cpp +++ b/swagger/sdrangel/code/qt5/client/SWGFreeDVDemodSettings.cpp @@ -64,6 +64,8 @@ SWGFreeDVDemodSettings::SWGFreeDVDemodSettings() { m_spectrum_config_isSet = false; channel_marker = nullptr; m_channel_marker_isSet = false; + rollup_state = nullptr; + m_rollup_state_isSet = false; } SWGFreeDVDemodSettings::~SWGFreeDVDemodSettings() { @@ -108,6 +110,8 @@ SWGFreeDVDemodSettings::init() { m_spectrum_config_isSet = false; channel_marker = new SWGChannelMarker(); m_channel_marker_isSet = false; + rollup_state = new SWGRollupState(); + m_rollup_state_isSet = false; } void @@ -140,6 +144,9 @@ SWGFreeDVDemodSettings::cleanup() { if(channel_marker != nullptr) { delete channel_marker; } + if(rollup_state != nullptr) { + delete rollup_state; + } } SWGFreeDVDemodSettings* @@ -189,6 +196,8 @@ SWGFreeDVDemodSettings::fromJsonObject(QJsonObject &pJson) { ::SWGSDRangel::setValue(&channel_marker, pJson["channelMarker"], "SWGChannelMarker", "SWGChannelMarker"); + ::SWGSDRangel::setValue(&rollup_state, pJson["rollupState"], "SWGRollupState", "SWGRollupState"); + } QString @@ -259,6 +268,9 @@ SWGFreeDVDemodSettings::asJsonObject() { if((channel_marker != nullptr) && (channel_marker->isSet())){ toJsonValue(QString("channelMarker"), channel_marker, obj, QString("SWGChannelMarker")); } + if((rollup_state != nullptr) && (rollup_state->isSet())){ + toJsonValue(QString("rollupState"), rollup_state, obj, QString("SWGRollupState")); + } return obj; } @@ -443,6 +455,16 @@ SWGFreeDVDemodSettings::setChannelMarker(SWGChannelMarker* channel_marker) { this->m_channel_marker_isSet = true; } +SWGRollupState* +SWGFreeDVDemodSettings::getRollupState() { + return rollup_state; +} +void +SWGFreeDVDemodSettings::setRollupState(SWGRollupState* rollup_state) { + this->rollup_state = rollup_state; + this->m_rollup_state_isSet = true; +} + bool SWGFreeDVDemodSettings::isSet(){ @@ -502,6 +524,9 @@ SWGFreeDVDemodSettings::isSet(){ if(channel_marker && channel_marker->isSet()){ isObjectUpdated = true; break; } + if(rollup_state && rollup_state->isSet()){ + isObjectUpdated = true; break; + } }while(false); return isObjectUpdated; } diff --git a/swagger/sdrangel/code/qt5/client/SWGFreeDVDemodSettings.h b/swagger/sdrangel/code/qt5/client/SWGFreeDVDemodSettings.h index 1a07ea223..7bc23e8e4 100644 --- a/swagger/sdrangel/code/qt5/client/SWGFreeDVDemodSettings.h +++ b/swagger/sdrangel/code/qt5/client/SWGFreeDVDemodSettings.h @@ -24,6 +24,7 @@ #include "SWGChannelMarker.h" #include "SWGGLSpectrum.h" +#include "SWGRollupState.h" #include #include "SWGObject.h" @@ -98,6 +99,9 @@ public: SWGChannelMarker* getChannelMarker(); void setChannelMarker(SWGChannelMarker* channel_marker); + SWGRollupState* getRollupState(); + void setRollupState(SWGRollupState* rollup_state); + virtual bool isSet() override; @@ -156,6 +160,9 @@ private: SWGChannelMarker* channel_marker; bool m_channel_marker_isSet; + SWGRollupState* rollup_state; + bool m_rollup_state_isSet; + }; } diff --git a/swagger/sdrangel/code/qt5/client/SWGFreeDVModSettings.cpp b/swagger/sdrangel/code/qt5/client/SWGFreeDVModSettings.cpp index 6473fb9fd..8a62f7acb 100644 --- a/swagger/sdrangel/code/qt5/client/SWGFreeDVModSettings.cpp +++ b/swagger/sdrangel/code/qt5/client/SWGFreeDVModSettings.cpp @@ -70,6 +70,8 @@ SWGFreeDVModSettings::SWGFreeDVModSettings() { m_spectrum_config_isSet = false; channel_marker = nullptr; m_channel_marker_isSet = false; + rollup_state = nullptr; + m_rollup_state_isSet = false; } SWGFreeDVModSettings::~SWGFreeDVModSettings() { @@ -120,6 +122,8 @@ SWGFreeDVModSettings::init() { m_spectrum_config_isSet = false; channel_marker = new SWGChannelMarker(); m_channel_marker_isSet = false; + rollup_state = new SWGRollupState(); + m_rollup_state_isSet = false; } void @@ -157,6 +161,9 @@ SWGFreeDVModSettings::cleanup() { if(channel_marker != nullptr) { delete channel_marker; } + if(rollup_state != nullptr) { + delete rollup_state; + } } SWGFreeDVModSettings* @@ -212,6 +219,8 @@ SWGFreeDVModSettings::fromJsonObject(QJsonObject &pJson) { ::SWGSDRangel::setValue(&channel_marker, pJson["channelMarker"], "SWGChannelMarker", "SWGChannelMarker"); + ::SWGSDRangel::setValue(&rollup_state, pJson["rollupState"], "SWGRollupState", "SWGRollupState"); + } QString @@ -291,6 +300,9 @@ SWGFreeDVModSettings::asJsonObject() { if((channel_marker != nullptr) && (channel_marker->isSet())){ toJsonValue(QString("channelMarker"), channel_marker, obj, QString("SWGChannelMarker")); } + if((rollup_state != nullptr) && (rollup_state->isSet())){ + toJsonValue(QString("rollupState"), rollup_state, obj, QString("SWGRollupState")); + } return obj; } @@ -505,6 +517,16 @@ SWGFreeDVModSettings::setChannelMarker(SWGChannelMarker* channel_marker) { this->m_channel_marker_isSet = true; } +SWGRollupState* +SWGFreeDVModSettings::getRollupState() { + return rollup_state; +} +void +SWGFreeDVModSettings::setRollupState(SWGRollupState* rollup_state) { + this->rollup_state = rollup_state; + this->m_rollup_state_isSet = true; +} + bool SWGFreeDVModSettings::isSet(){ @@ -573,6 +595,9 @@ SWGFreeDVModSettings::isSet(){ if(channel_marker && channel_marker->isSet()){ isObjectUpdated = true; break; } + if(rollup_state && rollup_state->isSet()){ + isObjectUpdated = true; break; + } }while(false); return isObjectUpdated; } diff --git a/swagger/sdrangel/code/qt5/client/SWGFreeDVModSettings.h b/swagger/sdrangel/code/qt5/client/SWGFreeDVModSettings.h index e31f12640..c46b6b208 100644 --- a/swagger/sdrangel/code/qt5/client/SWGFreeDVModSettings.h +++ b/swagger/sdrangel/code/qt5/client/SWGFreeDVModSettings.h @@ -25,6 +25,7 @@ #include "SWGCWKeyerSettings.h" #include "SWGChannelMarker.h" #include "SWGGLSpectrum.h" +#include "SWGRollupState.h" #include #include "SWGObject.h" @@ -108,6 +109,9 @@ public: SWGChannelMarker* getChannelMarker(); void setChannelMarker(SWGChannelMarker* channel_marker); + SWGRollupState* getRollupState(); + void setRollupState(SWGRollupState* rollup_state); + virtual bool isSet() override; @@ -175,6 +179,9 @@ private: SWGChannelMarker* channel_marker; bool m_channel_marker_isSet; + SWGRollupState* rollup_state; + bool m_rollup_state_isSet; + }; } diff --git a/swagger/sdrangel/code/qt5/client/SWGFreqTrackerSettings.cpp b/swagger/sdrangel/code/qt5/client/SWGFreqTrackerSettings.cpp index fa9dad8ec..993d05827 100644 --- a/swagger/sdrangel/code/qt5/client/SWGFreqTrackerSettings.cpp +++ b/swagger/sdrangel/code/qt5/client/SWGFreqTrackerSettings.cpp @@ -72,6 +72,8 @@ SWGFreqTrackerSettings::SWGFreqTrackerSettings() { m_spectrum_config_isSet = false; channel_marker = nullptr; m_channel_marker_isSet = false; + rollup_state = nullptr; + m_rollup_state_isSet = false; } SWGFreqTrackerSettings::~SWGFreqTrackerSettings() { @@ -124,6 +126,8 @@ SWGFreqTrackerSettings::init() { m_spectrum_config_isSet = false; channel_marker = new SWGChannelMarker(); m_channel_marker_isSet = false; + rollup_state = new SWGRollupState(); + m_rollup_state_isSet = false; } void @@ -158,6 +162,9 @@ SWGFreqTrackerSettings::cleanup() { if(channel_marker != nullptr) { delete channel_marker; } + if(rollup_state != nullptr) { + delete rollup_state; + } } SWGFreqTrackerSettings* @@ -215,6 +222,8 @@ SWGFreqTrackerSettings::fromJsonObject(QJsonObject &pJson) { ::SWGSDRangel::setValue(&channel_marker, pJson["channelMarker"], "SWGChannelMarker", "SWGChannelMarker"); + ::SWGSDRangel::setValue(&rollup_state, pJson["rollupState"], "SWGRollupState", "SWGRollupState"); + } QString @@ -297,6 +306,9 @@ SWGFreqTrackerSettings::asJsonObject() { if((channel_marker != nullptr) && (channel_marker->isSet())){ toJsonValue(QString("channelMarker"), channel_marker, obj, QString("SWGChannelMarker")); } + if((rollup_state != nullptr) && (rollup_state->isSet())){ + toJsonValue(QString("rollupState"), rollup_state, obj, QString("SWGRollupState")); + } return obj; } @@ -521,6 +533,16 @@ SWGFreqTrackerSettings::setChannelMarker(SWGChannelMarker* channel_marker) { this->m_channel_marker_isSet = true; } +SWGRollupState* +SWGFreqTrackerSettings::getRollupState() { + return rollup_state; +} +void +SWGFreqTrackerSettings::setRollupState(SWGRollupState* rollup_state) { + this->rollup_state = rollup_state; + this->m_rollup_state_isSet = true; +} + bool SWGFreqTrackerSettings::isSet(){ @@ -592,6 +614,9 @@ SWGFreqTrackerSettings::isSet(){ if(channel_marker && channel_marker->isSet()){ isObjectUpdated = true; break; } + if(rollup_state && rollup_state->isSet()){ + isObjectUpdated = true; break; + } }while(false); return isObjectUpdated; } diff --git a/swagger/sdrangel/code/qt5/client/SWGFreqTrackerSettings.h b/swagger/sdrangel/code/qt5/client/SWGFreqTrackerSettings.h index 87965c3c4..c03435eeb 100644 --- a/swagger/sdrangel/code/qt5/client/SWGFreqTrackerSettings.h +++ b/swagger/sdrangel/code/qt5/client/SWGFreqTrackerSettings.h @@ -24,6 +24,7 @@ #include "SWGChannelMarker.h" #include "SWGGLSpectrum.h" +#include "SWGRollupState.h" #include #include "SWGObject.h" @@ -110,6 +111,9 @@ public: SWGChannelMarker* getChannelMarker(); void setChannelMarker(SWGChannelMarker* channel_marker); + SWGRollupState* getRollupState(); + void setRollupState(SWGRollupState* rollup_state); + virtual bool isSet() override; @@ -180,6 +184,9 @@ private: SWGChannelMarker* channel_marker; bool m_channel_marker_isSet; + SWGRollupState* rollup_state; + bool m_rollup_state_isSet; + }; } diff --git a/swagger/sdrangel/code/qt5/client/SWGGS232ControllerSettings.cpp b/swagger/sdrangel/code/qt5/client/SWGGS232ControllerSettings.cpp index 61b6c901f..1b096b00c 100644 --- a/swagger/sdrangel/code/qt5/client/SWGGS232ControllerSettings.cpp +++ b/swagger/sdrangel/code/qt5/client/SWGGS232ControllerSettings.cpp @@ -74,6 +74,8 @@ SWGGS232ControllerSettings::SWGGS232ControllerSettings() { m_reverse_api_feature_set_index_isSet = false; reverse_api_feature_index = 0; m_reverse_api_feature_index_isSet = false; + rollup_state = nullptr; + m_rollup_state_isSet = false; } SWGGS232ControllerSettings::~SWGGS232ControllerSettings() { @@ -128,6 +130,8 @@ SWGGS232ControllerSettings::init() { m_reverse_api_feature_set_index_isSet = false; reverse_api_feature_index = 0; m_reverse_api_feature_index_isSet = false; + rollup_state = new SWGRollupState(); + m_rollup_state_isSet = false; } void @@ -165,6 +169,9 @@ SWGGS232ControllerSettings::cleanup() { + if(rollup_state != nullptr) { + delete rollup_state; + } } SWGGS232ControllerSettings* @@ -224,6 +231,8 @@ SWGGS232ControllerSettings::fromJsonObject(QJsonObject &pJson) { ::SWGSDRangel::setValue(&reverse_api_feature_index, pJson["reverseAPIFeatureIndex"], "qint32", ""); + ::SWGSDRangel::setValue(&rollup_state, pJson["rollupState"], "SWGRollupState", "SWGRollupState"); + } QString @@ -309,6 +318,9 @@ SWGGS232ControllerSettings::asJsonObject() { if(m_reverse_api_feature_index_isSet){ obj->insert("reverseAPIFeatureIndex", QJsonValue(reverse_api_feature_index)); } + if((rollup_state != nullptr) && (rollup_state->isSet())){ + toJsonValue(QString("rollupState"), rollup_state, obj, QString("SWGRollupState")); + } return obj; } @@ -543,6 +555,16 @@ SWGGS232ControllerSettings::setReverseApiFeatureIndex(qint32 reverse_api_feature this->m_reverse_api_feature_index_isSet = true; } +SWGRollupState* +SWGGS232ControllerSettings::getRollupState() { + return rollup_state; +} +void +SWGGS232ControllerSettings::setRollupState(SWGRollupState* rollup_state) { + this->rollup_state = rollup_state; + this->m_rollup_state_isSet = true; +} + bool SWGGS232ControllerSettings::isSet(){ @@ -617,6 +639,9 @@ SWGGS232ControllerSettings::isSet(){ if(m_reverse_api_feature_index_isSet){ isObjectUpdated = true; break; } + if(rollup_state && rollup_state->isSet()){ + isObjectUpdated = true; break; + } }while(false); return isObjectUpdated; } diff --git a/swagger/sdrangel/code/qt5/client/SWGGS232ControllerSettings.h b/swagger/sdrangel/code/qt5/client/SWGGS232ControllerSettings.h index 4c5a47e66..17b782cdf 100644 --- a/swagger/sdrangel/code/qt5/client/SWGGS232ControllerSettings.h +++ b/swagger/sdrangel/code/qt5/client/SWGGS232ControllerSettings.h @@ -22,6 +22,7 @@ #include +#include "SWGRollupState.h" #include #include "SWGObject.h" @@ -111,6 +112,9 @@ public: qint32 getReverseApiFeatureIndex(); void setReverseApiFeatureIndex(qint32 reverse_api_feature_index); + SWGRollupState* getRollupState(); + void setRollupState(SWGRollupState* rollup_state); + virtual bool isSet() override; @@ -184,6 +188,9 @@ private: qint32 reverse_api_feature_index; bool m_reverse_api_feature_index_isSet; + SWGRollupState* rollup_state; + bool m_rollup_state_isSet; + }; } diff --git a/swagger/sdrangel/code/qt5/client/SWGIEEE_802_15_4_ModSettings.cpp b/swagger/sdrangel/code/qt5/client/SWGIEEE_802_15_4_ModSettings.cpp index b2b980aab..d9e9313ff 100644 --- a/swagger/sdrangel/code/qt5/client/SWGIEEE_802_15_4_ModSettings.cpp +++ b/swagger/sdrangel/code/qt5/client/SWGIEEE_802_15_4_ModSettings.cpp @@ -102,6 +102,8 @@ SWGIEEE_802_15_4_ModSettings::SWGIEEE_802_15_4_ModSettings() { m_udp_port_isSet = false; channel_marker = nullptr; m_channel_marker_isSet = false; + rollup_state = nullptr; + m_rollup_state_isSet = false; } SWGIEEE_802_15_4_ModSettings::~SWGIEEE_802_15_4_ModSettings() { @@ -184,6 +186,8 @@ SWGIEEE_802_15_4_ModSettings::init() { m_udp_port_isSet = false; channel_marker = new SWGChannelMarker(); m_channel_marker_isSet = false; + rollup_state = new SWGRollupState(); + m_rollup_state_isSet = false; } void @@ -235,6 +239,9 @@ SWGIEEE_802_15_4_ModSettings::cleanup() { if(channel_marker != nullptr) { delete channel_marker; } + if(rollup_state != nullptr) { + delete rollup_state; + } } SWGIEEE_802_15_4_ModSettings* @@ -322,6 +329,8 @@ SWGIEEE_802_15_4_ModSettings::fromJsonObject(QJsonObject &pJson) { ::SWGSDRangel::setValue(&channel_marker, pJson["channelMarker"], "SWGChannelMarker", "SWGChannelMarker"); + ::SWGSDRangel::setValue(&rollup_state, pJson["rollupState"], "SWGRollupState", "SWGRollupState"); + } QString @@ -449,6 +458,9 @@ SWGIEEE_802_15_4_ModSettings::asJsonObject() { if((channel_marker != nullptr) && (channel_marker->isSet())){ toJsonValue(QString("channelMarker"), channel_marker, obj, QString("SWGChannelMarker")); } + if((rollup_state != nullptr) && (rollup_state->isSet())){ + toJsonValue(QString("rollupState"), rollup_state, obj, QString("SWGRollupState")); + } return obj; } @@ -823,6 +835,16 @@ SWGIEEE_802_15_4_ModSettings::setChannelMarker(SWGChannelMarker* channel_marker) this->m_channel_marker_isSet = true; } +SWGRollupState* +SWGIEEE_802_15_4_ModSettings::getRollupState() { + return rollup_state; +} +void +SWGIEEE_802_15_4_ModSettings::setRollupState(SWGRollupState* rollup_state) { + this->rollup_state = rollup_state; + this->m_rollup_state_isSet = true; +} + bool SWGIEEE_802_15_4_ModSettings::isSet(){ @@ -939,6 +961,9 @@ SWGIEEE_802_15_4_ModSettings::isSet(){ if(channel_marker && channel_marker->isSet()){ isObjectUpdated = true; break; } + if(rollup_state && rollup_state->isSet()){ + isObjectUpdated = true; break; + } }while(false); return isObjectUpdated; } diff --git a/swagger/sdrangel/code/qt5/client/SWGIEEE_802_15_4_ModSettings.h b/swagger/sdrangel/code/qt5/client/SWGIEEE_802_15_4_ModSettings.h index a912b16b7..9649b8d22 100644 --- a/swagger/sdrangel/code/qt5/client/SWGIEEE_802_15_4_ModSettings.h +++ b/swagger/sdrangel/code/qt5/client/SWGIEEE_802_15_4_ModSettings.h @@ -23,6 +23,7 @@ #include "SWGChannelMarker.h" +#include "SWGRollupState.h" #include #include "SWGObject.h" @@ -154,6 +155,9 @@ public: SWGChannelMarker* getChannelMarker(); void setChannelMarker(SWGChannelMarker* channel_marker); + SWGRollupState* getRollupState(); + void setRollupState(SWGRollupState* rollup_state); + virtual bool isSet() override; @@ -269,6 +273,9 @@ private: SWGChannelMarker* channel_marker; bool m_channel_marker_isSet; + SWGRollupState* rollup_state; + bool m_rollup_state_isSet; + }; } diff --git a/swagger/sdrangel/code/qt5/client/SWGInterferometerSettings.cpp b/swagger/sdrangel/code/qt5/client/SWGInterferometerSettings.cpp index 48a2d7317..de528e94e 100644 --- a/swagger/sdrangel/code/qt5/client/SWGInterferometerSettings.cpp +++ b/swagger/sdrangel/code/qt5/client/SWGInterferometerSettings.cpp @@ -54,6 +54,8 @@ SWGInterferometerSettings::SWGInterferometerSettings() { m_scope_config_isSet = false; channel_marker = nullptr; m_channel_marker_isSet = false; + rollup_state = nullptr; + m_rollup_state_isSet = false; } SWGInterferometerSettings::~SWGInterferometerSettings() { @@ -88,6 +90,8 @@ SWGInterferometerSettings::init() { m_scope_config_isSet = false; channel_marker = new SWGChannelMarker(); m_channel_marker_isSet = false; + rollup_state = new SWGRollupState(); + m_rollup_state_isSet = false; } void @@ -115,6 +119,9 @@ SWGInterferometerSettings::cleanup() { if(channel_marker != nullptr) { delete channel_marker; } + if(rollup_state != nullptr) { + delete rollup_state; + } } SWGInterferometerSettings* @@ -154,6 +161,8 @@ SWGInterferometerSettings::fromJsonObject(QJsonObject &pJson) { ::SWGSDRangel::setValue(&channel_marker, pJson["channelMarker"], "SWGChannelMarker", "SWGChannelMarker"); + ::SWGSDRangel::setValue(&rollup_state, pJson["rollupState"], "SWGRollupState", "SWGRollupState"); + } QString @@ -209,6 +218,9 @@ SWGInterferometerSettings::asJsonObject() { if((channel_marker != nullptr) && (channel_marker->isSet())){ toJsonValue(QString("channelMarker"), channel_marker, obj, QString("SWGChannelMarker")); } + if((rollup_state != nullptr) && (rollup_state->isSet())){ + toJsonValue(QString("rollupState"), rollup_state, obj, QString("SWGRollupState")); + } return obj; } @@ -343,6 +355,16 @@ SWGInterferometerSettings::setChannelMarker(SWGChannelMarker* channel_marker) { this->m_channel_marker_isSet = true; } +SWGRollupState* +SWGInterferometerSettings::getRollupState() { + return rollup_state; +} +void +SWGInterferometerSettings::setRollupState(SWGRollupState* rollup_state) { + this->rollup_state = rollup_state; + this->m_rollup_state_isSet = true; +} + bool SWGInterferometerSettings::isSet(){ @@ -387,6 +409,9 @@ SWGInterferometerSettings::isSet(){ if(channel_marker && channel_marker->isSet()){ isObjectUpdated = true; break; } + if(rollup_state && rollup_state->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 df89c48ea..98d054692 100644 --- a/swagger/sdrangel/code/qt5/client/SWGInterferometerSettings.h +++ b/swagger/sdrangel/code/qt5/client/SWGInterferometerSettings.h @@ -25,6 +25,7 @@ #include "SWGChannelMarker.h" #include "SWGGLScope.h" #include "SWGGLSpectrum.h" +#include "SWGRollupState.h" #include #include "SWGObject.h" @@ -84,6 +85,9 @@ public: SWGChannelMarker* getChannelMarker(); void setChannelMarker(SWGChannelMarker* channel_marker); + SWGRollupState* getRollupState(); + void setRollupState(SWGRollupState* rollup_state); + virtual bool isSet() override; @@ -127,6 +131,9 @@ private: SWGChannelMarker* channel_marker; bool m_channel_marker_isSet; + SWGRollupState* rollup_state; + bool m_rollup_state_isSet; + }; } diff --git a/swagger/sdrangel/code/qt5/client/SWGJogdialControllerSettings.cpp b/swagger/sdrangel/code/qt5/client/SWGJogdialControllerSettings.cpp index 255abcfa7..86c1476ab 100644 --- a/swagger/sdrangel/code/qt5/client/SWGJogdialControllerSettings.cpp +++ b/swagger/sdrangel/code/qt5/client/SWGJogdialControllerSettings.cpp @@ -42,6 +42,8 @@ SWGJogdialControllerSettings::SWGJogdialControllerSettings() { m_reverse_api_feature_set_index_isSet = false; reverse_api_feature_index = 0; m_reverse_api_feature_index_isSet = false; + rollup_state = nullptr; + m_rollup_state_isSet = false; } SWGJogdialControllerSettings::~SWGJogdialControllerSettings() { @@ -64,6 +66,8 @@ SWGJogdialControllerSettings::init() { m_reverse_api_feature_set_index_isSet = false; reverse_api_feature_index = 0; m_reverse_api_feature_index_isSet = false; + rollup_state = new SWGRollupState(); + m_rollup_state_isSet = false; } void @@ -79,6 +83,9 @@ SWGJogdialControllerSettings::cleanup() { + if(rollup_state != nullptr) { + delete rollup_state; + } } SWGJogdialControllerSettings* @@ -106,6 +113,8 @@ SWGJogdialControllerSettings::fromJsonObject(QJsonObject &pJson) { ::SWGSDRangel::setValue(&reverse_api_feature_index, pJson["reverseAPIFeatureIndex"], "qint32", ""); + ::SWGSDRangel::setValue(&rollup_state, pJson["rollupState"], "SWGRollupState", "SWGRollupState"); + } QString @@ -143,6 +152,9 @@ SWGJogdialControllerSettings::asJsonObject() { if(m_reverse_api_feature_index_isSet){ obj->insert("reverseAPIFeatureIndex", QJsonValue(reverse_api_feature_index)); } + if((rollup_state != nullptr) && (rollup_state->isSet())){ + toJsonValue(QString("rollupState"), rollup_state, obj, QString("SWGRollupState")); + } return obj; } @@ -217,6 +229,16 @@ SWGJogdialControllerSettings::setReverseApiFeatureIndex(qint32 reverse_api_featu this->m_reverse_api_feature_index_isSet = true; } +SWGRollupState* +SWGJogdialControllerSettings::getRollupState() { + return rollup_state; +} +void +SWGJogdialControllerSettings::setRollupState(SWGRollupState* rollup_state) { + this->rollup_state = rollup_state; + this->m_rollup_state_isSet = true; +} + bool SWGJogdialControllerSettings::isSet(){ @@ -243,6 +265,9 @@ SWGJogdialControllerSettings::isSet(){ if(m_reverse_api_feature_index_isSet){ isObjectUpdated = true; break; } + if(rollup_state && rollup_state->isSet()){ + isObjectUpdated = true; break; + } }while(false); return isObjectUpdated; } diff --git a/swagger/sdrangel/code/qt5/client/SWGJogdialControllerSettings.h b/swagger/sdrangel/code/qt5/client/SWGJogdialControllerSettings.h index 03200e4d0..b50ddbe9a 100644 --- a/swagger/sdrangel/code/qt5/client/SWGJogdialControllerSettings.h +++ b/swagger/sdrangel/code/qt5/client/SWGJogdialControllerSettings.h @@ -22,6 +22,7 @@ #include +#include "SWGRollupState.h" #include #include "SWGObject.h" @@ -63,6 +64,9 @@ public: qint32 getReverseApiFeatureIndex(); void setReverseApiFeatureIndex(qint32 reverse_api_feature_index); + SWGRollupState* getRollupState(); + void setRollupState(SWGRollupState* rollup_state); + virtual bool isSet() override; @@ -88,6 +92,9 @@ private: qint32 reverse_api_feature_index; bool m_reverse_api_feature_index_isSet; + SWGRollupState* rollup_state; + bool m_rollup_state_isSet; + }; } diff --git a/swagger/sdrangel/code/qt5/client/SWGLocalSinkSettings.cpp b/swagger/sdrangel/code/qt5/client/SWGLocalSinkSettings.cpp index 37751290d..181b52a61 100644 --- a/swagger/sdrangel/code/qt5/client/SWGLocalSinkSettings.cpp +++ b/swagger/sdrangel/code/qt5/client/SWGLocalSinkSettings.cpp @@ -54,6 +54,8 @@ SWGLocalSinkSettings::SWGLocalSinkSettings() { m_reverse_api_channel_index_isSet = false; channel_marker = nullptr; m_channel_marker_isSet = false; + rollup_state = nullptr; + m_rollup_state_isSet = false; } SWGLocalSinkSettings::~SWGLocalSinkSettings() { @@ -88,6 +90,8 @@ SWGLocalSinkSettings::init() { m_reverse_api_channel_index_isSet = false; channel_marker = new SWGChannelMarker(); m_channel_marker_isSet = false; + rollup_state = new SWGRollupState(); + m_rollup_state_isSet = false; } void @@ -111,6 +115,9 @@ SWGLocalSinkSettings::cleanup() { if(channel_marker != nullptr) { delete channel_marker; } + if(rollup_state != nullptr) { + delete rollup_state; + } } SWGLocalSinkSettings* @@ -150,6 +157,8 @@ SWGLocalSinkSettings::fromJsonObject(QJsonObject &pJson) { ::SWGSDRangel::setValue(&channel_marker, pJson["channelMarker"], "SWGChannelMarker", "SWGChannelMarker"); + ::SWGSDRangel::setValue(&rollup_state, pJson["rollupState"], "SWGRollupState", "SWGRollupState"); + } QString @@ -205,6 +214,9 @@ SWGLocalSinkSettings::asJsonObject() { if((channel_marker != nullptr) && (channel_marker->isSet())){ toJsonValue(QString("channelMarker"), channel_marker, obj, QString("SWGChannelMarker")); } + if((rollup_state != nullptr) && (rollup_state->isSet())){ + toJsonValue(QString("rollupState"), rollup_state, obj, QString("SWGRollupState")); + } return obj; } @@ -339,6 +351,16 @@ SWGLocalSinkSettings::setChannelMarker(SWGChannelMarker* channel_marker) { this->m_channel_marker_isSet = true; } +SWGRollupState* +SWGLocalSinkSettings::getRollupState() { + return rollup_state; +} +void +SWGLocalSinkSettings::setRollupState(SWGRollupState* rollup_state) { + this->rollup_state = rollup_state; + this->m_rollup_state_isSet = true; +} + bool SWGLocalSinkSettings::isSet(){ @@ -383,6 +405,9 @@ SWGLocalSinkSettings::isSet(){ if(channel_marker && channel_marker->isSet()){ isObjectUpdated = true; break; } + if(rollup_state && rollup_state->isSet()){ + isObjectUpdated = true; break; + } }while(false); return isObjectUpdated; } diff --git a/swagger/sdrangel/code/qt5/client/SWGLocalSinkSettings.h b/swagger/sdrangel/code/qt5/client/SWGLocalSinkSettings.h index cf9eb92de..812eb1d3b 100644 --- a/swagger/sdrangel/code/qt5/client/SWGLocalSinkSettings.h +++ b/swagger/sdrangel/code/qt5/client/SWGLocalSinkSettings.h @@ -23,6 +23,7 @@ #include "SWGChannelMarker.h" +#include "SWGRollupState.h" #include #include "SWGObject.h" @@ -82,6 +83,9 @@ public: SWGChannelMarker* getChannelMarker(); void setChannelMarker(SWGChannelMarker* channel_marker); + SWGRollupState* getRollupState(); + void setRollupState(SWGRollupState* rollup_state); + virtual bool isSet() override; @@ -125,6 +129,9 @@ private: SWGChannelMarker* channel_marker; bool m_channel_marker_isSet; + SWGRollupState* rollup_state; + bool m_rollup_state_isSet; + }; } diff --git a/swagger/sdrangel/code/qt5/client/SWGLocalSourceSettings.cpp b/swagger/sdrangel/code/qt5/client/SWGLocalSourceSettings.cpp index 74d474fa0..0881568fd 100644 --- a/swagger/sdrangel/code/qt5/client/SWGLocalSourceSettings.cpp +++ b/swagger/sdrangel/code/qt5/client/SWGLocalSourceSettings.cpp @@ -54,6 +54,8 @@ SWGLocalSourceSettings::SWGLocalSourceSettings() { m_reverse_api_channel_index_isSet = false; channel_marker = nullptr; m_channel_marker_isSet = false; + rollup_state = nullptr; + m_rollup_state_isSet = false; } SWGLocalSourceSettings::~SWGLocalSourceSettings() { @@ -88,6 +90,8 @@ SWGLocalSourceSettings::init() { m_reverse_api_channel_index_isSet = false; channel_marker = new SWGChannelMarker(); m_channel_marker_isSet = false; + rollup_state = new SWGRollupState(); + m_rollup_state_isSet = false; } void @@ -111,6 +115,9 @@ SWGLocalSourceSettings::cleanup() { if(channel_marker != nullptr) { delete channel_marker; } + if(rollup_state != nullptr) { + delete rollup_state; + } } SWGLocalSourceSettings* @@ -150,6 +157,8 @@ SWGLocalSourceSettings::fromJsonObject(QJsonObject &pJson) { ::SWGSDRangel::setValue(&channel_marker, pJson["channelMarker"], "SWGChannelMarker", "SWGChannelMarker"); + ::SWGSDRangel::setValue(&rollup_state, pJson["rollupState"], "SWGRollupState", "SWGRollupState"); + } QString @@ -205,6 +214,9 @@ SWGLocalSourceSettings::asJsonObject() { if((channel_marker != nullptr) && (channel_marker->isSet())){ toJsonValue(QString("channelMarker"), channel_marker, obj, QString("SWGChannelMarker")); } + if((rollup_state != nullptr) && (rollup_state->isSet())){ + toJsonValue(QString("rollupState"), rollup_state, obj, QString("SWGRollupState")); + } return obj; } @@ -339,6 +351,16 @@ SWGLocalSourceSettings::setChannelMarker(SWGChannelMarker* channel_marker) { this->m_channel_marker_isSet = true; } +SWGRollupState* +SWGLocalSourceSettings::getRollupState() { + return rollup_state; +} +void +SWGLocalSourceSettings::setRollupState(SWGRollupState* rollup_state) { + this->rollup_state = rollup_state; + this->m_rollup_state_isSet = true; +} + bool SWGLocalSourceSettings::isSet(){ @@ -383,6 +405,9 @@ SWGLocalSourceSettings::isSet(){ if(channel_marker && channel_marker->isSet()){ isObjectUpdated = true; break; } + if(rollup_state && rollup_state->isSet()){ + isObjectUpdated = true; break; + } }while(false); return isObjectUpdated; } diff --git a/swagger/sdrangel/code/qt5/client/SWGLocalSourceSettings.h b/swagger/sdrangel/code/qt5/client/SWGLocalSourceSettings.h index 24f0f538b..35c0b0eb7 100644 --- a/swagger/sdrangel/code/qt5/client/SWGLocalSourceSettings.h +++ b/swagger/sdrangel/code/qt5/client/SWGLocalSourceSettings.h @@ -23,6 +23,7 @@ #include "SWGChannelMarker.h" +#include "SWGRollupState.h" #include #include "SWGObject.h" @@ -82,6 +83,9 @@ public: SWGChannelMarker* getChannelMarker(); void setChannelMarker(SWGChannelMarker* channel_marker); + SWGRollupState* getRollupState(); + void setRollupState(SWGRollupState* rollup_state); + virtual bool isSet() override; @@ -125,6 +129,9 @@ private: SWGChannelMarker* channel_marker; bool m_channel_marker_isSet; + SWGRollupState* rollup_state; + bool m_rollup_state_isSet; + }; } diff --git a/swagger/sdrangel/code/qt5/client/SWGMapSettings.cpp b/swagger/sdrangel/code/qt5/client/SWGMapSettings.cpp index ad2a8d56a..e438f8f36 100644 --- a/swagger/sdrangel/code/qt5/client/SWGMapSettings.cpp +++ b/swagger/sdrangel/code/qt5/client/SWGMapSettings.cpp @@ -44,6 +44,8 @@ SWGMapSettings::SWGMapSettings() { m_reverse_api_feature_set_index_isSet = false; reverse_api_feature_index = 0; m_reverse_api_feature_index_isSet = false; + rollup_state = nullptr; + m_rollup_state_isSet = false; } SWGMapSettings::~SWGMapSettings() { @@ -68,6 +70,8 @@ SWGMapSettings::init() { m_reverse_api_feature_set_index_isSet = false; reverse_api_feature_index = 0; m_reverse_api_feature_index_isSet = false; + rollup_state = new SWGRollupState(); + m_rollup_state_isSet = false; } void @@ -84,6 +88,9 @@ SWGMapSettings::cleanup() { + if(rollup_state != nullptr) { + delete rollup_state; + } } SWGMapSettings* @@ -113,6 +120,8 @@ SWGMapSettings::fromJsonObject(QJsonObject &pJson) { ::SWGSDRangel::setValue(&reverse_api_feature_index, pJson["reverseAPIFeatureIndex"], "qint32", ""); + ::SWGSDRangel::setValue(&rollup_state, pJson["rollupState"], "SWGRollupState", "SWGRollupState"); + } QString @@ -153,6 +162,9 @@ SWGMapSettings::asJsonObject() { if(m_reverse_api_feature_index_isSet){ obj->insert("reverseAPIFeatureIndex", QJsonValue(reverse_api_feature_index)); } + if((rollup_state != nullptr) && (rollup_state->isSet())){ + toJsonValue(QString("rollupState"), rollup_state, obj, QString("SWGRollupState")); + } return obj; } @@ -237,6 +249,16 @@ SWGMapSettings::setReverseApiFeatureIndex(qint32 reverse_api_feature_index) { this->m_reverse_api_feature_index_isSet = true; } +SWGRollupState* +SWGMapSettings::getRollupState() { + return rollup_state; +} +void +SWGMapSettings::setRollupState(SWGRollupState* rollup_state) { + this->rollup_state = rollup_state; + this->m_rollup_state_isSet = true; +} + bool SWGMapSettings::isSet(){ @@ -266,6 +288,9 @@ SWGMapSettings::isSet(){ if(m_reverse_api_feature_index_isSet){ isObjectUpdated = true; break; } + if(rollup_state && rollup_state->isSet()){ + isObjectUpdated = true; break; + } }while(false); return isObjectUpdated; } diff --git a/swagger/sdrangel/code/qt5/client/SWGMapSettings.h b/swagger/sdrangel/code/qt5/client/SWGMapSettings.h index 258730a91..00f60ceb2 100644 --- a/swagger/sdrangel/code/qt5/client/SWGMapSettings.h +++ b/swagger/sdrangel/code/qt5/client/SWGMapSettings.h @@ -22,6 +22,7 @@ #include +#include "SWGRollupState.h" #include #include "SWGObject.h" @@ -66,6 +67,9 @@ public: qint32 getReverseApiFeatureIndex(); void setReverseApiFeatureIndex(qint32 reverse_api_feature_index); + SWGRollupState* getRollupState(); + void setRollupState(SWGRollupState* rollup_state); + virtual bool isSet() override; @@ -94,6 +98,9 @@ private: qint32 reverse_api_feature_index; bool m_reverse_api_feature_index_isSet; + SWGRollupState* rollup_state; + bool m_rollup_state_isSet; + }; } diff --git a/swagger/sdrangel/code/qt5/client/SWGModelFactory.h b/swagger/sdrangel/code/qt5/client/SWGModelFactory.h index 10fca4e2e..67f357946 100644 --- a/swagger/sdrangel/code/qt5/client/SWGModelFactory.h +++ b/swagger/sdrangel/code/qt5/client/SWGModelFactory.h @@ -231,6 +231,8 @@ #include "SWGRigCtlServerActions.h" #include "SWGRigCtlServerReport.h" #include "SWGRigCtlServerSettings.h" +#include "SWGRollupChildState.h" +#include "SWGRollupState.h" #include "SWGRtlSdrReport.h" #include "SWGRtlSdrSettings.h" #include "SWGSDRPlayReport.h" @@ -1395,6 +1397,16 @@ namespace SWGSDRangel { obj->init(); return obj; } + if(QString("SWGRollupChildState").compare(type) == 0) { + SWGRollupChildState *obj = new SWGRollupChildState(); + obj->init(); + return obj; + } + if(QString("SWGRollupState").compare(type) == 0) { + SWGRollupState *obj = new SWGRollupState(); + obj->init(); + return obj; + } if(QString("SWGRtlSdrReport").compare(type) == 0) { SWGRtlSdrReport *obj = new SWGRtlSdrReport(); obj->init(); diff --git a/swagger/sdrangel/code/qt5/client/SWGNFMDemodSettings.cpp b/swagger/sdrangel/code/qt5/client/SWGNFMDemodSettings.cpp index 4cc634740..39d66abdb 100644 --- a/swagger/sdrangel/code/qt5/client/SWGNFMDemodSettings.cpp +++ b/swagger/sdrangel/code/qt5/client/SWGNFMDemodSettings.cpp @@ -72,6 +72,8 @@ SWGNFMDemodSettings::SWGNFMDemodSettings() { m_reverse_api_channel_index_isSet = false; channel_marker = nullptr; m_channel_marker_isSet = false; + rollup_state = nullptr; + m_rollup_state_isSet = false; } SWGNFMDemodSettings::~SWGNFMDemodSettings() { @@ -124,6 +126,8 @@ SWGNFMDemodSettings::init() { m_reverse_api_channel_index_isSet = false; channel_marker = new SWGChannelMarker(); m_channel_marker_isSet = false; + rollup_state = new SWGRollupState(); + m_rollup_state_isSet = false; } void @@ -158,6 +162,9 @@ SWGNFMDemodSettings::cleanup() { if(channel_marker != nullptr) { delete channel_marker; } + if(rollup_state != nullptr) { + delete rollup_state; + } } SWGNFMDemodSettings* @@ -215,6 +222,8 @@ SWGNFMDemodSettings::fromJsonObject(QJsonObject &pJson) { ::SWGSDRangel::setValue(&channel_marker, pJson["channelMarker"], "SWGChannelMarker", "SWGChannelMarker"); + ::SWGSDRangel::setValue(&rollup_state, pJson["rollupState"], "SWGRollupState", "SWGRollupState"); + } QString @@ -297,6 +306,9 @@ SWGNFMDemodSettings::asJsonObject() { if((channel_marker != nullptr) && (channel_marker->isSet())){ toJsonValue(QString("channelMarker"), channel_marker, obj, QString("SWGChannelMarker")); } + if((rollup_state != nullptr) && (rollup_state->isSet())){ + toJsonValue(QString("rollupState"), rollup_state, obj, QString("SWGRollupState")); + } return obj; } @@ -521,6 +533,16 @@ SWGNFMDemodSettings::setChannelMarker(SWGChannelMarker* channel_marker) { this->m_channel_marker_isSet = true; } +SWGRollupState* +SWGNFMDemodSettings::getRollupState() { + return rollup_state; +} +void +SWGNFMDemodSettings::setRollupState(SWGRollupState* rollup_state) { + this->rollup_state = rollup_state; + this->m_rollup_state_isSet = true; +} + bool SWGNFMDemodSettings::isSet(){ @@ -592,6 +614,9 @@ SWGNFMDemodSettings::isSet(){ if(channel_marker && channel_marker->isSet()){ isObjectUpdated = true; break; } + if(rollup_state && rollup_state->isSet()){ + isObjectUpdated = true; break; + } }while(false); return isObjectUpdated; } diff --git a/swagger/sdrangel/code/qt5/client/SWGNFMDemodSettings.h b/swagger/sdrangel/code/qt5/client/SWGNFMDemodSettings.h index b0dbef317..6f736b856 100644 --- a/swagger/sdrangel/code/qt5/client/SWGNFMDemodSettings.h +++ b/swagger/sdrangel/code/qt5/client/SWGNFMDemodSettings.h @@ -23,6 +23,7 @@ #include "SWGChannelMarker.h" +#include "SWGRollupState.h" #include #include "SWGObject.h" @@ -109,6 +110,9 @@ public: SWGChannelMarker* getChannelMarker(); void setChannelMarker(SWGChannelMarker* channel_marker); + SWGRollupState* getRollupState(); + void setRollupState(SWGRollupState* rollup_state); + virtual bool isSet() override; @@ -179,6 +183,9 @@ private: SWGChannelMarker* channel_marker; bool m_channel_marker_isSet; + SWGRollupState* rollup_state; + bool m_rollup_state_isSet; + }; } diff --git a/swagger/sdrangel/code/qt5/client/SWGNFMModSettings.cpp b/swagger/sdrangel/code/qt5/client/SWGNFMModSettings.cpp index 27e60b89e..5516a2aed 100644 --- a/swagger/sdrangel/code/qt5/client/SWGNFMModSettings.cpp +++ b/swagger/sdrangel/code/qt5/client/SWGNFMModSettings.cpp @@ -78,6 +78,8 @@ SWGNFMModSettings::SWGNFMModSettings() { m_cw_keyer_isSet = false; channel_marker = nullptr; m_channel_marker_isSet = false; + rollup_state = nullptr; + m_rollup_state_isSet = false; } SWGNFMModSettings::~SWGNFMModSettings() { @@ -136,6 +138,8 @@ SWGNFMModSettings::init() { m_cw_keyer_isSet = false; channel_marker = new SWGChannelMarker(); m_channel_marker_isSet = false; + rollup_state = new SWGRollupState(); + m_rollup_state_isSet = false; } void @@ -175,6 +179,9 @@ SWGNFMModSettings::cleanup() { if(channel_marker != nullptr) { delete channel_marker; } + if(rollup_state != nullptr) { + delete rollup_state; + } } SWGNFMModSettings* @@ -238,6 +245,8 @@ SWGNFMModSettings::fromJsonObject(QJsonObject &pJson) { ::SWGSDRangel::setValue(&channel_marker, pJson["channelMarker"], "SWGChannelMarker", "SWGChannelMarker"); + ::SWGSDRangel::setValue(&rollup_state, pJson["rollupState"], "SWGRollupState", "SWGRollupState"); + } QString @@ -329,6 +338,9 @@ SWGNFMModSettings::asJsonObject() { if((channel_marker != nullptr) && (channel_marker->isSet())){ toJsonValue(QString("channelMarker"), channel_marker, obj, QString("SWGChannelMarker")); } + if((rollup_state != nullptr) && (rollup_state->isSet())){ + toJsonValue(QString("rollupState"), rollup_state, obj, QString("SWGRollupState")); + } return obj; } @@ -583,6 +595,16 @@ SWGNFMModSettings::setChannelMarker(SWGChannelMarker* channel_marker) { this->m_channel_marker_isSet = true; } +SWGRollupState* +SWGNFMModSettings::getRollupState() { + return rollup_state; +} +void +SWGNFMModSettings::setRollupState(SWGRollupState* rollup_state) { + this->rollup_state = rollup_state; + this->m_rollup_state_isSet = true; +} + bool SWGNFMModSettings::isSet(){ @@ -663,6 +685,9 @@ SWGNFMModSettings::isSet(){ if(channel_marker && channel_marker->isSet()){ isObjectUpdated = true; break; } + if(rollup_state && rollup_state->isSet()){ + isObjectUpdated = true; break; + } }while(false); return isObjectUpdated; } diff --git a/swagger/sdrangel/code/qt5/client/SWGNFMModSettings.h b/swagger/sdrangel/code/qt5/client/SWGNFMModSettings.h index ca0e98611..b7a391ed2 100644 --- a/swagger/sdrangel/code/qt5/client/SWGNFMModSettings.h +++ b/swagger/sdrangel/code/qt5/client/SWGNFMModSettings.h @@ -24,6 +24,7 @@ #include "SWGCWKeyerSettings.h" #include "SWGChannelMarker.h" +#include "SWGRollupState.h" #include #include "SWGObject.h" @@ -119,6 +120,9 @@ public: SWGChannelMarker* getChannelMarker(); void setChannelMarker(SWGChannelMarker* channel_marker); + SWGRollupState* getRollupState(); + void setRollupState(SWGRollupState* rollup_state); + virtual bool isSet() override; @@ -198,6 +202,9 @@ private: SWGChannelMarker* channel_marker; bool m_channel_marker_isSet; + SWGRollupState* rollup_state; + bool m_rollup_state_isSet; + }; } diff --git a/swagger/sdrangel/code/qt5/client/SWGNoiseFigureSettings.cpp b/swagger/sdrangel/code/qt5/client/SWGNoiseFigureSettings.cpp index 1f9118c05..07172b75c 100644 --- a/swagger/sdrangel/code/qt5/client/SWGNoiseFigureSettings.cpp +++ b/swagger/sdrangel/code/qt5/client/SWGNoiseFigureSettings.cpp @@ -78,6 +78,8 @@ SWGNoiseFigureSettings::SWGNoiseFigureSettings() { m_reverse_api_channel_index_isSet = false; channel_marker = nullptr; m_channel_marker_isSet = false; + rollup_state = nullptr; + m_rollup_state_isSet = false; } SWGNoiseFigureSettings::~SWGNoiseFigureSettings() { @@ -136,6 +138,8 @@ SWGNoiseFigureSettings::init() { m_reverse_api_channel_index_isSet = false; channel_marker = new SWGChannelMarker(); m_channel_marker_isSet = false; + rollup_state = new SWGRollupState(); + m_rollup_state_isSet = false; } void @@ -185,6 +189,9 @@ SWGNoiseFigureSettings::cleanup() { if(channel_marker != nullptr) { delete channel_marker; } + if(rollup_state != nullptr) { + delete rollup_state; + } } SWGNoiseFigureSettings* @@ -248,6 +255,8 @@ SWGNoiseFigureSettings::fromJsonObject(QJsonObject &pJson) { ::SWGSDRangel::setValue(&channel_marker, pJson["channelMarker"], "SWGChannelMarker", "SWGChannelMarker"); + ::SWGSDRangel::setValue(&rollup_state, pJson["rollupState"], "SWGRollupState", "SWGRollupState"); + } QString @@ -339,6 +348,9 @@ SWGNoiseFigureSettings::asJsonObject() { if((channel_marker != nullptr) && (channel_marker->isSet())){ toJsonValue(QString("channelMarker"), channel_marker, obj, QString("SWGChannelMarker")); } + if((rollup_state != nullptr) && (rollup_state->isSet())){ + toJsonValue(QString("rollupState"), rollup_state, obj, QString("SWGRollupState")); + } return obj; } @@ -593,6 +605,16 @@ SWGNoiseFigureSettings::setChannelMarker(SWGChannelMarker* channel_marker) { this->m_channel_marker_isSet = true; } +SWGRollupState* +SWGNoiseFigureSettings::getRollupState() { + return rollup_state; +} +void +SWGNoiseFigureSettings::setRollupState(SWGRollupState* rollup_state) { + this->rollup_state = rollup_state; + this->m_rollup_state_isSet = true; +} + bool SWGNoiseFigureSettings::isSet(){ @@ -673,6 +695,9 @@ SWGNoiseFigureSettings::isSet(){ if(channel_marker && channel_marker->isSet()){ isObjectUpdated = true; break; } + if(rollup_state && rollup_state->isSet()){ + isObjectUpdated = true; break; + } }while(false); return isObjectUpdated; } diff --git a/swagger/sdrangel/code/qt5/client/SWGNoiseFigureSettings.h b/swagger/sdrangel/code/qt5/client/SWGNoiseFigureSettings.h index e40abaefd..1630e3be3 100644 --- a/swagger/sdrangel/code/qt5/client/SWGNoiseFigureSettings.h +++ b/swagger/sdrangel/code/qt5/client/SWGNoiseFigureSettings.h @@ -23,6 +23,7 @@ #include "SWGChannelMarker.h" +#include "SWGRollupState.h" #include #include "SWGObject.h" @@ -118,6 +119,9 @@ public: SWGChannelMarker* getChannelMarker(); void setChannelMarker(SWGChannelMarker* channel_marker); + SWGRollupState* getRollupState(); + void setRollupState(SWGRollupState* rollup_state); + virtual bool isSet() override; @@ -197,6 +201,9 @@ private: SWGChannelMarker* channel_marker; bool m_channel_marker_isSet; + SWGRollupState* rollup_state; + bool m_rollup_state_isSet; + }; } diff --git a/swagger/sdrangel/code/qt5/client/SWGPERTesterSettings.cpp b/swagger/sdrangel/code/qt5/client/SWGPERTesterSettings.cpp index 158213576..a21763097 100644 --- a/swagger/sdrangel/code/qt5/client/SWGPERTesterSettings.cpp +++ b/swagger/sdrangel/code/qt5/client/SWGPERTesterSettings.cpp @@ -64,6 +64,8 @@ SWGPERTesterSettings::SWGPERTesterSettings() { m_reverse_api_feature_set_index_isSet = false; reverse_api_feature_index = 0; m_reverse_api_feature_index_isSet = false; + rollup_state = nullptr; + m_rollup_state_isSet = false; } SWGPERTesterSettings::~SWGPERTesterSettings() { @@ -108,6 +110,8 @@ SWGPERTesterSettings::init() { m_reverse_api_feature_set_index_isSet = false; reverse_api_feature_index = 0; m_reverse_api_feature_index_isSet = false; + rollup_state = new SWGRollupState(); + m_rollup_state_isSet = false; } void @@ -146,6 +150,9 @@ SWGPERTesterSettings::cleanup() { + if(rollup_state != nullptr) { + delete rollup_state; + } } SWGPERTesterSettings* @@ -195,6 +202,8 @@ SWGPERTesterSettings::fromJsonObject(QJsonObject &pJson) { ::SWGSDRangel::setValue(&reverse_api_feature_index, pJson["reverseAPIFeatureIndex"], "qint32", ""); + ::SWGSDRangel::setValue(&rollup_state, pJson["rollupState"], "SWGRollupState", "SWGRollupState"); + } QString @@ -265,6 +274,9 @@ SWGPERTesterSettings::asJsonObject() { if(m_reverse_api_feature_index_isSet){ obj->insert("reverseAPIFeatureIndex", QJsonValue(reverse_api_feature_index)); } + if((rollup_state != nullptr) && (rollup_state->isSet())){ + toJsonValue(QString("rollupState"), rollup_state, obj, QString("SWGRollupState")); + } return obj; } @@ -449,6 +461,16 @@ SWGPERTesterSettings::setReverseApiFeatureIndex(qint32 reverse_api_feature_index this->m_reverse_api_feature_index_isSet = true; } +SWGRollupState* +SWGPERTesterSettings::getRollupState() { + return rollup_state; +} +void +SWGPERTesterSettings::setRollupState(SWGRollupState* rollup_state) { + this->rollup_state = rollup_state; + this->m_rollup_state_isSet = true; +} + bool SWGPERTesterSettings::isSet(){ @@ -508,6 +530,9 @@ SWGPERTesterSettings::isSet(){ if(m_reverse_api_feature_index_isSet){ isObjectUpdated = true; break; } + if(rollup_state && rollup_state->isSet()){ + isObjectUpdated = true; break; + } }while(false); return isObjectUpdated; } diff --git a/swagger/sdrangel/code/qt5/client/SWGPERTesterSettings.h b/swagger/sdrangel/code/qt5/client/SWGPERTesterSettings.h index f187febd2..d0ad32278 100644 --- a/swagger/sdrangel/code/qt5/client/SWGPERTesterSettings.h +++ b/swagger/sdrangel/code/qt5/client/SWGPERTesterSettings.h @@ -22,6 +22,7 @@ #include +#include "SWGRollupState.h" #include #include @@ -97,6 +98,9 @@ public: qint32 getReverseApiFeatureIndex(); void setReverseApiFeatureIndex(qint32 reverse_api_feature_index); + SWGRollupState* getRollupState(); + void setRollupState(SWGRollupState* rollup_state); + virtual bool isSet() override; @@ -155,6 +159,9 @@ private: qint32 reverse_api_feature_index; bool m_reverse_api_feature_index_isSet; + SWGRollupState* rollup_state; + bool m_rollup_state_isSet; + }; } diff --git a/swagger/sdrangel/code/qt5/client/SWGPacketDemodSettings.cpp b/swagger/sdrangel/code/qt5/client/SWGPacketDemodSettings.cpp index 9ffce147f..6a1cc3423 100644 --- a/swagger/sdrangel/code/qt5/client/SWGPacketDemodSettings.cpp +++ b/swagger/sdrangel/code/qt5/client/SWGPacketDemodSettings.cpp @@ -64,6 +64,8 @@ SWGPacketDemodSettings::SWGPacketDemodSettings() { m_reverse_api_channel_index_isSet = false; channel_marker = nullptr; m_channel_marker_isSet = false; + rollup_state = nullptr; + m_rollup_state_isSet = false; } SWGPacketDemodSettings::~SWGPacketDemodSettings() { @@ -108,6 +110,8 @@ SWGPacketDemodSettings::init() { m_reverse_api_channel_index_isSet = false; channel_marker = new SWGChannelMarker(); m_channel_marker_isSet = false; + rollup_state = new SWGRollupState(); + m_rollup_state_isSet = false; } void @@ -140,6 +144,9 @@ SWGPacketDemodSettings::cleanup() { if(channel_marker != nullptr) { delete channel_marker; } + if(rollup_state != nullptr) { + delete rollup_state; + } } SWGPacketDemodSettings* @@ -189,6 +196,8 @@ SWGPacketDemodSettings::fromJsonObject(QJsonObject &pJson) { ::SWGSDRangel::setValue(&channel_marker, pJson["channelMarker"], "SWGChannelMarker", "SWGChannelMarker"); + ::SWGSDRangel::setValue(&rollup_state, pJson["rollupState"], "SWGRollupState", "SWGRollupState"); + } QString @@ -259,6 +268,9 @@ SWGPacketDemodSettings::asJsonObject() { if((channel_marker != nullptr) && (channel_marker->isSet())){ toJsonValue(QString("channelMarker"), channel_marker, obj, QString("SWGChannelMarker")); } + if((rollup_state != nullptr) && (rollup_state->isSet())){ + toJsonValue(QString("rollupState"), rollup_state, obj, QString("SWGRollupState")); + } return obj; } @@ -443,6 +455,16 @@ SWGPacketDemodSettings::setChannelMarker(SWGChannelMarker* channel_marker) { this->m_channel_marker_isSet = true; } +SWGRollupState* +SWGPacketDemodSettings::getRollupState() { + return rollup_state; +} +void +SWGPacketDemodSettings::setRollupState(SWGRollupState* rollup_state) { + this->rollup_state = rollup_state; + this->m_rollup_state_isSet = true; +} + bool SWGPacketDemodSettings::isSet(){ @@ -502,6 +524,9 @@ SWGPacketDemodSettings::isSet(){ if(channel_marker && channel_marker->isSet()){ isObjectUpdated = true; break; } + if(rollup_state && rollup_state->isSet()){ + isObjectUpdated = true; break; + } }while(false); return isObjectUpdated; } diff --git a/swagger/sdrangel/code/qt5/client/SWGPacketDemodSettings.h b/swagger/sdrangel/code/qt5/client/SWGPacketDemodSettings.h index 25af4353b..41a40931c 100644 --- a/swagger/sdrangel/code/qt5/client/SWGPacketDemodSettings.h +++ b/swagger/sdrangel/code/qt5/client/SWGPacketDemodSettings.h @@ -23,6 +23,7 @@ #include "SWGChannelMarker.h" +#include "SWGRollupState.h" #include #include "SWGObject.h" @@ -97,6 +98,9 @@ public: SWGChannelMarker* getChannelMarker(); void setChannelMarker(SWGChannelMarker* channel_marker); + SWGRollupState* getRollupState(); + void setRollupState(SWGRollupState* rollup_state); + virtual bool isSet() override; @@ -155,6 +159,9 @@ private: SWGChannelMarker* channel_marker; bool m_channel_marker_isSet; + SWGRollupState* rollup_state; + bool m_rollup_state_isSet; + }; } diff --git a/swagger/sdrangel/code/qt5/client/SWGPacketModSettings.cpp b/swagger/sdrangel/code/qt5/client/SWGPacketModSettings.cpp index 79b4a8fc7..ac81d8012 100644 --- a/swagger/sdrangel/code/qt5/client/SWGPacketModSettings.cpp +++ b/swagger/sdrangel/code/qt5/client/SWGPacketModSettings.cpp @@ -134,6 +134,8 @@ SWGPacketModSettings::SWGPacketModSettings() { m_reverse_api_channel_index_isSet = false; channel_marker = nullptr; m_channel_marker_isSet = false; + rollup_state = nullptr; + m_rollup_state_isSet = false; } SWGPacketModSettings::~SWGPacketModSettings() { @@ -248,6 +250,8 @@ SWGPacketModSettings::init() { m_reverse_api_channel_index_isSet = false; channel_marker = new SWGChannelMarker(); m_channel_marker_isSet = false; + rollup_state = new SWGRollupState(); + m_rollup_state_isSet = false; } void @@ -321,6 +325,9 @@ SWGPacketModSettings::cleanup() { if(channel_marker != nullptr) { delete channel_marker; } + if(rollup_state != nullptr) { + delete rollup_state; + } } SWGPacketModSettings* @@ -440,6 +447,8 @@ SWGPacketModSettings::fromJsonObject(QJsonObject &pJson) { ::SWGSDRangel::setValue(&channel_marker, pJson["channelMarker"], "SWGChannelMarker", "SWGChannelMarker"); + ::SWGSDRangel::setValue(&rollup_state, pJson["rollupState"], "SWGRollupState", "SWGRollupState"); + } QString @@ -615,6 +624,9 @@ SWGPacketModSettings::asJsonObject() { if((channel_marker != nullptr) && (channel_marker->isSet())){ toJsonValue(QString("channelMarker"), channel_marker, obj, QString("SWGChannelMarker")); } + if((rollup_state != nullptr) && (rollup_state->isSet())){ + toJsonValue(QString("rollupState"), rollup_state, obj, QString("SWGRollupState")); + } return obj; } @@ -1149,6 +1161,16 @@ SWGPacketModSettings::setChannelMarker(SWGChannelMarker* channel_marker) { this->m_channel_marker_isSet = true; } +SWGRollupState* +SWGPacketModSettings::getRollupState() { + return rollup_state; +} +void +SWGPacketModSettings::setRollupState(SWGRollupState* rollup_state) { + this->rollup_state = rollup_state; + this->m_rollup_state_isSet = true; +} + bool SWGPacketModSettings::isSet(){ @@ -1313,6 +1335,9 @@ SWGPacketModSettings::isSet(){ if(channel_marker && channel_marker->isSet()){ isObjectUpdated = true; break; } + if(rollup_state && rollup_state->isSet()){ + isObjectUpdated = true; break; + } }while(false); return isObjectUpdated; } diff --git a/swagger/sdrangel/code/qt5/client/SWGPacketModSettings.h b/swagger/sdrangel/code/qt5/client/SWGPacketModSettings.h index 131660ef4..94fc074c9 100644 --- a/swagger/sdrangel/code/qt5/client/SWGPacketModSettings.h +++ b/swagger/sdrangel/code/qt5/client/SWGPacketModSettings.h @@ -23,6 +23,7 @@ #include "SWGChannelMarker.h" +#include "SWGRollupState.h" #include #include "SWGObject.h" @@ -202,6 +203,9 @@ public: SWGChannelMarker* getChannelMarker(); void setChannelMarker(SWGChannelMarker* channel_marker); + SWGRollupState* getRollupState(); + void setRollupState(SWGRollupState* rollup_state); + virtual bool isSet() override; @@ -365,6 +369,9 @@ private: SWGChannelMarker* channel_marker; bool m_channel_marker_isSet; + SWGRollupState* rollup_state; + bool m_rollup_state_isSet; + }; } diff --git a/swagger/sdrangel/code/qt5/client/SWGPagerDemodSettings.cpp b/swagger/sdrangel/code/qt5/client/SWGPagerDemodSettings.cpp index b492c0e13..06faf25ec 100644 --- a/swagger/sdrangel/code/qt5/client/SWGPagerDemodSettings.cpp +++ b/swagger/sdrangel/code/qt5/client/SWGPagerDemodSettings.cpp @@ -74,6 +74,8 @@ SWGPagerDemodSettings::SWGPagerDemodSettings() { m_scope_config_isSet = false; channel_marker = nullptr; m_channel_marker_isSet = false; + rollup_state = nullptr; + m_rollup_state_isSet = false; } SWGPagerDemodSettings::~SWGPagerDemodSettings() { @@ -128,6 +130,8 @@ SWGPagerDemodSettings::init() { m_scope_config_isSet = false; channel_marker = new SWGChannelMarker(); m_channel_marker_isSet = false; + rollup_state = new SWGRollupState(); + m_rollup_state_isSet = false; } void @@ -167,6 +171,9 @@ SWGPagerDemodSettings::cleanup() { if(channel_marker != nullptr) { delete channel_marker; } + if(rollup_state != nullptr) { + delete rollup_state; + } } SWGPagerDemodSettings* @@ -226,6 +233,8 @@ SWGPagerDemodSettings::fromJsonObject(QJsonObject &pJson) { ::SWGSDRangel::setValue(&channel_marker, pJson["channelMarker"], "SWGChannelMarker", "SWGChannelMarker"); + ::SWGSDRangel::setValue(&rollup_state, pJson["rollupState"], "SWGRollupState", "SWGRollupState"); + } QString @@ -311,6 +320,9 @@ SWGPagerDemodSettings::asJsonObject() { if((channel_marker != nullptr) && (channel_marker->isSet())){ toJsonValue(QString("channelMarker"), channel_marker, obj, QString("SWGChannelMarker")); } + if((rollup_state != nullptr) && (rollup_state->isSet())){ + toJsonValue(QString("rollupState"), rollup_state, obj, QString("SWGRollupState")); + } return obj; } @@ -545,6 +557,16 @@ SWGPagerDemodSettings::setChannelMarker(SWGChannelMarker* channel_marker) { this->m_channel_marker_isSet = true; } +SWGRollupState* +SWGPagerDemodSettings::getRollupState() { + return rollup_state; +} +void +SWGPagerDemodSettings::setRollupState(SWGRollupState* rollup_state) { + this->rollup_state = rollup_state; + this->m_rollup_state_isSet = true; +} + bool SWGPagerDemodSettings::isSet(){ @@ -619,6 +641,9 @@ SWGPagerDemodSettings::isSet(){ if(channel_marker && channel_marker->isSet()){ isObjectUpdated = true; break; } + if(rollup_state && rollup_state->isSet()){ + isObjectUpdated = true; break; + } }while(false); return isObjectUpdated; } diff --git a/swagger/sdrangel/code/qt5/client/SWGPagerDemodSettings.h b/swagger/sdrangel/code/qt5/client/SWGPagerDemodSettings.h index 4ae189f71..1724f6e35 100644 --- a/swagger/sdrangel/code/qt5/client/SWGPagerDemodSettings.h +++ b/swagger/sdrangel/code/qt5/client/SWGPagerDemodSettings.h @@ -24,6 +24,7 @@ #include "SWGChannelMarker.h" #include "SWGGLScope.h" +#include "SWGRollupState.h" #include #include "SWGObject.h" @@ -113,6 +114,9 @@ public: SWGChannelMarker* getChannelMarker(); void setChannelMarker(SWGChannelMarker* channel_marker); + SWGRollupState* getRollupState(); + void setRollupState(SWGRollupState* rollup_state); + virtual bool isSet() override; @@ -186,6 +190,9 @@ private: SWGChannelMarker* channel_marker; bool m_channel_marker_isSet; + SWGRollupState* rollup_state; + bool m_rollup_state_isSet; + }; } diff --git a/swagger/sdrangel/code/qt5/client/SWGRadioAstronomySettings.cpp b/swagger/sdrangel/code/qt5/client/SWGRadioAstronomySettings.cpp index 77b76b47e..891840523 100644 --- a/swagger/sdrangel/code/qt5/client/SWGRadioAstronomySettings.cpp +++ b/swagger/sdrangel/code/qt5/client/SWGRadioAstronomySettings.cpp @@ -88,6 +88,8 @@ SWGRadioAstronomySettings::SWGRadioAstronomySettings() { m_reverse_api_channel_index_isSet = false; channel_marker = nullptr; m_channel_marker_isSet = false; + rollup_state = nullptr; + m_rollup_state_isSet = false; } SWGRadioAstronomySettings::~SWGRadioAstronomySettings() { @@ -156,6 +158,8 @@ SWGRadioAstronomySettings::init() { m_reverse_api_channel_index_isSet = false; channel_marker = new SWGChannelMarker(); m_channel_marker_isSet = false; + rollup_state = new SWGRollupState(); + m_rollup_state_isSet = false; } void @@ -204,6 +208,9 @@ SWGRadioAstronomySettings::cleanup() { if(channel_marker != nullptr) { delete channel_marker; } + if(rollup_state != nullptr) { + delete rollup_state; + } } SWGRadioAstronomySettings* @@ -277,6 +284,8 @@ SWGRadioAstronomySettings::fromJsonObject(QJsonObject &pJson) { ::SWGSDRangel::setValue(&channel_marker, pJson["channelMarker"], "SWGChannelMarker", "SWGChannelMarker"); + ::SWGSDRangel::setValue(&rollup_state, pJson["rollupState"], "SWGRollupState", "SWGRollupState"); + } QString @@ -383,6 +392,9 @@ SWGRadioAstronomySettings::asJsonObject() { if((channel_marker != nullptr) && (channel_marker->isSet())){ toJsonValue(QString("channelMarker"), channel_marker, obj, QString("SWGChannelMarker")); } + if((rollup_state != nullptr) && (rollup_state->isSet())){ + toJsonValue(QString("rollupState"), rollup_state, obj, QString("SWGRollupState")); + } return obj; } @@ -687,6 +699,16 @@ SWGRadioAstronomySettings::setChannelMarker(SWGChannelMarker* channel_marker) { this->m_channel_marker_isSet = true; } +SWGRollupState* +SWGRadioAstronomySettings::getRollupState() { + return rollup_state; +} +void +SWGRadioAstronomySettings::setRollupState(SWGRollupState* rollup_state) { + this->rollup_state = rollup_state; + this->m_rollup_state_isSet = true; +} + bool SWGRadioAstronomySettings::isSet(){ @@ -782,6 +804,9 @@ SWGRadioAstronomySettings::isSet(){ if(channel_marker && channel_marker->isSet()){ isObjectUpdated = true; break; } + if(rollup_state && rollup_state->isSet()){ + isObjectUpdated = true; break; + } }while(false); return isObjectUpdated; } diff --git a/swagger/sdrangel/code/qt5/client/SWGRadioAstronomySettings.h b/swagger/sdrangel/code/qt5/client/SWGRadioAstronomySettings.h index 3da3aab2f..ac64609df 100644 --- a/swagger/sdrangel/code/qt5/client/SWGRadioAstronomySettings.h +++ b/swagger/sdrangel/code/qt5/client/SWGRadioAstronomySettings.h @@ -23,6 +23,7 @@ #include "SWGChannelMarker.h" +#include "SWGRollupState.h" #include #include "SWGObject.h" @@ -133,6 +134,9 @@ public: SWGChannelMarker* getChannelMarker(); void setChannelMarker(SWGChannelMarker* channel_marker); + SWGRollupState* getRollupState(); + void setRollupState(SWGRollupState* rollup_state); + virtual bool isSet() override; @@ -227,6 +231,9 @@ private: SWGChannelMarker* channel_marker; bool m_channel_marker_isSet; + SWGRollupState* rollup_state; + bool m_rollup_state_isSet; + }; } diff --git a/swagger/sdrangel/code/qt5/client/SWGRadioClockSettings.cpp b/swagger/sdrangel/code/qt5/client/SWGRadioClockSettings.cpp index 8f511af8b..4741d5c7f 100644 --- a/swagger/sdrangel/code/qt5/client/SWGRadioClockSettings.cpp +++ b/swagger/sdrangel/code/qt5/client/SWGRadioClockSettings.cpp @@ -58,6 +58,8 @@ SWGRadioClockSettings::SWGRadioClockSettings() { m_scope_config_isSet = false; channel_marker = nullptr; m_channel_marker_isSet = false; + rollup_state = nullptr; + m_rollup_state_isSet = false; } SWGRadioClockSettings::~SWGRadioClockSettings() { @@ -96,6 +98,8 @@ SWGRadioClockSettings::init() { m_scope_config_isSet = false; channel_marker = new SWGChannelMarker(); m_channel_marker_isSet = false; + rollup_state = new SWGRollupState(); + m_rollup_state_isSet = false; } void @@ -123,6 +127,9 @@ SWGRadioClockSettings::cleanup() { if(channel_marker != nullptr) { delete channel_marker; } + if(rollup_state != nullptr) { + delete rollup_state; + } } SWGRadioClockSettings* @@ -166,6 +173,8 @@ SWGRadioClockSettings::fromJsonObject(QJsonObject &pJson) { ::SWGSDRangel::setValue(&channel_marker, pJson["channelMarker"], "SWGChannelMarker", "SWGChannelMarker"); + ::SWGSDRangel::setValue(&rollup_state, pJson["rollupState"], "SWGRollupState", "SWGRollupState"); + } QString @@ -227,6 +236,9 @@ SWGRadioClockSettings::asJsonObject() { if((channel_marker != nullptr) && (channel_marker->isSet())){ toJsonValue(QString("channelMarker"), channel_marker, obj, QString("SWGChannelMarker")); } + if((rollup_state != nullptr) && (rollup_state->isSet())){ + toJsonValue(QString("rollupState"), rollup_state, obj, QString("SWGRollupState")); + } return obj; } @@ -381,6 +393,16 @@ SWGRadioClockSettings::setChannelMarker(SWGChannelMarker* channel_marker) { this->m_channel_marker_isSet = true; } +SWGRollupState* +SWGRadioClockSettings::getRollupState() { + return rollup_state; +} +void +SWGRadioClockSettings::setRollupState(SWGRollupState* rollup_state) { + this->rollup_state = rollup_state; + this->m_rollup_state_isSet = true; +} + bool SWGRadioClockSettings::isSet(){ @@ -431,6 +453,9 @@ SWGRadioClockSettings::isSet(){ if(channel_marker && channel_marker->isSet()){ isObjectUpdated = true; break; } + if(rollup_state && rollup_state->isSet()){ + isObjectUpdated = true; break; + } }while(false); return isObjectUpdated; } diff --git a/swagger/sdrangel/code/qt5/client/SWGRadioClockSettings.h b/swagger/sdrangel/code/qt5/client/SWGRadioClockSettings.h index ed8f5da7f..c971e8913 100644 --- a/swagger/sdrangel/code/qt5/client/SWGRadioClockSettings.h +++ b/swagger/sdrangel/code/qt5/client/SWGRadioClockSettings.h @@ -24,6 +24,7 @@ #include "SWGChannelMarker.h" #include "SWGGLScope.h" +#include "SWGRollupState.h" #include #include "SWGObject.h" @@ -89,6 +90,9 @@ public: SWGChannelMarker* getChannelMarker(); void setChannelMarker(SWGChannelMarker* channel_marker); + SWGRollupState* getRollupState(); + void setRollupState(SWGRollupState* rollup_state); + virtual bool isSet() override; @@ -138,6 +142,9 @@ private: SWGChannelMarker* channel_marker; bool m_channel_marker_isSet; + SWGRollupState* rollup_state; + bool m_rollup_state_isSet; + }; } diff --git a/swagger/sdrangel/code/qt5/client/SWGRemoteSinkSettings.cpp b/swagger/sdrangel/code/qt5/client/SWGRemoteSinkSettings.cpp index 74b83e683..06eee798b 100644 --- a/swagger/sdrangel/code/qt5/client/SWGRemoteSinkSettings.cpp +++ b/swagger/sdrangel/code/qt5/client/SWGRemoteSinkSettings.cpp @@ -60,6 +60,8 @@ SWGRemoteSinkSettings::SWGRemoteSinkSettings() { m_reverse_api_channel_index_isSet = false; channel_marker = nullptr; m_channel_marker_isSet = false; + rollup_state = nullptr; + m_rollup_state_isSet = false; } SWGRemoteSinkSettings::~SWGRemoteSinkSettings() { @@ -100,6 +102,8 @@ SWGRemoteSinkSettings::init() { m_reverse_api_channel_index_isSet = false; channel_marker = new SWGChannelMarker(); m_channel_marker_isSet = false; + rollup_state = new SWGRollupState(); + m_rollup_state_isSet = false; } void @@ -128,6 +132,9 @@ SWGRemoteSinkSettings::cleanup() { if(channel_marker != nullptr) { delete channel_marker; } + if(rollup_state != nullptr) { + delete rollup_state; + } } SWGRemoteSinkSettings* @@ -173,6 +180,8 @@ SWGRemoteSinkSettings::fromJsonObject(QJsonObject &pJson) { ::SWGSDRangel::setValue(&channel_marker, pJson["channelMarker"], "SWGChannelMarker", "SWGChannelMarker"); + ::SWGSDRangel::setValue(&rollup_state, pJson["rollupState"], "SWGRollupState", "SWGRollupState"); + } QString @@ -237,6 +246,9 @@ SWGRemoteSinkSettings::asJsonObject() { if((channel_marker != nullptr) && (channel_marker->isSet())){ toJsonValue(QString("channelMarker"), channel_marker, obj, QString("SWGChannelMarker")); } + if((rollup_state != nullptr) && (rollup_state->isSet())){ + toJsonValue(QString("rollupState"), rollup_state, obj, QString("SWGRollupState")); + } return obj; } @@ -401,6 +413,16 @@ SWGRemoteSinkSettings::setChannelMarker(SWGChannelMarker* channel_marker) { this->m_channel_marker_isSet = true; } +SWGRollupState* +SWGRemoteSinkSettings::getRollupState() { + return rollup_state; +} +void +SWGRemoteSinkSettings::setRollupState(SWGRollupState* rollup_state) { + this->rollup_state = rollup_state; + this->m_rollup_state_isSet = true; +} + bool SWGRemoteSinkSettings::isSet(){ @@ -454,6 +476,9 @@ SWGRemoteSinkSettings::isSet(){ if(channel_marker && channel_marker->isSet()){ isObjectUpdated = true; break; } + if(rollup_state && rollup_state->isSet()){ + isObjectUpdated = true; break; + } }while(false); return isObjectUpdated; } diff --git a/swagger/sdrangel/code/qt5/client/SWGRemoteSinkSettings.h b/swagger/sdrangel/code/qt5/client/SWGRemoteSinkSettings.h index 7d93eef58..c4f85b8ec 100644 --- a/swagger/sdrangel/code/qt5/client/SWGRemoteSinkSettings.h +++ b/swagger/sdrangel/code/qt5/client/SWGRemoteSinkSettings.h @@ -23,6 +23,7 @@ #include "SWGChannelMarker.h" +#include "SWGRollupState.h" #include #include "SWGObject.h" @@ -91,6 +92,9 @@ public: SWGChannelMarker* getChannelMarker(); void setChannelMarker(SWGChannelMarker* channel_marker); + SWGRollupState* getRollupState(); + void setRollupState(SWGRollupState* rollup_state); + virtual bool isSet() override; @@ -143,6 +147,9 @@ private: SWGChannelMarker* channel_marker; bool m_channel_marker_isSet; + SWGRollupState* rollup_state; + bool m_rollup_state_isSet; + }; } diff --git a/swagger/sdrangel/code/qt5/client/SWGRemoteSourceSettings.cpp b/swagger/sdrangel/code/qt5/client/SWGRemoteSourceSettings.cpp index a01c118a4..23a09c14b 100644 --- a/swagger/sdrangel/code/qt5/client/SWGRemoteSourceSettings.cpp +++ b/swagger/sdrangel/code/qt5/client/SWGRemoteSourceSettings.cpp @@ -54,6 +54,8 @@ SWGRemoteSourceSettings::SWGRemoteSourceSettings() { m_reverse_api_channel_index_isSet = false; channel_marker = nullptr; m_channel_marker_isSet = false; + rollup_state = nullptr; + m_rollup_state_isSet = false; } SWGRemoteSourceSettings::~SWGRemoteSourceSettings() { @@ -88,6 +90,8 @@ SWGRemoteSourceSettings::init() { m_reverse_api_channel_index_isSet = false; channel_marker = new SWGChannelMarker(); m_channel_marker_isSet = false; + rollup_state = new SWGRollupState(); + m_rollup_state_isSet = false; } void @@ -113,6 +117,9 @@ SWGRemoteSourceSettings::cleanup() { if(channel_marker != nullptr) { delete channel_marker; } + if(rollup_state != nullptr) { + delete rollup_state; + } } SWGRemoteSourceSettings* @@ -152,6 +159,8 @@ SWGRemoteSourceSettings::fromJsonObject(QJsonObject &pJson) { ::SWGSDRangel::setValue(&channel_marker, pJson["channelMarker"], "SWGChannelMarker", "SWGChannelMarker"); + ::SWGSDRangel::setValue(&rollup_state, pJson["rollupState"], "SWGRollupState", "SWGRollupState"); + } QString @@ -207,6 +216,9 @@ SWGRemoteSourceSettings::asJsonObject() { if((channel_marker != nullptr) && (channel_marker->isSet())){ toJsonValue(QString("channelMarker"), channel_marker, obj, QString("SWGChannelMarker")); } + if((rollup_state != nullptr) && (rollup_state->isSet())){ + toJsonValue(QString("rollupState"), rollup_state, obj, QString("SWGRollupState")); + } return obj; } @@ -341,6 +353,16 @@ SWGRemoteSourceSettings::setChannelMarker(SWGChannelMarker* channel_marker) { this->m_channel_marker_isSet = true; } +SWGRollupState* +SWGRemoteSourceSettings::getRollupState() { + return rollup_state; +} +void +SWGRemoteSourceSettings::setRollupState(SWGRollupState* rollup_state) { + this->rollup_state = rollup_state; + this->m_rollup_state_isSet = true; +} + bool SWGRemoteSourceSettings::isSet(){ @@ -385,6 +407,9 @@ SWGRemoteSourceSettings::isSet(){ if(channel_marker && channel_marker->isSet()){ isObjectUpdated = true; break; } + if(rollup_state && rollup_state->isSet()){ + isObjectUpdated = true; break; + } }while(false); return isObjectUpdated; } diff --git a/swagger/sdrangel/code/qt5/client/SWGRemoteSourceSettings.h b/swagger/sdrangel/code/qt5/client/SWGRemoteSourceSettings.h index 944a825ff..8e50be4b2 100644 --- a/swagger/sdrangel/code/qt5/client/SWGRemoteSourceSettings.h +++ b/swagger/sdrangel/code/qt5/client/SWGRemoteSourceSettings.h @@ -23,6 +23,7 @@ #include "SWGChannelMarker.h" +#include "SWGRollupState.h" #include #include "SWGObject.h" @@ -82,6 +83,9 @@ public: SWGChannelMarker* getChannelMarker(); void setChannelMarker(SWGChannelMarker* channel_marker); + SWGRollupState* getRollupState(); + void setRollupState(SWGRollupState* rollup_state); + virtual bool isSet() override; @@ -125,6 +129,9 @@ private: SWGChannelMarker* channel_marker; bool m_channel_marker_isSet; + SWGRollupState* rollup_state; + bool m_rollup_state_isSet; + }; } diff --git a/swagger/sdrangel/code/qt5/client/SWGRigCtlServerSettings.cpp b/swagger/sdrangel/code/qt5/client/SWGRigCtlServerSettings.cpp index b7760937a..247f99d94 100644 --- a/swagger/sdrangel/code/qt5/client/SWGRigCtlServerSettings.cpp +++ b/swagger/sdrangel/code/qt5/client/SWGRigCtlServerSettings.cpp @@ -52,6 +52,8 @@ SWGRigCtlServerSettings::SWGRigCtlServerSettings() { m_reverse_api_feature_set_index_isSet = false; reverse_api_feature_index = 0; m_reverse_api_feature_index_isSet = false; + rollup_state = nullptr; + m_rollup_state_isSet = false; } SWGRigCtlServerSettings::~SWGRigCtlServerSettings() { @@ -84,6 +86,8 @@ SWGRigCtlServerSettings::init() { m_reverse_api_feature_set_index_isSet = false; reverse_api_feature_index = 0; m_reverse_api_feature_index_isSet = false; + rollup_state = new SWGRollupState(); + m_rollup_state_isSet = false; } void @@ -104,6 +108,9 @@ SWGRigCtlServerSettings::cleanup() { + if(rollup_state != nullptr) { + delete rollup_state; + } } SWGRigCtlServerSettings* @@ -141,6 +148,8 @@ SWGRigCtlServerSettings::fromJsonObject(QJsonObject &pJson) { ::SWGSDRangel::setValue(&reverse_api_feature_index, pJson["reverseAPIFeatureIndex"], "qint32", ""); + ::SWGSDRangel::setValue(&rollup_state, pJson["rollupState"], "SWGRollupState", "SWGRollupState"); + } QString @@ -193,6 +202,9 @@ SWGRigCtlServerSettings::asJsonObject() { if(m_reverse_api_feature_index_isSet){ obj->insert("reverseAPIFeatureIndex", QJsonValue(reverse_api_feature_index)); } + if((rollup_state != nullptr) && (rollup_state->isSet())){ + toJsonValue(QString("rollupState"), rollup_state, obj, QString("SWGRollupState")); + } return obj; } @@ -317,6 +329,16 @@ SWGRigCtlServerSettings::setReverseApiFeatureIndex(qint32 reverse_api_feature_in this->m_reverse_api_feature_index_isSet = true; } +SWGRollupState* +SWGRigCtlServerSettings::getRollupState() { + return rollup_state; +} +void +SWGRigCtlServerSettings::setRollupState(SWGRollupState* rollup_state) { + this->rollup_state = rollup_state; + this->m_rollup_state_isSet = true; +} + bool SWGRigCtlServerSettings::isSet(){ @@ -358,6 +380,9 @@ SWGRigCtlServerSettings::isSet(){ if(m_reverse_api_feature_index_isSet){ isObjectUpdated = true; break; } + if(rollup_state && rollup_state->isSet()){ + isObjectUpdated = true; break; + } }while(false); return isObjectUpdated; } diff --git a/swagger/sdrangel/code/qt5/client/SWGRigCtlServerSettings.h b/swagger/sdrangel/code/qt5/client/SWGRigCtlServerSettings.h index 1fd8c21b5..1f70ef13e 100644 --- a/swagger/sdrangel/code/qt5/client/SWGRigCtlServerSettings.h +++ b/swagger/sdrangel/code/qt5/client/SWGRigCtlServerSettings.h @@ -22,6 +22,7 @@ #include +#include "SWGRollupState.h" #include #include "SWGObject.h" @@ -78,6 +79,9 @@ public: qint32 getReverseApiFeatureIndex(); void setReverseApiFeatureIndex(qint32 reverse_api_feature_index); + SWGRollupState* getRollupState(); + void setRollupState(SWGRollupState* rollup_state); + virtual bool isSet() override; @@ -118,6 +122,9 @@ private: qint32 reverse_api_feature_index; bool m_reverse_api_feature_index_isSet; + SWGRollupState* rollup_state; + bool m_rollup_state_isSet; + }; } diff --git a/swagger/sdrangel/code/qt5/client/SWGRollupChildState.cpp b/swagger/sdrangel/code/qt5/client/SWGRollupChildState.cpp new file mode 100644 index 000000000..1a3e0fbcf --- /dev/null +++ b/swagger/sdrangel/code/qt5/client/SWGRollupChildState.cpp @@ -0,0 +1,133 @@ +/** + * 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 "SWGRollupChildState.h" + +#include "SWGHelpers.h" + +#include +#include +#include +#include + +namespace SWGSDRangel { + +SWGRollupChildState::SWGRollupChildState(QString* json) { + init(); + this->fromJson(*json); +} + +SWGRollupChildState::SWGRollupChildState() { + object_name = nullptr; + m_object_name_isSet = false; + is_hidden = 0; + m_is_hidden_isSet = false; +} + +SWGRollupChildState::~SWGRollupChildState() { + this->cleanup(); +} + +void +SWGRollupChildState::init() { + object_name = new QString(""); + m_object_name_isSet = false; + is_hidden = 0; + m_is_hidden_isSet = false; +} + +void +SWGRollupChildState::cleanup() { + if(object_name != nullptr) { + delete object_name; + } + +} + +SWGRollupChildState* +SWGRollupChildState::fromJson(QString &json) { + QByteArray array (json.toStdString().c_str()); + QJsonDocument doc = QJsonDocument::fromJson(array); + QJsonObject jsonObject = doc.object(); + this->fromJsonObject(jsonObject); + return this; +} + +void +SWGRollupChildState::fromJsonObject(QJsonObject &pJson) { + ::SWGSDRangel::setValue(&object_name, pJson["objectName"], "QString", "QString"); + + ::SWGSDRangel::setValue(&is_hidden, pJson["isHidden"], "qint32", ""); + +} + +QString +SWGRollupChildState::asJson () +{ + QJsonObject* obj = this->asJsonObject(); + + QJsonDocument doc(*obj); + QByteArray bytes = doc.toJson(); + delete obj; + return QString(bytes); +} + +QJsonObject* +SWGRollupChildState::asJsonObject() { + QJsonObject* obj = new QJsonObject(); + if(object_name != nullptr && *object_name != QString("")){ + toJsonValue(QString("objectName"), object_name, obj, QString("QString")); + } + if(m_is_hidden_isSet){ + obj->insert("isHidden", QJsonValue(is_hidden)); + } + + return obj; +} + +QString* +SWGRollupChildState::getObjectName() { + return object_name; +} +void +SWGRollupChildState::setObjectName(QString* object_name) { + this->object_name = object_name; + this->m_object_name_isSet = true; +} + +qint32 +SWGRollupChildState::getIsHidden() { + return is_hidden; +} +void +SWGRollupChildState::setIsHidden(qint32 is_hidden) { + this->is_hidden = is_hidden; + this->m_is_hidden_isSet = true; +} + + +bool +SWGRollupChildState::isSet(){ + bool isObjectUpdated = false; + do{ + if(object_name && *object_name != QString("")){ + isObjectUpdated = true; break; + } + if(m_is_hidden_isSet){ + isObjectUpdated = true; break; + } + }while(false); + return isObjectUpdated; +} +} + diff --git a/swagger/sdrangel/code/qt5/client/SWGRollupChildState.h b/swagger/sdrangel/code/qt5/client/SWGRollupChildState.h new file mode 100644 index 000000000..03a793661 --- /dev/null +++ b/swagger/sdrangel/code/qt5/client/SWGRollupChildState.h @@ -0,0 +1,65 @@ +/** + * 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. + */ + +/* + * SWGRollupChildState.h + * + * Rollup widget child state + */ + +#ifndef SWGRollupChildState_H_ +#define SWGRollupChildState_H_ + +#include + + +#include + +#include "SWGObject.h" +#include "export.h" + +namespace SWGSDRangel { + +class SWG_API SWGRollupChildState: public SWGObject { +public: + SWGRollupChildState(); + SWGRollupChildState(QString* json); + virtual ~SWGRollupChildState(); + void init(); + void cleanup(); + + virtual QString asJson () override; + virtual QJsonObject* asJsonObject() override; + virtual void fromJsonObject(QJsonObject &json) override; + virtual SWGRollupChildState* fromJson(QString &jsonString) override; + + QString* getObjectName(); + void setObjectName(QString* object_name); + + qint32 getIsHidden(); + void setIsHidden(qint32 is_hidden); + + + virtual bool isSet() override; + +private: + QString* object_name; + bool m_object_name_isSet; + + qint32 is_hidden; + bool m_is_hidden_isSet; + +}; + +} + +#endif /* SWGRollupChildState_H_ */ diff --git a/swagger/sdrangel/code/qt5/client/SWGRollupState.cpp b/swagger/sdrangel/code/qt5/client/SWGRollupState.cpp new file mode 100644 index 000000000..08ea5b3a6 --- /dev/null +++ b/swagger/sdrangel/code/qt5/client/SWGRollupState.cpp @@ -0,0 +1,137 @@ +/** + * 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 "SWGRollupState.h" + +#include "SWGHelpers.h" + +#include +#include +#include +#include + +namespace SWGSDRangel { + +SWGRollupState::SWGRollupState(QString* json) { + init(); + this->fromJson(*json); +} + +SWGRollupState::SWGRollupState() { + version = 0; + m_version_isSet = false; + children_states = nullptr; + m_children_states_isSet = false; +} + +SWGRollupState::~SWGRollupState() { + this->cleanup(); +} + +void +SWGRollupState::init() { + version = 0; + m_version_isSet = false; + children_states = new QList(); + m_children_states_isSet = false; +} + +void +SWGRollupState::cleanup() { + + if(children_states != nullptr) { + auto arr = children_states; + for(auto o: *arr) { + delete o; + } + delete children_states; + } +} + +SWGRollupState* +SWGRollupState::fromJson(QString &json) { + QByteArray array (json.toStdString().c_str()); + QJsonDocument doc = QJsonDocument::fromJson(array); + QJsonObject jsonObject = doc.object(); + this->fromJsonObject(jsonObject); + return this; +} + +void +SWGRollupState::fromJsonObject(QJsonObject &pJson) { + ::SWGSDRangel::setValue(&version, pJson["version"], "qint32", ""); + + + ::SWGSDRangel::setValue(&children_states, pJson["childrenStates"], "QList", "SWGRollupChildState"); +} + +QString +SWGRollupState::asJson () +{ + QJsonObject* obj = this->asJsonObject(); + + QJsonDocument doc(*obj); + QByteArray bytes = doc.toJson(); + delete obj; + return QString(bytes); +} + +QJsonObject* +SWGRollupState::asJsonObject() { + QJsonObject* obj = new QJsonObject(); + if(m_version_isSet){ + obj->insert("version", QJsonValue(version)); + } + if(children_states && children_states->size() > 0){ + toJsonArray((QList*)children_states, obj, "childrenStates", "SWGRollupChildState"); + } + + return obj; +} + +qint32 +SWGRollupState::getVersion() { + return version; +} +void +SWGRollupState::setVersion(qint32 version) { + this->version = version; + this->m_version_isSet = true; +} + +QList* +SWGRollupState::getChildrenStates() { + return children_states; +} +void +SWGRollupState::setChildrenStates(QList* children_states) { + this->children_states = children_states; + this->m_children_states_isSet = true; +} + + +bool +SWGRollupState::isSet(){ + bool isObjectUpdated = false; + do{ + if(m_version_isSet){ + isObjectUpdated = true; break; + } + if(children_states && (children_states->size() > 0)){ + isObjectUpdated = true; break; + } + }while(false); + return isObjectUpdated; +} +} + diff --git a/swagger/sdrangel/code/qt5/client/SWGRollupState.h b/swagger/sdrangel/code/qt5/client/SWGRollupState.h new file mode 100644 index 000000000..dd5011b61 --- /dev/null +++ b/swagger/sdrangel/code/qt5/client/SWGRollupState.h @@ -0,0 +1,66 @@ +/** + * 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. + */ + +/* + * SWGRollupState.h + * + * Rollup widget state + */ + +#ifndef SWGRollupState_H_ +#define SWGRollupState_H_ + +#include + + +#include "SWGRollupChildState.h" +#include + +#include "SWGObject.h" +#include "export.h" + +namespace SWGSDRangel { + +class SWG_API SWGRollupState: public SWGObject { +public: + SWGRollupState(); + SWGRollupState(QString* json); + virtual ~SWGRollupState(); + void init(); + void cleanup(); + + virtual QString asJson () override; + virtual QJsonObject* asJsonObject() override; + virtual void fromJsonObject(QJsonObject &json) override; + virtual SWGRollupState* fromJson(QString &jsonString) override; + + qint32 getVersion(); + void setVersion(qint32 version); + + QList* getChildrenStates(); + void setChildrenStates(QList* children_states); + + + virtual bool isSet() override; + +private: + qint32 version; + bool m_version_isSet; + + QList* children_states; + bool m_children_states_isSet; + +}; + +} + +#endif /* SWGRollupState_H_ */ diff --git a/swagger/sdrangel/code/qt5/client/SWGSSBDemodSettings.cpp b/swagger/sdrangel/code/qt5/client/SWGSSBDemodSettings.cpp index 17c4a6eec..48ea5f831 100644 --- a/swagger/sdrangel/code/qt5/client/SWGSSBDemodSettings.cpp +++ b/swagger/sdrangel/code/qt5/client/SWGSSBDemodSettings.cpp @@ -78,6 +78,8 @@ SWGSSBDemodSettings::SWGSSBDemodSettings() { m_spectrum_config_isSet = false; channel_marker = nullptr; m_channel_marker_isSet = false; + rollup_state = nullptr; + m_rollup_state_isSet = false; } SWGSSBDemodSettings::~SWGSSBDemodSettings() { @@ -136,6 +138,8 @@ SWGSSBDemodSettings::init() { m_spectrum_config_isSet = false; channel_marker = new SWGChannelMarker(); m_channel_marker_isSet = false; + rollup_state = new SWGRollupState(); + m_rollup_state_isSet = false; } void @@ -175,6 +179,9 @@ SWGSSBDemodSettings::cleanup() { if(channel_marker != nullptr) { delete channel_marker; } + if(rollup_state != nullptr) { + delete rollup_state; + } } SWGSSBDemodSettings* @@ -238,6 +245,8 @@ SWGSSBDemodSettings::fromJsonObject(QJsonObject &pJson) { ::SWGSDRangel::setValue(&channel_marker, pJson["channelMarker"], "SWGChannelMarker", "SWGChannelMarker"); + ::SWGSDRangel::setValue(&rollup_state, pJson["rollupState"], "SWGRollupState", "SWGRollupState"); + } QString @@ -329,6 +338,9 @@ SWGSSBDemodSettings::asJsonObject() { if((channel_marker != nullptr) && (channel_marker->isSet())){ toJsonValue(QString("channelMarker"), channel_marker, obj, QString("SWGChannelMarker")); } + if((rollup_state != nullptr) && (rollup_state->isSet())){ + toJsonValue(QString("rollupState"), rollup_state, obj, QString("SWGRollupState")); + } return obj; } @@ -583,6 +595,16 @@ SWGSSBDemodSettings::setChannelMarker(SWGChannelMarker* channel_marker) { this->m_channel_marker_isSet = true; } +SWGRollupState* +SWGSSBDemodSettings::getRollupState() { + return rollup_state; +} +void +SWGSSBDemodSettings::setRollupState(SWGRollupState* rollup_state) { + this->rollup_state = rollup_state; + this->m_rollup_state_isSet = true; +} + bool SWGSSBDemodSettings::isSet(){ @@ -663,6 +685,9 @@ SWGSSBDemodSettings::isSet(){ if(channel_marker && channel_marker->isSet()){ isObjectUpdated = true; break; } + if(rollup_state && rollup_state->isSet()){ + isObjectUpdated = true; break; + } }while(false); return isObjectUpdated; } diff --git a/swagger/sdrangel/code/qt5/client/SWGSSBDemodSettings.h b/swagger/sdrangel/code/qt5/client/SWGSSBDemodSettings.h index 8a951b3fe..684f94f54 100644 --- a/swagger/sdrangel/code/qt5/client/SWGSSBDemodSettings.h +++ b/swagger/sdrangel/code/qt5/client/SWGSSBDemodSettings.h @@ -24,6 +24,7 @@ #include "SWGChannelMarker.h" #include "SWGGLSpectrum.h" +#include "SWGRollupState.h" #include #include "SWGObject.h" @@ -119,6 +120,9 @@ public: SWGChannelMarker* getChannelMarker(); void setChannelMarker(SWGChannelMarker* channel_marker); + SWGRollupState* getRollupState(); + void setRollupState(SWGRollupState* rollup_state); + virtual bool isSet() override; @@ -198,6 +202,9 @@ private: SWGChannelMarker* channel_marker; bool m_channel_marker_isSet; + SWGRollupState* rollup_state; + bool m_rollup_state_isSet; + }; } diff --git a/swagger/sdrangel/code/qt5/client/SWGSSBModSettings.cpp b/swagger/sdrangel/code/qt5/client/SWGSSBModSettings.cpp index 7432f45d0..7612fb4c0 100644 --- a/swagger/sdrangel/code/qt5/client/SWGSSBModSettings.cpp +++ b/swagger/sdrangel/code/qt5/client/SWGSSBModSettings.cpp @@ -84,6 +84,8 @@ SWGSSBModSettings::SWGSSBModSettings() { m_spectrum_config_isSet = false; channel_marker = nullptr; m_channel_marker_isSet = false; + rollup_state = nullptr; + m_rollup_state_isSet = false; } SWGSSBModSettings::~SWGSSBModSettings() { @@ -148,6 +150,8 @@ SWGSSBModSettings::init() { m_spectrum_config_isSet = false; channel_marker = new SWGChannelMarker(); m_channel_marker_isSet = false; + rollup_state = new SWGRollupState(); + m_rollup_state_isSet = false; } void @@ -192,6 +196,9 @@ SWGSSBModSettings::cleanup() { if(channel_marker != nullptr) { delete channel_marker; } + if(rollup_state != nullptr) { + delete rollup_state; + } } SWGSSBModSettings* @@ -261,6 +268,8 @@ SWGSSBModSettings::fromJsonObject(QJsonObject &pJson) { ::SWGSDRangel::setValue(&channel_marker, pJson["channelMarker"], "SWGChannelMarker", "SWGChannelMarker"); + ::SWGSDRangel::setValue(&rollup_state, pJson["rollupState"], "SWGRollupState", "SWGRollupState"); + } QString @@ -361,6 +370,9 @@ SWGSSBModSettings::asJsonObject() { if((channel_marker != nullptr) && (channel_marker->isSet())){ toJsonValue(QString("channelMarker"), channel_marker, obj, QString("SWGChannelMarker")); } + if((rollup_state != nullptr) && (rollup_state->isSet())){ + toJsonValue(QString("rollupState"), rollup_state, obj, QString("SWGRollupState")); + } return obj; } @@ -645,6 +657,16 @@ SWGSSBModSettings::setChannelMarker(SWGChannelMarker* channel_marker) { this->m_channel_marker_isSet = true; } +SWGRollupState* +SWGSSBModSettings::getRollupState() { + return rollup_state; +} +void +SWGSSBModSettings::setRollupState(SWGRollupState* rollup_state) { + this->rollup_state = rollup_state; + this->m_rollup_state_isSet = true; +} + bool SWGSSBModSettings::isSet(){ @@ -734,6 +756,9 @@ SWGSSBModSettings::isSet(){ if(channel_marker && channel_marker->isSet()){ isObjectUpdated = true; break; } + if(rollup_state && rollup_state->isSet()){ + isObjectUpdated = true; break; + } }while(false); return isObjectUpdated; } diff --git a/swagger/sdrangel/code/qt5/client/SWGSSBModSettings.h b/swagger/sdrangel/code/qt5/client/SWGSSBModSettings.h index c39054cc0..c87be9d42 100644 --- a/swagger/sdrangel/code/qt5/client/SWGSSBModSettings.h +++ b/swagger/sdrangel/code/qt5/client/SWGSSBModSettings.h @@ -25,6 +25,7 @@ #include "SWGCWKeyerSettings.h" #include "SWGChannelMarker.h" #include "SWGGLSpectrum.h" +#include "SWGRollupState.h" #include #include "SWGObject.h" @@ -129,6 +130,9 @@ public: SWGChannelMarker* getChannelMarker(); void setChannelMarker(SWGChannelMarker* channel_marker); + SWGRollupState* getRollupState(); + void setRollupState(SWGRollupState* rollup_state); + virtual bool isSet() override; @@ -217,6 +221,9 @@ private: SWGChannelMarker* channel_marker; bool m_channel_marker_isSet; + SWGRollupState* rollup_state; + bool m_rollup_state_isSet; + }; } diff --git a/swagger/sdrangel/code/qt5/client/SWGSatelliteTrackerSettings.cpp b/swagger/sdrangel/code/qt5/client/SWGSatelliteTrackerSettings.cpp index eca718ebd..2eb15cdb7 100644 --- a/swagger/sdrangel/code/qt5/client/SWGSatelliteTrackerSettings.cpp +++ b/swagger/sdrangel/code/qt5/client/SWGSatelliteTrackerSettings.cpp @@ -98,6 +98,8 @@ SWGSatelliteTrackerSettings::SWGSatelliteTrackerSettings() { m_reverse_api_feature_set_index_isSet = false; reverse_api_feature_index = 0; m_reverse_api_feature_index_isSet = false; + rollup_state = nullptr; + m_rollup_state_isSet = false; } SWGSatelliteTrackerSettings::~SWGSatelliteTrackerSettings() { @@ -176,6 +178,8 @@ SWGSatelliteTrackerSettings::init() { m_reverse_api_feature_set_index_isSet = false; reverse_api_feature_index = 0; m_reverse_api_feature_index_isSet = false; + rollup_state = new SWGRollupState(); + m_rollup_state_isSet = false; } void @@ -255,6 +259,9 @@ SWGSatelliteTrackerSettings::cleanup() { + if(rollup_state != nullptr) { + delete rollup_state; + } } SWGSatelliteTrackerSettings* @@ -338,6 +345,8 @@ SWGSatelliteTrackerSettings::fromJsonObject(QJsonObject &pJson) { ::SWGSDRangel::setValue(&reverse_api_feature_index, pJson["reverseAPIFeatureIndex"], "qint32", ""); + ::SWGSDRangel::setValue(&rollup_state, pJson["rollupState"], "SWGRollupState", "SWGRollupState"); + } QString @@ -459,6 +468,9 @@ SWGSatelliteTrackerSettings::asJsonObject() { if(m_reverse_api_feature_index_isSet){ obj->insert("reverseAPIFeatureIndex", QJsonValue(reverse_api_feature_index)); } + if((rollup_state != nullptr) && (rollup_state->isSet())){ + toJsonValue(QString("rollupState"), rollup_state, obj, QString("SWGRollupState")); + } return obj; } @@ -813,6 +825,16 @@ SWGSatelliteTrackerSettings::setReverseApiFeatureIndex(qint32 reverse_api_featur this->m_reverse_api_feature_index_isSet = true; } +SWGRollupState* +SWGSatelliteTrackerSettings::getRollupState() { + return rollup_state; +} +void +SWGSatelliteTrackerSettings::setRollupState(SWGRollupState* rollup_state) { + this->rollup_state = rollup_state; + this->m_rollup_state_isSet = true; +} + bool SWGSatelliteTrackerSettings::isSet(){ @@ -923,6 +945,9 @@ SWGSatelliteTrackerSettings::isSet(){ if(m_reverse_api_feature_index_isSet){ isObjectUpdated = true; break; } + if(rollup_state && rollup_state->isSet()){ + isObjectUpdated = true; break; + } }while(false); return isObjectUpdated; } diff --git a/swagger/sdrangel/code/qt5/client/SWGSatelliteTrackerSettings.h b/swagger/sdrangel/code/qt5/client/SWGSatelliteTrackerSettings.h index ac2f27123..95c7e63b1 100644 --- a/swagger/sdrangel/code/qt5/client/SWGSatelliteTrackerSettings.h +++ b/swagger/sdrangel/code/qt5/client/SWGSatelliteTrackerSettings.h @@ -22,6 +22,7 @@ #include +#include "SWGRollupState.h" #include "SWGSatelliteDeviceSettingsList.h" #include #include @@ -149,6 +150,9 @@ public: qint32 getReverseApiFeatureIndex(); void setReverseApiFeatureIndex(qint32 reverse_api_feature_index); + SWGRollupState* getRollupState(); + void setRollupState(SWGRollupState* rollup_state); + virtual bool isSet() override; @@ -258,6 +262,9 @@ private: qint32 reverse_api_feature_index; bool m_reverse_api_feature_index_isSet; + SWGRollupState* rollup_state; + bool m_rollup_state_isSet; + }; } diff --git a/swagger/sdrangel/code/qt5/client/SWGSigMFFileSinkSettings.cpp b/swagger/sdrangel/code/qt5/client/SWGSigMFFileSinkSettings.cpp index d131beb16..66c808d04 100644 --- a/swagger/sdrangel/code/qt5/client/SWGSigMFFileSinkSettings.cpp +++ b/swagger/sdrangel/code/qt5/client/SWGSigMFFileSinkSettings.cpp @@ -64,6 +64,8 @@ SWGSigMFFileSinkSettings::SWGSigMFFileSinkSettings() { m_spectrum_config_isSet = false; channel_marker = nullptr; m_channel_marker_isSet = false; + rollup_state = nullptr; + m_rollup_state_isSet = false; } SWGSigMFFileSinkSettings::~SWGSigMFFileSinkSettings() { @@ -108,6 +110,8 @@ SWGSigMFFileSinkSettings::init() { m_spectrum_config_isSet = false; channel_marker = new SWGChannelMarker(); m_channel_marker_isSet = false; + rollup_state = new SWGRollupState(); + m_rollup_state_isSet = false; } void @@ -140,6 +144,9 @@ SWGSigMFFileSinkSettings::cleanup() { if(channel_marker != nullptr) { delete channel_marker; } + if(rollup_state != nullptr) { + delete rollup_state; + } } SWGSigMFFileSinkSettings* @@ -189,6 +196,8 @@ SWGSigMFFileSinkSettings::fromJsonObject(QJsonObject &pJson) { ::SWGSDRangel::setValue(&channel_marker, pJson["channelMarker"], "SWGChannelMarker", "SWGChannelMarker"); + ::SWGSDRangel::setValue(&rollup_state, pJson["rollupState"], "SWGRollupState", "SWGRollupState"); + } QString @@ -259,6 +268,9 @@ SWGSigMFFileSinkSettings::asJsonObject() { if((channel_marker != nullptr) && (channel_marker->isSet())){ toJsonValue(QString("channelMarker"), channel_marker, obj, QString("SWGChannelMarker")); } + if((rollup_state != nullptr) && (rollup_state->isSet())){ + toJsonValue(QString("rollupState"), rollup_state, obj, QString("SWGRollupState")); + } return obj; } @@ -443,6 +455,16 @@ SWGSigMFFileSinkSettings::setChannelMarker(SWGChannelMarker* channel_marker) { this->m_channel_marker_isSet = true; } +SWGRollupState* +SWGSigMFFileSinkSettings::getRollupState() { + return rollup_state; +} +void +SWGSigMFFileSinkSettings::setRollupState(SWGRollupState* rollup_state) { + this->rollup_state = rollup_state; + this->m_rollup_state_isSet = true; +} + bool SWGSigMFFileSinkSettings::isSet(){ @@ -502,6 +524,9 @@ SWGSigMFFileSinkSettings::isSet(){ if(channel_marker && channel_marker->isSet()){ isObjectUpdated = true; break; } + if(rollup_state && rollup_state->isSet()){ + isObjectUpdated = true; break; + } }while(false); return isObjectUpdated; } diff --git a/swagger/sdrangel/code/qt5/client/SWGSigMFFileSinkSettings.h b/swagger/sdrangel/code/qt5/client/SWGSigMFFileSinkSettings.h index 1daaffde0..40520a6a0 100644 --- a/swagger/sdrangel/code/qt5/client/SWGSigMFFileSinkSettings.h +++ b/swagger/sdrangel/code/qt5/client/SWGSigMFFileSinkSettings.h @@ -24,6 +24,7 @@ #include "SWGChannelMarker.h" #include "SWGGLSpectrum.h" +#include "SWGRollupState.h" #include #include "SWGObject.h" @@ -98,6 +99,9 @@ public: SWGChannelMarker* getChannelMarker(); void setChannelMarker(SWGChannelMarker* channel_marker); + SWGRollupState* getRollupState(); + void setRollupState(SWGRollupState* rollup_state); + virtual bool isSet() override; @@ -156,6 +160,9 @@ private: SWGChannelMarker* channel_marker; bool m_channel_marker_isSet; + SWGRollupState* rollup_state; + bool m_rollup_state_isSet; + }; } diff --git a/swagger/sdrangel/code/qt5/client/SWGSimplePTTSettings.cpp b/swagger/sdrangel/code/qt5/client/SWGSimplePTTSettings.cpp index 89c4f0060..f41ce935e 100644 --- a/swagger/sdrangel/code/qt5/client/SWGSimplePTTSettings.cpp +++ b/swagger/sdrangel/code/qt5/client/SWGSimplePTTSettings.cpp @@ -60,6 +60,8 @@ SWGSimplePTTSettings::SWGSimplePTTSettings() { m_reverse_api_feature_set_index_isSet = false; reverse_api_feature_index = 0; m_reverse_api_feature_index_isSet = false; + rollup_state = nullptr; + m_rollup_state_isSet = false; } SWGSimplePTTSettings::~SWGSimplePTTSettings() { @@ -100,6 +102,8 @@ SWGSimplePTTSettings::init() { m_reverse_api_feature_set_index_isSet = false; reverse_api_feature_index = 0; m_reverse_api_feature_index_isSet = false; + rollup_state = new SWGRollupState(); + m_rollup_state_isSet = false; } void @@ -126,6 +130,9 @@ SWGSimplePTTSettings::cleanup() { + if(rollup_state != nullptr) { + delete rollup_state; + } } SWGSimplePTTSettings* @@ -171,6 +178,8 @@ SWGSimplePTTSettings::fromJsonObject(QJsonObject &pJson) { ::SWGSDRangel::setValue(&reverse_api_feature_index, pJson["reverseAPIFeatureIndex"], "qint32", ""); + ::SWGSDRangel::setValue(&rollup_state, pJson["rollupState"], "SWGRollupState", "SWGRollupState"); + } QString @@ -235,6 +244,9 @@ SWGSimplePTTSettings::asJsonObject() { if(m_reverse_api_feature_index_isSet){ obj->insert("reverseAPIFeatureIndex", QJsonValue(reverse_api_feature_index)); } + if((rollup_state != nullptr) && (rollup_state->isSet())){ + toJsonValue(QString("rollupState"), rollup_state, obj, QString("SWGRollupState")); + } return obj; } @@ -399,6 +411,16 @@ SWGSimplePTTSettings::setReverseApiFeatureIndex(qint32 reverse_api_feature_index this->m_reverse_api_feature_index_isSet = true; } +SWGRollupState* +SWGSimplePTTSettings::getRollupState() { + return rollup_state; +} +void +SWGSimplePTTSettings::setRollupState(SWGRollupState* rollup_state) { + this->rollup_state = rollup_state; + this->m_rollup_state_isSet = true; +} + bool SWGSimplePTTSettings::isSet(){ @@ -452,6 +474,9 @@ SWGSimplePTTSettings::isSet(){ if(m_reverse_api_feature_index_isSet){ isObjectUpdated = true; break; } + if(rollup_state && rollup_state->isSet()){ + isObjectUpdated = true; break; + } }while(false); return isObjectUpdated; } diff --git a/swagger/sdrangel/code/qt5/client/SWGSimplePTTSettings.h b/swagger/sdrangel/code/qt5/client/SWGSimplePTTSettings.h index 7deaf984e..52c8ef7b5 100644 --- a/swagger/sdrangel/code/qt5/client/SWGSimplePTTSettings.h +++ b/swagger/sdrangel/code/qt5/client/SWGSimplePTTSettings.h @@ -22,6 +22,7 @@ #include +#include "SWGRollupState.h" #include #include "SWGObject.h" @@ -90,6 +91,9 @@ public: qint32 getReverseApiFeatureIndex(); void setReverseApiFeatureIndex(qint32 reverse_api_feature_index); + SWGRollupState* getRollupState(); + void setRollupState(SWGRollupState* rollup_state); + virtual bool isSet() override; @@ -142,6 +146,9 @@ private: qint32 reverse_api_feature_index; bool m_reverse_api_feature_index_isSet; + SWGRollupState* rollup_state; + bool m_rollup_state_isSet; + }; } diff --git a/swagger/sdrangel/code/qt5/client/SWGStarTrackerSettings.cpp b/swagger/sdrangel/code/qt5/client/SWGStarTrackerSettings.cpp index 2ddc4c547..6c87c1acb 100644 --- a/swagger/sdrangel/code/qt5/client/SWGStarTrackerSettings.cpp +++ b/swagger/sdrangel/code/qt5/client/SWGStarTrackerSettings.cpp @@ -94,6 +94,8 @@ SWGStarTrackerSettings::SWGStarTrackerSettings() { m_reverse_api_feature_set_index_isSet = false; reverse_api_feature_index = 0; m_reverse_api_feature_index_isSet = false; + rollup_state = nullptr; + m_rollup_state_isSet = false; } SWGStarTrackerSettings::~SWGStarTrackerSettings() { @@ -168,6 +170,8 @@ SWGStarTrackerSettings::init() { m_reverse_api_feature_set_index_isSet = false; reverse_api_feature_index = 0; m_reverse_api_feature_index_isSet = false; + rollup_state = new SWGRollupState(); + m_rollup_state_isSet = false; } void @@ -221,6 +225,9 @@ SWGStarTrackerSettings::cleanup() { + if(rollup_state != nullptr) { + delete rollup_state; + } } SWGStarTrackerSettings* @@ -300,6 +307,8 @@ SWGStarTrackerSettings::fromJsonObject(QJsonObject &pJson) { ::SWGSDRangel::setValue(&reverse_api_feature_index, pJson["reverseAPIFeatureIndex"], "qint32", ""); + ::SWGSDRangel::setValue(&rollup_state, pJson["rollupState"], "SWGRollupState", "SWGRollupState"); + } QString @@ -415,6 +424,9 @@ SWGStarTrackerSettings::asJsonObject() { if(m_reverse_api_feature_index_isSet){ obj->insert("reverseAPIFeatureIndex", QJsonValue(reverse_api_feature_index)); } + if((rollup_state != nullptr) && (rollup_state->isSet())){ + toJsonValue(QString("rollupState"), rollup_state, obj, QString("SWGRollupState")); + } return obj; } @@ -749,6 +761,16 @@ SWGStarTrackerSettings::setReverseApiFeatureIndex(qint32 reverse_api_feature_ind this->m_reverse_api_feature_index_isSet = true; } +SWGRollupState* +SWGStarTrackerSettings::getRollupState() { + return rollup_state; +} +void +SWGStarTrackerSettings::setRollupState(SWGRollupState* rollup_state) { + this->rollup_state = rollup_state; + this->m_rollup_state_isSet = true; +} + bool SWGStarTrackerSettings::isSet(){ @@ -853,6 +875,9 @@ SWGStarTrackerSettings::isSet(){ if(m_reverse_api_feature_index_isSet){ isObjectUpdated = true; break; } + if(rollup_state && rollup_state->isSet()){ + isObjectUpdated = true; break; + } }while(false); return isObjectUpdated; } diff --git a/swagger/sdrangel/code/qt5/client/SWGStarTrackerSettings.h b/swagger/sdrangel/code/qt5/client/SWGStarTrackerSettings.h index 9c71533c5..56ec67ce1 100644 --- a/swagger/sdrangel/code/qt5/client/SWGStarTrackerSettings.h +++ b/swagger/sdrangel/code/qt5/client/SWGStarTrackerSettings.h @@ -22,6 +22,7 @@ #include +#include "SWGRollupState.h" #include #include "SWGObject.h" @@ -141,6 +142,9 @@ public: qint32 getReverseApiFeatureIndex(); void setReverseApiFeatureIndex(qint32 reverse_api_feature_index); + SWGRollupState* getRollupState(); + void setRollupState(SWGRollupState* rollup_state); + virtual bool isSet() override; @@ -244,6 +248,9 @@ private: qint32 reverse_api_feature_index; bool m_reverse_api_feature_index_isSet; + SWGRollupState* rollup_state; + bool m_rollup_state_isSet; + }; } diff --git a/swagger/sdrangel/code/qt5/client/SWGUDPSinkSettings.cpp b/swagger/sdrangel/code/qt5/client/SWGUDPSinkSettings.cpp index d41d205e6..32f65fdc4 100644 --- a/swagger/sdrangel/code/qt5/client/SWGUDPSinkSettings.cpp +++ b/swagger/sdrangel/code/qt5/client/SWGUDPSinkSettings.cpp @@ -82,6 +82,8 @@ SWGUDPSinkSettings::SWGUDPSinkSettings() { m_spectrum_config_isSet = false; channel_marker = nullptr; m_channel_marker_isSet = false; + rollup_state = nullptr; + m_rollup_state_isSet = false; } SWGUDPSinkSettings::~SWGUDPSinkSettings() { @@ -144,6 +146,8 @@ SWGUDPSinkSettings::init() { m_spectrum_config_isSet = false; channel_marker = new SWGChannelMarker(); m_channel_marker_isSet = false; + rollup_state = new SWGRollupState(); + m_rollup_state_isSet = false; } void @@ -185,6 +189,9 @@ SWGUDPSinkSettings::cleanup() { if(channel_marker != nullptr) { delete channel_marker; } + if(rollup_state != nullptr) { + delete rollup_state; + } } SWGUDPSinkSettings* @@ -252,6 +259,8 @@ SWGUDPSinkSettings::fromJsonObject(QJsonObject &pJson) { ::SWGSDRangel::setValue(&channel_marker, pJson["channelMarker"], "SWGChannelMarker", "SWGChannelMarker"); + ::SWGSDRangel::setValue(&rollup_state, pJson["rollupState"], "SWGRollupState", "SWGRollupState"); + } QString @@ -349,6 +358,9 @@ SWGUDPSinkSettings::asJsonObject() { if((channel_marker != nullptr) && (channel_marker->isSet())){ toJsonValue(QString("channelMarker"), channel_marker, obj, QString("SWGChannelMarker")); } + if((rollup_state != nullptr) && (rollup_state->isSet())){ + toJsonValue(QString("rollupState"), rollup_state, obj, QString("SWGRollupState")); + } return obj; } @@ -623,6 +635,16 @@ SWGUDPSinkSettings::setChannelMarker(SWGChannelMarker* channel_marker) { this->m_channel_marker_isSet = true; } +SWGRollupState* +SWGUDPSinkSettings::getRollupState() { + return rollup_state; +} +void +SWGUDPSinkSettings::setRollupState(SWGRollupState* rollup_state) { + this->rollup_state = rollup_state; + this->m_rollup_state_isSet = true; +} + bool SWGUDPSinkSettings::isSet(){ @@ -709,6 +731,9 @@ SWGUDPSinkSettings::isSet(){ if(channel_marker && channel_marker->isSet()){ isObjectUpdated = true; break; } + if(rollup_state && rollup_state->isSet()){ + isObjectUpdated = true; break; + } }while(false); return isObjectUpdated; } diff --git a/swagger/sdrangel/code/qt5/client/SWGUDPSinkSettings.h b/swagger/sdrangel/code/qt5/client/SWGUDPSinkSettings.h index af85935ad..9e09fcf76 100644 --- a/swagger/sdrangel/code/qt5/client/SWGUDPSinkSettings.h +++ b/swagger/sdrangel/code/qt5/client/SWGUDPSinkSettings.h @@ -24,6 +24,7 @@ #include "SWGChannelMarker.h" #include "SWGGLSpectrum.h" +#include "SWGRollupState.h" #include #include "SWGObject.h" @@ -125,6 +126,9 @@ public: SWGChannelMarker* getChannelMarker(); void setChannelMarker(SWGChannelMarker* channel_marker); + SWGRollupState* getRollupState(); + void setRollupState(SWGRollupState* rollup_state); + virtual bool isSet() override; @@ -210,6 +214,9 @@ private: SWGChannelMarker* channel_marker; bool m_channel_marker_isSet; + SWGRollupState* rollup_state; + bool m_rollup_state_isSet; + }; } diff --git a/swagger/sdrangel/code/qt5/client/SWGUDPSourceSettings.cpp b/swagger/sdrangel/code/qt5/client/SWGUDPSourceSettings.cpp index a1002813d..b02ba28c1 100644 --- a/swagger/sdrangel/code/qt5/client/SWGUDPSourceSettings.cpp +++ b/swagger/sdrangel/code/qt5/client/SWGUDPSourceSettings.cpp @@ -86,6 +86,8 @@ SWGUDPSourceSettings::SWGUDPSourceSettings() { m_spectrum_config_isSet = false; channel_marker = nullptr; m_channel_marker_isSet = false; + rollup_state = nullptr; + m_rollup_state_isSet = false; } SWGUDPSourceSettings::~SWGUDPSourceSettings() { @@ -152,6 +154,8 @@ SWGUDPSourceSettings::init() { m_spectrum_config_isSet = false; channel_marker = new SWGChannelMarker(); m_channel_marker_isSet = false; + rollup_state = new SWGRollupState(); + m_rollup_state_isSet = false; } void @@ -197,6 +201,9 @@ SWGUDPSourceSettings::cleanup() { if(channel_marker != nullptr) { delete channel_marker; } + if(rollup_state != nullptr) { + delete rollup_state; + } } SWGUDPSourceSettings* @@ -268,6 +275,8 @@ SWGUDPSourceSettings::fromJsonObject(QJsonObject &pJson) { ::SWGSDRangel::setValue(&channel_marker, pJson["channelMarker"], "SWGChannelMarker", "SWGChannelMarker"); + ::SWGSDRangel::setValue(&rollup_state, pJson["rollupState"], "SWGRollupState", "SWGRollupState"); + } QString @@ -371,6 +380,9 @@ SWGUDPSourceSettings::asJsonObject() { if((channel_marker != nullptr) && (channel_marker->isSet())){ toJsonValue(QString("channelMarker"), channel_marker, obj, QString("SWGChannelMarker")); } + if((rollup_state != nullptr) && (rollup_state->isSet())){ + toJsonValue(QString("rollupState"), rollup_state, obj, QString("SWGRollupState")); + } return obj; } @@ -665,6 +677,16 @@ SWGUDPSourceSettings::setChannelMarker(SWGChannelMarker* channel_marker) { this->m_channel_marker_isSet = true; } +SWGRollupState* +SWGUDPSourceSettings::getRollupState() { + return rollup_state; +} +void +SWGUDPSourceSettings::setRollupState(SWGRollupState* rollup_state) { + this->rollup_state = rollup_state; + this->m_rollup_state_isSet = true; +} + bool SWGUDPSourceSettings::isSet(){ @@ -757,6 +779,9 @@ SWGUDPSourceSettings::isSet(){ if(channel_marker && channel_marker->isSet()){ isObjectUpdated = true; break; } + if(rollup_state && rollup_state->isSet()){ + isObjectUpdated = true; break; + } }while(false); return isObjectUpdated; } diff --git a/swagger/sdrangel/code/qt5/client/SWGUDPSourceSettings.h b/swagger/sdrangel/code/qt5/client/SWGUDPSourceSettings.h index 0df1237ab..6f1a0904d 100644 --- a/swagger/sdrangel/code/qt5/client/SWGUDPSourceSettings.h +++ b/swagger/sdrangel/code/qt5/client/SWGUDPSourceSettings.h @@ -24,6 +24,7 @@ #include "SWGChannelMarker.h" #include "SWGGLSpectrum.h" +#include "SWGRollupState.h" #include #include "SWGObject.h" @@ -131,6 +132,9 @@ public: SWGChannelMarker* getChannelMarker(); void setChannelMarker(SWGChannelMarker* channel_marker); + SWGRollupState* getRollupState(); + void setRollupState(SWGRollupState* rollup_state); + virtual bool isSet() override; @@ -222,6 +226,9 @@ private: SWGChannelMarker* channel_marker; bool m_channel_marker_isSet; + SWGRollupState* rollup_state; + bool m_rollup_state_isSet; + }; } diff --git a/swagger/sdrangel/code/qt5/client/SWGVORDemodSCSettings.cpp b/swagger/sdrangel/code/qt5/client/SWGVORDemodSCSettings.cpp index 681c5ead3..090389f0b 100644 --- a/swagger/sdrangel/code/qt5/client/SWGVORDemodSCSettings.cpp +++ b/swagger/sdrangel/code/qt5/client/SWGVORDemodSCSettings.cpp @@ -60,6 +60,8 @@ SWGVORDemodSCSettings::SWGVORDemodSCSettings() { m_ident_threshold_isSet = false; channel_marker = nullptr; m_channel_marker_isSet = false; + rollup_state = nullptr; + m_rollup_state_isSet = false; } SWGVORDemodSCSettings::~SWGVORDemodSCSettings() { @@ -100,6 +102,8 @@ SWGVORDemodSCSettings::init() { m_ident_threshold_isSet = false; channel_marker = new SWGChannelMarker(); m_channel_marker_isSet = false; + rollup_state = new SWGRollupState(); + m_rollup_state_isSet = false; } void @@ -128,6 +132,9 @@ SWGVORDemodSCSettings::cleanup() { if(channel_marker != nullptr) { delete channel_marker; } + if(rollup_state != nullptr) { + delete rollup_state; + } } SWGVORDemodSCSettings* @@ -173,6 +180,8 @@ SWGVORDemodSCSettings::fromJsonObject(QJsonObject &pJson) { ::SWGSDRangel::setValue(&channel_marker, pJson["channelMarker"], "SWGChannelMarker", "SWGChannelMarker"); + ::SWGSDRangel::setValue(&rollup_state, pJson["rollupState"], "SWGRollupState", "SWGRollupState"); + } QString @@ -237,6 +246,9 @@ SWGVORDemodSCSettings::asJsonObject() { if((channel_marker != nullptr) && (channel_marker->isSet())){ toJsonValue(QString("channelMarker"), channel_marker, obj, QString("SWGChannelMarker")); } + if((rollup_state != nullptr) && (rollup_state->isSet())){ + toJsonValue(QString("rollupState"), rollup_state, obj, QString("SWGRollupState")); + } return obj; } @@ -401,6 +413,16 @@ SWGVORDemodSCSettings::setChannelMarker(SWGChannelMarker* channel_marker) { this->m_channel_marker_isSet = true; } +SWGRollupState* +SWGVORDemodSCSettings::getRollupState() { + return rollup_state; +} +void +SWGVORDemodSCSettings::setRollupState(SWGRollupState* rollup_state) { + this->rollup_state = rollup_state; + this->m_rollup_state_isSet = true; +} + bool SWGVORDemodSCSettings::isSet(){ @@ -454,6 +476,9 @@ SWGVORDemodSCSettings::isSet(){ if(channel_marker && channel_marker->isSet()){ isObjectUpdated = true; break; } + if(rollup_state && rollup_state->isSet()){ + isObjectUpdated = true; break; + } }while(false); return isObjectUpdated; } diff --git a/swagger/sdrangel/code/qt5/client/SWGVORDemodSCSettings.h b/swagger/sdrangel/code/qt5/client/SWGVORDemodSCSettings.h index 99d03baf7..9a7c2fb7f 100644 --- a/swagger/sdrangel/code/qt5/client/SWGVORDemodSCSettings.h +++ b/swagger/sdrangel/code/qt5/client/SWGVORDemodSCSettings.h @@ -23,6 +23,7 @@ #include "SWGChannelMarker.h" +#include "SWGRollupState.h" #include #include "SWGObject.h" @@ -91,6 +92,9 @@ public: SWGChannelMarker* getChannelMarker(); void setChannelMarker(SWGChannelMarker* channel_marker); + SWGRollupState* getRollupState(); + void setRollupState(SWGRollupState* rollup_state); + virtual bool isSet() override; @@ -143,6 +147,9 @@ private: SWGChannelMarker* channel_marker; bool m_channel_marker_isSet; + SWGRollupState* rollup_state; + bool m_rollup_state_isSet; + }; } diff --git a/swagger/sdrangel/code/qt5/client/SWGVORDemodSettings.cpp b/swagger/sdrangel/code/qt5/client/SWGVORDemodSettings.cpp index 8a7900243..af4fc8e3f 100644 --- a/swagger/sdrangel/code/qt5/client/SWGVORDemodSettings.cpp +++ b/swagger/sdrangel/code/qt5/client/SWGVORDemodSettings.cpp @@ -58,6 +58,8 @@ SWGVORDemodSettings::SWGVORDemodSettings() { m_mag_dec_adjust_isSet = false; channel_marker = nullptr; m_channel_marker_isSet = false; + rollup_state = nullptr; + m_rollup_state_isSet = false; } SWGVORDemodSettings::~SWGVORDemodSettings() { @@ -96,6 +98,8 @@ SWGVORDemodSettings::init() { m_mag_dec_adjust_isSet = false; channel_marker = new SWGChannelMarker(); m_channel_marker_isSet = false; + rollup_state = new SWGRollupState(); + m_rollup_state_isSet = false; } void @@ -123,6 +127,9 @@ SWGVORDemodSettings::cleanup() { if(channel_marker != nullptr) { delete channel_marker; } + if(rollup_state != nullptr) { + delete rollup_state; + } } SWGVORDemodSettings* @@ -166,6 +173,8 @@ SWGVORDemodSettings::fromJsonObject(QJsonObject &pJson) { ::SWGSDRangel::setValue(&channel_marker, pJson["channelMarker"], "SWGChannelMarker", "SWGChannelMarker"); + ::SWGSDRangel::setValue(&rollup_state, pJson["rollupState"], "SWGRollupState", "SWGRollupState"); + } QString @@ -227,6 +236,9 @@ SWGVORDemodSettings::asJsonObject() { if((channel_marker != nullptr) && (channel_marker->isSet())){ toJsonValue(QString("channelMarker"), channel_marker, obj, QString("SWGChannelMarker")); } + if((rollup_state != nullptr) && (rollup_state->isSet())){ + toJsonValue(QString("rollupState"), rollup_state, obj, QString("SWGRollupState")); + } return obj; } @@ -381,6 +393,16 @@ SWGVORDemodSettings::setChannelMarker(SWGChannelMarker* channel_marker) { this->m_channel_marker_isSet = true; } +SWGRollupState* +SWGVORDemodSettings::getRollupState() { + return rollup_state; +} +void +SWGVORDemodSettings::setRollupState(SWGRollupState* rollup_state) { + this->rollup_state = rollup_state; + this->m_rollup_state_isSet = true; +} + bool SWGVORDemodSettings::isSet(){ @@ -431,6 +453,9 @@ SWGVORDemodSettings::isSet(){ if(channel_marker && channel_marker->isSet()){ isObjectUpdated = true; break; } + if(rollup_state && rollup_state->isSet()){ + isObjectUpdated = true; break; + } }while(false); return isObjectUpdated; } diff --git a/swagger/sdrangel/code/qt5/client/SWGVORDemodSettings.h b/swagger/sdrangel/code/qt5/client/SWGVORDemodSettings.h index c555e7bd1..5801c69ea 100644 --- a/swagger/sdrangel/code/qt5/client/SWGVORDemodSettings.h +++ b/swagger/sdrangel/code/qt5/client/SWGVORDemodSettings.h @@ -23,6 +23,7 @@ #include "SWGChannelMarker.h" +#include "SWGRollupState.h" #include #include "SWGObject.h" @@ -88,6 +89,9 @@ public: SWGChannelMarker* getChannelMarker(); void setChannelMarker(SWGChannelMarker* channel_marker); + SWGRollupState* getRollupState(); + void setRollupState(SWGRollupState* rollup_state); + virtual bool isSet() override; @@ -137,6 +141,9 @@ private: SWGChannelMarker* channel_marker; bool m_channel_marker_isSet; + SWGRollupState* rollup_state; + bool m_rollup_state_isSet; + }; } diff --git a/swagger/sdrangel/code/qt5/client/SWGVORLocalizerSettings.cpp b/swagger/sdrangel/code/qt5/client/SWGVORLocalizerSettings.cpp index f1aaf08c8..5ded86f5f 100644 --- a/swagger/sdrangel/code/qt5/client/SWGVORLocalizerSettings.cpp +++ b/swagger/sdrangel/code/qt5/client/SWGVORLocalizerSettings.cpp @@ -50,6 +50,8 @@ SWGVORLocalizerSettings::SWGVORLocalizerSettings() { m_force_rr_averaging_isSet = false; center_shift = 0; m_center_shift_isSet = false; + rollup_state = nullptr; + m_rollup_state_isSet = false; } SWGVORLocalizerSettings::~SWGVORLocalizerSettings() { @@ -80,6 +82,8 @@ SWGVORLocalizerSettings::init() { m_force_rr_averaging_isSet = false; center_shift = 0; m_center_shift_isSet = false; + rollup_state = new SWGRollupState(); + m_rollup_state_isSet = false; } void @@ -99,6 +103,9 @@ SWGVORLocalizerSettings::cleanup() { + if(rollup_state != nullptr) { + delete rollup_state; + } } SWGVORLocalizerSettings* @@ -134,6 +141,8 @@ SWGVORLocalizerSettings::fromJsonObject(QJsonObject &pJson) { ::SWGSDRangel::setValue(¢er_shift, pJson["centerShift"], "qint32", ""); + ::SWGSDRangel::setValue(&rollup_state, pJson["rollupState"], "SWGRollupState", "SWGRollupState"); + } QString @@ -183,6 +192,9 @@ SWGVORLocalizerSettings::asJsonObject() { if(m_center_shift_isSet){ obj->insert("centerShift", QJsonValue(center_shift)); } + if((rollup_state != nullptr) && (rollup_state->isSet())){ + toJsonValue(QString("rollupState"), rollup_state, obj, QString("SWGRollupState")); + } return obj; } @@ -297,6 +309,16 @@ SWGVORLocalizerSettings::setCenterShift(qint32 center_shift) { this->m_center_shift_isSet = true; } +SWGRollupState* +SWGVORLocalizerSettings::getRollupState() { + return rollup_state; +} +void +SWGVORLocalizerSettings::setRollupState(SWGRollupState* rollup_state) { + this->rollup_state = rollup_state; + this->m_rollup_state_isSet = true; +} + bool SWGVORLocalizerSettings::isSet(){ @@ -335,6 +357,9 @@ SWGVORLocalizerSettings::isSet(){ if(m_center_shift_isSet){ isObjectUpdated = true; break; } + if(rollup_state && rollup_state->isSet()){ + isObjectUpdated = true; break; + } }while(false); return isObjectUpdated; } diff --git a/swagger/sdrangel/code/qt5/client/SWGVORLocalizerSettings.h b/swagger/sdrangel/code/qt5/client/SWGVORLocalizerSettings.h index 194139528..192b8f764 100644 --- a/swagger/sdrangel/code/qt5/client/SWGVORLocalizerSettings.h +++ b/swagger/sdrangel/code/qt5/client/SWGVORLocalizerSettings.h @@ -22,6 +22,7 @@ #include +#include "SWGRollupState.h" #include #include "SWGObject.h" @@ -75,6 +76,9 @@ public: qint32 getCenterShift(); void setCenterShift(qint32 center_shift); + SWGRollupState* getRollupState(); + void setRollupState(SWGRollupState* rollup_state); + virtual bool isSet() override; @@ -112,6 +116,9 @@ private: qint32 center_shift; bool m_center_shift_isSet; + SWGRollupState* rollup_state; + bool m_rollup_state_isSet; + }; } diff --git a/swagger/sdrangel/code/qt5/client/SWGWFMDemodSettings.cpp b/swagger/sdrangel/code/qt5/client/SWGWFMDemodSettings.cpp index 349e19a77..5f3a7c9a1 100644 --- a/swagger/sdrangel/code/qt5/client/SWGWFMDemodSettings.cpp +++ b/swagger/sdrangel/code/qt5/client/SWGWFMDemodSettings.cpp @@ -60,6 +60,8 @@ SWGWFMDemodSettings::SWGWFMDemodSettings() { m_reverse_api_channel_index_isSet = false; channel_marker = nullptr; m_channel_marker_isSet = false; + rollup_state = nullptr; + m_rollup_state_isSet = false; } SWGWFMDemodSettings::~SWGWFMDemodSettings() { @@ -100,6 +102,8 @@ SWGWFMDemodSettings::init() { m_reverse_api_channel_index_isSet = false; channel_marker = new SWGChannelMarker(); m_channel_marker_isSet = false; + rollup_state = new SWGRollupState(); + m_rollup_state_isSet = false; } void @@ -128,6 +132,9 @@ SWGWFMDemodSettings::cleanup() { if(channel_marker != nullptr) { delete channel_marker; } + if(rollup_state != nullptr) { + delete rollup_state; + } } SWGWFMDemodSettings* @@ -173,6 +180,8 @@ SWGWFMDemodSettings::fromJsonObject(QJsonObject &pJson) { ::SWGSDRangel::setValue(&channel_marker, pJson["channelMarker"], "SWGChannelMarker", "SWGChannelMarker"); + ::SWGSDRangel::setValue(&rollup_state, pJson["rollupState"], "SWGRollupState", "SWGRollupState"); + } QString @@ -237,6 +246,9 @@ SWGWFMDemodSettings::asJsonObject() { if((channel_marker != nullptr) && (channel_marker->isSet())){ toJsonValue(QString("channelMarker"), channel_marker, obj, QString("SWGChannelMarker")); } + if((rollup_state != nullptr) && (rollup_state->isSet())){ + toJsonValue(QString("rollupState"), rollup_state, obj, QString("SWGRollupState")); + } return obj; } @@ -401,6 +413,16 @@ SWGWFMDemodSettings::setChannelMarker(SWGChannelMarker* channel_marker) { this->m_channel_marker_isSet = true; } +SWGRollupState* +SWGWFMDemodSettings::getRollupState() { + return rollup_state; +} +void +SWGWFMDemodSettings::setRollupState(SWGRollupState* rollup_state) { + this->rollup_state = rollup_state; + this->m_rollup_state_isSet = true; +} + bool SWGWFMDemodSettings::isSet(){ @@ -454,6 +476,9 @@ SWGWFMDemodSettings::isSet(){ if(channel_marker && channel_marker->isSet()){ isObjectUpdated = true; break; } + if(rollup_state && rollup_state->isSet()){ + isObjectUpdated = true; break; + } }while(false); return isObjectUpdated; } diff --git a/swagger/sdrangel/code/qt5/client/SWGWFMDemodSettings.h b/swagger/sdrangel/code/qt5/client/SWGWFMDemodSettings.h index 1e6c2c409..c3f66bde1 100644 --- a/swagger/sdrangel/code/qt5/client/SWGWFMDemodSettings.h +++ b/swagger/sdrangel/code/qt5/client/SWGWFMDemodSettings.h @@ -23,6 +23,7 @@ #include "SWGChannelMarker.h" +#include "SWGRollupState.h" #include #include "SWGObject.h" @@ -91,6 +92,9 @@ public: SWGChannelMarker* getChannelMarker(); void setChannelMarker(SWGChannelMarker* channel_marker); + SWGRollupState* getRollupState(); + void setRollupState(SWGRollupState* rollup_state); + virtual bool isSet() override; @@ -143,6 +147,9 @@ private: SWGChannelMarker* channel_marker; bool m_channel_marker_isSet; + SWGRollupState* rollup_state; + bool m_rollup_state_isSet; + }; } diff --git a/swagger/sdrangel/code/qt5/client/SWGWFMModSettings.cpp b/swagger/sdrangel/code/qt5/client/SWGWFMModSettings.cpp index e8c2724da..cc5294db6 100644 --- a/swagger/sdrangel/code/qt5/client/SWGWFMModSettings.cpp +++ b/swagger/sdrangel/code/qt5/client/SWGWFMModSettings.cpp @@ -68,6 +68,8 @@ SWGWFMModSettings::SWGWFMModSettings() { m_cw_keyer_isSet = false; channel_marker = nullptr; m_channel_marker_isSet = false; + rollup_state = nullptr; + m_rollup_state_isSet = false; } SWGWFMModSettings::~SWGWFMModSettings() { @@ -116,6 +118,8 @@ SWGWFMModSettings::init() { m_cw_keyer_isSet = false; channel_marker = new SWGChannelMarker(); m_channel_marker_isSet = false; + rollup_state = new SWGRollupState(); + m_rollup_state_isSet = false; } void @@ -150,6 +154,9 @@ SWGWFMModSettings::cleanup() { if(channel_marker != nullptr) { delete channel_marker; } + if(rollup_state != nullptr) { + delete rollup_state; + } } SWGWFMModSettings* @@ -203,6 +210,8 @@ SWGWFMModSettings::fromJsonObject(QJsonObject &pJson) { ::SWGSDRangel::setValue(&channel_marker, pJson["channelMarker"], "SWGChannelMarker", "SWGChannelMarker"); + ::SWGSDRangel::setValue(&rollup_state, pJson["rollupState"], "SWGRollupState", "SWGRollupState"); + } QString @@ -279,6 +288,9 @@ SWGWFMModSettings::asJsonObject() { if((channel_marker != nullptr) && (channel_marker->isSet())){ toJsonValue(QString("channelMarker"), channel_marker, obj, QString("SWGChannelMarker")); } + if((rollup_state != nullptr) && (rollup_state->isSet())){ + toJsonValue(QString("rollupState"), rollup_state, obj, QString("SWGRollupState")); + } return obj; } @@ -483,6 +495,16 @@ SWGWFMModSettings::setChannelMarker(SWGChannelMarker* channel_marker) { this->m_channel_marker_isSet = true; } +SWGRollupState* +SWGWFMModSettings::getRollupState() { + return rollup_state; +} +void +SWGWFMModSettings::setRollupState(SWGRollupState* rollup_state) { + this->rollup_state = rollup_state; + this->m_rollup_state_isSet = true; +} + bool SWGWFMModSettings::isSet(){ @@ -548,6 +570,9 @@ SWGWFMModSettings::isSet(){ if(channel_marker && channel_marker->isSet()){ isObjectUpdated = true; break; } + if(rollup_state && rollup_state->isSet()){ + isObjectUpdated = true; break; + } }while(false); return isObjectUpdated; } diff --git a/swagger/sdrangel/code/qt5/client/SWGWFMModSettings.h b/swagger/sdrangel/code/qt5/client/SWGWFMModSettings.h index 6c44dc28a..97d520dfb 100644 --- a/swagger/sdrangel/code/qt5/client/SWGWFMModSettings.h +++ b/swagger/sdrangel/code/qt5/client/SWGWFMModSettings.h @@ -24,6 +24,7 @@ #include "SWGCWKeyerSettings.h" #include "SWGChannelMarker.h" +#include "SWGRollupState.h" #include #include "SWGObject.h" @@ -104,6 +105,9 @@ public: SWGChannelMarker* getChannelMarker(); void setChannelMarker(SWGChannelMarker* channel_marker); + SWGRollupState* getRollupState(); + void setRollupState(SWGRollupState* rollup_state); + virtual bool isSet() override; @@ -168,6 +172,9 @@ private: SWGChannelMarker* channel_marker; bool m_channel_marker_isSet; + SWGRollupState* rollup_state; + bool m_rollup_state_isSet; + }; }