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 Slots | Public Member Functions | Static Public Member Functions | Private Slots | Private Member Functions | Private Attributes | List of all members
BFMDemodGUI Class Reference

#include <bfmdemodgui.h>

+ Inheritance diagram for BFMDemodGUI:
+ Collaboration diagram for BFMDemodGUI:

Public Slots

void channelMarkerChangedByCursor ()
 
void channelMarkerHighlightedByCursor ()
 

Public Member Functions

virtual void destroy ()
 
void setName (const QString &name)
 
QString getName () const
 
virtual qint64 getCenterFrequency () const
 
virtual void setCenterFrequency (qint64 centerFrequency)
 
void resetToDefaults ()
 
QByteArray serialize () const
 
bool deserialize (const QByteArray &data)
 
virtual MessageQueuegetInputMessageQueue ()
 
virtual bool handleMessage (const Message &message)
 
- Public Member Functions inherited from RollupWidget
 RollupWidget (QWidget *parent=NULL)
 
void setTitleColor (const QColor &c)
 
void setHighlighted (bool highlighted)
 
- Public Member Functions inherited from PluginInstanceGUI
 PluginInstanceGUI ()
 
virtual ~PluginInstanceGUI ()
 

Static Public Member Functions

static BFMDemodGUIcreate (PluginAPI *pluginAPI, DeviceUISet *deviceAPI, BasebandSampleSink *rxChannel)
 

Private Slots

void on_deltaFrequency_changed (qint64 value)
 
void on_rfBW_valueChanged (int value)
 
void on_afBW_valueChanged (int value)
 
void on_volume_valueChanged (int value)
 
void on_squelch_valueChanged (int value)
 
void on_audioStereo_toggled (bool stereo)
 
void on_lsbStereo_toggled (bool lsb)
 
void on_showPilot_clicked ()
 
void on_rds_clicked ()
 
void on_g14ProgServiceNames_currentIndexChanged (int index)
 
void on_clearData_clicked (bool checked)
 
void on_g00AltFrequenciesBox_activated (int index)
 
void on_g14MappedFrequencies_activated (int index)
 
void on_g14AltFrequencies_activated (int index)
 
void onWidgetRolled (QWidget *widget, bool rollDown)
 
void onMenuDialogCalled (const QPoint &p)
 
void handleInputMessages ()
 
void audioSelect ()
 
void tick ()
 

Private Member Functions

 BFMDemodGUI (PluginAPI *pluginAPI, DeviceUISet *deviceUISet, BasebandSampleSink *rxChannel, QWidget *parent=0)
 
virtual ~BFMDemodGUI ()
 
void blockApplySettings (bool block)
 
void applySettings (bool force=false)
 
void displaySettings ()
 
void rdsUpdate (bool force)
 
void rdsUpdateFixedFields ()
 
void leaveEvent (QEvent *)
 
void enterEvent (QEvent *)
 
void changeFrequency (qint64 f)
 

Private Attributes

Ui::BFMDemodGUI * ui
 
PluginAPIm_pluginAPI
 
DeviceUISetm_deviceUISet
 
ChannelMarker m_channelMarker
 
BFMDemodSettings m_settings
 
bool m_doApplySettings
 
int m_rdsTimerCount
 
SpectrumVism_spectrumVis
 
BFMDemodm_bfmDemod
 
int m_rate
 
std::vector< unsigned int > m_g14ComboIndex
 
MessageQueue m_inputMessageQueue
 

Additional Inherited Members

- Signals inherited from RollupWidget
void widgetRolled (QWidget *widget, bool rollDown)
 
- Protected Types inherited from RollupWidget
enum  { VersionMarker = 0xff }
 
enum  ContextMenuType { ContextMenuNone, ContextMenuChannelSettings, ContextMenuStreamSettings }
 
- Protected Member Functions inherited from RollupWidget
int arrangeRollups ()
 
QByteArray saveState (int version=0) const
 
bool restoreState (const QByteArray &state, int version=0)
 
void paintEvent (QPaintEvent *)
 
int paintRollup (QWidget *rollup, int pos, QPainter *p, bool last, const QColor &frame)
 
void resizeEvent (QResizeEvent *size)
 
void mousePressEvent (QMouseEvent *event)
 
bool event (QEvent *event)
 
bool eventFilter (QObject *object, QEvent *event)
 
void resetContextMenuType ()
 
void setStreamIndicator (const QString &indicator)
 
- Protected Attributes inherited from RollupWidget
QColor m_titleColor
 
QColor m_titleTextColor
 
bool m_highlighted
 
ContextMenuType m_contextMenuType
 
QString m_streamIndicator
 

Detailed Description

Definition at line 40 of file bfmdemodgui.h.

Constructor & Destructor Documentation

◆ BFMDemodGUI()

BFMDemodGUI::BFMDemodGUI ( PluginAPI pluginAPI,
DeviceUISet deviceUISet,
BasebandSampleSink rxChannel,
QWidget *  parent = 0 
)
explicitprivate

Definition at line 351 of file bfmdemodgui.cpp.

References DeviceUISet::addChannelMarker(), DeviceUISet::addRollupWidget(), applySettings(), arg(), audioSelect(), FFTWindow::BlackmanHarris, channelMarkerChangedByCursor(), channelMarkerHighlightedByCursor(), LevelMeterSignalDB::ColorGreenAndBlue, SpectrumVis::configure(), displaySettings(), ChannelMarker::getColor(), getInputMessageQueue(), BasebandSampleSink::getInputMessageQueue(), MainWindow::getInstance(), ColorMapper::GrayGold, handleInputMessages(), m_bfmDemod, BFMDemod::m_channelIdURI, m_channelMarker, m_deviceUISet, m_rate, BFMDemodSettings::m_rgbColor, m_settings, m_spectrumVis, onMenuDialogCalled(), onWidgetRolled(), rdsUpdate(), rdsUpdateFixedFields(), DeviceUISet::registerRxChannelInstance(), SDR_RX_SCALEF, ChannelMarker::setBandwidth(), ChannelMarker::setCenterFrequency(), BFMDemodSettings::setChannelMarker(), ChannelMarker::setColor(), BasebandSampleSink::setMessageQueueToGUI(), BFMDemod::setSampleSink(), BFMDemodSettings::setSpectrumGUI(), ChannelMarker::setTitle(), RollupWidget::setTitleColor(), ChannelMarker::setVisible(), tick(), ui, and RollupWidget::widgetRolled().

Referenced by create().

351  :
352  RollupWidget(parent),
353  ui(new Ui::BFMDemodGUI),
354  m_pluginAPI(pluginAPI),
355  m_deviceUISet(deviceUISet),
356  m_channelMarker(this),
357  m_rdsTimerCount(0),
358  m_rate(625000)
359 {
360  ui->setupUi(this);
361  ui->deltaFrequencyLabel->setText(QString("%1f").arg(QChar(0x94, 0x03)));
362  ui->deltaFrequency->setColorMapper(ColorMapper(ColorMapper::GrayGold));
363  ui->deltaFrequency->setValueRange(false, 7, -9999999, 9999999);
364  ui->channelPowerMeter->setColorTheme(LevelMeterSignalDB::ColorGreenAndBlue);
365 
366  CRightClickEnabler *audioMuteRightClickEnabler = new CRightClickEnabler(ui->audioStereo);
367  connect(audioMuteRightClickEnabler, SIGNAL(rightClick(const QPoint &)), this, SLOT(audioSelect()));
368 
369  setAttribute(Qt::WA_DeleteOnClose, true);
370  connect(this, SIGNAL(widgetRolled(QWidget*,bool)), this, SLOT(onWidgetRolled(QWidget*,bool)));
371  connect(this, SIGNAL(customContextMenuRequested(const QPoint &)), this, SLOT(onMenuDialogCalled(const QPoint &)));
372  connect(getInputMessageQueue(), SIGNAL(messageEnqueued()), this, SLOT(handleInputMessages()));
373 
374  m_spectrumVis = new SpectrumVis(SDR_RX_SCALEF, ui->glSpectrum);
375  m_bfmDemod = (BFMDemod*) rxChannel; //new BFMDemod(m_deviceUISet->m_deviceSourceAPI);
378 
379  ui->glSpectrum->setCenterFrequency(m_rate / 4);
380  ui->glSpectrum->setSampleRate(m_rate / 2);
381  ui->glSpectrum->setDisplayWaterfall(false);
382  ui->glSpectrum->setDisplayMaxHold(false);
383  ui->glSpectrum->setSsbSpectrum(true);
386  64, // FFT size
387  10, // overlapping %
388  0, // number of averaging samples
389  0, // no averaging
391  false); // logarithmic scale
392  connect(&MainWindow::getInstance()->getMasterTimer(), SIGNAL(timeout()), this, SLOT(tick()));
393 
394  m_channelMarker.blockSignals(true);
398  m_channelMarker.setTitle("Broadcast FM Demod");
399  m_channelMarker.blockSignals(false);
400  m_channelMarker.setVisible(true); // activate signal on the last setting only
401 
403 
405  m_settings.setSpectrumGUI(ui->spectrumGUI);
406 
410 
411  connect(&m_channelMarker, SIGNAL(changedByCursor()), this, SLOT(channelMarkerChangedByCursor()));
412  connect(&m_channelMarker, SIGNAL(highlightedByCursor()), this, SLOT(channelMarkerHighlightedByCursor()));
413 
414  ui->spectrumGUI->setBuddies(m_spectrumVis->getInputMessageQueue(), m_spectrumVis, ui->glSpectrum);
415 
416  ui->g00AltFrequenciesBox->setEnabled(false);
417  ui->g14MappedFrequencies->setEnabled(false);
418  ui->g14AltFrequencies->setEnabled(false);
419 
421  rdsUpdate(true);
422  displaySettings();
423  applySettings(true);
424 }
static MainWindow * getInstance()
Definition: mainwindow.h:73
void onWidgetRolled(QWidget *widget, bool rollDown)
BFMDemod * m_bfmDemod
Definition: bfmdemodgui.h:73
int m_rdsTimerCount
Definition: bfmdemodgui.h:69
static const QString m_channelIdURI
Definition: bfmdemod.h:206
MessageQueue * getInputMessageQueue()
Get the queue for asynchronous inbound communication.
BFMDemodSettings m_settings
Definition: bfmdemodgui.h:67
void channelMarkerChangedByCursor()
ChannelMarker m_channelMarker
Definition: bfmdemodgui.h:66
void audioSelect()
void channelMarkerHighlightedByCursor()
void rdsUpdate(bool force)
void addChannelMarker(ChannelMarker *channelMarker)
Add channel marker to spectrum.
Definition: deviceuiset.cpp:72
void rdsUpdateFixedFields()
Fixed< IntType, IntBits > arg(const std::complex< Fixed< IntType, IntBits > > &val)
Definition: fixed.h:2401
void setSampleSink(BasebandSampleSink *sampleSink)
Definition: bfmdemod.h:127
#define SDR_RX_SCALEF
Definition: dsptypes.h:33
RollupWidget(QWidget *parent=NULL)
Definition: rollupwidget.cpp:7
virtual void setMessageQueueToGUI(MessageQueue *queue)
void setTitleColor(const QColor &c)
void onMenuDialogCalled(const QPoint &p)
void registerRxChannelInstance(const QString &channelName, PluginInstanceGUI *pluginGUI)
Definition: deviceuiset.cpp:82
void addRollupWidget(QWidget *widget)
Add rollup widget to channel window.
Definition: deviceuiset.cpp:77
void setSpectrumGUI(Serializable *spectrumGUI)
void handleInputMessages()
void applySettings(bool force=false)
virtual MessageQueue * getInputMessageQueue()
Definition: bfmdemodgui.h:55
DeviceUISet * m_deviceUISet
Definition: bfmdemodgui.h:65
void setColor(const QColor &color)
void setChannelMarker(Serializable *channelMarker)
void displaySettings()
void setVisible(bool visible)
PluginAPI * m_pluginAPI
Definition: bfmdemodgui.h:64
void configure(MessageQueue *msgQueue, int fftSize, int overlapPercent, unsigned int averagingNb, int averagingMode, FFTWindow::Function window, bool m_linear)
Definition: spectrumvis.cpp:44
void setBandwidth(int bandwidth)
const QColor & getColor() const
Definition: channelmarker.h:64
void setTitle(const QString &title)
void setCenterFrequency(int centerFrequency)
void widgetRolled(QWidget *widget, bool rollDown)
SpectrumVis * m_spectrumVis
Definition: bfmdemodgui.h:71
Ui::BFMDemodGUI * ui
Definition: bfmdemodgui.h:63
+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ ~BFMDemodGUI()

BFMDemodGUI::~BFMDemodGUI ( )
privatevirtual

Definition at line 426 of file bfmdemodgui.cpp.

References m_bfmDemod, m_deviceUISet, m_spectrumVis, DeviceUISet::removeRxChannelInstance(), and ui.

427 {
429  delete m_bfmDemod; // TODO: check this: when the GUI closes it has to delete the demodulator
430  delete m_spectrumVis;
431  delete ui;
432 }
BFMDemod * m_bfmDemod
Definition: bfmdemodgui.h:73
void removeRxChannelInstance(PluginInstanceGUI *pluginGUI)
Definition: deviceuiset.cpp:94
DeviceUISet * m_deviceUISet
Definition: bfmdemodgui.h:65
SpectrumVis * m_spectrumVis
Definition: bfmdemodgui.h:71
Ui::BFMDemodGUI * ui
Definition: bfmdemodgui.h:63
+ Here is the call graph for this function:

Member Function Documentation

◆ applySettings()

void BFMDemodGUI::applySettings ( bool  force = false)
private

Definition at line 439 of file bfmdemodgui.cpp.

References BFMDemod::MsgConfigureBFMDemod::create(), BFMDemod::MsgConfigureChannelizer::create(), BasebandSampleSink::getInputMessageQueue(), m_bfmDemod, m_doApplySettings, BFMDemodSettings::m_inputFrequencyOffset, BFMDemodSettings::m_rfBandwidth, m_settings, MessageQueue::push(), and BFMDemod::requiredBW().

Referenced by audioSelect(), BFMDemodGUI(), channelMarkerChangedByCursor(), deserialize(), on_afBW_valueChanged(), on_audioStereo_toggled(), on_deltaFrequency_changed(), on_lsbStereo_toggled(), on_rds_clicked(), on_rfBW_valueChanged(), on_showPilot_clicked(), on_squelch_valueChanged(), on_volume_valueChanged(), onMenuDialogCalled(), resetToDefaults(), and setCenterFrequency().

440 {
441  if (m_doApplySettings)
442  {
446  m_bfmDemod->getInputMessageQueue()->push(msgChan);
447 
449  m_bfmDemod->getInputMessageQueue()->push(msgConfig);
450  }
451 }
void push(Message *message, bool emitSignal=true)
Push message onto queue.
BFMDemod * m_bfmDemod
Definition: bfmdemodgui.h:73
bool m_doApplySettings
Definition: bfmdemodgui.h:68
qint64 m_inputFrequencyOffset
MessageQueue * getInputMessageQueue()
Get the queue for asynchronous inbound communication.
BFMDemodSettings m_settings
Definition: bfmdemodgui.h:67
static MsgConfigureChannelizer * create(int sampleRate, int centerFrequency)
Definition: bfmdemod.h:88
static int requiredBW(int rfBW)
Definition: bfmdemod.h:197
static MsgConfigureBFMDemod * create(const BFMDemodSettings &settings, bool force)
Definition: bfmdemod.h:65
+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ audioSelect

void BFMDemodGUI::audioSelect ( )
privateslot

Definition at line 499 of file bfmdemodgui.cpp.

References applySettings(), DSPEngine::instance(), BFMDemodSettings::m_audioDeviceName, AudioSelectDialog::m_audioDeviceName, AudioSelectDialog::m_selected, and m_settings.

Referenced by BFMDemodGUI().

500 {
501  qDebug("BFMDemodGUI::audioSelect");
503  audioSelect.exec();
504 
505  if (audioSelect.m_selected)
506  {
507  m_settings.m_audioDeviceName = audioSelect.m_audioDeviceName;
508  applySettings();
509  }
510 }
BFMDemodSettings m_settings
Definition: bfmdemodgui.h:67
void audioSelect()
static DSPEngine * instance()
Definition: dspengine.cpp:51
void applySettings(bool force=false)
+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ blockApplySettings()

void BFMDemodGUI::blockApplySettings ( bool  block)
private

Definition at line 434 of file bfmdemodgui.cpp.

References m_doApplySettings.

Referenced by displaySettings(), handleMessage(), and resetToDefaults().

435 {
436  m_doApplySettings = !block;
437 }
bool m_doApplySettings
Definition: bfmdemodgui.h:68
+ Here is the caller graph for this function:

◆ changeFrequency()

void BFMDemodGUI::changeFrequency ( qint64  f)
private

Definition at line 809 of file bfmdemodgui.cpp.

References ChannelMarker::getCenterFrequency(), and m_channelMarker.

Referenced by on_g00AltFrequenciesBox_activated(), on_g14AltFrequencies_activated(), and on_g14MappedFrequencies_activated().

810 {
811  qint64 df = m_channelMarker.getCenterFrequency();
812  qDebug() << "BFMDemodGUI::changeFrequency: " << f - df;
813 }
int getCenterFrequency() const
Definition: channelmarker.h:42
ChannelMarker m_channelMarker
Definition: bfmdemodgui.h:66
+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ channelMarkerChangedByCursor

void BFMDemodGUI::channelMarkerChangedByCursor ( )
slot

Definition at line 151 of file bfmdemodgui.cpp.

References applySettings(), ChannelMarker::getCenterFrequency(), m_channelMarker, BFMDemodSettings::m_inputFrequencyOffset, m_settings, and ui.

Referenced by BFMDemodGUI().

152 {
153  ui->deltaFrequency->setValue(m_channelMarker.getCenterFrequency());
155  applySettings();
156 }
int getCenterFrequency() const
Definition: channelmarker.h:42
qint64 m_inputFrequencyOffset
BFMDemodSettings m_settings
Definition: bfmdemodgui.h:67
ChannelMarker m_channelMarker
Definition: bfmdemodgui.h:66
void applySettings(bool force=false)
Ui::BFMDemodGUI * ui
Definition: bfmdemodgui.h:63
+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ channelMarkerHighlightedByCursor

void BFMDemodGUI::channelMarkerHighlightedByCursor ( )
slot

Definition at line 158 of file bfmdemodgui.cpp.

References ChannelMarker::getHighlighted(), m_channelMarker, and RollupWidget::setHighlighted().

Referenced by BFMDemodGUI().

159 {
161 }
ChannelMarker m_channelMarker
Definition: bfmdemodgui.h:66
bool getHighlighted() const
Definition: channelmarker.h:61
void setHighlighted(bool highlighted)
+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ create()

BFMDemodGUI * BFMDemodGUI::create ( PluginAPI pluginAPI,
DeviceUISet deviceAPI,
BasebandSampleSink rxChannel 
)
static

Definition at line 48 of file bfmdemodgui.cpp.

References BFMDemodGUI().

Referenced by BFMPlugin::createRxChannelGUI().

49 {
50  BFMDemodGUI* gui = new BFMDemodGUI(pluginAPI, deviceUIset, rxChannel);
51  return gui;
52 }
BFMDemodGUI(PluginAPI *pluginAPI, DeviceUISet *deviceUISet, BasebandSampleSink *rxChannel, QWidget *parent=0)
+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ deserialize()

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

Implements PluginInstanceGUI.

Definition at line 99 of file bfmdemodgui.cpp.

References applySettings(), BFMDemodSettings::deserialize(), displaySettings(), m_settings, and resetToDefaults().

100 {
101  if(m_settings.deserialize(data)) {
102  displaySettings();
103  applySettings(true);
104  return true;
105  } else {
106  resetToDefaults();
107  return false;
108  }
109 }
bool deserialize(const QByteArray &data)
BFMDemodSettings m_settings
Definition: bfmdemodgui.h:67
void resetToDefaults()
Definition: bfmdemodgui.cpp:80
void applySettings(bool force=false)
void displaySettings()
+ Here is the call graph for this function:

◆ destroy()

void BFMDemodGUI::destroy ( )
virtual

Implements PluginInstanceGUI.

Definition at line 54 of file bfmdemodgui.cpp.

55 {
56  delete this;
57 }

◆ displaySettings()

void BFMDemodGUI::displaySettings ( )
private

Definition at line 453 of file bfmdemodgui.cpp.

References arg(), blockApplySettings(), ChannelMarker::getCenterFrequency(), BFMDemodSettings::getRFBWIndex(), ChannelMarker::getTitle(), BFMDemodSettings::m_afBandwidth, BFMDemodSettings::m_audioStereo, m_channelMarker, BFMDemodSettings::m_inputFrequencyOffset, BFMDemodSettings::m_lsbStereo, BFMDemodSettings::m_rdsActive, BFMDemodSettings::m_rfBandwidth, BFMDemodSettings::m_rgbColor, m_settings, BFMDemodSettings::m_showPilot, BFMDemodSettings::m_squelch, BFMDemodSettings::m_title, BFMDemodSettings::m_volume, ChannelMarker::setBandwidth(), ChannelMarker::setCenterFrequency(), ChannelMarker::setColor(), ChannelMarker::setTitle(), RollupWidget::setTitleColor(), and ui.

Referenced by BFMDemodGUI(), deserialize(), handleMessage(), and resetToDefaults().

454 {
455  m_channelMarker.blockSignals(true);
459  m_channelMarker.blockSignals(false);
460  m_channelMarker.setColor(m_settings.m_rgbColor); // activate signal on the last setting only
461 
463  setWindowTitle(m_channelMarker.getTitle());
464 
465  blockApplySettings(true);
466 
467  ui->deltaFrequency->setValue(m_channelMarker.getCenterFrequency());
468 
470  ui->rfBWText->setText(QString("%1 kHz").arg(m_settings.m_rfBandwidth / 1000.0));
471 
472  ui->afBW->setValue(m_settings.m_afBandwidth/1000.0);
473  ui->afBWText->setText(QString("%1 kHz").arg(m_settings.m_afBandwidth/1000.0));
474 
475  ui->volume->setValue(m_settings.m_volume * 10.0);
476  ui->volumeText->setText(QString("%1").arg(m_settings.m_volume, 0, 'f', 1));
477 
478  ui->squelch->setValue(m_settings.m_squelch);
479  ui->squelchText->setText(QString("%1 dB").arg(m_settings.m_squelch));
480 
481  ui->audioStereo->setChecked(m_settings.m_audioStereo);
482  ui->lsbStereo->setChecked(m_settings.m_lsbStereo);
483  ui->showPilot->setChecked(m_settings.m_showPilot);
484  ui->rds->setChecked(m_settings.m_rdsActive);
485 
486  blockApplySettings(false);
487 }
int getCenterFrequency() const
Definition: channelmarker.h:42
qint64 m_inputFrequencyOffset
BFMDemodSettings m_settings
Definition: bfmdemodgui.h:67
ChannelMarker m_channelMarker
Definition: bfmdemodgui.h:66
static int getRFBWIndex(int rfbw)
Fixed< IntType, IntBits > arg(const std::complex< Fixed< IntType, IntBits > > &val)
Definition: fixed.h:2401
void setTitleColor(const QColor &c)
const QString & getTitle() const
Definition: channelmarker.h:38
void blockApplySettings(bool block)
void setColor(const QColor &color)
void setBandwidth(int bandwidth)
void setTitle(const QString &title)
void setCenterFrequency(int centerFrequency)
Ui::BFMDemodGUI * ui
Definition: bfmdemodgui.h:63
+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ enterEvent()

void BFMDemodGUI::enterEvent ( QEvent *  )
private

Definition at line 494 of file bfmdemodgui.cpp.

References m_channelMarker, and ChannelMarker::setHighlighted().

495 {
497 }
ChannelMarker m_channelMarker
Definition: bfmdemodgui.h:66
void setHighlighted(bool highlighted)
+ Here is the call graph for this function:

◆ getCenterFrequency()

qint64 BFMDemodGUI::getCenterFrequency ( ) const
virtual

Implements PluginInstanceGUI.

Definition at line 69 of file bfmdemodgui.cpp.

References ChannelMarker::getCenterFrequency(), and m_channelMarker.

70 {
72 }
int getCenterFrequency() const
Definition: channelmarker.h:42
ChannelMarker m_channelMarker
Definition: bfmdemodgui.h:66
+ Here is the call graph for this function:

◆ getInputMessageQueue()

virtual MessageQueue* BFMDemodGUI::getInputMessageQueue ( )
inlinevirtual

Implements PluginInstanceGUI.

Definition at line 55 of file bfmdemodgui.h.

Referenced by BFMDemodGUI(), and handleInputMessages().

55 { return &m_inputMessageQueue; }
MessageQueue m_inputMessageQueue
Definition: bfmdemodgui.h:76
+ Here is the caller graph for this function:

◆ getName()

QString BFMDemodGUI::getName ( ) const
virtual

Implements PluginInstanceGUI.

Definition at line 64 of file bfmdemodgui.cpp.

65 {
66  return objectName();
67 }

◆ handleInputMessages

void BFMDemodGUI::handleInputMessages ( )
privateslot

Definition at line 138 of file bfmdemodgui.cpp.

References getInputMessageQueue(), and handleMessage().

Referenced by BFMDemodGUI().

139 {
140  Message* message;
141 
142  while ((message = getInputMessageQueue()->pop()) != 0)
143  {
144  if (handleMessage(*message))
145  {
146  delete message;
147  }
148  }
149 }
virtual bool handleMessage(const Message &message)
virtual MessageQueue * getInputMessageQueue()
Definition: bfmdemodgui.h:55
+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ handleMessage()

bool BFMDemodGUI::handleMessage ( const Message message)
virtual

Implements PluginInstanceGUI.

Definition at line 111 of file bfmdemodgui.cpp.

References blockApplySettings(), displaySettings(), BFMDemod::MsgReportChannelSampleRateChanged::getSampleRate(), BFMDemod::MsgConfigureBFMDemod::getSettings(), m_rate, m_settings, Message::match(), and ui.

Referenced by handleInputMessages().

112 {
114  {
116  m_rate = report.getSampleRate();
117  qDebug("BFMDemodGUI::handleMessage: MsgReportChannelSampleRateChanged: %d S/s", m_rate);
118  ui->glSpectrum->setCenterFrequency(m_rate / 4);
119  ui->glSpectrum->setSampleRate(m_rate / 2);
120  return true;
121  }
122  else if (BFMDemod::MsgConfigureBFMDemod::match(message))
123  {
124  qDebug("BFMDemodGUI::handleMessage: BFMDemod::MsgConfigureBFMDemod");
126  m_settings = cfg.getSettings();
127  blockApplySettings(true);
128  displaySettings();
129  blockApplySettings(false);
130  return true;
131  }
132  else
133  {
134  return false;
135  }
136 }
BFMDemodSettings m_settings
Definition: bfmdemodgui.h:67
static bool match(const Message *message)
Definition: message.cpp:45
void blockApplySettings(bool block)
void displaySettings()
const BFMDemodSettings & getSettings() const
Definition: bfmdemod.h:62
Ui::BFMDemodGUI * ui
Definition: bfmdemodgui.h:63
+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ leaveEvent()

void BFMDemodGUI::leaveEvent ( QEvent *  )
private

Definition at line 489 of file bfmdemodgui.cpp.

References m_channelMarker, and ChannelMarker::setHighlighted().

490 {
492 }
ChannelMarker m_channelMarker
Definition: bfmdemodgui.h:66
void setHighlighted(bool highlighted)
+ Here is the call graph for this function:

◆ on_afBW_valueChanged

void BFMDemodGUI::on_afBW_valueChanged ( int  value)
privateslot

Definition at line 178 of file bfmdemodgui.cpp.

References applySettings(), arg(), BFMDemodSettings::m_afBandwidth, m_settings, and ui.

179 {
180  ui->afBWText->setText(QString("%1 kHz").arg(value));
181  m_settings.m_afBandwidth = value * 1000.0;
182  applySettings();
183 }
BFMDemodSettings m_settings
Definition: bfmdemodgui.h:67
Fixed< IntType, IntBits > arg(const std::complex< Fixed< IntType, IntBits > > &val)
Definition: fixed.h:2401
void applySettings(bool force=false)
Ui::BFMDemodGUI * ui
Definition: bfmdemodgui.h:63
+ Here is the call graph for this function:

◆ on_audioStereo_toggled

void BFMDemodGUI::on_audioStereo_toggled ( bool  stereo)
privateslot

Definition at line 199 of file bfmdemodgui.cpp.

References applySettings(), BFMDemodSettings::m_audioStereo, m_settings, and ui.

200 {
201  if (!stereo)
202  {
203  ui->audioStereo->setStyleSheet("QToolButton { background:rgb(79,79,79); }");
204  }
205 
206  m_settings.m_audioStereo = stereo;
207  applySettings();
208 }
BFMDemodSettings m_settings
Definition: bfmdemodgui.h:67
void applySettings(bool force=false)
Ui::BFMDemodGUI * ui
Definition: bfmdemodgui.h:63
+ Here is the call graph for this function:

◆ on_clearData_clicked

void BFMDemodGUI::on_clearData_clicked ( bool  checked)
privateslot

Definition at line 228 of file bfmdemodgui.cpp.

References RDSParser::clearAllFields(), BFMDemod::getRDSParser(), m_bfmDemod, rdsUpdate(), and ui.

229 {
230  (void) checked;
231  if (ui->rds->isChecked())
232  {
234 
235  ui->g14ProgServiceNames->clear();
236  ui->g14MappedFrequencies->clear();
237  ui->g14AltFrequencies->clear();
238 
239  ui->g00AltFrequenciesBox->setEnabled(false);
240  ui->g14MappedFrequencies->setEnabled(false);
241  ui->g14AltFrequencies->setEnabled(false);
242 
243  rdsUpdate(true);
244  }
245 }
BFMDemod * m_bfmDemod
Definition: bfmdemodgui.h:73
void clearAllFields()
Definition: rdsparser.cpp:270
void rdsUpdate(bool force)
RDSParser & getRDSParser()
Definition: bfmdemod.h:181
Ui::BFMDemodGUI * ui
Definition: bfmdemodgui.h:63
+ Here is the call graph for this function:

◆ on_deltaFrequency_changed

void BFMDemodGUI::on_deltaFrequency_changed ( qint64  value)
privateslot

Definition at line 163 of file bfmdemodgui.cpp.

References applySettings(), ChannelMarker::getCenterFrequency(), m_channelMarker, BFMDemodSettings::m_inputFrequencyOffset, m_settings, and ChannelMarker::setCenterFrequency().

164 {
167  applySettings();
168 }
int getCenterFrequency() const
Definition: channelmarker.h:42
qint64 m_inputFrequencyOffset
BFMDemodSettings m_settings
Definition: bfmdemodgui.h:67
ChannelMarker m_channelMarker
Definition: bfmdemodgui.h:66
void applySettings(bool force=false)
void setCenterFrequency(int centerFrequency)
+ Here is the call graph for this function:

◆ on_g00AltFrequenciesBox_activated

void BFMDemodGUI::on_g00AltFrequenciesBox_activated ( int  index)
privateslot

Definition at line 292 of file bfmdemodgui.cpp.

References changeFrequency(), and ui.

293 {
294  (void) index;
295  qint64 f = (qint64) ((ui->g00AltFrequenciesBox->currentText()).toDouble() * 1e6);
296  changeFrequency(f);
297 }
void changeFrequency(qint64 f)
Ui::BFMDemodGUI * ui
Definition: bfmdemodgui.h:63
+ Here is the call graph for this function:

◆ on_g14AltFrequencies_activated

void BFMDemodGUI::on_g14AltFrequencies_activated ( int  index)
privateslot

Definition at line 306 of file bfmdemodgui.cpp.

References changeFrequency(), and ui.

307 {
308  (void) index;
309  qint64 f = (qint64) ((ui->g14AltFrequencies->currentText()).toDouble() * 1e6);
310  changeFrequency(f);
311 }
void changeFrequency(qint64 f)
Ui::BFMDemodGUI * ui
Definition: bfmdemodgui.h:63
+ Here is the call graph for this function:

◆ on_g14MappedFrequencies_activated

void BFMDemodGUI::on_g14MappedFrequencies_activated ( int  index)
privateslot

Definition at line 299 of file bfmdemodgui.cpp.

References changeFrequency(), and ui.

300 {
301  (void) index;
302  qint64 f = (qint64) ((ui->g14MappedFrequencies->currentText()).toDouble() * 1e6);
303  changeFrequency(f);
304 }
void changeFrequency(qint64 f)
Ui::BFMDemodGUI * ui
Definition: bfmdemodgui.h:63
+ Here is the call graph for this function:

◆ on_g14ProgServiceNames_currentIndexChanged

void BFMDemodGUI::on_g14ProgServiceNames_currentIndexChanged ( int  index)
privateslot

Definition at line 247 of file bfmdemodgui.cpp.

References BFMDemod::getRDSParser(), m_bfmDemod, RDSParser::m_g14_alt_freqs, RDSParser::m_g14_mapped_freqs, m_g14ComboIndex, and ui.

248 {
249  uint32_t index = _index & 0x7FFFFFF;
250 
251  if (index < m_g14ComboIndex.size())
252  {
253  unsigned int piKey = m_g14ComboIndex[index];
254  RDSParser::freqs_map_t::const_iterator mIt = m_bfmDemod->getRDSParser().m_g14_mapped_freqs.find(piKey);
255 
256  if (mIt != m_bfmDemod->getRDSParser().m_g14_mapped_freqs.end())
257  {
258  ui->g14MappedFrequencies->clear();
259  RDSParser::freqs_set_t::iterator sIt = (mIt->second).begin();
260  const RDSParser::freqs_set_t::iterator sItEnd = (mIt->second).end();
261 
262  for (; sIt != sItEnd; ++sIt)
263  {
264  std::ostringstream os;
265  os << std::fixed << std::showpoint << std::setprecision(2) << *sIt;
266  ui->g14MappedFrequencies->addItem(os.str().c_str());
267  }
268 
269  ui->g14MappedFrequencies->setEnabled(ui->g14MappedFrequencies->count() > 0);
270  }
271 
272  mIt = m_bfmDemod->getRDSParser().m_g14_alt_freqs.find(piKey);
273 
274  if (mIt != m_bfmDemod->getRDSParser().m_g14_alt_freqs.end())
275  {
276  ui->g14AltFrequencies->clear();
277  RDSParser::freqs_set_t::iterator sIt = (mIt->second).begin();
278  const RDSParser::freqs_set_t::iterator sItEnd = (mIt->second).end();
279 
280  for (; sIt != sItEnd; ++sIt)
281  {
282  std::ostringstream os;
283  os << std::fixed << std::showpoint << std::setprecision(2) << *sIt;
284  ui->g14AltFrequencies->addItem(os.str().c_str());
285  }
286 
287  ui->g14AltFrequencies->setEnabled(ui->g14AltFrequencies->count() > 0);
288  }
289  }
290 }
std::vector< unsigned int > m_g14ComboIndex
Definition: bfmdemodgui.h:75
BFMDemod * m_bfmDemod
Definition: bfmdemodgui.h:73
freqs_map_t m_g14_mapped_freqs
key: PI, value: set of mapped frequencies (MHz)
Definition: rdsparser.h:147
freqs_map_t m_g14_alt_freqs
key: PI, value: set of alternate frequencies (MHz)
Definition: rdsparser.h:146
unsigned int uint32_t
Definition: rtptypes_win.h:46
RDSParser & getRDSParser()
Definition: bfmdemod.h:181
Ui::BFMDemodGUI * ui
Definition: bfmdemodgui.h:63
+ Here is the call graph for this function:

◆ on_lsbStereo_toggled

void BFMDemodGUI::on_lsbStereo_toggled ( bool  lsb)
privateslot

Definition at line 210 of file bfmdemodgui.cpp.

References applySettings(), BFMDemodSettings::m_lsbStereo, and m_settings.

211 {
212  m_settings.m_lsbStereo = lsb;
213  applySettings();
214 }
BFMDemodSettings m_settings
Definition: bfmdemodgui.h:67
void applySettings(bool force=false)
+ Here is the call graph for this function:

◆ on_rds_clicked

void BFMDemodGUI::on_rds_clicked ( )
privateslot

Definition at line 222 of file bfmdemodgui.cpp.

References applySettings(), BFMDemodSettings::m_rdsActive, m_settings, and ui.

223 {
224  m_settings.m_rdsActive = ui->rds->isChecked();
225  applySettings();
226 }
BFMDemodSettings m_settings
Definition: bfmdemodgui.h:67
void applySettings(bool force=false)
Ui::BFMDemodGUI * ui
Definition: bfmdemodgui.h:63
+ Here is the call graph for this function:

◆ on_rfBW_valueChanged

void BFMDemodGUI::on_rfBW_valueChanged ( int  value)
privateslot

Definition at line 170 of file bfmdemodgui.cpp.

References applySettings(), arg(), BFMDemodSettings::getRFBW(), m_channelMarker, BFMDemodSettings::m_rfBandwidth, m_settings, ChannelMarker::setBandwidth(), and ui.

171 {
172  ui->rfBWText->setText(QString("%1 kHz").arg(BFMDemodSettings::getRFBW(value) / 1000.0));
175  applySettings();
176 }
BFMDemodSettings m_settings
Definition: bfmdemodgui.h:67
ChannelMarker m_channelMarker
Definition: bfmdemodgui.h:66
static int getRFBW(int index)
Fixed< IntType, IntBits > arg(const std::complex< Fixed< IntType, IntBits > > &val)
Definition: fixed.h:2401
void applySettings(bool force=false)
void setBandwidth(int bandwidth)
Ui::BFMDemodGUI * ui
Definition: bfmdemodgui.h:63
+ Here is the call graph for this function:

◆ on_showPilot_clicked

void BFMDemodGUI::on_showPilot_clicked ( )
privateslot

Definition at line 216 of file bfmdemodgui.cpp.

References applySettings(), m_settings, BFMDemodSettings::m_showPilot, and ui.

217 {
218  m_settings.m_showPilot = ui->showPilot->isChecked();
219  applySettings();
220 }
BFMDemodSettings m_settings
Definition: bfmdemodgui.h:67
void applySettings(bool force=false)
Ui::BFMDemodGUI * ui
Definition: bfmdemodgui.h:63
+ Here is the call graph for this function:

◆ on_squelch_valueChanged

void BFMDemodGUI::on_squelch_valueChanged ( int  value)
privateslot

Definition at line 192 of file bfmdemodgui.cpp.

References applySettings(), arg(), m_settings, BFMDemodSettings::m_squelch, and ui.

193 {
194  ui->squelchText->setText(QString("%1 dB").arg(value));
195  m_settings.m_squelch = value;
196  applySettings();
197 }
BFMDemodSettings m_settings
Definition: bfmdemodgui.h:67
Fixed< IntType, IntBits > arg(const std::complex< Fixed< IntType, IntBits > > &val)
Definition: fixed.h:2401
void applySettings(bool force=false)
Ui::BFMDemodGUI * ui
Definition: bfmdemodgui.h:63
+ Here is the call graph for this function:

◆ on_volume_valueChanged

void BFMDemodGUI::on_volume_valueChanged ( int  value)
privateslot

Definition at line 185 of file bfmdemodgui.cpp.

References applySettings(), arg(), m_settings, BFMDemodSettings::m_volume, and ui.

186 {
187  ui->volumeText->setText(QString("%1").arg(value / 10.0, 0, 'f', 1));
188  m_settings.m_volume = value / 10.0;
189  applySettings();
190 }
BFMDemodSettings m_settings
Definition: bfmdemodgui.h:67
Fixed< IntType, IntBits > arg(const std::complex< Fixed< IntType, IntBits > > &val)
Definition: fixed.h:2401
void applySettings(bool force=false)
Ui::BFMDemodGUI * ui
Definition: bfmdemodgui.h:63
+ Here is the call graph for this function:

◆ onMenuDialogCalled

void BFMDemodGUI::onMenuDialogCalled ( const QPoint &  p)
privateslot

Definition at line 319 of file bfmdemodgui.cpp.

References applySettings(), RollupWidget::ContextMenuChannelSettings, ChannelMarker::getCenterFrequency(), ChannelMarker::getColor(), BasicChannelSettingsDialog::getReverseAPIAddress(), BasicChannelSettingsDialog::getReverseAPIChannelIndex(), BasicChannelSettingsDialog::getReverseAPIDeviceIndex(), BasicChannelSettingsDialog::getReverseAPIPort(), ChannelMarker::getTitle(), m_channelMarker, RollupWidget::m_contextMenuType, BFMDemodSettings::m_inputFrequencyOffset, BFMDemodSettings::m_reverseAPIAddress, BFMDemodSettings::m_reverseAPIChannelIndex, BFMDemodSettings::m_reverseAPIDeviceIndex, BFMDemodSettings::m_reverseAPIPort, BFMDemodSettings::m_rgbColor, m_settings, BFMDemodSettings::m_title, BFMDemodSettings::m_useReverseAPI, RollupWidget::resetContextMenuType(), BasicChannelSettingsDialog::setReverseAPIAddress(), BasicChannelSettingsDialog::setReverseAPIChannelIndex(), BasicChannelSettingsDialog::setReverseAPIDeviceIndex(), BasicChannelSettingsDialog::setReverseAPIPort(), RollupWidget::setTitleColor(), BasicChannelSettingsDialog::setUseReverseAPI(), and BasicChannelSettingsDialog::useReverseAPI().

Referenced by BFMDemodGUI().

320 {
322  {
324  dialog.setUseReverseAPI(m_settings.m_useReverseAPI);
325  dialog.setReverseAPIAddress(m_settings.m_reverseAPIAddress);
326  dialog.setReverseAPIPort(m_settings.m_reverseAPIPort);
327  dialog.setReverseAPIDeviceIndex(m_settings.m_reverseAPIDeviceIndex);
328  dialog.setReverseAPIChannelIndex(m_settings.m_reverseAPIChannelIndex);
329 
330  dialog.move(p);
331  dialog.exec();
332 
336  m_settings.m_useReverseAPI = dialog.useReverseAPI();
337  m_settings.m_reverseAPIAddress = dialog.getReverseAPIAddress();
338  m_settings.m_reverseAPIPort = dialog.getReverseAPIPort();
339  m_settings.m_reverseAPIDeviceIndex = dialog.getReverseAPIDeviceIndex();
340  m_settings.m_reverseAPIChannelIndex = dialog.getReverseAPIChannelIndex();
341 
342  setWindowTitle(m_settings.m_title);
344 
345  applySettings();
346  }
347 
349 }
QString m_reverseAPIAddress
int getCenterFrequency() const
Definition: channelmarker.h:42
uint16_t m_reverseAPIChannelIndex
qint64 m_inputFrequencyOffset
BFMDemodSettings m_settings
Definition: bfmdemodgui.h:67
ChannelMarker m_channelMarker
Definition: bfmdemodgui.h:66
void resetContextMenuType()
Definition: rollupwidget.h:50
uint16_t m_reverseAPIDeviceIndex
ContextMenuType m_contextMenuType
Definition: rollupwidget.h:33
void setTitleColor(const QColor &c)
uint16_t m_reverseAPIPort
const QString & getTitle() const
Definition: channelmarker.h:38
void applySettings(bool force=false)
const QColor & getColor() const
Definition: channelmarker.h:64
+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ onWidgetRolled

void BFMDemodGUI::onWidgetRolled ( QWidget *  widget,
bool  rollDown 
)
privateslot

Definition at line 313 of file bfmdemodgui.cpp.

Referenced by BFMDemodGUI().

314 {
315  (void) widget;
316  (void) rollDown;
317 }
+ Here is the caller graph for this function:

◆ rdsUpdate()

void BFMDemodGUI::rdsUpdate ( bool  force)
private

Definition at line 584 of file bfmdemodgui.cpp.

References arg(), RDSParser::clearUpdateFlags(), RDSParser::coverage_area_codes, CalcDb::dbPower(), RDSTMC::get_tmc_event_code_index(), RDSTMC::get_tmc_events(), BFMDemod::getDecoderQua(), BFMDemod::getDecoderSynced(), BFMDemod::getDemodAcc(), BFMDemod::getDemodFclk(), BFMDemod::getDemodQua(), BFMDemod::getRDSParser(), i, RDSParser::label_descriptions, RDSParser::language_codes, m_bfmDemod, RDSParser::m_g0_af_updated, RDSParser::m_g0_alt_freq, RDSParser::m_g0_count, RDSParser::m_g0_mono_stereo, RDSParser::m_g0_music_speech, RDSParser::m_g0_program_service_name, RDSParser::m_g0_psn_bitmap, RDSParser::m_g0_traffic_announcement, RDSParser::m_g0_updated, RDSParser::m_g14_count, RDSParser::m_g14_data_available, RDSParser::m_g14_program_service_names, RDSParser::m_g14_updated, m_g14ComboIndex, RDSParser::m_g1_count, RDSParser::m_g1_country_index, RDSParser::m_g1_country_page_index, RDSParser::m_g1_language_index, RDSParser::m_g1_pin_day, RDSParser::m_g1_pin_hour, RDSParser::m_g1_pin_minute, RDSParser::m_g1_updated, RDSParser::m_g2_count, RDSParser::m_g2_radiotext, RDSParser::m_g2_updated, RDSParser::m_g3_aid, RDSParser::m_g3_appGroup, RDSParser::m_g3_count, RDSParser::m_g3_groupB, RDSParser::m_g3_message, RDSParser::m_g3_updated, RDSParser::m_g4_count, RDSParser::m_g4_day, RDSParser::m_g4_hours, RDSParser::m_g4_local_time_offset, RDSParser::m_g4_minutes, RDSParser::m_g4_month, RDSParser::m_g4_updated, RDSParser::m_g4_year, RDSParser::m_g5_count, RDSParser::m_g5_updated, RDSParser::m_g6_count, RDSParser::m_g6_updated, RDSParser::m_g7_count, RDSParser::m_g7_updated, RDSParser::m_g8_content, RDSParser::m_g8_count, RDSParser::m_g8_event, RDSParser::m_g8_extent, RDSParser::m_g8_label_index, RDSParser::m_g8_location, RDSParser::m_g8_sign, RDSParser::m_g8_updated, RDSParser::m_g9_cA, RDSParser::m_g9_count, RDSParser::m_g9_dA, RDSParser::m_g9_dB, RDSParser::m_g9_updated, RDSParser::m_g9_varA, RDSParser::m_g9_varB, RDSParser::m_pi_area_coverage_index, RDSParser::m_pi_count, RDSParser::m_pi_program_identification, RDSParser::m_pi_program_type, RDSParser::m_pi_traffic_program, RDSParser::m_pi_updated, RDSParser::pi_country_codes, RDSParser::pty_table, and ui.

Referenced by BFMDemodGUI(), on_clearData_clicked(), and tick().

585 {
586  // Quality metrics
587  ui->demodQText->setText(QString("%1 %").arg(m_bfmDemod->getDemodQua(), 0, 'f', 0));
588  ui->decoderQText->setText(QString("%1 %").arg(m_bfmDemod->getDecoderQua(), 0, 'f', 0));
589  Real accDb = CalcDb::dbPower(std::fabs(m_bfmDemod->getDemodAcc()));
590  ui->accumText->setText(QString("%1 dB").arg(accDb, 0, 'f', 1));
591  ui->fclkText->setText(QString("%1 Hz").arg(m_bfmDemod->getDemodFclk(), 0, 'f', 2));
592 
593  if (m_bfmDemod->getDecoderSynced()) {
594  ui->decoderQLabel->setStyleSheet("QLabel { background-color : green; }");
595  } else {
596  ui->decoderQLabel->setStyleSheet("QLabel { background:rgb(79,79,79); }");
597  }
598 
599  // PI group
600  if (m_bfmDemod->getRDSParser().m_pi_updated || force)
601  {
602  ui->piLabel->setStyleSheet("QLabel { background-color : green; }");
603  ui->piCountText->setNum((int) m_bfmDemod->getRDSParser().m_pi_count);
604  QString pistring(str(boost::format("%04X") % m_bfmDemod->getRDSParser().m_pi_program_identification).c_str());
605  ui->piText->setText(pistring);
606 
608  ui->piTPIndicator->setStyleSheet("QLabel { background-color : green; }");
609  } else {
610  ui->piTPIndicator->setStyleSheet("QLabel { background:rgb(79,79,79); }");
611  }
612 
613  ui->piType->setText(QString(m_bfmDemod->getRDSParser().pty_table[m_bfmDemod->getRDSParser().m_pi_program_type].c_str()));
614  ui->piCoverage->setText(QString(m_bfmDemod->getRDSParser().coverage_area_codes[m_bfmDemod->getRDSParser().m_pi_area_coverage_index].c_str()));
615  }
616  else
617  {
618  ui->piLabel->setStyleSheet("QLabel { background:rgb(79,79,79); }");
619  }
620 
621  // G0 group
622  if (m_bfmDemod->getRDSParser().m_g0_updated || force)
623  {
624  ui->g00Label->setStyleSheet("QLabel { background-color : green; }");
625  ui->g00CountText->setNum((int) m_bfmDemod->getRDSParser().m_g0_count);
626 
627  if (m_bfmDemod->getRDSParser().m_g0_psn_bitmap == 0b1111) {
628  ui->g00ProgServiceName->setText(QString(m_bfmDemod->getRDSParser().m_g0_program_service_name));
629  }
630 
632  ui->g00TrafficAnnouncement->setStyleSheet("QLabel { background-color : green; }");
633  } else {
634  ui->g00TrafficAnnouncement->setStyleSheet("QLabel { background:rgb(79,79,79); }");
635  }
636 
637  ui->g00MusicSpeech->setText(QString((m_bfmDemod->getRDSParser().m_g0_music_speech ? "Music" : "Speech")));
638  ui->g00MonoStereo->setText(QString((m_bfmDemod->getRDSParser().m_g0_mono_stereo ? "Mono" : "Stereo")));
639 
641  {
642  ui->g00AltFrequenciesBox->clear();
643 
644  for (std::set<double>::iterator it = m_bfmDemod->getRDSParser().m_g0_alt_freq.begin(); it != m_bfmDemod->getRDSParser().m_g0_alt_freq.end(); ++it)
645  {
646  if (*it > 76.0)
647  {
648  std::ostringstream os;
649  os << std::fixed << std::showpoint << std::setprecision(2) << *it;
650  ui->g00AltFrequenciesBox->addItem(QString(os.str().c_str()));
651  }
652  }
653 
654  ui->g00AltFrequenciesBox->setEnabled(ui->g00AltFrequenciesBox->count() > 0);
655  }
656  }
657  else
658  {
659  ui->g00Label->setStyleSheet("QLabel { background:rgb(79,79,79); }");
660  }
661 
662  // G1 group
663  if (m_bfmDemod->getRDSParser().m_g1_updated || force)
664  {
665  ui->g01Label->setStyleSheet("QLabel { background-color : green; }");
666  ui->g01CountText->setNum((int) m_bfmDemod->getRDSParser().m_g1_count);
667 
670  }
671 
673  ui->g01Language->setText(QString(m_bfmDemod->getRDSParser().language_codes[m_bfmDemod->getRDSParser().m_g1_language_index].c_str()));
674  }
675 
676  ui->g01DHM->setText(QString(str(boost::format("%id:%i:%i") % m_bfmDemod->getRDSParser().m_g1_pin_day % m_bfmDemod->getRDSParser().m_g1_pin_hour % m_bfmDemod->getRDSParser().m_g1_pin_minute).c_str()));
677  }
678  else
679  {
680  ui->g01Label->setStyleSheet("QLabel { background:rgb(79,79,79); }");
681  }
682 
683  // G2 group
684  if (m_bfmDemod->getRDSParser().m_g2_updated || force)
685  {
686  ui->g02Label->setStyleSheet("QLabel { background-color : green; }");
687  ui->g02CountText->setNum((int) m_bfmDemod->getRDSParser().m_g2_count);
688  ui->go2Text->setText(QString(m_bfmDemod->getRDSParser().m_g2_radiotext));
689  }
690  else
691  {
692  ui->g02Label->setStyleSheet("QLabel { background:rgb(79,79,79); }");
693  }
694 
695  // G3 group
696  if (m_bfmDemod->getRDSParser().m_g3_updated || force)
697  {
698  ui->g03Label->setStyleSheet("QLabel { background-color : green; }");
699  ui->g03CountText->setNum((int) m_bfmDemod->getRDSParser().m_g3_count);
700  std::string g3str = str(boost::format("%02X%c %04X %04X") % m_bfmDemod->getRDSParser().m_g3_appGroup % (m_bfmDemod->getRDSParser().m_g3_groupB ? 'B' : 'A') % m_bfmDemod->getRDSParser().m_g3_message % m_bfmDemod->getRDSParser().m_g3_aid);
701  ui->g03Data->setText(QString(g3str.c_str()));
702  }
703  else
704  {
705  ui->g03Label->setStyleSheet("QLabel { background:rgb(79,79,79); }");
706  }
707 
708  // G4 group
709  if (m_bfmDemod->getRDSParser().m_g4_updated || force)
710  {
711  ui->g04Label->setStyleSheet("QLabel { background-color : green; }");
712  ui->g04CountText->setNum((int) m_bfmDemod->getRDSParser().m_g4_count);
713  std::string time = str(boost::format("%4i-%02i-%02i %02i:%02i (%+.1fh)")\
715  ui->g04Time->setText(QString(time.c_str()));
716  }
717  else
718  {
719  ui->g04Label->setStyleSheet("QLabel { background:rgb(79,79,79); }");
720  }
721 
722  // G5 group
723  if (m_bfmDemod->getRDSParser().m_g5_updated || force)
724  {
725  ui->g05CountText->setNum((int) m_bfmDemod->getRDSParser().m_g5_count);
726  }
727 
728  // G6 group
729  if (m_bfmDemod->getRDSParser().m_g6_updated || force)
730  {
731  ui->g06CountText->setNum((int) m_bfmDemod->getRDSParser().m_g6_count);
732  }
733 
734  // G7 group
735  if (m_bfmDemod->getRDSParser().m_g7_updated || force)
736  {
737  ui->g07CountText->setNum((int) m_bfmDemod->getRDSParser().m_g7_count);
738  }
739 
740  // G8 group
741  if (m_bfmDemod->getRDSParser().m_g8_updated || force)
742  {
743  ui->g08Label->setStyleSheet("QLabel { background-color : green; }");
744  ui->g08CountText->setNum((int) m_bfmDemod->getRDSParser().m_g8_count);
745 
746  std::ostringstream os;
747  os << (m_bfmDemod->getRDSParser().m_g8_sign ? "-" : "+") << m_bfmDemod->getRDSParser().m_g8_extent + 1;
748  ui->g08Extent->setText(QString(os.str().c_str()));
750  ui->g08TMCEvent->setText(QString(RDSTMC::get_tmc_events(event_line, 1).c_str()));
751  QString pistring(str(boost::format("%04X") % m_bfmDemod->getRDSParser().m_g8_location).c_str());
752  ui->g08Location->setText(pistring);
753 
755  ui->g08Description->setText(QString(m_bfmDemod->getRDSParser().label_descriptions[m_bfmDemod->getRDSParser().m_g8_label_index].c_str()));
756  }
757 
758  ui->g08Content->setNum(m_bfmDemod->getRDSParser().m_g8_content);
759  }
760  else
761  {
762  ui->g08Label->setStyleSheet("QLabel { background:rgb(79,79,79); }");
763  }
764 
765  // G9 group
766  if (m_bfmDemod->getRDSParser().m_g9_updated || force)
767  {
768  ui->g09Label->setStyleSheet("QLabel { background-color : green; }");
769  ui->g09CountText->setNum((int) m_bfmDemod->getRDSParser().m_g9_count);
770  std::string g9str = str(boost::format("%02X %04X %04X %02X %04X") % m_bfmDemod->getRDSParser().m_g9_varA % m_bfmDemod->getRDSParser().m_g9_cA % m_bfmDemod->getRDSParser().m_g9_dA % m_bfmDemod->getRDSParser().m_g9_varB % m_bfmDemod->getRDSParser().m_g9_dB);
771  ui->g09Data->setText(QString(g9str.c_str()));
772  }
773  else
774  {
775  ui->g09Label->setStyleSheet("QLabel { background:rgb(79,79,79); }");
776  }
777 
778  // G14 group
779  if (m_bfmDemod->getRDSParser().m_g14_updated || force)
780  {
781  ui->g14CountText->setNum((int) m_bfmDemod->getRDSParser().m_g14_count);
782 
784  {
785  ui->g14Label->setStyleSheet("QLabel { background-color : green; }");
786  m_g14ComboIndex.clear();
787  ui->g14ProgServiceNames->clear();
788 
789  RDSParser::psns_map_t::iterator it = m_bfmDemod->getRDSParser().m_g14_program_service_names.begin();
790  const RDSParser::psns_map_t::iterator itEnd = m_bfmDemod->getRDSParser().m_g14_program_service_names.end();
791  int i = 0;
792 
793  for (; it != itEnd; ++it, i++)
794  {
795  m_g14ComboIndex.push_back(it->first);
796  QString pistring(str(boost::format("%04X:%s") % it->first % it->second).c_str());
797  ui->g14ProgServiceNames->addItem(pistring);
798  }
799  }
800  else
801  {
802  ui->g14Label->setStyleSheet("QLabel { background:rgb(79,79,79); }");
803  }
804  }
805 
807 }
unsigned int m_g0_count
Definition: rdsparser.h:58
unsigned int m_g6_count
Definition: rdsparser.h:108
unsigned int m_g8_event
Definition: rdsparser.h:118
unsigned int m_pi_program_identification
Definition: rdsparser.h:49
unsigned int m_g14_count
Definition: rdsparser.h:144
std::vector< unsigned int > m_g14ComboIndex
Definition: bfmdemodgui.h:75
int m_g8_content
Definition: rdsparser.h:121
unsigned int m_pi_count
Definition: rdsparser.h:48
unsigned int m_g9_cA
Definition: rdsparser.h:127
bool getDecoderSynced() const
Definition: bfmdemod.h:158
bool m_g0_mono_stereo
Definition: rdsparser.h:63
BFMDemod * m_bfmDemod
Definition: bfmdemodgui.h:73
unsigned int m_g2_count
Definition: rdsparser.h:81
static double dbPower(double magsq, double floor=1e-12)
Definition: db.cpp:22
bool m_g3_groupB
Definition: rdsparser.h:87
unsigned int m_g9_dB
Definition: rdsparser.h:130
unsigned int m_g9_dA
Definition: rdsparser.h:128
static const std::string pty_table[32]
Definition: rdsparser.h:163
Real getDemodAcc() const
Definition: bfmdemod.h:159
unsigned int m_g9_count
Definition: rdsparser.h:125
bool m_g1_updated
Definition: rdsparser.h:70
bool m_g7_updated
Definition: rdsparser.h:106
unsigned int m_g4_year
Definition: rdsparser.h:98
bool m_g6_updated
Definition: rdsparser.h:105
psns_map_t m_g14_program_service_names
key: PI, value: PSN
Definition: rdsparser.h:145
char m_g0_program_service_name[8+1]
Definition: rdsparser.h:59
bool m_pi_traffic_program
Definition: rdsparser.h:51
bool m_g14_updated
Definition: rdsparser.h:143
bool m_g9_updated
Definition: rdsparser.h:124
unsigned int m_g1_count
Definition: rdsparser.h:71
unsigned char m_pi_program_type
Definition: rdsparser.h:50
bool m_g2_updated
Definition: rdsparser.h:80
unsigned int m_g8_location
Definition: rdsparser.h:119
unsigned int m_g1_pin_minute
Definition: rdsparser.h:77
Fixed< IntType, IntBits > arg(const std::complex< Fixed< IntType, IntBits > > &val)
Definition: fixed.h:2401
unsigned int m_g8_extent
Definition: rdsparser.h:117
bool m_g14_data_available
Definition: rdsparser.h:152
static const std::string label_descriptions[16]
Definition: rdsparser.h:171
static const std::string language_codes[44]
Definition: rdsparser.h:168
unsigned int m_g1_pin_day
Definition: rdsparser.h:75
bool m_g0_traffic_announcement
Definition: rdsparser.h:61
unsigned int m_g9_varB
Definition: rdsparser.h:129
int m_g1_country_index
negative if not received
Definition: rdsparser.h:73
bool m_g0_updated
Definition: rdsparser.h:56
unsigned int m_g4_minutes
Definition: rdsparser.h:96
unsigned char m_g0_psn_bitmap
Definition: rdsparser.h:60
std::set< double > m_g0_alt_freq
Definition: rdsparser.h:67
unsigned int m_g7_count
Definition: rdsparser.h:109
unsigned int m_g4_month
Definition: rdsparser.h:99
char m_g2_radiotext[64+1]
Definition: rdsparser.h:82
static const std::string pi_country_codes[15][5]
Definition: rdsparser.h:164
int32_t i
Definition: decimators.h:244
bool m_g0_af_updated
Definition: rdsparser.h:57
unsigned int m_g3_appGroup
Definition: rdsparser.h:88
unsigned int m_g8_count
Definition: rdsparser.h:113
static const std::string coverage_area_codes[16]
Definition: rdsparser.h:165
unsigned int m_g9_varA
Definition: rdsparser.h:126
int m_g8_label_index
negative if not received
Definition: rdsparser.h:120
unsigned int m_g3_message
Definition: rdsparser.h:89
unsigned int m_g4_day
Definition: rdsparser.h:100
bool m_g5_updated
Definition: rdsparser.h:104
bool m_pi_updated
Definition: rdsparser.h:47
bool m_g3_updated
Definition: rdsparser.h:85
int m_g1_language_index
negative if not received
Definition: rdsparser.h:74
static int get_tmc_event_code_index(unsigned int i, unsigned int j)
Definition: rdstmc.cpp:3703
unsigned int m_g5_count
Definition: rdsparser.h:107
Real getDemodQua() const
Definition: bfmdemod.h:160
unsigned int m_g1_pin_hour
Definition: rdsparser.h:76
int m_pi_area_coverage_index
Definition: rdsparser.h:53
Real getDecoderQua() const
Definition: bfmdemod.h:157
Real getDemodFclk() const
Definition: bfmdemod.h:161
bool m_g8_updated
Definition: rdsparser.h:112
bool m_g4_updated
Definition: rdsparser.h:93
bool m_g0_music_speech
Definition: rdsparser.h:62
unsigned int m_g3_aid
Definition: rdsparser.h:90
unsigned int m_g3_count
Definition: rdsparser.h:86
unsigned int m_g4_count
Definition: rdsparser.h:94
void clearUpdateFlags()
Definition: rdsparser.cpp:244
int m_g1_country_page_index
negative if not received
Definition: rdsparser.h:72
RDSParser & getRDSParser()
Definition: bfmdemod.h:181
bool m_g8_sign
Definition: rdsparser.h:116
double m_g4_local_time_offset
Definition: rdsparser.h:101
float Real
Definition: dsptypes.h:42
static std::string get_tmc_events(unsigned int i, unsigned int j)
Definition: rdstmc.cpp:3698
unsigned int m_g4_hours
Definition: rdsparser.h:95
Ui::BFMDemodGUI * ui
Definition: bfmdemodgui.h:63
+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ rdsUpdateFixedFields()

void BFMDemodGUI::rdsUpdateFixedFields ( )
private

Definition at line 557 of file bfmdemodgui.cpp.

References BFMDemod::getRDSParser(), m_bfmDemod, RDSParser::rds_group_acronym_tags, and ui.

Referenced by BFMDemodGUI().

558 {
559  ui->g00Label->setText(m_bfmDemod->getRDSParser().rds_group_acronym_tags[0].c_str());
560  ui->g01Label->setText(m_bfmDemod->getRDSParser().rds_group_acronym_tags[1].c_str());
561  ui->g02Label->setText(m_bfmDemod->getRDSParser().rds_group_acronym_tags[2].c_str());
562  ui->g03Label->setText(m_bfmDemod->getRDSParser().rds_group_acronym_tags[3].c_str());
563  ui->g04Label->setText(m_bfmDemod->getRDSParser().rds_group_acronym_tags[4].c_str());
564  //ui->g05Label->setText(m_bfmDemod->getRDSParser().rds_group_acronym_tags[5].c_str());
565  //ui->g06Label->setText(m_bfmDemod->getRDSParser().rds_group_acronym_tags[6].c_str());
566  //ui->g07Label->setText(m_bfmDemod->getRDSParser().rds_group_acronym_tags[7].c_str());
567  ui->g08Label->setText(m_bfmDemod->getRDSParser().rds_group_acronym_tags[8].c_str());
568  ui->g09Label->setText(m_bfmDemod->getRDSParser().rds_group_acronym_tags[9].c_str());
569  ui->g14Label->setText(m_bfmDemod->getRDSParser().rds_group_acronym_tags[14].c_str());
570 
571  ui->g00CountLabel->setText(m_bfmDemod->getRDSParser().rds_group_acronym_tags[0].c_str());
572  ui->g01CountLabel->setText(m_bfmDemod->getRDSParser().rds_group_acronym_tags[1].c_str());
573  ui->g02CountLabel->setText(m_bfmDemod->getRDSParser().rds_group_acronym_tags[2].c_str());
574  ui->g03CountLabel->setText(m_bfmDemod->getRDSParser().rds_group_acronym_tags[3].c_str());
575  ui->g04CountLabel->setText(m_bfmDemod->getRDSParser().rds_group_acronym_tags[4].c_str());
576  ui->g05CountLabel->setText(m_bfmDemod->getRDSParser().rds_group_acronym_tags[5].c_str());
577  ui->g06CountLabel->setText(m_bfmDemod->getRDSParser().rds_group_acronym_tags[6].c_str());
578  ui->g07CountLabel->setText(m_bfmDemod->getRDSParser().rds_group_acronym_tags[7].c_str());
579  ui->g08CountLabel->setText(m_bfmDemod->getRDSParser().rds_group_acronym_tags[8].c_str());
580  ui->g09CountLabel->setText(m_bfmDemod->getRDSParser().rds_group_acronym_tags[9].c_str());
581  ui->g14CountLabel->setText(m_bfmDemod->getRDSParser().rds_group_acronym_tags[14].c_str());
582 }
BFMDemod * m_bfmDemod
Definition: bfmdemodgui.h:73
static const std::string rds_group_acronym_tags[16]
Definition: rdsparser.h:167
RDSParser & getRDSParser()
Definition: bfmdemod.h:181
Ui::BFMDemodGUI * ui
Definition: bfmdemodgui.h:63
+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ resetToDefaults()

void BFMDemodGUI::resetToDefaults ( )
virtual

Implements PluginInstanceGUI.

Definition at line 80 of file bfmdemodgui.cpp.

References applySettings(), blockApplySettings(), displaySettings(), m_settings, BFMDemodSettings::resetToDefaults(), and ui.

Referenced by deserialize().

81 {
84 
85  blockApplySettings(true);
86  ui->g00AltFrequenciesBox->setEnabled(false);
87  ui->g14MappedFrequencies->setEnabled(false);
88  ui->g14AltFrequencies->setEnabled(false);
89  blockApplySettings(false);
90 
91  applySettings();
92 }
BFMDemodSettings m_settings
Definition: bfmdemodgui.h:67
void applySettings(bool force=false)
void blockApplySettings(bool block)
void displaySettings()
Ui::BFMDemodGUI * ui
Definition: bfmdemodgui.h:63
+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ serialize()

QByteArray BFMDemodGUI::serialize ( ) const
virtual

Implements PluginInstanceGUI.

Definition at line 94 of file bfmdemodgui.cpp.

References m_settings, and BFMDemodSettings::serialize().

95 {
96  return m_settings.serialize();
97 }
BFMDemodSettings m_settings
Definition: bfmdemodgui.h:67
QByteArray serialize() const
+ Here is the call graph for this function:

◆ setCenterFrequency()

void BFMDemodGUI::setCenterFrequency ( qint64  centerFrequency)
virtual

Implements PluginInstanceGUI.

Definition at line 74 of file bfmdemodgui.cpp.

References applySettings(), m_channelMarker, and ChannelMarker::setCenterFrequency().

75 {
76  m_channelMarker.setCenterFrequency(centerFrequency);
77  applySettings();
78 }
ChannelMarker m_channelMarker
Definition: bfmdemodgui.h:66
void applySettings(bool force=false)
void setCenterFrequency(int centerFrequency)
+ Here is the call graph for this function:

◆ setName()

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

Implements PluginInstanceGUI.

Definition at line 59 of file bfmdemodgui.cpp.

60 {
61  setObjectName(name);
62 }

◆ tick

void BFMDemodGUI::tick ( )
privateslot

Definition at line 512 of file bfmdemodgui.cpp.

References CalcDb::dbPower(), BFMDemod::getMagSqLevels(), BFMDemod::getPilotLevel(), BFMDemod::getPilotLock(), m_bfmDemod, m_rdsTimerCount, rdsUpdate(), and ui.

Referenced by BFMDemodGUI().

513 {
514  double magsqAvg, magsqPeak;
515  int nbMagsqSamples;
516  m_bfmDemod->getMagSqLevels(magsqAvg, magsqPeak, nbMagsqSamples);
517  Real powDbAvg = CalcDb::dbPower(magsqAvg);
518  Real powDbPeak = CalcDb::dbPower(magsqPeak);
519 
520  ui->channelPowerMeter->levelChanged(
521  (100.0f + powDbAvg) / 100.0f,
522  (100.0f + powDbPeak) / 100.0f,
523  nbMagsqSamples);
524 
525  ui->channelPower->setText(QString::number(powDbAvg, 'f', 1));
526 
527  Real pilotPowDb = CalcDb::dbPower(m_bfmDemod->getPilotLevel());
528  QString pilotPowDbStr;
529  pilotPowDbStr.sprintf("%+02.1f", pilotPowDb);
530  ui->pilotPower->setText(pilotPowDbStr);
531 
532  if (m_bfmDemod->getPilotLock())
533  {
534  if (ui->audioStereo->isChecked())
535  {
536  ui->audioStereo->setStyleSheet("QToolButton { background-color : green; }");
537  }
538  }
539  else
540  {
541  if (ui->audioStereo->isChecked())
542  {
543  ui->audioStereo->setStyleSheet("QToolButton { background:rgb(79,79,79); }");
544  }
545  }
546 
547  if (ui->rds->isChecked() && (m_rdsTimerCount == 0))
548  {
549  rdsUpdate(false);
550  }
551 
552  m_rdsTimerCount = (m_rdsTimerCount + 1) % 25;
553 
554  //qDebug() << "Pilot lock: " << m_bfmDemod->getPilotLock() << ":" << m_bfmDemod->getPilotLevel(); TODO: update a GUI item with status
555 }
BFMDemod * m_bfmDemod
Definition: bfmdemodgui.h:73
int m_rdsTimerCount
Definition: bfmdemodgui.h:69
static double dbPower(double magsq, double floor=1e-12)
Definition: db.cpp:22
void rdsUpdate(bool force)
Real getPilotLevel() const
Definition: bfmdemod.h:155
void getMagSqLevels(double &avg, double &peak, int &nbSamples)
Definition: bfmdemod.h:163
float Real
Definition: dsptypes.h:42
bool getPilotLock() const
Definition: bfmdemod.h:154
Ui::BFMDemodGUI * ui
Definition: bfmdemodgui.h:63
+ Here is the call graph for this function:
+ Here is the caller graph for this function:

Member Data Documentation

◆ m_bfmDemod

BFMDemod* BFMDemodGUI::m_bfmDemod
private

◆ m_channelMarker

ChannelMarker BFMDemodGUI::m_channelMarker
private

◆ m_deviceUISet

DeviceUISet* BFMDemodGUI::m_deviceUISet
private

Definition at line 65 of file bfmdemodgui.h.

Referenced by BFMDemodGUI(), and ~BFMDemodGUI().

◆ m_doApplySettings

bool BFMDemodGUI::m_doApplySettings
private

Definition at line 68 of file bfmdemodgui.h.

Referenced by applySettings(), and blockApplySettings().

◆ m_g14ComboIndex

std::vector<unsigned int> BFMDemodGUI::m_g14ComboIndex
private

Definition at line 75 of file bfmdemodgui.h.

Referenced by on_g14ProgServiceNames_currentIndexChanged(), and rdsUpdate().

◆ m_inputMessageQueue

MessageQueue BFMDemodGUI::m_inputMessageQueue
private

Definition at line 76 of file bfmdemodgui.h.

◆ m_pluginAPI

PluginAPI* BFMDemodGUI::m_pluginAPI
private

Definition at line 64 of file bfmdemodgui.h.

◆ m_rate

int BFMDemodGUI::m_rate
private

Definition at line 74 of file bfmdemodgui.h.

Referenced by BFMDemodGUI(), and handleMessage().

◆ m_rdsTimerCount

int BFMDemodGUI::m_rdsTimerCount
private

Definition at line 69 of file bfmdemodgui.h.

Referenced by tick().

◆ m_settings

BFMDemodSettings BFMDemodGUI::m_settings
private

◆ m_spectrumVis

SpectrumVis* BFMDemodGUI::m_spectrumVis
private

Definition at line 71 of file bfmdemodgui.h.

Referenced by BFMDemodGUI(), and ~BFMDemodGUI().

◆ ui

Ui::BFMDemodGUI* BFMDemodGUI::ui
private

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