mirror of
https://github.com/f4exb/sdrangel.git
synced 2025-05-25 03:32:29 -04: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_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());
|
//qDebug("DaemonSink::feed: m_dataBlock: %p m_dataQueue.sz: %d", m_dataBlock, m_dataQueue.size());
|
||||||
m_dataQueue.push(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,6 +212,11 @@ void DaemonSink::start()
|
|||||||
}
|
}
|
||||||
|
|
||||||
m_sinkThread = new DaemonSinkThread(&m_dataQueue);
|
m_sinkThread = new DaemonSinkThread(&m_dataQueue);
|
||||||
|
connect(this,
|
||||||
|
SIGNAL(dataBlockAvailable(SDRDaemonDataBlock *)),
|
||||||
|
m_sinkThread,
|
||||||
|
SLOT(processDataBlock(SDRDaemonDataBlock *)),
|
||||||
|
Qt::QueuedConnection);
|
||||||
m_sinkThread->startStop(true);
|
m_sinkThread->startStop(true);
|
||||||
m_running = true;
|
m_running = true;
|
||||||
}
|
}
|
||||||
|
@ -123,6 +123,9 @@ public:
|
|||||||
static const QString m_channelIdURI;
|
static const QString m_channelIdURI;
|
||||||
static const QString m_channelId;
|
static const QString m_channelId;
|
||||||
|
|
||||||
|
signals:
|
||||||
|
void dataBlockAvailable(SDRDaemonDataBlock *dataBlock);
|
||||||
|
|
||||||
private:
|
private:
|
||||||
DeviceSourceAPI *m_deviceAPI;
|
DeviceSourceAPI *m_deviceAPI;
|
||||||
ThreadedBasebandSampleSink* m_threadedChannelizer;
|
ThreadedBasebandSampleSink* m_threadedChannelizer;
|
||||||
|
@ -89,7 +89,13 @@ void DaemonSinkThread::run()
|
|||||||
qDebug("DaemonSinkThread::run: end");
|
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_encoder_params cm256Params; //!< Main interface with CM256 encoder
|
||||||
CM256::cm256_block descriptorBlocks[256]; //!< Pointers to data for 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;
|
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: 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);
|
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;
|
||||||
@ -139,7 +145,6 @@ bool DaemonSinkThread::handleDataBlock(SDRDaemonDataBlock& dataBlock)
|
|||||||
{
|
{
|
||||||
qWarning("SDRDaemonChannelSinkThread::handleDataBlock: CM256 encode failed. No transmission.");
|
qWarning("SDRDaemonChannelSinkThread::handleDataBlock: CM256 encode failed. No transmission.");
|
||||||
// TODO: send without FEC changing meta data to set indication of no FEC
|
// TODO: send without FEC changing meta data to set indication of no FEC
|
||||||
return true;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// Merge FEC with data to transmit
|
// Merge FEC with data to transmit
|
||||||
@ -161,7 +166,6 @@ bool DaemonSinkThread::handleDataBlock(SDRDaemonDataBlock& dataBlock)
|
|||||||
}
|
}
|
||||||
|
|
||||||
dataBlock.m_txControlBlock.m_processed = true;
|
dataBlock.m_txControlBlock.m_processed = true;
|
||||||
return true;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void DaemonSinkThread::handleData()
|
void DaemonSinkThread::handleData()
|
||||||
@ -170,10 +174,8 @@ void DaemonSinkThread::handleData()
|
|||||||
|
|
||||||
while (m_running && ((dataBlock = m_dataQueue->pop()) != 0))
|
while (m_running && ((dataBlock = m_dataQueue->pop()) != 0))
|
||||||
{
|
{
|
||||||
if (handleDataBlock(*dataBlock))
|
handleDataBlock(*dataBlock);
|
||||||
{
|
delete dataBlock;
|
||||||
delete dataBlock;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -63,6 +63,9 @@ public:
|
|||||||
|
|
||||||
void startStop(bool start);
|
void startStop(bool start);
|
||||||
|
|
||||||
|
public slots:
|
||||||
|
void processDataBlock(SDRDaemonDataBlock *dataBlock);
|
||||||
|
|
||||||
private:
|
private:
|
||||||
QMutex m_startWaitMutex;
|
QMutex m_startWaitMutex;
|
||||||
QWaitCondition m_startWaiter;
|
QWaitCondition m_startWaiter;
|
||||||
@ -81,7 +84,7 @@ private:
|
|||||||
void stopWork();
|
void stopWork();
|
||||||
|
|
||||||
void run();
|
void run();
|
||||||
bool handleDataBlock(SDRDaemonDataBlock& dataBlock);
|
void handleDataBlock(SDRDaemonDataBlock& dataBlock);
|
||||||
|
|
||||||
private slots:
|
private slots:
|
||||||
void handleData();
|
void handleData();
|
||||||
|
Loading…
x
Reference in New Issue
Block a user