diff --git a/plugins/samplesink/sdrdaemonsink/sdrdaemonsinkgui.cpp b/plugins/samplesink/sdrdaemonsink/sdrdaemonsinkgui.cpp index 21dca7f85..ca16a7939 100644 --- a/plugins/samplesink/sdrdaemonsink/sdrdaemonsinkgui.cpp +++ b/plugins/samplesink/sdrdaemonsink/sdrdaemonsinkgui.cpp @@ -55,6 +55,9 @@ SDRdaemonSinkGui::SDRdaemonSinkGui(DeviceUISet *deviceUISet, QWidget* parent) : { m_countUnrecoverable = 0; m_countRecovered = 0; + m_lastCountUnrecoverable = 0; + m_lastCountRecovered = 0; + m_resetCounts = true; m_paletteGreenText.setColor(QPalette::WindowText, Qt::green); m_paletteRedText.setColor(QPalette::WindowText, Qt::red); @@ -68,6 +71,8 @@ SDRdaemonSinkGui::SDRdaemonSinkGui(DeviceUISet *deviceUISet, QWidget* parent) : ui->sampleRate->setColorMapper(ColorMapper(ColorMapper::GrayGreenYellow)); ui->sampleRate->setValueRange(7, 32000U, 9000000U); + ui->apiAddressLabel->setStyleSheet("QLabel { background:rgb(79,79,79); }"); + connect(&(m_deviceUISet->m_deviceSinkAPI->getMasterTimer()), SIGNAL(timeout()), this, SLOT(tick())); connect(&m_updateTimer, SIGNAL(timeout()), this, SLOT(updateHardware())); connect(&m_statusTimer, SIGNAL(timeout()), this, SLOT(updateStatus())); @@ -428,6 +433,23 @@ void SDRdaemonSinkGui::displayEventCounts() ui->eventRecText->setText(nstr); } +void SDRdaemonSinkGui::displayEventStatus(int recoverableCount, int unrecoverableCount) +{ + + if (unrecoverableCount == 0) + { + if (recoverableCount == 0) { + ui->allFramesDecoded->setStyleSheet("QToolButton { background-color : green; }"); + } else { + ui->allFramesDecoded->setStyleSheet("QToolButton { background:rgb(79,79,79); }"); + } + } + else + { + ui->allFramesDecoded->setStyleSheet("QToolButton { background-color : red; }"); + } +} + void SDRdaemonSinkGui::displayEventTimer() { int elapsedTimeMillis = m_time.elapsed(); @@ -473,6 +495,7 @@ void SDRdaemonSinkGui::networkManagerFinished(QNetworkReply *reply) { if (reply->error()) { + ui->apiAddressLabel->setStyleSheet("QLabel { background:rgb(79,79,79); }"); qDebug() << "SDRdaemonSinkGui::networkManagerFinished" << reply->errorString(); return; } @@ -487,16 +510,19 @@ void SDRdaemonSinkGui::networkManagerFinished(QNetworkReply *reply) if (error.error == QJsonParseError::NoError) { + ui->apiAddressLabel->setStyleSheet("QLabel { background-color : green; }"); analyzeChannelReport(doc.object()); } else { + ui->apiAddressLabel->setStyleSheet("QLabel { background:rgb(79,79,79); }"); QString errorMsg = QString("Reply JSON error: ") + error.errorString() + QString(" at offset ") + QString::number(error.offset); qDebug().noquote() << "SDRdaemonSinkGui::networkManagerFinished" << errorMsg; } } catch (const std::exception& ex) { + ui->apiAddressLabel->setStyleSheet("QLabel { background:rgb(79,79,79); }"); QString errorMsg = QString("Error parsing request: ") + ex.what(); qDebug().noquote() << "SDRdaemonSinkGui::networkManagerFinished" << errorMsg; } @@ -513,5 +539,21 @@ void SDRdaemonSinkGui::analyzeChannelReport(const QJsonObject& jsonObject) QString queueLengthText = QString("%1/%2").arg(queueLength).arg(queueSize); ui->queueLengthText->setText(queueLengthText); ui->queueLengthGauge->setValue((queueLength*100)/queueSize); + int unrecoverableCount = report["uncorrectableErrorsCount"].toInt(); + int recoverableCount = report["correctableErrorsCount"].toInt(); + + if (!m_resetCounts) + { + int recoverableCountDelta = recoverableCount - m_lastCountRecovered; + int unrecoverableCountDelta = unrecoverableCount - m_lastCountUnrecoverable; + displayEventStatus(recoverableCountDelta, unrecoverableCountDelta); + m_countRecovered += recoverableCountDelta; + m_countUnrecoverable += unrecoverableCountDelta; + displayEventCounts(); + } + + m_resetCounts = false; + m_lastCountRecovered = recoverableCount; + m_lastCountUnrecoverable = unrecoverableCount; } } diff --git a/plugins/samplesink/sdrdaemonsink/sdrdaemonsinkgui.h b/plugins/samplesink/sdrdaemonsink/sdrdaemonsinkgui.h index 0e5b7edcf..80c046c30 100644 --- a/plugins/samplesink/sdrdaemonsink/sdrdaemonsinkgui.h +++ b/plugins/samplesink/sdrdaemonsink/sdrdaemonsinkgui.h @@ -79,6 +79,9 @@ private: uint32_t m_countUnrecoverable; uint32_t m_countRecovered; + uint32_t m_lastCountUnrecoverable; + uint32_t m_lastCountRecovered; + bool m_resetCounts; QTime m_time; QPalette m_paletteGreenText; @@ -99,6 +102,7 @@ private: void updateSampleRateAndFrequency(); void updateTxDelayTooltip(); void displayEventCounts(); + void displayEventStatus(int recoverableCount, int unrecoverableCount); void displayEventTimer(); void analyzeChannelReport(const QJsonObject& jsonObject); diff --git a/plugins/samplesink/sdrdaemonsink/sdrdaemonsinkgui.ui b/plugins/samplesink/sdrdaemonsink/sdrdaemonsinkgui.ui index 23b83ab7f..8f36bd25c 100644 --- a/plugins/samplesink/sdrdaemonsink/sdrdaemonsinkgui.ui +++ b/plugins/samplesink/sdrdaemonsink/sdrdaemonsinkgui.ui @@ -498,6 +498,9 @@ 0 + + Green if communication OK else KO + API