mirror of
https://github.com/f4exb/sdrangel.git
synced 2024-09-27 15:26:33 -04:00
REST API: config: fixes (2)
This commit is contained in:
parent
6a0038e5bd
commit
ec22056cbf
@ -238,6 +238,7 @@ void ChannelAnalyzerWebAPIAdapter::webapiUpdateChannelSettings(
|
|||||||
if (channelSettingsKeys.contains("scopeConfig.tracesData"))
|
if (channelSettingsKeys.contains("scopeConfig.tracesData"))
|
||||||
{
|
{
|
||||||
QList<SWGSDRangel::SWGTraceData *> *tracesData = response.getChannelAnalyzerSettings()->getScopeConfig()->getTracesData();
|
QList<SWGSDRangel::SWGTraceData *> *tracesData = response.getChannelAnalyzerSettings()->getScopeConfig()->getTracesData();
|
||||||
|
scopeSettings.m_tracesData.clear();
|
||||||
|
|
||||||
for (int i = 0; i < 10; i++) // no more than 10 traces anyway
|
for (int i = 0; i < 10; i++) // no more than 10 traces anyway
|
||||||
{
|
{
|
||||||
@ -308,6 +309,7 @@ void ChannelAnalyzerWebAPIAdapter::webapiUpdateChannelSettings(
|
|||||||
if (channelSettingsKeys.contains("scopeConfig.triggersData"))
|
if (channelSettingsKeys.contains("scopeConfig.triggersData"))
|
||||||
{
|
{
|
||||||
QList<SWGSDRangel::SWGTriggerData *> *triggersData = response.getChannelAnalyzerSettings()->getScopeConfig()->getTriggersData();
|
QList<SWGSDRangel::SWGTriggerData *> *triggersData = response.getChannelAnalyzerSettings()->getScopeConfig()->getTriggersData();
|
||||||
|
scopeSettings.m_triggersData.clear();
|
||||||
|
|
||||||
for (int i = 0; i < 10; i++) // no more than 10 triggers anyway
|
for (int i = 0; i < 10; i++) // no more than 10 triggers anyway
|
||||||
{
|
{
|
||||||
|
@ -1440,6 +1440,10 @@ void SoapySDRInput::webapiUpdateDeviceSettings(
|
|||||||
const QStringList& deviceSettingsKeys,
|
const QStringList& deviceSettingsKeys,
|
||||||
SWGSDRangel::SWGDeviceSettings& response)
|
SWGSDRangel::SWGDeviceSettings& response)
|
||||||
{
|
{
|
||||||
|
for (int i = 0; i < deviceSettingsKeys.count(); i++) {
|
||||||
|
qDebug("SoapySDRInput::webapiUpdateDeviceSettings %s", qPrintable(deviceSettingsKeys.at(i)));
|
||||||
|
}
|
||||||
|
|
||||||
if (deviceSettingsKeys.contains("centerFrequency")) {
|
if (deviceSettingsKeys.contains("centerFrequency")) {
|
||||||
settings.m_centerFrequency = response.getSoapySdrInputSettings()->getCenterFrequency();
|
settings.m_centerFrequency = response.getSoapySdrInputSettings()->getCenterFrequency();
|
||||||
}
|
}
|
||||||
@ -1490,6 +1494,11 @@ void SoapySDRInput::webapiUpdateDeviceSettings(
|
|||||||
QVariant v = webapiVariantFromArgValue(itArg);
|
QVariant v = webapiVariantFromArgValue(itArg);
|
||||||
itSettings.value() = v.toDouble();
|
itSettings.value() = v.toDouble();
|
||||||
}
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
QVariant v = webapiVariantFromArgValue(itArg);
|
||||||
|
settings.m_tunableElements.insert(*itArg->getKey(), v.toDouble());
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -1510,6 +1519,11 @@ void SoapySDRInput::webapiUpdateDeviceSettings(
|
|||||||
QVariant v = webapiVariantFromArgValue(itArg);
|
QVariant v = webapiVariantFromArgValue(itArg);
|
||||||
itSettings.value() = v.toDouble();
|
itSettings.value() = v.toDouble();
|
||||||
}
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
QVariant v = webapiVariantFromArgValue(itArg);
|
||||||
|
settings.m_individualGains.insert(*itArg->getKey(), v.toDouble());
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -1543,6 +1557,8 @@ void SoapySDRInput::webapiUpdateDeviceSettings(
|
|||||||
|
|
||||||
if (itSettings != settings.m_streamArgSettings.end()) {
|
if (itSettings != settings.m_streamArgSettings.end()) {
|
||||||
itSettings.value() = webapiVariantFromArgValue(itArg);
|
itSettings.value() = webapiVariantFromArgValue(itArg);
|
||||||
|
} else {
|
||||||
|
settings.m_streamArgSettings.insert(*itArg->getKey(), webapiVariantFromArgValue(itArg));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -1557,6 +1573,8 @@ void SoapySDRInput::webapiUpdateDeviceSettings(
|
|||||||
|
|
||||||
if (itSettings != settings.m_deviceArgSettings.end()) {
|
if (itSettings != settings.m_deviceArgSettings.end()) {
|
||||||
itSettings.value() = webapiVariantFromArgValue(itArg);
|
itSettings.value() = webapiVariantFromArgValue(itArg);
|
||||||
|
} else {
|
||||||
|
settings.m_deviceArgSettings.insert(*itArg->getKey(), webapiVariantFromArgValue(itArg));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -24,7 +24,8 @@ bool ChannelUtils::compareChannelURIs(const QString& registerdChannelURI, const
|
|||||||
|
|
||||||
QString ChannelUtils::getRegisteredChannelURI(const QString& xChannelURI)
|
QString ChannelUtils::getRegisteredChannelURI(const QString& xChannelURI)
|
||||||
{
|
{
|
||||||
if (xChannelURI == "sdrangel.channel.chanalyzerng") {
|
if ((xChannelURI == "sdrangel.channel.chanalyzerng")
|
||||||
|
|| (xChannelURI == "org.f4exb.sdrangelove.channel.chanalyzer")) {
|
||||||
return "sdrangel.channel.chanalyzer";
|
return "sdrangel.channel.chanalyzer";
|
||||||
} else if (xChannelURI == "de.maintech.sdrangelove.channel.am") {
|
} else if (xChannelURI == "de.maintech.sdrangelove.channel.am") {
|
||||||
return "sdrangel.channel.amdemod";
|
return "sdrangel.channel.amdemod";
|
||||||
@ -34,6 +35,10 @@ QString ChannelUtils::getRegisteredChannelURI(const QString& xChannelURI)
|
|||||||
return "sdrangel.channel.ssbdemod";
|
return "sdrangel.channel.ssbdemod";
|
||||||
} else if (xChannelURI == "de.maintech.sdrangelove.channel.wfm") {
|
} else if (xChannelURI == "de.maintech.sdrangelove.channel.wfm") {
|
||||||
return "sdrangel.channel.wfmdemod";
|
return "sdrangel.channel.wfmdemod";
|
||||||
|
} else if (xChannelURI == "sdrangel.channel.udpsrc") {
|
||||||
|
return "sdrangel.channel.udpsink";
|
||||||
|
} else if (xChannelURI == "sdrangel.channeltx.udpsink") {
|
||||||
|
return "sdrangel.channeltx.udpsource";
|
||||||
} else {
|
} else {
|
||||||
return xChannelURI;
|
return xChannelURI;
|
||||||
}
|
}
|
||||||
|
@ -26,8 +26,11 @@ QString DeviceUtils::getRegisteredDeviceURI(const QString& xDeviceURI)
|
|||||||
{
|
{
|
||||||
if (xDeviceURI == "sdrangel.samplesource.bladerf") {
|
if (xDeviceURI == "sdrangel.samplesource.bladerf") {
|
||||||
return "sdrangel.samplesource.bladerf1input";
|
return "sdrangel.samplesource.bladerf1input";
|
||||||
} else if (xDeviceURI == "sdrangel.samplesource.bladerf1output") {
|
} else if ((xDeviceURI == "sdrangel.samplesource.bladerf1output")
|
||||||
|
|| (xDeviceURI == "sdrangel.samplesource.bladerfoutput")) {
|
||||||
return "sdrangel.samplesink.bladerf1output";
|
return "sdrangel.samplesink.bladerf1output";
|
||||||
|
} else if (xDeviceURI == "sdrangel.samplesource.bladerf2output") {
|
||||||
|
return "sdrangel.samplesink.bladerf2output";
|
||||||
} else if (xDeviceURI == "sdrangel.samplesource.filesource") {
|
} else if (xDeviceURI == "sdrangel.samplesource.filesource") {
|
||||||
return "sdrangel.samplesource.fileinput";
|
return "sdrangel.samplesource.fileinput";
|
||||||
} else if (xDeviceURI == "sdrangel.samplesource.hackrfoutput") {
|
} else if (xDeviceURI == "sdrangel.samplesource.hackrfoutput") {
|
||||||
|
@ -18,6 +18,18 @@
|
|||||||
#include "util/simpleserializer.h"
|
#include "util/simpleserializer.h"
|
||||||
#include "glscopesettings.h"
|
#include "glscopesettings.h"
|
||||||
|
|
||||||
|
const double GLScopeSettings::AMPS[27] = {
|
||||||
|
2e-1, 1e-1, 5e-2,
|
||||||
|
2e-2, 1e-2, 5e-3,
|
||||||
|
2e-3, 1e-3, 5e-4,
|
||||||
|
2e-4, 1e-4, 5e-5,
|
||||||
|
2e-5, 1e-5, 5e-6,
|
||||||
|
2e-6, 1e-6, 5e-7,
|
||||||
|
2e-7, 1e-7, 5e-8,
|
||||||
|
2e-8, 1e-8, 5e-9,
|
||||||
|
2e-9, 1e-9, 5e-10,
|
||||||
|
};
|
||||||
|
|
||||||
GLScopeSettings::GLScopeSettings()
|
GLScopeSettings::GLScopeSettings()
|
||||||
{
|
{
|
||||||
resetToDefaults();
|
resetToDefaults();
|
||||||
@ -134,7 +146,8 @@ bool GLScopeSettings::deserialize(const QByteArray& data)
|
|||||||
d.readS32(20 + 16*iTrace, &intValue, 0);
|
d.readS32(20 + 16*iTrace, &intValue, 0);
|
||||||
m_tracesData.back().m_projectionType = (Projector::ProjectionType) intValue;
|
m_tracesData.back().m_projectionType = (Projector::ProjectionType) intValue;
|
||||||
d.readU32(21 + 16*iTrace, &uintValue, 0);
|
d.readU32(21 + 16*iTrace, &uintValue, 0);
|
||||||
m_tracesData.back().m_amp = uintValue;
|
m_tracesData.back().m_ampIndex = uintValue;
|
||||||
|
m_tracesData.back().m_amp = 0.2 / AMPS[m_tracesData.back().m_ampIndex < 27 ? m_tracesData.back().m_ampIndex : 26];
|
||||||
d.readS32(22 + 16*iTrace, &intValue, 0);
|
d.readS32(22 + 16*iTrace, &intValue, 0);
|
||||||
m_tracesData.back().m_ofsCoarse = intValue;
|
m_tracesData.back().m_ofsCoarse = intValue;
|
||||||
d.readS32(23 + 16*iTrace, &intValue, 0);
|
d.readS32(23 + 16*iTrace, &intValue, 0);
|
||||||
|
@ -157,6 +157,7 @@ public:
|
|||||||
int m_trigPre;
|
int m_trigPre;
|
||||||
std::vector<TraceData> m_tracesData;
|
std::vector<TraceData> m_tracesData;
|
||||||
std::vector<TriggerData> m_triggersData;
|
std::vector<TriggerData> m_triggersData;
|
||||||
|
static const double AMPS[27];
|
||||||
|
|
||||||
GLScopeSettings();
|
GLScopeSettings();
|
||||||
virtual ~GLScopeSettings();
|
virtual ~GLScopeSettings();
|
||||||
|
@ -318,19 +318,6 @@ void WebAPIAdapterBase::webapiUpdatePreset(
|
|||||||
|
|
||||||
if (deviceWebAPIAdapter)
|
if (deviceWebAPIAdapter)
|
||||||
{
|
{
|
||||||
if (!force) // In PATCH mode you must find the exact device and deserialize its current settings to be able to patch it
|
|
||||||
{
|
|
||||||
const QByteArray *config = preset->findDeviceConfig(deviceId, deviceSerial, deviceSequence);
|
|
||||||
|
|
||||||
if (!config) {
|
|
||||||
continue;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (!deviceWebAPIAdapter->deserialize(*config)) {
|
|
||||||
continue;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
deviceWebAPIAdapter->webapiSettingsPutPatch(
|
deviceWebAPIAdapter->webapiSettingsPutPatch(
|
||||||
force,
|
force,
|
||||||
deviceKeysIt->m_deviceKeys,
|
deviceKeysIt->m_deviceKeys,
|
||||||
|
@ -50,33 +50,37 @@
|
|||||||
const QMap<QString, QString> WebAPIRequestMapper::m_channelURIToSettingsKey = {
|
const QMap<QString, QString> WebAPIRequestMapper::m_channelURIToSettingsKey = {
|
||||||
{"sdrangel.channel.amdemod", "AMDemodSettings"},
|
{"sdrangel.channel.amdemod", "AMDemodSettings"},
|
||||||
{"de.maintech.sdrangelove.channel.am", "AMDemodSettings"}, // remap
|
{"de.maintech.sdrangelove.channel.am", "AMDemodSettings"}, // remap
|
||||||
{"sdrangel.channeltx.ammod", "AMModSettings"},
|
{"sdrangel.channeltx.modam", "AMModSettings"},
|
||||||
{"sdrangel.channeltx.atvmod", "ATVModSettings"},
|
{"sdrangel.channeltx.modatv", "ATVModSettings"},
|
||||||
{"sdrangel.channel.bfm", "BFMDemodSettings"},
|
{"sdrangel.channel.bfm", "BFMDemodSettings"},
|
||||||
{"sdrangel.channel.chanalyzer", "ChannelAnalyzerSettings"},
|
{"sdrangel.channel.chanalyzer", "ChannelAnalyzerSettings"},
|
||||||
{"sdrangel.channel.chanalyzerng", "ChannelAnalyzerSettings"}, // remap
|
{"sdrangel.channel.chanalyzerng", "ChannelAnalyzerSettings"}, // remap
|
||||||
|
{"org.f4exb.sdrangelove.channel.chanalyzer", "ChannelAnalyzerSettings"}, // remap
|
||||||
{"sdrangel.channel.demodatv", "ATVDemodSettings"},
|
{"sdrangel.channel.demodatv", "ATVDemodSettings"},
|
||||||
{"sdrangel.channel.demoddatv", "DATVDemodSettings"},
|
{"sdrangel.channel.demoddatv", "DATVDemodSettings"},
|
||||||
{"sdrangel.channel.dsddemod", "DSDDemodSettings"},
|
{"sdrangel.channel.dsddemod", "DSDDemodSettings"},
|
||||||
{"sdrangel.channeltx.filesrc", "FileSourceSettings"},
|
{"sdrangel.channeltx.filesource", "FileSourceSettings"},
|
||||||
{"sdrangel.channel.freedvdemod", "FreeDVDemodSettings"},
|
{"sdrangel.channel.freedvdemod", "FreeDVDemodSettings"},
|
||||||
{"sdrangel.channeltx.freedvmod", "FreeDVModSettings"},
|
{"sdrangel.channeltx.freedvmod", "FreeDVModSettings"},
|
||||||
{"sdrangel.channel.freqtracker", "FreqTrackerSettings"},
|
{"sdrangel.channel.freqtracker", "FreqTrackerSettings"},
|
||||||
{"sdrangel.channel.nfmdemod", "NFMDemodSettings"},
|
{"sdrangel.channel.nfmdemod", "NFMDemodSettings"},
|
||||||
{"de.maintech.sdrangelove.channel.nfm", "NFMDemodSettings"}, // remap
|
{"de.maintech.sdrangelove.channel.nfm", "NFMDemodSettings"}, // remap
|
||||||
{"sdrangel.channeltx.nfmmod", "NFMModSettings"},
|
{"sdrangel.channeltx.modnfm", "NFMModSettings"},
|
||||||
{"sdrangel.demod.localsink", "LocalSinkSettings"},
|
{"sdrangel.demod.localsink", "LocalSinkSettings"},
|
||||||
{"sdrangel.demod.localsource", "LocalSourceSettings"},
|
{"sdrangel.channel.localsink", "LocalSinkSettings"}, // remap
|
||||||
|
{"sdrangel.channel.localsource", "LocalSourceSettings"},
|
||||||
{"sdrangel.demod.remotesink", "RemoteSinkSettings"},
|
{"sdrangel.demod.remotesink", "RemoteSinkSettings"},
|
||||||
{"sdrangel.channeltx.remotesrc", "RemoteSourceSettings"},
|
{"sdrangel.channeltx.remotesource", "RemoteSourceSettings"},
|
||||||
{"sdrangel.channeltx.ssbmod", "SSBModSettings"},
|
{"sdrangel.channeltx.modssb", "SSBModSettings"},
|
||||||
{"sdrangel.channel.ssbdemod", "SSBDemodSettings"},
|
{"sdrangel.channel.ssbdemod", "SSBDemodSettings"},
|
||||||
{"de.maintech.sdrangelove.channel.ssb", "SSBDemodSettings"}, // remap
|
{"de.maintech.sdrangelove.channel.ssb", "SSBDemodSettings"}, // remap
|
||||||
{"sdrangel.channeltx.udpsink", "UDPSourceSettings"},
|
{"sdrangel.channeltx.udpsource", "UDPSourceSettings"},
|
||||||
{"sdrangel.demod.udpsrc", "UDPSinkSettings"},
|
{"sdrangel.channeltx.udpsink", "UDPSourceSettings"}, // remap
|
||||||
|
{"sdrangel.channel.udpsink", "UDPSinkSettings"},
|
||||||
|
{"sdrangel.channel.udpsrc", "UDPSinkSettings"}, // remap
|
||||||
{"sdrangel.channel.wfmdemod", "WFMDemodSettings"},
|
{"sdrangel.channel.wfmdemod", "WFMDemodSettings"},
|
||||||
{"de.maintech.sdrangelove.channel.wfm", "WFMDemodSettings"}, // remap
|
{"de.maintech.sdrangelove.channel.wfm", "WFMDemodSettings"}, // remap
|
||||||
{"sdrangel.channeltx.wfmmod", "WFMModSettings"}
|
{"sdrangel.channeltx.modwfm", "WFMModSettings"}
|
||||||
};
|
};
|
||||||
|
|
||||||
const QMap<QString, QString> WebAPIRequestMapper::m_deviceIdToSettingsKey = {
|
const QMap<QString, QString> WebAPIRequestMapper::m_deviceIdToSettingsKey = {
|
||||||
@ -86,8 +90,10 @@ const QMap<QString, QString> WebAPIRequestMapper::m_deviceIdToSettingsKey = {
|
|||||||
{"sdrangel.samplesource.bladerf", "bladeRF1InputSettings"}, // remap
|
{"sdrangel.samplesource.bladerf", "bladeRF1InputSettings"}, // remap
|
||||||
{"sdrangel.samplesink.bladerf1output", "bladeRF1OutputSettings"},
|
{"sdrangel.samplesink.bladerf1output", "bladeRF1OutputSettings"},
|
||||||
{"sdrangel.samplesource.bladerf1output", "bladeRF1OutputSettings"}, // remap
|
{"sdrangel.samplesource.bladerf1output", "bladeRF1OutputSettings"}, // remap
|
||||||
|
{"sdrangel.samplesource.bladerfoutput", "bladeRF1OutputSettings"}, // remap
|
||||||
{"sdrangel.samplesource.bladerf2input", "bladeRF2InputSettings"},
|
{"sdrangel.samplesource.bladerf2input", "bladeRF2InputSettings"},
|
||||||
{"sdrangel.samplesink.bladerf2output", "bladeRF2OutputSettings"},
|
{"sdrangel.samplesink.bladerf2output", "bladeRF2OutputSettings"},
|
||||||
|
{"sdrangel.samplesource.bladerf2output", "bladeRF2OutputSettings"}, // remap
|
||||||
{"sdrangel.samplesource.fcdpro", "fcdProSettings"},
|
{"sdrangel.samplesource.fcdpro", "fcdProSettings"},
|
||||||
{"sdrangel.samplesource.fcdproplus", "fcdProPlusSettings"},
|
{"sdrangel.samplesource.fcdproplus", "fcdProPlusSettings"},
|
||||||
{"sdrangel.samplesource.fileinput", "fileInputSettings"},
|
{"sdrangel.samplesource.fileinput", "fileInputSettings"},
|
||||||
@ -112,8 +118,8 @@ const QMap<QString, QString> WebAPIRequestMapper::m_deviceIdToSettingsKey = {
|
|||||||
{"sdrangel.samplesink.soapysdroutput", "soapySDROutputSettings"},
|
{"sdrangel.samplesink.soapysdroutput", "soapySDROutputSettings"},
|
||||||
{"sdrangel.samplesource.testsource", "testSourceSettings"},
|
{"sdrangel.samplesource.testsource", "testSourceSettings"},
|
||||||
{"sdrangel.samplemimo.testmi", "testMISettings"},
|
{"sdrangel.samplemimo.testmi", "testMISettings"},
|
||||||
{"sdrangel.samplesource.xtrx", "xtrxInputSettings"},
|
{"sdrangel.samplesource.xtrx", "XtrxInputSettings"},
|
||||||
{"sdrangel.samplesink.xtrx", "xtrxOutputSettings"}
|
{"sdrangel.samplesink.xtrx", "XtrxOutputSettings"}
|
||||||
};
|
};
|
||||||
|
|
||||||
const QMap<QString, QString> WebAPIRequestMapper::m_channelTypeToSettingsKey = {
|
const QMap<QString, QString> WebAPIRequestMapper::m_channelTypeToSettingsKey = {
|
||||||
@ -162,7 +168,7 @@ const QMap<QString, QString> WebAPIRequestMapper::m_sourceDeviceHwIdToSettingsKe
|
|||||||
{"SDRplay1", "sdrPlaySettings"},
|
{"SDRplay1", "sdrPlaySettings"},
|
||||||
{"SoapySDR", "soapySDRInputSettings"},
|
{"SoapySDR", "soapySDRInputSettings"},
|
||||||
{"TestSource", "testSourceSettings"},
|
{"TestSource", "testSourceSettings"},
|
||||||
{"XTRX", "xtrxInputSettings"}
|
{"XTRX", "XtrxInputSettings"}
|
||||||
};
|
};
|
||||||
|
|
||||||
const QMap<QString, QString> WebAPIRequestMapper::m_sinkDeviceHwIdToSettingsKey = {
|
const QMap<QString, QString> WebAPIRequestMapper::m_sinkDeviceHwIdToSettingsKey = {
|
||||||
@ -174,7 +180,7 @@ const QMap<QString, QString> WebAPIRequestMapper::m_sinkDeviceHwIdToSettingsKey
|
|||||||
{"PlutoSDR", "plutoSdrOutputSettings"},
|
{"PlutoSDR", "plutoSdrOutputSettings"},
|
||||||
{"RemoteOutput", "remoteOutputSettings"},
|
{"RemoteOutput", "remoteOutputSettings"},
|
||||||
{"SoapySDR", "soapySDROutputSettings"},
|
{"SoapySDR", "soapySDROutputSettings"},
|
||||||
{"XTRX", "xtrxOutputSettings"}
|
{"XTRX", "XtrxOutputSettings"}
|
||||||
};
|
};
|
||||||
|
|
||||||
const QMap<QString, QString> WebAPIRequestMapper::m_mimoDeviceHwIdToSettingsKey= {
|
const QMap<QString, QString> WebAPIRequestMapper::m_mimoDeviceHwIdToSettingsKey= {
|
||||||
@ -2332,6 +2338,11 @@ bool WebAPIRequestMapper::appendPresetKeys(
|
|||||||
preset->setGroup(new QString(presetJson["group"].toString()));
|
preset->setGroup(new QString(presetJson["group"].toString()));
|
||||||
presetKeys.m_keys.append("group");
|
presetKeys.m_keys.append("group");
|
||||||
}
|
}
|
||||||
|
if (presetJson.contains("layout"))
|
||||||
|
{
|
||||||
|
preset->setLayout(new QString(presetJson["layout"].toString()));
|
||||||
|
presetKeys.m_keys.append("layout");
|
||||||
|
}
|
||||||
|
|
||||||
if (presetJson.contains("spectrumConfig"))
|
if (presetJson.contains("spectrumConfig"))
|
||||||
{
|
{
|
||||||
@ -2477,6 +2488,11 @@ bool WebAPIRequestMapper::getChannel(
|
|||||||
channelSettings->setDsdDemodSettings(new SWGSDRangel::SWGDSDDemodSettings());
|
channelSettings->setDsdDemodSettings(new SWGSDRangel::SWGDSDDemodSettings());
|
||||||
channelSettings->getDsdDemodSettings()->fromJsonObject(settingsJsonObject);
|
channelSettings->getDsdDemodSettings()->fromJsonObject(settingsJsonObject);
|
||||||
}
|
}
|
||||||
|
else if (channelSettingsKey == "FileSourceSettings")
|
||||||
|
{
|
||||||
|
channelSettings->setFileSourceSettings(new SWGSDRangel::SWGFileSourceSettings());
|
||||||
|
channelSettings->getFileSourceSettings()->fromJsonObject(settingsJsonObject);
|
||||||
|
}
|
||||||
else if (channelSettingsKey == "FreeDVDemodSettings")
|
else if (channelSettingsKey == "FreeDVDemodSettings")
|
||||||
{
|
{
|
||||||
channelSettings->setFreeDvDemodSettings(new SWGSDRangel::SWGFreeDVDemodSettings());
|
channelSettings->setFreeDvDemodSettings(new SWGSDRangel::SWGFreeDVDemodSettings());
|
||||||
@ -2717,15 +2733,17 @@ bool WebAPIRequestMapper::getDevice(
|
|||||||
}
|
}
|
||||||
else if (deviceSettingsKey == "soapySDRInputSettings")
|
else if (deviceSettingsKey == "soapySDRInputSettings")
|
||||||
{
|
{
|
||||||
deviceSettings->setSoapySdrInputSettings(new SWGSDRangel::SWGSoapySDRInputSettings());
|
processSoapySDRSettings(deviceSettings, settingsJsonObject, deviceSettingsKeys, true);
|
||||||
deviceSettings->getSoapySdrInputSettings()->init(); // contains complex objects
|
// deviceSettings->setSoapySdrInputSettings(new SWGSDRangel::SWGSoapySDRInputSettings());
|
||||||
deviceSettings->getSoapySdrInputSettings()->fromJsonObject(settingsJsonObject);
|
// deviceSettings->getSoapySdrInputSettings()->init(); // contains complex objects
|
||||||
|
// deviceSettings->getSoapySdrInputSettings()->fromJsonObject(settingsJsonObject);
|
||||||
}
|
}
|
||||||
else if (deviceSettingsKey == "soapySDROutputSettings")
|
else if (deviceSettingsKey == "soapySDROutputSettings")
|
||||||
{
|
{
|
||||||
deviceSettings->setSoapySdrOutputSettings(new SWGSDRangel::SWGSoapySDROutputSettings());
|
processSoapySDRSettings(deviceSettings, settingsJsonObject, deviceSettingsKeys, false);
|
||||||
deviceSettings->getSoapySdrOutputSettings()->init(); // contains complex objects
|
// deviceSettings->setSoapySdrOutputSettings(new SWGSDRangel::SWGSoapySDROutputSettings());
|
||||||
deviceSettings->getSoapySdrOutputSettings()->fromJsonObject(settingsJsonObject);
|
// deviceSettings->getSoapySdrOutputSettings()->init(); // contains complex objects
|
||||||
|
// deviceSettings->getSoapySdrOutputSettings()->fromJsonObject(settingsJsonObject);
|
||||||
}
|
}
|
||||||
else if (deviceSettingsKey == "testSourceSettings")
|
else if (deviceSettingsKey == "testSourceSettings")
|
||||||
{
|
{
|
||||||
@ -2741,12 +2759,12 @@ bool WebAPIRequestMapper::getDevice(
|
|||||||
deviceSettings->setTestMiSettings(new SWGSDRangel::SWGTestMISettings());
|
deviceSettings->setTestMiSettings(new SWGSDRangel::SWGTestMISettings());
|
||||||
deviceSettings->getTestMiSettings()->fromJsonObject(settingsJsonObject);
|
deviceSettings->getTestMiSettings()->fromJsonObject(settingsJsonObject);
|
||||||
}
|
}
|
||||||
else if (deviceSettingsKey == "xtrxInputSettings")
|
else if (deviceSettingsKey == "XtrxInputSettings")
|
||||||
{
|
{
|
||||||
deviceSettings->setXtrxInputSettings(new SWGSDRangel::SWGXtrxInputSettings());
|
deviceSettings->setXtrxInputSettings(new SWGSDRangel::SWGXtrxInputSettings());
|
||||||
deviceSettings->getXtrxInputSettings()->fromJsonObject(settingsJsonObject);
|
deviceSettings->getXtrxInputSettings()->fromJsonObject(settingsJsonObject);
|
||||||
}
|
}
|
||||||
else if (deviceSettingsKey == "xtrxOutputSettings")
|
else if (deviceSettingsKey == "XtrxOutputSettings")
|
||||||
{
|
{
|
||||||
deviceSettings->setXtrxOutputSettings(new SWGSDRangel::SWGXtrxOutputSettings());
|
deviceSettings->setXtrxOutputSettings(new SWGSDRangel::SWGXtrxOutputSettings());
|
||||||
deviceSettings->getXtrxOutputSettings()->fromJsonObject(settingsJsonObject);
|
deviceSettings->getXtrxOutputSettings()->fromJsonObject(settingsJsonObject);
|
||||||
@ -2808,7 +2826,7 @@ void WebAPIRequestMapper::appendSettingsArrayKeys(
|
|||||||
|
|
||||||
for (int arrayIndex = 0; arrayIndex < arrayJson.count(); arrayIndex++)
|
for (int arrayIndex = 0; arrayIndex < arrayJson.count(); arrayIndex++)
|
||||||
{
|
{
|
||||||
QJsonValue v = arrayJson.takeAt(arrayIndex);
|
QJsonValue v = arrayJson.at(arrayIndex);
|
||||||
|
|
||||||
if (v.isObject())
|
if (v.isObject())
|
||||||
{
|
{
|
||||||
@ -2942,6 +2960,9 @@ void WebAPIRequestMapper::processChannelAnalyzerSettings(
|
|||||||
if (channelSettingsJson.contains("fll")) {
|
if (channelSettingsJson.contains("fll")) {
|
||||||
channelAnalyzerSettings->setFll(channelSettingsJson["fll"].toInt());
|
channelAnalyzerSettings->setFll(channelSettingsJson["fll"].toInt());
|
||||||
}
|
}
|
||||||
|
if (channelSettingsJson.contains("frequency")) {
|
||||||
|
channelAnalyzerSettings->setFrequency(channelSettingsJson["frequency"].toInt());
|
||||||
|
}
|
||||||
if (channelSettingsJson.contains("inputType")) {
|
if (channelSettingsJson.contains("inputType")) {
|
||||||
channelAnalyzerSettings->setInputType(channelSettingsJson["inputType"].toInt());
|
channelAnalyzerSettings->setInputType(channelSettingsJson["inputType"].toInt());
|
||||||
}
|
}
|
||||||
@ -2966,6 +2987,12 @@ void WebAPIRequestMapper::processChannelAnalyzerSettings(
|
|||||||
if (channelSettingsJson.contains("spanLog2")) {
|
if (channelSettingsJson.contains("spanLog2")) {
|
||||||
channelAnalyzerSettings->setSpanLog2(channelSettingsJson["spanLog2"].toInt());
|
channelAnalyzerSettings->setSpanLog2(channelSettingsJson["spanLog2"].toInt());
|
||||||
}
|
}
|
||||||
|
if (channelSettingsJson.contains("ssb")) {
|
||||||
|
channelAnalyzerSettings->setSsb(channelSettingsJson["ssb"].toInt());
|
||||||
|
}
|
||||||
|
if (channelSettingsJson.contains("title")) {
|
||||||
|
channelAnalyzerSettings->setTitle(new QString(channelSettingsJson["title"].toString()));
|
||||||
|
}
|
||||||
|
|
||||||
if (channelSettingsJson.contains("spectrumConfig"))
|
if (channelSettingsJson.contains("spectrumConfig"))
|
||||||
{
|
{
|
||||||
@ -3030,4 +3057,275 @@ void WebAPIRequestMapper::processChannelAnalyzerSettings(
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
void WebAPIRequestMapper::processSoapySDRSettings(
|
||||||
|
SWGSDRangel::SWGDeviceSettings *deviceSettings,
|
||||||
|
QJsonObject& deviceSettingsJson,
|
||||||
|
QStringList& deviceSettingsKeys,
|
||||||
|
bool inputElseOutput
|
||||||
|
)
|
||||||
|
{
|
||||||
|
if (inputElseOutput)
|
||||||
|
{
|
||||||
|
SWGSDRangel::SWGSoapySDRInputSettings *swgSoapySDRInputSettings = new SWGSDRangel::SWGSoapySDRInputSettings();
|
||||||
|
deviceSettings->setSoapySdrInputSettings(swgSoapySDRInputSettings);
|
||||||
|
swgSoapySDRInputSettings->init();
|
||||||
|
|
||||||
|
if (deviceSettingsJson.contains("centerFrequency")) {
|
||||||
|
swgSoapySDRInputSettings->setCenterFrequency(deviceSettingsJson["centerFrequency"].toInt());
|
||||||
|
}
|
||||||
|
if (deviceSettingsJson.contains("LOppmTenths")) {
|
||||||
|
swgSoapySDRInputSettings->setLOppmTenths(deviceSettingsJson["LOppmTenths"].toInt());
|
||||||
|
}
|
||||||
|
if (deviceSettingsJson.contains("devSampleRate")) {
|
||||||
|
swgSoapySDRInputSettings->setDevSampleRate(deviceSettingsJson["devSampleRate"].toInt());
|
||||||
|
}
|
||||||
|
if (deviceSettingsJson.contains("log2Decim")) {
|
||||||
|
swgSoapySDRInputSettings->setLog2Decim(deviceSettingsJson["log2Decim"].toInt());
|
||||||
|
}
|
||||||
|
if (deviceSettingsJson.contains("fcPos")) {
|
||||||
|
swgSoapySDRInputSettings->setFcPos(deviceSettingsJson["fcPos"].toInt());
|
||||||
|
}
|
||||||
|
if (deviceSettingsJson.contains("softDCCorrection")) {
|
||||||
|
swgSoapySDRInputSettings->setSoftDcCorrection(deviceSettingsJson["softDCCorrection"].toInt());
|
||||||
|
}
|
||||||
|
if (deviceSettingsJson.contains("softIQCorrection")) {
|
||||||
|
swgSoapySDRInputSettings->setSoftIqCorrection(deviceSettingsJson["softIQCorrection"].toInt());
|
||||||
|
}
|
||||||
|
if (deviceSettingsJson.contains("transverterMode")) {
|
||||||
|
swgSoapySDRInputSettings->setTransverterMode(deviceSettingsJson["transverterMode"].toInt());
|
||||||
|
}
|
||||||
|
if (deviceSettingsJson.contains("transverterDeltaFrequency")) {
|
||||||
|
swgSoapySDRInputSettings->setTransverterDeltaFrequency(deviceSettingsJson["transverterDeltaFrequency"].toInt());
|
||||||
|
}
|
||||||
|
if (deviceSettingsJson.contains("fileRecordName")) {
|
||||||
|
swgSoapySDRInputSettings->setFileRecordName(new QString(deviceSettingsJson["fileRecordName"].toString()));
|
||||||
|
}
|
||||||
|
if (deviceSettingsJson.contains("antenna")) {
|
||||||
|
swgSoapySDRInputSettings->setAntenna(new QString(deviceSettingsJson["antenna"].toString()));
|
||||||
|
}
|
||||||
|
if (deviceSettingsJson.contains("bandwidth")) {
|
||||||
|
swgSoapySDRInputSettings->setBandwidth(deviceSettingsJson["bandwidth"].toInt());
|
||||||
|
}
|
||||||
|
if (deviceSettingsJson.contains("globalGain")) {
|
||||||
|
swgSoapySDRInputSettings->setGlobalGain(deviceSettingsJson["globalGain"].toInt());
|
||||||
|
}
|
||||||
|
if (deviceSettingsJson.contains("autoGain")) {
|
||||||
|
swgSoapySDRInputSettings->setAutoGain(deviceSettingsJson["autoGain"].toInt());
|
||||||
|
}
|
||||||
|
if (deviceSettingsJson.contains("autoDCCorrection")) {
|
||||||
|
swgSoapySDRInputSettings->setAutoDcCorrection(deviceSettingsJson["autoDCCorrection"].toInt());
|
||||||
|
}
|
||||||
|
if (deviceSettingsJson.contains("autoIQCorrection")) {
|
||||||
|
swgSoapySDRInputSettings->setAutoIqCorrection(deviceSettingsJson["autoIQCorrection"].toInt());
|
||||||
|
}
|
||||||
|
if (deviceSettingsJson.contains("dcCorrection"))
|
||||||
|
{
|
||||||
|
SWGSDRangel::SWGComplex *swgComplex = new SWGSDRangel::SWGComplex;
|
||||||
|
swgSoapySDRInputSettings->setDcCorrection(swgComplex);
|
||||||
|
QJsonObject complexJson = deviceSettingsJson["dcCorrection"].toObject();
|
||||||
|
|
||||||
|
if (complexJson.contains("real")) {
|
||||||
|
swgComplex->setReal(complexJson["real"].toDouble());
|
||||||
|
}
|
||||||
|
if (complexJson.contains("imag")) {
|
||||||
|
swgComplex->setImag(complexJson["imag"].toDouble());
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if (deviceSettingsJson.contains("iqCorrection"))
|
||||||
|
{
|
||||||
|
SWGSDRangel::SWGComplex *swgComplex = new SWGSDRangel::SWGComplex;
|
||||||
|
swgSoapySDRInputSettings->setIqCorrection(swgComplex);
|
||||||
|
QJsonObject complexJson = deviceSettingsJson["iqCorrection"].toObject();
|
||||||
|
|
||||||
|
if (complexJson.contains("real")) {
|
||||||
|
swgComplex->setReal(complexJson["real"].toDouble());
|
||||||
|
}
|
||||||
|
if (complexJson.contains("imag")) {
|
||||||
|
swgComplex->setImag(complexJson["imag"].toDouble());
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if (deviceSettingsJson.contains("useReverseAPI")) {
|
||||||
|
swgSoapySDRInputSettings->setUseReverseApi(deviceSettingsJson["useReverseAPI"].toInt());
|
||||||
|
}
|
||||||
|
if (deviceSettingsJson.contains("reverseAPIAddress")) {
|
||||||
|
swgSoapySDRInputSettings->setReverseApiAddress(new QString(deviceSettingsJson["reverseAPIAddress"].toString()));
|
||||||
|
}
|
||||||
|
if (deviceSettingsJson.contains("reverseAPIPort")) {
|
||||||
|
swgSoapySDRInputSettings->setReverseApiPort(deviceSettingsJson["reverseAPIPort"].toInt());
|
||||||
|
}
|
||||||
|
if (deviceSettingsJson.contains("reverseAPIDeviceIndex")) {
|
||||||
|
swgSoapySDRInputSettings->setReverseApiDeviceIndex(deviceSettingsJson["reverseAPIDeviceIndex"].toInt());
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
SWGSDRangel::SWGSoapySDROutputSettings *swgSoapySDROutputSettings = new SWGSDRangel::SWGSoapySDROutputSettings();
|
||||||
|
deviceSettings->setSoapySdrOutputSettings(swgSoapySDROutputSettings);
|
||||||
|
swgSoapySDROutputSettings->init();
|
||||||
|
|
||||||
|
if (deviceSettingsJson.contains("centerFrequency")) {
|
||||||
|
swgSoapySDROutputSettings->setCenterFrequency(deviceSettingsJson["centerFrequency"].toInt());
|
||||||
|
}
|
||||||
|
if (deviceSettingsJson.contains("LOppmTenths")) {
|
||||||
|
swgSoapySDROutputSettings->setLOppmTenths(deviceSettingsJson["LOppmTenths"].toInt());
|
||||||
|
}
|
||||||
|
if (deviceSettingsJson.contains("devSampleRate")) {
|
||||||
|
swgSoapySDROutputSettings->setDevSampleRate(deviceSettingsJson["devSampleRate"].toInt());
|
||||||
|
}
|
||||||
|
if (deviceSettingsJson.contains("log2Interp")) {
|
||||||
|
swgSoapySDROutputSettings->setLog2Interp(deviceSettingsJson["log2Interp"].toInt());
|
||||||
|
}
|
||||||
|
if (deviceSettingsJson.contains("transverterMode")) {
|
||||||
|
swgSoapySDROutputSettings->setTransverterMode(deviceSettingsJson["transverterMode"].toInt());
|
||||||
|
}
|
||||||
|
if (deviceSettingsJson.contains("transverterDeltaFrequency")) {
|
||||||
|
swgSoapySDROutputSettings->setTransverterDeltaFrequency(deviceSettingsJson["transverterDeltaFrequency"].toInt());
|
||||||
|
}
|
||||||
|
if (deviceSettingsJson.contains("antenna")) {
|
||||||
|
swgSoapySDROutputSettings->setAntenna(new QString(deviceSettingsJson["antenna"].toString()));
|
||||||
|
}
|
||||||
|
if (deviceSettingsJson.contains("bandwidth")) {
|
||||||
|
swgSoapySDROutputSettings->setBandwidth(deviceSettingsJson["bandwidth"].toInt());
|
||||||
|
}
|
||||||
|
if (deviceSettingsJson.contains("globalGain")) {
|
||||||
|
swgSoapySDROutputSettings->setGlobalGain(deviceSettingsJson["globalGain"].toInt());
|
||||||
|
}
|
||||||
|
if (deviceSettingsJson.contains("autoGain")) {
|
||||||
|
swgSoapySDROutputSettings->setAutoGain(deviceSettingsJson["autoGain"].toInt());
|
||||||
|
}
|
||||||
|
if (deviceSettingsJson.contains("autoDCCorrection")) {
|
||||||
|
swgSoapySDROutputSettings->setAutoDcCorrection(deviceSettingsJson["autoDCCorrection"].toInt());
|
||||||
|
}
|
||||||
|
if (deviceSettingsJson.contains("autoIQCorrection")) {
|
||||||
|
swgSoapySDROutputSettings->setAutoIqCorrection(deviceSettingsJson["autoIQCorrection"].toInt());
|
||||||
|
}
|
||||||
|
if (deviceSettingsJson.contains("dcCorrection"))
|
||||||
|
{
|
||||||
|
SWGSDRangel::SWGComplex *swgComplex = new SWGSDRangel::SWGComplex;
|
||||||
|
swgSoapySDROutputSettings->setDcCorrection(swgComplex);
|
||||||
|
QJsonObject complexJson = deviceSettingsJson["dcCorrection"].toObject();
|
||||||
|
|
||||||
|
if (complexJson.contains("real")) {
|
||||||
|
swgComplex->setReal(complexJson["real"].toDouble());
|
||||||
|
}
|
||||||
|
if (complexJson.contains("imag")) {
|
||||||
|
swgComplex->setImag(complexJson["imag"].toDouble());
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if (deviceSettingsJson.contains("iqCorrection"))
|
||||||
|
{
|
||||||
|
SWGSDRangel::SWGComplex *swgComplex = new SWGSDRangel::SWGComplex;
|
||||||
|
swgSoapySDROutputSettings->setIqCorrection(swgComplex);
|
||||||
|
QJsonObject complexJson = deviceSettingsJson["iqCorrection"].toObject();
|
||||||
|
|
||||||
|
if (complexJson.contains("real")) {
|
||||||
|
swgComplex->setReal(complexJson["real"].toDouble());
|
||||||
|
}
|
||||||
|
if (complexJson.contains("imag")) {
|
||||||
|
swgComplex->setImag(complexJson["imag"].toDouble());
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if (deviceSettingsJson.contains("useReverseAPI")) {
|
||||||
|
swgSoapySDROutputSettings->setUseReverseApi(deviceSettingsJson["useReverseAPI"].toInt());
|
||||||
|
}
|
||||||
|
if (deviceSettingsJson.contains("reverseAPIAddress")) {
|
||||||
|
swgSoapySDROutputSettings->setReverseApiAddress(new QString(deviceSettingsJson["reverseAPIAddress"].toString()));
|
||||||
|
}
|
||||||
|
if (deviceSettingsJson.contains("reverseAPIPort")) {
|
||||||
|
swgSoapySDROutputSettings->setReverseApiPort(deviceSettingsJson["reverseAPIPort"].toInt());
|
||||||
|
}
|
||||||
|
if (deviceSettingsJson.contains("reverseAPIDeviceIndex")) {
|
||||||
|
swgSoapySDROutputSettings->setReverseApiDeviceIndex(deviceSettingsJson["reverseAPIDeviceIndex"].toInt());
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if (deviceSettingsKeys.contains("deviceArgSettings"))
|
||||||
|
{
|
||||||
|
QList<SWGSDRangel::SWGArgValue *> *swgArgSettings = new QList<SWGSDRangel::SWGArgValue *>;
|
||||||
|
QJsonArray argsJson = deviceSettingsJson["deviceArgSettings"].toArray();
|
||||||
|
|
||||||
|
if (inputElseOutput) {
|
||||||
|
deviceSettings->getSoapySdrInputSettings()->setDeviceArgSettings(swgArgSettings);
|
||||||
|
} else {
|
||||||
|
deviceSettings->getSoapySdrOutputSettings()->setDeviceArgSettings(swgArgSettings);
|
||||||
|
}
|
||||||
|
|
||||||
|
for (int i = 0; i < argsJson.count(); i++)
|
||||||
|
{
|
||||||
|
SWGSDRangel::SWGArgValue *argValue = new SWGSDRangel::SWGArgValue();
|
||||||
|
swgArgSettings->append(argValue);
|
||||||
|
QJsonObject argValueJson = argsJson.at(i).toObject();
|
||||||
|
argValue->fromJsonObject(argValueJson);
|
||||||
|
}
|
||||||
|
|
||||||
|
appendSettingsArrayKeys(deviceSettingsJson, "deviceArgSettings", deviceSettingsKeys);
|
||||||
|
}
|
||||||
|
|
||||||
|
if (deviceSettingsKeys.contains("individualGains"))
|
||||||
|
{
|
||||||
|
QList<SWGSDRangel::SWGArgValue *> *swgIndividualGains = new QList<SWGSDRangel::SWGArgValue *>;
|
||||||
|
QJsonArray argsJson = deviceSettingsJson["individualGains"].toArray();
|
||||||
|
|
||||||
|
if (inputElseOutput) {
|
||||||
|
deviceSettings->getSoapySdrInputSettings()->setIndividualGains(swgIndividualGains);
|
||||||
|
} else {
|
||||||
|
deviceSettings->getSoapySdrOutputSettings()->setIndividualGains(swgIndividualGains);
|
||||||
|
}
|
||||||
|
|
||||||
|
for (int i = 0; i < argsJson.count(); i++)
|
||||||
|
{
|
||||||
|
SWGSDRangel::SWGArgValue *argValue = new SWGSDRangel::SWGArgValue();
|
||||||
|
swgIndividualGains->append(argValue);
|
||||||
|
QJsonObject argValueJson = argsJson.at(i).toObject();
|
||||||
|
argValue->fromJsonObject(argValueJson);
|
||||||
|
}
|
||||||
|
|
||||||
|
appendSettingsArrayKeys(deviceSettingsJson, "individualGains", deviceSettingsKeys);
|
||||||
|
}
|
||||||
|
|
||||||
|
if (deviceSettingsKeys.contains("streamArgSettings"))
|
||||||
|
{
|
||||||
|
QList<SWGSDRangel::SWGArgValue *> *swgStreamArgSettings = new QList<SWGSDRangel::SWGArgValue *>;
|
||||||
|
QJsonArray argsJson = deviceSettingsJson["streamArgSettings"].toArray();
|
||||||
|
|
||||||
|
if (inputElseOutput) {
|
||||||
|
deviceSettings->getSoapySdrInputSettings()->setStreamArgSettings(swgStreamArgSettings);
|
||||||
|
} else {
|
||||||
|
deviceSettings->getSoapySdrOutputSettings()->setStreamArgSettings(swgStreamArgSettings);
|
||||||
|
}
|
||||||
|
|
||||||
|
for (int i = 0; i < argsJson.count(); i++)
|
||||||
|
{
|
||||||
|
SWGSDRangel::SWGArgValue *argValue = new SWGSDRangel::SWGArgValue();
|
||||||
|
swgStreamArgSettings->append(argValue);
|
||||||
|
QJsonObject argValueJson = argsJson.at(i).toObject();
|
||||||
|
argValue->fromJsonObject(argValueJson);
|
||||||
|
}
|
||||||
|
|
||||||
|
appendSettingsArrayKeys(deviceSettingsJson, "streamArgSettings", deviceSettingsKeys);
|
||||||
|
}
|
||||||
|
|
||||||
|
if (deviceSettingsKeys.contains("tunableElements"))
|
||||||
|
{
|
||||||
|
QList<SWGSDRangel::SWGArgValue *> *swgTunableElements = new QList<SWGSDRangel::SWGArgValue *>;
|
||||||
|
QJsonArray argsJson = deviceSettingsJson["tunableElements"].toArray();
|
||||||
|
|
||||||
|
if (inputElseOutput) {
|
||||||
|
deviceSettings->getSoapySdrInputSettings()->setTunableElements(swgTunableElements);
|
||||||
|
} else {
|
||||||
|
deviceSettings->getSoapySdrOutputSettings()->setTunableElements(swgTunableElements);
|
||||||
|
}
|
||||||
|
|
||||||
|
for (int i = 0; i < argsJson.count(); i++)
|
||||||
|
{
|
||||||
|
SWGSDRangel::SWGArgValue *argValue = new SWGSDRangel::SWGArgValue();
|
||||||
|
swgTunableElements->append(argValue);
|
||||||
|
QJsonObject argValueJson = argsJson.at(i).toObject();
|
||||||
|
argValue->fromJsonObject(argValueJson);
|
||||||
|
}
|
||||||
|
|
||||||
|
appendSettingsArrayKeys(deviceSettingsJson, "tunableElements", deviceSettingsKeys);
|
||||||
|
}
|
||||||
}
|
}
|
@ -151,6 +151,13 @@ private:
|
|||||||
QStringList& channelSettingsKeys
|
QStringList& channelSettingsKeys
|
||||||
);
|
);
|
||||||
|
|
||||||
|
void processSoapySDRSettings(
|
||||||
|
SWGSDRangel::SWGDeviceSettings *deviceSettings,
|
||||||
|
QJsonObject& deviceSettingsJson,
|
||||||
|
QStringList& deviceSettingsKeys,
|
||||||
|
bool inputElseOutput
|
||||||
|
);
|
||||||
|
|
||||||
static const QMap<QString, QString> m_channelURIToSettingsKey;
|
static const QMap<QString, QString> m_channelURIToSettingsKey;
|
||||||
static const QMap<QString, QString> m_deviceIdToSettingsKey;
|
static const QMap<QString, QString> m_deviceIdToSettingsKey;
|
||||||
static const QMap<QString, QString> m_channelTypeToSettingsKey;
|
static const QMap<QString, QString> m_channelTypeToSettingsKey;
|
||||||
|
@ -160,9 +160,6 @@ int WebAPIAdapterGUI::instanceConfigPutPatch(
|
|||||||
{
|
{
|
||||||
WebAPIAdapterBase webAPIAdapterBase;
|
WebAPIAdapterBase webAPIAdapterBase;
|
||||||
webAPIAdapterBase.setPluginManager(m_mainWindow.getPluginManager());
|
webAPIAdapterBase.setPluginManager(m_mainWindow.getPluginManager());
|
||||||
// qDebug("WebAPIAdapterGUI::instanceConfigPutPatch: configKeys:");
|
|
||||||
// configKeys.debug();
|
|
||||||
// return 200;
|
|
||||||
|
|
||||||
if (force) {
|
if (force) {
|
||||||
webAPIAdapterBase.webapiInitConfig(m_mainWindow.m_settings);
|
webAPIAdapterBase.webapiInitConfig(m_mainWindow.m_settings);
|
||||||
|
@ -44,6 +44,7 @@ MESSAGE_CLASS_DEFINITION(MainCore::MsgRemoveLastDeviceSet, Message)
|
|||||||
MESSAGE_CLASS_DEFINITION(MainCore::MsgSetDevice, Message)
|
MESSAGE_CLASS_DEFINITION(MainCore::MsgSetDevice, Message)
|
||||||
MESSAGE_CLASS_DEFINITION(MainCore::MsgAddChannel, Message)
|
MESSAGE_CLASS_DEFINITION(MainCore::MsgAddChannel, Message)
|
||||||
MESSAGE_CLASS_DEFINITION(MainCore::MsgDeleteChannel, Message)
|
MESSAGE_CLASS_DEFINITION(MainCore::MsgDeleteChannel, Message)
|
||||||
|
MESSAGE_CLASS_DEFINITION(MainCore::MsgApplySettings, Message)
|
||||||
|
|
||||||
MainCore *MainCore::m_instance = 0;
|
MainCore *MainCore::m_instance = 0;
|
||||||
|
|
||||||
@ -179,6 +180,11 @@ bool MainCore::handleMessage(const Message& cmd)
|
|||||||
deleteChannel(notif.getDeviceSetIndex(), notif.getChannelIndex());
|
deleteChannel(notif.getDeviceSetIndex(), notif.getChannelIndex());
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
else if (MsgApplySettings::match(cmd))
|
||||||
|
{
|
||||||
|
applySettings();
|
||||||
|
return true;
|
||||||
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
return false;
|
return false;
|
||||||
@ -206,6 +212,12 @@ void MainCore::loadSettings()
|
|||||||
setLoggingOptions();
|
setLoggingOptions();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void MainCore::applySettings()
|
||||||
|
{
|
||||||
|
m_settings.sortPresets();
|
||||||
|
setLoggingOptions();
|
||||||
|
}
|
||||||
|
|
||||||
void MainCore::setLoggingOptions()
|
void MainCore::setLoggingOptions()
|
||||||
{
|
{
|
||||||
m_logger->setConsoleMinMessageLevel(m_settings.getConsoleMinLogLevel());
|
m_logger->setConsoleMinMessageLevel(m_settings.getConsoleMinLogLevel());
|
||||||
|
@ -270,6 +270,20 @@ private:
|
|||||||
{ }
|
{ }
|
||||||
};
|
};
|
||||||
|
|
||||||
|
class MsgApplySettings : public Message {
|
||||||
|
MESSAGE_CLASS_DECLARATION
|
||||||
|
|
||||||
|
public:
|
||||||
|
static MsgApplySettings* create() {
|
||||||
|
return new MsgApplySettings();
|
||||||
|
}
|
||||||
|
|
||||||
|
private:
|
||||||
|
MsgApplySettings() :
|
||||||
|
Message()
|
||||||
|
{ }
|
||||||
|
};
|
||||||
|
|
||||||
static MainCore *m_instance;
|
static MainCore *m_instance;
|
||||||
MainSettings m_settings;
|
MainSettings m_settings;
|
||||||
int m_masterTabIndex;
|
int m_masterTabIndex;
|
||||||
@ -287,6 +301,7 @@ private:
|
|||||||
WebAPIAdapterSrv *m_apiAdapter;
|
WebAPIAdapterSrv *m_apiAdapter;
|
||||||
|
|
||||||
void loadSettings();
|
void loadSettings();
|
||||||
|
void applySettings();
|
||||||
void loadPresetSettings(const Preset* preset, int tabIndex);
|
void loadPresetSettings(const Preset* preset, int tabIndex);
|
||||||
void savePresetSettings(Preset* preset, int tabIndex);
|
void savePresetSettings(Preset* preset, int tabIndex);
|
||||||
void setLoggingOptions();
|
void setLoggingOptions();
|
||||||
|
@ -164,7 +164,36 @@ int WebAPIAdapterSrv::instanceConfigPutPatch(
|
|||||||
webAPIAdapterBase.webapiInitConfig(m_mainCore.m_settings);
|
webAPIAdapterBase.webapiInitConfig(m_mainCore.m_settings);
|
||||||
}
|
}
|
||||||
|
|
||||||
// TODO
|
Preferences newPreferences = m_mainCore.m_settings.getPreferences();
|
||||||
|
webAPIAdapterBase.webapiUpdatePreferences(query.getPreferences(), configKeys.m_preferencesKeys, newPreferences);
|
||||||
|
m_mainCore.m_settings.setPreferences(newPreferences);
|
||||||
|
|
||||||
|
Preset *workingPreset = m_mainCore.m_settings.getWorkingPreset();
|
||||||
|
webAPIAdapterBase.webapiUpdatePreset(force, query.getWorkingPreset(), configKeys.m_workingPresetKeys, workingPreset);
|
||||||
|
|
||||||
|
QList<PresetKeys>::const_iterator presetKeysIt = configKeys.m_presetKeys.begin();
|
||||||
|
int i = 0;
|
||||||
|
for (; presetKeysIt != configKeys.m_presetKeys.end(); ++presetKeysIt, i++)
|
||||||
|
{
|
||||||
|
Preset *newPreset = new Preset(); // created with default values
|
||||||
|
SWGSDRangel::SWGPreset *swgPreset = query.getPresets()->at(i);
|
||||||
|
webAPIAdapterBase.webapiUpdatePreset(force, swgPreset, *presetKeysIt, newPreset);
|
||||||
|
m_mainCore.m_settings.addPreset(newPreset);
|
||||||
|
}
|
||||||
|
|
||||||
|
QList<CommandKeys>::const_iterator commandKeysIt = configKeys.m_commandKeys.begin();
|
||||||
|
i = 0;
|
||||||
|
for (; commandKeysIt != configKeys.m_commandKeys.end(); ++commandKeysIt, i++)
|
||||||
|
{
|
||||||
|
Command *newCommand = new Command(); // created with default values
|
||||||
|
SWGSDRangel::SWGCommand *swgCommand = query.getCommands()->at(i);
|
||||||
|
webAPIAdapterBase.webapiUpdateCommand(swgCommand, *commandKeysIt, *newCommand);
|
||||||
|
m_mainCore.m_settings.addCommand(newCommand);
|
||||||
|
}
|
||||||
|
|
||||||
|
MainCore::MsgApplySettings *msg = MainCore::MsgApplySettings::create();
|
||||||
|
m_mainCore.m_inputMessageQueue.push(msg);
|
||||||
|
|
||||||
return 200;
|
return 200;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user