mirror of
https://github.com/f4exb/sdrangel.git
synced 2025-04-10 13:40:37 -04:00
SDRdaemonSink: added compatibility with SDRangel and SDRdaemon server types
This commit is contained in:
parent
3469b91163
commit
96dfce0154
@ -327,12 +327,52 @@ void SDRdaemonSinkGui::on_nbFECBlocks_valueChanged(int value)
|
||||
sendSettings();
|
||||
}
|
||||
|
||||
void SDRdaemonSinkGui::on_serverType_currentIndexChanged(int index)
|
||||
{
|
||||
m_settings.m_serverType = (SDRdaemonSinkSettings::ServerType) index;
|
||||
sendSettings();
|
||||
|
||||
QString typeCode = m_settings.m_serverType == SDRdaemonSinkSettings::ServerAngel ? "sdrangel" : "sdrdaemon";
|
||||
QString infoURL = QString("http://%1:%2/%3").arg(m_settings.m_apiAddress).arg(m_settings.m_apiPort).arg(typeCode);
|
||||
m_networkRequest.setUrl(QUrl(infoURL));
|
||||
m_networkManager->get(m_networkRequest);
|
||||
}
|
||||
|
||||
void SDRdaemonSinkGui::on_deviceIndex_returnPressed()
|
||||
{
|
||||
bool dataOk;
|
||||
int deviceIndex = ui->deviceIndex->text().toInt(&dataOk);
|
||||
|
||||
if ((!dataOk) || (deviceIndex < 0)) {
|
||||
return;
|
||||
} else {
|
||||
m_settings.m_deviceIndex = deviceIndex;
|
||||
}
|
||||
|
||||
sendSettings();
|
||||
}
|
||||
|
||||
void SDRdaemonSinkGui::on_channelIndex_returnPressed()
|
||||
{
|
||||
bool dataOk;
|
||||
int channelIndex = ui->channelIndex->text().toInt(&dataOk);
|
||||
|
||||
if ((!dataOk) || (channelIndex < 0)) {
|
||||
return;
|
||||
} else {
|
||||
m_settings.m_channelIndex = channelIndex;
|
||||
}
|
||||
|
||||
sendSettings();
|
||||
}
|
||||
|
||||
void SDRdaemonSinkGui::on_apiAddress_returnPressed()
|
||||
{
|
||||
m_settings.m_apiAddress = ui->apiAddress->text();
|
||||
sendSettings();
|
||||
|
||||
QString infoURL = QString("http://%1:%2/sdrdaemon").arg(m_settings.m_apiAddress).arg(m_settings.m_apiPort);
|
||||
QString typeCode = m_settings.m_serverType == SDRdaemonSinkSettings::ServerAngel ? "sdrangel" : "sdrdaemon";
|
||||
QString infoURL = QString("http://%1:%2/%3").arg(m_settings.m_apiAddress).arg(m_settings.m_apiPort).arg(typeCode);
|
||||
m_networkRequest.setUrl(QUrl(infoURL));
|
||||
m_networkManager->get(m_networkRequest);
|
||||
}
|
||||
@ -342,18 +382,16 @@ void SDRdaemonSinkGui::on_apiPort_returnPressed()
|
||||
bool dataOk;
|
||||
int apiPort = ui->apiPort->text().toInt(&dataOk);
|
||||
|
||||
if((!dataOk) || (apiPort < 1024) || (apiPort > 65535))
|
||||
{
|
||||
if((!dataOk) || (apiPort < 1024) || (apiPort > 65535)) {
|
||||
return;
|
||||
}
|
||||
else
|
||||
{
|
||||
} else {
|
||||
m_settings.m_apiPort = apiPort;
|
||||
}
|
||||
|
||||
sendSettings();
|
||||
|
||||
QString infoURL = QString("http://%1:%2/sdrdaemon").arg(m_settings.m_apiAddress).arg(m_settings.m_apiPort);
|
||||
QString typeCode = m_settings.m_serverType == SDRdaemonSinkSettings::ServerAngel ? "sdrangel" : "sdrdaemon";
|
||||
QString infoURL = QString("http://%1:%2/%3").arg(m_settings.m_apiAddress).arg(m_settings.m_apiPort).arg(typeCode);
|
||||
m_networkRequest.setUrl(QUrl(infoURL));
|
||||
m_networkManager->get(m_networkRequest);
|
||||
}
|
||||
@ -369,12 +407,9 @@ void SDRdaemonSinkGui::on_dataPort_returnPressed()
|
||||
bool dataOk;
|
||||
int dataPort = ui->dataPort->text().toInt(&dataOk);
|
||||
|
||||
if((!dataOk) || (dataPort < 1024) || (dataPort > 65535))
|
||||
{
|
||||
if((!dataOk) || (dataPort < 1024) || (dataPort > 65535)) {
|
||||
return;
|
||||
}
|
||||
else
|
||||
{
|
||||
} else {
|
||||
m_settings.m_dataPort = dataPort;
|
||||
}
|
||||
|
||||
@ -395,7 +430,8 @@ void SDRdaemonSinkGui::on_apiApplyButton_clicked(bool checked __attribute__((unu
|
||||
|
||||
sendSettings();
|
||||
|
||||
QString infoURL = QString("http://%1:%2/sdrdaemon").arg(m_settings.m_apiAddress).arg(m_settings.m_apiPort);
|
||||
QString typeCode = m_settings.m_serverType == SDRdaemonSinkSettings::ServerAngel ? "sdrangel" : "sdrdaemon";
|
||||
QString infoURL = QString("http://%1:%2/%3").arg(m_settings.m_apiAddress).arg(m_settings.m_apiPort).arg(typeCode);
|
||||
m_networkRequest.setUrl(QUrl(infoURL));
|
||||
m_networkManager->get(m_networkRequest);
|
||||
}
|
||||
@ -471,7 +507,22 @@ void SDRdaemonSinkGui::tick()
|
||||
{
|
||||
if (++m_tickCount == 20) // once per second
|
||||
{
|
||||
QString reportURL = QString("http://%1:%2/sdrdaemon/channel/report").arg(m_settings.m_apiAddress).arg(m_settings.m_apiPort);
|
||||
QString reportURL;
|
||||
|
||||
if (m_settings.m_serverType == SDRdaemonSinkSettings::ServerAngel) {
|
||||
reportURL = QString("http://%1:%2/sdrangel/deviceset/%3/channel/%4/report")
|
||||
.arg(m_settings.m_apiAddress)
|
||||
.arg(m_settings.m_apiPort)
|
||||
.arg(m_settings.m_deviceIndex)
|
||||
.arg(m_settings.m_channelIndex);
|
||||
}
|
||||
else
|
||||
{
|
||||
reportURL = QString("http://%1:%2/sdrdaemon/channel/report")
|
||||
.arg(m_settings.m_apiAddress)
|
||||
.arg(m_settings.m_apiPort);
|
||||
}
|
||||
|
||||
m_networkRequest.setUrl(QUrl(reportURL));
|
||||
m_networkManager->get(m_networkRequest);
|
||||
|
||||
|
@ -116,6 +116,9 @@ private slots:
|
||||
void on_sampleRate_changed(quint64 value);
|
||||
void on_txDelay_valueChanged(int value);
|
||||
void on_nbFECBlocks_valueChanged(int value);
|
||||
void on_serverType_currentIndexChanged(int index);
|
||||
void on_deviceIndex_returnPressed();
|
||||
void on_channelIndex_returnPressed();
|
||||
void on_apiAddress_returnPressed();
|
||||
void on_apiPort_returnPressed();
|
||||
void on_dataAddress_returnPressed();
|
||||
|
@ -7,7 +7,7 @@
|
||||
<x>0</x>
|
||||
<y>0</y>
|
||||
<width>360</width>
|
||||
<height>270</height>
|
||||
<height>300</height>
|
||||
</rect>
|
||||
</property>
|
||||
<property name="sizePolicy">
|
||||
@ -19,7 +19,7 @@
|
||||
<property name="minimumSize">
|
||||
<size>
|
||||
<width>360</width>
|
||||
<height>270</height>
|
||||
<height>300</height>
|
||||
</size>
|
||||
</property>
|
||||
<property name="font">
|
||||
@ -520,6 +520,92 @@
|
||||
</item>
|
||||
</layout>
|
||||
</item>
|
||||
<item>
|
||||
<layout class="QHBoxLayout" name="interfaceLayout">
|
||||
<item>
|
||||
<widget class="QComboBox" name="serverType">
|
||||
<property name="toolTip">
|
||||
<string>Remote server type</string>
|
||||
</property>
|
||||
<item>
|
||||
<property name="text">
|
||||
<string>Angel</string>
|
||||
</property>
|
||||
</item>
|
||||
<item>
|
||||
<property name="text">
|
||||
<string>Daemon</string>
|
||||
</property>
|
||||
</item>
|
||||
</widget>
|
||||
</item>
|
||||
<item>
|
||||
<widget class="QLabel" name="deviceIndexLabel">
|
||||
<property name="text">
|
||||
<string>Device</string>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item>
|
||||
<widget class="QLineEdit" name="deviceIndex">
|
||||
<property name="maximumSize">
|
||||
<size>
|
||||
<width>40</width>
|
||||
<height>16777215</height>
|
||||
</size>
|
||||
</property>
|
||||
<property name="toolTip">
|
||||
<string>Device index (for SDRangel server)</string>
|
||||
</property>
|
||||
<property name="inputMask">
|
||||
<string>00</string>
|
||||
</property>
|
||||
<property name="text">
|
||||
<string>0</string>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item>
|
||||
<widget class="QLabel" name="channelIndexLabel">
|
||||
<property name="text">
|
||||
<string>Channel</string>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item>
|
||||
<widget class="QLineEdit" name="channelIndex">
|
||||
<property name="maximumSize">
|
||||
<size>
|
||||
<width>40</width>
|
||||
<height>16777215</height>
|
||||
</size>
|
||||
</property>
|
||||
<property name="toolTip">
|
||||
<string>Channel index (for SDRangel)</string>
|
||||
</property>
|
||||
<property name="inputMask">
|
||||
<string>00</string>
|
||||
</property>
|
||||
<property name="text">
|
||||
<string>0</string>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item>
|
||||
<spacer name="horizontalSpacer_5">
|
||||
<property name="orientation">
|
||||
<enum>Qt::Horizontal</enum>
|
||||
</property>
|
||||
<property name="sizeHint" stdset="0">
|
||||
<size>
|
||||
<width>40</width>
|
||||
<height>20</height>
|
||||
</size>
|
||||
</property>
|
||||
</spacer>
|
||||
</item>
|
||||
</layout>
|
||||
</item>
|
||||
<item>
|
||||
<layout class="QHBoxLayout" name="apiAddressLayout">
|
||||
<item>
|
||||
|
@ -376,6 +376,18 @@ int SDRdaemonSinkOutput::webapiSettingsPutPatch(
|
||||
if (deviceSettingsKeys.contains("dataPort")) {
|
||||
settings.m_dataPort = response.getSdrDaemonSinkSettings()->getDataPort();
|
||||
}
|
||||
if (deviceSettingsKeys.contains("serverType")) {
|
||||
int serverType = response.getSdrDaemonSinkSettings()->getServerType();
|
||||
settings.m_serverType = serverType < 0 ? SDRdaemonSinkSettings::ServerAngel
|
||||
: serverType > 1 ? SDRdaemonSinkSettings::ServerAngel
|
||||
: (SDRdaemonSinkSettings::ServerType) serverType;
|
||||
}
|
||||
if (deviceSettingsKeys.contains("deviceIndex")) {
|
||||
settings.m_deviceIndex = response.getSdrDaemonSinkSettings()->getDeviceIndex();
|
||||
}
|
||||
if (deviceSettingsKeys.contains("channelIndex")) {
|
||||
settings.m_channelIndex = response.getSdrDaemonSinkSettings()->getChannelIndex();
|
||||
}
|
||||
|
||||
MsgConfigureSDRdaemonSink *msg = MsgConfigureSDRdaemonSink::create(settings, force);
|
||||
m_inputMessageQueue.push(msg);
|
||||
@ -410,6 +422,9 @@ void SDRdaemonSinkOutput::webapiFormatDeviceSettings(SWGSDRangel::SWGDeviceSetti
|
||||
response.getSdrDaemonSinkSettings()->setApiPort(settings.m_apiPort);
|
||||
response.getSdrDaemonSinkSettings()->setDataAddress(new QString(settings.m_dataAddress));
|
||||
response.getSdrDaemonSinkSettings()->setDataPort(settings.m_dataPort);
|
||||
response.getSdrDaemonSinkSettings()->setServerType((int) settings.m_serverType);
|
||||
response.getSdrDaemonSinkSettings()->setDeviceIndex(settings.m_deviceIndex);
|
||||
response.getSdrDaemonSinkSettings()->setChannelIndex(settings.m_channelIndex);
|
||||
}
|
||||
|
||||
void SDRdaemonSinkOutput::webapiFormatDeviceReport(SWGSDRangel::SWGDeviceReport& response)
|
||||
|
@ -32,6 +32,9 @@ void SDRdaemonSinkSettings::resetToDefaults()
|
||||
m_apiPort = 9091;
|
||||
m_dataAddress = "127.0.0.1";
|
||||
m_dataPort = 9090;
|
||||
m_serverType = ServerAngel;
|
||||
m_deviceIndex = 0;
|
||||
m_channelIndex = 0;
|
||||
}
|
||||
|
||||
QByteArray SDRdaemonSinkSettings::serialize() const
|
||||
@ -46,6 +49,9 @@ QByteArray SDRdaemonSinkSettings::serialize() const
|
||||
s.writeU32(6, m_apiPort);
|
||||
s.writeString(7, m_dataAddress);
|
||||
s.writeU32(8, m_dataPort);
|
||||
s.writeS32(9, (int) m_serverType);
|
||||
s.writeU32(10, m_deviceIndex);
|
||||
s.writeU32(11, m_channelIndex);
|
||||
|
||||
return s.final();
|
||||
}
|
||||
@ -63,6 +69,8 @@ bool SDRdaemonSinkSettings::deserialize(const QByteArray& data)
|
||||
if (d.getVersion() == 1)
|
||||
{
|
||||
quint32 uintval;
|
||||
int intval;
|
||||
|
||||
d.readU64(1, &m_centerFrequency, 435000*1000);
|
||||
d.readU32(2, &m_sampleRate, 48000);
|
||||
d.readFloat(3, &m_txDelay, 0.5);
|
||||
@ -73,6 +81,17 @@ bool SDRdaemonSinkSettings::deserialize(const QByteArray& data)
|
||||
d.readString(7, &m_dataAddress, "127.0.0.1");
|
||||
d.readU32(8, &uintval, 9090);
|
||||
m_dataPort = uintval % (1<<16);
|
||||
d.readS32(9, &intval, 0);
|
||||
|
||||
if ((intval < 0) || (intval > 1)) {
|
||||
m_serverType = ServerAngel;
|
||||
} else {
|
||||
m_serverType = (ServerType) intval;
|
||||
}
|
||||
|
||||
d.readU32(10, &m_deviceIndex, 0);
|
||||
d.readU32(11, &m_channelIndex, 0);
|
||||
|
||||
return true;
|
||||
}
|
||||
else
|
||||
|
@ -20,6 +20,12 @@
|
||||
#include <QByteArray>
|
||||
|
||||
struct SDRdaemonSinkSettings {
|
||||
|
||||
typedef enum {
|
||||
ServerAngel = 0,
|
||||
ServerDaemon
|
||||
} ServerType;
|
||||
|
||||
quint64 m_centerFrequency;
|
||||
quint32 m_sampleRate;
|
||||
float m_txDelay;
|
||||
@ -28,6 +34,9 @@ struct SDRdaemonSinkSettings {
|
||||
quint16 m_apiPort;
|
||||
QString m_dataAddress;
|
||||
quint16 m_dataPort;
|
||||
ServerType m_serverType;
|
||||
quint32 m_deviceIndex;
|
||||
quint32 m_channelIndex;
|
||||
|
||||
SDRdaemonSinkSettings();
|
||||
void resetToDefaults();
|
||||
|
@ -3351,6 +3351,15 @@ margin-bottom: 20px;
|
||||
},
|
||||
"dataPort" : {
|
||||
"type" : "integer"
|
||||
},
|
||||
"serverType" : {
|
||||
"type" : "integer"
|
||||
},
|
||||
"deviceIndex" : {
|
||||
"type" : "integer"
|
||||
},
|
||||
"channelIndex" : {
|
||||
"type" : "integer"
|
||||
}
|
||||
},
|
||||
"description" : "SDRdaemonSink"
|
||||
@ -28694,7 +28703,7 @@ except ApiException as e:
|
||||
</div>
|
||||
<div id="generator">
|
||||
<div class="content">
|
||||
Generated 2018-09-01T05:45:40.779+02:00
|
||||
Generated 2018-09-01T10:19:35.190+02:00
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
@ -20,6 +20,12 @@ SDRdaemonSinkSettings:
|
||||
type: string
|
||||
dataPort:
|
||||
type: integer
|
||||
serverType:
|
||||
type: integer
|
||||
deviceIndex:
|
||||
type: integer
|
||||
channelIndex:
|
||||
type: integer
|
||||
|
||||
SDRdaemonSinkReport:
|
||||
description: SDRdaemonSource
|
||||
|
@ -20,6 +20,12 @@ SDRdaemonSinkSettings:
|
||||
type: string
|
||||
dataPort:
|
||||
type: integer
|
||||
serverType:
|
||||
type: integer
|
||||
deviceIndex:
|
||||
type: integer
|
||||
channelIndex:
|
||||
type: integer
|
||||
|
||||
SDRdaemonSinkReport:
|
||||
description: SDRdaemonSource
|
||||
|
@ -3351,6 +3351,15 @@ margin-bottom: 20px;
|
||||
},
|
||||
"dataPort" : {
|
||||
"type" : "integer"
|
||||
},
|
||||
"serverType" : {
|
||||
"type" : "integer"
|
||||
},
|
||||
"deviceIndex" : {
|
||||
"type" : "integer"
|
||||
},
|
||||
"channelIndex" : {
|
||||
"type" : "integer"
|
||||
}
|
||||
},
|
||||
"description" : "SDRdaemonSink"
|
||||
@ -28694,7 +28703,7 @@ except ApiException as e:
|
||||
</div>
|
||||
<div id="generator">
|
||||
<div class="content">
|
||||
Generated 2018-09-01T05:45:40.779+02:00
|
||||
Generated 2018-09-01T10:19:35.190+02:00
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
@ -44,6 +44,12 @@ SWGSDRdaemonSinkSettings::SWGSDRdaemonSinkSettings() {
|
||||
m_data_address_isSet = false;
|
||||
data_port = 0;
|
||||
m_data_port_isSet = false;
|
||||
server_type = 0;
|
||||
m_server_type_isSet = false;
|
||||
device_index = 0;
|
||||
m_device_index_isSet = false;
|
||||
channel_index = 0;
|
||||
m_channel_index_isSet = false;
|
||||
}
|
||||
|
||||
SWGSDRdaemonSinkSettings::~SWGSDRdaemonSinkSettings() {
|
||||
@ -68,6 +74,12 @@ SWGSDRdaemonSinkSettings::init() {
|
||||
m_data_address_isSet = false;
|
||||
data_port = 0;
|
||||
m_data_port_isSet = false;
|
||||
server_type = 0;
|
||||
m_server_type_isSet = false;
|
||||
device_index = 0;
|
||||
m_device_index_isSet = false;
|
||||
channel_index = 0;
|
||||
m_channel_index_isSet = false;
|
||||
}
|
||||
|
||||
void
|
||||
@ -84,6 +96,9 @@ SWGSDRdaemonSinkSettings::cleanup() {
|
||||
delete data_address;
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
}
|
||||
|
||||
SWGSDRdaemonSinkSettings*
|
||||
@ -113,6 +128,12 @@ SWGSDRdaemonSinkSettings::fromJsonObject(QJsonObject &pJson) {
|
||||
|
||||
::SWGSDRangel::setValue(&data_port, pJson["dataPort"], "qint32", "");
|
||||
|
||||
::SWGSDRangel::setValue(&server_type, pJson["serverType"], "qint32", "");
|
||||
|
||||
::SWGSDRangel::setValue(&device_index, pJson["deviceIndex"], "qint32", "");
|
||||
|
||||
::SWGSDRangel::setValue(&channel_index, pJson["channelIndex"], "qint32", "");
|
||||
|
||||
}
|
||||
|
||||
QString
|
||||
@ -153,6 +174,15 @@ SWGSDRdaemonSinkSettings::asJsonObject() {
|
||||
if(m_data_port_isSet){
|
||||
obj->insert("dataPort", QJsonValue(data_port));
|
||||
}
|
||||
if(m_server_type_isSet){
|
||||
obj->insert("serverType", QJsonValue(server_type));
|
||||
}
|
||||
if(m_device_index_isSet){
|
||||
obj->insert("deviceIndex", QJsonValue(device_index));
|
||||
}
|
||||
if(m_channel_index_isSet){
|
||||
obj->insert("channelIndex", QJsonValue(channel_index));
|
||||
}
|
||||
|
||||
return obj;
|
||||
}
|
||||
@ -237,6 +267,36 @@ SWGSDRdaemonSinkSettings::setDataPort(qint32 data_port) {
|
||||
this->m_data_port_isSet = true;
|
||||
}
|
||||
|
||||
qint32
|
||||
SWGSDRdaemonSinkSettings::getServerType() {
|
||||
return server_type;
|
||||
}
|
||||
void
|
||||
SWGSDRdaemonSinkSettings::setServerType(qint32 server_type) {
|
||||
this->server_type = server_type;
|
||||
this->m_server_type_isSet = true;
|
||||
}
|
||||
|
||||
qint32
|
||||
SWGSDRdaemonSinkSettings::getDeviceIndex() {
|
||||
return device_index;
|
||||
}
|
||||
void
|
||||
SWGSDRdaemonSinkSettings::setDeviceIndex(qint32 device_index) {
|
||||
this->device_index = device_index;
|
||||
this->m_device_index_isSet = true;
|
||||
}
|
||||
|
||||
qint32
|
||||
SWGSDRdaemonSinkSettings::getChannelIndex() {
|
||||
return channel_index;
|
||||
}
|
||||
void
|
||||
SWGSDRdaemonSinkSettings::setChannelIndex(qint32 channel_index) {
|
||||
this->channel_index = channel_index;
|
||||
this->m_channel_index_isSet = true;
|
||||
}
|
||||
|
||||
|
||||
bool
|
||||
SWGSDRdaemonSinkSettings::isSet(){
|
||||
@ -250,6 +310,9 @@ SWGSDRdaemonSinkSettings::isSet(){
|
||||
if(m_api_port_isSet){ isObjectUpdated = true; break;}
|
||||
if(data_address != nullptr && *data_address != QString("")){ isObjectUpdated = true; break;}
|
||||
if(m_data_port_isSet){ isObjectUpdated = true; break;}
|
||||
if(m_server_type_isSet){ isObjectUpdated = true; break;}
|
||||
if(m_device_index_isSet){ isObjectUpdated = true; break;}
|
||||
if(m_channel_index_isSet){ isObjectUpdated = true; break;}
|
||||
}while(false);
|
||||
return isObjectUpdated;
|
||||
}
|
||||
|
@ -66,6 +66,15 @@ public:
|
||||
qint32 getDataPort();
|
||||
void setDataPort(qint32 data_port);
|
||||
|
||||
qint32 getServerType();
|
||||
void setServerType(qint32 server_type);
|
||||
|
||||
qint32 getDeviceIndex();
|
||||
void setDeviceIndex(qint32 device_index);
|
||||
|
||||
qint32 getChannelIndex();
|
||||
void setChannelIndex(qint32 channel_index);
|
||||
|
||||
|
||||
virtual bool isSet() override;
|
||||
|
||||
@ -94,6 +103,15 @@ private:
|
||||
qint32 data_port;
|
||||
bool m_data_port_isSet;
|
||||
|
||||
qint32 server_type;
|
||||
bool m_server_type_isSet;
|
||||
|
||||
qint32 device_index;
|
||||
bool m_device_index_isSet;
|
||||
|
||||
qint32 channel_index;
|
||||
bool m_channel_index_isSet;
|
||||
|
||||
};
|
||||
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user