Fix power report and bandwidth widget.

pull/2019/head
srcejon 2024-03-13 22:41:34 +00:00
rodzic 6a2a4d1281
commit eea3214ec0
4 zmienionych plików z 22 dodań i 14 usunięć

Wyświetl plik

@ -418,10 +418,10 @@ void ChannelPower::webapiFormatChannelReport(SWGSDRangel::SWGChannelReport& resp
double magAvg, magPulseAvg, magMaxPeak, magMinPeak; double magAvg, magPulseAvg, magMaxPeak, magMinPeak;
getMagLevels(magAvg, magPulseAvg, magMaxPeak, magMinPeak); getMagLevels(magAvg, magPulseAvg, magMaxPeak, magMinPeak);
response.getChannelPowerReport()->setChannelPowerDb(CalcDb::dbPower(magAvg)); response.getChannelPowerReport()->setChannelPowerDb(CalcDb::dbPower(magAvg * magAvg));
response.getChannelPowerReport()->setChannelPowerMaxDb(CalcDb::dbPower(magMaxPeak)); response.getChannelPowerReport()->setChannelPowerMaxDb(CalcDb::dbPower(magMaxPeak * magMaxPeak));
response.getChannelPowerReport()->setChannelPowerMinDb(CalcDb::dbPower(magMinPeak)); response.getChannelPowerReport()->setChannelPowerMinDb(CalcDb::dbPower(magMinPeak * magMinPeak));
response.getChannelPowerReport()->setChannelPowerPulseDb(CalcDb::dbPower(magPulseAvg)); response.getChannelPowerReport()->setChannelPowerPulseDb(CalcDb::dbPower(magPulseAvg * magPulseAvg));
response.getChannelPowerReport()->setChannelSampleRate(m_basebandSink->getChannelSampleRate()); response.getChannelPowerReport()->setChannelSampleRate(m_basebandSink->getChannelSampleRate());
} }

Wyświetl plik

@ -92,7 +92,7 @@ bool ChannelPowerGUI::handleMessage(const Message& message)
m_basebandSampleRate = notif.getSampleRate(); m_basebandSampleRate = notif.getSampleRate();
ui->deltaFrequency->setValueRange(false, 7, -m_basebandSampleRate/2, m_basebandSampleRate/2); 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->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(); updateAbsoluteCenterFrequency();
return true; return true;
} }
@ -260,7 +260,7 @@ ChannelPowerGUI::ChannelPowerGUI(PluginAPI* pluginAPI, DeviceUISet *deviceUISet,
ui->deltaFrequency->setValueRange(false, 7, -9999999, 9999999); ui->deltaFrequency->setValueRange(false, 7, -9999999, 9999999);
ui->rfBW->setColorMapper(ColorMapper(ColorMapper::GrayGold)); 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.blockSignals(true);
m_channelMarker.setColor(Qt::yellow); m_channelMarker.setColor(Qt::yellow);
@ -378,11 +378,13 @@ void ChannelPowerGUI::tick()
powDbMinPeak = std::numeric_limits<double>::quiet_NaN(); powDbMinPeak = std::numeric_limits<double>::quiet_NaN();
powDbPathLoss = std::numeric_limits<double>::quiet_NaN(); powDbPathLoss = std::numeric_limits<double>::quiet_NaN();
const int precision = 2;
if (!std::isnan(magAvg)) if (!std::isnan(magAvg))
{ {
powDbAvg = CalcDb::dbPower(magAvg * magAvg); powDbAvg = CalcDb::dbPower(magAvg * magAvg);
if (m_tickCount % 4 == 0) { if (m_tickCount % 4 == 0) {
ui->average->setText(QString::number(powDbAvg, 'f', 1)); ui->average->setText(QString::number(powDbAvg, 'f', precision));
} }
} }
else else
@ -393,7 +395,7 @@ void ChannelPowerGUI::tick()
{ {
powDbPulseAvg = CalcDb::dbPower(magPulseAvg * magPulseAvg); powDbPulseAvg = CalcDb::dbPower(magPulseAvg * magPulseAvg);
if (m_tickCount % 4 == 0) { if (m_tickCount % 4 == 0) {
ui->pulseAverage->setText(QString::number(powDbPulseAvg, 'f', 1)); ui->pulseAverage->setText(QString::number(powDbPulseAvg, 'f', precision));
} }
} }
else else
@ -404,7 +406,7 @@ void ChannelPowerGUI::tick()
{ {
powDbMaxPeak = CalcDb::dbPower(magMaxPeak * magMaxPeak); powDbMaxPeak = CalcDb::dbPower(magMaxPeak * magMaxPeak);
if (m_tickCount % 4 == 0) { if (m_tickCount % 4 == 0) {
ui->maxPeak->setText(QString::number(powDbMaxPeak, 'f', 1)); ui->maxPeak->setText(QString::number(powDbMaxPeak, 'f', precision));
} }
} }
else else
@ -415,7 +417,7 @@ void ChannelPowerGUI::tick()
{ {
powDbMinPeak = CalcDb::dbPower(magMinPeak * magMinPeak); powDbMinPeak = CalcDb::dbPower(magMinPeak * magMinPeak);
if (m_tickCount % 4 == 0) { if (m_tickCount % 4 == 0) {
ui->minPeak->setText(QString::number(powDbMinPeak, 'f', 1)); ui->minPeak->setText(QString::number(powDbMinPeak, 'f', precision));
} }
} }
else else
@ -434,7 +436,7 @@ void ChannelPowerGUI::on_clearMeasurements_clicked()
void ChannelPowerGUI::makeUIConnections() void ChannelPowerGUI::makeUIConnections()
{ {
QObject::connect(ui->deltaFrequency, &ValueDialZ::changed, this, &ChannelPowerGUI::on_deltaFrequency_changed); 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<int>::of(&QDial::valueChanged), this, &ChannelPowerGUI::on_pulseTH_valueChanged); QObject::connect(ui->pulseTH, QOverload<int>::of(&QDial::valueChanged), this, &ChannelPowerGUI::on_pulseTH_valueChanged);
QObject::connect(ui->averagePeriod, QOverload<int>::of(&QDial::valueChanged), this, &ChannelPowerGUI::on_averagePeriod_valueChanged); QObject::connect(ui->averagePeriod, QOverload<int>::of(&QDial::valueChanged), this, &ChannelPowerGUI::on_averagePeriod_valueChanged);
QObject::connect(ui->clearChannelPower, &QPushButton::clicked, this, &ChannelPowerGUI::on_clearMeasurements_clicked); QObject::connect(ui->clearChannelPower, &QPushButton::clicked, this, &ChannelPowerGUI::on_clearMeasurements_clicked);

Wyświetl plik

@ -139,7 +139,7 @@
</widget> </widget>
</item> </item>
<item> <item>
<widget class="ValueDialZ" name="rfBW" native="true"> <widget class="ValueDial" name="rfBW" native="true">
<property name="sizePolicy"> <property name="sizePolicy">
<sizepolicy hsizetype="Maximum" vsizetype="Maximum"> <sizepolicy hsizetype="Maximum" vsizetype="Maximum">
<horstretch>0</horstretch> <horstretch>0</horstretch>
@ -589,6 +589,12 @@
<header>gui/valuedialz.h</header> <header>gui/valuedialz.h</header>
<container>1</container> <container>1</container>
</customwidget> </customwidget>
<customwidget>
<class>ValueDial</class>
<extends>QWidget</extends>
<header>gui/valuedial.h</header>
<container>1</container>
</customwidget>
</customwidgets> </customwidgets>
<tabstops> <tabstops>
<tabstop>deltaFrequency</tabstop> <tabstop>deltaFrequency</tabstop>

Wyświetl plik

@ -33,7 +33,7 @@ ChannelPowerSettings::ChannelPowerSettings() :
void ChannelPowerSettings::resetToDefaults() void ChannelPowerSettings::resetToDefaults()
{ {
m_inputFrequencyOffset = 0; m_inputFrequencyOffset = 0;
m_rfBandwidth = 16000.0f; m_rfBandwidth = 10000.0f;
m_pulseThreshold= -50.0f; m_pulseThreshold= -50.0f;
m_averagePeriodUS = 100000; m_averagePeriodUS = 100000;
m_rgbColor = QColor(102, 40, 220).rgb(); m_rgbColor = QColor(102, 40, 220).rgb();
@ -99,7 +99,7 @@ bool ChannelPowerSettings::deserialize(const QByteArray& data)
QString strtmp; QString strtmp;
d.readS32(1, &m_inputFrequencyOffset, 0); 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.readFloat(3, &m_pulseThreshold, 50.0f);
d.readS32(4, &m_averagePeriodUS, 100000); d.readS32(4, &m_averagePeriodUS, 100000);