1
0
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:
f4exb
2018-11-07 01:33:17 +01:00
parent 5c8073bade
commit d7be0927b1
10 changed files with 289 additions and 3 deletions
@@ -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;
}