From 6e7deef7e0c04408c8acbbc64a067265626b54d2 Mon Sep 17 00:00:00 2001 From: f4exb Date: Sat, 7 Oct 2017 11:07:46 +0200 Subject: [PATCH] TCP source: removed references to GUI and main window in sources and restore TCP socket processing --- plugins/channelrx/tcpsrc/tcpsrc.cpp | 45 ++++++++++++++----- plugins/channelrx/tcpsrc/tcpsrc.h | 62 +++++++++++++------------- plugins/channelrx/tcpsrc/tcpsrcgui.cpp | 4 +- 3 files changed, 65 insertions(+), 46 deletions(-) diff --git a/plugins/channelrx/tcpsrc/tcpsrc.cpp b/plugins/channelrx/tcpsrc/tcpsrc.cpp index ac3c0e062..c87dc5432 100644 --- a/plugins/channelrx/tcpsrc/tcpsrc.cpp +++ b/plugins/channelrx/tcpsrc/tcpsrc.cpp @@ -26,7 +26,7 @@ MESSAGE_CLASS_DEFINITION(TCPSrc::MsgConfigureChannelizer, Message) MESSAGE_CLASS_DEFINITION(TCPSrc::MsgTCPSrcConnection, Message) MESSAGE_CLASS_DEFINITION(TCPSrc::MsgTCPSrcSpectrum, Message) -TCPSrc::TCPSrc(MessageQueue* uiMessageQueue, BasebandSampleSink* spectrum) : +TCPSrc::TCPSrc(BasebandSampleSink* spectrum) : m_settingsMutex(QMutex::Recursive) { setObjectName("TCPSrc"); @@ -40,7 +40,6 @@ TCPSrc::TCPSrc(MessageQueue* uiMessageQueue, BasebandSampleSink* spectrum) : m_nco.setFreq(0, m_inputSampleRate); m_interpolator.create(16, m_inputSampleRate, m_rfBandwidth / 2.0); m_sampleDistanceRemain = m_inputSampleRate / m_outputSampleRate; - m_uiMessageQueue = uiMessageQueue; m_spectrum = spectrum; m_spectrumEnabled = false; m_nextSSBId = 0; @@ -289,12 +288,16 @@ void TCPSrc::closeAllSockets(Sockets* sockets) for(int i = 0; i < sockets->count(); ++i) { MsgTCPSrcConnection* msg = MsgTCPSrcConnection::create(false, sockets->at(i).id, QHostAddress(), 0); - m_uiMessageQueue->push(msg); + getInputMessageQueue()->push(msg); + + if (getMessageQueueToGUI()) { // Propagate to GUI + getMessageQueueToGUI()->push(msg); + } + sockets->at(i).socket->close(); } } - void TCPSrc::onNewConnection() { qDebug("TCPSrc::onNewConnection"); @@ -318,10 +321,15 @@ void TCPSrc::processNewConnection() case TCPSrcSettings::FormatSSB: { quint32 id = (TCPSrcSettings::FormatSSB << 24) | m_nextSSBId; - MsgTCPSrcConnection* msg = MsgTCPSrcConnection::create(true, id, connection->peerAddress(), connection->peerPort()); m_nextSSBId = (m_nextSSBId + 1) & 0xffffff; m_ssbSockets.push_back(Socket(id, connection)); - m_uiMessageQueue->push(msg); + + if (getMessageQueueToGUI()) // Notify GUI of peer details + { + MsgTCPSrcConnection* msg = MsgTCPSrcConnection::create(true, id, connection->peerAddress(), connection->peerPort()); + getMessageQueueToGUI()->push(msg); + } + break; } @@ -329,10 +337,15 @@ void TCPSrc::processNewConnection() { qDebug("TCPSrc::processNewConnection: establish new S16LE connection"); quint32 id = (TCPSrcSettings::FormatS16LE << 24) | m_nextS16leId; - MsgTCPSrcConnection* msg = MsgTCPSrcConnection::create(true, id, connection->peerAddress(), connection->peerPort()); m_nextS16leId = (m_nextS16leId + 1) & 0xffffff; m_s16leSockets.push_back(Socket(id, connection)); - m_uiMessageQueue->push(msg); + + if (getMessageQueueToGUI()) // Notify GUI of peer details + { + MsgTCPSrcConnection* msg = MsgTCPSrcConnection::create(true, id, connection->peerAddress(), connection->peerPort()); + getMessageQueueToGUI()->push(msg); + } + break; } @@ -348,6 +361,11 @@ void TCPSrc::onDisconnected() qDebug("TCPSrc::onDisconnected"); MsgTCPSrcConnection *cmd = MsgTCPSrcConnection::create(false, 0, QHostAddress::Any, 0); getInputMessageQueue()->push(cmd); + + if (getMessageQueueToGUI()) { // Propagate to GUI + getMessageQueueToGUI()->push(cmd); + } + } void TCPSrc::processDeconnection() @@ -388,9 +406,14 @@ void TCPSrc::processDeconnection() if(socket != 0) { - MsgTCPSrcConnection* msg = MsgTCPSrcConnection::create(false, id, QHostAddress(), 0); - m_uiMessageQueue->push(msg); - socket->deleteLater(); + MsgTCPSrcConnection* msg = MsgTCPSrcConnection::create(false, id, QHostAddress(), 0); + getInputMessageQueue()->push(msg); + + if (getMessageQueueToGUI()) { // Propagate to GUI + getMessageQueueToGUI()->push(msg); + } + + socket->deleteLater(); } } diff --git a/plugins/channelrx/tcpsrc/tcpsrc.h b/plugins/channelrx/tcpsrc/tcpsrc.h index 2c1839b1a..212a424b7 100644 --- a/plugins/channelrx/tcpsrc/tcpsrc.h +++ b/plugins/channelrx/tcpsrc/tcpsrc.h @@ -69,7 +69,36 @@ public: { } }; - TCPSrc(MessageQueue* uiMessageQueue, BasebandSampleSink* spectrum); + class MsgTCPSrcConnection : public Message { + MESSAGE_CLASS_DECLARATION + + public: + bool getConnect() const { return m_connect; } + quint32 getID() const { return m_id; } + const QHostAddress& getPeerAddress() const { return m_peerAddress; } + int getPeerPort() const { return m_peerPort; } + + static MsgTCPSrcConnection* create(bool connect, quint32 id, const QHostAddress& peerAddress, int peerPort) + { + return new MsgTCPSrcConnection(connect, id, peerAddress, peerPort); + } + + private: + bool m_connect; + quint32 m_id; + QHostAddress m_peerAddress; + int m_peerPort; + + MsgTCPSrcConnection(bool connect, quint32 id, const QHostAddress& peerAddress, int peerPort) : + Message(), + m_connect(connect), + m_id(id), + m_peerAddress(peerAddress), + m_peerPort(peerPort) + { } + }; + + TCPSrc(BasebandSampleSink* spectrum); virtual ~TCPSrc(); void setSpectrum(MessageQueue* messageQueue, bool enabled); @@ -80,35 +109,6 @@ public: virtual void stop(); virtual bool handleMessage(const Message& cmd); - class MsgTCPSrcConnection : public Message { - MESSAGE_CLASS_DECLARATION - - public: - bool getConnect() const { return m_connect; } - quint32 getID() const { return m_id; } - const QHostAddress& getPeerAddress() const { return m_peerAddress; } - int getPeerPort() const { return m_peerPort; } - - static MsgTCPSrcConnection* create(bool connect, quint32 id, const QHostAddress& peerAddress, int peerPort) - { - return new MsgTCPSrcConnection(connect, id, peerAddress, peerPort); - } - - private: - bool m_connect; - quint32 m_id; - QHostAddress m_peerAddress; - int m_peerPort; - - MsgTCPSrcConnection(bool connect, quint32 id, const QHostAddress& peerAddress, int peerPort) : - Message(), - m_connect(connect), - m_id(id), - m_peerAddress(peerAddress), - m_peerPort(peerPort) - { } - }; - protected: class MsgTCPSrcSpectrum : public Message { MESSAGE_CLASS_DECLARATION @@ -149,8 +149,6 @@ protected: { } }; - MessageQueue* m_uiMessageQueue; - TCPSrcSettings m_settings; int m_inputSampleRate; diff --git a/plugins/channelrx/tcpsrc/tcpsrcgui.cpp b/plugins/channelrx/tcpsrc/tcpsrcgui.cpp index f275b6564..781f64a92 100644 --- a/plugins/channelrx/tcpsrc/tcpsrcgui.cpp +++ b/plugins/channelrx/tcpsrc/tcpsrcgui.cpp @@ -85,8 +85,6 @@ bool TCPSrcGUI::deserialize(const QByteArray& data) bool TCPSrcGUI::handleMessage(const Message& message) { - qDebug() << "TCPSrcGUI::handleMessage"; - if (TCPSrc::MsgTCPSrcConnection::match(message)) { TCPSrc::MsgTCPSrcConnection& con = (TCPSrc::MsgTCPSrcConnection&) message; @@ -144,7 +142,7 @@ TCPSrcGUI::TCPSrcGUI(PluginAPI* pluginAPI, DeviceSourceAPI *deviceAPI, QWidget* setAttribute(Qt::WA_DeleteOnClose, true); m_spectrumVis = new SpectrumVis(ui->glSpectrum); - m_tcpSrc = new TCPSrc(m_pluginAPI->getMainWindowMessageQueue(), m_spectrumVis); + m_tcpSrc = new TCPSrc(m_spectrumVis); m_channelizer = new DownChannelizer(m_tcpSrc); m_threadedChannelizer = new ThreadedBasebandSampleSink(m_channelizer, this); m_deviceAPI->addThreadedSink(m_threadedChannelizer);