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)
{
assert(length == m_udpPayloadSize);
SuperBlock *superBlock = (SuperBlock *) array;
int frameIndex = superBlock->header.frameIndex;
int decoderIndex = frameIndex % nbDecoderSlots;

View File

@ -129,13 +129,16 @@ void SDRdaemonFECUDPHandler::configureUDPLink(const QString& address, quint16 po
void SDRdaemonFECUDPHandler::dataReadyRead()
{
m_udpReadBytes = 0;
while (m_dataSocket->hasPendingDatagrams())
{
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) {
processData();
m_udpReadBytes = 0;
}
}
}