mirror of https://github.com/f4exb/sdrangel.git
New channel marker signal handling: Applied to new gen channel analyzer and AM Demod
This commit is contained in:
parent
7b8b492bdd
commit
be170c455f
|
@ -140,6 +140,7 @@ bool ChannelAnalyzerNGGUI::deserialize(const QByteArray& data)
|
||||||
|
|
||||||
blockApplySettings(false);
|
blockApplySettings(false);
|
||||||
m_channelMarker.blockSignals(false);
|
m_channelMarker.blockSignals(false);
|
||||||
|
m_channelMarker.emitChangedByAPI();
|
||||||
|
|
||||||
ui->spanLog2->setCurrentIndex(spanLog2);
|
ui->spanLog2->setCurrentIndex(spanLog2);
|
||||||
setNewFinalRate(spanLog2);
|
setNewFinalRate(spanLog2);
|
||||||
|
@ -220,8 +221,9 @@ void ChannelAnalyzerNGGUI::handleInputMessages()
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void ChannelAnalyzerNGGUI::channelMarkerChanged()
|
void ChannelAnalyzerNGGUI::channelMarkerChangedByCursor()
|
||||||
{
|
{
|
||||||
|
ui->deltaFrequency->setValue(m_channelMarker.getCenterFrequency());
|
||||||
applySettings();
|
applySettings();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -413,13 +415,14 @@ ChannelAnalyzerNGGUI::ChannelAnalyzerNGGUI(PluginAPI* pluginAPI, DeviceUISet *de
|
||||||
ui->glScope->connectTimer(MainWindow::getInstance()->getMasterTimer());
|
ui->glScope->connectTimer(MainWindow::getInstance()->getMasterTimer());
|
||||||
connect(&MainWindow::getInstance()->getMasterTimer(), SIGNAL(timeout()), this, SLOT(tick()));
|
connect(&MainWindow::getInstance()->getMasterTimer(), SIGNAL(timeout()), this, SLOT(tick()));
|
||||||
|
|
||||||
|
m_channelMarker.blockSignals(true);
|
||||||
m_channelMarker.setColor(Qt::gray);
|
m_channelMarker.setColor(Qt::gray);
|
||||||
m_channelMarker.setBandwidth(m_rate);
|
m_channelMarker.setBandwidth(m_rate);
|
||||||
m_channelMarker.setSidebands(ChannelMarker::usb);
|
m_channelMarker.setSidebands(ChannelMarker::usb);
|
||||||
m_channelMarker.setCenterFrequency(0);
|
m_channelMarker.setCenterFrequency(0);
|
||||||
m_channelMarker.setVisible(true);
|
m_channelMarker.blockSignals(false);
|
||||||
|
m_channelMarker.setVisible(true); // activate signal on the last setting only
|
||||||
connect(&m_channelMarker, SIGNAL(changed()), this, SLOT(channelMarkerChanged()));
|
setTitleColor(m_channelMarker.getColor());
|
||||||
|
|
||||||
m_deviceUISet->registerRxChannelInstance(ChannelAnalyzerNG::m_channelID, this);
|
m_deviceUISet->registerRxChannelInstance(ChannelAnalyzerNG::m_channelID, this);
|
||||||
m_deviceUISet->addChannelMarker(&m_channelMarker);
|
m_deviceUISet->addChannelMarker(&m_channelMarker);
|
||||||
|
@ -428,6 +431,7 @@ ChannelAnalyzerNGGUI::ChannelAnalyzerNGGUI(PluginAPI* pluginAPI, DeviceUISet *de
|
||||||
ui->spectrumGUI->setBuddies(m_spectrumVis->getInputMessageQueue(), m_spectrumVis, ui->glSpectrum);
|
ui->spectrumGUI->setBuddies(m_spectrumVis->getInputMessageQueue(), m_spectrumVis, ui->glSpectrum);
|
||||||
ui->scopeGUI->setBuddies(m_scopeVis->getInputMessageQueue(), m_scopeVis, ui->glScope);
|
ui->scopeGUI->setBuddies(m_scopeVis->getInputMessageQueue(), m_scopeVis, ui->glScope);
|
||||||
|
|
||||||
|
connect(&m_channelMarker, SIGNAL(changedByCursor()), this, SLOT(channelMarkerChangedByCursor()));
|
||||||
connect(getInputMessageQueue(), SIGNAL(messageEnqueued()), this, SLOT(handleInputMessages()));
|
connect(getInputMessageQueue(), SIGNAL(messageEnqueued()), this, SLOT(handleInputMessages()));
|
||||||
|
|
||||||
applySettings();
|
applySettings();
|
||||||
|
@ -554,9 +558,6 @@ void ChannelAnalyzerNGGUI::applySettings()
|
||||||
{
|
{
|
||||||
if (m_doApplySettings)
|
if (m_doApplySettings)
|
||||||
{
|
{
|
||||||
setTitleColor(m_channelMarker.getColor());
|
|
||||||
ui->deltaFrequency->setValue(m_channelMarker.getCenterFrequency());
|
|
||||||
|
|
||||||
int sampleRate = getRequestedChannelSampleRate();
|
int sampleRate = getRequestedChannelSampleRate();
|
||||||
|
|
||||||
ChannelAnalyzerNG::MsgConfigureChannelizer *msgChannelizer = ChannelAnalyzerNG::MsgConfigureChannelizer::create(sampleRate, m_channelMarker.getCenterFrequency());
|
ChannelAnalyzerNG::MsgConfigureChannelizer *msgChannelizer = ChannelAnalyzerNG::MsgConfigureChannelizer::create(sampleRate, m_channelMarker.getCenterFrequency());
|
||||||
|
@ -579,15 +580,11 @@ void ChannelAnalyzerNGGUI::applySettings()
|
||||||
|
|
||||||
void ChannelAnalyzerNGGUI::leaveEvent(QEvent*)
|
void ChannelAnalyzerNGGUI::leaveEvent(QEvent*)
|
||||||
{
|
{
|
||||||
blockApplySettings(true);
|
|
||||||
m_channelMarker.setHighlighted(false);
|
m_channelMarker.setHighlighted(false);
|
||||||
blockApplySettings(false);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void ChannelAnalyzerNGGUI::enterEvent(QEvent*)
|
void ChannelAnalyzerNGGUI::enterEvent(QEvent*)
|
||||||
{
|
{
|
||||||
blockApplySettings(true);
|
|
||||||
m_channelMarker.setHighlighted(true);
|
m_channelMarker.setHighlighted(true);
|
||||||
blockApplySettings(false);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -53,18 +53,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 channelMarkerChanged();
|
void channelMarkerChangedByCursor();
|
||||||
void on_deltaFrequency_changed(qint64 value);
|
|
||||||
void on_channelSampleRate_changed(quint64 value);
|
|
||||||
void on_useRationalDownsampler_toggled(bool checked);
|
|
||||||
void on_BW_valueChanged(int value);
|
|
||||||
void on_lowCut_valueChanged(int value);
|
|
||||||
void on_spanLog2_currentIndexChanged(int index);
|
|
||||||
void on_ssb_toggled(bool checked);
|
|
||||||
void onWidgetRolled(QWidget* widget, bool rollDown);
|
|
||||||
void handleInputMessages();
|
|
||||||
void tick();
|
|
||||||
|
|
||||||
private:
|
private:
|
||||||
Ui::ChannelAnalyzerNGGUI* ui;
|
Ui::ChannelAnalyzerNGGUI* ui;
|
||||||
|
@ -96,6 +86,18 @@ private:
|
||||||
|
|
||||||
void leaveEvent(QEvent*);
|
void leaveEvent(QEvent*);
|
||||||
void enterEvent(QEvent*);
|
void enterEvent(QEvent*);
|
||||||
|
|
||||||
|
private slots:
|
||||||
|
void on_deltaFrequency_changed(qint64 value);
|
||||||
|
void on_channelSampleRate_changed(quint64 value);
|
||||||
|
void on_useRationalDownsampler_toggled(bool checked);
|
||||||
|
void on_BW_valueChanged(int value);
|
||||||
|
void on_lowCut_valueChanged(int value);
|
||||||
|
void on_spanLog2_currentIndexChanged(int index);
|
||||||
|
void on_ssb_toggled(bool checked);
|
||||||
|
void onWidgetRolled(QWidget* widget, bool rollDown);
|
||||||
|
void handleInputMessages();
|
||||||
|
void tick();
|
||||||
};
|
};
|
||||||
|
|
||||||
#endif // INCLUDE_CHANNELANALYZERNGGUI_H
|
#endif // INCLUDE_CHANNELANALYZERNGGUI_H
|
||||||
|
|
|
@ -94,15 +94,9 @@ bool AMDemodGUI::handleMessage(const Message& message __attribute__((unused)))
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
void AMDemodGUI::channelMarkerChanged()
|
void AMDemodGUI::channelMarkerChangedByCursor()
|
||||||
{
|
{
|
||||||
setWindowTitle(m_channelMarker.getTitle());
|
ui->deltaFrequency->setValue(m_channelMarker.getCenterFrequency());
|
||||||
m_settings.m_inputFrequencyOffset = m_channelMarker.getCenterFrequency();
|
|
||||||
m_settings.m_udpAddress = m_channelMarker.getUDPAddress(),
|
|
||||||
m_settings.m_udpPort = m_channelMarker.getUDPSendPort(),
|
|
||||||
m_settings.m_rgbColor = m_channelMarker.getColor().rgb();
|
|
||||||
displayUDPAddress();
|
|
||||||
//m_settings.m_channelMarkerBytes = m_channelMarker.serialize();
|
|
||||||
applySettings();
|
applySettings();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -166,6 +160,17 @@ void AMDemodGUI::onMenuDialogCalled(const QPoint &p)
|
||||||
BasicChannelSettingsDialog dialog(&m_channelMarker, this);
|
BasicChannelSettingsDialog dialog(&m_channelMarker, this);
|
||||||
dialog.move(p);
|
dialog.move(p);
|
||||||
dialog.exec();
|
dialog.exec();
|
||||||
|
|
||||||
|
m_settings.m_inputFrequencyOffset = m_channelMarker.getCenterFrequency();
|
||||||
|
m_settings.m_udpAddress = m_channelMarker.getUDPAddress(),
|
||||||
|
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();
|
||||||
}
|
}
|
||||||
|
|
||||||
AMDemodGUI::AMDemodGUI(PluginAPI* pluginAPI, DeviceUISet *deviceUISet, BasebandSampleSink *rxChannel, QWidget* parent) :
|
AMDemodGUI::AMDemodGUI(PluginAPI* pluginAPI, DeviceUISet *deviceUISet, BasebandSampleSink *rxChannel, QWidget* parent) :
|
||||||
|
@ -192,23 +197,26 @@ AMDemodGUI::AMDemodGUI(PluginAPI* pluginAPI, DeviceUISet *deviceUISet, BasebandS
|
||||||
ui->deltaFrequency->setValueRange(false, 7, -9999999, 9999999);
|
ui->deltaFrequency->setValueRange(false, 7, -9999999, 9999999);
|
||||||
ui->channelPowerMeter->setColorTheme(LevelMeterSignalDB::ColorGreenAndBlue);
|
ui->channelPowerMeter->setColorTheme(LevelMeterSignalDB::ColorGreenAndBlue);
|
||||||
|
|
||||||
|
m_channelMarker.blockSignals(true);
|
||||||
m_channelMarker.setColor(Qt::yellow);
|
m_channelMarker.setColor(Qt::yellow);
|
||||||
m_channelMarker.setBandwidth(5000);
|
m_channelMarker.setBandwidth(5000);
|
||||||
m_channelMarker.setCenterFrequency(0);
|
m_channelMarker.setCenterFrequency(0);
|
||||||
m_channelMarker.setTitle("AM Demodulator");
|
m_channelMarker.setTitle("AM Demodulator");
|
||||||
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.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);
|
||||||
|
|
||||||
connect(&m_channelMarker, SIGNAL(changed()), this, SLOT(channelMarkerChanged()));
|
|
||||||
|
|
||||||
m_deviceUISet->registerRxChannelInstance(AMDemod::m_channelID, this);
|
m_deviceUISet->registerRxChannelInstance(AMDemod::m_channelID, this);
|
||||||
m_deviceUISet->addChannelMarker(&m_channelMarker);
|
m_deviceUISet->addChannelMarker(&m_channelMarker);
|
||||||
m_deviceUISet->addRollupWidget(this);
|
m_deviceUISet->addRollupWidget(this);
|
||||||
|
|
||||||
displaySettings();
|
connect(&m_channelMarker, SIGNAL(changedByCursor()), this, SLOT(channelMarkerChangedByCursor()));
|
||||||
|
|
||||||
|
displaySettings();
|
||||||
applySettings(true);
|
applySettings(true);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -234,7 +242,6 @@ void AMDemodGUI::applySettings(bool force)
|
||||||
48000, m_channelMarker.getCenterFrequency());
|
48000, m_channelMarker.getCenterFrequency());
|
||||||
m_amDemod->getInputMessageQueue()->push(channelConfigMsg);
|
m_amDemod->getInputMessageQueue()->push(channelConfigMsg);
|
||||||
|
|
||||||
ui->deltaFrequency->setValue(m_channelMarker.getCenterFrequency());
|
|
||||||
|
|
||||||
AMDemod::MsgConfigureAMDemod* message = AMDemod::MsgConfigureAMDemod::create( m_settings, force);
|
AMDemod::MsgConfigureAMDemod* message = AMDemod::MsgConfigureAMDemod::create( m_settings, force);
|
||||||
m_amDemod->getInputMessageQueue()->push(message);
|
m_amDemod->getInputMessageQueue()->push(message);
|
||||||
|
@ -246,14 +253,17 @@ void AMDemodGUI::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.setBandwidth(m_settings.m_rfBandwidth);
|
m_channelMarker.setBandwidth(m_settings.m_rfBandwidth);
|
||||||
m_channelMarker.setColor(m_settings.m_rgbColor);
|
|
||||||
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());
|
||||||
|
|
||||||
int displayValue = m_settings.m_rfBandwidth/100.0;
|
int displayValue = m_settings.m_rfBandwidth/100.0;
|
||||||
ui->rfBW->setValue(displayValue);
|
ui->rfBW->setValue(displayValue);
|
||||||
ui->rfBWText->setText(QString("%1 kHz").arg(displayValue / 10.0, 0, 'f', 1));
|
ui->rfBWText->setText(QString("%1 kHz").arg(displayValue / 10.0, 0, 'f', 1));
|
||||||
|
@ -273,21 +283,17 @@ void AMDemodGUI::displaySettings()
|
||||||
|
|
||||||
void AMDemodGUI::displayUDPAddress()
|
void AMDemodGUI::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 AMDemodGUI::leaveEvent(QEvent*)
|
void AMDemodGUI::leaveEvent(QEvent*)
|
||||||
{
|
{
|
||||||
blockApplySettings(true);
|
|
||||||
m_channelMarker.setHighlighted(false);
|
m_channelMarker.setHighlighted(false);
|
||||||
blockApplySettings(false);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void AMDemodGUI::enterEvent(QEvent*)
|
void AMDemodGUI::enterEvent(QEvent*)
|
||||||
{
|
{
|
||||||
blockApplySettings(true);
|
|
||||||
m_channelMarker.setHighlighted(true);
|
m_channelMarker.setHighlighted(true);
|
||||||
blockApplySettings(false);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void AMDemodGUI::tick()
|
void AMDemodGUI::tick()
|
||||||
|
|
|
@ -11,8 +11,6 @@
|
||||||
class PluginAPI;
|
class PluginAPI;
|
||||||
class DeviceUISet;
|
class DeviceUISet;
|
||||||
|
|
||||||
class ThreadedBasebandSampleSink;
|
|
||||||
class DownChannelizer;
|
|
||||||
class AMDemod;
|
class AMDemod;
|
||||||
class BasebandSampleSink;
|
class BasebandSampleSink;
|
||||||
|
|
||||||
|
@ -38,18 +36,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 channelMarkerChanged();
|
void channelMarkerChangedByCursor();
|
||||||
void on_deltaFrequency_changed(qint64 value);
|
|
||||||
void on_bandpassEnable_toggled(bool checked);
|
|
||||||
void on_rfBW_valueChanged(int value);
|
|
||||||
void on_volume_valueChanged(int value);
|
|
||||||
void on_squelch_valueChanged(int value);
|
|
||||||
void on_audioMute_toggled(bool checked);
|
|
||||||
void on_copyAudioToUDP_toggled(bool copy);
|
|
||||||
void onWidgetRolled(QWidget* widget, bool rollDown);
|
|
||||||
void onMenuDialogCalled(const QPoint& p);
|
|
||||||
void tick();
|
|
||||||
|
|
||||||
private:
|
private:
|
||||||
Ui::AMDemodGUI* ui;
|
Ui::AMDemodGUI* ui;
|
||||||
|
@ -59,8 +47,6 @@ private:
|
||||||
AMDemodSettings m_settings;
|
AMDemodSettings m_settings;
|
||||||
bool m_doApplySettings;
|
bool m_doApplySettings;
|
||||||
|
|
||||||
// ThreadedBasebandSampleSink* m_threadedChannelizer;
|
|
||||||
// DownChannelizer* m_channelizer;
|
|
||||||
AMDemod* m_amDemod;
|
AMDemod* m_amDemod;
|
||||||
bool m_squelchOpen;
|
bool m_squelchOpen;
|
||||||
uint32_t m_tickCount;
|
uint32_t m_tickCount;
|
||||||
|
@ -76,6 +62,18 @@ private:
|
||||||
|
|
||||||
void leaveEvent(QEvent*);
|
void leaveEvent(QEvent*);
|
||||||
void enterEvent(QEvent*);
|
void enterEvent(QEvent*);
|
||||||
|
|
||||||
|
private slots:
|
||||||
|
void on_deltaFrequency_changed(qint64 value);
|
||||||
|
void on_bandpassEnable_toggled(bool checked);
|
||||||
|
void on_rfBW_valueChanged(int value);
|
||||||
|
void on_volume_valueChanged(int value);
|
||||||
|
void on_squelch_valueChanged(int value);
|
||||||
|
void on_audioMute_toggled(bool checked);
|
||||||
|
void on_copyAudioToUDP_toggled(bool copy);
|
||||||
|
void onWidgetRolled(QWidget* widget, bool rollDown);
|
||||||
|
void onMenuDialogCalled(const QPoint& p);
|
||||||
|
void tick();
|
||||||
};
|
};
|
||||||
|
|
||||||
#endif // INCLUDE_AMDEMODGUI_H
|
#endif // INCLUDE_AMDEMODGUI_H
|
||||||
|
|
Loading…
Reference in New Issue