mirror of
https://github.com/f4exb/sdrangel.git
synced 2025-02-03 09:44:01 -05:00
DaemonSink (7)
This commit is contained in:
parent
2be1281885
commit
54c89f16aa
@ -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;
|
||||
}
|
||||
|
@ -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;
|
||||
|
@ -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;
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -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();
|
||||
|
Loading…
Reference in New Issue
Block a user