mirror of
				https://github.com/f4exb/sdrangel.git
				synced 2025-11-04 05:30:32 -05:00 
			
		
		
		
	DaemonSink: finalization and cleanup
This commit is contained in:
		
							parent
							
								
									3b09e0e5d7
								
							
						
					
					
						commit
						b839b5d0c3
					
				@ -184,9 +184,7 @@ void DaemonSink::feed(const SampleVector::const_iterator& begin, const SampleVec
 | 
				
			|||||||
                m_dataBlock->m_txControlBlock.m_dataAddress = m_dataAddress;
 | 
					                m_dataBlock->m_txControlBlock.m_dataAddress = m_dataAddress;
 | 
				
			||||||
                m_dataBlock->m_txControlBlock.m_dataPort = m_dataPort;
 | 
					                m_dataBlock->m_txControlBlock.m_dataPort = m_dataPort;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
                //qDebug("DaemonSink::feed: m_dataBlock: %p m_dataQueue.sz: %d", m_dataBlock, m_dataQueue.size());
 | 
					 | 
				
			||||||
                emit dataBlockAvailable(m_dataBlock);
 | 
					                emit dataBlockAvailable(m_dataBlock);
 | 
				
			||||||
                //m_dataQueue.push(m_dataBlock);
 | 
					 | 
				
			||||||
                m_dataBlock = new SDRDaemonDataBlock(); // create a new one immediately
 | 
					                m_dataBlock = new SDRDaemonDataBlock(); // create a new one immediately
 | 
				
			||||||
                m_dataBlockMutex.unlock();
 | 
					                m_dataBlockMutex.unlock();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@ -211,7 +209,7 @@ void DaemonSink::start()
 | 
				
			|||||||
        stop();
 | 
					        stop();
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    m_sinkThread = new DaemonSinkThread(&m_dataQueue);
 | 
					    m_sinkThread = new DaemonSinkThread();
 | 
				
			||||||
    connect(this,
 | 
					    connect(this,
 | 
				
			||||||
            SIGNAL(dataBlockAvailable(SDRDaemonDataBlock *)),
 | 
					            SIGNAL(dataBlockAvailable(SDRDaemonDataBlock *)),
 | 
				
			||||||
            m_sinkThread,
 | 
					            m_sinkThread,
 | 
				
			||||||
 | 
				
			|||||||
@ -28,7 +28,6 @@
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
#include "dsp/basebandsamplesink.h"
 | 
					#include "dsp/basebandsamplesink.h"
 | 
				
			||||||
#include "channel/channelsinkapi.h"
 | 
					#include "channel/channelsinkapi.h"
 | 
				
			||||||
#include "channel/sdrdaemondataqueue.h"
 | 
					 | 
				
			||||||
#include "channel/sdrdaemondatablock.h"
 | 
					#include "channel/sdrdaemondatablock.h"
 | 
				
			||||||
#include "daemonsinksettings.h"
 | 
					#include "daemonsinksettings.h"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@ -133,7 +132,6 @@ private:
 | 
				
			|||||||
    bool m_running;
 | 
					    bool m_running;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    DaemonSinkSettings m_settings;
 | 
					    DaemonSinkSettings m_settings;
 | 
				
			||||||
    SDRDaemonDataQueue m_dataQueue;
 | 
					 | 
				
			||||||
    DaemonSinkThread *m_sinkThread;
 | 
					    DaemonSinkThread *m_sinkThread;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    int m_txBlockIndex;                  //!< Current index in blocks to transmit in the Tx row
 | 
					    int m_txBlockIndex;                  //!< Current index in blocks to transmit in the Tx row
 | 
				
			||||||
 | 
				
			|||||||
@ -22,7 +22,6 @@
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
#include <QUdpSocket>
 | 
					#include <QUdpSocket>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#include "channel/sdrdaemondataqueue.h"
 | 
					 | 
				
			||||||
#include "channel/sdrdaemondatablock.h"
 | 
					#include "channel/sdrdaemondatablock.h"
 | 
				
			||||||
#include "daemonsinkthread.h"
 | 
					#include "daemonsinkthread.h"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@ -30,17 +29,15 @@
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
MESSAGE_CLASS_DEFINITION(DaemonSinkThread::MsgStartStop, Message)
 | 
					MESSAGE_CLASS_DEFINITION(DaemonSinkThread::MsgStartStop, Message)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
DaemonSinkThread::DaemonSinkThread(SDRDaemonDataQueue *dataQueue, QObject* parent) :
 | 
					DaemonSinkThread::DaemonSinkThread(QObject* parent) :
 | 
				
			||||||
    QThread(parent),
 | 
					    QThread(parent),
 | 
				
			||||||
    m_running(false),
 | 
					    m_running(false),
 | 
				
			||||||
    m_dataQueue(dataQueue),
 | 
					 | 
				
			||||||
    m_address(QHostAddress::LocalHost),
 | 
					    m_address(QHostAddress::LocalHost),
 | 
				
			||||||
    m_socket(0)
 | 
					    m_socket(0)
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    m_cm256p = m_cm256.isInitialized() ? &m_cm256 : 0;
 | 
					    m_cm256p = m_cm256.isInitialized() ? &m_cm256 : 0;
 | 
				
			||||||
    connect(&m_inputMessageQueue, SIGNAL(messageEnqueued()), this, SLOT(handleInputMessages()), Qt::QueuedConnection);
 | 
					    connect(&m_inputMessageQueue, SIGNAL(messageEnqueued()), this, SLOT(handleInputMessages()), Qt::QueuedConnection);
 | 
				
			||||||
    connect(m_dataQueue, SIGNAL(dataBlockEnqueued()), this, SLOT(handleData()), Qt::QueuedConnection);
 | 
					 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
DaemonSinkThread::~DaemonSinkThread()
 | 
					DaemonSinkThread::~DaemonSinkThread()
 | 
				
			||||||
@ -104,7 +101,6 @@ void DaemonSinkThread::handleDataBlock(SDRDaemonDataBlock& dataBlock)
 | 
				
			|||||||
    uint16_t frameIndex = dataBlock.m_txControlBlock.m_frameIndex;
 | 
					    uint16_t frameIndex = dataBlock.m_txControlBlock.m_frameIndex;
 | 
				
			||||||
    int nbBlocksFEC = dataBlock.m_txControlBlock.m_nbBlocksFEC;
 | 
					    int nbBlocksFEC = dataBlock.m_txControlBlock.m_nbBlocksFEC;
 | 
				
			||||||
    int txDelay = dataBlock.m_txControlBlock.m_txDelay;
 | 
					    int txDelay = dataBlock.m_txControlBlock.m_txDelay;
 | 
				
			||||||
    //qDebug("DaemonSinkThread::handleDataBlock: dataBlock: %p QS: %d", &dataBlock, m_dataQueue->size());
 | 
					 | 
				
			||||||
    m_address.setAddress(dataBlock.m_txControlBlock.m_dataAddress);
 | 
					    m_address.setAddress(dataBlock.m_txControlBlock.m_dataAddress);
 | 
				
			||||||
    uint16_t dataPort = dataBlock.m_txControlBlock.m_dataPort;
 | 
					    uint16_t dataPort = dataBlock.m_txControlBlock.m_dataPort;
 | 
				
			||||||
    SDRDaemonSuperBlock *txBlockx = dataBlock.m_superBlocks;
 | 
					    SDRDaemonSuperBlock *txBlockx = dataBlock.m_superBlocks;
 | 
				
			||||||
@ -168,17 +164,6 @@ void DaemonSinkThread::handleDataBlock(SDRDaemonDataBlock& dataBlock)
 | 
				
			|||||||
    dataBlock.m_txControlBlock.m_processed = true;
 | 
					    dataBlock.m_txControlBlock.m_processed = true;
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
void DaemonSinkThread::handleData()
 | 
					 | 
				
			||||||
{
 | 
					 | 
				
			||||||
    SDRDaemonDataBlock* dataBlock;
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    while (m_running && ((dataBlock = m_dataQueue->pop()) != 0))
 | 
					 | 
				
			||||||
    {
 | 
					 | 
				
			||||||
        handleDataBlock(*dataBlock);
 | 
					 | 
				
			||||||
        delete dataBlock;
 | 
					 | 
				
			||||||
    }
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
void DaemonSinkThread::handleInputMessages()
 | 
					void DaemonSinkThread::handleInputMessages()
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
    Message* message;
 | 
					    Message* message;
 | 
				
			||||||
 | 
				
			|||||||
@ -30,7 +30,6 @@
 | 
				
			|||||||
#include "util/message.h"
 | 
					#include "util/message.h"
 | 
				
			||||||
#include "util/messagequeue.h"
 | 
					#include "util/messagequeue.h"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
class SDRDaemonDataQueue;
 | 
					 | 
				
			||||||
class SDRDaemonDataBlock;
 | 
					class SDRDaemonDataBlock;
 | 
				
			||||||
class CM256;
 | 
					class CM256;
 | 
				
			||||||
class QUdpSocket;
 | 
					class QUdpSocket;
 | 
				
			||||||
@ -58,7 +57,7 @@ public:
 | 
				
			|||||||
        { }
 | 
					        { }
 | 
				
			||||||
    };
 | 
					    };
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    DaemonSinkThread(SDRDaemonDataQueue *dataQueue, QObject* parent = 0);
 | 
					    DaemonSinkThread(QObject* parent = 0);
 | 
				
			||||||
    ~DaemonSinkThread();
 | 
					    ~DaemonSinkThread();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    void startStop(bool start);
 | 
					    void startStop(bool start);
 | 
				
			||||||
@ -71,7 +70,6 @@ private:
 | 
				
			|||||||
	QWaitCondition m_startWaiter;
 | 
						QWaitCondition m_startWaiter;
 | 
				
			||||||
	bool m_running;
 | 
						bool m_running;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    SDRDaemonDataQueue *m_dataQueue;
 | 
					 | 
				
			||||||
    CM256 m_cm256;
 | 
					    CM256 m_cm256;
 | 
				
			||||||
    CM256 *m_cm256p;
 | 
					    CM256 *m_cm256p;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@ -87,6 +85,5 @@ private:
 | 
				
			|||||||
    void handleDataBlock(SDRDaemonDataBlock& dataBlock);
 | 
					    void handleDataBlock(SDRDaemonDataBlock& dataBlock);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
private slots:
 | 
					private slots:
 | 
				
			||||||
    void handleData();
 | 
					 | 
				
			||||||
    void handleInputMessages();
 | 
					    void handleInputMessages();
 | 
				
			||||||
};
 | 
					};
 | 
				
			||||||
 | 
				
			|||||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user