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
+
+
+
+
+
+
-