SoapySDR support: REST API: input and output: corrected mapped elements setting

This commit is contained in:
f4exb 2018-11-15 16:54:23 +01:00
parent dbbabd4b57
commit 6ad678e059
4 changed files with 35 additions and 20 deletions

View File

@ -1281,8 +1281,8 @@ int SoapySDROutput::webapiSettingsPutPatch(
{
auto ovalue = settings.m_tunableElements.find(*itArg->getKey());
if ((ovalue != settings.m_tunableElements.end()) && (m_settings.m_tunableElements[*itArg->getKey()] != *ovalue)) {
m_settings.m_tunableElements[*itArg->getKey()] = *ovalue;
if ((ovalue != settings.m_tunableElements.end()) && (atof(itArg->getValueString()->toStdString().c_str()) != *ovalue)) {
m_settings.m_tunableElements[*itArg->getKey()] = atof(itArg->getValueString()->toStdString().c_str());
}
}
}
@ -1299,8 +1299,8 @@ int SoapySDROutput::webapiSettingsPutPatch(
{
auto ovalue = settings.m_individualGains.find(*itArg->getKey());
if ((ovalue != settings.m_individualGains.end()) && (m_settings.m_individualGains[*itArg->getKey()] != *ovalue)) {
m_settings.m_individualGains[*itArg->getKey()] = *ovalue;
if ((ovalue != settings.m_individualGains.end()) && (atof(itArg->getValueString()->toStdString().c_str()) != *ovalue)) {
m_settings.m_individualGains[*itArg->getKey()] = atof(itArg->getValueString()->toStdString().c_str());
}
}
}
@ -1331,10 +1331,10 @@ int SoapySDROutput::webapiSettingsPutPatch(
for (const auto itArg : *streamArgSettings)
{
auto ovalue = settings.m_streamArgSettings.find(*itArg->getKey());
QMap<QString, QVariant>::iterator itSettings = settings.m_streamArgSettings.find(*itArg->getKey());
if ((ovalue != settings.m_streamArgSettings.end()) && (m_settings.m_streamArgSettings[*itArg->getKey()] != *ovalue)) {
m_settings.m_streamArgSettings[*itArg->getKey()] = *ovalue;
if (itSettings != settings.m_streamArgSettings.end()) {
itSettings.value() = webapiVariantFromArgValue(itArg);
}
}
}
@ -1345,10 +1345,10 @@ int SoapySDROutput::webapiSettingsPutPatch(
for (const auto itArg : *deviceArgSettings)
{
auto ovalue = settings.m_deviceArgSettings.find(*itArg->getKey());
QMap<QString, QVariant>::iterator itSettings = settings.m_deviceArgSettings.find(*itArg->getKey());
if ((ovalue != settings.m_deviceArgSettings.end()) && (m_settings.m_deviceArgSettings[*itArg->getKey()] != *ovalue)) {
m_settings.m_deviceArgSettings[*itArg->getKey()] = *ovalue;
if (itSettings != settings.m_deviceArgSettings.end()) {
itSettings.value() = webapiVariantFromArgValue(itArg);
}
}
}

View File

@ -191,6 +191,7 @@ private:
void updateGains(SoapySDR::Device *dev, int requestedChannel, SoapySDROutputSettings& settings);
void webapiFormatDeviceSettings(SWGSDRangel::SWGDeviceSettings& response, const SoapySDROutputSettings& settings);
void webapiFormatDeviceReport(SWGSDRangel::SWGDeviceReport& response);
QVariant webapiVariantFromArgValue(SWGSDRangel::SWGArgValue *argValue);
void webapiFormatArgValue(const QVariant& v, SWGSDRangel::SWGArgValue *argValue);
void webapiFormatArgInfo(const SoapySDR::ArgInfo& arg, SWGSDRangel::SWGArgInfo *argInfo);
};

View File

@ -1345,8 +1345,8 @@ int SoapySDRInput::webapiSettingsPutPatch(
{
auto ovalue = settings.m_tunableElements.find(*itArg->getKey());
if ((ovalue != settings.m_tunableElements.end()) && (m_settings.m_tunableElements[*itArg->getKey()] != *ovalue)) {
m_settings.m_tunableElements[*itArg->getKey()] = *ovalue;
if ((ovalue != settings.m_tunableElements.end()) && (atof(itArg->getValueString()->toStdString().c_str()) != *ovalue)) {
m_settings.m_tunableElements[*itArg->getKey()] = atof(itArg->getValueString()->toStdString().c_str());
}
}
}
@ -1363,8 +1363,8 @@ int SoapySDRInput::webapiSettingsPutPatch(
{
auto ovalue = settings.m_individualGains.find(*itArg->getKey());
if ((ovalue != settings.m_individualGains.end()) && (m_settings.m_individualGains[*itArg->getKey()] != *ovalue)) {
m_settings.m_individualGains[*itArg->getKey()] = *ovalue;
if ((ovalue != settings.m_individualGains.end()) && (atof(itArg->getValueString()->toStdString().c_str()) != *ovalue)) {
m_settings.m_individualGains[*itArg->getKey()] = atof(itArg->getValueString()->toStdString().c_str());
}
}
}
@ -1395,10 +1395,10 @@ int SoapySDRInput::webapiSettingsPutPatch(
for (const auto itArg : *streamArgSettings)
{
auto ovalue = settings.m_streamArgSettings.find(*itArg->getKey());
QMap<QString, QVariant>::iterator itSettings = settings.m_streamArgSettings.find(*itArg->getKey());
if ((ovalue != settings.m_streamArgSettings.end()) && (m_settings.m_streamArgSettings[*itArg->getKey()] != *ovalue)) {
m_settings.m_streamArgSettings[*itArg->getKey()] = *ovalue;
if (itSettings != settings.m_streamArgSettings.end()) {
itSettings.value() = webapiVariantFromArgValue(itArg);
}
}
}
@ -1409,10 +1409,10 @@ int SoapySDRInput::webapiSettingsPutPatch(
for (const auto itArg : *deviceArgSettings)
{
auto ovalue = settings.m_deviceArgSettings.find(*itArg->getKey());
QMap<QString, QVariant>::iterator itSettings = settings.m_deviceArgSettings.find(*itArg->getKey());
if ((ovalue != settings.m_deviceArgSettings.end()) && (m_settings.m_deviceArgSettings[*itArg->getKey()] != *ovalue)) {
m_settings.m_deviceArgSettings[*itArg->getKey()] = *ovalue;
if (itSettings != settings.m_deviceArgSettings.end()) {
itSettings.value() = webapiVariantFromArgValue(itArg);
}
}
}
@ -1680,6 +1680,19 @@ void SoapySDRInput::webapiFormatDeviceReport(SWGSDRangel::SWGDeviceReport& respo
}
}
QVariant SoapySDRInput::webapiVariantFromArgValue(SWGSDRangel::SWGArgValue *argValue)
{
if (*argValue->getValueType() == "bool") {
return QVariant((bool) (*argValue->getValueString() == "1"));
} else if (*argValue->getValueType() == "int") {
return QVariant((int) (atoi(argValue->getValueString()->toStdString().c_str())));
} else if (*argValue->getValueType() == "float") {
return QVariant((double) (atof(argValue->getValueString()->toStdString().c_str())));
} else {
return QVariant(QString(*argValue->getValueString()));
}
}
void SoapySDRInput::webapiFormatArgValue(const QVariant& v, SWGSDRangel::SWGArgValue *argValue)
{
if (v.type() == QVariant::Bool)

View File

@ -214,6 +214,7 @@ private:
void updateGains(SoapySDR::Device *dev, int requestedChannel, SoapySDRInputSettings& settings);
void webapiFormatDeviceSettings(SWGSDRangel::SWGDeviceSettings& response, const SoapySDRInputSettings& settings);
void webapiFormatDeviceReport(SWGSDRangel::SWGDeviceReport& response);
QVariant webapiVariantFromArgValue(SWGSDRangel::SWGArgValue *argValue);
void webapiFormatArgValue(const QVariant& v, SWGSDRangel::SWGArgValue *argValue);
void webapiFormatArgInfo(const SoapySDR::ArgInfo& arg, SWGSDRangel::SWGArgInfo *argInfo);
};