1
0
mirror of https://github.com/f4exb/sdrangel.git synced 2024-11-27 02:09:14 -05:00

SDRdaemonFEC support. allow for smaller datagrams than the UDP block size

This commit is contained in:
f4exb 2016-07-12 04:44:44 +02:00
parent 83e34fde20
commit 6540979108
2 changed files with 4 additions and 3 deletions

View File

@ -127,8 +127,6 @@ void SDRdaemonFECBuffer::initDecodeSlot(int slotIndex)
void SDRdaemonFECBuffer::writeData(char *array, uint32_t length) void SDRdaemonFECBuffer::writeData(char *array, uint32_t length)
{ {
assert(length == m_udpPayloadSize);
SuperBlock *superBlock = (SuperBlock *) array; SuperBlock *superBlock = (SuperBlock *) array;
int frameIndex = superBlock->header.frameIndex; int frameIndex = superBlock->header.frameIndex;
int decoderIndex = frameIndex % nbDecoderSlots; int decoderIndex = frameIndex % nbDecoderSlots;

View File

@ -129,13 +129,16 @@ void SDRdaemonFECUDPHandler::configureUDPLink(const QString& address, quint16 po
void SDRdaemonFECUDPHandler::dataReadyRead() void SDRdaemonFECUDPHandler::dataReadyRead()
{ {
m_udpReadBytes = 0;
while (m_dataSocket->hasPendingDatagrams()) while (m_dataSocket->hasPendingDatagrams())
{ {
qint64 pendingDataSize = m_dataSocket->pendingDatagramSize(); qint64 pendingDataSize = m_dataSocket->pendingDatagramSize();
m_udpReadBytes = m_dataSocket->readDatagram(m_udpBuf, pendingDataSize, &m_remoteAddress, 0); m_udpReadBytes += m_dataSocket->readDatagram(&m_udpBuf[m_udpReadBytes], pendingDataSize, &m_remoteAddress, 0);
if (m_udpReadBytes == SDRdaemonFECBuffer::m_udpPayloadSize) { if (m_udpReadBytes == SDRdaemonFECBuffer::m_udpPayloadSize) {
processData(); processData();
m_udpReadBytes = 0;
} }
} }
} }