diff --git a/plugins/samplesource/sdrdaemon/sdrdaemonbuffer.cpp b/plugins/samplesource/sdrdaemon/sdrdaemonbuffer.cpp
index 5d1f476ce..0126a1b2b 100644
--- a/plugins/samplesource/sdrdaemon/sdrdaemonbuffer.cpp
+++ b/plugins/samplesource/sdrdaemon/sdrdaemonbuffer.cpp
@@ -38,6 +38,8 @@ SDRdaemonBuffer::SDRdaemonBuffer(uint32_t rateDivider) :
m_nbLz4Decodes(0),
m_nbLz4SuccessfulDecodes(0),
m_nbLz4CRCOK(0),
+ m_nbLastLz4SuccessfulDecodes(0),
+ m_nbLastLz4CRCOK(0),
m_dataCRC(0),
m_sampleRateStream(0),
m_sampleRate(0),
@@ -199,6 +201,8 @@ void SDRdaemonBuffer::writeDataLZ4(const char *array, uint32_t length)
<< "/" << m_nbLz4Decodes
<< std::endl;
+ m_nbLastLz4SuccessfulDecodes = m_nbLz4SuccessfulDecodes;
+ m_nbLastLz4CRCOK = m_nbLz4CRCOK;
m_nbLz4Decodes = 0;
m_nbLz4SuccessfulDecodes = 0;
m_nbLz4CRCOK = 0;
diff --git a/plugins/samplesource/sdrdaemon/sdrdaemonbuffer.h b/plugins/samplesource/sdrdaemon/sdrdaemonbuffer.h
index b47c8553a..d4e27cd17 100644
--- a/plugins/samplesource/sdrdaemon/sdrdaemonbuffer.h
+++ b/plugins/samplesource/sdrdaemon/sdrdaemonbuffer.h
@@ -74,7 +74,9 @@ public:
bool isSyncLocked() const { return m_syncLock; }
uint32_t getFrameSize() const { return m_frameSize; }
bool isLz4Compressed() const { return m_lz4; }
- float getCompressionRatio() const { return (m_frameSize ? (float) m_lz4InSize / (float) m_frameSize : 1.0); }
+ float getCompressionRatio() const { return (m_frameSize > 0 ? (float) m_lz4InSize / (float) m_frameSize : 1.0); }
+ uint32_t getLz4DataCRCOK() const { return m_nbLastLz4CRCOK; }
+ uint32_t getLz4SuccessfulDecodes() const { return m_nbLastLz4SuccessfulDecodes; }
static const int m_udpPayloadSize;
static const int m_sampleSize;
@@ -104,6 +106,8 @@ private:
uint32_t m_nbLz4Decodes;
uint32_t m_nbLz4SuccessfulDecodes;
uint32_t m_nbLz4CRCOK;
+ uint32_t m_nbLastLz4SuccessfulDecodes;
+ uint32_t m_nbLastLz4CRCOK;
uint64_t m_dataCRC;
uint32_t m_sampleRateStream; //!< Current sample rate from the stream
diff --git a/plugins/samplesource/sdrdaemon/sdrdaemongui.cpp b/plugins/samplesource/sdrdaemon/sdrdaemongui.cpp
index 08bd72604..349b43417 100644
--- a/plugins/samplesource/sdrdaemon/sdrdaemongui.cpp
+++ b/plugins/samplesource/sdrdaemon/sdrdaemongui.cpp
@@ -40,6 +40,11 @@ SDRdaemonGui::SDRdaemonGui(PluginAPI* pluginAPI, QWidget* parent) :
m_sampleRateStream(0),
m_centerFrequency(0),
m_syncLocked(false),
+ m_frameSize(0),
+ m_lz4(false),
+ m_compressionRatio(1.0),
+ m_nbLz4DataCRCOK(0),
+ m_nbLz4SuccessfulDecodes(0),
m_samplesCount(0),
m_tickCount(0),
m_address("127.0.0.1"),
@@ -202,7 +207,16 @@ bool SDRdaemonGui::handleMessage(const Message& message)
m_syncLocked = ((SDRdaemonInput::MsgReportSDRdaemonStreamTiming&)message).getSyncLock();
m_frameSize = ((SDRdaemonInput::MsgReportSDRdaemonStreamTiming&)message).getFrameSize();
m_lz4 = ((SDRdaemonInput::MsgReportSDRdaemonStreamTiming&)message).getLz4Compression();
- m_compressionRatio = ((SDRdaemonInput::MsgReportSDRdaemonStreamTiming&)message).getLz4Compression();
+
+ if (m_lz4) {
+ m_compressionRatio = ((SDRdaemonInput::MsgReportSDRdaemonStreamTiming&)message).getLz4CompressionRatio();
+ } else {
+ m_compressionRatio = 1.0;
+ }
+
+ m_nbLz4DataCRCOK = ((SDRdaemonInput::MsgReportSDRdaemonStreamTiming&)message).getLz4DataCRCOK();
+ m_nbLz4SuccessfulDecodes = ((SDRdaemonInput::MsgReportSDRdaemonStreamTiming&)message).getLz4SuccessfulDecodes();
+
updateWithStreamTime();
return true;
}
@@ -323,6 +337,12 @@ void SDRdaemonGui::updateWithStreamTime()
s = QString::number(m_compressionRatio, 'f', 2);
ui->compressionRatioText->setText(tr("%1").arg(s));
+
+ s = QString::number(m_nbLz4DataCRCOK, 'f', 0);
+ ui->dataCRCOKText->setText(tr("%1").arg(s));
+
+ s = QString::number(m_nbLz4SuccessfulDecodes, 'f', 0);
+ ui->lz4DecodesOKText->setText(tr("%1").arg(s));
}
void SDRdaemonGui::tick()
diff --git a/plugins/samplesource/sdrdaemon/sdrdaemongui.h b/plugins/samplesource/sdrdaemon/sdrdaemongui.h
index 0035c8ff8..baac02844 100644
--- a/plugins/samplesource/sdrdaemon/sdrdaemongui.h
+++ b/plugins/samplesource/sdrdaemon/sdrdaemongui.h
@@ -63,6 +63,8 @@ private:
uint32_t m_frameSize;
bool m_lz4;
float m_compressionRatio;
+ uint32_t m_nbLz4DataCRCOK;
+ uint32_t m_nbLz4SuccessfulDecodes;
int m_samplesCount;
std::size_t m_tickCount;
diff --git a/plugins/samplesource/sdrdaemon/sdrdaemongui.ui b/plugins/samplesource/sdrdaemon/sdrdaemongui.ui
index 959be62cf..371187940 100644
--- a/plugins/samplesource/sdrdaemon/sdrdaemongui.ui
+++ b/plugins/samplesource/sdrdaemon/sdrdaemongui.ui
@@ -368,7 +368,7 @@
Data CRC OK (%)
- 100
+ 0
Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter
@@ -394,7 +394,7 @@
LZ4 successful decodes (%)
- 100
+ 0
Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter
diff --git a/plugins/samplesource/sdrdaemon/sdrdaemoninput.h b/plugins/samplesource/sdrdaemon/sdrdaemoninput.h
index ff927ca26..6befbc5d4 100644
--- a/plugins/samplesource/sdrdaemon/sdrdaemoninput.h
+++ b/plugins/samplesource/sdrdaemon/sdrdaemoninput.h
@@ -171,20 +171,27 @@ public:
bool getSyncLock() const { return m_syncLock; }
uint32_t getFrameSize() const { return m_frameSize; }
bool getLz4Compression() const { return m_lz4; }
+ float getLz4CompressionRatio() const { return m_compressionRatio; }
+ uint32_t getLz4DataCRCOK() const { return m_nbLz4CRCOK; }
+ uint32_t getLz4SuccessfulDecodes() const { return m_nbLz4SuccessfulDecodes; }
static MsgReportSDRdaemonStreamTiming* create(uint32_t tv_sec,
uint32_t tv_usec,
bool syncLock,
uint32_t frameSize,
bool lz4,
- float compressionRatio)
+ float compressionRatio,
+ uint32_t nbLz4CRCOK,
+ uint32_t nbLz4SuccessfulDecodes)
{
return new MsgReportSDRdaemonStreamTiming(tv_sec,
tv_usec,
syncLock,
frameSize,
lz4,
- compressionRatio);
+ compressionRatio,
+ nbLz4CRCOK,
+ nbLz4SuccessfulDecodes);
}
protected:
@@ -194,20 +201,26 @@ public:
uint32_t m_frameSize;
bool m_lz4;
float m_compressionRatio;
+ uint32_t m_nbLz4CRCOK;
+ uint32_t m_nbLz4SuccessfulDecodes;
MsgReportSDRdaemonStreamTiming(uint32_t tv_sec,
uint32_t tv_usec,
bool syncLock,
uint32_t frameSize,
bool lz4,
- float compressionRatio) :
+ float compressionRatio,
+ uint32_t nbLz4CRCOK,
+ uint32_t nbLz4SuccessfulDecodes) :
Message(),
m_tv_sec(tv_sec),
m_tv_usec(tv_usec),
m_syncLock(syncLock),
m_frameSize(frameSize),
m_lz4(lz4),
- m_compressionRatio(compressionRatio)
+ m_compressionRatio(compressionRatio),
+ m_nbLz4CRCOK(nbLz4CRCOK),
+ m_nbLz4SuccessfulDecodes(nbLz4SuccessfulDecodes)
{ }
};
diff --git a/plugins/samplesource/sdrdaemon/sdrdaemonudphandler.cpp b/plugins/samplesource/sdrdaemon/sdrdaemonudphandler.cpp
index 4e2b25e74..63d88bcb1 100644
--- a/plugins/samplesource/sdrdaemon/sdrdaemonudphandler.cpp
+++ b/plugins/samplesource/sdrdaemon/sdrdaemonudphandler.cpp
@@ -212,7 +212,9 @@ void SDRdaemonUDPHandler::tick()
m_sdrDaemonBuffer.isSyncLocked(),
m_sdrDaemonBuffer.getFrameSize(),
m_sdrDaemonBuffer.isLz4Compressed(),
- m_sdrDaemonBuffer.getCompressionRatio());
+ m_sdrDaemonBuffer.getCompressionRatio(),
+ m_sdrDaemonBuffer.getLz4DataCRCOK(),
+ m_sdrDaemonBuffer.getLz4SuccessfulDecodes());
m_outputMessageQueueToGUI->push(report);
}
}