SDRdaemonSink: added compatibility with SDRangel and SDRdaemon server types

pull/228/head
f4exb 2018-09-01 10:44:12 +02:00
rodzic 3469b91163
commit 96dfce0154
12 zmienionych plików z 312 dodań i 18 usunięć

Wyświetl plik

@ -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);

Wyświetl plik

@ -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();

Wyświetl plik

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

Wyświetl plik

@ -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)

Wyświetl plik

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

Wyświetl plik

@ -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();

Wyświetl plik

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

Wyświetl plik

@ -20,6 +20,12 @@ SDRdaemonSinkSettings:
type: string
dataPort:
type: integer
serverType:
type: integer
deviceIndex:
type: integer
channelIndex:
type: integer
SDRdaemonSinkReport:
description: SDRdaemonSource

Wyświetl plik

@ -20,6 +20,12 @@ SDRdaemonSinkSettings:
type: string
dataPort:
type: integer
serverType:
type: integer
deviceIndex:
type: integer
channelIndex:
type: integer
SDRdaemonSinkReport:
description: SDRdaemonSource

Wyświetl plik

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

Wyświetl plik

@ -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;
}

Wyświetl plik

@ -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;
};
}