mirror of https://github.com/f4exb/sdrangel.git
Frequency tracker: added alpha factor of EMA control
This commit is contained in:
parent
4c278eef8d
commit
f63b0fe96c
|
@ -253,9 +253,11 @@ bool FreqTracker::handleMessage(const Message& cmd)
|
||||||
{
|
{
|
||||||
DownChannelizer::MsgChannelizerNotification& notif = (DownChannelizer::MsgChannelizerNotification&) cmd;
|
DownChannelizer::MsgChannelizerNotification& notif = (DownChannelizer::MsgChannelizerNotification&) cmd;
|
||||||
|
|
||||||
qDebug() << "FreqTracker::handleMessage: MsgChannelizerNotification:"
|
if (!m_settings.m_tracking) {
|
||||||
<< " inputSampleRate: " << notif.getSampleRate()
|
qDebug() << "FreqTracker::handleMessage: MsgChannelizerNotification:"
|
||||||
<< " inputFrequencyOffset: " << notif.getFrequencyOffset();
|
<< " inputSampleRate: " << notif.getSampleRate()
|
||||||
|
<< " inputFrequencyOffset: " << notif.getFrequencyOffset();
|
||||||
|
}
|
||||||
|
|
||||||
applyChannelSettings(notif.getSampleRate(), notif.getFrequencyOffset());
|
applyChannelSettings(notif.getSampleRate(), notif.getFrequencyOffset());
|
||||||
setInterpolator();
|
setInterpolator();
|
||||||
|
@ -278,9 +280,11 @@ bool FreqTracker::handleMessage(const Message& cmd)
|
||||||
|
|
||||||
void FreqTracker::applyChannelSettings(int inputSampleRate, int inputFrequencyOffset, bool force)
|
void FreqTracker::applyChannelSettings(int inputSampleRate, int inputFrequencyOffset, bool force)
|
||||||
{
|
{
|
||||||
qDebug() << "FreqTracker::applyChannelSettings:"
|
if (!m_settings.m_tracking) {
|
||||||
<< " inputSampleRate: " << inputSampleRate
|
qDebug() << "FreqTracker::applyChannelSettings:"
|
||||||
<< " inputFrequencyOffset: " << inputFrequencyOffset;
|
<< " inputSampleRate: " << inputSampleRate
|
||||||
|
<< " inputFrequencyOffset: " << inputFrequencyOffset;
|
||||||
|
}
|
||||||
|
|
||||||
if ((m_inputFrequencyOffset != inputFrequencyOffset) ||
|
if ((m_inputFrequencyOffset != inputFrequencyOffset) ||
|
||||||
(m_inputSampleRate != inputSampleRate) || force)
|
(m_inputSampleRate != inputSampleRate) || force)
|
||||||
|
@ -298,24 +302,28 @@ void FreqTracker::applyChannelSettings(int inputSampleRate, int inputFrequencyOf
|
||||||
|
|
||||||
void FreqTracker::applySettings(const FreqTrackerSettings& settings, bool force)
|
void FreqTracker::applySettings(const FreqTrackerSettings& settings, bool force)
|
||||||
{
|
{
|
||||||
qDebug() << "FreqTracker::applySettings:"
|
if (!settings.m_tracking)
|
||||||
<< " m_inputFrequencyOffset: " << settings.m_inputFrequencyOffset
|
{
|
||||||
<< " m_rfBandwidth: " << settings.m_rfBandwidth
|
qDebug() << "FreqTracker::applySettings:"
|
||||||
<< " m_log2Decim: " << settings.m_log2Decim
|
<< " m_inputFrequencyOffset: " << settings.m_inputFrequencyOffset
|
||||||
<< " m_squelch: " << settings.m_squelch
|
<< " m_rfBandwidth: " << settings.m_rfBandwidth
|
||||||
<< " m_rgbColor: " << settings.m_rgbColor
|
<< " m_log2Decim: " << settings.m_log2Decim
|
||||||
<< " m_title: " << settings.m_title
|
<< " m_squelch: " << settings.m_squelch
|
||||||
<< " m_tracking: " << settings.m_tracking
|
<< " m_rgbColor: " << settings.m_rgbColor
|
||||||
<< " m_trackerType: " << settings.m_trackerType
|
<< " m_title: " << settings.m_title
|
||||||
<< " m_pllPskOrder: " << settings.m_pllPskOrder
|
<< " m_alphaEMA: " << settings.m_alphaEMA
|
||||||
<< " m_rrc: " << settings.m_rrc
|
<< " m_tracking: " << settings.m_tracking
|
||||||
<< " m_rrcRolloff: " << settings.m_rrcRolloff
|
<< " m_trackerType: " << settings.m_trackerType
|
||||||
<< " m_useReverseAPI: " << settings.m_useReverseAPI
|
<< " m_pllPskOrder: " << settings.m_pllPskOrder
|
||||||
<< " m_reverseAPIAddress: " << settings.m_reverseAPIAddress
|
<< " m_rrc: " << settings.m_rrc
|
||||||
<< " m_reverseAPIPort: " << settings.m_reverseAPIPort
|
<< " m_rrcRolloff: " << settings.m_rrcRolloff
|
||||||
<< " m_reverseAPIDeviceIndex: " << settings.m_reverseAPIDeviceIndex
|
<< " m_useReverseAPI: " << settings.m_useReverseAPI
|
||||||
<< " m_reverseAPIChannelIndex: " << settings.m_reverseAPIChannelIndex
|
<< " m_reverseAPIAddress: " << settings.m_reverseAPIAddress
|
||||||
<< " force: " << force;
|
<< " m_reverseAPIPort: " << settings.m_reverseAPIPort
|
||||||
|
<< " m_reverseAPIDeviceIndex: " << settings.m_reverseAPIDeviceIndex
|
||||||
|
<< " m_reverseAPIChannelIndex: " << settings.m_reverseAPIChannelIndex
|
||||||
|
<< " force: " << force;
|
||||||
|
}
|
||||||
|
|
||||||
QList<QString> reverseAPIKeys;
|
QList<QString> reverseAPIKeys;
|
||||||
bool updateChannelizer = false;
|
bool updateChannelizer = false;
|
||||||
|
@ -351,6 +359,9 @@ void FreqTracker::applySettings(const FreqTrackerSettings& settings, bool force)
|
||||||
if ((m_settings.m_title != settings.m_title) || force) {
|
if ((m_settings.m_title != settings.m_title) || force) {
|
||||||
reverseAPIKeys.append("title");
|
reverseAPIKeys.append("title");
|
||||||
}
|
}
|
||||||
|
if ((m_settings.m_alphaEMA != settings.m_alphaEMA) || force) {
|
||||||
|
reverseAPIKeys.append("alphaEMA");
|
||||||
|
}
|
||||||
|
|
||||||
if ((m_settings.m_tracking != settings.m_tracking) || force)
|
if ((m_settings.m_tracking != settings.m_tracking) || force)
|
||||||
{
|
{
|
||||||
|
@ -440,9 +451,11 @@ void FreqTracker::configureChannelizer()
|
||||||
m_fll.setSampleRate(m_channelSampleRate);
|
m_fll.setSampleRate(m_channelSampleRate);
|
||||||
}
|
}
|
||||||
|
|
||||||
qDebug() << "FreqTracker::configureChannelizer:"
|
if (!m_settings.m_tracking) {
|
||||||
<< " sampleRate: " << m_channelSampleRate
|
qDebug() << "FreqTracker::configureChannelizer:"
|
||||||
<< " inputFrequencyOffset: " << m_settings.m_inputFrequencyOffset;
|
<< " sampleRate: " << m_channelSampleRate
|
||||||
|
<< " inputFrequencyOffset: " << m_settings.m_inputFrequencyOffset;
|
||||||
|
}
|
||||||
|
|
||||||
m_channelizer->configure(m_channelizer->getInputMessageQueue(),
|
m_channelizer->configure(m_channelizer->getInputMessageQueue(),
|
||||||
m_channelSampleRate,
|
m_channelSampleRate,
|
||||||
|
@ -536,6 +549,10 @@ int FreqTracker::webapiSettingsPutPatch(
|
||||||
if (channelSettingsKeys.contains("title")) {
|
if (channelSettingsKeys.contains("title")) {
|
||||||
settings.m_title = *response.getFreqTrackerSettings()->getTitle();
|
settings.m_title = *response.getFreqTrackerSettings()->getTitle();
|
||||||
}
|
}
|
||||||
|
if (channelSettingsKeys.contains("alphaEMA")) {
|
||||||
|
float alphaEMA = response.getFreqTrackerSettings()->getAlphaEma();
|
||||||
|
settings.m_alphaEMA = alphaEMA < 0.01 ? 0.01 : alphaEMA > 1.0 ? 1.0 : alphaEMA;
|
||||||
|
}
|
||||||
if (channelSettingsKeys.contains("tracking")) {
|
if (channelSettingsKeys.contains("tracking")) {
|
||||||
settings.m_tracking = response.getFreqTrackerSettings()->getTracking() ? 1 : 0;
|
settings.m_tracking = response.getFreqTrackerSettings()->getTracking() ? 1 : 0;
|
||||||
}
|
}
|
||||||
|
@ -707,7 +724,7 @@ void FreqTracker::networkManagerFinished(QNetworkReply *reply)
|
||||||
void FreqTracker::tick()
|
void FreqTracker::tick()
|
||||||
{
|
{
|
||||||
if (getSquelchOpen()) {
|
if (getSquelchOpen()) {
|
||||||
m_avgDeltaFreq = 0.1*getFrequency() + 0.9*m_avgDeltaFreq;
|
m_avgDeltaFreq = m_settings.m_alphaEMA*getFrequency() + (1.0 - m_settings.m_alphaEMA)*m_avgDeltaFreq;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (m_tickCount < 19)
|
if (m_tickCount < 19)
|
||||||
|
@ -718,7 +735,8 @@ void FreqTracker::tick()
|
||||||
{
|
{
|
||||||
if ((m_settings.m_tracking) && getSquelchOpen())
|
if ((m_settings.m_tracking) && getSquelchOpen())
|
||||||
{
|
{
|
||||||
int decayAmount = m_channelSampleRate < 100 ? 1 : m_channelSampleRate / 100;
|
uint32_t decayDivider = 1000.0 * m_settings.m_alphaEMA;
|
||||||
|
int decayAmount = m_channelSampleRate < decayDivider ? 1 : m_channelSampleRate / decayDivider;
|
||||||
|
|
||||||
if (m_lastCorrAbs < decayAmount)
|
if (m_lastCorrAbs < decayAmount)
|
||||||
{
|
{
|
||||||
|
|
|
@ -107,7 +107,9 @@ bool FreqTrackerGUI::handleMessage(const Message& message)
|
||||||
}
|
}
|
||||||
else if (FreqTracker::MsgSampleRateNotification::match(message))
|
else if (FreqTracker::MsgSampleRateNotification::match(message))
|
||||||
{
|
{
|
||||||
qDebug("FreqTrackerGUI::handleMessage: FreqTracker::MsgSampleRateNotification");
|
if (!m_settings.m_tracking) {
|
||||||
|
qDebug("FreqTrackerGUI::handleMessage: FreqTracker::MsgSampleRateNotification");
|
||||||
|
}
|
||||||
const FreqTracker::MsgSampleRateNotification& cfg = (FreqTracker::MsgSampleRateNotification&) message;
|
const FreqTracker::MsgSampleRateNotification& cfg = (FreqTracker::MsgSampleRateNotification&) message;
|
||||||
m_channelSampleRate = cfg.getSampleRate();
|
m_channelSampleRate = cfg.getSampleRate();
|
||||||
ui->channelSampleRateText->setText(tr("%1k").arg(QString::number(m_channelSampleRate / 1000.0f, 'g', 5)));
|
ui->channelSampleRateText->setText(tr("%1k").arg(QString::number(m_channelSampleRate / 1000.0f, 'g', 5)));
|
||||||
|
@ -185,6 +187,14 @@ void FreqTrackerGUI::on_tracking_toggled(bool checked)
|
||||||
applySettings();
|
applySettings();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void FreqTrackerGUI::on_alphaEMA_valueChanged(int value)
|
||||||
|
{
|
||||||
|
m_settings.m_alphaEMA = value / 100.0;
|
||||||
|
QString alphaEMAStr = QString::number(m_settings.m_alphaEMA, 'f', 2);
|
||||||
|
ui->alphaEMAText->setText(alphaEMAStr);
|
||||||
|
applySettings();
|
||||||
|
}
|
||||||
|
|
||||||
void FreqTrackerGUI::on_trackerType_currentIndexChanged(int index)
|
void FreqTrackerGUI::on_trackerType_currentIndexChanged(int index)
|
||||||
{
|
{
|
||||||
m_settings.m_trackerType = (FreqTrackerSettings::TrackerType) index;
|
m_settings.m_trackerType = (FreqTrackerSettings::TrackerType) index;
|
||||||
|
@ -347,6 +357,9 @@ void FreqTrackerGUI::displaySettings()
|
||||||
ui->squelchText->setText(QString("%1 dB").arg(m_settings.m_squelch));
|
ui->squelchText->setText(QString("%1 dB").arg(m_settings.m_squelch));
|
||||||
ui->tracking->setChecked(m_settings.m_tracking);
|
ui->tracking->setChecked(m_settings.m_tracking);
|
||||||
ui->trackerType->setCurrentIndex((int) m_settings.m_trackerType);
|
ui->trackerType->setCurrentIndex((int) m_settings.m_trackerType);
|
||||||
|
QString alphaEMAStr = QString::number(m_settings.m_alphaEMA, 'f', 2);
|
||||||
|
ui->alphaEMAText->setText(alphaEMAStr);
|
||||||
|
ui->alphaEMA->setValue(m_settings.m_alphaEMA*100.0);
|
||||||
|
|
||||||
int i = 0;
|
int i = 0;
|
||||||
for(; ((m_settings.m_pllPskOrder>>i) & 1) == 0; i++);
|
for(; ((m_settings.m_pllPskOrder>>i) & 1) == 0; i++);
|
||||||
|
|
|
@ -88,6 +88,7 @@ private slots:
|
||||||
void on_log2Decim_currentIndexChanged(int index);
|
void on_log2Decim_currentIndexChanged(int index);
|
||||||
void on_rfBW_valueChanged(int value);
|
void on_rfBW_valueChanged(int value);
|
||||||
void on_tracking_toggled(bool checked);
|
void on_tracking_toggled(bool checked);
|
||||||
|
void on_alphaEMA_valueChanged(int value);
|
||||||
void on_trackerType_currentIndexChanged(int index);
|
void on_trackerType_currentIndexChanged(int index);
|
||||||
void on_pllPskOrder_currentIndexChanged(int index);
|
void on_pllPskOrder_currentIndexChanged(int index);
|
||||||
void on_rrc_toggled(bool checked);
|
void on_rrc_toggled(bool checked);
|
||||||
|
|
|
@ -377,6 +377,53 @@
|
||||||
</property>
|
</property>
|
||||||
</widget>
|
</widget>
|
||||||
</item>
|
</item>
|
||||||
|
<item>
|
||||||
|
<widget class="QDial" name="alphaEMA">
|
||||||
|
<property name="minimumSize">
|
||||||
|
<size>
|
||||||
|
<width>24</width>
|
||||||
|
<height>24</height>
|
||||||
|
</size>
|
||||||
|
</property>
|
||||||
|
<property name="maximumSize">
|
||||||
|
<size>
|
||||||
|
<width>24</width>
|
||||||
|
<height>24</height>
|
||||||
|
</size>
|
||||||
|
</property>
|
||||||
|
<property name="toolTip">
|
||||||
|
<string>Alpha factor for delta frequency exponential moving average</string>
|
||||||
|
</property>
|
||||||
|
<property name="minimum">
|
||||||
|
<number>1</number>
|
||||||
|
</property>
|
||||||
|
<property name="maximum">
|
||||||
|
<number>100</number>
|
||||||
|
</property>
|
||||||
|
<property name="pageStep">
|
||||||
|
<number>1</number>
|
||||||
|
</property>
|
||||||
|
</widget>
|
||||||
|
</item>
|
||||||
|
<item>
|
||||||
|
<widget class="QLabel" name="alphaEMAText">
|
||||||
|
<property name="minimumSize">
|
||||||
|
<size>
|
||||||
|
<width>32</width>
|
||||||
|
<height>0</height>
|
||||||
|
</size>
|
||||||
|
</property>
|
||||||
|
<property name="toolTip">
|
||||||
|
<string>Alpha factor for delta frequency exponential moving average</string>
|
||||||
|
</property>
|
||||||
|
<property name="text">
|
||||||
|
<string>0.1</string>
|
||||||
|
</property>
|
||||||
|
<property name="alignment">
|
||||||
|
<set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
|
||||||
|
</property>
|
||||||
|
</widget>
|
||||||
|
</item>
|
||||||
<item>
|
<item>
|
||||||
<widget class="QComboBox" name="trackerType">
|
<widget class="QComboBox" name="trackerType">
|
||||||
<property name="minimumSize">
|
<property name="minimumSize">
|
||||||
|
|
|
@ -36,6 +36,7 @@ void FreqTrackerSettings::resetToDefaults()
|
||||||
m_squelch = -40.0;
|
m_squelch = -40.0;
|
||||||
m_rgbColor = QColor(200, 244, 66).rgb();
|
m_rgbColor = QColor(200, 244, 66).rgb();
|
||||||
m_title = "Frequency Tracker";
|
m_title = "Frequency Tracker";
|
||||||
|
m_alphaEMA = 0.1;
|
||||||
m_tracking = false;
|
m_tracking = false;
|
||||||
m_trackerType = TrackerFLL;
|
m_trackerType = TrackerFLL;
|
||||||
m_pllPskOrder = 2; // BPSK
|
m_pllPskOrder = 2; // BPSK
|
||||||
|
@ -61,6 +62,7 @@ QByteArray FreqTrackerSettings::serialize() const
|
||||||
}
|
}
|
||||||
|
|
||||||
s.writeU32(7, m_rgbColor);
|
s.writeU32(7, m_rgbColor);
|
||||||
|
s.writeFloat(8, m_alphaEMA);
|
||||||
s.writeString(9, m_title);
|
s.writeString(9, m_title);
|
||||||
s.writeBool(10, m_tracking);
|
s.writeBool(10, m_tracking);
|
||||||
s.writeS32(12, (int) m_trackerType);
|
s.writeS32(12, (int) m_trackerType);
|
||||||
|
@ -92,6 +94,7 @@ bool FreqTrackerSettings::deserialize(const QByteArray& data)
|
||||||
qint32 tmp;
|
qint32 tmp;
|
||||||
uint32_t utmp;
|
uint32_t utmp;
|
||||||
QString strtmp;
|
QString strtmp;
|
||||||
|
float ftmp;
|
||||||
|
|
||||||
d.readS32(1, &m_inputFrequencyOffset, 0);
|
d.readS32(1, &m_inputFrequencyOffset, 0);
|
||||||
d.readS32(2, &tmp, 4);
|
d.readS32(2, &tmp, 4);
|
||||||
|
@ -108,6 +111,8 @@ bool FreqTrackerSettings::deserialize(const QByteArray& data)
|
||||||
}
|
}
|
||||||
|
|
||||||
d.readU32(7, &m_rgbColor, QColor(200, 244, 66).rgb());
|
d.readU32(7, &m_rgbColor, QColor(200, 244, 66).rgb());
|
||||||
|
d.readFloat(8, &ftmp, 0.1);
|
||||||
|
m_alphaEMA = ftmp < 0.01 ? 0.01 : ftmp > 1.0 ? 1.0 : ftmp;
|
||||||
d.readString(9, &m_title, "Frequency Tracker");
|
d.readString(9, &m_title, "Frequency Tracker");
|
||||||
d.readBool(10, &m_tracking, false);
|
d.readBool(10, &m_tracking, false);
|
||||||
d.readS32(12, &tmp, 0);
|
d.readS32(12, &tmp, 0);
|
||||||
|
|
|
@ -41,6 +41,7 @@ struct FreqTrackerSettings
|
||||||
quint32 m_rgbColor;
|
quint32 m_rgbColor;
|
||||||
QString m_title;
|
QString m_title;
|
||||||
Serializable *m_channelMarker;
|
Serializable *m_channelMarker;
|
||||||
|
float m_alphaEMA; //!< alpha factor for delta frequency EMA
|
||||||
bool m_tracking;
|
bool m_tracking;
|
||||||
TrackerType m_trackerType;
|
TrackerType m_trackerType;
|
||||||
uint32_t m_pllPskOrder;
|
uint32_t m_pllPskOrder;
|
||||||
|
|
|
@ -2782,6 +2782,10 @@ margin-bottom: 20px;
|
||||||
"title" : {
|
"title" : {
|
||||||
"type" : "string"
|
"type" : "string"
|
||||||
},
|
},
|
||||||
|
"alphaEMA" : {
|
||||||
|
"type" : "integer",
|
||||||
|
"description" : "Alpha factor for delta frequency EMA in %"
|
||||||
|
},
|
||||||
"tracking" : {
|
"tracking" : {
|
||||||
"type" : "integer",
|
"type" : "integer",
|
||||||
"description" : "Tracking 1 for enabled 0 for disabled"
|
"description" : "Tracking 1 for enabled 0 for disabled"
|
||||||
|
@ -24915,7 +24919,7 @@ except ApiException as e:
|
||||||
</div>
|
</div>
|
||||||
<div id="generator">
|
<div id="generator">
|
||||||
<div class="content">
|
<div class="content">
|
||||||
Generated 2019-05-03T21:05:56.826+02:00
|
Generated 2019-05-05T01:27:03.875+02:00
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
|
@ -19,6 +19,9 @@ FreqTrackerSettings:
|
||||||
type: integer
|
type: integer
|
||||||
title:
|
title:
|
||||||
type: string
|
type: string
|
||||||
|
alphaEMA:
|
||||||
|
description: Alpha factor for delta frequency EMA in %
|
||||||
|
type: integer
|
||||||
tracking:
|
tracking:
|
||||||
description: Tracking 1 for enabled 0 for disabled
|
description: Tracking 1 for enabled 0 for disabled
|
||||||
type: integer
|
type: integer
|
||||||
|
|
|
@ -19,6 +19,10 @@ FreqTrackerSettings:
|
||||||
type: integer
|
type: integer
|
||||||
title:
|
title:
|
||||||
type: string
|
type: string
|
||||||
|
alphaEMA:
|
||||||
|
description: Alpha factor for delta frequency EMA
|
||||||
|
type: number
|
||||||
|
format: float
|
||||||
tracking:
|
tracking:
|
||||||
description: Tracking 1 for enabled 0 for disabled
|
description: Tracking 1 for enabled 0 for disabled
|
||||||
type: integer
|
type: integer
|
||||||
|
|
|
@ -2782,6 +2782,10 @@ margin-bottom: 20px;
|
||||||
"title" : {
|
"title" : {
|
||||||
"type" : "string"
|
"type" : "string"
|
||||||
},
|
},
|
||||||
|
"alphaEMA" : {
|
||||||
|
"type" : "integer",
|
||||||
|
"description" : "Alpha factor for delta frequency EMA in %"
|
||||||
|
},
|
||||||
"tracking" : {
|
"tracking" : {
|
||||||
"type" : "integer",
|
"type" : "integer",
|
||||||
"description" : "Tracking 1 for enabled 0 for disabled"
|
"description" : "Tracking 1 for enabled 0 for disabled"
|
||||||
|
@ -24915,7 +24919,7 @@ except ApiException as e:
|
||||||
</div>
|
</div>
|
||||||
<div id="generator">
|
<div id="generator">
|
||||||
<div class="content">
|
<div class="content">
|
||||||
Generated 2019-05-03T21:05:56.826+02:00
|
Generated 2019-05-05T01:27:03.875+02:00
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
|
@ -40,6 +40,8 @@ SWGFreqTrackerSettings::SWGFreqTrackerSettings() {
|
||||||
m_rgb_color_isSet = false;
|
m_rgb_color_isSet = false;
|
||||||
title = nullptr;
|
title = nullptr;
|
||||||
m_title_isSet = false;
|
m_title_isSet = false;
|
||||||
|
alpha_ema = 0;
|
||||||
|
m_alpha_ema_isSet = false;
|
||||||
tracking = 0;
|
tracking = 0;
|
||||||
m_tracking_isSet = false;
|
m_tracking_isSet = false;
|
||||||
tracker_type = 0;
|
tracker_type = 0;
|
||||||
|
@ -80,6 +82,8 @@ SWGFreqTrackerSettings::init() {
|
||||||
m_rgb_color_isSet = false;
|
m_rgb_color_isSet = false;
|
||||||
title = new QString("");
|
title = new QString("");
|
||||||
m_title_isSet = false;
|
m_title_isSet = false;
|
||||||
|
alpha_ema = 0;
|
||||||
|
m_alpha_ema_isSet = false;
|
||||||
tracking = 0;
|
tracking = 0;
|
||||||
m_tracking_isSet = false;
|
m_tracking_isSet = false;
|
||||||
tracker_type = 0;
|
tracker_type = 0;
|
||||||
|
@ -118,6 +122,7 @@ SWGFreqTrackerSettings::cleanup() {
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
if(reverse_api_address != nullptr) {
|
if(reverse_api_address != nullptr) {
|
||||||
delete reverse_api_address;
|
delete reverse_api_address;
|
||||||
}
|
}
|
||||||
|
@ -149,6 +154,8 @@ SWGFreqTrackerSettings::fromJsonObject(QJsonObject &pJson) {
|
||||||
|
|
||||||
::SWGSDRangel::setValue(&title, pJson["title"], "QString", "QString");
|
::SWGSDRangel::setValue(&title, pJson["title"], "QString", "QString");
|
||||||
|
|
||||||
|
::SWGSDRangel::setValue(&alpha_ema, pJson["alphaEMA"], "qint32", "");
|
||||||
|
|
||||||
::SWGSDRangel::setValue(&tracking, pJson["tracking"], "qint32", "");
|
::SWGSDRangel::setValue(&tracking, pJson["tracking"], "qint32", "");
|
||||||
|
|
||||||
::SWGSDRangel::setValue(&tracker_type, pJson["trackerType"], "qint32", "");
|
::SWGSDRangel::setValue(&tracker_type, pJson["trackerType"], "qint32", "");
|
||||||
|
@ -203,6 +210,9 @@ SWGFreqTrackerSettings::asJsonObject() {
|
||||||
if(title != nullptr && *title != QString("")){
|
if(title != nullptr && *title != QString("")){
|
||||||
toJsonValue(QString("title"), title, obj, QString("QString"));
|
toJsonValue(QString("title"), title, obj, QString("QString"));
|
||||||
}
|
}
|
||||||
|
if(m_alpha_ema_isSet){
|
||||||
|
obj->insert("alphaEMA", QJsonValue(alpha_ema));
|
||||||
|
}
|
||||||
if(m_tracking_isSet){
|
if(m_tracking_isSet){
|
||||||
obj->insert("tracking", QJsonValue(tracking));
|
obj->insert("tracking", QJsonValue(tracking));
|
||||||
}
|
}
|
||||||
|
@ -297,6 +307,16 @@ SWGFreqTrackerSettings::setTitle(QString* title) {
|
||||||
this->m_title_isSet = true;
|
this->m_title_isSet = true;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
qint32
|
||||||
|
SWGFreqTrackerSettings::getAlphaEma() {
|
||||||
|
return alpha_ema;
|
||||||
|
}
|
||||||
|
void
|
||||||
|
SWGFreqTrackerSettings::setAlphaEma(qint32 alpha_ema) {
|
||||||
|
this->alpha_ema = alpha_ema;
|
||||||
|
this->m_alpha_ema_isSet = true;
|
||||||
|
}
|
||||||
|
|
||||||
qint32
|
qint32
|
||||||
SWGFreqTrackerSettings::getTracking() {
|
SWGFreqTrackerSettings::getTracking() {
|
||||||
return tracking;
|
return tracking;
|
||||||
|
@ -408,6 +428,7 @@ SWGFreqTrackerSettings::isSet(){
|
||||||
if(m_squelch_isSet){ isObjectUpdated = true; break;}
|
if(m_squelch_isSet){ isObjectUpdated = true; break;}
|
||||||
if(m_rgb_color_isSet){ isObjectUpdated = true; break;}
|
if(m_rgb_color_isSet){ isObjectUpdated = true; break;}
|
||||||
if(title != nullptr && *title != QString("")){ isObjectUpdated = true; break;}
|
if(title != nullptr && *title != QString("")){ isObjectUpdated = true; break;}
|
||||||
|
if(m_alpha_ema_isSet){ isObjectUpdated = true; break;}
|
||||||
if(m_tracking_isSet){ isObjectUpdated = true; break;}
|
if(m_tracking_isSet){ isObjectUpdated = true; break;}
|
||||||
if(m_tracker_type_isSet){ isObjectUpdated = true; break;}
|
if(m_tracker_type_isSet){ isObjectUpdated = true; break;}
|
||||||
if(m_pll_psk_order_isSet){ isObjectUpdated = true; break;}
|
if(m_pll_psk_order_isSet){ isObjectUpdated = true; break;}
|
||||||
|
|
|
@ -60,6 +60,9 @@ public:
|
||||||
QString* getTitle();
|
QString* getTitle();
|
||||||
void setTitle(QString* title);
|
void setTitle(QString* title);
|
||||||
|
|
||||||
|
qint32 getAlphaEma();
|
||||||
|
void setAlphaEma(qint32 alpha_ema);
|
||||||
|
|
||||||
qint32 getTracking();
|
qint32 getTracking();
|
||||||
void setTracking(qint32 tracking);
|
void setTracking(qint32 tracking);
|
||||||
|
|
||||||
|
@ -112,6 +115,9 @@ private:
|
||||||
QString* title;
|
QString* title;
|
||||||
bool m_title_isSet;
|
bool m_title_isSet;
|
||||||
|
|
||||||
|
qint32 alpha_ema;
|
||||||
|
bool m_alpha_ema_isSet;
|
||||||
|
|
||||||
qint32 tracking;
|
qint32 tracking;
|
||||||
bool m_tracking_isSet;
|
bool m_tracking_isSet;
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue