1
0
mirror of https://github.com/f4exb/sdrangel.git synced 2026-06-08 08:54:49 -04:00

SoapySDR support: output: global gain GUI

This commit is contained in:
f4exb
2018-11-07 13:08:35 +01:00
parent d7be0927b1
commit d4e73086d0
7 changed files with 83 additions and 5 deletions
@@ -27,6 +27,7 @@
#include "soapygui/intervalrangegui.h"
#include "soapygui/stringrangegui.h"
#include "soapygui/dynamicitemsettinggui.h"
#include "soapygui/intervalslidergui.h"
#include "soapysdroutputgui.h"
@@ -41,7 +42,8 @@ SoapySDROutputGui::SoapySDROutputGui(DeviceUISet *deviceUISet, QWidget* parent)
m_lastEngineState(DSPDeviceSinkEngine::StNotStarted),
m_antennas(0),
m_sampleRateGUI(0),
m_bandwidthGUI(0)
m_bandwidthGUI(0),
m_gainSliderGUI(0)
{
m_sampleSink = (SoapySDROutput*) m_deviceUISet->m_deviceSinkAPI->getSampleSink();
ui->setupUi(this);
@@ -55,6 +57,7 @@ SoapySDROutputGui::SoapySDROutputGui(DeviceUISet *deviceUISet, QWidget* parent)
createRangesControl(&m_sampleRateGUI, m_sampleSink->getRateRanges(), "SR", "S/s");
createRangesControl(&m_bandwidthGUI, m_sampleSink->getBandwidthRanges(), "BW", "Hz");
createTunableElementsControl(m_sampleSink->getTunableElements());
createGlobalGainControl();
if (m_sampleRateGUI) {
connect(m_sampleRateGUI, SIGNAL(valueChanged(double)), this, SLOT(sampleRateChanged(double)));
@@ -181,6 +184,21 @@ void SoapySDROutputGui::createTunableElementsControl(const std::vector<DeviceSoa
}
}
void SoapySDROutputGui::createGlobalGainControl()
{
m_gainSliderGUI = new IntervalSliderGUI(this);
int min, max;
m_sampleSink->getGlobalGainRange(min, max);
m_gainSliderGUI->setInterval(min, max);
m_gainSliderGUI->setLabel(QString("Global gain"));
m_gainSliderGUI->setUnits(QString(""));
QVBoxLayout *layout = (QVBoxLayout *) ui->scrollAreaWidgetContents->layout();
layout->addWidget(m_gainSliderGUI);
connect(m_gainSliderGUI, SIGNAL(valueChanged(double)), this, SLOT(globalGainChanged(double)));
}
void SoapySDROutputGui::setName(const QString& name)
{
setObjectName(name);
@@ -309,6 +327,12 @@ void SoapySDROutputGui::tunableElementChanged(QString name, double value)
sendSettings();
}
void SoapySDROutputGui::globalGainChanged(double gain)
{
m_settings.m_globalGain = round(gain);
sendSettings();
}
void SoapySDROutputGui::on_centerFrequency_changed(quint64 value)
{
m_settings.m_centerFrequency = value * 1000;
@@ -364,6 +388,9 @@ void SoapySDROutputGui::displaySettings()
if (m_bandwidthGUI) {
m_bandwidthGUI->setValue(m_settings.m_bandwidth);
}
if (m_gainSliderGUI) {
m_gainSliderGUI->setValue(m_settings.m_globalGain);
}
ui->interp->setCurrentIndex(m_settings.m_log2Interp);