1
0
mirror of https://github.com/f4exb/sdrangel.git synced 2026-06-05 15:34:57 -04:00

SoapySDR support: output: individual gains GUIs

This commit is contained in:
f4exb
2018-11-07 13:47:47 +01:00
parent cfeaca424e
commit d2eb9130b0
5 changed files with 72 additions and 0 deletions
@@ -199,6 +199,26 @@ void SoapySDROutputGui::createGlobalGainControl()
connect(m_gainSliderGUI, SIGNAL(valueChanged(double)), this, SLOT(globalGainChanged(double)));
}
void SoapySDROutputGui::createIndividualGainsControl(const std::vector<DeviceSoapySDRParams::GainSetting>& individualGainsList)
{
if (individualGainsList.size() == 0) { // Leave early if list of individual gains is empty
return;
}
std::vector<DeviceSoapySDRParams::GainSetting>::const_iterator it = individualGainsList.begin();
for (int i = 0; it != individualGainsList.end(); ++it, i++)
{
IntervalSliderGUI *gainGUI = new IntervalSliderGUI(this);
gainGUI->setInterval(it->m_range.minimum(), it->m_range.maximum());
gainGUI->setLabel(QString("%1 gain").arg(it->m_name.c_str()));
gainGUI->setUnits(QString(""));
DynamicItemSettingGUI *gui = new DynamicItemSettingGUI(gainGUI, QString(it->m_name.c_str()));
m_individualGainsGUIs.push_back(gui);
connect(m_individualGainsGUIs.back(), SIGNAL(valueChanged(QString, double)), this, SLOT(individualGainChanged(QString, double)));
}
}
void SoapySDROutputGui::setName(const QString& name)
{
setObjectName(name);
@@ -333,6 +353,12 @@ void SoapySDROutputGui::globalGainChanged(double gain)
sendSettings();
}
void SoapySDROutputGui::individualGainChanged(QString name, double value)
{
m_settings.m_individualGains[name] = value;
sendSettings();
}
void SoapySDROutputGui::on_centerFrequency_changed(quint64 value)
{
m_settings.m_centerFrequency = value * 1000;
@@ -398,6 +424,7 @@ void SoapySDROutputGui::displaySettings()
ui->LOppmText->setText(QString("%1").arg(QString::number(m_settings.m_LOppmTenths/10.0, 'f', 1)));
displayTunableElementsControlSettings();
displayIndividualGainsControlSettings();
blockApplySettings(false);
}
@@ -414,6 +441,18 @@ void SoapySDROutputGui::displayTunableElementsControlSettings()
}
}
void SoapySDROutputGui::displayIndividualGainsControlSettings()
{
for (const auto &it : m_individualGainsGUIs)
{
QMap<QString, double>::const_iterator elIt = m_settings.m_individualGains.find(it->getName());
if (elIt != m_settings.m_individualGains.end()) {
it->setValue(*elIt);
}
}
}
void SoapySDROutputGui::sendSettings()
{
if (!m_updateTimer.isActive()) {