diff --git a/plugins/channelrx/demodam/amdemodgui.cpp b/plugins/channelrx/demodam/amdemodgui.cpp index 2bc57c488..91c248146 100644 --- a/plugins/channelrx/demodam/amdemodgui.cpp +++ b/plugins/channelrx/demodam/amdemodgui.cpp @@ -206,12 +206,18 @@ void AMDemodGUI::onWidgetRolled(QWidget* widget, bool rollDown) void AMDemodGUI::onMenuDialogCalled(const QPoint &p) { BasicChannelSettingsDialog dialog(&m_channelMarker, this); + dialog.setUseReverseAPI(m_settings.m_useReverseAPI); + dialog.setReverseAPIAddress(m_settings.m_reverseAPIAddress); + dialog.setReverseAPIPort(m_settings.m_reverseAPIPort); dialog.move(p); dialog.exec(); m_settings.m_inputFrequencyOffset = m_channelMarker.getCenterFrequency(); m_settings.m_rgbColor = m_channelMarker.getColor().rgb(); m_settings.m_title = m_channelMarker.getTitle(); + m_settings.m_useReverseAPI = dialog.useReverseAPI(); + m_settings.m_reverseAPIAddress = dialog.getReverseAPIAddress(); + m_settings.m_reverseAPIPort = dialog.getReverseAPIPort(); setWindowTitle(m_settings.m_title); setTitleColor(m_settings.m_rgbColor); diff --git a/plugins/channelrx/demodam/amdemodplugin.cpp b/plugins/channelrx/demodam/amdemodplugin.cpp index 28a4b640c..fb36f8fc9 100644 --- a/plugins/channelrx/demodam/amdemodplugin.cpp +++ b/plugins/channelrx/demodam/amdemodplugin.cpp @@ -9,7 +9,7 @@ const PluginDescriptor AMDemodPlugin::m_pluginDescriptor = { QString("AM Demodulator"), - QString("4.1.0"), + QString("4.3.2"), QString("(c) Edouard Griffiths, F4EXB"), QString("https://github.com/f4exb/sdrangel"), true, diff --git a/plugins/channelrx/demodam/amdemodsettings.cpp b/plugins/channelrx/demodam/amdemodsettings.cpp index cf3c36ae5..0a421e7a8 100644 --- a/plugins/channelrx/demodam/amdemodsettings.cpp +++ b/plugins/channelrx/demodam/amdemodsettings.cpp @@ -40,6 +40,9 @@ void AMDemodSettings::resetToDefaults() m_audioDeviceName = AudioDeviceManager::m_defaultDeviceName; m_pll = false; m_syncAMOperation = SyncAMDSB; + m_useReverseAPI = false; + m_reverseAPIAddress = "127.0.0.1"; + m_reverseAPIPort = 8888; } QByteArray AMDemodSettings::serialize() const @@ -60,6 +63,9 @@ QByteArray AMDemodSettings::serialize() const s.writeString(11, m_audioDeviceName); s.writeBool(12, m_pll); s.writeS32(13, (int) m_syncAMOperation); + s.writeBool(14, m_useReverseAPI); + s.writeString(15, m_reverseAPIAddress); + s.writeU32(16, m_reverseAPIPort); return s.final(); } @@ -78,6 +84,7 @@ bool AMDemodSettings::deserialize(const QByteArray& data) { QByteArray bytetmp; qint32 tmp; + uint32_t utmp; QString strtmp; d.readS32(1, &m_inputFrequencyOffset, 0); @@ -100,6 +107,15 @@ bool AMDemodSettings::deserialize(const QByteArray& data) d.readBool(12, &m_pll, false); d.readS32(13, &tmp, 0); m_syncAMOperation = tmp < 0 ? SyncAMDSB : tmp > 2 ? SyncAMDSB : (SyncAMOperation) tmp; + d.readBool(14, &m_useReverseAPI, false); + d.readString(15, &m_reverseAPIAddress, "127.0.0.1"); + d.readU32(16, &utmp, 0); + + if ((utmp > 1023) && (utmp < 65535)) { + m_reverseAPIPort = utmp; + } else { + m_reverseAPIPort = 8888; + } return true; } diff --git a/plugins/channelrx/demodam/amdemodsettings.h b/plugins/channelrx/demodam/amdemodsettings.h index 3aaebd230..0f2fd2cee 100644 --- a/plugins/channelrx/demodam/amdemodsettings.h +++ b/plugins/channelrx/demodam/amdemodsettings.h @@ -42,6 +42,9 @@ struct AMDemodSettings QString m_audioDeviceName; bool m_pll; SyncAMOperation m_syncAMOperation; + bool m_useReverseAPI; + QString m_reverseAPIAddress; + uint16_t m_reverseAPIPort; AMDemodSettings(); void resetToDefaults(); diff --git a/sdrgui/gui/basicchannelsettingsdialog.cpp b/sdrgui/gui/basicchannelsettingsdialog.cpp index 76b21c982..d66112333 100644 --- a/sdrgui/gui/basicchannelsettingsdialog.cpp +++ b/sdrgui/gui/basicchannelsettingsdialog.cpp @@ -15,6 +15,9 @@ BasicChannelSettingsDialog::BasicChannelSettingsDialog(ChannelMarker* marker, QW ui->title->setText(m_channelMarker->getTitle()); m_color = m_channelMarker->getColor(); ui->fScaleDisplayType->setCurrentIndex((int) m_channelMarker->getFrequencyScaleDisplayType()); + setUseReverseAPI(false); + setReverseAPIAddress("127.0.0.1"); + setReverseAPIPort(8888); paintColor(); } @@ -23,6 +26,29 @@ BasicChannelSettingsDialog::~BasicChannelSettingsDialog() delete ui; } +void BasicChannelSettingsDialog::setUseReverseAPI(bool useReverseAPI) +{ + m_useReverseAPI = useReverseAPI; + ui->reverseAPI->setChecked(m_useReverseAPI); +} + +void BasicChannelSettingsDialog::setReverseAPIAddress(const QString& address) +{ + m_reverseAPIAddress = address; + ui->reverseAPIAddress->setText(m_reverseAPIAddress); +} + +void BasicChannelSettingsDialog::setReverseAPIPort(uint16_t port) +{ + if (port < 1024) { + return; + } else { + m_reverseAPIPort = port; + } + + ui->reverseAPIPort->setText(tr("%1").arg(m_reverseAPIPort)); +} + void BasicChannelSettingsDialog::paintColor() { QPixmap pm(24, 24); @@ -38,12 +64,36 @@ void BasicChannelSettingsDialog::on_colorBtn_clicked() { QColor c = m_color; c = QColorDialog::getColor(c, this, tr("Select Color for Channel"), QColorDialog::DontUseNativeDialog); - if(c.isValid()) { + + if (c.isValid()) + { m_color = c; paintColor(); } } +void BasicChannelSettingsDialog::on_reverseAPI_toggled(bool checked) +{ + m_useReverseAPI = checked; +} + +void BasicChannelSettingsDialog::on_reverseAPIAddress_returnPressed() +{ + m_reverseAPIAddress = ui->reverseAPIAddress->text(); +} + +void BasicChannelSettingsDialog::on_reverseAPIPort_returnPressed() +{ + bool dataOk; + int reverseAPIPort = ui->reverseAPIPort->text().toInt(&dataOk); + + if((!dataOk) || (reverseAPIPort < 1024) || (reverseAPIPort > 65535)) { + return; + } else { + m_reverseAPIPort = reverseAPIPort; + } +} + void BasicChannelSettingsDialog::accept() { m_channelMarker->blockSignals(true); diff --git a/sdrgui/gui/basicchannelsettingsdialog.h b/sdrgui/gui/basicchannelsettingsdialog.h index 4276a4c23..8cc67ce63 100644 --- a/sdrgui/gui/basicchannelsettingsdialog.h +++ b/sdrgui/gui/basicchannelsettingsdialog.h @@ -19,15 +19,27 @@ public: explicit BasicChannelSettingsDialog(ChannelMarker* marker, QWidget *parent = 0); ~BasicChannelSettingsDialog(); bool hasChanged() const { return m_hasChanged; } + bool useReverseAPI() const { return m_useReverseAPI; } + const QString& getReverseAPIAddress() const { return m_reverseAPIAddress; } + uint16_t getReverseAPIPort() const { return m_reverseAPIPort; } + void setUseReverseAPI(bool useReverseAPI); + void setReverseAPIAddress(const QString& address); + void setReverseAPIPort(uint16_t port); private slots: void on_colorBtn_clicked(); + void on_reverseAPI_toggled(bool checked); + void on_reverseAPIAddress_returnPressed(); + void on_reverseAPIPort_returnPressed(); void accept(); private: Ui::BasicChannelSettingsDialog *ui; ChannelMarker* m_channelMarker; QColor m_color; + bool m_useReverseAPI; + QString m_reverseAPIAddress; + uint16_t m_reverseAPIPort; bool m_hasChanged; void paintColor(); diff --git a/sdrgui/gui/basicchannelsettingsdialog.ui b/sdrgui/gui/basicchannelsettingsdialog.ui index 25af72d52..6d2e02f89 100644 --- a/sdrgui/gui/basicchannelsettingsdialog.ui +++ b/sdrgui/gui/basicchannelsettingsdialog.ui @@ -7,7 +7,7 @@ 0 0 400 - 131 + 135 @@ -112,6 +112,78 @@ + + + + + + Sychronize with reverse API + + + reverse API + + + + + + + + 120 + 0 + + + + Reverse API address + + + 000.000.000.000 + + + 127.0.0.1 + + + + + + + : + + + + + + + + 50 + 16777215 + + + + Reverse API port + + + 00000 + + + 8888 + + + + + + + Qt::Horizontal + + + + 40 + 20 + + + + + +