From b157186b322e714e096499fc17ea1bf0680697cc Mon Sep 17 00:00:00 2001 From: f4exb Date: Thu, 28 Jul 2016 04:49:33 +0200 Subject: [PATCH] SDRdaemonFEC plugin: further improve stats display on GUI and updated readme accordingly --- doc/img/SDRdaemonFEC_plugin.png | Bin 32683 -> 33004 bytes doc/img/SDRdaemonFEC_plugin_04.png | Bin 6249 -> 6879 bytes plugins/samplesource/sdrdaemonfec/readme.md | 32 ++++++------ .../sdrdaemonfec/sdrdaemonfecgui.cpp | 7 +++ .../sdrdaemonfec/sdrdaemonfecgui.h | 1 + .../sdrdaemonfec/sdrdaemonfecgui.ui | 46 ++++++------------ .../sdrdaemonfec/sdrdaemonfecinput.h | 6 +++ .../sdrdaemonfec/sdrdaemonfecudphandler.cpp | 1 + 8 files changed, 48 insertions(+), 45 deletions(-) diff --git a/doc/img/SDRdaemonFEC_plugin.png b/doc/img/SDRdaemonFEC_plugin.png index 4ae82761a1eb940b885595662f623041b56185f1..5e305c216c3874552cd7f85d2a8e8215bf3af514 100644 GIT binary patch literal 33004 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 aOI|2BwWrsMu^qUmgz3!LhDioXcK!$IJAVQI literal 32683 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%0D~4J~C`YfjcY&!`eW++UMpd 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%0D&fw-j#eQsVc6gP)7hlS9+k&){ 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 literal 6249 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 b$I$v0Oc7bLE>6Hd0Aw1fIx2-q)*=4^$`pVI diff --git a/plugins/samplesource/sdrdaemonfec/readme.md b/plugins/samplesource/sdrdaemonfec/readme.md index 7e2488db1..99da1f866 100644 --- a/plugins/samplesource/sdrdaemonfec/readme.md +++ b/plugins/samplesource/sdrdaemonfec/readme.md @@ -63,39 +63,43 @@ The system tries to compensate read / write unbalance however at start or when a ![SDR Daemon FEC status1 GUI](../../../doc/img/SDRdaemonFEC_plugin_04.png) -

4.1: Stream status

+

4.1: Minimum total number of blocks per frame

+ +This is the minimum total number of blocks per frame during the last polling period. If all blocks were received for all frames then this number is the nominal number of original blocks plus FEC blocks and the background lits in green. + +

4.2: Average total number of blocks received by frame

+ +Moving average over the last 10 frames of the total number of blocks received per frame. + +

4.3: Stream status

The color of the icon indicates stream status: - Green: all original blocks have been received for all frames during the last polling timeframe - - Magenta/Pink: some original blocks were reconstructed from FEC blocks for some frames during the last polling timeframe + - Pink: some original blocks were reconstructed from FEC blocks for some frames during the last polling timeframe - No color: some original blocks were definitely lost for some frames during the last polling timeframe -

4.2: Minimum number of blocks received by frame

+

4.4: Minimum number of original blocks received by frame

-Minimum number of blocks received by frame during the last polling timeframe. Ideally this should match the nominal number of blocks per frame (see 4.7) for no lost blocks (green lock icon). +Minimum number of original blocks received by frame during the last polling timeframe. Ideally this should match the nominal number of original blocks per frame which is 128 (green lock icon). Anything below the nominal number of original blocks minus FEC blocks means data loss (lock icon off). In betweem FEC is used to recover lost blocks (pink lock icon) -

4.3: Average number of blocks received by frame

+

4.5: Maximum number of FEC blocks used by frame

-Moving average over the last 10 frames of the number of blocks received per frame. +Maximum number of FEC blocks used for original blocks recovery during the last polling timeframe. Ideally this should be 0 when no blocks are lost but the system is able to correct lost blocks up to the nominal number of FEC blocks (Pink lock icon). -

4.4: Maximum number of FEC blocks used by frame

- -Maximum number of FEC blocks used for original blocks recovery during the last polling timeframe. Ideally this should be 0 when no blocks are lost but the system is able to correct lost blocks up to the nominal number of FEC blocks (Magenta/Pink lock icon). - -

4.5: Average number of FEC blocks used for original blocks recovery by frame

+

4.6: Average number of FEC blocks used for original blocks recovery by frame

Moving average over the last 10 frames of the number of FEC blocks used for original blocks recovery per frame. -

4.6: Receive buffer length

+

4.7: Receive buffer length

This is the main buffer (writes from UDP / reads from DSP engine) length in units of time (seconds). As read and write pointers are normally about half the buffer apart the nominal delay introduced by the buffer is the half of this value. -

4.7: FEC nominal values

+

4.8: FEC nominal values

This is the nominal (Tx side) total number of blocks sent by frame (original blocks plus FEC blocks) and the nominal number of FEC blocks sent by frame separated by a slash (/) -

4.8: Main buffer R/W pointers positions

+

4.9: Main buffer R/W pointers positions

Read and write pointers should always be a half buffer distance buffer apart. This is the difference in percent of the main buffer size from this ideal position. diff --git a/plugins/samplesource/sdrdaemonfec/sdrdaemonfecgui.cpp b/plugins/samplesource/sdrdaemonfec/sdrdaemonfecgui.cpp index 4bc0eee50..3e3bb0c44 100644 --- a/plugins/samplesource/sdrdaemonfec/sdrdaemonfecgui.cpp +++ b/plugins/samplesource/sdrdaemonfec/sdrdaemonfecgui.cpp @@ -288,6 +288,7 @@ bool SDRdaemonFECGui::handleMessage(const Message& message) m_startingTimeStamp.tv_sec = ((SDRdaemonFECInput::MsgReportSDRdaemonFECStreamTiming&)message).get_tv_sec(); m_startingTimeStamp.tv_usec = ((SDRdaemonFECInput::MsgReportSDRdaemonFECStreamTiming&)message).get_tv_usec(); m_framesDecodingStatus = ((SDRdaemonFECInput::MsgReportSDRdaemonFECStreamTiming&)message).getFramesDecodingStatus(); + m_allBlocksReceived = ((SDRdaemonFECInput::MsgReportSDRdaemonFECStreamTiming&)message).allBlocksReceived(); m_bufferLengthInSecs = ((SDRdaemonFECInput::MsgReportSDRdaemonFECStreamTiming&)message).getBufferLengthInSecs(); m_bufferGauge = ((SDRdaemonFECInput::MsgReportSDRdaemonFECStreamTiming&)message).getBufferGauge(); m_minNbBlocks = ((SDRdaemonFECInput::MsgReportSDRdaemonFECStreamTiming&)message).getMinNbBlocks(); @@ -624,6 +625,12 @@ void SDRdaemonFECGui::updateWithStreamTime() s = QString::number(m_minNbBlocks, 'f', 0); ui->minNbBlocksText->setText(tr("%1").arg(s)); + if (m_allBlocksReceived) { + ui->minNbBlocksText->setStyleSheet("QLabel { background-color : green; }"); + } else { + ui->minNbBlocksText->setStyleSheet("QLabel { background:rgb(56,56,56); }"); + } + s = QString::number(m_avgNbBlocks, 'f', 1); ui->avgNbBlocksText->setText(tr("%1").arg(s)); diff --git a/plugins/samplesource/sdrdaemonfec/sdrdaemonfecgui.h b/plugins/samplesource/sdrdaemonfec/sdrdaemonfecgui.h index 198e4f8e8..fdb783984 100644 --- a/plugins/samplesource/sdrdaemonfec/sdrdaemonfecgui.h +++ b/plugins/samplesource/sdrdaemonfec/sdrdaemonfecgui.h @@ -65,6 +65,7 @@ private: quint64 m_centerFrequency; struct timeval m_startingTimeStamp; int m_framesDecodingStatus; + bool m_allBlocksReceived; float m_bufferLengthInSecs; int32_t m_bufferGauge; int m_minNbBlocks; diff --git a/plugins/samplesource/sdrdaemonfec/sdrdaemonfecgui.ui b/plugins/samplesource/sdrdaemonfec/sdrdaemonfecgui.ui index 7e227d245..281a96c0b 100644 --- a/plugins/samplesource/sdrdaemonfec/sdrdaemonfecgui.ui +++ b/plugins/samplesource/sdrdaemonfec/sdrdaemonfecgui.ui @@ -29,16 +29,7 @@ 3 - - 2 - - - 2 - - - 2 - - + 2 @@ -312,23 +303,6 @@ - - - - false - - - Frames status: green = all original received, pink = some recovered by FEC, none = some lost - - - ... - - - - :/locked.png:/locked.png - - - @@ -338,7 +312,7 @@ - Minimum number of blocks retrieved per frame + Minimum number of blocks retrieved per frame (green: all blocks received) 000 @@ -368,9 +342,19 @@ - - - Qt::Vertical + + + false + + + Frames status: green = all original received, pink = some recovered by FEC, none = some lost + + + ... + + + + :/locked.png:/locked.png diff --git a/plugins/samplesource/sdrdaemonfec/sdrdaemonfecinput.h b/plugins/samplesource/sdrdaemonfec/sdrdaemonfecinput.h index 45c0ad296..fe1a8500a 100644 --- a/plugins/samplesource/sdrdaemonfec/sdrdaemonfecinput.h +++ b/plugins/samplesource/sdrdaemonfec/sdrdaemonfecinput.h @@ -167,6 +167,7 @@ public: uint32_t get_tv_sec() const { return m_tv_sec; } uint32_t get_tv_usec() const { return m_tv_usec; } int getFramesDecodingStatus() const { return m_framesDecodingStatus; } + bool allBlocksReceived() const { return m_allBlocksReceived; } float getBufferLengthInSecs() const { return m_bufferLenSec; } int32_t getBufferGauge() const { return m_bufferGauge; } int getMinNbBlocks() const { return m_minNbBlocks; } @@ -183,6 +184,7 @@ public: float bufferLenSec, int32_t bufferGauge, int framesDecodingStatus, + bool allBlocksReceived, int minNbBlocks, int minNbOriginalBlocks, int maxNbRecovery, @@ -197,6 +199,7 @@ public: bufferLenSec, bufferGauge, framesDecodingStatus, + allBlocksReceived, minNbBlocks, minNbOriginalBlocks, maxNbRecovery, @@ -211,6 +214,7 @@ public: uint32_t m_tv_sec; uint32_t m_tv_usec; int m_framesDecodingStatus; + bool m_allBlocksReceived; float m_bufferLenSec; int32_t m_bufferGauge; int m_minNbBlocks; @@ -227,6 +231,7 @@ public: float bufferLenSec, int32_t bufferGauge, int framesDecodingStatus, + bool allBlocksReceived, int minNbBlocks, int minNbOriginalBlocks, int maxNbRecovery, @@ -239,6 +244,7 @@ public: m_tv_sec(tv_sec), m_tv_usec(tv_usec), m_framesDecodingStatus(framesDecodingStatus), + m_allBlocksReceived(allBlocksReceived), m_bufferLenSec(bufferLenSec), m_bufferGauge(bufferGauge), m_minNbBlocks(minNbBlocks), diff --git a/plugins/samplesource/sdrdaemonfec/sdrdaemonfecudphandler.cpp b/plugins/samplesource/sdrdaemonfec/sdrdaemonfecudphandler.cpp index 33d245109..731606c6b 100644 --- a/plugins/samplesource/sdrdaemonfec/sdrdaemonfecudphandler.cpp +++ b/plugins/samplesource/sdrdaemonfec/sdrdaemonfecudphandler.cpp @@ -238,6 +238,7 @@ void SDRdaemonFECUDPHandler::tick() m_sdrDaemonBuffer.getBufferLengthInSecs(), m_sdrDaemonBuffer.getBufferGauge(), framesDecodingStatus, + minNbBlocks == nbOriginalBlocks + nbFECblocks, minNbBlocks, minNbOriginalBlocks, m_sdrDaemonBuffer.getMaxNbRecovery(),