From eea3214ec080b9280776b3e314f1a643eee96f1f Mon Sep 17 00:00:00 2001 From: srcejon Date: Wed, 13 Mar 2024 22:41:34 +0000 Subject: [PATCH] Fix power report and bandwidth widget. --- plugins/channelrx/channelpower/channelpower.cpp | 8 ++++---- .../channelrx/channelpower/channelpowergui.cpp | 16 +++++++++------- .../channelrx/channelpower/channelpowergui.ui | 8 +++++++- .../channelpower/channelpowersettings.cpp | 4 ++-- 4 files changed, 22 insertions(+), 14 deletions(-) diff --git a/plugins/channelrx/channelpower/channelpower.cpp b/plugins/channelrx/channelpower/channelpower.cpp index d44184b7d..b57c70efb 100644 --- a/plugins/channelrx/channelpower/channelpower.cpp +++ b/plugins/channelrx/channelpower/channelpower.cpp @@ -418,10 +418,10 @@ void ChannelPower::webapiFormatChannelReport(SWGSDRangel::SWGChannelReport& resp double magAvg, magPulseAvg, magMaxPeak, magMinPeak; getMagLevels(magAvg, magPulseAvg, magMaxPeak, magMinPeak); - response.getChannelPowerReport()->setChannelPowerDb(CalcDb::dbPower(magAvg)); - response.getChannelPowerReport()->setChannelPowerMaxDb(CalcDb::dbPower(magMaxPeak)); - response.getChannelPowerReport()->setChannelPowerMinDb(CalcDb::dbPower(magMinPeak)); - response.getChannelPowerReport()->setChannelPowerPulseDb(CalcDb::dbPower(magPulseAvg)); + response.getChannelPowerReport()->setChannelPowerDb(CalcDb::dbPower(magAvg * magAvg)); + response.getChannelPowerReport()->setChannelPowerMaxDb(CalcDb::dbPower(magMaxPeak * magMaxPeak)); + response.getChannelPowerReport()->setChannelPowerMinDb(CalcDb::dbPower(magMinPeak * magMinPeak)); + response.getChannelPowerReport()->setChannelPowerPulseDb(CalcDb::dbPower(magPulseAvg * magPulseAvg)); response.getChannelPowerReport()->setChannelSampleRate(m_basebandSink->getChannelSampleRate()); } diff --git a/plugins/channelrx/channelpower/channelpowergui.cpp b/plugins/channelrx/channelpower/channelpowergui.cpp index edb4acab4..2ef3f9398 100644 --- a/plugins/channelrx/channelpower/channelpowergui.cpp +++ b/plugins/channelrx/channelpower/channelpowergui.cpp @@ -92,7 +92,7 @@ bool ChannelPowerGUI::handleMessage(const Message& message) m_basebandSampleRate = notif.getSampleRate(); ui->deltaFrequency->setValueRange(false, 7, -m_basebandSampleRate/2, m_basebandSampleRate/2); ui->deltaFrequencyLabel->setToolTip(tr("Range %1 %L2 Hz").arg(QChar(0xB1)).arg(m_basebandSampleRate/2)); - ui->rfBW->setValueRange(false, ceil(log10(m_basebandSampleRate)), 0, m_basebandSampleRate); + ui->rfBW->setValueRange(floor(log10(m_basebandSampleRate))+1, 0, m_basebandSampleRate); updateAbsoluteCenterFrequency(); return true; } @@ -260,7 +260,7 @@ ChannelPowerGUI::ChannelPowerGUI(PluginAPI* pluginAPI, DeviceUISet *deviceUISet, ui->deltaFrequency->setValueRange(false, 7, -9999999, 9999999); ui->rfBW->setColorMapper(ColorMapper(ColorMapper::GrayGold)); - ui->rfBW->setValueRange(false, 7, -9999999, 9999999); + ui->rfBW->setValueRange(7, 0, 9999999); m_channelMarker.blockSignals(true); m_channelMarker.setColor(Qt::yellow); @@ -378,11 +378,13 @@ void ChannelPowerGUI::tick() powDbMinPeak = std::numeric_limits::quiet_NaN(); powDbPathLoss = std::numeric_limits::quiet_NaN(); + const int precision = 2; + if (!std::isnan(magAvg)) { powDbAvg = CalcDb::dbPower(magAvg * magAvg); if (m_tickCount % 4 == 0) { - ui->average->setText(QString::number(powDbAvg, 'f', 1)); + ui->average->setText(QString::number(powDbAvg, 'f', precision)); } } else @@ -393,7 +395,7 @@ void ChannelPowerGUI::tick() { powDbPulseAvg = CalcDb::dbPower(magPulseAvg * magPulseAvg); if (m_tickCount % 4 == 0) { - ui->pulseAverage->setText(QString::number(powDbPulseAvg, 'f', 1)); + ui->pulseAverage->setText(QString::number(powDbPulseAvg, 'f', precision)); } } else @@ -404,7 +406,7 @@ void ChannelPowerGUI::tick() { powDbMaxPeak = CalcDb::dbPower(magMaxPeak * magMaxPeak); if (m_tickCount % 4 == 0) { - ui->maxPeak->setText(QString::number(powDbMaxPeak, 'f', 1)); + ui->maxPeak->setText(QString::number(powDbMaxPeak, 'f', precision)); } } else @@ -415,7 +417,7 @@ void ChannelPowerGUI::tick() { powDbMinPeak = CalcDb::dbPower(magMinPeak * magMinPeak); if (m_tickCount % 4 == 0) { - ui->minPeak->setText(QString::number(powDbMinPeak, 'f', 1)); + ui->minPeak->setText(QString::number(powDbMinPeak, 'f', precision)); } } else @@ -434,7 +436,7 @@ void ChannelPowerGUI::on_clearMeasurements_clicked() void ChannelPowerGUI::makeUIConnections() { QObject::connect(ui->deltaFrequency, &ValueDialZ::changed, this, &ChannelPowerGUI::on_deltaFrequency_changed); - QObject::connect(ui->rfBW, &ValueDialZ::changed, this, &ChannelPowerGUI::on_rfBW_changed); + QObject::connect(ui->rfBW, &ValueDial::changed, this, &ChannelPowerGUI::on_rfBW_changed); QObject::connect(ui->pulseTH, QOverload::of(&QDial::valueChanged), this, &ChannelPowerGUI::on_pulseTH_valueChanged); QObject::connect(ui->averagePeriod, QOverload::of(&QDial::valueChanged), this, &ChannelPowerGUI::on_averagePeriod_valueChanged); QObject::connect(ui->clearChannelPower, &QPushButton::clicked, this, &ChannelPowerGUI::on_clearMeasurements_clicked); diff --git a/plugins/channelrx/channelpower/channelpowergui.ui b/plugins/channelrx/channelpower/channelpowergui.ui index 0cb2da612..3adbd1c2a 100644 --- a/plugins/channelrx/channelpower/channelpowergui.ui +++ b/plugins/channelrx/channelpower/channelpowergui.ui @@ -139,7 +139,7 @@ - + 0 @@ -589,6 +589,12 @@
gui/valuedialz.h
1 + + ValueDial + QWidget +
gui/valuedial.h
+ 1 +
deltaFrequency diff --git a/plugins/channelrx/channelpower/channelpowersettings.cpp b/plugins/channelrx/channelpower/channelpowersettings.cpp index 53d6f6516..5fc0fa06e 100644 --- a/plugins/channelrx/channelpower/channelpowersettings.cpp +++ b/plugins/channelrx/channelpower/channelpowersettings.cpp @@ -33,7 +33,7 @@ ChannelPowerSettings::ChannelPowerSettings() : void ChannelPowerSettings::resetToDefaults() { m_inputFrequencyOffset = 0; - m_rfBandwidth = 16000.0f; + m_rfBandwidth = 10000.0f; m_pulseThreshold= -50.0f; m_averagePeriodUS = 100000; m_rgbColor = QColor(102, 40, 220).rgb(); @@ -99,7 +99,7 @@ bool ChannelPowerSettings::deserialize(const QByteArray& data) QString strtmp; d.readS32(1, &m_inputFrequencyOffset, 0); - d.readFloat(2, &m_rfBandwidth, 16000.0f); + d.readFloat(2, &m_rfBandwidth, 10000.0f); d.readFloat(3, &m_pulseThreshold, 50.0f); d.readS32(4, &m_averagePeriodUS, 100000);