BFM Demod: applied new channel marker signal handling

This commit is contained in:
f4exb 2017-11-14 01:23:01 +01:00
parent 4896b1bf40
commit a182656294
3 changed files with 52 additions and 48 deletions

View File

@ -97,6 +97,7 @@ bool AMDemodGUI::handleMessage(const Message& message __attribute__((unused)))
void AMDemodGUI::channelMarkerChangedByCursor() void AMDemodGUI::channelMarkerChangedByCursor()
{ {
ui->deltaFrequency->setValue(m_channelMarker.getCenterFrequency()); ui->deltaFrequency->setValue(m_channelMarker.getCenterFrequency());
m_settings.m_inputFrequencyOffset = m_channelMarker.getCenterFrequency();
applySettings(); applySettings();
} }
@ -236,8 +237,6 @@ void AMDemodGUI::applySettings(bool force)
{ {
if (m_doApplySettings) if (m_doApplySettings)
{ {
setTitleColor(m_channelMarker.getColor());
AMDemod::MsgConfigureChannelizer* channelConfigMsg = AMDemod::MsgConfigureChannelizer::create( AMDemod::MsgConfigureChannelizer* channelConfigMsg = AMDemod::MsgConfigureChannelizer::create(
48000, m_channelMarker.getCenterFrequency()); 48000, m_channelMarker.getCenterFrequency());
m_amDemod->getInputMessageQueue()->push(channelConfigMsg); m_amDemod->getInputMessageQueue()->push(channelConfigMsg);

View File

@ -136,12 +136,10 @@ void BFMDemodGUI::handleInputMessages()
} }
} }
void BFMDemodGUI::channelMarkerUpdate() void BFMDemodGUI::channelMarkerChangedByCursor()
{ {
m_settings.m_udpAddress = m_channelMarker.getUDPAddress(), ui->deltaFrequency->setValue(m_channelMarker.getCenterFrequency());
m_settings.m_udpPort = m_channelMarker.getUDPSendPort(), m_settings.m_inputFrequencyOffset = m_channelMarker.getCenterFrequency();
m_settings.m_rgbColor = m_channelMarker.getColor().rgb();
displaySettings();
applySettings(); applySettings();
} }
@ -307,10 +305,16 @@ void BFMDemodGUI::onMenuDialogCalled(const QPoint &p)
dialog.move(p); dialog.move(p);
dialog.exec(); dialog.exec();
if (dialog.hasChanged()) m_settings.m_inputFrequencyOffset = m_channelMarker.getCenterFrequency();
{ m_settings.m_udpAddress = m_channelMarker.getUDPAddress(),
channelMarkerUpdate(); m_settings.m_udpPort = m_channelMarker.getUDPSendPort(),
} m_settings.m_rgbColor = m_channelMarker.getColor().rgb();
setWindowTitle(m_channelMarker.getTitle());
setTitleColor(m_settings.m_rgbColor);
displayUDPAddress();
applySettings();
} }
BFMDemodGUI::BFMDemodGUI(PluginAPI* pluginAPI, DeviceUISet *deviceUISet, BasebandSampleSink *rxChannel, QWidget* parent) : BFMDemodGUI::BFMDemodGUI(PluginAPI* pluginAPI, DeviceUISet *deviceUISet, BasebandSampleSink *rxChannel, QWidget* parent) :
@ -347,24 +351,27 @@ BFMDemodGUI::BFMDemodGUI(PluginAPI* pluginAPI, DeviceUISet *deviceUISet, Baseban
m_spectrumVis->configure(m_spectrumVis->getInputMessageQueue(), 64, 10, FFTWindow::BlackmanHarris); m_spectrumVis->configure(m_spectrumVis->getInputMessageQueue(), 64, 10, FFTWindow::BlackmanHarris);
connect(&MainWindow::getInstance()->getMasterTimer(), SIGNAL(timeout()), this, SLOT(tick())); connect(&MainWindow::getInstance()->getMasterTimer(), SIGNAL(timeout()), this, SLOT(tick()));
m_channelMarker.setTitle("Broadcast FM Demod"); m_channelMarker.blockSignals(true);
m_channelMarker.setColor(m_settings.m_rgbColor);
m_channelMarker.setBandwidth(12500); m_channelMarker.setBandwidth(12500);
m_channelMarker.setCenterFrequency(0); m_channelMarker.setCenterFrequency(0);
m_channelMarker.setTitle("Broadcast FM Demod");
m_channelMarker.setUDPAddress("127.0.0.1"); m_channelMarker.setUDPAddress("127.0.0.1");
m_channelMarker.setUDPSendPort(9999); m_channelMarker.setUDPSendPort(9999);
m_channelMarker.setVisible(true); m_channelMarker.blockSignals(false);
m_channelMarker.setColor(m_settings.m_rgbColor); m_channelMarker.setVisible(true); // activate signal on the last setting only
setTitleColor(m_channelMarker.getColor()); setTitleColor(m_channelMarker.getColor());
m_settings.setChannelMarker(&m_channelMarker); m_settings.setChannelMarker(&m_channelMarker);
m_settings.setSpectrumGUI(ui->spectrumGUI); m_settings.setSpectrumGUI(ui->spectrumGUI);
connect(&m_channelMarker, SIGNAL(changed()), this, SLOT(channelMarkerChanged()));
m_deviceUISet->registerRxChannelInstance(BFMDemod::m_channelID, this); m_deviceUISet->registerRxChannelInstance(BFMDemod::m_channelID, this);
m_deviceUISet->addChannelMarker(&m_channelMarker); m_deviceUISet->addChannelMarker(&m_channelMarker);
m_deviceUISet->addRollupWidget(this); m_deviceUISet->addRollupWidget(this);
connect(&m_channelMarker, SIGNAL(changedByCursor()), this, SLOT(channelMarkerChangedByCursor()));
ui->spectrumGUI->setBuddies(m_spectrumVis->getInputMessageQueue(), m_spectrumVis, ui->glSpectrum); ui->spectrumGUI->setBuddies(m_spectrumVis->getInputMessageQueue(), m_spectrumVis, ui->glSpectrum);
ui->g00AltFrequenciesBox->setEnabled(false); ui->g00AltFrequenciesBox->setEnabled(false);
@ -374,7 +381,6 @@ BFMDemodGUI::BFMDemodGUI(PluginAPI* pluginAPI, DeviceUISet *deviceUISet, Baseban
rdsUpdateFixedFields(); rdsUpdateFixedFields();
rdsUpdate(true); rdsUpdate(true);
displaySettings(); displaySettings();
displayUDPAddress();
applySettings(true); applySettings(true);
} }
@ -387,7 +393,7 @@ BFMDemodGUI::~BFMDemodGUI()
void BFMDemodGUI::displayUDPAddress() void BFMDemodGUI::displayUDPAddress()
{ {
ui->copyAudioToUDP->setToolTip(QString("Copy audio output to UDP %1:%2").arg(m_channelMarker.getUDPAddress()).arg(m_channelMarker.getUDPSendPort())); ui->copyAudioToUDP->setToolTip(QString("Copy audio output to UDP %1:%2").arg(m_settings.m_udpAddress).arg(m_settings.m_udpPort));
} }
void BFMDemodGUI::blockApplySettings(bool block) void BFMDemodGUI::blockApplySettings(bool block)
@ -413,17 +419,20 @@ void BFMDemodGUI::displaySettings()
{ {
m_channelMarker.blockSignals(true); m_channelMarker.blockSignals(true);
m_channelMarker.setCenterFrequency(m_settings.m_inputFrequencyOffset); m_channelMarker.setCenterFrequency(m_settings.m_inputFrequencyOffset);
m_channelMarker.setColor(m_settings.m_rgbColor); m_channelMarker.setBandwidth(m_settings.m_rfBandwidth);
setTitleColor(m_settings.m_rgbColor);
m_channelMarker.blockSignals(false); m_channelMarker.blockSignals(false);
m_channelMarker.setColor(m_settings.m_rgbColor); // activate signal on the last setting only
setTitleColor(m_settings.m_rgbColor);
setWindowTitle(m_channelMarker.getTitle()); setWindowTitle(m_channelMarker.getTitle());
displayUDPAddress();
blockApplySettings(true); blockApplySettings(true);
ui->deltaFrequency->setValue(m_channelMarker.getCenterFrequency());
ui->rfBW->setValue(BFMDemodSettings::getRFBWIndex(m_settings.m_rfBandwidth)); ui->rfBW->setValue(BFMDemodSettings::getRFBWIndex(m_settings.m_rfBandwidth));
ui->rfBWText->setText(QString("%1 kHz").arg(m_settings.m_rfBandwidth / 1000.0)); ui->rfBWText->setText(QString("%1 kHz").arg(m_settings.m_rfBandwidth / 1000.0));
m_channelMarker.setBandwidth(m_settings.m_rfBandwidth);
ui->afBW->setValue(m_settings.m_afBandwidth/1000.0); ui->afBW->setValue(m_settings.m_afBandwidth/1000.0);
ui->afBWText->setText(QString("%1 kHz").arg(m_settings.m_afBandwidth/1000.0)); ui->afBWText->setText(QString("%1 kHz").arg(m_settings.m_afBandwidth/1000.0));
@ -445,16 +454,12 @@ void BFMDemodGUI::displaySettings()
void BFMDemodGUI::leaveEvent(QEvent*) void BFMDemodGUI::leaveEvent(QEvent*)
{ {
blockApplySettings(true);
m_channelMarker.setHighlighted(false); m_channelMarker.setHighlighted(false);
blockApplySettings(false);
} }
void BFMDemodGUI::enterEvent(QEvent*) void BFMDemodGUI::enterEvent(QEvent*)
{ {
blockApplySettings(true);
m_channelMarker.setHighlighted(true); m_channelMarker.setHighlighted(true);
blockApplySettings(false);
} }
void BFMDemodGUI::tick() void BFMDemodGUI::tick()

View File

@ -29,8 +29,6 @@ class PluginAPI;
class DeviceUISet; class DeviceUISet;
class RDSParser; class RDSParser;
class ThreadedBasebandSampleSink;
class DownChannelizer;
class SpectrumVis; class SpectrumVis;
class BFMDemod; class BFMDemod;
class BasebandSampleSink; class BasebandSampleSink;
@ -57,26 +55,8 @@ public:
virtual MessageQueue *getInputMessageQueue() { return &m_inputMessageQueue; } virtual MessageQueue *getInputMessageQueue() { return &m_inputMessageQueue; }
virtual bool handleMessage(const Message& message); virtual bool handleMessage(const Message& message);
private slots: public slots:
void on_deltaFrequency_changed(qint64 value); void channelMarkerChangedByCursor();
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_copyAudioToUDP_toggled(bool copy);
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 tick();
private: private:
Ui::BFMDemodGUI* ui; Ui::BFMDemodGUI* ui;
@ -104,7 +84,6 @@ private:
void displayUDPAddress(); void displayUDPAddress();
void rdsUpdate(bool force); void rdsUpdate(bool force);
void rdsUpdateFixedFields(); void rdsUpdateFixedFields();
void channelMarkerUpdate();
void leaveEvent(QEvent*); void leaveEvent(QEvent*);
void enterEvent(QEvent*); void enterEvent(QEvent*);
@ -119,6 +98,27 @@ private:
return (3*rfBW)/2; return (3*rfBW)/2;
} }
} }
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_copyAudioToUDP_toggled(bool copy);
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 tick();
}; };
#endif // INCLUDE_BFMDEMODGUI_H #endif // INCLUDE_BFMDEMODGUI_H