M17 demod: reset BER stats manually

This commit is contained in:
f4exb 2022-07-09 10:56:16 +02:00
parent 9c6ce3ad9e
commit f47496645f
9 changed files with 42 additions and 14 deletions

View File

@ -246,6 +246,8 @@ public:
m_basebandSink->getBERT(bertErrors, bertBits); m_basebandSink->getBERT(bertErrors, bertBits);
} }
void resetPRBS() { m_basebandSink->resetPRBS(); }
uint32_t getLSFCount() const { return m_basebandSink->getLSFCount(); } uint32_t getLSFCount() const { return m_basebandSink->getLSFCount(); }
const QString& getSrcCall() const { return m_basebandSink->getSrcCall(); } const QString& getSrcCall() const { return m_basebandSink->getSrcCall(); }
const QString& getDestcCall() const { return m_basebandSink->getDestcCall(); } const QString& getDestcCall() const { return m_basebandSink->getDestcCall(); }

View File

@ -107,6 +107,8 @@ public:
m_sink.getBERT(bertErrors, bertBits); m_sink.getBERT(bertErrors, bertBits);
} }
void resetPRBS() { m_sink.resetPRBS(); }
uint32_t getLSFCount() const { return m_sink.getLSFCount(); } uint32_t getLSFCount() const { return m_sink.getLSFCount(); }
const QString& getSrcCall() const { return m_sink.getSrcCall(); } const QString& getSrcCall() const { return m_sink.getSrcCall(); }
const QString& getDestcCall() const { return m_sink.getDestcCall(); } const QString& getDestcCall() const { return m_sink.getDestcCall(); }

View File

@ -311,6 +311,15 @@ void M17DemodGUI::on_berButton_toggled(bool checked)
m_showBERNumbersOrRates = !checked; m_showBERNumbersOrRates = !checked;
} }
void M17DemodGUI::on_berReset_clicked()
{
m_m17Demod->resetPRBS();
m_lastBERErrors = 0;
m_lastBERBits = 0;
m_berPoints.clear();
m_currentErrors.clear();
}
void M17DemodGUI::onWidgetRolled(QWidget* widget, bool rollDown) void M17DemodGUI::onWidgetRolled(QWidget* widget, bool rollDown)
{ {
(void) widget; (void) widget;
@ -826,15 +835,6 @@ void M17DemodGUI::tick()
series->attachAxis(berChartYAxis); series->attachAxis(berChartYAxis);
} }
} }
else
{
// qDebug("M17DemodGUI::tick: BER reset: status: %d sync_word_type: %d", status, sync_word_type);
m_lastBERErrors = 0;
m_lastBERBits = 0;
m_berPoints.clear();
m_currentErrors.clear();
}
} }
m_tickCount++; m_tickCount++;
@ -973,6 +973,7 @@ void M17DemodGUI::makeUIConnections()
QObject::connect(ui->curButton, &ButtonSwitch::toggled, this, &M17DemodGUI::on_curButton_toggled); QObject::connect(ui->curButton, &ButtonSwitch::toggled, this, &M17DemodGUI::on_curButton_toggled);
QObject::connect(ui->berButton, &ButtonSwitch::toggled, this, &M17DemodGUI::on_berButton_toggled); QObject::connect(ui->berButton, &ButtonSwitch::toggled, this, &M17DemodGUI::on_berButton_toggled);
QObject::connect(ui->berHistory, &QDial::valueChanged, this, &M17DemodGUI::on_berHistory_valueChanged); QObject::connect(ui->berHistory, &QDial::valueChanged, this, &M17DemodGUI::on_berHistory_valueChanged);
QObject::connect(ui->berReset, &QPushButton::clicked, this, &M17DemodGUI::on_berReset_clicked);
} }
void M17DemodGUI::updateAbsoluteCenterFrequency() void M17DemodGUI::updateAbsoluteCenterFrequency()

View File

@ -158,6 +158,7 @@ private slots:
void on_curButton_toggled(bool checked); void on_curButton_toggled(bool checked);
void on_berButton_toggled(bool checked); void on_berButton_toggled(bool checked);
void on_berHistory_valueChanged(int value); void on_berHistory_valueChanged(int value);
void on_berReset_clicked();
void onWidgetRolled(QWidget* widget, bool rollDown); void onWidgetRolled(QWidget* widget, bool rollDown);
void onMenuDialogCalled(const QPoint& p); void onMenuDialogCalled(const QPoint& p);
void on_viewStatusLog_clicked(); void on_viewStatusLog_clicked();

View File

@ -1847,6 +1847,26 @@
<string>BER</string> <string>BER</string>
</property> </property>
</widget> </widget>
<widget class="QPushButton" name="berReset">
<property name="geometry">
<rect>
<x>440</x>
<y>10</y>
<width>28</width>
<height>28</height>
</rect>
</property>
<property name="toolTip">
<string>Reset BER (PRBS)</string>
</property>
<property name="text">
<string/>
</property>
<property name="icon">
<iconset resource="../../../sdrgui/resources/res.qrc">
<normaloff>:/recycle.png</normaloff>:/recycle.png</iconset>
</property>
</widget>
</widget> </widget>
</widget> </widget>
</item> </item>

View File

@ -138,10 +138,6 @@ void M17DemodProcessor::diagnostic_callback(
qDebug() << "M17DemodProcessor::diagnostic_callback: " << oss.str().c_str(); qDebug() << "M17DemodProcessor::diagnostic_callback: " << oss.str().c_str();
} }
if ((!dcd) && m_this->m_prbs.sync()) { // Seems like there should be a better way to do this.
m_this->m_prbs.reset();
}
if (m_this->m_prbs.sync() && !quiet) if (m_this->m_prbs.sync() && !quiet)
{ {
std::ostringstream oss; std::ostringstream oss;

View File

@ -98,6 +98,10 @@ public:
bertBits = m_prbs.bits(); bertBits = m_prbs.bits();
} }
void resetPRBS() {
m_prbs.reset();
}
private: private:
std::vector<uint8_t> m_currentPacket; std::vector<uint8_t> m_currentPacket;
size_t m_packetFrameCounter; size_t m_packetFrameCounter;

View File

@ -109,6 +109,8 @@ public:
m_m17DemodProcessor.getBERT(bertErrors, bertBits); m_m17DemodProcessor.getBERT(bertErrors, bertBits);
} }
void resetPRBS() { m_m17DemodProcessor.resetPRBS(); }
uint32_t getLSFCount() const { return m_m17DemodProcessor.getLSFCount(); } uint32_t getLSFCount() const { return m_m17DemodProcessor.getLSFCount(); }
const QString& getSrcCall() const { return m_m17DemodProcessor.getSrcCall(); } const QString& getSrcCall() const { return m_m17DemodProcessor.getSrcCall(); }
const QString& getDestcCall() const { return m_m17DemodProcessor.getDestcCall(); } const QString& getDestcCall() const { return m_m17DemodProcessor.getDestcCall(); }

View File

@ -72,7 +72,7 @@ bool M17ModProcessor::handleMessage(const Message& cmd)
if (notif.getInsertPosition()) if (notif.getInsertPosition())
{ {
if (m_insertPositionToggle) { if (m_insertPositionToggle) {
strData += "!" + formatAPRSPosition(); strData = "!" + formatAPRSPosition();
} else { } else {
strData = notif.getData(); strData = notif.getData();
} }