1
0
mirror of https://github.com/f4exb/sdrangel.git synced 2025-04-10 13:40:37 -04:00

Frequency tracker (3)

This commit is contained in:
f4exb 2019-05-04 10:02:48 +02:00
parent 230737cac5
commit e1662d2f4e
6 changed files with 55 additions and 24 deletions

View File

@ -190,9 +190,7 @@ void FreqTracker::stop()
Real FreqTracker::getFrequency() const
{
if (!m_settings.m_tracking) {
return 0;
} else if (m_settings.m_trackerType == FreqTrackerSettings::TrackerPLL) {
if (m_settings.m_trackerType == FreqTrackerSettings::TrackerPLL) {
return (m_pll.getFreq() * m_channelSampleRate) / (2.0 * M_PI);
} else if (m_settings.m_trackerType == FreqTrackerSettings::TrackerFLL) {
return (m_fll.getFreq() * m_channelSampleRate) / (2.0 * M_PI);

View File

@ -147,7 +147,7 @@ public:
uint32_t getSampleRate() const { return m_channelSampleRate; }
double getMagSq() const { return m_magsq; }
bool getSquelchOpen() const { return m_squelchOpen; }
bool getPllLocked() const { return m_settings.m_tracking && (m_settings.m_trackerType == FreqTrackerSettings::TrackerPLL) && m_pll.locked(); }
bool getPllLocked() const { return (m_settings.m_trackerType == FreqTrackerSettings::TrackerPLL) && m_pll.locked(); }
Real getFrequency() const;
void getMagSqLevels(double& avg, double& peak, int& nbSamples)

View File

@ -334,15 +334,23 @@ void FreqTrackerGUI::displaySettings()
blockApplySettings(true);
ui->deltaFrequency->setValue(m_channelMarker.getCenterFrequency());
ui->log2Decim->setCurrentIndex(m_settings.m_log2Decim);
int displayValue = m_settings.m_rfBandwidth/100.0;
ui->rfBW->setValue(displayValue);
ui->rfBWText->setText(QString("%1 kHz").arg(displayValue / 10.0, 0, 'f', 1));
ui->squelch->setValue(m_settings.m_squelch);
ui->squelchText->setText(QString("%1 dB").arg(m_settings.m_squelch));
ui->tracking->setChecked(m_settings.m_tracking);
ui->trackerType->setCurrentIndex((int) m_settings.m_trackerType);
int i = 0;
for(; ((m_settings.m_pllPskOrder>>i) & 1) == 0; i++);
ui->pllPskOrder->setCurrentIndex(i);
ui->rrc->setChecked(m_settings.m_rrc);
ui->rrcRolloff->setValue(m_settings.m_rrcRolloff);
QString rolloffStr = QString::number(m_settings.m_rrcRolloff/100.0, 'f', 2);
ui->rrcRolloffText->setText(rolloffStr);
blockApplySettings(false);
}
@ -382,19 +390,19 @@ void FreqTrackerGUI::tick()
ui->squelchLabel->setStyleSheet("QLabel { background:rgb(50,50,50); }");
}
if (m_settings.m_tracking)
{
if (m_freqTracker->getPllLocked()) {
ui->tracking->setStyleSheet("QToolButton { background-color : green; }");
} else {
ui->tracking->setStyleSheet("QToolButton { background:rgb(79,79,79); }");
}
if (m_freqTracker->getPllLocked()) {
ui->tracking->setStyleSheet("QToolButton { background-color : green; }");
} else {
ui->tracking->setStyleSheet("QToolButton { background:rgb(79,79,79); }");
}
int freq = m_freqTracker->getFrequency();
ui->tracking->setToolTip(tr("Tracking on. Freq = %1 Hz").arg(freq));
}
else
{
int freq = m_freqTracker->getFrequency();
QLocale loc;
ui->trackingFrequencyText->setText(tr("%1 Hz").arg(loc.toString(freq)));
if (m_settings.m_tracking) {
ui->tracking->setToolTip("Tracking on");
} else {
ui->tracking->setToolTip("Tracking off");
}

View File

@ -6,7 +6,7 @@
<rect>
<x>0</x>
<y>0</y>
<width>350</width>
<width>360</width>
<height>145</height>
</rect>
</property>
@ -18,13 +18,13 @@
</property>
<property name="minimumSize">
<size>
<width>350</width>
<width>360</width>
<height>100</height>
</size>
</property>
<property name="maximumSize">
<size>
<width>350</width>
<width>360</width>
<height>16777215</height>
</size>
</property>
@ -45,7 +45,7 @@
<rect>
<x>0</x>
<y>0</y>
<width>348</width>
<width>358</width>
<height>140</height>
</rect>
</property>
@ -130,6 +130,25 @@
</property>
</widget>
</item>
<item>
<widget class="QLabel" name="trackingFrequencyText">
<property name="minimumSize">
<size>
<width>85</width>
<height>0</height>
</size>
</property>
<property name="toolTip">
<string>Tracking delta frequency (Hz)</string>
</property>
<property name="text">
<string>-9,999,999 Hz</string>
</property>
<property name="alignment">
<set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
</property>
</widget>
</item>
<item>
<spacer name="horizontalSpacer">
<property name="orientation">
@ -375,6 +394,11 @@
<property name="toolTip">
<string>Tracking type</string>
</property>
<item>
<property name="text">
<string>No</string>
</property>
</item>
<item>
<property name="text">
<string>FLL</string>

View File

@ -111,7 +111,7 @@ bool FreqTrackerSettings::deserialize(const QByteArray& data)
d.readString(9, &m_title, "Frequency Tracker");
d.readBool(10, &m_tracking, false);
d.readS32(12, &tmp, 0);
m_trackerType = tmp < 0 ? TrackerFLL : tmp > 1 ? TrackerPLL : (TrackerType) tmp;
m_trackerType = tmp < 0 ? TrackerFLL : tmp > 2 ? TrackerPLL : (TrackerType) tmp;
d.readU32(13, &utmp, 2);
m_pllPskOrder = utmp > 32 ? 32 : utmp;
d.readBool(14, &m_rrc, false);

View File

@ -29,6 +29,7 @@ struct FreqTrackerSettings
{
enum TrackerType
{
TrackerNone,
TrackerFLL,
TrackerPLL
};