mirror of
https://github.com/f4exb/sdrangel.git
synced 2024-11-26 09:48:45 -05:00
Channel Analyzer: set GUI sample rate at construction time. Fixes #649
This commit is contained in:
parent
de3299098f
commit
40bd300baf
@ -51,6 +51,7 @@ ChannelAnalyzer::ChannelAnalyzer(DeviceAPI *deviceAPI) :
|
|||||||
|
|
||||||
ChannelAnalyzer::~ChannelAnalyzer()
|
ChannelAnalyzer::~ChannelAnalyzer()
|
||||||
{
|
{
|
||||||
|
qDebug("ChannelAnalyzer::~ChannelAnalyzer");
|
||||||
m_deviceAPI->removeChannelSinkAPI(this);
|
m_deviceAPI->removeChannelSinkAPI(this);
|
||||||
m_deviceAPI->removeChannelSink(this);
|
m_deviceAPI->removeChannelSink(this);
|
||||||
|
|
||||||
@ -59,6 +60,7 @@ ChannelAnalyzer::~ChannelAnalyzer()
|
|||||||
}
|
}
|
||||||
|
|
||||||
delete m_basebandSink;
|
delete m_basebandSink;
|
||||||
|
qDebug("ChannelAnalyzer::~ChannelAnalyzer: done");
|
||||||
}
|
}
|
||||||
|
|
||||||
void ChannelAnalyzer::feed(const SampleVector::const_iterator& begin, const SampleVector::const_iterator& end, bool positiveOnly)
|
void ChannelAnalyzer::feed(const SampleVector::const_iterator& begin, const SampleVector::const_iterator& end, bool positiveOnly)
|
||||||
@ -106,6 +108,7 @@ bool ChannelAnalyzer::handleMessage(const Message& cmd)
|
|||||||
{
|
{
|
||||||
DSPSignalNotification& cfg = (DSPSignalNotification&) cmd;
|
DSPSignalNotification& cfg = (DSPSignalNotification&) cmd;
|
||||||
m_basebandSampleRate = cfg.getSampleRate();
|
m_basebandSampleRate = cfg.getSampleRate();
|
||||||
|
qDebug("ChannelAnalyzer::handleMessage: DSPSignalNotification: %d", m_basebandSampleRate);
|
||||||
m_centerFrequency = cfg.getCenterFrequency();
|
m_centerFrequency = cfg.getCenterFrequency();
|
||||||
DSPSignalNotification *notif = new DSPSignalNotification(cfg);
|
DSPSignalNotification *notif = new DSPSignalNotification(cfg);
|
||||||
m_basebandSink->getInputMessageQueue()->push(notif);
|
m_basebandSink->getInputMessageQueue()->push(notif);
|
||||||
|
@ -367,13 +367,15 @@ ChannelAnalyzerGUI::ChannelAnalyzerGUI(PluginAPI* pluginAPI, DeviceUISet *device
|
|||||||
ui->setupUi(this);
|
ui->setupUi(this);
|
||||||
setAttribute(Qt::WA_DeleteOnClose, true);
|
setAttribute(Qt::WA_DeleteOnClose, true);
|
||||||
connect(this, SIGNAL(widgetRolled(QWidget*,bool)), this, SLOT(onWidgetRolled(QWidget*,bool)));
|
connect(this, SIGNAL(widgetRolled(QWidget*,bool)), this, SLOT(onWidgetRolled(QWidget*,bool)));
|
||||||
|
m_scopeVis = new ScopeVis(ui->glScope);
|
||||||
|
|
||||||
connect(this, SIGNAL(customContextMenuRequested(const QPoint &)), this, SLOT(onMenuDialogCalled(const QPoint &)));
|
connect(this, SIGNAL(customContextMenuRequested(const QPoint &)), this, SLOT(onMenuDialogCalled(const QPoint &)));
|
||||||
|
|
||||||
m_channelAnalyzer = (ChannelAnalyzer*) rxChannel; //new ChannelAnalyzer(m_deviceUISet->m_deviceSourceAPI);
|
m_channelAnalyzer = (ChannelAnalyzer*) rxChannel; //new ChannelAnalyzer(m_deviceUISet->m_deviceSourceAPI);
|
||||||
m_spectrumVis = m_channelAnalyzer->getSpectrumVis();
|
m_spectrumVis = m_channelAnalyzer->getSpectrumVis();
|
||||||
m_spectrumVis->setGLSpectrum(ui->glSpectrum);
|
m_spectrumVis->setGLSpectrum(ui->glSpectrum);
|
||||||
m_scopeVis = new ScopeVis(ui->glScope);
|
|
||||||
m_spectrumScopeComboVis = new SpectrumScopeComboVis(m_spectrumVis, m_scopeVis);
|
m_spectrumScopeComboVis = new SpectrumScopeComboVis(m_spectrumVis, m_scopeVis);
|
||||||
|
m_basebandSampleRate = m_channelAnalyzer->getChannelSampleRate();
|
||||||
m_channelAnalyzer->setSampleSink(m_spectrumScopeComboVis);
|
m_channelAnalyzer->setSampleSink(m_spectrumScopeComboVis);
|
||||||
m_channelAnalyzer->setMessageQueueToGUI(getInputMessageQueue());
|
m_channelAnalyzer->setMessageQueueToGUI(getInputMessageQueue());
|
||||||
|
|
||||||
@ -424,9 +426,13 @@ ChannelAnalyzerGUI::ChannelAnalyzerGUI(PluginAPI* pluginAPI, DeviceUISet *device
|
|||||||
|
|
||||||
ChannelAnalyzerGUI::~ChannelAnalyzerGUI()
|
ChannelAnalyzerGUI::~ChannelAnalyzerGUI()
|
||||||
{
|
{
|
||||||
delete m_scopeVis;
|
qDebug("ChannelAnalyzerGUI::~ChannelAnalyzerGUI");
|
||||||
delete m_spectrumScopeComboVis;
|
ui->glSpectrum->disconnectTimer();
|
||||||
|
ui->glScope->disconnectTimer();
|
||||||
delete ui;
|
delete ui;
|
||||||
|
delete m_spectrumScopeComboVis;
|
||||||
|
delete m_scopeVis;
|
||||||
|
qDebug("ChannelAnalyzerGUI::~ChannelAnalyzerGUI: done");
|
||||||
}
|
}
|
||||||
|
|
||||||
int ChannelAnalyzerGUI::getSinkSampleRate()
|
int ChannelAnalyzerGUI::getSinkSampleRate()
|
||||||
|
@ -46,6 +46,7 @@ GLScope::GLScope(QWidget *parent) : QGLWidget(parent),
|
|||||||
m_bufferIndex(0),
|
m_bufferIndex(0),
|
||||||
m_displayMode(DisplayX),
|
m_displayMode(DisplayX),
|
||||||
m_displayPolGrid(false),
|
m_displayPolGrid(false),
|
||||||
|
m_masterTimer(nullptr),
|
||||||
m_dataChanged(0),
|
m_dataChanged(0),
|
||||||
m_configChanged(false),
|
m_configChanged(false),
|
||||||
m_sampleRate(0),
|
m_sampleRate(0),
|
||||||
@ -2022,6 +2023,18 @@ void GLScope::connectTimer(const QTimer &timer)
|
|||||||
disconnect(&m_timer, SIGNAL(timeout()), this, SLOT(tick()));
|
disconnect(&m_timer, SIGNAL(timeout()), this, SLOT(tick()));
|
||||||
connect(&timer, SIGNAL(timeout()), this, SLOT(tick()));
|
connect(&timer, SIGNAL(timeout()), this, SLOT(tick()));
|
||||||
m_timer.stop();
|
m_timer.stop();
|
||||||
|
m_masterTimer = &timer;
|
||||||
|
}
|
||||||
|
|
||||||
|
void GLScope::disconnectTimer()
|
||||||
|
{
|
||||||
|
qDebug() << "GLScope::disconnectTimer";
|
||||||
|
|
||||||
|
if (m_masterTimer) {
|
||||||
|
disconnect(m_masterTimer, SIGNAL(timeout()), this, SLOT(tick()));
|
||||||
|
}
|
||||||
|
|
||||||
|
m_masterTimer = nullptr;
|
||||||
}
|
}
|
||||||
|
|
||||||
void GLScope::cleanup()
|
void GLScope::cleanup()
|
||||||
|
@ -55,6 +55,7 @@ public:
|
|||||||
virtual ~GLScope();
|
virtual ~GLScope();
|
||||||
|
|
||||||
void connectTimer(const QTimer& timer);
|
void connectTimer(const QTimer& timer);
|
||||||
|
void disconnectTimer();
|
||||||
|
|
||||||
void setTraces(std::vector<ScopeVis::TraceData>* tracesData, std::vector<float *>* traces);
|
void setTraces(std::vector<ScopeVis::TraceData>* tracesData, std::vector<float *>* traces);
|
||||||
void newTraces(std::vector<float *>* traces, int traceIndex, std::vector<Projector::ProjectionType>* projectionTypes);
|
void newTraces(std::vector<float *>* traces, int traceIndex, std::vector<Projector::ProjectionType>* projectionTypes);
|
||||||
@ -145,6 +146,7 @@ private:
|
|||||||
DisplayMode m_displayMode;
|
DisplayMode m_displayMode;
|
||||||
bool m_displayPolGrid;
|
bool m_displayPolGrid;
|
||||||
QTimer m_timer;
|
QTimer m_timer;
|
||||||
|
const QTimer *m_masterTimer;
|
||||||
QMutex m_mutex;
|
QMutex m_mutex;
|
||||||
QAtomicInt m_dataChanged;
|
QAtomicInt m_dataChanged;
|
||||||
bool m_configChanged;
|
bool m_configChanged;
|
||||||
|
@ -37,6 +37,7 @@ GLSpectrum::GLSpectrum(QWidget* parent) :
|
|||||||
QGLWidget(parent),
|
QGLWidget(parent),
|
||||||
m_cursorState(CSNormal),
|
m_cursorState(CSNormal),
|
||||||
m_cursorChannel(0),
|
m_cursorChannel(0),
|
||||||
|
m_masterTimer(nullptr),
|
||||||
m_mouseInside(false),
|
m_mouseInside(false),
|
||||||
m_changesPending(true),
|
m_changesPending(true),
|
||||||
m_centerFrequency(100000000),
|
m_centerFrequency(100000000),
|
||||||
@ -52,7 +53,7 @@ GLSpectrum::GLSpectrum(QWidget* parent) :
|
|||||||
m_displayTraceIntensity(50),
|
m_displayTraceIntensity(50),
|
||||||
m_invertedWaterfall(false),
|
m_invertedWaterfall(false),
|
||||||
m_displayMaxHold(false),
|
m_displayMaxHold(false),
|
||||||
m_currentSpectrum(0),
|
m_currentSpectrum(nullptr),
|
||||||
m_displayCurrent(false),
|
m_displayCurrent(false),
|
||||||
m_leftMargin(0),
|
m_leftMargin(0),
|
||||||
m_rightMargin(0),
|
m_rightMargin(0),
|
||||||
@ -61,22 +62,22 @@ GLSpectrum::GLSpectrum(QWidget* parent) :
|
|||||||
m_waterfallHeight(0),
|
m_waterfallHeight(0),
|
||||||
m_frequencyScaleHeight(0),
|
m_frequencyScaleHeight(0),
|
||||||
m_bottomMargin(0),
|
m_bottomMargin(0),
|
||||||
m_waterfallBuffer(0),
|
m_waterfallBuffer(nullptr),
|
||||||
m_waterfallBufferPos(0),
|
m_waterfallBufferPos(0),
|
||||||
m_waterfallTextureHeight(-1),
|
m_waterfallTextureHeight(-1),
|
||||||
m_waterfallTexturePos(0),
|
m_waterfallTexturePos(0),
|
||||||
m_displayWaterfall(true),
|
m_displayWaterfall(true),
|
||||||
m_ssbSpectrum(false),
|
m_ssbSpectrum(false),
|
||||||
m_lsbDisplay(false),
|
m_lsbDisplay(false),
|
||||||
m_histogramBuffer(0),
|
m_histogramBuffer(nullptr),
|
||||||
m_histogram(0),
|
m_histogram(nullptr),
|
||||||
m_displayHistogram(true),
|
m_displayHistogram(true),
|
||||||
m_displayChanged(false),
|
m_displayChanged(false),
|
||||||
m_displaySourceOrSink(true),
|
m_displaySourceOrSink(true),
|
||||||
m_displayStreamIndex(0),
|
m_displayStreamIndex(0),
|
||||||
m_matrixLoc(0),
|
m_matrixLoc(0),
|
||||||
m_colorLoc(0),
|
m_colorLoc(0),
|
||||||
m_messageQueueToGUI(0)
|
m_messageQueueToGUI(nullptr)
|
||||||
{
|
{
|
||||||
setAutoFillBackground(false);
|
setAutoFillBackground(false);
|
||||||
setAttribute(Qt::WA_OpaquePaintEvent, true);
|
setAttribute(Qt::WA_OpaquePaintEvent, true);
|
||||||
@ -2281,9 +2282,21 @@ void GLSpectrum::connectTimer(const QTimer& timer)
|
|||||||
qDebug() << "GLSpectrum::connectTimer";
|
qDebug() << "GLSpectrum::connectTimer";
|
||||||
disconnect(&m_timer, SIGNAL(timeout()), this, SLOT(tick()));
|
disconnect(&m_timer, SIGNAL(timeout()), this, SLOT(tick()));
|
||||||
connect(&timer, SIGNAL(timeout()), this, SLOT(tick()));
|
connect(&timer, SIGNAL(timeout()), this, SLOT(tick()));
|
||||||
|
m_masterTimer = &timer;
|
||||||
m_timer.stop();
|
m_timer.stop();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void GLSpectrum::disconnectTimer()
|
||||||
|
{
|
||||||
|
qDebug() << "GLScope::disconnectTimer";
|
||||||
|
|
||||||
|
if (m_masterTimer) {
|
||||||
|
disconnect(m_masterTimer, SIGNAL(timeout()), this, SLOT(tick()));
|
||||||
|
}
|
||||||
|
|
||||||
|
m_masterTimer = nullptr;
|
||||||
|
}
|
||||||
|
|
||||||
void GLSpectrum::cleanup()
|
void GLSpectrum::cleanup()
|
||||||
{
|
{
|
||||||
//makeCurrent();
|
//makeCurrent();
|
||||||
|
@ -108,6 +108,7 @@ public:
|
|||||||
Real getWaterfallShare() const { return m_waterfallShare; }
|
Real getWaterfallShare() const { return m_waterfallShare; }
|
||||||
void setWaterfallShare(Real waterfallShare);
|
void setWaterfallShare(Real waterfallShare);
|
||||||
void connectTimer(const QTimer& timer);
|
void connectTimer(const QTimer& timer);
|
||||||
|
void disconnectTimer();
|
||||||
|
|
||||||
void setDisplayedStream(bool sourceOrSink, int streamIndex)
|
void setDisplayedStream(bool sourceOrSink, int streamIndex)
|
||||||
{
|
{
|
||||||
@ -235,6 +236,7 @@ private:
|
|||||||
int m_cursorChannel;
|
int m_cursorChannel;
|
||||||
|
|
||||||
QTimer m_timer;
|
QTimer m_timer;
|
||||||
|
const QTimer *m_masterTimer;
|
||||||
QMutex m_mutex;
|
QMutex m_mutex;
|
||||||
bool m_mouseInside;
|
bool m_mouseInside;
|
||||||
bool m_changesPending;
|
bool m_changesPending;
|
||||||
|
Loading…
Reference in New Issue
Block a user