mirror of
https://github.com/f4exb/sdrangel.git
synced 2025-07-03 01:15:21 -04:00
Small sequence of calls re-org in Main Window. Better debug messages
This commit is contained in:
parent
af8602a4d9
commit
058fcdc4e1
@ -27,7 +27,7 @@ BladerfThread::BladerfThread(struct bladerf* dev, SampleFifo* sampleFifo, QObjec
|
|||||||
m_dev(dev),
|
m_dev(dev),
|
||||||
m_convertBuffer(BLADERF_BLOCKSIZE),
|
m_convertBuffer(BLADERF_BLOCKSIZE),
|
||||||
m_sampleFifo(sampleFifo),
|
m_sampleFifo(sampleFifo),
|
||||||
m_samplerate(3072000),
|
m_samplerate(10),
|
||||||
m_log2Decim(0),
|
m_log2Decim(0),
|
||||||
m_fcPos(0)
|
m_fcPos(0)
|
||||||
{
|
{
|
||||||
|
@ -6,10 +6,10 @@
|
|||||||
|
|
||||||
Channelizer::Channelizer(SampleSink* sampleSink) :
|
Channelizer::Channelizer(SampleSink* sampleSink) :
|
||||||
m_sampleSink(sampleSink),
|
m_sampleSink(sampleSink),
|
||||||
m_inputSampleRate(100000),
|
m_inputSampleRate(10),
|
||||||
m_requestedOutputSampleRate(100000),
|
m_requestedOutputSampleRate(10),
|
||||||
m_requestedCenterFrequency(0),
|
m_requestedCenterFrequency(0),
|
||||||
m_currentOutputSampleRate(100000),
|
m_currentOutputSampleRate(0),
|
||||||
m_currentCenterFrequency(0)
|
m_currentCenterFrequency(0)
|
||||||
{
|
{
|
||||||
}
|
}
|
||||||
@ -62,34 +62,50 @@ void Channelizer::stop()
|
|||||||
|
|
||||||
bool Channelizer::handleMessage(Message* cmd)
|
bool Channelizer::handleMessage(Message* cmd)
|
||||||
{
|
{
|
||||||
if(DSPSignalNotification::match(cmd)) {
|
if (DSPSignalNotification::match(cmd))
|
||||||
|
{
|
||||||
DSPSignalNotification* signal = (DSPSignalNotification*)cmd;
|
DSPSignalNotification* signal = (DSPSignalNotification*)cmd;
|
||||||
m_inputSampleRate = signal->getSampleRate();
|
m_inputSampleRate = signal->getSampleRate();
|
||||||
|
qDebug() << "Channelizer::handleMessage: DSPSignalNotification: m_inputSampleRate: " << m_inputSampleRate;
|
||||||
applyConfiguration();
|
applyConfiguration();
|
||||||
cmd->completed();
|
cmd->completed();
|
||||||
if(m_sampleSink != NULL) {
|
if(m_sampleSink != NULL)
|
||||||
|
{
|
||||||
signal = DSPSignalNotification::create(m_currentOutputSampleRate, m_currentCenterFrequency);
|
signal = DSPSignalNotification::create(m_currentOutputSampleRate, m_currentCenterFrequency);
|
||||||
if(!m_sampleSink->handleMessage(signal))
|
if(!m_sampleSink->handleMessage(signal)) {
|
||||||
signal->completed();
|
signal->completed();
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
emit inputSampleRateChanged();
|
emit inputSampleRateChanged();
|
||||||
return true;
|
return true;
|
||||||
} else if(DSPConfigureChannelizer::match(cmd)) {
|
}
|
||||||
|
else if (DSPConfigureChannelizer::match(cmd))
|
||||||
|
{
|
||||||
DSPConfigureChannelizer* chan = (DSPConfigureChannelizer*)cmd;
|
DSPConfigureChannelizer* chan = (DSPConfigureChannelizer*)cmd;
|
||||||
m_requestedOutputSampleRate = chan->getSampleRate();
|
m_requestedOutputSampleRate = chan->getSampleRate();
|
||||||
m_requestedCenterFrequency = chan->getCenterFrequency();
|
m_requestedCenterFrequency = chan->getCenterFrequency();
|
||||||
|
qDebug() << "Channelizer::handleMessage: DSPConfigureChannelizer:"
|
||||||
|
<< " m_requestedOutputSampleRate: " << m_requestedOutputSampleRate
|
||||||
|
<< " m_requestedCenterFrequency: " << m_requestedCenterFrequency;
|
||||||
applyConfiguration();
|
applyConfiguration();
|
||||||
cmd->completed();
|
cmd->completed();
|
||||||
if(m_sampleSink != NULL) {
|
if(m_sampleSink != NULL)
|
||||||
|
{
|
||||||
DSPSignalNotification* signal = DSPSignalNotification::create(m_currentOutputSampleRate, m_currentCenterFrequency);
|
DSPSignalNotification* signal = DSPSignalNotification::create(m_currentOutputSampleRate, m_currentCenterFrequency);
|
||||||
if(!m_sampleSink->handleMessage(signal))
|
if(!m_sampleSink->handleMessage(signal)) {
|
||||||
signal->completed();
|
signal->completed();
|
||||||
}
|
}
|
||||||
|
}
|
||||||
return true;
|
return true;
|
||||||
} else {
|
}
|
||||||
if(m_sampleSink != NULL)
|
else
|
||||||
|
{
|
||||||
|
if(m_sampleSink != NULL) {
|
||||||
return m_sampleSink->handleMessage(cmd);
|
return m_sampleSink->handleMessage(cmd);
|
||||||
else return false;
|
} else {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -16,6 +16,7 @@
|
|||||||
///////////////////////////////////////////////////////////////////////////////////
|
///////////////////////////////////////////////////////////////////////////////////
|
||||||
|
|
||||||
#include <stdio.h>
|
#include <stdio.h>
|
||||||
|
#include <QDebug>
|
||||||
#include "dsp/dspengine.h"
|
#include "dsp/dspengine.h"
|
||||||
#include "dsp/channelizer.h"
|
#include "dsp/channelizer.h"
|
||||||
#include "dsp/samplefifo.h"
|
#include "dsp/samplefifo.h"
|
||||||
@ -25,6 +26,8 @@
|
|||||||
|
|
||||||
DSPEngine::DSPEngine(QObject* parent) :
|
DSPEngine::DSPEngine(QObject* parent) :
|
||||||
QThread(parent),
|
QThread(parent),
|
||||||
|
m_messageQueue(),
|
||||||
|
m_reportQueue(),
|
||||||
m_state(StNotStarted),
|
m_state(StNotStarted),
|
||||||
m_sampleSource(NULL),
|
m_sampleSource(NULL),
|
||||||
m_sampleSinks(),
|
m_sampleSinks(),
|
||||||
@ -54,6 +57,7 @@ DSPEngine *DSPEngine::instance()
|
|||||||
|
|
||||||
void DSPEngine::start()
|
void DSPEngine::start()
|
||||||
{
|
{
|
||||||
|
qDebug() << "DSPEngine::start";
|
||||||
DSPPing cmd;
|
DSPPing cmd;
|
||||||
QThread::start();
|
QThread::start();
|
||||||
cmd.execute(&m_messageQueue);
|
cmd.execute(&m_messageQueue);
|
||||||
@ -61,6 +65,7 @@ void DSPEngine::start()
|
|||||||
|
|
||||||
void DSPEngine::stop()
|
void DSPEngine::stop()
|
||||||
{
|
{
|
||||||
|
qDebug() << "DSPEngine::stop";
|
||||||
DSPExit cmd;
|
DSPExit cmd;
|
||||||
cmd.execute(&m_messageQueue);
|
cmd.execute(&m_messageQueue);
|
||||||
}
|
}
|
||||||
@ -131,6 +136,8 @@ QString DSPEngine::deviceDescription()
|
|||||||
|
|
||||||
void DSPEngine::run()
|
void DSPEngine::run()
|
||||||
{
|
{
|
||||||
|
qDebug() << "DSPEngine::run";
|
||||||
|
|
||||||
connect(&m_messageQueue, SIGNAL(messageEnqueued()), this, SLOT(handleMessages()), Qt::QueuedConnection);
|
connect(&m_messageQueue, SIGNAL(messageEnqueued()), this, SLOT(handleMessages()), Qt::QueuedConnection);
|
||||||
|
|
||||||
m_state = StIdle;
|
m_state = StIdle;
|
||||||
@ -386,71 +393,113 @@ void DSPEngine::handleMessages()
|
|||||||
{
|
{
|
||||||
Message* message;
|
Message* message;
|
||||||
while((message = m_messageQueue.accept()) != NULL) {
|
while((message = m_messageQueue.accept()) != NULL) {
|
||||||
qDebug("Message: %s", message->getIdentifier());
|
qDebug("DSPEngine::handleMessages: Message: %s", message->getIdentifier());
|
||||||
|
|
||||||
if(DSPPing::match(message)) {
|
if (DSPPing::match(message))
|
||||||
|
{
|
||||||
message->completed(m_state);
|
message->completed(m_state);
|
||||||
} else if(DSPExit::match(message)) {
|
}
|
||||||
|
else if (DSPExit::match(message))
|
||||||
|
{
|
||||||
gotoIdle();
|
gotoIdle();
|
||||||
m_state = StNotStarted;
|
m_state = StNotStarted;
|
||||||
exit();
|
exit();
|
||||||
message->completed(m_state);
|
message->completed(m_state);
|
||||||
} else if(DSPAcquisitionStart::match(message)) {
|
}
|
||||||
|
else if (DSPAcquisitionStart::match(message))
|
||||||
|
{
|
||||||
m_state = gotoIdle();
|
m_state = gotoIdle();
|
||||||
if(m_state == StIdle)
|
if(m_state == StIdle) {
|
||||||
m_state = gotoRunning();
|
m_state = gotoRunning();
|
||||||
|
}
|
||||||
message->completed(m_state);
|
message->completed(m_state);
|
||||||
} else if(DSPAcquisitionStop::match(message)) {
|
}
|
||||||
|
else if (DSPAcquisitionStop::match(message))
|
||||||
|
{
|
||||||
m_state = gotoIdle();
|
m_state = gotoIdle();
|
||||||
message->completed(m_state);
|
message->completed(m_state);
|
||||||
} else if(DSPGetDeviceDescription::match(message)) {
|
}
|
||||||
|
else if (DSPGetDeviceDescription::match(message))
|
||||||
|
{
|
||||||
((DSPGetDeviceDescription*)message)->setDeviceDescription(m_deviceDescription);
|
((DSPGetDeviceDescription*)message)->setDeviceDescription(m_deviceDescription);
|
||||||
message->completed();
|
message->completed();
|
||||||
} else if(DSPGetErrorMessage::match(message)) {
|
}
|
||||||
|
else if (DSPGetErrorMessage::match(message))
|
||||||
|
{
|
||||||
((DSPGetErrorMessage*)message)->setErrorMessage(m_errorMessage);
|
((DSPGetErrorMessage*)message)->setErrorMessage(m_errorMessage);
|
||||||
message->completed();
|
message->completed();
|
||||||
} else if(DSPSetSource::match(message)) {
|
}
|
||||||
|
else if (DSPSetSource::match(message)) {
|
||||||
handleSetSource(((DSPSetSource*)message)->getSampleSource());
|
handleSetSource(((DSPSetSource*)message)->getSampleSource());
|
||||||
message->completed();
|
message->completed();
|
||||||
} else if(DSPAddSink::match(message)) {
|
}
|
||||||
|
else if (DSPAddSink::match(message))
|
||||||
|
{
|
||||||
SampleSink* sink = ((DSPAddSink*)message)->getSampleSink();
|
SampleSink* sink = ((DSPAddSink*)message)->getSampleSink();
|
||||||
if(m_state == StRunning) {
|
|
||||||
|
if(m_state == StRunning)
|
||||||
|
{
|
||||||
DSPSignalNotification* signal = DSPSignalNotification::create(m_sampleRate, 0);
|
DSPSignalNotification* signal = DSPSignalNotification::create(m_sampleRate, 0);
|
||||||
signal->submit(&m_messageQueue, sink);
|
signal->submit(&m_messageQueue, sink);
|
||||||
sink->start();
|
sink->start();
|
||||||
}
|
}
|
||||||
|
|
||||||
m_sampleSinks.push_back(sink);
|
m_sampleSinks.push_back(sink);
|
||||||
message->completed();
|
message->completed();
|
||||||
} else if(DSPRemoveSink::match(message)) {
|
}
|
||||||
|
else if (DSPRemoveSink::match(message))
|
||||||
|
{
|
||||||
SampleSink* sink = ((DSPAddSink*)message)->getSampleSink();
|
SampleSink* sink = ((DSPAddSink*)message)->getSampleSink();
|
||||||
if(m_state == StRunning)
|
|
||||||
|
if(m_state == StRunning) {
|
||||||
sink->stop();
|
sink->stop();
|
||||||
|
}
|
||||||
|
|
||||||
m_sampleSinks.remove(sink);
|
m_sampleSinks.remove(sink);
|
||||||
message->completed();
|
message->completed();
|
||||||
} else if(DSPAddAudioSource::match(message)) {
|
}
|
||||||
|
else if (DSPAddAudioSource::match(message))
|
||||||
|
{
|
||||||
m_audioOutput.addFifo(((DSPAddAudioSource*)message)->getAudioFifo());
|
m_audioOutput.addFifo(((DSPAddAudioSource*)message)->getAudioFifo());
|
||||||
message->completed();
|
message->completed();
|
||||||
} else if(DSPRemoveAudioSource::match(message)) {
|
}
|
||||||
|
else if (DSPRemoveAudioSource::match(message))
|
||||||
|
{
|
||||||
m_audioOutput.removeFifo(((DSPAddAudioSource*)message)->getAudioFifo());
|
m_audioOutput.removeFifo(((DSPAddAudioSource*)message)->getAudioFifo());
|
||||||
message->completed();
|
message->completed();
|
||||||
} else if(DSPConfigureCorrection::match(message)) {
|
}
|
||||||
|
else if (DSPConfigureCorrection::match(message))
|
||||||
|
{
|
||||||
DSPConfigureCorrection* conf = (DSPConfigureCorrection*)message;
|
DSPConfigureCorrection* conf = (DSPConfigureCorrection*)message;
|
||||||
m_iqImbalanceCorrection = conf->getIQImbalanceCorrection();
|
m_iqImbalanceCorrection = conf->getIQImbalanceCorrection();
|
||||||
if(m_dcOffsetCorrection != conf->getDCOffsetCorrection()) {
|
|
||||||
|
if(m_dcOffsetCorrection != conf->getDCOffsetCorrection())
|
||||||
|
{
|
||||||
m_dcOffsetCorrection = conf->getDCOffsetCorrection();
|
m_dcOffsetCorrection = conf->getDCOffsetCorrection();
|
||||||
m_iOffset = 0;
|
m_iOffset = 0;
|
||||||
m_qOffset = 0;
|
m_qOffset = 0;
|
||||||
}
|
}
|
||||||
if(m_iqImbalanceCorrection != conf->getIQImbalanceCorrection()) {
|
|
||||||
|
if(m_iqImbalanceCorrection != conf->getIQImbalanceCorrection())
|
||||||
|
{
|
||||||
m_iqImbalanceCorrection = conf->getIQImbalanceCorrection();
|
m_iqImbalanceCorrection = conf->getIQImbalanceCorrection();
|
||||||
m_iRange = 1 << 16;
|
m_iRange = 1 << 16;
|
||||||
m_qRange = 1 << 16;
|
m_qRange = 1 << 16;
|
||||||
m_imbalance = 65536;
|
m_imbalance = 65536;
|
||||||
}
|
}
|
||||||
|
|
||||||
message->completed();
|
message->completed();
|
||||||
} else {
|
}
|
||||||
if(!distributeMessage(message))
|
else
|
||||||
|
{
|
||||||
|
if (DSPSignalNotification::match(message))
|
||||||
|
{
|
||||||
|
DSPSignalNotification *conf = (DSPSignalNotification*)message;
|
||||||
|
qDebug() << " (" << conf->getSampleRate() << "," << conf->getFrequencyOffset() << ")";
|
||||||
|
}
|
||||||
|
if(!distributeMessage(message)) {
|
||||||
message->completed();
|
message->completed();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
@ -85,7 +85,7 @@ void ThreadedSampleSink::handleMessages()
|
|||||||
{
|
{
|
||||||
Message* message;
|
Message* message;
|
||||||
while((message = m_messageQueue.accept()) != NULL) {
|
while((message = m_messageQueue.accept()) != NULL) {
|
||||||
qDebug("CMD: %s", message->getIdentifier());
|
qDebug("ThreadedSampleSink::handleMessages: %s", message->getIdentifier());
|
||||||
if(m_sampleSink != NULL) {
|
if(m_sampleSink != NULL) {
|
||||||
if(!m_sampleSink->handleMessage(message))
|
if(!m_sampleSink->handleMessage(message))
|
||||||
message->completed();
|
message->completed();
|
||||||
|
@ -54,6 +54,7 @@ MainWindow::MainWindow(QWidget* parent) :
|
|||||||
m_sampleFileName(std::string("./test.sdriq")),
|
m_sampleFileName(std::string("./test.sdriq")),
|
||||||
m_pluginManager(new PluginManager(this, m_dspEngine))
|
m_pluginManager(new PluginManager(this, m_dspEngine))
|
||||||
{
|
{
|
||||||
|
connect(m_dspEngine->getReportQueue(), SIGNAL(messageEnqueued()), this, SLOT(handleDSPMessages()), Qt::QueuedConnection);
|
||||||
m_dspEngine->start();
|
m_dspEngine->start();
|
||||||
|
|
||||||
ui->setupUi(this);
|
ui->setupUi(this);
|
||||||
@ -85,7 +86,7 @@ MainWindow::MainWindow(QWidget* parent) :
|
|||||||
ui->menu_Window->addAction(ui->channelDock->toggleViewAction());
|
ui->menu_Window->addAction(ui->channelDock->toggleViewAction());
|
||||||
|
|
||||||
connect(m_messageQueue, SIGNAL(messageEnqueued()), this, SLOT(handleMessages()), Qt::QueuedConnection);
|
connect(m_messageQueue, SIGNAL(messageEnqueued()), this, SLOT(handleMessages()), Qt::QueuedConnection);
|
||||||
connect(m_dspEngine->getReportQueue(), SIGNAL(messageEnqueued()), this, SLOT(handleDSPMessages()), Qt::QueuedConnection);
|
//connect(m_dspEngine->getReportQueue(), SIGNAL(messageEnqueued()), this, SLOT(handleDSPMessages()), Qt::QueuedConnection);
|
||||||
|
|
||||||
connect(&m_statusTimer, SIGNAL(timeout()), this, SLOT(updateStatus()));
|
connect(&m_statusTimer, SIGNAL(timeout()), this, SLOT(updateStatus()));
|
||||||
m_statusTimer.start(500);
|
m_statusTimer.start(500);
|
||||||
|
Loading…
x
Reference in New Issue
Block a user