1
0
mirror of https://github.com/f4exb/sdrangel.git synced 2024-12-23 01:55:48 -05:00

M17 demod: updated API

This commit is contained in:
f4exb 2022-07-10 22:15:58 +02:00
parent 2efa765750
commit 823cffdae1
18 changed files with 339 additions and 238 deletions

View File

@ -65,7 +65,7 @@ M17Demod::M17Demod(DeviceAPI *deviceAPI) :
m_basebandSink->setDemodInputMessageQueue(&m_inputMessageQueue);
m_basebandSink->moveToThread(m_thread);
applySettings(m_settings, true);
applySettings(m_settings, QList<QString>(), true);
m_deviceAPI->addChannelSink(this);
m_deviceAPI->addChannelSinkAPI(this);
@ -150,7 +150,7 @@ bool M17Demod::handleMessage(const Message& cmd)
{
MsgConfigureM17Demod& cfg = (MsgConfigureM17Demod&) cmd;
qDebug("M17Demod::handleMessage: MsgConfigureM17Demod");
applySettings(cfg.getSettings(), cfg.getForce());
applySettings(cfg.getSettings(), cfg.getSettingsKeys(), cfg.getForce());
return true;
}
@ -217,18 +217,19 @@ void M17Demod::setCenterFrequency(qint64 frequency)
{
M17DemodSettings settings = m_settings;
settings.m_inputFrequencyOffset = frequency;
applySettings(settings, false);
applySettings(settings, QList<QString>({"inputFrequencyOffset"}), false);
if (m_guiMessageQueue) // forward to GUI if any
{
MsgConfigureM17Demod *msgToGUI = MsgConfigureM17Demod::create(settings, false);
MsgConfigureM17Demod *msgToGUI = MsgConfigureM17Demod::create(settings, QList<QString>({"inputFrequencyOffset"}), false);
m_guiMessageQueue->push(msgToGUI);
}
}
void M17Demod::applySettings(const M17DemodSettings& settings, bool force)
void M17Demod::applySettings(const M17DemodSettings& settings, const QList<QString>& settingsKeys, bool force)
{
qDebug() << "M17Demod::applySettings: "
<< " settingsKeys: " << settingsKeys
<< " m_inputFrequencyOffset: " << settings.m_inputFrequencyOffset
<< " m_rfBandwidth: " << settings.m_rfBandwidth
<< " m_fmDeviation: " << settings.m_fmDeviation
@ -246,46 +247,7 @@ void M17Demod::applySettings(const M17DemodSettings& settings, bool force)
<< " m_streamIndex: " << settings.m_streamIndex
<< " force: " << force;
QList<QString> reverseAPIKeys;
if ((settings.m_inputFrequencyOffset != m_settings.m_inputFrequencyOffset) || force) {
reverseAPIKeys.append("inputFrequencyOffset");
}
if ((settings.m_audioMute != m_settings.m_audioMute) || force) {
reverseAPIKeys.append("audioMute");
}
if ((settings.m_syncOrConstellation != m_settings.m_syncOrConstellation) || force) {
reverseAPIKeys.append("syncOrConstellation");
}
if ((settings.m_traceLengthMutliplier != m_settings.m_traceLengthMutliplier) || force) {
reverseAPIKeys.append("traceLengthMutliplier");
}
if ((settings.m_rfBandwidth != m_settings.m_rfBandwidth) || force) {
reverseAPIKeys.append("rfBandwidth");
}
if ((settings.m_fmDeviation != m_settings.m_fmDeviation) || force) {
reverseAPIKeys.append("fmDeviation");
}
if ((settings.m_squelchGate != m_settings.m_squelchGate) || force) {
reverseAPIKeys.append("squelchGate");
}
if ((settings.m_squelch != m_settings.m_squelch) || force) {
reverseAPIKeys.append("squelch");
}
if ((settings.m_volume != m_settings.m_volume) || force) {
reverseAPIKeys.append("volume");
}
if ((settings.m_baudRate != m_settings.m_baudRate) || force) {
reverseAPIKeys.append("baudRate");
}
if ((settings.m_highPassFilter != m_settings.m_highPassFilter) || force) {
reverseAPIKeys.append("highPassFilter");
}
if ((settings.m_audioDeviceName != m_settings.m_audioDeviceName) || force) {
reverseAPIKeys.append("audioDeviceName");
}
if (m_settings.m_streamIndex != settings.m_streamIndex)
if (settingsKeys.contains("streamIndex"))
{
if (m_deviceAPI->getSampleMIMO()) // change of stream is possible for MIMO devices only
{
@ -294,31 +256,33 @@ void M17Demod::applySettings(const M17DemodSettings& settings, bool force)
m_deviceAPI->addChannelSink(this, settings.m_streamIndex);
m_deviceAPI->addChannelSinkAPI(this);
}
reverseAPIKeys.append("streamIndex");
}
M17DemodBaseband::MsgConfigureM17DemodBaseband *msg = M17DemodBaseband::MsgConfigureM17DemodBaseband::create(settings, force);
M17DemodBaseband::MsgConfigureM17DemodBaseband *msg = M17DemodBaseband::MsgConfigureM17DemodBaseband::create(settings, settingsKeys, force);
m_basebandSink->getInputMessageQueue()->push(msg);
if (settings.m_useReverseAPI)
if (settingsKeys.contains("m_useReverseAPI"))
{
bool fullUpdate = ((m_settings.m_useReverseAPI != settings.m_useReverseAPI) && settings.m_useReverseAPI) ||
(m_settings.m_reverseAPIAddress != settings.m_reverseAPIAddress) ||
(m_settings.m_reverseAPIPort != settings.m_reverseAPIPort) ||
(m_settings.m_reverseAPIDeviceIndex != settings.m_reverseAPIDeviceIndex) ||
(m_settings.m_reverseAPIChannelIndex != settings.m_reverseAPIChannelIndex);
webapiReverseSendSettings(reverseAPIKeys, settings, fullUpdate || force);
webapiReverseSendSettings(settingsKeys, settings, fullUpdate || force);
}
QList<ObjectPipe*> pipes;
MainCore::instance()->getMessagePipes().getMessagePipes(this, "settings", pipes);
if (pipes.size() > 0) {
sendChannelSettings(pipes, reverseAPIKeys, settings, force);
sendChannelSettings(pipes, settingsKeys, settings, force);
}
m_settings = settings;
if (force) {
m_settings = settings;
} else {
m_settings.applySettings(settingsKeys, settings);
}
}
QByteArray M17Demod::serialize() const
@ -330,14 +294,14 @@ bool M17Demod::deserialize(const QByteArray& data)
{
if (m_settings.deserialize(data))
{
MsgConfigureM17Demod *msg = MsgConfigureM17Demod::create(m_settings, true);
MsgConfigureM17Demod *msg = MsgConfigureM17Demod::create(m_settings, QList<QString>(), true);
m_inputMessageQueue.push(msg);
return true;
}
else
{
m_settings.resetToDefaults();
MsgConfigureM17Demod *msg = MsgConfigureM17Demod::create(m_settings, true);
MsgConfigureM17Demod *msg = MsgConfigureM17Demod::create(m_settings, QList<QString>(), true);
m_inputMessageQueue.push(msg);
return false;
}
@ -392,13 +356,13 @@ int M17Demod::webapiSettingsPutPatch(
M17DemodSettings settings = m_settings;
webapiUpdateChannelSettings(settings, channelSettingsKeys, response);
MsgConfigureM17Demod *msg = MsgConfigureM17Demod::create(settings, force);
MsgConfigureM17Demod *msg = MsgConfigureM17Demod::create(settings, channelSettingsKeys, force);
m_inputMessageQueue.push(msg);
qDebug("M17Demod::webapiSettingsPutPatch: forward to GUI: %p", m_guiMessageQueue);
if (m_guiMessageQueue) // forward to GUI if any
{
MsgConfigureM17Demod *msgToGUI = MsgConfigureM17Demod::create(settings, force);
MsgConfigureM17Demod *msgToGUI = MsgConfigureM17Demod::create(settings, channelSettingsKeys, force);
m_guiMessageQueue->push(msgToGUI);
}
@ -445,6 +409,9 @@ void M17Demod::webapiUpdateChannelSettings(
if (channelSettingsKeys.contains("title")) {
settings.m_title = *response.getM17DemodSettings()->getTitle();
}
if (channelSettingsKeys.contains("statusLogEnabled")) {
settings.m_statusLogEnabled = response.getM17DemodSettings()->getStatusLogEnabled() != 0;
}
if (channelSettingsKeys.contains("audioDeviceName")) {
settings.m_audioDeviceName = *response.getM17DemodSettings()->getAudioDeviceName();
}
@ -508,6 +475,7 @@ void M17Demod::webapiFormatChannelSettings(SWGSDRangel::SWGChannelSettings& resp
response.getM17DemodSettings()->setSquelch(settings.m_squelch);
response.getM17DemodSettings()->setAudioMute(settings.m_audioMute ? 1 : 0);
response.getM17DemodSettings()->setSyncOrConstellation(settings.m_syncOrConstellation ? 1 : 0);
response.getM17DemodSettings()->setStatusLogEnabled(settings.m_statusLogEnabled ? 1 : 0);
response.getM17DemodSettings()->setRgbColor(settings.m_rgbColor);
if (response.getM17DemodSettings()->getTitle()) {
@ -580,7 +548,7 @@ void M17Demod::webapiFormatChannelReport(SWGSDRangel::SWGChannelReport& response
response.getM17DemodReport()->setSquelch(m_basebandSink->getSquelchOpen() ? 1 : 0);
}
void M17Demod::webapiReverseSendSettings(QList<QString>& channelSettingsKeys, const M17DemodSettings& settings, bool force)
void M17Demod::webapiReverseSendSettings(const QList<QString>& channelSettingsKeys, const M17DemodSettings& settings, bool force)
{
SWGSDRangel::SWGChannelSettings *swgChannelSettings = new SWGSDRangel::SWGChannelSettings();
webapiFormatChannelSettings(channelSettingsKeys, swgChannelSettings, settings, force);
@ -607,7 +575,7 @@ void M17Demod::webapiReverseSendSettings(QList<QString>& channelSettingsKeys, co
void M17Demod::sendChannelSettings(
const QList<ObjectPipe*>& pipes,
QList<QString>& channelSettingsKeys,
const QList<QString>& channelSettingsKeys,
const M17DemodSettings& settings,
bool force)
{
@ -631,7 +599,7 @@ void M17Demod::sendChannelSettings(
}
void M17Demod::webapiFormatChannelSettings(
QList<QString>& channelSettingsKeys,
const QList<QString>& channelSettingsKeys,
SWGSDRangel::SWGChannelSettings *swgChannelSettings,
const M17DemodSettings& settings,
bool force
@ -673,6 +641,9 @@ void M17Demod::webapiFormatChannelSettings(
if (channelSettingsKeys.contains("syncOrConstellation") || force) {
swgM17DemodSettings->setSyncOrConstellation(settings.m_syncOrConstellation ? 1 : 0);
}
if (channelSettingsKeys.contains("statusLogEnabled") || force) {
swgM17DemodSettings->setStatusLogEnabled(settings.m_statusLogEnabled ? 1 : 0);
}
if (channelSettingsKeys.contains("rgbColor") || force) {
swgM17DemodSettings->setRgbColor(settings.m_rgbColor);
}

View File

@ -43,19 +43,22 @@ public:
public:
const M17DemodSettings& getSettings() const { return m_settings; }
const QList<QString>& getSettingsKeys() const { return m_settingsKeys; }
bool getForce() const { return m_force; }
static MsgConfigureM17Demod* create(const M17DemodSettings& settings, bool force) {
return new MsgConfigureM17Demod(settings, force);
static MsgConfigureM17Demod* create(const M17DemodSettings& settings, const QList<QString>& settingsKeys, bool force) {
return new MsgConfigureM17Demod(settings, settingsKeys, force);
}
private:
M17DemodSettings m_settings;
QList<QString> m_settingsKeys;
bool m_force;
MsgConfigureM17Demod(const M17DemodSettings& settings, bool force) :
MsgConfigureM17Demod(const M17DemodSettings& settings, const QList<QString>& settingsKeys, bool force) :
Message(),
m_settings(settings),
m_settingsKeys(settingsKeys),
m_force(force)
{ }
};
@ -272,18 +275,18 @@ private:
static const int m_udpBlockSize;
virtual bool handleMessage(const Message& cmd);
void applySettings(const M17DemodSettings& settings, bool force = false);
void applySettings(const M17DemodSettings& settings, const QList<QString>& settingsKeys, bool force = false);
void sendSampleRateToDemodAnalyzer();
void webapiFormatChannelReport(SWGSDRangel::SWGChannelReport& response);
void webapiReverseSendSettings(QList<QString>& channelSettingsKeys, const M17DemodSettings& settings, bool force);
void webapiReverseSendSettings(const QList<QString>& channelSettingsKeys, const M17DemodSettings& settings, bool force);
void sendChannelSettings(
const QList<ObjectPipe*>& pipes,
QList<QString>& channelSettingsKeys,
const QList<QString>& channelSettingsKeys,
const M17DemodSettings& settings,
bool force
);
void webapiFormatChannelSettings(
QList<QString>& channelSettingsKeys,
const QList<QString>& channelSettingsKeys,
SWGSDRangel::SWGChannelSettings *swgChannelSettings,
const M17DemodSettings& settings,
bool force

View File

@ -117,7 +117,7 @@ bool M17DemodBaseband::handleMessage(const Message& cmd)
MsgConfigureM17DemodBaseband& cfg = (MsgConfigureM17DemodBaseband&) cmd;
qDebug() << "M17DemodBaseband::handleMessage: MsgConfigureM17DemodBaseband";
applySettings(cfg.getSettings(), cfg.getForce());
applySettings(cfg.getSettings(), cfg.getSettingsKeys(), cfg.getForce());
return true;
}
@ -144,9 +144,9 @@ bool M17DemodBaseband::handleMessage(const Message& cmd)
}
}
void M17DemodBaseband::applySettings(const M17DemodSettings& settings, bool force)
void M17DemodBaseband::applySettings(const M17DemodSettings& settings, const QList<QString>& settingsKeys, bool force)
{
if ((settings.m_inputFrequencyOffset != m_settings.m_inputFrequencyOffset) || force)
if (settingsKeys.contains("inputFrequencyOffset") || force)
{
m_channelizer->setChannelization(48000, settings.m_inputFrequencyOffset);
m_sink.applyChannelSettings(m_channelizer->getChannelSampleRate(), m_channelizer->getChannelFrequencyOffset());
@ -158,7 +158,7 @@ void M17DemodBaseband::applySettings(const M17DemodSettings& settings, bool forc
}
}
if ((settings.m_audioDeviceName != m_settings.m_audioDeviceName) || force)
if (settingsKeys.contains("audioDeviceName") || force)
{
AudioDeviceManager *audioDeviceManager = DSPEngine::instance()->getAudioDeviceManager();
int audioDeviceIndex = audioDeviceManager->getOutputDeviceIndex(settings.m_audioDeviceName);
@ -172,9 +172,13 @@ void M17DemodBaseband::applySettings(const M17DemodSettings& settings, bool forc
}
}
m_sink.applySettings(settings, force);
m_sink.applySettings(settings, settingsKeys, force);
m_settings = settings;
if (force) {
m_settings = settings;
} else {
m_settings.applySettings(settingsKeys, settings);
}
}
int M17DemodBaseband::getChannelSampleRate() const

View File

@ -39,20 +39,22 @@ public:
public:
const M17DemodSettings& getSettings() const { return m_settings; }
const QList<QString>& getSettingsKeys() const { return m_settingsKeys; }
bool getForce() const { return m_force; }
static MsgConfigureM17DemodBaseband* create(const M17DemodSettings& settings, bool force)
{
return new MsgConfigureM17DemodBaseband(settings, force);
static MsgConfigureM17DemodBaseband* create(const M17DemodSettings& settings, const QList<QString>& settingsKeys, bool force) {
return new MsgConfigureM17DemodBaseband(settings, settingsKeys, force);
}
private:
M17DemodSettings m_settings;
QList<QString> m_settingsKeys;
bool m_force;
MsgConfigureM17DemodBaseband(const M17DemodSettings& settings, bool force) :
MsgConfigureM17DemodBaseband(const M17DemodSettings& settings, const QList<QString>& settingsKeys, bool force) :
Message(),
m_settings(settings),
m_settingsKeys(settingsKeys),
m_force(force)
{ }
};
@ -128,7 +130,7 @@ private:
QMutex m_mutex;
bool handleMessage(const Message& cmd);
void applySettings(const M17DemodSettings& settings, bool force = false);
void applySettings(const M17DemodSettings& settings, const QList<QString>& settingsKeys, bool force = false);
private slots:
void handleInputMessages();

View File

@ -63,7 +63,7 @@ void M17DemodGUI::resetToDefaults()
blockApplySettings(true);
displaySettings();
blockApplySettings(false);
applySettings();
applySettings(QList<QString>(), true);
}
QByteArray M17DemodGUI::serialize() const
@ -76,7 +76,7 @@ bool M17DemodGUI::deserialize(const QByteArray& data)
if (m_settings.deserialize(data))
{
displaySettings();
applySettings(true);
applySettings(QList<QString>(), true);
return true;
}
else
@ -100,7 +100,13 @@ bool M17DemodGUI::handleMessage(const Message& message)
{
qDebug("M17DemodGUI::handleMessage: M17Demod::MsgConfigureM17Demod");
const M17Demod::MsgConfigureM17Demod& cfg = (M17Demod::MsgConfigureM17Demod&) message;
m_settings = cfg.getSettings();
if (cfg.getForce()) {
m_settings = cfg.getSettings();
} else {
m_settings.applySettings(cfg.getSettingsKeys(), cfg.getSettings());
}
blockApplySettings(true);
m_channelMarker.updateSettings(static_cast<const ChannelMarker*>(m_settings.m_channelMarker));
displaySettings();
@ -124,14 +130,19 @@ bool M17DemodGUI::handleMessage(const Message& message)
QString dateStr = dt.toString("HH:mm:ss");
QTextCursor cursor = ui->smsLog->textCursor();
cursor.movePosition(QTextCursor::End, QTextCursor::MoveAnchor);
cursor.insertText(tr("=== %1 %2 to %3 ===\n%4\n")
QString s(tr("=== %1 %2 to %3 ===\n%4\n")
.arg(dateStr)
.arg(report.getSource())
.arg(report.getDest())
.arg(report.getSMS())
);
cursor.insertText(s);
ui->smsLog->verticalScrollBar()->setValue(ui->smsLog->verticalScrollBar()->maximum());
if (ui->activateStatusLog->isChecked()) {
m_m17StatusTextDialog.addLine(tr("SMS: %1").arg(report.getSMS()));
}
return true;
}
else if (M17Demod::MsgReportAPRS::match(message))
@ -169,6 +180,19 @@ bool M17DemodGUI::handleMessage(const Message& message)
ui->aprsPackets->scrollToBottom();
}
if (ui->activateStatusLog->isChecked())
{
QString s(tr("APRS: %1 to %2 via %3 typ %4 pid %5: %6")
.arg(report.getFrom())
.arg(report.getTo())
.arg(report.getVia())
.arg(report.getType())
.arg(report.getPID())
.arg(report.getData())
);
m_m17StatusTextDialog.addLine(s);
}
return true;
}
else
@ -195,7 +219,7 @@ void M17DemodGUI::on_deltaFrequency_changed(qint64 value)
m_channelMarker.setCenterFrequency(value);
m_settings.m_inputFrequencyOffset = m_channelMarker.getCenterFrequency();
updateAbsoluteCenterFrequency();
applySettings();
applySettings(QList<QString>({"inputFrequencyOffset"}));
}
void M17DemodGUI::on_rfBW_valueChanged(int value)
@ -203,33 +227,33 @@ void M17DemodGUI::on_rfBW_valueChanged(int value)
m_channelMarker.setBandwidth(value * 100);
m_settings.m_rfBandwidth = value * 100.0;
ui->rfBWText->setText(QString("%1k").arg(value / 10.0, 0, 'f', 1));
applySettings();
applySettings(QList<QString>({"rfBandwidth"}));
}
void M17DemodGUI::on_fmDeviation_valueChanged(int value)
{
m_settings.m_fmDeviation = value * 100.0;
ui->fmDeviationText->setText(QString("%1%2k").arg(QChar(0xB1, 0x00)).arg(value / 10.0, 0, 'f', 1));
applySettings();
applySettings(QList<QString>({"fmDeviation"}));
}
void M17DemodGUI::on_volume_valueChanged(int value)
{
m_settings.m_volume= value / 100.0;
ui->volumeText->setText(QString("%1").arg(value / 100.0, 0, 'f', 2));
applySettings();
applySettings(QList<QString>({"volume"}));
}
void M17DemodGUI::on_baudRate_currentIndexChanged(int index)
{
m_settings.m_baudRate = M17DemodBaudRates::getRate(index);
applySettings();
applySettings(QList<QString>({"baudRate"}));
}
void M17DemodGUI::on_syncOrConstellation_toggled(bool checked)
{
m_settings.m_syncOrConstellation = checked;
applySettings();
applySettings(QList<QString>({"syncOrConstellation"}));
}
void M17DemodGUI::on_traceLength_valueChanged(int value)
@ -257,26 +281,26 @@ void M17DemodGUI::on_squelchGate_valueChanged(int value)
{
m_settings.m_squelchGate = value;
ui->squelchGateText->setText(QString("%1").arg(value * 10.0, 0, 'f', 0));
applySettings();
applySettings(QList<QString>({"squelchGate"}));
}
void M17DemodGUI::on_squelch_valueChanged(int value)
{
ui->squelchText->setText(QString("%1").arg(value / 1.0, 0, 'f', 0));
m_settings.m_squelch = value;
applySettings();
applySettings(QList<QString>({"squelch"}));
}
void M17DemodGUI::on_audioMute_toggled(bool checked)
{
m_settings.m_audioMute = checked;
applySettings();
applySettings(QList<QString>({"audioMute"}));
}
void M17DemodGUI::on_highPassFilter_toggled(bool checked)
{
m_settings.m_highPassFilter = checked;
applySettings();
applySettings(QList<QString>({"highPassFilter"}));
}
void M17DemodGUI::on_aprsClearTable_clicked()
@ -326,7 +350,6 @@ void M17DemodGUI::onWidgetRolled(QWidget* widget, bool rollDown)
(void) rollDown;
getRollupContents()->saveState(m_rollupState);
applySettings();
}
void M17DemodGUI::onMenuDialogCalled(const QPoint &p)
@ -362,15 +385,26 @@ void M17DemodGUI::onMenuDialogCalled(const QPoint &p)
setTitle(m_channelMarker.getTitle());
setTitleColor(m_settings.m_rgbColor);
QList<QString> settingsKeys({
"m_rgbColor",
"title",
"useReverseAPI",
"reverseAPIAddress",
"reverseAPIPort",
"reverseAPIDeviceIndex",
"reverseAPIChannelIndex"
});
if (m_deviceUISet->m_deviceMIMOEngine)
{
settingsKeys.append("streamIndex");
m_settings.m_streamIndex = dialog.getSelectedStreamIndex();
m_channelMarker.clearStreamIndexes();
m_channelMarker.addStreamIndex(m_settings.m_streamIndex);
updateIndexLabel();
}
applySettings();
applySettings(settingsKeys);
}
resetContextMenuType();
@ -483,7 +517,7 @@ M17DemodGUI::M17DemodGUI(PluginAPI* pluginAPI, DeviceUISet *deviceUISet, Baseban
updateMyPosition();
displaySettings();
makeUIConnections();
applySettings(true);
applySettings(QList<QString>(), true);
}
M17DemodGUI::~M17DemodGUI()
@ -569,13 +603,13 @@ void M17DemodGUI::displaySettings()
blockApplySettings(false);
}
void M17DemodGUI::applySettings(bool force)
void M17DemodGUI::applySettings(const QList<QString>& settingsKeys, bool force)
{
if (m_doApplySettings)
{
qDebug() << "M17DemodGUI::applySettings";
M17Demod::MsgConfigureM17Demod* message = M17Demod::MsgConfigureM17Demod::create( m_settings, force);
M17Demod::MsgConfigureM17Demod* message = M17Demod::MsgConfigureM17Demod::create( m_settings, settingsKeys, force);
m_m17Demod->getInputMessageQueue()->push(message);
}
}
@ -601,7 +635,7 @@ void M17DemodGUI::channelMarkerChangedByCursor()
{
ui->deltaFrequency->setValue(m_channelMarker.getCenterFrequency());
m_settings.m_inputFrequencyOffset = m_channelMarker.getCenterFrequency();
applySettings();
applySettings(QList<QString>({"inputFrequencyOffset"}));
}
void M17DemodGUI::channelMarkerHighlightedByCursor()
@ -611,14 +645,13 @@ void M17DemodGUI::channelMarkerHighlightedByCursor()
void M17DemodGUI::audioSelect()
{
qDebug("M17DemodGUI::audioSelect");
AudioSelectDialog audioSelect(DSPEngine::instance()->getAudioDeviceManager(), m_settings.m_audioDeviceName);
audioSelect.exec();
if (audioSelect.m_selected)
{
m_settings.m_audioDeviceName = audioSelect.m_audioDeviceName;
applySettings();
applySettings(QList<QString>({"audioDeviceName"}));
}
}

View File

@ -124,7 +124,7 @@ private:
virtual ~M17DemodGUI();
void blockApplySettings(bool block);
void applySettings(bool force = false);
void applySettings(const QList<QString>& settingsKeys, bool force = false);
void displaySettings();
void updateAMBEFeaturesList();
void updateMyPosition();
@ -159,9 +159,9 @@ private slots:
void on_berButton_toggled(bool checked);
void on_berHistory_valueChanged(int value);
void on_berReset_clicked();
void on_viewStatusLog_clicked();
void onWidgetRolled(QWidget* widget, bool rollDown);
void onMenuDialogCalled(const QPoint& p);
void on_viewStatusLog_clicked();
void handleInputMessages();
void audioSelect();
void tick();

View File

@ -280,14 +280,14 @@
<widget class="QPushButton" name="viewStatusLog">
<property name="minimumSize">
<size>
<width>24</width>
<height>0</height>
<width>32</width>
<height>32</height>
</size>
</property>
<property name="maximumSize">
<size>
<width>24</width>
<height>16777215</height>
<height>32</height>
</size>
</property>
<property name="toolTip">

View File

@ -48,6 +48,7 @@ void M17DemodSettings::resetToDefaults()
m_traceStroke = 100;
m_traceDecay = 200;
m_audioDeviceName = AudioDeviceManager::m_defaultDeviceName;
m_statusLogEnabled = false;
m_streamIndex = 0;
m_useReverseAPI = false;
m_reverseAPIAddress = "127.0.0.1";
@ -69,6 +70,7 @@ QByteArray M17DemodSettings::serialize() const
s.writeS32(8, m_squelchGate);
s.writeS32(9, m_volume*10.0);
s.writeS32(11, m_baudRate);
s.writeBool(12, m_statusLogEnabled);
s.writeBool(13, m_syncOrConstellation);
if (m_channelMarker) {
@ -127,7 +129,6 @@ bool M17DemodSettings::deserialize(const QByteArray& data)
m_inputFrequencyOffset = tmp;
d.readS32(2, &tmp, 125);
m_rfBandwidth = tmp * 100.0;
d.readS32(3, &tmp, 125);
d.readS32(4, &tmp, 50);
m_fmDeviation = tmp * 100.0;
d.readS32(5, &tmp, -40);
@ -137,6 +138,7 @@ bool M17DemodSettings::deserialize(const QByteArray& data)
d.readS32(9, &tmp, 20);
m_volume = tmp / 10.0;
d.readS32(11, &m_baudRate, 4800);
d.readBool(12, &m_statusLogEnabled, false);
d.readBool(13, &m_syncOrConstellation, false);
d.readString(18, &m_title, "M17 Demodulator");
d.readBool(19, &m_highPassFilter, false);
@ -183,3 +185,78 @@ bool M17DemodSettings::deserialize(const QByteArray& data)
}
}
void M17DemodSettings::applySettings(const QStringList& settingsKeys, const M17DemodSettings& settings)
{
if (settingsKeys.contains("inputFrequencyOffset")) {
m_inputFrequencyOffset = settings.m_inputFrequencyOffset;
}
if (settingsKeys.contains("rfBandwidth")) {
m_rfBandwidth = settings.m_rfBandwidth;
}
if (settingsKeys.contains("fmDeviation")) {
m_fmDeviation = settings.m_fmDeviation;
}
if (settingsKeys.contains("squelch")) {
m_squelch = settings.m_squelch;
}
if (settingsKeys.contains("rgbColor")) {
m_rgbColor = settings.m_rgbColor;
}
if (settingsKeys.contains("squelchGate")) {
m_squelchGate = settings.m_squelchGate;
}
if (settingsKeys.contains("volume")) {
m_volume = settings.m_volume;
}
if (settingsKeys.contains("baudRate")) {
m_baudRate = settings.m_baudRate;
}
if (settingsKeys.contains("statusLogEnabled")) {
m_statusLogEnabled = settings.m_statusLogEnabled;
}
if (settingsKeys.contains("syncOrConstellation")) {
m_syncOrConstellation = settings.m_syncOrConstellation;
}
if (settingsKeys.contains("title")) {
m_title = settings.m_title;
}
if (settingsKeys.contains("highPassFilter")) {
m_highPassFilter = settings.m_highPassFilter;
}
if (settingsKeys.contains("audioDeviceName")) {
m_audioDeviceName = settings.m_audioDeviceName;
}
if (settingsKeys.contains("traceLengthMutliplier")) {
m_traceLengthMutliplier = settings.m_traceLengthMutliplier;
}
if (settingsKeys.contains("traceStroke")) {
m_traceStroke = settings.m_traceStroke;
}
if (settingsKeys.contains("traceDecay")) {
m_traceDecay = settings.m_traceDecay;
}
if (settingsKeys.contains("useReverseAPI")) {
m_useReverseAPI = settings.m_useReverseAPI;
}
if (settingsKeys.contains("reverseAPIAddress")) {
m_reverseAPIAddress = settings.m_reverseAPIAddress;
}
if (settingsKeys.contains("reverseAPIPort")) {
m_reverseAPIPort = settings.m_reverseAPIPort;
}
if (settingsKeys.contains("reverseAPIDeviceIndex")) {
m_reverseAPIDeviceIndex = settings.m_reverseAPIDeviceIndex;
}
if (settingsKeys.contains("audioMute")) {
m_audioMute = settings.m_audioMute;
}
if (settingsKeys.contains("streamIndex")) {
m_streamIndex = settings.m_streamIndex;
}
if (settingsKeys.contains("rollupState")) {
m_rollupState = settings.m_rollupState;
}
if (settingsKeys.contains("channelMarker")) {
m_channelMarker = settings.m_channelMarker;
}
}

View File

@ -43,8 +43,7 @@ struct M17DemodSettings
int m_traceStroke; // [0..255]
int m_traceDecay; // [0..255]
QString m_audioDeviceName;
QString m_aprsLogFilename;
bool m_aprsLogEnabled;
bool m_statusLogEnabled;
int m_streamIndex; //!< MIMO channel. Not relevant when connected to SI (single Rx).
bool m_useReverseAPI;
QString m_reverseAPIAddress;
@ -64,6 +63,7 @@ struct M17DemodSettings
void setRollupState(Serializable *rollupState) { m_rollupState = rollupState; }
QByteArray serialize() const;
bool deserialize(const QByteArray& data);
void applySettings(const QStringList& settingsKeys, const M17DemodSettings& settings);
};

View File

@ -74,7 +74,7 @@ M17DemodSink::M17DemodSink() :
m_magsqPeak = 0.0f;
m_magsqCount = 0;
applySettings(m_settings, true);
applySettings(m_settings, QList<QString>(), true);
applyChannelSettings(m_channelSampleRate, m_channelFrequencyOffset, true);
}
@ -305,9 +305,10 @@ void M17DemodSink::applyChannelSettings(int channelSampleRate, int channelFreque
}
void M17DemodSink::applySettings(const M17DemodSettings& settings, bool force)
void M17DemodSink::applySettings(const M17DemodSettings& settings, const QList<QString>& settingsKeys, bool force)
{
qDebug() << "M17DemodSink::applySettings: "
<< " settingsKeys: " << settingsKeys
<< " m_inputFrequencyOffset: " << settings.m_inputFrequencyOffset
<< " m_rfBandwidth: " << settings.m_rfBandwidth
<< " m_fmDeviation: " << settings.m_fmDeviation
@ -325,7 +326,7 @@ void M17DemodSink::applySettings(const M17DemodSettings& settings, bool force)
<< " m_streamIndex: " << settings.m_streamIndex
<< " force: " << force;
if ((settings.m_rfBandwidth != m_settings.m_rfBandwidth) || force)
if (settingsKeys.contains("rfBandwidth") || force)
{
m_interpolator.create(16, m_channelSampleRate, (settings.m_rfBandwidth) / 2.2);
m_interpolatorDistanceRemain = 0;
@ -333,38 +334,42 @@ void M17DemodSink::applySettings(const M17DemodSettings& settings, bool force)
//m_phaseDiscri.setFMScaling((float) settings.m_rfBandwidth / (float) settings.m_fmDeviation);
}
if ((settings.m_fmDeviation != m_settings.m_fmDeviation) || force) {
if (settingsKeys.contains("fmDeviation") || force) {
m_phaseDiscri.setFMScaling(48000.0f / (2.0f*settings.m_fmDeviation));
}
if ((settings.m_squelchGate != m_settings.m_squelchGate) || force)
if (settingsKeys.contains("squelchGate") || force)
{
m_squelchGate = 480 * settings.m_squelchGate; // gate is given in 10s of ms at 48000 Hz audio sample rate
m_squelchCount = 0; // reset squelch open counter
}
if ((settings.m_squelch != m_settings.m_squelch) || force) {
if (settingsKeys.contains("squelch") || force) {
m_squelchLevel = std::pow(10.0, settings.m_squelch / 10.0); // input is a value in dB
}
if ((settings.m_audioMute != m_settings.m_audioMute) || force) {
if (settingsKeys.contains("audioMute") || force) {
m_m17DemodProcessor.setAudioMute(settings.m_audioMute);
}
if ((settings.m_volume != m_settings.m_volume) || force) {
if (settingsKeys.contains("volume") || force) {
m_m17DemodProcessor.setVolume(settings.m_volume);
}
if ((settings.m_baudRate != m_settings.m_baudRate) || force)
if (settingsKeys.contains("baudRate") || force)
{
// m_dsdDecoder.setBaudRate(settings.m_baudRate);
// m_dsdDecoder.setBaudRate(settings.m_baudRate); (future)
}
if ((settings.m_highPassFilter != m_settings.m_highPassFilter) || force) {
if (settingsKeys.contains("highPassFilter") || force) {
m_m17DemodProcessor.setHP(settings.m_highPassFilter);
}
m_settings = settings;
if (force) {
m_settings = settings;
} else {
m_settings.applySettings(settingsKeys, settings);
}
}
void M17DemodSink::configureMyPosition(float myLatitude, float myLongitude)

View File

@ -46,7 +46,7 @@ public:
void applyAudioSampleRate(int sampleRate);
void applyChannelSettings(int channelSampleRate, int channelFrequencyOffset, bool force = false);
void applySettings(const M17DemodSettings& settings, bool force = false);
void applySettings(const M17DemodSettings& settings, const QList<QString>& settingsKeys, bool force = false);
AudioFifo *getAudioFifo() { return &m_audioFifo; }
void setAudioFifoLabel(const QString& label) { m_audioFifo.setLabel("1:" + label); }
int getAudioSampleRate() const { return m_audioSampleRate; }

View File

@ -102,7 +102,13 @@ bool M17ModGUI::handleMessage(const Message& message)
else if (M17Mod::MsgConfigureM17Mod::match(message))
{
const M17Mod::MsgConfigureM17Mod& cfg = (M17Mod::MsgConfigureM17Mod&) message;
m_settings = cfg.getSettings();
if (cfg.getForce()) {
m_settings = cfg.getSettings();
} else {
m_settings.applySettings(cfg.getSettingsKeys(), cfg.getSettings());
}
blockApplySettings(true);
m_channelMarker.updateSettings(static_cast<const ChannelMarker*>(m_settings.m_channelMarker));
displaySettings();

View File

@ -8257,11 +8257,11 @@ margin-bottom: 20px;
"type" : "number",
"format" : "float"
},
"demodGain" : {
"volume" : {
"type" : "number",
"format" : "float"
},
"volume" : {
"demodGain" : {
"type" : "number",
"format" : "float"
},
@ -8281,18 +8281,12 @@ margin-bottom: 20px;
"syncOrConstellation" : {
"type" : "integer"
},
"pllLock" : {
"type" : "integer"
},
"rgbColor" : {
"type" : "integer"
},
"title" : {
"type" : "string"
},
"audioDeviceName" : {
"type" : "string"
},
"highPassFilter" : {
"type" : "integer"
},
@ -8308,6 +8302,12 @@ margin-bottom: 20px;
"type" : "integer",
"description" : "0 to 255"
},
"audioDeviceName" : {
"type" : "string"
},
"statusLogEnabled" : {
"type" : "integer"
},
"streamIndex" : {
"type" : "integer",
"description" : "MIMO channel. Not relevant when connected to SI (single Rx)."
@ -56435,7 +56435,7 @@ except ApiException as e:
</div>
<div id="generator">
<div class="content">
Generated 2022-07-09T11:05:50.499+02:00
Generated 2022-07-10T10:00:03.872+02:00
</div>
</div>
</div>

View File

@ -10,10 +10,10 @@ M17DemodSettings:
fmDeviation:
type: number
format: float
demodGain:
volume:
type: number
format: float
volume:
demodGain:
type: number
format: float
baudRate:
@ -27,14 +27,10 @@ M17DemodSettings:
type: integer
syncOrConstellation:
type: integer
pllLock:
type: integer
rgbColor:
type: integer
title:
type: string
audioDeviceName:
type: string
highPassFilter:
type: integer
traceLengthMutliplier:
@ -46,6 +42,10 @@ M17DemodSettings:
traceDecay:
description: 0 to 255
type: integer
audioDeviceName:
type: string
statusLogEnabled:
type: integer
streamIndex:
description: MIMO channel. Not relevant when connected to SI (single Rx).
type: integer

View File

@ -10,10 +10,10 @@ M17DemodSettings:
fmDeviation:
type: number
format: float
demodGain:
volume:
type: number
format: float
volume:
demodGain:
type: number
format: float
baudRate:
@ -27,14 +27,10 @@ M17DemodSettings:
type: integer
syncOrConstellation:
type: integer
pllLock:
type: integer
rgbColor:
type: integer
title:
type: string
audioDeviceName:
type: string
highPassFilter:
type: integer
traceLengthMutliplier:
@ -46,6 +42,10 @@ M17DemodSettings:
traceDecay:
description: 0 to 255
type: integer
audioDeviceName:
type: string
statusLogEnabled:
type: integer
streamIndex:
description: MIMO channel. Not relevant when connected to SI (single Rx).
type: integer

View File

@ -8257,11 +8257,11 @@ margin-bottom: 20px;
"type" : "number",
"format" : "float"
},
"demodGain" : {
"volume" : {
"type" : "number",
"format" : "float"
},
"volume" : {
"demodGain" : {
"type" : "number",
"format" : "float"
},
@ -8281,18 +8281,12 @@ margin-bottom: 20px;
"syncOrConstellation" : {
"type" : "integer"
},
"pllLock" : {
"type" : "integer"
},
"rgbColor" : {
"type" : "integer"
},
"title" : {
"type" : "string"
},
"audioDeviceName" : {
"type" : "string"
},
"highPassFilter" : {
"type" : "integer"
},
@ -8308,6 +8302,12 @@ margin-bottom: 20px;
"type" : "integer",
"description" : "0 to 255"
},
"audioDeviceName" : {
"type" : "string"
},
"statusLogEnabled" : {
"type" : "integer"
},
"streamIndex" : {
"type" : "integer",
"description" : "MIMO channel. Not relevant when connected to SI (single Rx)."
@ -56435,7 +56435,7 @@ except ApiException as e:
</div>
<div id="generator">
<div class="content">
Generated 2022-07-09T11:05:50.499+02:00
Generated 2022-07-10T10:00:03.872+02:00
</div>
</div>
</div>

View File

@ -34,10 +34,10 @@ SWGM17DemodSettings::SWGM17DemodSettings() {
m_rf_bandwidth_isSet = false;
fm_deviation = 0.0f;
m_fm_deviation_isSet = false;
demod_gain = 0.0f;
m_demod_gain_isSet = false;
volume = 0.0f;
m_volume_isSet = false;
demod_gain = 0.0f;
m_demod_gain_isSet = false;
baud_rate = 0;
m_baud_rate_isSet = false;
squelch_gate = 0;
@ -48,14 +48,10 @@ SWGM17DemodSettings::SWGM17DemodSettings() {
m_audio_mute_isSet = false;
sync_or_constellation = 0;
m_sync_or_constellation_isSet = false;
pll_lock = 0;
m_pll_lock_isSet = false;
rgb_color = 0;
m_rgb_color_isSet = false;
title = nullptr;
m_title_isSet = false;
audio_device_name = nullptr;
m_audio_device_name_isSet = false;
high_pass_filter = 0;
m_high_pass_filter_isSet = false;
trace_length_mutliplier = 0;
@ -64,6 +60,10 @@ SWGM17DemodSettings::SWGM17DemodSettings() {
m_trace_stroke_isSet = false;
trace_decay = 0;
m_trace_decay_isSet = false;
audio_device_name = nullptr;
m_audio_device_name_isSet = false;
status_log_enabled = 0;
m_status_log_enabled_isSet = false;
stream_index = 0;
m_stream_index_isSet = false;
use_reverse_api = 0;
@ -94,10 +94,10 @@ SWGM17DemodSettings::init() {
m_rf_bandwidth_isSet = false;
fm_deviation = 0.0f;
m_fm_deviation_isSet = false;
demod_gain = 0.0f;
m_demod_gain_isSet = false;
volume = 0.0f;
m_volume_isSet = false;
demod_gain = 0.0f;
m_demod_gain_isSet = false;
baud_rate = 0;
m_baud_rate_isSet = false;
squelch_gate = 0;
@ -108,14 +108,10 @@ SWGM17DemodSettings::init() {
m_audio_mute_isSet = false;
sync_or_constellation = 0;
m_sync_or_constellation_isSet = false;
pll_lock = 0;
m_pll_lock_isSet = false;
rgb_color = 0;
m_rgb_color_isSet = false;
title = new QString("");
m_title_isSet = false;
audio_device_name = new QString("");
m_audio_device_name_isSet = false;
high_pass_filter = 0;
m_high_pass_filter_isSet = false;
trace_length_mutliplier = 0;
@ -124,6 +120,10 @@ SWGM17DemodSettings::init() {
m_trace_stroke_isSet = false;
trace_decay = 0;
m_trace_decay_isSet = false;
audio_device_name = new QString("");
m_audio_device_name_isSet = false;
status_log_enabled = 0;
m_status_log_enabled_isSet = false;
stream_index = 0;
m_stream_index_isSet = false;
use_reverse_api = 0;
@ -155,19 +155,19 @@ SWGM17DemodSettings::cleanup() {
if(title != nullptr) {
delete title;
}
if(audio_device_name != nullptr) {
delete audio_device_name;
}
if(reverse_api_address != nullptr) {
delete reverse_api_address;
}
@ -199,10 +199,10 @@ SWGM17DemodSettings::fromJsonObject(QJsonObject &pJson) {
::SWGSDRangel::setValue(&fm_deviation, pJson["fmDeviation"], "float", "");
::SWGSDRangel::setValue(&demod_gain, pJson["demodGain"], "float", "");
::SWGSDRangel::setValue(&volume, pJson["volume"], "float", "");
::SWGSDRangel::setValue(&demod_gain, pJson["demodGain"], "float", "");
::SWGSDRangel::setValue(&baud_rate, pJson["baudRate"], "qint32", "");
::SWGSDRangel::setValue(&squelch_gate, pJson["squelchGate"], "qint32", "");
@ -213,14 +213,10 @@ SWGM17DemodSettings::fromJsonObject(QJsonObject &pJson) {
::SWGSDRangel::setValue(&sync_or_constellation, pJson["syncOrConstellation"], "qint32", "");
::SWGSDRangel::setValue(&pll_lock, pJson["pllLock"], "qint32", "");
::SWGSDRangel::setValue(&rgb_color, pJson["rgbColor"], "qint32", "");
::SWGSDRangel::setValue(&title, pJson["title"], "QString", "QString");
::SWGSDRangel::setValue(&audio_device_name, pJson["audioDeviceName"], "QString", "QString");
::SWGSDRangel::setValue(&high_pass_filter, pJson["highPassFilter"], "qint32", "");
::SWGSDRangel::setValue(&trace_length_mutliplier, pJson["traceLengthMutliplier"], "qint32", "");
@ -229,6 +225,10 @@ SWGM17DemodSettings::fromJsonObject(QJsonObject &pJson) {
::SWGSDRangel::setValue(&trace_decay, pJson["traceDecay"], "qint32", "");
::SWGSDRangel::setValue(&audio_device_name, pJson["audioDeviceName"], "QString", "QString");
::SWGSDRangel::setValue(&status_log_enabled, pJson["statusLogEnabled"], "qint32", "");
::SWGSDRangel::setValue(&stream_index, pJson["streamIndex"], "qint32", "");
::SWGSDRangel::setValue(&use_reverse_api, pJson["useReverseAPI"], "qint32", "");
@ -270,12 +270,12 @@ SWGM17DemodSettings::asJsonObject() {
if(m_fm_deviation_isSet){
obj->insert("fmDeviation", QJsonValue(fm_deviation));
}
if(m_demod_gain_isSet){
obj->insert("demodGain", QJsonValue(demod_gain));
}
if(m_volume_isSet){
obj->insert("volume", QJsonValue(volume));
}
if(m_demod_gain_isSet){
obj->insert("demodGain", QJsonValue(demod_gain));
}
if(m_baud_rate_isSet){
obj->insert("baudRate", QJsonValue(baud_rate));
}
@ -291,18 +291,12 @@ SWGM17DemodSettings::asJsonObject() {
if(m_sync_or_constellation_isSet){
obj->insert("syncOrConstellation", QJsonValue(sync_or_constellation));
}
if(m_pll_lock_isSet){
obj->insert("pllLock", QJsonValue(pll_lock));
}
if(m_rgb_color_isSet){
obj->insert("rgbColor", QJsonValue(rgb_color));
}
if(title != nullptr && *title != QString("")){
toJsonValue(QString("title"), title, obj, QString("QString"));
}
if(audio_device_name != nullptr && *audio_device_name != QString("")){
toJsonValue(QString("audioDeviceName"), audio_device_name, obj, QString("QString"));
}
if(m_high_pass_filter_isSet){
obj->insert("highPassFilter", QJsonValue(high_pass_filter));
}
@ -315,6 +309,12 @@ SWGM17DemodSettings::asJsonObject() {
if(m_trace_decay_isSet){
obj->insert("traceDecay", QJsonValue(trace_decay));
}
if(audio_device_name != nullptr && *audio_device_name != QString("")){
toJsonValue(QString("audioDeviceName"), audio_device_name, obj, QString("QString"));
}
if(m_status_log_enabled_isSet){
obj->insert("statusLogEnabled", QJsonValue(status_log_enabled));
}
if(m_stream_index_isSet){
obj->insert("streamIndex", QJsonValue(stream_index));
}
@ -373,16 +373,6 @@ SWGM17DemodSettings::setFmDeviation(float fm_deviation) {
this->m_fm_deviation_isSet = true;
}
float
SWGM17DemodSettings::getDemodGain() {
return demod_gain;
}
void
SWGM17DemodSettings::setDemodGain(float demod_gain) {
this->demod_gain = demod_gain;
this->m_demod_gain_isSet = true;
}
float
SWGM17DemodSettings::getVolume() {
return volume;
@ -393,6 +383,16 @@ SWGM17DemodSettings::setVolume(float volume) {
this->m_volume_isSet = true;
}
float
SWGM17DemodSettings::getDemodGain() {
return demod_gain;
}
void
SWGM17DemodSettings::setDemodGain(float demod_gain) {
this->demod_gain = demod_gain;
this->m_demod_gain_isSet = true;
}
qint32
SWGM17DemodSettings::getBaudRate() {
return baud_rate;
@ -443,16 +443,6 @@ SWGM17DemodSettings::setSyncOrConstellation(qint32 sync_or_constellation) {
this->m_sync_or_constellation_isSet = true;
}
qint32
SWGM17DemodSettings::getPllLock() {
return pll_lock;
}
void
SWGM17DemodSettings::setPllLock(qint32 pll_lock) {
this->pll_lock = pll_lock;
this->m_pll_lock_isSet = true;
}
qint32
SWGM17DemodSettings::getRgbColor() {
return rgb_color;
@ -473,16 +463,6 @@ SWGM17DemodSettings::setTitle(QString* title) {
this->m_title_isSet = true;
}
QString*
SWGM17DemodSettings::getAudioDeviceName() {
return audio_device_name;
}
void
SWGM17DemodSettings::setAudioDeviceName(QString* audio_device_name) {
this->audio_device_name = audio_device_name;
this->m_audio_device_name_isSet = true;
}
qint32
SWGM17DemodSettings::getHighPassFilter() {
return high_pass_filter;
@ -523,6 +503,26 @@ SWGM17DemodSettings::setTraceDecay(qint32 trace_decay) {
this->m_trace_decay_isSet = true;
}
QString*
SWGM17DemodSettings::getAudioDeviceName() {
return audio_device_name;
}
void
SWGM17DemodSettings::setAudioDeviceName(QString* audio_device_name) {
this->audio_device_name = audio_device_name;
this->m_audio_device_name_isSet = true;
}
qint32
SWGM17DemodSettings::getStatusLogEnabled() {
return status_log_enabled;
}
void
SWGM17DemodSettings::setStatusLogEnabled(qint32 status_log_enabled) {
this->status_log_enabled = status_log_enabled;
this->m_status_log_enabled_isSet = true;
}
qint32
SWGM17DemodSettings::getStreamIndex() {
return stream_index;
@ -617,10 +617,10 @@ SWGM17DemodSettings::isSet(){
if(m_fm_deviation_isSet){
isObjectUpdated = true; break;
}
if(m_demod_gain_isSet){
if(m_volume_isSet){
isObjectUpdated = true; break;
}
if(m_volume_isSet){
if(m_demod_gain_isSet){
isObjectUpdated = true; break;
}
if(m_baud_rate_isSet){
@ -638,18 +638,12 @@ SWGM17DemodSettings::isSet(){
if(m_sync_or_constellation_isSet){
isObjectUpdated = true; break;
}
if(m_pll_lock_isSet){
isObjectUpdated = true; break;
}
if(m_rgb_color_isSet){
isObjectUpdated = true; break;
}
if(title && *title != QString("")){
isObjectUpdated = true; break;
}
if(audio_device_name && *audio_device_name != QString("")){
isObjectUpdated = true; break;
}
if(m_high_pass_filter_isSet){
isObjectUpdated = true; break;
}
@ -662,6 +656,12 @@ SWGM17DemodSettings::isSet(){
if(m_trace_decay_isSet){
isObjectUpdated = true; break;
}
if(audio_device_name && *audio_device_name != QString("")){
isObjectUpdated = true; break;
}
if(m_status_log_enabled_isSet){
isObjectUpdated = true; break;
}
if(m_stream_index_isSet){
isObjectUpdated = true; break;
}

View File

@ -53,12 +53,12 @@ public:
float getFmDeviation();
void setFmDeviation(float fm_deviation);
float getDemodGain();
void setDemodGain(float demod_gain);
float getVolume();
void setVolume(float volume);
float getDemodGain();
void setDemodGain(float demod_gain);
qint32 getBaudRate();
void setBaudRate(qint32 baud_rate);
@ -74,18 +74,12 @@ public:
qint32 getSyncOrConstellation();
void setSyncOrConstellation(qint32 sync_or_constellation);
qint32 getPllLock();
void setPllLock(qint32 pll_lock);
qint32 getRgbColor();
void setRgbColor(qint32 rgb_color);
QString* getTitle();
void setTitle(QString* title);
QString* getAudioDeviceName();
void setAudioDeviceName(QString* audio_device_name);
qint32 getHighPassFilter();
void setHighPassFilter(qint32 high_pass_filter);
@ -98,6 +92,12 @@ public:
qint32 getTraceDecay();
void setTraceDecay(qint32 trace_decay);
QString* getAudioDeviceName();
void setAudioDeviceName(QString* audio_device_name);
qint32 getStatusLogEnabled();
void setStatusLogEnabled(qint32 status_log_enabled);
qint32 getStreamIndex();
void setStreamIndex(qint32 stream_index);
@ -135,12 +135,12 @@ private:
float fm_deviation;
bool m_fm_deviation_isSet;
float demod_gain;
bool m_demod_gain_isSet;
float volume;
bool m_volume_isSet;
float demod_gain;
bool m_demod_gain_isSet;
qint32 baud_rate;
bool m_baud_rate_isSet;
@ -156,18 +156,12 @@ private:
qint32 sync_or_constellation;
bool m_sync_or_constellation_isSet;
qint32 pll_lock;
bool m_pll_lock_isSet;
qint32 rgb_color;
bool m_rgb_color_isSet;
QString* title;
bool m_title_isSet;
QString* audio_device_name;
bool m_audio_device_name_isSet;
qint32 high_pass_filter;
bool m_high_pass_filter_isSet;
@ -180,6 +174,12 @@ private:
qint32 trace_decay;
bool m_trace_decay_isSet;
QString* audio_device_name;
bool m_audio_device_name_isSet;
qint32 status_log_enabled;
bool m_status_log_enabled_isSet;
qint32 stream_index;
bool m_stream_index_isSet;