mirror of
https://github.com/f4exb/sdrangel.git
synced 2026-06-02 14:04:46 -04:00
SDRdaemon plugin: added counters for data received from UDP
This commit is contained in:
@@ -35,7 +35,9 @@ SDRdaemonBuffer::SDRdaemonBuffer(std::size_t blockSize) :
|
||||
m_sampleRate(1000000),
|
||||
m_sampleBytes(2),
|
||||
m_sampleBits(12),
|
||||
m_rawBuffer(0)
|
||||
m_rawBuffer(0),
|
||||
m_bytesInBlock(0),
|
||||
m_nbBlocks(0)
|
||||
{
|
||||
m_currentMeta.init();
|
||||
}
|
||||
@@ -55,10 +57,12 @@ bool SDRdaemonBuffer::readMeta(char *array, std::size_t length)
|
||||
{
|
||||
assert(length >= sizeof(MetaData) + 8);
|
||||
MetaData *metaData = (MetaData *) array;
|
||||
updateBlockCounts(length);
|
||||
|
||||
if (m_crc64.calculate_crc((uint8_t *)array, sizeof(MetaData) - 8) == metaData->m_crc)
|
||||
{
|
||||
memcpy((void *) &m_dataCRC, (const void *) &array[sizeof(MetaData)], 8);
|
||||
m_nbBlocks = 0;
|
||||
|
||||
if (!(m_currentMeta == *metaData))
|
||||
{
|
||||
@@ -222,6 +226,12 @@ void SDRdaemonBuffer::updateBufferSize(uint32_t frameSize)
|
||||
m_rawBuffer = new uint8_t[nbFrames * frameSize];
|
||||
}
|
||||
|
||||
void SDRdaemonBuffer::updateBlockCounts(uint32_t nbBytesReceived)
|
||||
{
|
||||
m_nbBlocks += m_bytesInBlock + nbBytesReceived > m_blockSize ? 1 : 0;
|
||||
m_bytesInBlock = m_bytesInBlock + nbBytesReceived > m_blockSize ? nbBytesReceived : m_bytesInBlock + nbBytesReceived;
|
||||
}
|
||||
|
||||
void SDRdaemonBuffer::printMeta(MetaData *metaData)
|
||||
{
|
||||
std::cerr
|
||||
|
||||
@@ -73,6 +73,7 @@ private:
|
||||
void writeDataLZ4(char *array, std::size_t length);
|
||||
void writeDataUncompressed(char *array, std::size_t length);
|
||||
void updateBufferSize(uint32_t frameSize);
|
||||
void updateBlockCounts(uint32_t nbBytesReceived);
|
||||
void printMeta(MetaData *metaData);
|
||||
|
||||
std::size_t m_blockSize; //!< UDP block (payload) size
|
||||
@@ -98,6 +99,8 @@ private:
|
||||
|
||||
uint32_t m_rawCount; //!< Current position in the raw samples buffer
|
||||
uint8_t *m_rawBuffer; //!< Buffer for raw samples obtained from UDP (I/Q not in a formal I/Q structure)
|
||||
uint32_t m_bytesInBlock; //!< Number of bytes received in the current UDP block
|
||||
uint32_t m_nbBlocks; //!< Number of UDP blocks received in the current frame
|
||||
};
|
||||
|
||||
|
||||
|
||||
Reference in New Issue
Block a user