DaemonSink (7)

This commit is contained in:
f4exb 2018-09-06 05:21:43 +02:00
parent 2be1281885
commit 54c89f16aa
4 changed files with 25 additions and 11 deletions

View File

@ -184,8 +184,9 @@ void DaemonSink::feed(const SampleVector::const_iterator& begin, const SampleVec
m_dataBlock->m_txControlBlock.m_dataAddress = m_dataAddress;
m_dataBlock->m_txControlBlock.m_dataPort = m_dataPort;
qDebug("DaemonSink::feed: m_dataBlock: %p m_dataQueue.sz: %d", m_dataBlock, m_dataQueue.size());
m_dataQueue.push(m_dataBlock);
//qDebug("DaemonSink::feed: m_dataBlock: %p m_dataQueue.sz: %d", m_dataBlock, m_dataQueue.size());
emit dataBlockAvailable(m_dataBlock);
//m_dataQueue.push(m_dataBlock);
m_dataBlock = new SDRDaemonDataBlock(); // create a new one immediately
m_dataBlockMutex.unlock();
@ -211,6 +212,11 @@ void DaemonSink::start()
}
m_sinkThread = new DaemonSinkThread(&m_dataQueue);
connect(this,
SIGNAL(dataBlockAvailable(SDRDaemonDataBlock *)),
m_sinkThread,
SLOT(processDataBlock(SDRDaemonDataBlock *)),
Qt::QueuedConnection);
m_sinkThread->startStop(true);
m_running = true;
}

View File

@ -123,6 +123,9 @@ public:
static const QString m_channelIdURI;
static const QString m_channelId;
signals:
void dataBlockAvailable(SDRDaemonDataBlock *dataBlock);
private:
DeviceSourceAPI *m_deviceAPI;
ThreadedBasebandSampleSink* m_threadedChannelizer;

View File

@ -89,7 +89,13 @@ void DaemonSinkThread::run()
qDebug("DaemonSinkThread::run: end");
}
bool DaemonSinkThread::handleDataBlock(SDRDaemonDataBlock& dataBlock)
void DaemonSinkThread::processDataBlock(SDRDaemonDataBlock *dataBlock)
{
handleDataBlock(*dataBlock);
delete dataBlock;
}
void DaemonSinkThread::handleDataBlock(SDRDaemonDataBlock& dataBlock)
{
CM256::cm256_encoder_params cm256Params; //!< Main interface with CM256 encoder
CM256::cm256_block descriptorBlocks[256]; //!< Pointers to data for CM256 encoder
@ -98,7 +104,7 @@ bool DaemonSinkThread::handleDataBlock(SDRDaemonDataBlock& dataBlock)
uint16_t frameIndex = dataBlock.m_txControlBlock.m_frameIndex;
int nbBlocksFEC = dataBlock.m_txControlBlock.m_nbBlocksFEC;
int txDelay = dataBlock.m_txControlBlock.m_txDelay;
qDebug("DaemonSinkThread::handleDataBlock: txDelay: %d QS: %d", txDelay, m_dataQueue->size());
//qDebug("DaemonSinkThread::handleDataBlock: dataBlock: %p QS: %d", &dataBlock, m_dataQueue->size());
m_address.setAddress(dataBlock.m_txControlBlock.m_dataAddress);
uint16_t dataPort = dataBlock.m_txControlBlock.m_dataPort;
SDRDaemonSuperBlock *txBlockx = dataBlock.m_superBlocks;
@ -139,7 +145,6 @@ bool DaemonSinkThread::handleDataBlock(SDRDaemonDataBlock& dataBlock)
{
qWarning("SDRDaemonChannelSinkThread::handleDataBlock: CM256 encode failed. No transmission.");
// TODO: send without FEC changing meta data to set indication of no FEC
return true;
}
// Merge FEC with data to transmit
@ -161,7 +166,6 @@ bool DaemonSinkThread::handleDataBlock(SDRDaemonDataBlock& dataBlock)
}
dataBlock.m_txControlBlock.m_processed = true;
return true;
}
void DaemonSinkThread::handleData()
@ -170,10 +174,8 @@ void DaemonSinkThread::handleData()
while (m_running && ((dataBlock = m_dataQueue->pop()) != 0))
{
if (handleDataBlock(*dataBlock))
{
delete dataBlock;
}
handleDataBlock(*dataBlock);
delete dataBlock;
}
}

View File

@ -63,6 +63,9 @@ public:
void startStop(bool start);
public slots:
void processDataBlock(SDRDaemonDataBlock *dataBlock);
private:
QMutex m_startWaitMutex;
QWaitCondition m_startWaiter;
@ -81,7 +84,7 @@ private:
void stopWork();
void run();
bool handleDataBlock(SDRDaemonDataBlock& dataBlock);
void handleDataBlock(SDRDaemonDataBlock& dataBlock);
private slots:
void handleData();