mirror of
https://github.com/f4exb/sdrangel.git
synced 2024-11-23 00:18:37 -05:00
TCP source: GUI and source separation phase 1
This commit is contained in:
parent
6e7deef7e0
commit
d3fc8396dd
@ -16,9 +16,13 @@
|
|||||||
|
|
||||||
#include "tcpsrc.h"
|
#include "tcpsrc.h"
|
||||||
|
|
||||||
#include <dsp/downchannelizer.h>
|
|
||||||
#include <QTcpServer>
|
#include <QTcpServer>
|
||||||
#include <QTcpSocket>
|
#include <QTcpSocket>
|
||||||
|
|
||||||
|
#include <dsp/downchannelizer.h>
|
||||||
|
#include "dsp/threadedbasebandsamplesink.h"
|
||||||
|
#include <device/devicesourceapi.h>
|
||||||
|
|
||||||
#include "tcpsrcgui.h"
|
#include "tcpsrcgui.h"
|
||||||
|
|
||||||
MESSAGE_CLASS_DEFINITION(TCPSrc::MsgConfigureTCPSrc, Message)
|
MESSAGE_CLASS_DEFINITION(TCPSrc::MsgConfigureTCPSrc, Message)
|
||||||
@ -26,7 +30,8 @@ MESSAGE_CLASS_DEFINITION(TCPSrc::MsgConfigureChannelizer, Message)
|
|||||||
MESSAGE_CLASS_DEFINITION(TCPSrc::MsgTCPSrcConnection, Message)
|
MESSAGE_CLASS_DEFINITION(TCPSrc::MsgTCPSrcConnection, Message)
|
||||||
MESSAGE_CLASS_DEFINITION(TCPSrc::MsgTCPSrcSpectrum, Message)
|
MESSAGE_CLASS_DEFINITION(TCPSrc::MsgTCPSrcSpectrum, Message)
|
||||||
|
|
||||||
TCPSrc::TCPSrc(BasebandSampleSink* spectrum) :
|
TCPSrc::TCPSrc(DeviceSourceAPI* deviceAPI) :
|
||||||
|
m_deviceAPI(deviceAPI),
|
||||||
m_settingsMutex(QMutex::Recursive)
|
m_settingsMutex(QMutex::Recursive)
|
||||||
{
|
{
|
||||||
setObjectName("TCPSrc");
|
setObjectName("TCPSrc");
|
||||||
@ -40,7 +45,7 @@ TCPSrc::TCPSrc(BasebandSampleSink* spectrum) :
|
|||||||
m_nco.setFreq(0, m_inputSampleRate);
|
m_nco.setFreq(0, m_inputSampleRate);
|
||||||
m_interpolator.create(16, m_inputSampleRate, m_rfBandwidth / 2.0);
|
m_interpolator.create(16, m_inputSampleRate, m_rfBandwidth / 2.0);
|
||||||
m_sampleDistanceRemain = m_inputSampleRate / m_outputSampleRate;
|
m_sampleDistanceRemain = m_inputSampleRate / m_outputSampleRate;
|
||||||
m_spectrum = spectrum;
|
m_spectrum = 0;
|
||||||
m_spectrumEnabled = false;
|
m_spectrumEnabled = false;
|
||||||
m_nextSSBId = 0;
|
m_nextSSBId = 0;
|
||||||
m_nextS16leId = 0;
|
m_nextS16leId = 0;
|
||||||
@ -50,6 +55,11 @@ TCPSrc::TCPSrc(BasebandSampleSink* spectrum) :
|
|||||||
m_scale = 0;
|
m_scale = 0;
|
||||||
m_volume = 0;
|
m_volume = 0;
|
||||||
m_magsq = 0;
|
m_magsq = 0;
|
||||||
|
|
||||||
|
m_channelizer = new DownChannelizer(this);
|
||||||
|
m_threadedChannelizer = new ThreadedBasebandSampleSink(m_channelizer, this);
|
||||||
|
m_deviceAPI->addThreadedSink(m_threadedChannelizer);
|
||||||
|
|
||||||
m_sampleBufferSSB.resize(tcpFftLen);
|
m_sampleBufferSSB.resize(tcpFftLen);
|
||||||
TCPFilter = new fftfilt(0.3 / 48.0, 16.0 / 48.0, tcpFftLen);
|
TCPFilter = new fftfilt(0.3 / 48.0, 16.0 / 48.0, tcpFftLen);
|
||||||
// if (!TCPFilter) segfault;
|
// if (!TCPFilter) segfault;
|
||||||
@ -58,6 +68,10 @@ TCPSrc::TCPSrc(BasebandSampleSink* spectrum) :
|
|||||||
TCPSrc::~TCPSrc()
|
TCPSrc::~TCPSrc()
|
||||||
{
|
{
|
||||||
if (TCPFilter) delete TCPFilter;
|
if (TCPFilter) delete TCPFilter;
|
||||||
|
|
||||||
|
m_deviceAPI->removeThreadedSink(m_threadedChannelizer);
|
||||||
|
delete m_threadedChannelizer;
|
||||||
|
delete m_channelizer;
|
||||||
}
|
}
|
||||||
|
|
||||||
void TCPSrc::setSpectrum(MessageQueue* messageQueue, bool enabled)
|
void TCPSrc::setSpectrum(MessageQueue* messageQueue, bool enabled)
|
||||||
@ -172,8 +186,6 @@ void TCPSrc::stop()
|
|||||||
|
|
||||||
bool TCPSrc::handleMessage(const Message& cmd)
|
bool TCPSrc::handleMessage(const Message& cmd)
|
||||||
{
|
{
|
||||||
qDebug() << "TCPSrc::handleMessage";
|
|
||||||
|
|
||||||
if (DownChannelizer::MsgChannelizerNotification::match(cmd))
|
if (DownChannelizer::MsgChannelizerNotification::match(cmd))
|
||||||
{
|
{
|
||||||
DownChannelizer::MsgChannelizerNotification& notif = (DownChannelizer::MsgChannelizerNotification&) cmd;
|
DownChannelizer::MsgChannelizerNotification& notif = (DownChannelizer::MsgChannelizerNotification&) cmd;
|
||||||
@ -192,6 +204,20 @@ bool TCPSrc::handleMessage(const Message& cmd)
|
|||||||
|
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
else if (MsgConfigureChannelizer::match(cmd))
|
||||||
|
{
|
||||||
|
MsgConfigureChannelizer& cfg = (MsgConfigureChannelizer&) cmd;
|
||||||
|
|
||||||
|
m_channelizer->configure(m_channelizer->getInputMessageQueue(),
|
||||||
|
cfg.getSampleRate(),
|
||||||
|
cfg.getCenterFrequency());
|
||||||
|
|
||||||
|
qDebug() << "TCPSrc::handleMessage: MsgConfigureChannelizer:"
|
||||||
|
<< " sampleRate: " << cfg.getSampleRate()
|
||||||
|
<< " centerFrequency: " << cfg.getCenterFrequency();
|
||||||
|
|
||||||
|
return true;
|
||||||
|
}
|
||||||
else if (MsgConfigureTCPSrc::match(cmd))
|
else if (MsgConfigureTCPSrc::match(cmd))
|
||||||
{
|
{
|
||||||
MsgConfigureTCPSrc& cfg = (MsgConfigureTCPSrc&) cmd;
|
MsgConfigureTCPSrc& cfg = (MsgConfigureTCPSrc&) cmd;
|
||||||
@ -235,7 +261,7 @@ bool TCPSrc::handleMessage(const Message& cmd)
|
|||||||
|
|
||||||
m_settingsMutex.unlock();
|
m_settingsMutex.unlock();
|
||||||
|
|
||||||
qDebug() << "MsgConfigureTCPSrc::handleMessage: MsgConfigureTCPSrc:"
|
qDebug() << "TCPSrc::handleMessage: MsgConfigureTCPSrc:"
|
||||||
<< " m_sampleFormat: " << m_sampleFormat
|
<< " m_sampleFormat: " << m_sampleFormat
|
||||||
<< " m_outputSampleRate: " << m_outputSampleRate
|
<< " m_outputSampleRate: " << m_outputSampleRate
|
||||||
<< " m_rfBandwidth: " << m_rfBandwidth
|
<< " m_rfBandwidth: " << m_rfBandwidth
|
||||||
@ -251,7 +277,7 @@ bool TCPSrc::handleMessage(const Message& cmd)
|
|||||||
|
|
||||||
m_spectrumEnabled = spc.getEnabled();
|
m_spectrumEnabled = spc.getEnabled();
|
||||||
|
|
||||||
qDebug() << " - MsgTCPSrcSpectrum: m_spectrumEnabled: " << m_spectrumEnabled;
|
qDebug() << "TCPSrc::handleMessage: MsgTCPSrcSpectrum: m_spectrumEnabled: " << m_spectrumEnabled;
|
||||||
|
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
@ -259,6 +285,12 @@ bool TCPSrc::handleMessage(const Message& cmd)
|
|||||||
{
|
{
|
||||||
MsgTCPSrcConnection& con = (MsgTCPSrcConnection&) cmd;
|
MsgTCPSrcConnection& con = (MsgTCPSrcConnection&) cmd;
|
||||||
|
|
||||||
|
qDebug() << "TCPSrc::handleMessage: MsgTCPSrcConnection"
|
||||||
|
<< " connect: " << con.getConnect()
|
||||||
|
<< " id: " << con.getID()
|
||||||
|
<< " peer address: " << con.getPeerAddress()
|
||||||
|
<< " peer port: " << con.getPeerPort();
|
||||||
|
|
||||||
if (con.getConnect())
|
if (con.getConnect())
|
||||||
{
|
{
|
||||||
processNewConnection();
|
processNewConnection();
|
||||||
|
@ -17,6 +17,9 @@
|
|||||||
class QTcpServer;
|
class QTcpServer;
|
||||||
class QTcpSocket;
|
class QTcpSocket;
|
||||||
class TCPSrcGUI;
|
class TCPSrcGUI;
|
||||||
|
class DeviceSourceAPI;
|
||||||
|
class ThreadedBasebandSampleSink;
|
||||||
|
class DownChannelizer;
|
||||||
|
|
||||||
class TCPSrc : public BasebandSampleSink {
|
class TCPSrc : public BasebandSampleSink {
|
||||||
Q_OBJECT
|
Q_OBJECT
|
||||||
@ -98,8 +101,9 @@ public:
|
|||||||
{ }
|
{ }
|
||||||
};
|
};
|
||||||
|
|
||||||
TCPSrc(BasebandSampleSink* spectrum);
|
TCPSrc(DeviceSourceAPI* m_deviceAPI);
|
||||||
virtual ~TCPSrc();
|
virtual ~TCPSrc();
|
||||||
|
void setSpectrum(BasebandSampleSink* spectrum) { m_spectrum = spectrum; }
|
||||||
|
|
||||||
void setSpectrum(MessageQueue* messageQueue, bool enabled);
|
void setSpectrum(MessageQueue* messageQueue, bool enabled);
|
||||||
double getMagSq() const { return m_magsq; }
|
double getMagSq() const { return m_magsq; }
|
||||||
@ -150,6 +154,9 @@ protected:
|
|||||||
};
|
};
|
||||||
|
|
||||||
TCPSrcSettings m_settings;
|
TCPSrcSettings m_settings;
|
||||||
|
DeviceSourceAPI* m_deviceAPI;
|
||||||
|
ThreadedBasebandSampleSink* m_threadedChannelizer;
|
||||||
|
DownChannelizer* m_channelizer;
|
||||||
|
|
||||||
int m_inputSampleRate;
|
int m_inputSampleRate;
|
||||||
|
|
||||||
|
@ -1,8 +1,6 @@
|
|||||||
#include "../../channelrx/tcpsrc/tcpsrcgui.h"
|
#include "tcpsrcgui.h"
|
||||||
|
|
||||||
#include <device/devicesourceapi.h>
|
#include <device/devicesourceapi.h>
|
||||||
#include <dsp/downchannelizer.h>
|
|
||||||
#include "../../../sdrbase/dsp/threadedbasebandsamplesink.h"
|
|
||||||
#include "plugin/pluginapi.h"
|
#include "plugin/pluginapi.h"
|
||||||
#include "dsp/spectrumvis.h"
|
#include "dsp/spectrumvis.h"
|
||||||
#include "dsp/dspengine.h"
|
#include "dsp/dspengine.h"
|
||||||
@ -11,7 +9,7 @@
|
|||||||
#include "gui/basicchannelsettingswidget.h"
|
#include "gui/basicchannelsettingswidget.h"
|
||||||
#include "ui_tcpsrcgui.h"
|
#include "ui_tcpsrcgui.h"
|
||||||
#include "mainwindow.h"
|
#include "mainwindow.h"
|
||||||
#include "../../channelrx/tcpsrc/tcpsrc.h"
|
#include "tcpsrc.h"
|
||||||
|
|
||||||
const QString TCPSrcGUI::m_channelID = "sdrangel.channel.tcpsrc";
|
const QString TCPSrcGUI::m_channelID = "sdrangel.channel.tcpsrc";
|
||||||
|
|
||||||
@ -142,10 +140,8 @@ TCPSrcGUI::TCPSrcGUI(PluginAPI* pluginAPI, DeviceSourceAPI *deviceAPI, QWidget*
|
|||||||
setAttribute(Qt::WA_DeleteOnClose, true);
|
setAttribute(Qt::WA_DeleteOnClose, true);
|
||||||
|
|
||||||
m_spectrumVis = new SpectrumVis(ui->glSpectrum);
|
m_spectrumVis = new SpectrumVis(ui->glSpectrum);
|
||||||
m_tcpSrc = new TCPSrc(m_spectrumVis);
|
m_tcpSrc = new TCPSrc(m_deviceAPI);
|
||||||
m_channelizer = new DownChannelizer(m_tcpSrc);
|
m_tcpSrc->setSpectrum(m_spectrumVis);
|
||||||
m_threadedChannelizer = new ThreadedBasebandSampleSink(m_channelizer, this);
|
|
||||||
m_deviceAPI->addThreadedSink(m_threadedChannelizer);
|
|
||||||
|
|
||||||
ui->deltaFrequencyLabel->setText(QString("%1f").arg(QChar(0x94, 0x03)));
|
ui->deltaFrequencyLabel->setText(QString("%1f").arg(QChar(0x94, 0x03)));
|
||||||
ui->deltaFrequency->setColorMapper(ColorMapper(ColorMapper::GrayGold));
|
ui->deltaFrequency->setColorMapper(ColorMapper(ColorMapper::GrayGold));
|
||||||
@ -174,15 +170,15 @@ TCPSrcGUI::TCPSrcGUI(PluginAPI* pluginAPI, DeviceSourceAPI *deviceAPI, QWidget*
|
|||||||
|
|
||||||
ui->spectrumGUI->setBuddies(m_spectrumVis->getInputMessageQueue(), m_spectrumVis, ui->glSpectrum);
|
ui->spectrumGUI->setBuddies(m_spectrumVis->getInputMessageQueue(), m_spectrumVis, ui->glSpectrum);
|
||||||
|
|
||||||
applySettings();
|
m_settings.setSpectrumGUI(ui->spectrumGUI);
|
||||||
|
m_settings.setChannelMarker(&m_channelMarker);
|
||||||
|
|
||||||
|
applySettings();
|
||||||
}
|
}
|
||||||
|
|
||||||
TCPSrcGUI::~TCPSrcGUI()
|
TCPSrcGUI::~TCPSrcGUI()
|
||||||
{
|
{
|
||||||
m_deviceAPI->removeChannelInstance(this);
|
m_deviceAPI->removeChannelInstance(this);
|
||||||
m_deviceAPI->removeThreadedSink(m_threadedChannelizer);
|
|
||||||
delete m_threadedChannelizer;
|
|
||||||
delete m_channelizer;
|
|
||||||
delete m_tcpSrc;
|
delete m_tcpSrc;
|
||||||
delete m_spectrumVis;
|
delete m_spectrumVis;
|
||||||
delete ui;
|
delete ui;
|
||||||
@ -199,9 +195,9 @@ void TCPSrcGUI::applySettings()
|
|||||||
{
|
{
|
||||||
ui->glSpectrum->setSampleRate(m_settings.m_outputSampleRate);
|
ui->glSpectrum->setSampleRate(m_settings.m_outputSampleRate);
|
||||||
|
|
||||||
m_channelizer->configure(m_channelizer->getInputMessageQueue(),
|
TCPSrc::MsgConfigureChannelizer* channelConfigMsg = TCPSrc::MsgConfigureChannelizer::create(
|
||||||
m_settings.m_outputSampleRate,
|
m_settings.m_outputSampleRate, m_channelMarker.getCenterFrequency());
|
||||||
m_channelMarker.getCenterFrequency());
|
m_tcpSrc->getInputMessageQueue()->push(channelConfigMsg);
|
||||||
|
|
||||||
TCPSrc::MsgConfigureTCPSrc* message = TCPSrc::MsgConfigureTCPSrc::create( m_settings, false);
|
TCPSrc::MsgConfigureTCPSrc* message = TCPSrc::MsgConfigureTCPSrc::create( m_settings, false);
|
||||||
m_tcpSrc->getInputMessageQueue()->push(message);
|
m_tcpSrc->getInputMessageQueue()->push(message);
|
||||||
|
@ -14,8 +14,6 @@
|
|||||||
|
|
||||||
class PluginAPI;
|
class PluginAPI;
|
||||||
class DeviceSourceAPI;
|
class DeviceSourceAPI;
|
||||||
class ThreadedBasebandSampleSink;
|
|
||||||
class DownChannelizer;
|
|
||||||
class TCPSrc;
|
class TCPSrc;
|
||||||
class SpectrumVis;
|
class SpectrumVis;
|
||||||
|
|
||||||
@ -76,8 +74,6 @@ private:
|
|||||||
bool m_doApplySettings;
|
bool m_doApplySettings;
|
||||||
|
|
||||||
// RF path
|
// RF path
|
||||||
ThreadedBasebandSampleSink* m_threadedChannelizer;
|
|
||||||
DownChannelizer* m_channelizer;
|
|
||||||
SpectrumVis* m_spectrumVis;
|
SpectrumVis* m_spectrumVis;
|
||||||
MessageQueue m_inputMessageQueue;
|
MessageQueue m_inputMessageQueue;
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user