mirror of
https://github.com/f4exb/sdrangel.git
synced 2026-06-01 13:47:01 -04:00
SoapySDR support: input: global gain GUI
This commit is contained in:
@@ -184,7 +184,7 @@ void SoapySDRInput::getFrequencyRange(uint64_t& min, uint64_t& max)
|
||||
DeviceSoapySDRParams::FrequencySetting freqSettings = channelSettings->m_frequencySettings[0];
|
||||
SoapySDR::RangeList rangeList = freqSettings.m_ranges;
|
||||
|
||||
if (rangeList.size() > 0) // TODO: handle multiple ranges
|
||||
if (rangeList.size() > 0)
|
||||
{
|
||||
SoapySDR::Range range = rangeList[0];
|
||||
min = range.minimum();
|
||||
@@ -203,6 +203,22 @@ void SoapySDRInput::getFrequencyRange(uint64_t& min, uint64_t& max)
|
||||
}
|
||||
}
|
||||
|
||||
void SoapySDRInput::getGlobalGainRange(int& min, int& max)
|
||||
{
|
||||
const DeviceSoapySDRParams::ChannelSettings* channelSettings = m_deviceShared.m_deviceParams->getRxChannelSettings(m_deviceShared.m_channel);
|
||||
|
||||
if (channelSettings)
|
||||
{
|
||||
min = channelSettings->m_gainRange.minimum();
|
||||
max = channelSettings->m_gainRange.maximum();
|
||||
}
|
||||
else
|
||||
{
|
||||
min = 0;
|
||||
max = 0;
|
||||
}
|
||||
}
|
||||
|
||||
const std::vector<std::string>& SoapySDRInput::getAntennas()
|
||||
{
|
||||
const DeviceSoapySDRParams::ChannelSettings* channelSettings = m_deviceShared.m_deviceParams->getRxChannelSettings(m_deviceShared.m_channel);
|
||||
@@ -239,6 +255,12 @@ const std::vector<DeviceSoapySDRParams::FrequencySetting>& SoapySDRInput::getTun
|
||||
return channelSettings->m_frequencySettings;
|
||||
}
|
||||
|
||||
const std::vector<DeviceSoapySDRParams::GainSetting>& SoapySDRInput::getIndividualGainsRanges()
|
||||
{
|
||||
const DeviceSoapySDRParams::ChannelSettings* channelSettings = m_deviceShared.m_deviceParams->getRxChannelSettings(m_deviceShared.m_channel);
|
||||
return channelSettings->m_gainSettings;
|
||||
}
|
||||
|
||||
void SoapySDRInput::init()
|
||||
{
|
||||
applySettings(m_settings, true);
|
||||
@@ -837,6 +859,23 @@ bool SoapySDRInput::applySettings(const SoapySDRInputSettings& settings, bool fo
|
||||
}
|
||||
}
|
||||
|
||||
if ((m_settings.m_globalGain != settings.m_globalGain) || force)
|
||||
{
|
||||
if (dev != 0)
|
||||
{
|
||||
try
|
||||
{
|
||||
dev->setGain(SOAPY_SDR_RX, requestedChannel, settings.m_globalGain);
|
||||
qDebug("SoapySDRInput::applySettings: set gain to %d", settings.m_globalGain);
|
||||
}
|
||||
catch (const std::exception &ex)
|
||||
{
|
||||
qCritical("SoapySDRInput::applySettings: cannot set gain to %d: %s",
|
||||
settings.m_globalGain, ex.what());
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
if (forwardChangeOwnDSP)
|
||||
{
|
||||
int sampleRate = settings.m_devSampleRate/(1<<settings.m_log2Decim);
|
||||
@@ -887,7 +926,8 @@ bool SoapySDRInput::applySettings(const SoapySDRInputSettings& settings, bool fo
|
||||
<< " m_dcBlock: " << m_settings.m_dcBlock
|
||||
<< " m_iqCorrection: " << m_settings.m_iqCorrection
|
||||
<< " m_antenna: " << m_settings.m_antenna
|
||||
<< " m_bandwidth: " << m_settings.m_bandwidth;
|
||||
<< " m_bandwidth: " << m_settings.m_bandwidth
|
||||
<< " m_globalGain: " << m_settings.m_globalGain;
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user