SDRAngel  4.11.5
Developer docs for <a href="https://github.com/f4exb/sdrangel">SDRangel<\a>, an Open Source Qt5 / OpenGL 3.0+ SDR and signal analyzer frontend to various hardware.
Public Member Functions | Private Slots | Private Member Functions | Private Attributes | List of all members
SoapySDRInputGui Class Reference

#include <soapysdrinputgui.h>

+ Inheritance diagram for SoapySDRInputGui:
+ Collaboration diagram for SoapySDRInputGui:

Public Member Functions

 SoapySDRInputGui (DeviceUISet *deviceUISet, QWidget *parent=0)
 
virtual ~SoapySDRInputGui ()
 
virtual void destroy ()
 
void setName (const QString &name)
 
QString getName () const
 
virtual void resetToDefaults ()
 
virtual qint64 getCenterFrequency () const
 
virtual void setCenterFrequency (qint64 centerFrequency)
 
virtual QByteArray serialize () const
 
virtual bool deserialize (const QByteArray &data)
 
virtual MessageQueuegetInputMessageQueue ()
 
virtual bool handleMessage (const Message &message)
 
- Public Member Functions inherited from PluginInstanceGUI
 PluginInstanceGUI ()
 
virtual ~PluginInstanceGUI ()
 

Private Slots

void handleInputMessages ()
 
void antennasChanged ()
 
void sampleRateChanged (double sampleRate)
 
void bandwidthChanged (double bandwidth)
 
void tunableElementChanged (QString name, double value)
 
void globalGainChanged (double gain)
 
void autoGainChanged (bool set)
 
void individualGainChanged (QString name, double value)
 
void autoDCCorrectionChanged (bool set)
 
void autoIQCorrectionChanged (bool set)
 
void dcCorrectionModuleChanged (double value)
 
void dcCorrectionArgumentChanged (double value)
 
void iqCorrectionModuleChanged (double value)
 
void iqCorrectionArgumentChanged (double value)
 
void streamArgChanged (QString itemName, QVariant value)
 
void deviceArgChanged (QString itemName, QVariant value)
 
void on_centerFrequency_changed (quint64 value)
 
void on_LOppm_valueChanged (int value)
 
void on_dcOffset_toggled (bool checked)
 
void on_iqImbalance_toggled (bool checked)
 
void on_decim_currentIndexChanged (int index)
 
void on_fcPos_currentIndexChanged (int index)
 
void on_transverter_clicked ()
 
void on_startStop_toggled (bool checked)
 
void on_record_toggled (bool checked)
 
void updateHardware ()
 
void updateStatus ()
 
void openDeviceSettingsDialog (const QPoint &p)
 

Private Member Functions

void createRangesControl (ItemSettingGUI **settingGUI, const SoapySDR::RangeList &rangeList, const QString &text, const QString &unit)
 
void createAntennasControl (const std::vector< std::string > &antennaList)
 
void createTunableElementsControl (const std::vector< DeviceSoapySDRParams::FrequencySetting > &tunableElementsList)
 
void createGlobalGainControl ()
 
void createIndividualGainsControl (const std::vector< DeviceSoapySDRParams::GainSetting > &individualGainsList)
 
void createCorrectionsControl ()
 
void createArgumentsControl (const SoapySDR::ArgInfoList &argInfoList, bool deviceArguments)
 
void displaySettings ()
 
void displayTunableElementsControlSettings ()
 
void displayIndividualGainsControlSettings ()
 
void displayCorrectionsSettings ()
 
void displayStreamArgsSettings ()
 
void displayDeviceArgsSettings ()
 
void sendSettings ()
 
void updateSampleRateAndFrequency ()
 
void updateFrequencyLimits ()
 
void setCenterFrequencySetting (uint64_t kHzValue)
 
void blockApplySettings (bool block)
 

Private Attributes

Ui::SoapySDRInputGui * ui
 
DeviceUISetm_deviceUISet
 
bool m_forceSettings
 
bool m_doApplySettings
 
SoapySDRInputSettings m_settings
 
QTimer m_updateTimer
 
QTimer m_statusTimer
 
SoapySDRInputm_sampleSource
 
int m_sampleRate
 
quint64 m_deviceCenterFrequency
 Center frequency in device. More...
 
int m_lastEngineState
 
MessageQueue m_inputMessageQueue
 
StringRangeGUIm_antennas
 
ItemSettingGUIm_sampleRateGUI
 
ItemSettingGUIm_bandwidthGUI
 
std::vector< DynamicItemSettingGUI * > m_tunableElementsGUIs
 
IntervalSliderGUIm_gainSliderGUI
 
std::vector< DynamicItemSettingGUI * > m_individualGainsGUIs
 
QCheckBox * m_autoGain
 
ComplexFactorGUIm_dcCorrectionGUI
 
ComplexFactorGUIm_iqCorrectionGUI
 
QCheckBox * m_autoDCCorrection
 
QCheckBox * m_autoIQCorrection
 
std::vector< DynamicArgSettingGUI * > m_streamArgsGUIs
 
std::vector< DynamicArgSettingGUI * > m_deviceArgsGUIs
 

Detailed Description

Definition at line 42 of file soapysdrinputgui.h.

Constructor & Destructor Documentation

◆ SoapySDRInputGui()

SoapySDRInputGui::SoapySDRInputGui ( DeviceUISet deviceUISet,
QWidget *  parent = 0 
)
explicit

Definition at line 41 of file soapysdrinputgui.cpp.

References bandwidthChanged(), createAntennasControl(), createArgumentsControl(), createCorrectionsControl(), createGlobalGainControl(), createIndividualGainsControl(), createRangesControl(), createTunableElementsControl(), displaySettings(), SoapySDRInput::getAntennas(), SoapySDRInput::getBandwidthRanges(), SoapySDRInput::getDeviceArgInfoList(), SoapySDRInput::getFrequencyRange(), SoapySDRInput::getIndividualGainsRanges(), SoapySDRInput::getRateRanges(), DeviceAPI::getSampleSource(), SoapySDRInput::getStreamArgInfoList(), SoapySDRInput::getTunableElements(), ColorMapper::GrayGold, handleInputMessages(), SoapySDRInput::initDeviceArgSettings(), SoapySDRInput::initGainSettings(), SoapySDRInput::initStreamArgSettings(), SoapySDRInput::initTunableElementsSettings(), m_bandwidthGUI, DeviceUISet::m_deviceAPI, m_deviceUISet, m_inputMessageQueue, m_sampleRateGUI, m_sampleSource, m_settings, m_statusTimer, m_updateTimer, openDeviceSettingsDialog(), sampleRateChanged(), sendSettings(), SoapySDRInput::setMessageQueueToGUI(), ui, updateHardware(), and updateStatus().

41  :
42  QWidget(parent),
43  ui(new Ui::SoapySDRInputGui),
44  m_deviceUISet(deviceUISet),
45  m_forceSettings(true),
46  m_doApplySettings(true),
47  m_sampleSource(0),
48  m_sampleRate(0),
51  m_antennas(0),
52  m_sampleRateGUI(0),
53  m_bandwidthGUI(0),
54  m_gainSliderGUI(0),
55  m_autoGain(0),
60 {
62  ui->setupUi(this);
63 
64  ui->centerFrequency->setColorMapper(ColorMapper(ColorMapper::GrayGold));
65  uint64_t f_min, f_max;
66  m_sampleSource->getFrequencyRange(f_min, f_max);
67  ui->centerFrequency->setValueRange(7, f_min/1000, f_max/1000);
68 
82 
83  if (m_sampleRateGUI) {
84  connect(m_sampleRateGUI, SIGNAL(valueChanged(double)), this, SLOT(sampleRateChanged(double)));
85  }
86  if (m_bandwidthGUI) {
87  connect(m_bandwidthGUI, SIGNAL(valueChanged(double)), this, SLOT(bandwidthChanged(double)));
88  }
89 
90  connect(&m_updateTimer, SIGNAL(timeout()), this, SLOT(updateHardware()));
91  connect(&m_statusTimer, SIGNAL(timeout()), this, SLOT(updateStatus()));
92  m_statusTimer.start(500);
93 
94  CRightClickEnabler *startStopRightClickEnabler = new CRightClickEnabler(ui->startStop);
95  connect(startStopRightClickEnabler, SIGNAL(rightClick(const QPoint &)), this, SLOT(openDeviceSettingsDialog(const QPoint &)));
96 
98 
99  connect(&m_inputMessageQueue, SIGNAL(messageEnqueued()), this, SLOT(handleInputMessages()), Qt::QueuedConnection);
101 
102  sendSettings();
103 }
const SoapySDR::RangeList & getBandwidthRanges()
const SoapySDR::RangeList & getRateRanges()
void createIndividualGainsControl(const std::vector< DeviceSoapySDRParams::GainSetting > &individualGainsList)
void bandwidthChanged(double bandwidth)
const std::vector< DeviceSoapySDRParams::FrequencySetting > & getTunableElements()
ItemSettingGUI * m_bandwidthGUI
Ui::SoapySDRInputGui * ui
void openDeviceSettingsDialog(const QPoint &p)
DeviceSampleSource * getSampleSource()
Return pointer to the device sample source (single Rx) or nullptr.
Definition: deviceapi.cpp:213
QCheckBox * m_autoGain
QCheckBox * m_autoDCCorrection
SoapySDRInputSettings m_settings
void initGainSettings(SoapySDRInputSettings &settings)
void sampleRateChanged(double sampleRate)
ComplexFactorGUI * m_dcCorrectionGUI
void createArgumentsControl(const SoapySDR::ArgInfoList &argInfoList, bool deviceArguments)
void initDeviceArgSettings(SoapySDRInputSettings &settings)
void createAntennasControl(const std::vector< std::string > &antennaList)
engine is before initialization
Definition: deviceapi.h:53
ComplexFactorGUI * m_iqCorrectionGUI
void getFrequencyRange(uint64_t &min, uint64_t &max)
const SoapySDR::ArgInfoList & getStreamArgInfoList()
DeviceAPI * m_deviceAPI
Definition: deviceuiset.h:48
QCheckBox * m_autoIQCorrection
const std::vector< DeviceSoapySDRParams::GainSetting > & getIndividualGainsRanges()
ItemSettingGUI * m_sampleRateGUI
DeviceUISet * m_deviceUISet
quint64 m_deviceCenterFrequency
Center frequency in device.
const std::vector< std::string > & getAntennas()
void initStreamArgSettings(SoapySDRInputSettings &settings)
void createRangesControl(ItemSettingGUI **settingGUI, const SoapySDR::RangeList &rangeList, const QString &text, const QString &unit)
StringRangeGUI * m_antennas
void initTunableElementsSettings(SoapySDRInputSettings &settings)
const SoapySDR::ArgInfoList & getDeviceArgInfoList()
void createTunableElementsControl(const std::vector< DeviceSoapySDRParams::FrequencySetting > &tunableElementsList)
MessageQueue m_inputMessageQueue
SoapySDRInput * m_sampleSource
virtual void setMessageQueueToGUI(MessageQueue *queue)
IntervalSliderGUI * m_gainSliderGUI
unsigned __int64 uint64_t
Definition: rtptypes_win.h:48
+ Here is the call graph for this function:

◆ ~SoapySDRInputGui()

SoapySDRInputGui::~SoapySDRInputGui ( )
virtual

Definition at line 105 of file soapysdrinputgui.cpp.

References ui.

106 {
107  delete ui;
108 }
Ui::SoapySDRInputGui * ui

Member Function Documentation

◆ antennasChanged

void SoapySDRInputGui::antennasChanged ( )
privateslot

Definition at line 549 of file soapysdrinputgui.cpp.

References StringRangeGUI::getCurrentValue(), SoapySDRInputSettings::m_antenna, m_antennas, m_settings, and sendSettings().

Referenced by createAntennasControl().

550 {
551  const std::string& antennaStr = m_antennas->getCurrentValue();
552  m_settings.m_antenna = QString(antennaStr.c_str());
553 
554  sendSettings();
555 }
const std::string & getCurrentValue()
SoapySDRInputSettings m_settings
StringRangeGUI * m_antennas
+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ autoDCCorrectionChanged

void SoapySDRInputGui::autoDCCorrectionChanged ( bool  set)
privateslot

Definition at line 593 of file soapysdrinputgui.cpp.

References SoapySDRInputSettings::m_autoDCCorrection, m_settings, and sendSettings().

Referenced by createCorrectionsControl().

594 {
596  sendSettings();
597 }
SoapySDRInputSettings m_settings
+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ autoGainChanged

void SoapySDRInputGui::autoGainChanged ( bool  set)
privateslot

Definition at line 581 of file soapysdrinputgui.cpp.

References SoapySDRInputSettings::m_autoGain, m_settings, and sendSettings().

Referenced by createGlobalGainControl().

582 {
583  m_settings.m_autoGain = set;
584  sendSettings();
585 }
SoapySDRInputSettings m_settings
+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ autoIQCorrectionChanged

void SoapySDRInputGui::autoIQCorrectionChanged ( bool  set)
privateslot

Definition at line 599 of file soapysdrinputgui.cpp.

References SoapySDRInputSettings::m_autoIQCorrection, m_settings, and sendSettings().

Referenced by createCorrectionsControl().

600 {
602  sendSettings();
603 }
SoapySDRInputSettings m_settings
+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ bandwidthChanged

void SoapySDRInputGui::bandwidthChanged ( double  bandwidth)
privateslot

Definition at line 563 of file soapysdrinputgui.cpp.

References SoapySDRInputSettings::m_bandwidth, m_settings, and sendSettings().

Referenced by SoapySDRInputGui().

564 {
565  m_settings.m_bandwidth = round(bandwidth);
566  sendSettings();
567 }
SoapySDRInputSettings m_settings
+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ blockApplySettings()

void SoapySDRInputGui::blockApplySettings ( bool  block)
private

Definition at line 889 of file soapysdrinputgui.cpp.

References m_doApplySettings.

Referenced by displaySettings(), and handleMessage().

890 {
891  m_doApplySettings = !block;
892 }
+ Here is the caller graph for this function:

◆ createAntennasControl()

void SoapySDRInputGui::createAntennasControl ( const std::vector< std::string > &  antennaList)
private

Definition at line 169 of file soapysdrinputgui.cpp.

References StringRangeGUI::addItem(), antennasChanged(), m_antennas, StringRangeGUI::setLabel(), StringRangeGUI::setUnits(), and ui.

Referenced by SoapySDRInputGui().

170 {
171  if (antennaList.size() == 0) { // return early if the antenna list is empty
172  return;
173  }
174 
175  m_antennas = new StringRangeGUI(this);
176  m_antennas->setLabel(QString("RF in"));
177  m_antennas->setUnits(QString("Port"));
178 
179  for (const auto &it : antennaList) {
180  m_antennas->addItem(QString(it.c_str()), it);
181  }
182 
183  QVBoxLayout *layout = (QVBoxLayout *) ui->scrollAreaWidgetContents->layout();
184  layout->addWidget(m_antennas);
185 
186  connect(m_antennas, SIGNAL(valueChanged()), this, SLOT(antennasChanged()));
187 }
Ui::SoapySDRInputGui * ui
void setLabel(const QString &text)
void addItem(const QString &itemStr, const std::string &itemValue)
void setUnits(const QString &units)
StringRangeGUI * m_antennas
+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ createArgumentsControl()

void SoapySDRInputGui::createArgumentsControl ( const SoapySDR::ArgInfoList &  argInfoList,
bool  deviceArguments 
)
private

Definition at line 325 of file soapysdrinputgui.cpp.

References ArgInfoGUI::addFloatValue(), ArgInfoGUI::addIntValue(), ArgInfoGUI::addStringValue(), ArgInfoGUI::ArgInfoBinary, ArgInfoGUI::ArgInfoContinuous, ArgInfoGUI::ArgInfoDiscrete, ArgInfoGUI::ArgInfoValueBool, ArgInfoGUI::ArgInfoValueFloat, ArgInfoGUI::ArgInfoValueInt, ArgInfoGUI::ArgInfoValueString, deviceArgChanged(), i, m_deviceArgsGUIs, m_streamArgsGUIs, ArgInfoGUI::setLabel(), ArgInfoGUI::setRange(), ArgInfoGUI::setToolTip(), ArgInfoGUI::setUnits(), streamArgChanged(), and ui.

Referenced by SoapySDRInputGui().

326 {
327  if (argInfoList.size() == 0) { // return early if list is empty
328  return;
329  }
330 
331  QVBoxLayout *layout = (QVBoxLayout *) ui->scrollAreaWidgetContents->layout();
332 
333  QFrame *line = new QFrame(this);
334  line->setFrameShape(QFrame::HLine);
335  line->setFrameShadow(QFrame::Sunken);
336  layout->addWidget(line);
337 
338  std::vector<SoapySDR::ArgInfo>::const_iterator it = argInfoList.begin();
339 
340  for (; it != argInfoList.end(); ++it)
341  {
343  ArgInfoGUI *argGUI;
344 
345  if (it->type == SoapySDR::ArgInfo::BOOL) {
346  valueType = ArgInfoGUI::ArgInfoValueBool;
347  } else if (it->type == SoapySDR::ArgInfo::INT) {
348  valueType = ArgInfoGUI::ArgInfoValueInt;
349  } else if (it->type == SoapySDR::ArgInfo::FLOAT) {
350  valueType = ArgInfoGUI::ArgInfoValueFloat;
351  } else if (it->type == SoapySDR::ArgInfo::STRING) {
352  valueType = ArgInfoGUI::ArgInfoValueString;
353  } else {
354  continue;
355  }
356 
357  if (valueType == ArgInfoGUI::ArgInfoValueBool)
358  {
360  }
361  else if (it->options.size() == 0)
362  {
363  argGUI = new ArgInfoGUI(ArgInfoGUI::ArgInfoContinuous, valueType, this);
364  }
365  else
366  {
367  argGUI = new ArgInfoGUI(ArgInfoGUI::ArgInfoDiscrete, valueType, this);
368  std::vector<std::string>::const_iterator optionIt = it->options.begin();
369  std::vector<std::string>::const_iterator optionNameIt = it->optionNames.begin();
370 
371  for (int i = 0; optionIt != it->options.end(); ++optionIt, i++)
372  {
373  QString name(optionNameIt == it->optionNames.end() ? optionIt->c_str() : optionNameIt->c_str());
374 
375  if (optionNameIt != it->optionNames.end()) {
376  ++optionNameIt;
377  }
378 
379  if (valueType == ArgInfoGUI::ArgInfoValueInt) {
380  argGUI->addIntValue(name, atoi(optionIt->c_str()));
381  } else if (valueType == ArgInfoGUI::ArgInfoValueFloat) {
382  argGUI->addFloatValue(name, atof(optionIt->c_str()));
383  } else if (valueType == ArgInfoGUI::ArgInfoValueString) {
384  argGUI->addStringValue(name, QString(optionIt->c_str()));
385  }
386  }
387  }
388 
389  if ((it->range.minimum() != 0) || (it->range.maximum() != 0)) {
390  argGUI->setRange(it->range.minimum(), it->range.maximum());
391  }
392 
393  argGUI->setLabel(QString(it->name.size() == 0 ? it->key.c_str() : it->name.c_str()));
394  argGUI->setUnits(QString(it->units.c_str()));
395 
396  if (it->description.size() != 0) {
397  argGUI->setToolTip(QString(it->description.c_str()));
398  }
399 
400  layout->addWidget(argGUI);
401 
402  DynamicArgSettingGUI *gui = new DynamicArgSettingGUI(argGUI, QString(it->key.c_str()));
403 
404  // This could be made more elegant but let's make it more simple
405  if (deviceArguments)
406  {
407  m_deviceArgsGUIs.push_back(gui);
408  connect(gui, SIGNAL(valueChanged(QString, QVariant)), this, SLOT(deviceArgChanged(QString, QVariant)));
409  }
410  else
411  {
412  m_streamArgsGUIs.push_back(gui);
413  connect(gui, SIGNAL(valueChanged(QString, QVariant)), this, SLOT(streamArgChanged(QString, QVariant)));
414  }
415  }
416 }
void setUnits(const QString &units)
Definition: arginfogui.cpp:95
Ui::SoapySDRInputGui * ui
std::vector< DynamicArgSettingGUI * > m_deviceArgsGUIs
void setRange(double min, double max)
Definition: arginfogui.cpp:72
void streamArgChanged(QString itemName, QVariant value)
int32_t i
Definition: decimators.h:244
int BOOL
Definition: fcdhid.h:37
void deviceArgChanged(QString itemName, QVariant value)
void addIntValue(const QString &text, int value)
Definition: arginfogui.cpp:155
void addFloatValue(const QString &text, double value)
Definition: arginfogui.cpp:186
void setToolTip(const QString &text)
Definition: arginfogui.cpp:84
std::vector< DynamicArgSettingGUI * > m_streamArgsGUIs
void setLabel(const QString &text)
Definition: arginfogui.cpp:79
void addStringValue(const QString &text, const QString &value)
Definition: arginfogui.cpp:219
+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ createCorrectionsControl()

void SoapySDRInputGui::createCorrectionsControl ( )
private

Definition at line 268 of file soapysdrinputgui.cpp.

References autoDCCorrectionChanged(), autoIQCorrectionChanged(), dcCorrectionArgumentChanged(), dcCorrectionModuleChanged(), SoapySDRInput::hasDCAutoCorrection(), SoapySDRInput::hasDCCorrectionValue(), SoapySDRInput::hasIQAutoCorrection(), SoapySDRInput::hasIQCorrectionValue(), iqCorrectionArgumentChanged(), iqCorrectionModuleChanged(), m_autoDCCorrection, m_autoIQCorrection, m_dcCorrectionGUI, m_iqCorrectionGUI, m_sampleSource, ComplexFactorGUI::setAutomaticEnable(), ComplexFactorGUI::setLabel(), ComplexFactorGUI::setToolTip(), and ui.

Referenced by SoapySDRInputGui().

269 {
270  QVBoxLayout *layout = (QVBoxLayout *) ui->scrollAreaWidgetContents->layout();
271 
272  if (m_sampleSource->hasDCCorrectionValue()) // complex GUI
273  {
275  m_dcCorrectionGUI->setLabel(QString("DC corr"));
276  m_dcCorrectionGUI->setToolTip(QString("Hardware DC offset correction"));
278  layout->addWidget(m_dcCorrectionGUI);
279 
280  connect(m_dcCorrectionGUI, SIGNAL(moduleChanged(double)), this, SLOT(dcCorrectionModuleChanged(double)));
281  connect(m_dcCorrectionGUI, SIGNAL(argumentChanged(double)), this, SLOT(dcCorrectionArgumentChanged(double)));
282 
284  connect(m_dcCorrectionGUI, SIGNAL(automaticChanged(bool)), this, SLOT(autoDCCorrectionChanged(bool)));
285  }
286  }
287  else if (m_sampleSource->hasDCAutoCorrection()) // simple checkbox
288  {
289  m_autoDCCorrection = new QCheckBox(this);
290  m_autoDCCorrection->setText(QString("Auto DC corr"));
291  m_autoDCCorrection->setToolTip(QString("Automatic hardware DC offset correction"));
292  m_autoDCCorrection->setStyleSheet("QCheckBox::indicator::unchecked {background: rgb(79,79,79);} QCheckBox::indicator::checked {background: rgb(255, 157, 38);}");
293  layout->addWidget(m_autoDCCorrection);
294 
295  connect(m_autoDCCorrection, SIGNAL(toggled(bool)), this, SLOT(autoDCCorrectionChanged(bool)));
296  }
297 
298  if (m_sampleSource->hasIQCorrectionValue()) // complex GUI
299  {
301  m_iqCorrectionGUI->setLabel(QString("IQ corr"));
302  m_iqCorrectionGUI->setToolTip(QString("Hardware IQ imbalance correction"));
304  layout->addWidget(m_iqCorrectionGUI);
305 
306  connect(m_iqCorrectionGUI, SIGNAL(moduleChanged(double)), this, SLOT(iqCorrectionModuleChanged(double)));
307  connect(m_iqCorrectionGUI, SIGNAL(argumentChanged(double)), this, SLOT(iqCorrectionArgumentChanged(double)));
308 
310  connect(m_iqCorrectionGUI, SIGNAL(automaticChanged(bool)), this, SLOT(autoIQCorrectionChanged(bool)));
311  }
312  }
313  else if (m_sampleSource->hasIQAutoCorrection()) // simple checkbox
314  {
315  m_autoIQCorrection = new QCheckBox(this);
316  m_autoIQCorrection->setText(QString("Auto IQ corr"));
317  m_autoIQCorrection->setToolTip(QString("Automatic hardware IQ imbalance correction"));
318  m_autoIQCorrection->setStyleSheet("QCheckBox::indicator::unchecked {background: rgb(79,79,79);} QCheckBox::indicator::checked {background: rgb(255, 157, 38);}");
319  layout->addWidget(m_autoIQCorrection);
320 
321  connect(m_autoIQCorrection, SIGNAL(toggled(bool)), this, SLOT(autoIQCorrectionChanged(bool)));
322  }
323 }
Ui::SoapySDRInputGui * ui
bool hasDCAutoCorrection()
QCheckBox * m_autoDCCorrection
bool hasDCCorrectionValue()
ComplexFactorGUI * m_dcCorrectionGUI
ComplexFactorGUI * m_iqCorrectionGUI
void setLabel(const QString &text)
QCheckBox * m_autoIQCorrection
void setAutomaticEnable(bool enable)
void dcCorrectionArgumentChanged(double value)
void autoDCCorrectionChanged(bool set)
bool hasIQCorrectionValue()
void iqCorrectionArgumentChanged(double value)
void setToolTip(const QString &text)
void autoIQCorrectionChanged(bool set)
void iqCorrectionModuleChanged(double value)
bool hasIQAutoCorrection()
SoapySDRInput * m_sampleSource
void dcCorrectionModuleChanged(double value)
+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ createGlobalGainControl()

void SoapySDRInputGui::createGlobalGainControl ( )
private

Definition at line 215 of file soapysdrinputgui.cpp.

References autoGainChanged(), SoapySDRInput::getGlobalGainRange(), globalGainChanged(), SoapySDRInput::isAGCSupported(), m_autoGain, m_gainSliderGUI, m_sampleSource, leansdr::max(), leansdr::min(), IntervalSliderGUI::setInterval(), IntervalSliderGUI::setLabel(), IntervalSliderGUI::setUnits(), and ui.

Referenced by SoapySDRInputGui().

216 {
218  int min, max;
220  m_gainSliderGUI->setInterval(min, max);
221  m_gainSliderGUI->setLabel(QString("Global gain"));
222  m_gainSliderGUI->setUnits(QString(""));
223 
224  QVBoxLayout *layout = (QVBoxLayout *) ui->scrollAreaWidgetContents->layout();
225 
226  QFrame *line = new QFrame(this);
227  line->setFrameShape(QFrame::HLine);
228  line->setFrameShadow(QFrame::Sunken);
229  layout->addWidget(line);
230 
232  {
233  m_autoGain = new QCheckBox(this);
234  m_autoGain->setText(QString("AGC"));
235  m_autoGain->setStyleSheet("QCheckBox::indicator::unchecked {background: rgb(79,79,79);} QCheckBox::indicator::checked {background: rgb(255, 157, 38);}");
236  layout->addWidget(m_autoGain);
237 
238  connect(m_autoGain, SIGNAL(toggled(bool)), this, SLOT(autoGainChanged(bool)));
239  }
240 
241  layout->addWidget(m_gainSliderGUI);
242 
243  connect(m_gainSliderGUI, SIGNAL(valueChanged(double)), this, SLOT(globalGainChanged(double)));
244 }
Ui::SoapySDRInputGui * ui
QCheckBox * m_autoGain
void setUnits(const QString &units)
void autoGainChanged(bool set)
void globalGainChanged(double gain)
void setInterval(double minimum, double maximum)
void getGlobalGainRange(int &min, int &max)
void setLabel(const QString &text)
SoapySDRInput * m_sampleSource
T max(const T &x, const T &y)
Definition: framework.h:446
T min(const T &x, const T &y)
Definition: framework.h:440
IntervalSliderGUI * m_gainSliderGUI
+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ createIndividualGainsControl()

void SoapySDRInputGui::createIndividualGainsControl ( const std::vector< DeviceSoapySDRParams::GainSetting > &  individualGainsList)
private

Definition at line 246 of file soapysdrinputgui.cpp.

References arg(), i, individualGainChanged(), m_individualGainsGUIs, IntervalSliderGUI::setInterval(), IntervalSliderGUI::setLabel(), IntervalSliderGUI::setUnits(), and ui.

Referenced by SoapySDRInputGui().

247 {
248  if (individualGainsList.size() == 0) { // Leave early if list of individual gains is empty
249  return;
250  }
251 
252  QVBoxLayout *layout = (QVBoxLayout *) ui->scrollAreaWidgetContents->layout();
253  std::vector<DeviceSoapySDRParams::GainSetting>::const_iterator it = individualGainsList.begin();
254 
255  for (int i = 0; it != individualGainsList.end(); ++it, i++)
256  {
257  IntervalSliderGUI *gainGUI = new IntervalSliderGUI(this);
258  gainGUI->setInterval(it->m_range.minimum(), it->m_range.maximum());
259  gainGUI->setLabel(QString("%1 gain").arg(it->m_name.c_str()));
260  gainGUI->setUnits(QString(""));
261  DynamicItemSettingGUI *gui = new DynamicItemSettingGUI(gainGUI, QString(it->m_name.c_str()));
262  layout->addWidget(gainGUI);
263  m_individualGainsGUIs.push_back(gui);
264  connect(m_individualGainsGUIs.back(), SIGNAL(valueChanged(QString, double)), this, SLOT(individualGainChanged(QString, double)));
265  }
266 }
void individualGainChanged(QString name, double value)
Ui::SoapySDRInputGui * ui
void setUnits(const QString &units)
Fixed< IntType, IntBits > arg(const std::complex< Fixed< IntType, IntBits > > &val)
Definition: fixed.h:2401
void setInterval(double minimum, double maximum)
int32_t i
Definition: decimators.h:244
std::vector< DynamicItemSettingGUI * > m_individualGainsGUIs
void setLabel(const QString &text)
+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ createRangesControl()

void SoapySDRInputGui::createRangesControl ( ItemSettingGUI **  settingGUI,
const SoapySDR::RangeList &  rangeList,
const QString &  text,
const QString &  unit 
)
private

Definition at line 115 of file soapysdrinputgui.cpp.

References IntervalRangeGUI::addInterval(), DiscreteRangeGUI::addItem(), arg(), IntervalRangeGUI::reset(), DiscreteRangeGUI::setLabel(), IntervalRangeGUI::setLabel(), DiscreteRangeGUI::setUnits(), IntervalRangeGUI::setUnits(), and ui.

Referenced by createTunableElementsControl(), and SoapySDRInputGui().

120 {
121  if (rangeList.size() == 0) { // return early if the range list is empty
122  return;
123  }
124 
125  bool rangeDiscrete = true; // discretes values
126  bool rangeInterval = true; // intervals
127 
128  for (const auto &it : rangeList)
129  {
130  if (it.minimum() != it.maximum()) {
131  rangeDiscrete = false;
132  } else {
133  rangeInterval = false;
134  }
135  }
136 
137  if (rangeDiscrete)
138  {
139  DiscreteRangeGUI *rangeGUI = new DiscreteRangeGUI(this);
140  rangeGUI->setLabel(text);
141  rangeGUI->setUnits(QString("k%1").arg(unit));
142 
143  for (const auto &it : rangeList) {
144  rangeGUI->addItem(QString("%1").arg(QString::number(it.minimum()/1000.0, 'f', 0)), it.minimum());
145  }
146 
147  *settingGUI = rangeGUI;
148  QVBoxLayout *layout = (QVBoxLayout *) ui->scrollAreaWidgetContents->layout();
149  layout->addWidget(rangeGUI);
150  }
151  else if (rangeInterval)
152  {
153  IntervalRangeGUI *rangeGUI = new IntervalRangeGUI(ui->scrollAreaWidgetContents);
154  rangeGUI->setLabel(text);
155  rangeGUI->setUnits(unit);
156 
157  for (const auto &it : rangeList) {
158  rangeGUI->addInterval(it.minimum(), it.maximum());
159  }
160 
161  rangeGUI->reset();
162 
163  *settingGUI = rangeGUI;
164  QVBoxLayout *layout = (QVBoxLayout *) ui->scrollAreaWidgetContents->layout();
165  layout->addWidget(rangeGUI);
166  }
167 }
Ui::SoapySDRInputGui * ui
void setLabel(const QString &text)
Fixed< IntType, IntBits > arg(const std::complex< Fixed< IntType, IntBits > > &val)
Definition: fixed.h:2401
void setLabel(const QString &text)
void addItem(const QString &itemStr, double itemValue)
void setUnits(const QString &units)
void addInterval(double minimum, double maximum)
void setUnits(const QString &units)
+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ createTunableElementsControl()

void SoapySDRInputGui::createTunableElementsControl ( const std::vector< DeviceSoapySDRParams::FrequencySetting > &  tunableElementsList)
private

Definition at line 189 of file soapysdrinputgui.cpp.

References arg(), createRangesControl(), i, m_tunableElementsGUIs, and tunableElementChanged().

Referenced by SoapySDRInputGui().

190 {
191  if (tunableElementsList.size() <= 1) { // This list is created for other elements than the main one (RF) which is always at index 0
192  return;
193  }
194 
195  std::vector<DeviceSoapySDRParams::FrequencySetting>::const_iterator it = tunableElementsList.begin() + 1;
196 
197  for (int i = 0; it != tunableElementsList.end(); ++it, i++)
198  {
199  if (it->m_ranges.size() == 0) { // skip empty ranges lists
200  continue;
201  }
202 
203  ItemSettingGUI *rangeGUI;
205  &rangeGUI,
206  it->m_ranges,
207  QString("%1 freq").arg(it->m_name.c_str()),
208  QString((it->m_name == "CORR") ? "ppm" : "Hz"));
209  DynamicItemSettingGUI *gui = new DynamicItemSettingGUI(rangeGUI, QString(it->m_name.c_str()));
210  m_tunableElementsGUIs.push_back(gui);
211  connect(m_tunableElementsGUIs.back(), SIGNAL(valueChanged(QString, double)), this, SLOT(tunableElementChanged(QString, double)));
212  }
213 }
Fixed< IntType, IntBits > arg(const std::complex< Fixed< IntType, IntBits > > &val)
Definition: fixed.h:2401
int32_t i
Definition: decimators.h:244
std::vector< DynamicItemSettingGUI * > m_tunableElementsGUIs
void tunableElementChanged(QString name, double value)
void createRangesControl(ItemSettingGUI **settingGUI, const SoapySDR::RangeList &rangeList, const QString &text, const QString &unit)
+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ dcCorrectionArgumentChanged

void SoapySDRInputGui::dcCorrectionArgumentChanged ( double  value)
privateslot

Definition at line 612 of file soapysdrinputgui.cpp.

References abs(), SoapySDRInputSettings::m_dcCorrection, M_PI, m_settings, and sendSettings().

Referenced by createCorrectionsControl().

613 {
614  double angleInRadians = (value / 180.0) * M_PI;
615  std::complex<double> dcCorrection = std::polar<double>(abs(m_settings.m_dcCorrection), angleInRadians);
616  m_settings.m_dcCorrection = dcCorrection;
617  sendSettings();
618 }
SoapySDRInputSettings m_settings
Fixed< IntType, IntBits > abs(Fixed< IntType, IntBits > const &x)
Definition: fixed.h:2313
#define M_PI
Definition: rdsdemod.cpp:27
std::complex< double > m_dcCorrection
+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ dcCorrectionModuleChanged

void SoapySDRInputGui::dcCorrectionModuleChanged ( double  value)
privateslot

Definition at line 605 of file soapysdrinputgui.cpp.

References arg(), SoapySDRInputSettings::m_dcCorrection, m_settings, and sendSettings().

Referenced by createCorrectionsControl().

606 {
607  std::complex<double> dcCorrection = std::polar<double>(value, arg(m_settings.m_dcCorrection));
608  m_settings.m_dcCorrection = dcCorrection;
609  sendSettings();
610 }
SoapySDRInputSettings m_settings
Fixed< IntType, IntBits > arg(const std::complex< Fixed< IntType, IntBits > > &val)
Definition: fixed.h:2401
std::complex< double > m_dcCorrection
+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ deserialize()

bool SoapySDRInputGui::deserialize ( const QByteArray &  data)
virtual

Implements PluginInstanceGUI.

Definition at line 452 of file soapysdrinputgui.cpp.

References SoapySDRInputSettings::deserialize(), displaySettings(), m_forceSettings, m_settings, resetToDefaults(), and sendSettings().

453 {
454  if (m_settings.deserialize(data))
455  {
456  displaySettings();
457  m_forceSettings = true;
458  sendSettings();
459  return true;
460  }
461  else
462  {
463  resetToDefaults();
464  return false;
465  }
466 }
SoapySDRInputSettings m_settings
bool deserialize(const QByteArray &data)
virtual void resetToDefaults()
+ Here is the call graph for this function:

◆ destroy()

void SoapySDRInputGui::destroy ( )
virtual

Implements PluginInstanceGUI.

Definition at line 110 of file soapysdrinputgui.cpp.

111 {
112  delete this;
113 }

◆ deviceArgChanged

void SoapySDRInputGui::deviceArgChanged ( QString  itemName,
QVariant  value 
)
privateslot

Definition at line 641 of file soapysdrinputgui.cpp.

References SoapySDRInputSettings::m_deviceArgSettings, m_settings, and sendSettings().

Referenced by createArgumentsControl().

642 {
643  m_settings.m_deviceArgSettings[itemName] = value;
644  sendSettings();
645 }
SoapySDRInputSettings m_settings
QMap< QString, QVariant > m_deviceArgSettings
+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ displayCorrectionsSettings()

void SoapySDRInputGui::displayCorrectionsSettings ( )
private

Definition at line 797 of file soapysdrinputgui.cpp.

References abs(), arg(), SoapySDRInputSettings::m_autoDCCorrection, m_autoDCCorrection, SoapySDRInputSettings::m_autoIQCorrection, m_autoIQCorrection, SoapySDRInputSettings::m_dcCorrection, m_dcCorrectionGUI, SoapySDRInputSettings::m_iqCorrection, m_iqCorrectionGUI, M_PI, m_settings, ComplexFactorGUI::setArgument(), ComplexFactorGUI::setAutomatic(), and ComplexFactorGUI::setModule().

Referenced by displaySettings().

798 {
799  if (m_dcCorrectionGUI)
800  {
804  }
805 
806  if (m_iqCorrectionGUI)
807  {
811  }
812 
813  if (m_autoDCCorrection) {
815  }
816 
817  if (m_autoIQCorrection) {
819  }
820 }
QCheckBox * m_autoDCCorrection
SoapySDRInputSettings m_settings
Fixed< IntType, IntBits > abs(Fixed< IntType, IntBits > const &x)
Definition: fixed.h:2313
std::complex< double > m_iqCorrection
#define M_PI
Definition: rdsdemod.cpp:27
ComplexFactorGUI * m_dcCorrectionGUI
Fixed< IntType, IntBits > arg(const std::complex< Fixed< IntType, IntBits > > &val)
Definition: fixed.h:2401
ComplexFactorGUI * m_iqCorrectionGUI
void setArgument(double value)
void setAutomatic(bool automatic)
QCheckBox * m_autoIQCorrection
std::complex< double > m_dcCorrection
void setModule(double value)
+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ displayDeviceArgsSettings()

void SoapySDRInputGui::displayDeviceArgsSettings ( )
private

Definition at line 836 of file soapysdrinputgui.cpp.

References SoapySDRInputSettings::m_deviceArgSettings, m_deviceArgsGUIs, and m_settings.

Referenced by displaySettings(), and handleMessage().

837 {
838  for (const auto &it : m_deviceArgsGUIs)
839  {
840  QMap<QString, QVariant>::iterator elIt = m_settings.m_deviceArgSettings.find(it->getName());
841 
842  if (elIt != m_settings.m_deviceArgSettings.end())
843  {
844  it->setValue(elIt.value());
845  *elIt = it->getValue();
846  }
847  }
848 }
std::vector< DynamicArgSettingGUI * > m_deviceArgsGUIs
SoapySDRInputSettings m_settings
QMap< QString, QVariant > m_deviceArgSettings
+ Here is the caller graph for this function:

◆ displayIndividualGainsControlSettings()

void SoapySDRInputGui::displayIndividualGainsControlSettings ( )
private

Definition at line 783 of file soapysdrinputgui.cpp.

References SoapySDRInputSettings::m_individualGains, m_individualGainsGUIs, and m_settings.

Referenced by displaySettings().

784 {
785  for (const auto &it : m_individualGainsGUIs)
786  {
787  QMap<QString, double>::iterator elIt = m_settings.m_individualGains.find(it->getName());
788 
789  if (elIt != m_settings.m_individualGains.end())
790  {
791  it->setValue(*elIt);
792  *elIt = it->getValue();
793  }
794  }
795 }
SoapySDRInputSettings m_settings
QMap< QString, double > m_individualGains
std::vector< DynamicItemSettingGUI * > m_individualGainsGUIs
+ Here is the caller graph for this function:

◆ displaySettings()

void SoapySDRInputGui::displaySettings ( )
private

Definition at line 725 of file soapysdrinputgui.cpp.

References arg(), blockApplySettings(), displayCorrectionsSettings(), displayDeviceArgsSettings(), displayIndividualGainsControlSettings(), displayStreamArgsSettings(), displayTunableElementsControlSettings(), ItemSettingGUI::getCurrentValue(), IntervalSliderGUI::getCurrentValue(), SoapySDRInputSettings::m_antenna, m_antennas, SoapySDRInputSettings::m_autoGain, m_autoGain, SoapySDRInputSettings::m_bandwidth, m_bandwidthGUI, SoapySDRInputSettings::m_centerFrequency, SoapySDRInputSettings::m_devSampleRate, SoapySDRInputSettings::m_fcPos, m_gainSliderGUI, SoapySDRInputSettings::m_globalGain, SoapySDRInputSettings::m_log2Decim, SoapySDRInputSettings::m_LOppmTenths, m_sampleRateGUI, m_settings, SoapySDRInputSettings::m_softDCCorrection, SoapySDRInputSettings::m_softIQCorrection, ItemSettingGUI::setValue(), StringRangeGUI::setValue(), IntervalSliderGUI::setValue(), and ui.

Referenced by deserialize(), handleMessage(), resetToDefaults(), setCenterFrequency(), and SoapySDRInputGui().

726 {
727  blockApplySettings(true);
728 
729  ui->centerFrequency->setValue(m_settings.m_centerFrequency / 1000);
730 
731  if (m_antennas) {
732  m_antennas->setValue(m_settings.m_antenna.toStdString());
733  }
734  if (m_sampleRateGUI)
735  {
738  }
739  if (m_bandwidthGUI)
740  {
743  }
744  if (m_gainSliderGUI)
745  {
748  }
749  if (m_autoGain) {
750  m_autoGain->setChecked(m_settings.m_autoGain);
751  }
752 
753  ui->dcOffset->setChecked(m_settings.m_softDCCorrection);
754  ui->iqImbalance->setChecked(m_settings.m_softIQCorrection);
755 
756  ui->decim->setCurrentIndex(m_settings.m_log2Decim);
757  ui->fcPos->setCurrentIndex((int) m_settings.m_fcPos);
758 
759  ui->LOppm->setValue(m_settings.m_LOppmTenths);
760  ui->LOppmText->setText(QString("%1").arg(QString::number(m_settings.m_LOppmTenths/10.0, 'f', 1)));
761 
767 
768  blockApplySettings(false);
769 }
void setValue(const std::string &value)
ItemSettingGUI * m_bandwidthGUI
Ui::SoapySDRInputGui * ui
virtual void setValue(double value)=0
QCheckBox * m_autoGain
SoapySDRInputSettings m_settings
Fixed< IntType, IntBits > arg(const std::complex< Fixed< IntType, IntBits > > &val)
Definition: fixed.h:2401
ItemSettingGUI * m_sampleRateGUI
virtual double getCurrentValue()
void displayTunableElementsControlSettings()
void blockApplySettings(bool block)
virtual double getCurrentValue()=0
StringRangeGUI * m_antennas
void displayIndividualGainsControlSettings()
virtual void setValue(double value)
IntervalSliderGUI * m_gainSliderGUI
+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ displayStreamArgsSettings()

void SoapySDRInputGui::displayStreamArgsSettings ( )
private

Definition at line 822 of file soapysdrinputgui.cpp.

References m_settings, SoapySDRInputSettings::m_streamArgSettings, and m_streamArgsGUIs.

Referenced by displaySettings().

823 {
824  for (const auto &it : m_streamArgsGUIs)
825  {
826  QMap<QString, QVariant>::iterator elIt = m_settings.m_streamArgSettings.find(it->getName());
827 
828  if (elIt != m_settings.m_streamArgSettings.end())
829  {
830  it->setValue(elIt.value());
831  *elIt = it->getValue();
832  }
833  }
834 }
QMap< QString, QVariant > m_streamArgSettings
SoapySDRInputSettings m_settings
std::vector< DynamicArgSettingGUI * > m_streamArgsGUIs
+ Here is the caller graph for this function:

◆ displayTunableElementsControlSettings()

void SoapySDRInputGui::displayTunableElementsControlSettings ( )
private

Definition at line 771 of file soapysdrinputgui.cpp.

References m_settings, SoapySDRInputSettings::m_tunableElements, and m_tunableElementsGUIs.

Referenced by displaySettings().

772 {
773  for (const auto &it : m_tunableElementsGUIs)
774  {
775  QMap<QString, double>::const_iterator elIt = m_settings.m_tunableElements.find(it->getName());
776 
777  if (elIt != m_settings.m_tunableElements.end()) {
778  it->setValue(*elIt);
779  }
780  }
781 }
SoapySDRInputSettings m_settings
QMap< QString, double > m_tunableElements
std::vector< DynamicItemSettingGUI * > m_tunableElementsGUIs
+ Here is the caller graph for this function:

◆ getCenterFrequency()

qint64 SoapySDRInputGui::getCenterFrequency ( ) const
virtual

Implements PluginInstanceGUI.

Definition at line 435 of file soapysdrinputgui.cpp.

References SoapySDRInputSettings::m_centerFrequency, and m_settings.

436 {
438 }
SoapySDRInputSettings m_settings

◆ getInputMessageQueue()

virtual MessageQueue* SoapySDRInputGui::getInputMessageQueue ( )
inlinevirtual

Implements PluginInstanceGUI.

Definition at line 58 of file soapysdrinputgui.h.

58 { return &m_inputMessageQueue; }
MessageQueue m_inputMessageQueue

◆ getName()

QString SoapySDRInputGui::getName ( ) const
virtual

Implements PluginInstanceGUI.

Definition at line 423 of file soapysdrinputgui.cpp.

424 {
425  return objectName();
426 }

◆ globalGainChanged

void SoapySDRInputGui::globalGainChanged ( double  gain)
privateslot

Definition at line 575 of file soapysdrinputgui.cpp.

References SoapySDRInputSettings::m_globalGain, m_settings, and sendSettings().

Referenced by createGlobalGainControl().

576 {
577  m_settings.m_globalGain = round(gain);
578  sendSettings();
579 }
SoapySDRInputSettings m_settings
+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ handleInputMessages

void SoapySDRInputGui::handleInputMessages ( )
privateslot

Definition at line 521 of file soapysdrinputgui.cpp.

References DSPSignalNotification::getCenterFrequency(), Message::getIdentifier(), DSPSignalNotification::getSampleRate(), handleMessage(), m_deviceCenterFrequency, m_inputMessageQueue, m_sampleRate, Message::match(), MessageQueue::pop(), and updateSampleRateAndFrequency().

Referenced by SoapySDRInputGui().

522 {
523  Message* message;
524 
525  while ((message = m_inputMessageQueue.pop()) != 0)
526  {
527  qDebug("SoapySDRInputGui::handleInputMessages: message: %s", message->getIdentifier());
528 
529  if (DSPSignalNotification::match(*message))
530  {
531  DSPSignalNotification* notif = (DSPSignalNotification*) message;
532  m_sampleRate = notif->getSampleRate();
534  qDebug("SoapySDRInputGui::handleInputMessages: DSPSignalNotification: SampleRate:%d, CenterFrequency:%llu", notif->getSampleRate(), notif->getCenterFrequency());
536 
537  delete message;
538  }
539  else
540  {
541  if (handleMessage(*message))
542  {
543  delete message;
544  }
545  }
546  }
547 }
Message * pop()
Pop message from queue.
virtual bool handleMessage(const Message &message)
qint64 getCenterFrequency() const
Definition: dspcommands.h:329
static bool match(const Message *message)
Definition: message.cpp:45
quint64 m_deviceCenterFrequency
Center frequency in device.
int getSampleRate() const
Definition: dspcommands.h:328
virtual const char * getIdentifier() const
Definition: message.cpp:35
MessageQueue m_inputMessageQueue
void updateSampleRateAndFrequency()
+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ handleMessage()

bool SoapySDRInputGui::handleMessage ( const Message message)
virtual

Implements PluginInstanceGUI.

Definition at line 468 of file soapysdrinputgui.cpp.

References blockApplySettings(), displayDeviceArgsSettings(), displaySettings(), DeviceSoapySDRShared::MsgReportDeviceArgsChange::getDeviceArgSettings(), SoapySDRInput::MsgReportGainChange::getGlobalGain(), SoapySDRInput::MsgReportGainChange::getIndividualGains(), SoapySDRInput::MsgConfigureSoapySDRInput::getSettings(), SoapySDRInput::MsgReportGainChange::getSettings(), SoapySDRInput::MsgStartStop::getStartStop(), SoapySDRInputSettings::m_deviceArgSettings, SoapySDRInputSettings::m_globalGain, SoapySDRInputSettings::m_individualGains, m_settings, Message::match(), and ui.

Referenced by handleInputMessages().

469 {
471  {
473  m_settings = cfg.getSettings();
474  blockApplySettings(true);
475  displaySettings();
476  blockApplySettings(false);
477 
478  return true;
479  }
481  {
483  const SoapySDRInputSettings& gainSettings = report.getSettings();
484 
485  if (report.getGlobalGain()) {
486  m_settings.m_globalGain = gainSettings.m_globalGain;
487  }
488  if (report.getIndividualGains()) {
490  }
491 
492  blockApplySettings(true);
493  displaySettings();
494  blockApplySettings(false);
495 
496  return true;
497  }
499  {
503 
504  return true;
505  }
506  else if (SoapySDRInput::MsgStartStop::match(message))
507  {
509  blockApplySettings(true);
510  ui->startStop->setChecked(notif.getStartStop());
511  blockApplySettings(false);
512 
513  return true;
514  }
515  else
516  {
517  return false;
518  }
519 }
Ui::SoapySDRInputGui * ui
const QMap< QString, QVariant > & getDeviceArgSettings() const
SoapySDRInputSettings m_settings
QMap< QString, QVariant > m_deviceArgSettings
QMap< QString, double > m_individualGains
static bool match(const Message *message)
Definition: message.cpp:45
void blockApplySettings(bool block)
const SoapySDRInputSettings & getSettings() const
Definition: soapysdrinput.h:58
const SoapySDRInputSettings & getSettings() const
+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ individualGainChanged

void SoapySDRInputGui::individualGainChanged ( QString  name,
double  value 
)
privateslot

Definition at line 587 of file soapysdrinputgui.cpp.

References SoapySDRInputSettings::m_individualGains, m_settings, and sendSettings().

Referenced by createIndividualGainsControl().

588 {
589  m_settings.m_individualGains[name] = value;
590  sendSettings();
591 }
SoapySDRInputSettings m_settings
QMap< QString, double > m_individualGains
+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ iqCorrectionArgumentChanged

void SoapySDRInputGui::iqCorrectionArgumentChanged ( double  value)
privateslot

Definition at line 627 of file soapysdrinputgui.cpp.

References abs(), SoapySDRInputSettings::m_iqCorrection, M_PI, m_settings, and sendSettings().

Referenced by createCorrectionsControl().

628 {
629  double angleInRadians = (value / 180.0) * M_PI;
630  std::complex<double> iqCorrection = std::polar<double>(abs(m_settings.m_iqCorrection), angleInRadians);
631  m_settings.m_iqCorrection = iqCorrection;
632  sendSettings();
633 }
SoapySDRInputSettings m_settings
Fixed< IntType, IntBits > abs(Fixed< IntType, IntBits > const &x)
Definition: fixed.h:2313
std::complex< double > m_iqCorrection
#define M_PI
Definition: rdsdemod.cpp:27
+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ iqCorrectionModuleChanged

void SoapySDRInputGui::iqCorrectionModuleChanged ( double  value)
privateslot

Definition at line 620 of file soapysdrinputgui.cpp.

References arg(), SoapySDRInputSettings::m_iqCorrection, m_settings, and sendSettings().

Referenced by createCorrectionsControl().

621 {
622  std::complex<double> iqCorrection = std::polar<double>(value, arg(m_settings.m_iqCorrection));
623  m_settings.m_iqCorrection = iqCorrection;
624  sendSettings();
625 }
SoapySDRInputSettings m_settings
std::complex< double > m_iqCorrection
Fixed< IntType, IntBits > arg(const std::complex< Fixed< IntType, IntBits > > &val)
Definition: fixed.h:2401
+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ on_centerFrequency_changed

void SoapySDRInputGui::on_centerFrequency_changed ( quint64  value)
privateslot

Definition at line 647 of file soapysdrinputgui.cpp.

References SoapySDRInputSettings::m_centerFrequency, m_settings, and sendSettings().

648 {
649  m_settings.m_centerFrequency = value * 1000;
650  sendSettings();
651 }
SoapySDRInputSettings m_settings
+ Here is the call graph for this function:

◆ on_dcOffset_toggled

void SoapySDRInputGui::on_dcOffset_toggled ( bool  checked)
privateslot

Definition at line 653 of file soapysdrinputgui.cpp.

References m_settings, SoapySDRInputSettings::m_softDCCorrection, and sendSettings().

654 {
655  m_settings.m_softDCCorrection = checked;
656  sendSettings();
657 }
SoapySDRInputSettings m_settings
+ Here is the call graph for this function:

◆ on_decim_currentIndexChanged

void SoapySDRInputGui::on_decim_currentIndexChanged ( int  index)
privateslot

Definition at line 665 of file soapysdrinputgui.cpp.

References SoapySDRInputSettings::m_log2Decim, m_settings, and sendSettings().

666 {
667  if ((index <0) || (index > 6))
668  return;
669  m_settings.m_log2Decim = index;
670  sendSettings();
671 }
SoapySDRInputSettings m_settings
+ Here is the call graph for this function:

◆ on_fcPos_currentIndexChanged

void SoapySDRInputGui::on_fcPos_currentIndexChanged ( int  index)
privateslot

◆ on_iqImbalance_toggled

void SoapySDRInputGui::on_iqImbalance_toggled ( bool  checked)
privateslot

Definition at line 659 of file soapysdrinputgui.cpp.

References m_settings, SoapySDRInputSettings::m_softIQCorrection, and sendSettings().

660 {
661  m_settings.m_softIQCorrection = checked;
662  sendSettings();
663 }
SoapySDRInputSettings m_settings
+ Here is the call graph for this function:

◆ on_LOppm_valueChanged

void SoapySDRInputGui::on_LOppm_valueChanged ( int  value)
privateslot

Definition at line 697 of file soapysdrinputgui.cpp.

References arg(), SoapySDRInputSettings::m_LOppmTenths, m_settings, sendSettings(), and ui.

698 {
699  ui->LOppmText->setText(QString("%1").arg(QString::number(value/10.0, 'f', 1)));
700  m_settings.m_LOppmTenths = value;
701  sendSettings();
702 }
Ui::SoapySDRInputGui * ui
SoapySDRInputSettings m_settings
Fixed< IntType, IntBits > arg(const std::complex< Fixed< IntType, IntBits > > &val)
Definition: fixed.h:2401
+ Here is the call graph for this function:

◆ on_record_toggled

void SoapySDRInputGui::on_record_toggled ( bool  checked)
privateslot

Definition at line 713 of file soapysdrinputgui.cpp.

References SoapySDRInput::MsgFileRecord::create(), DeviceSampleSource::getInputMessageQueue(), m_sampleSource, MessageQueue::push(), and ui.

714 {
715  if (checked) {
716  ui->record->setStyleSheet("QToolButton { background-color : red; }");
717  } else {
718  ui->record->setStyleSheet("QToolButton { background:rgb(79,79,79); }");
719  }
720 
723 }
void push(Message *message, bool emitSignal=true)
Push message onto queue.
Ui::SoapySDRInputGui * ui
MessageQueue * getInputMessageQueue()
static MsgFileRecord * create(bool startStop)
Definition: soapysdrinput.h:83
SoapySDRInput * m_sampleSource
+ Here is the call graph for this function:

◆ on_startStop_toggled

void SoapySDRInputGui::on_startStop_toggled ( bool  checked)
privateslot

Definition at line 704 of file soapysdrinputgui.cpp.

References SoapySDRInput::MsgStartStop::create(), DeviceSampleSource::getInputMessageQueue(), m_doApplySettings, m_sampleSource, and MessageQueue::push().

705 {
706  if (m_doApplySettings)
707  {
710  }
711 }
void push(Message *message, bool emitSignal=true)
Push message onto queue.
MessageQueue * getInputMessageQueue()
static MsgStartStop * create(bool startStop)
SoapySDRInput * m_sampleSource
+ Here is the call graph for this function:

◆ on_transverter_clicked

void SoapySDRInputGui::on_transverter_clicked ( )
privateslot

Definition at line 687 of file soapysdrinputgui.cpp.

References m_settings, SoapySDRInputSettings::m_transverterDeltaFrequency, SoapySDRInputSettings::m_transverterMode, sendSettings(), setCenterFrequencySetting(), ui, and updateFrequencyLimits().

688 {
689  m_settings.m_transverterMode = ui->transverter->getDeltaFrequencyAcive();
690  m_settings.m_transverterDeltaFrequency = ui->transverter->getDeltaFrequency();
691  qDebug("SoapySDRInputGui::on_transverter_clicked: %lld Hz %s", m_settings.m_transverterDeltaFrequency, m_settings.m_transverterMode ? "on" : "off");
693  setCenterFrequencySetting(ui->centerFrequency->getValueNew());
694  sendSettings();
695 }
Ui::SoapySDRInputGui * ui
SoapySDRInputSettings m_settings
void setCenterFrequencySetting(uint64_t kHzValue)
+ Here is the call graph for this function:

◆ openDeviceSettingsDialog

void SoapySDRInputGui::openDeviceSettingsDialog ( const QPoint &  p)
privateslot

Definition at line 935 of file soapysdrinputgui.cpp.

References BasicDeviceSettingsDialog::getReverseAPIAddress(), BasicDeviceSettingsDialog::getReverseAPIDeviceIndex(), BasicDeviceSettingsDialog::getReverseAPIPort(), SoapySDRInputSettings::m_reverseAPIAddress, SoapySDRInputSettings::m_reverseAPIDeviceIndex, SoapySDRInputSettings::m_reverseAPIPort, m_settings, SoapySDRInputSettings::m_useReverseAPI, sendSettings(), BasicDeviceSettingsDialog::setReverseAPIAddress(), BasicDeviceSettingsDialog::setReverseAPIDeviceIndex(), BasicDeviceSettingsDialog::setReverseAPIPort(), BasicDeviceSettingsDialog::setUseReverseAPI(), and BasicDeviceSettingsDialog::useReverseAPI().

Referenced by SoapySDRInputGui().

936 {
937  BasicDeviceSettingsDialog dialog(this);
938  dialog.setUseReverseAPI(m_settings.m_useReverseAPI);
939  dialog.setReverseAPIAddress(m_settings.m_reverseAPIAddress);
940  dialog.setReverseAPIPort(m_settings.m_reverseAPIPort);
941  dialog.setReverseAPIDeviceIndex(m_settings.m_reverseAPIDeviceIndex);
942 
943  dialog.move(p);
944  dialog.exec();
945 
946  m_settings.m_useReverseAPI = dialog.useReverseAPI();
947  m_settings.m_reverseAPIAddress = dialog.getReverseAPIAddress();
948  m_settings.m_reverseAPIPort = dialog.getReverseAPIPort();
949  m_settings.m_reverseAPIDeviceIndex = dialog.getReverseAPIDeviceIndex();
950 
951  sendSettings();
952 }
SoapySDRInputSettings m_settings
+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ resetToDefaults()

void SoapySDRInputGui::resetToDefaults ( )
virtual

Implements PluginInstanceGUI.

Definition at line 428 of file soapysdrinputgui.cpp.

References displaySettings(), m_settings, SoapySDRInputSettings::resetToDefaults(), and sendSettings().

Referenced by deserialize().

429 {
431  displaySettings();
432  sendSettings();
433 }
SoapySDRInputSettings m_settings
+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ sampleRateChanged

void SoapySDRInputGui::sampleRateChanged ( double  sampleRate)
privateslot

Definition at line 557 of file soapysdrinputgui.cpp.

References SoapySDRInputSettings::m_devSampleRate, m_settings, and sendSettings().

Referenced by SoapySDRInputGui().

558 {
559  m_settings.m_devSampleRate = round(sampleRate);
560  sendSettings();
561 }
SoapySDRInputSettings m_settings
+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ sendSettings()

void SoapySDRInputGui::sendSettings ( )
private

◆ serialize()

QByteArray SoapySDRInputGui::serialize ( ) const
virtual

Implements PluginInstanceGUI.

Definition at line 447 of file soapysdrinputgui.cpp.

References m_settings, and SoapySDRInputSettings::serialize().

448 {
449  return m_settings.serialize();
450 }
SoapySDRInputSettings m_settings
QByteArray serialize() const
+ Here is the call graph for this function:

◆ setCenterFrequency()

void SoapySDRInputGui::setCenterFrequency ( qint64  centerFrequency)
virtual

Implements PluginInstanceGUI.

Definition at line 440 of file soapysdrinputgui.cpp.

References displaySettings(), SoapySDRInputSettings::m_centerFrequency, m_settings, and sendSettings().

441 {
442  m_settings.m_centerFrequency = centerFrequency;
443  displaySettings();
444  sendSettings();
445 }
SoapySDRInputSettings m_settings
+ Here is the call graph for this function:

◆ setCenterFrequencySetting()

void SoapySDRInputGui::setCenterFrequencySetting ( uint64_t  kHzValue)
private

Definition at line 881 of file soapysdrinputgui.cpp.

References arg(), SoapySDRInputSettings::m_centerFrequency, m_settings, and ui.

Referenced by on_transverter_clicked().

882 {
883  int64_t centerFrequency = kHzValue*1000;
884 
885  m_settings.m_centerFrequency = centerFrequency < 0 ? 0 : (uint64_t) centerFrequency;
886  ui->centerFrequency->setToolTip(QString("Main center frequency in kHz (LO: %1 kHz)").arg(centerFrequency/1000));
887 }
Ui::SoapySDRInputGui * ui
SoapySDRInputSettings m_settings
__int64 int64_t
Definition: rtptypes_win.h:47
Fixed< IntType, IntBits > arg(const std::complex< Fixed< IntType, IntBits > > &val)
Definition: fixed.h:2401
unsigned __int64 uint64_t
Definition: rtptypes_win.h:48
+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ setName()

void SoapySDRInputGui::setName ( const QString &  name)
virtual

Implements PluginInstanceGUI.

Definition at line 418 of file soapysdrinputgui.cpp.

419 {
420  setObjectName(name);
421 }

◆ streamArgChanged

void SoapySDRInputGui::streamArgChanged ( QString  itemName,
QVariant  value 
)
privateslot

Definition at line 635 of file soapysdrinputgui.cpp.

References m_settings, SoapySDRInputSettings::m_streamArgSettings, and sendSettings().

Referenced by createArgumentsControl().

636 {
637  m_settings.m_streamArgSettings[itemName] = value;
638  sendSettings();
639 }
QMap< QString, QVariant > m_streamArgSettings
SoapySDRInputSettings m_settings
+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ tunableElementChanged

void SoapySDRInputGui::tunableElementChanged ( QString  name,
double  value 
)
privateslot

Definition at line 569 of file soapysdrinputgui.cpp.

References m_settings, SoapySDRInputSettings::m_tunableElements, and sendSettings().

Referenced by createTunableElementsControl().

570 {
571  m_settings.m_tunableElements[name] = value;
572  sendSettings();
573 }
SoapySDRInputSettings m_settings
QMap< QString, double > m_tunableElements
+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ updateFrequencyLimits()

void SoapySDRInputGui::updateFrequencyLimits ( )
private

Definition at line 864 of file soapysdrinputgui.cpp.

References SoapySDRInput::getFrequencyRange(), m_sampleSource, m_settings, SoapySDRInputSettings::m_transverterDeltaFrequency, SoapySDRInputSettings::m_transverterMode, and ui.

Referenced by on_transverter_clicked().

865 {
866  // values in kHz
867  uint64_t f_min, f_max;
868  qint64 deltaFrequency = m_settings.m_transverterMode ? m_settings.m_transverterDeltaFrequency/1000 : 0;
869  m_sampleSource->getFrequencyRange(f_min, f_max);
870  qint64 minLimit = f_min/1000 + deltaFrequency;
871  qint64 maxLimit = f_max/1000 + deltaFrequency;
872 
873  minLimit = minLimit < 0 ? 0 : minLimit > 9999999 ? 9999999 : minLimit;
874  maxLimit = maxLimit < 0 ? 0 : maxLimit > 9999999 ? 9999999 : maxLimit;
875 
876  qDebug("SoapySDRInputGui::updateFrequencyLimits: delta: %lld min: %lld max: %lld", deltaFrequency, minLimit, maxLimit);
877 
878  ui->centerFrequency->setValueRange(7, minLimit, maxLimit);
879 }
Ui::SoapySDRInputGui * ui
SoapySDRInputSettings m_settings
void getFrequencyRange(uint64_t &min, uint64_t &max)
SoapySDRInput * m_sampleSource
unsigned __int64 uint64_t
Definition: rtptypes_win.h:48
+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ updateHardware

void SoapySDRInputGui::updateHardware ( )
privateslot

Definition at line 894 of file soapysdrinputgui.cpp.

References SoapySDRInput::MsgConfigureSoapySDRInput::create(), DeviceSampleSource::getInputMessageQueue(), m_doApplySettings, m_forceSettings, m_sampleSource, m_settings, m_updateTimer, and MessageQueue::push().

Referenced by SoapySDRInputGui().

895 {
896  if (m_doApplySettings)
897  {
898  qDebug() << "SoapySDRInputGui::updateHardware";
901  m_forceSettings = false;
902  m_updateTimer.stop();
903  }
904 }
void push(Message *message, bool emitSignal=true)
Push message onto queue.
MessageQueue * getInputMessageQueue()
SoapySDRInputSettings m_settings
static MsgConfigureSoapySDRInput * create(const SoapySDRInputSettings &settings, bool force)
Definition: soapysdrinput.h:61
SoapySDRInput * m_sampleSource
+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ updateSampleRateAndFrequency()

void SoapySDRInputGui::updateSampleRateAndFrequency ( )
private

Definition at line 857 of file soapysdrinputgui.cpp.

References arg(), DeviceUISet::getSpectrum(), m_deviceCenterFrequency, m_deviceUISet, m_sampleRate, GLSpectrum::setCenterFrequency(), GLSpectrum::setSampleRate(), and ui.

Referenced by handleInputMessages().

858 {
861  ui->deviceRateText->setText(tr("%1k").arg(QString::number(m_sampleRate / 1000.0f, 'g', 5)));
862 }
void setSampleRate(qint32 sampleRate)
Definition: glspectrum.cpp:211
Ui::SoapySDRInputGui * ui
Fixed< IntType, IntBits > arg(const std::complex< Fixed< IntType, IntBits > > &val)
Definition: fixed.h:2401
GLSpectrum * getSpectrum()
Direct spectrum getter.
Definition: deviceuiset.h:57
DeviceUISet * m_deviceUISet
quint64 m_deviceCenterFrequency
Center frequency in device.
void setCenterFrequency(qint64 frequency)
Definition: glspectrum.cpp:175
+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ updateStatus

void SoapySDRInputGui::updateStatus ( )
privateslot

Definition at line 906 of file soapysdrinputgui.cpp.

References DeviceAPI::errorMessage(), DeviceUISet::m_deviceAPI, m_deviceUISet, m_lastEngineState, DeviceAPI::state(), DeviceAPI::StError, DeviceAPI::StIdle, DeviceAPI::StNotStarted, DeviceAPI::StRunning, and ui.

Referenced by SoapySDRInputGui().

907 {
908  int state = m_deviceUISet->m_deviceAPI->state();
909 
910  if(m_lastEngineState != state)
911  {
912  switch(state)
913  {
915  ui->startStop->setStyleSheet("QToolButton { background:rgb(79,79,79); }");
916  break;
917  case DeviceAPI::StIdle:
918  ui->startStop->setStyleSheet("QToolButton { background-color : blue; }");
919  break;
921  ui->startStop->setStyleSheet("QToolButton { background-color : green; }");
922  break;
923  case DeviceAPI::StError:
924  ui->startStop->setStyleSheet("QToolButton { background-color : red; }");
925  QMessageBox::information(this, tr("Message"), m_deviceUISet->m_deviceAPI->errorMessage());
926  break;
927  default:
928  break;
929  }
930 
931  m_lastEngineState = state;
932  }
933 }
Ui::SoapySDRInputGui * ui
QString errorMessage()
Last error message from the device engine.
Definition: deviceapi.cpp:290
engine is before initialization
Definition: deviceapi.h:53
EngineState state() const
Return the state of the device engine corresponding to the stream type.
Definition: deviceapi.cpp:277
DeviceAPI * m_deviceAPI
Definition: deviceuiset.h:48
engine is idle
Definition: deviceapi.h:54
DeviceUISet * m_deviceUISet
engine is running
Definition: deviceapi.h:56
engine is in error
Definition: deviceapi.h:57
+ Here is the call graph for this function:
+ Here is the caller graph for this function:

Member Data Documentation

◆ m_antennas

StringRangeGUI* SoapySDRInputGui::m_antennas
private

Definition at line 88 of file soapysdrinputgui.h.

Referenced by antennasChanged(), createAntennasControl(), and displaySettings().

◆ m_autoDCCorrection

QCheckBox* SoapySDRInputGui::m_autoDCCorrection
private

Definition at line 97 of file soapysdrinputgui.h.

Referenced by createCorrectionsControl(), and displayCorrectionsSettings().

◆ m_autoGain

QCheckBox* SoapySDRInputGui::m_autoGain
private

Definition at line 94 of file soapysdrinputgui.h.

Referenced by createGlobalGainControl(), and displaySettings().

◆ m_autoIQCorrection

QCheckBox* SoapySDRInputGui::m_autoIQCorrection
private

Definition at line 98 of file soapysdrinputgui.h.

Referenced by createCorrectionsControl(), and displayCorrectionsSettings().

◆ m_bandwidthGUI

ItemSettingGUI* SoapySDRInputGui::m_bandwidthGUI
private

Definition at line 90 of file soapysdrinputgui.h.

Referenced by displaySettings(), and SoapySDRInputGui().

◆ m_dcCorrectionGUI

ComplexFactorGUI* SoapySDRInputGui::m_dcCorrectionGUI
private

Definition at line 95 of file soapysdrinputgui.h.

Referenced by createCorrectionsControl(), and displayCorrectionsSettings().

◆ m_deviceArgsGUIs

std::vector<DynamicArgSettingGUI*> SoapySDRInputGui::m_deviceArgsGUIs
private

Definition at line 100 of file soapysdrinputgui.h.

Referenced by createArgumentsControl(), and displayDeviceArgsSettings().

◆ m_deviceCenterFrequency

quint64 SoapySDRInputGui::m_deviceCenterFrequency
private

Center frequency in device.

Definition at line 84 of file soapysdrinputgui.h.

Referenced by handleInputMessages(), and updateSampleRateAndFrequency().

◆ m_deviceUISet

DeviceUISet* SoapySDRInputGui::m_deviceUISet
private

Definition at line 76 of file soapysdrinputgui.h.

Referenced by SoapySDRInputGui(), updateSampleRateAndFrequency(), and updateStatus().

◆ m_doApplySettings

bool SoapySDRInputGui::m_doApplySettings
private

Definition at line 78 of file soapysdrinputgui.h.

Referenced by blockApplySettings(), on_startStop_toggled(), and updateHardware().

◆ m_forceSettings

bool SoapySDRInputGui::m_forceSettings
private

Definition at line 77 of file soapysdrinputgui.h.

Referenced by deserialize(), and updateHardware().

◆ m_gainSliderGUI

IntervalSliderGUI* SoapySDRInputGui::m_gainSliderGUI
private

Definition at line 92 of file soapysdrinputgui.h.

Referenced by createGlobalGainControl(), and displaySettings().

◆ m_individualGainsGUIs

std::vector<DynamicItemSettingGUI*> SoapySDRInputGui::m_individualGainsGUIs
private

◆ m_inputMessageQueue

MessageQueue SoapySDRInputGui::m_inputMessageQueue
private

Definition at line 86 of file soapysdrinputgui.h.

Referenced by handleInputMessages(), and SoapySDRInputGui().

◆ m_iqCorrectionGUI

ComplexFactorGUI* SoapySDRInputGui::m_iqCorrectionGUI
private

Definition at line 96 of file soapysdrinputgui.h.

Referenced by createCorrectionsControl(), and displayCorrectionsSettings().

◆ m_lastEngineState

int SoapySDRInputGui::m_lastEngineState
private

Definition at line 85 of file soapysdrinputgui.h.

Referenced by updateStatus().

◆ m_sampleRate

int SoapySDRInputGui::m_sampleRate
private

Definition at line 83 of file soapysdrinputgui.h.

Referenced by handleInputMessages(), and updateSampleRateAndFrequency().

◆ m_sampleRateGUI

ItemSettingGUI* SoapySDRInputGui::m_sampleRateGUI
private

Definition at line 89 of file soapysdrinputgui.h.

Referenced by displaySettings(), and SoapySDRInputGui().

◆ m_sampleSource

SoapySDRInput* SoapySDRInputGui::m_sampleSource
private

◆ m_settings

SoapySDRInputSettings SoapySDRInputGui::m_settings
private

◆ m_statusTimer

QTimer SoapySDRInputGui::m_statusTimer
private

Definition at line 81 of file soapysdrinputgui.h.

Referenced by SoapySDRInputGui().

◆ m_streamArgsGUIs

std::vector<DynamicArgSettingGUI*> SoapySDRInputGui::m_streamArgsGUIs
private

Definition at line 99 of file soapysdrinputgui.h.

Referenced by createArgumentsControl(), and displayStreamArgsSettings().

◆ m_tunableElementsGUIs

std::vector<DynamicItemSettingGUI*> SoapySDRInputGui::m_tunableElementsGUIs
private

◆ m_updateTimer

QTimer SoapySDRInputGui::m_updateTimer
private

Definition at line 80 of file soapysdrinputgui.h.

Referenced by sendSettings(), SoapySDRInputGui(), and updateHardware().

◆ ui

Ui::SoapySDRInputGui* SoapySDRInputGui::ui
private

The documentation for this class was generated from the following files: