mirror of
https://github.com/f4exb/sdrangel.git
synced 2025-04-04 18:48:34 -04:00
SDRDaemonSink: refactoring (1)
This commit is contained in:
parent
c7bcfaead1
commit
133f9133bd
@ -23,19 +23,16 @@ if(LIBUSB_FOUND AND LIBIIO_FOUND)
|
||||
endif(LIBUSB_FOUND AND LIBIIO_FOUND)
|
||||
|
||||
find_package(CM256cc)
|
||||
find_package(LibNANOMSG)
|
||||
if(CM256CC_FOUND AND LIBNANOMSG_FOUND)
|
||||
if(CM256CC_FOUND)
|
||||
add_subdirectory(sdrdaemonsink)
|
||||
endif(CM256CC_FOUND AND LIBNANOMSG_FOUND)
|
||||
endif(CM256CC_FOUND)
|
||||
|
||||
if (BUILD_DEBIAN)
|
||||
add_subdirectory(bladerfoutput)
|
||||
add_subdirectory(hackrfoutput)
|
||||
add_subdirectory(limesdroutput)
|
||||
add_subdirectory(plutosdroutput)
|
||||
if (LIBNANOMSG_FOUND)
|
||||
add_subdirectory(sdrdaemonsink)
|
||||
endif (LIBNANOMSG_FOUND)
|
||||
add_subdirectory(sdrdaemonsink)
|
||||
endif (BUILD_DEBIAN)
|
||||
|
||||
add_subdirectory(filesink)
|
||||
|
@ -41,7 +41,6 @@ include_directories(
|
||||
${CMAKE_CURRENT_BINARY_DIR}
|
||||
${CMAKE_SOURCE_DIR}/swagger/sdrangel/code/qt5/client
|
||||
${LIBCM256CCSRC}
|
||||
${LIBNANOMSG_INCLUDE_DIR}
|
||||
)
|
||||
else (BUILD_DEBIAN)
|
||||
include_directories(
|
||||
@ -50,7 +49,6 @@ include_directories(
|
||||
${CMAKE_SOURCE_DIR}/swagger/sdrangel/code/qt5/client
|
||||
${CMAKE_SOURCE_DIR}/devices
|
||||
${CM256CC_INCLUDE_DIR}
|
||||
${LIBNANOMSG_INCLUDE_DIR}
|
||||
)
|
||||
endif (BUILD_DEBIAN)
|
||||
|
||||
@ -73,7 +71,6 @@ target_link_libraries(outputsdrdaemonsink
|
||||
sdrgui
|
||||
swagger
|
||||
cm256cc
|
||||
${LIBNANOMSG_LIBRARIES}
|
||||
)
|
||||
else (BUILD_DEBIAN)
|
||||
target_link_libraries(outputsdrdaemonsink
|
||||
@ -82,7 +79,6 @@ target_link_libraries(outputsdrdaemonsink
|
||||
sdrgui
|
||||
swagger
|
||||
${CM256CC_LIBRARIES}
|
||||
${LIBNANOMSG_LIBRARIES}
|
||||
)
|
||||
endif (BUILD_DEBIAN)
|
||||
|
||||
|
@ -24,9 +24,6 @@
|
||||
#include <boost/algorithm/string.hpp>
|
||||
#include <boost/lexical_cast.hpp>
|
||||
|
||||
#include <nanomsg/nn.h>
|
||||
#include <nanomsg/pair.h>
|
||||
|
||||
#include "ui_sdrdaemonsinkgui.h"
|
||||
#include "plugin/pluginapi.h"
|
||||
#include "gui/colormapper.h"
|
||||
@ -54,15 +51,6 @@ SDRdaemonSinkGui::SDRdaemonSinkGui(DeviceUISet *deviceUISet, QWidget* parent) :
|
||||
m_doApplySettings(true),
|
||||
m_forceSettings(true)
|
||||
{
|
||||
m_nnSender = nn_socket(AF_SP, NN_PAIR);
|
||||
assert(m_nnSender != -1);
|
||||
int millis = 500;
|
||||
int rc = nn_setsockopt(m_nnSender, NN_SOL_SOCKET, NN_SNDTIMEO, &millis, sizeof (millis));
|
||||
|
||||
if (rc != 0) {
|
||||
qCritical("SDRdaemonSinkGui::SDRdaemonSinkGui: nn_setsockopt failed with rc %d", rc);
|
||||
}
|
||||
|
||||
m_countUnrecoverable = 0;
|
||||
m_countRecovered = 0;
|
||||
|
||||
@ -92,7 +80,6 @@ SDRdaemonSinkGui::SDRdaemonSinkGui(DeviceUISet *deviceUISet, QWidget* parent) :
|
||||
displayEventTimer();
|
||||
|
||||
displaySettings();
|
||||
sendControl(true);
|
||||
sendSettings();
|
||||
}
|
||||
|
||||
@ -139,7 +126,6 @@ void SDRdaemonSinkGui::setCenterFrequency(qint64 centerFrequency)
|
||||
{
|
||||
m_settings.m_centerFrequency = centerFrequency;
|
||||
displaySettings();
|
||||
sendControl();
|
||||
sendSettings();
|
||||
}
|
||||
|
||||
@ -156,7 +142,6 @@ bool SDRdaemonSinkGui::deserialize(const QByteArray& data)
|
||||
{
|
||||
displaySettings();
|
||||
blockApplySettings(false);
|
||||
sendControl(true);
|
||||
m_forceSettings = true;
|
||||
sendSettings();
|
||||
return true;
|
||||
@ -228,7 +213,7 @@ void SDRdaemonSinkGui::updateSampleRateAndFrequency()
|
||||
{
|
||||
m_deviceUISet->getSpectrum()->setSampleRate(m_sampleRate);
|
||||
m_deviceUISet->getSpectrum()->setCenterFrequency(m_deviceCenterFrequency);
|
||||
ui->deviceRateText->setText(tr("%1k").arg((float)(m_sampleRate*(1<<m_settings.m_log2Interp)) / 1000));
|
||||
ui->deviceRateText->setText(tr("%1k").arg((float)(m_sampleRate) / 1000));
|
||||
}
|
||||
|
||||
void SDRdaemonSinkGui::updateTxDelayTooltip()
|
||||
@ -241,8 +226,7 @@ void SDRdaemonSinkGui::displaySettings()
|
||||
{
|
||||
ui->centerFrequency->setValue(m_settings.m_centerFrequency / 1000);
|
||||
ui->sampleRate->setValue(m_settings.m_sampleRate);
|
||||
ui->deviceRateText->setText(tr("%1k").arg((float)(m_sampleRate*(1<<m_settings.m_log2Interp)) / 1000));
|
||||
ui->interp->setCurrentIndex(m_settings.m_log2Interp);
|
||||
ui->deviceRateText->setText(tr("%1k").arg((float)(m_sampleRate) / 1000));
|
||||
ui->txDelay->setValue(m_settings.m_txDelay*100);
|
||||
ui->txDelayText->setText(tr("%1").arg(m_settings.m_txDelay*100));
|
||||
ui->nbFECBlocks->setValue(m_settings.m_nbFECBlocks);
|
||||
@ -251,100 +235,10 @@ void SDRdaemonSinkGui::displaySettings()
|
||||
QString s1 = QString::number(m_settings.m_nbFECBlocks, 'f', 0);
|
||||
ui->nominalNbBlocksText->setText(tr("%1/%2").arg(s0).arg(s1));
|
||||
|
||||
ui->address->setText(m_settings.m_address);
|
||||
ui->apiAddress->setText(m_settings.m_apiAddress);
|
||||
ui->apiPort->setText(tr("%1").arg(m_settings.m_apiPort));
|
||||
ui->dataAddress->setText(m_settings.m_dataAddress);
|
||||
ui->dataPort->setText(tr("%1").arg(m_settings.m_dataPort));
|
||||
ui->controlPort->setText(tr("%1").arg(m_settings.m_controlPort));
|
||||
ui->specificParms->setText(m_settings.m_specificParameters);
|
||||
}
|
||||
|
||||
void SDRdaemonSinkGui::sendControl(bool force)
|
||||
{
|
||||
if ((m_settings.m_address != m_controlSettings.m_address) ||
|
||||
(m_settings.m_controlPort != m_controlSettings.m_controlPort) || force)
|
||||
{
|
||||
int rc = nn_shutdown(m_nnSender, 0);
|
||||
|
||||
if (rc < 0) {
|
||||
qDebug() << "SDRdaemonSinkGui::sendControl: disconnection failed";
|
||||
} else {
|
||||
qDebug() << "SDRdaemonSinkGui::sendControl: disconnection successful";
|
||||
}
|
||||
|
||||
std::ostringstream os;
|
||||
os << "tcp://" << m_settings.m_address.toStdString() << ":" << m_settings.m_controlPort;
|
||||
std::string addrstrng = os.str();
|
||||
rc = nn_connect(m_nnSender, addrstrng.c_str());
|
||||
|
||||
if (rc < 0)
|
||||
{
|
||||
qDebug() << "SDRdaemonSinkGui::sendControl: connection to " << addrstrng.c_str() << " failed";
|
||||
QMessageBox::information(this, tr("Message"), tr("Cannot connect to remote control port"));
|
||||
return;
|
||||
}
|
||||
else
|
||||
{
|
||||
qDebug() << "SDRdaemonSinkGui::sendControl: connection to " << addrstrng.c_str() << " successful";
|
||||
force = true;
|
||||
}
|
||||
}
|
||||
|
||||
std::ostringstream os;
|
||||
int nbArgs = 0;
|
||||
|
||||
if ((m_settings.m_centerFrequency != m_controlSettings.m_centerFrequency) || force)
|
||||
{
|
||||
os << "freq=" << m_settings.m_centerFrequency;
|
||||
nbArgs++;
|
||||
}
|
||||
|
||||
if ((m_settings.m_sampleRate != m_controlSettings.m_sampleRate) || (m_settings.m_log2Interp != m_controlSettings.m_log2Interp) || force)
|
||||
{
|
||||
if (nbArgs > 0) os << ",";
|
||||
os << "srate=" << m_settings.m_sampleRate * (1<<m_settings.m_log2Interp);
|
||||
nbArgs++;
|
||||
|
||||
if ((m_settings.m_log2Interp != m_controlSettings.m_log2Interp) || force)
|
||||
{
|
||||
os << ",interp=" << m_settings.m_log2Interp;
|
||||
nbArgs++;
|
||||
}
|
||||
}
|
||||
|
||||
if ((m_settings.m_specificParameters != m_controlSettings.m_specificParameters) || force)
|
||||
{
|
||||
if (nbArgs > 0) os << ",";
|
||||
os << m_settings.m_specificParameters.toStdString();
|
||||
nbArgs++;
|
||||
}
|
||||
|
||||
if (nbArgs > 0)
|
||||
{
|
||||
int config_size = os.str().size();
|
||||
int rc = nn_send(m_nnSender, (void *) os.str().c_str(), config_size, 0);
|
||||
|
||||
if (rc != config_size)
|
||||
{
|
||||
//QMessageBox::information(this, tr("Message"), tr("Cannot send message to remote control port"));
|
||||
qDebug() << "SDRdaemonSinkGui::sendControl: Cannot send message to remote control port."
|
||||
<< " remoteAddress: " << m_settings.m_address
|
||||
<< " remotePort: " << m_settings.m_controlPort
|
||||
<< " message: " << os.str().c_str();
|
||||
}
|
||||
else
|
||||
{
|
||||
qDebug() << "SDRdaemonSinkGui::sendControl:"
|
||||
<< "remoteAddress:" << m_settings.m_address
|
||||
<< "remotePort:" << m_settings.m_controlPort
|
||||
<< "message:" << os.str().c_str();
|
||||
}
|
||||
}
|
||||
|
||||
m_controlSettings.m_address = m_settings.m_address;
|
||||
m_controlSettings.m_controlPort = m_settings.m_controlPort;
|
||||
m_controlSettings.m_centerFrequency = m_settings.m_centerFrequency;
|
||||
m_controlSettings.m_sampleRate = m_settings.m_sampleRate;
|
||||
m_controlSettings.m_log2Interp = m_settings.m_log2Interp;
|
||||
m_controlSettings.m_specificParameters = m_settings.m_specificParameters;
|
||||
}
|
||||
|
||||
void SDRdaemonSinkGui::sendSettings()
|
||||
@ -395,7 +289,6 @@ void SDRdaemonSinkGui::updateStatus()
|
||||
void SDRdaemonSinkGui::on_centerFrequency_changed(quint64 value)
|
||||
{
|
||||
m_settings.m_centerFrequency = value * 1000;
|
||||
sendControl();
|
||||
sendSettings();
|
||||
}
|
||||
|
||||
@ -403,19 +296,6 @@ void SDRdaemonSinkGui::on_sampleRate_changed(quint64 value)
|
||||
{
|
||||
m_settings.m_sampleRate = value;
|
||||
updateTxDelayTooltip();
|
||||
sendControl();
|
||||
sendSettings();
|
||||
}
|
||||
|
||||
void SDRdaemonSinkGui::on_interp_currentIndexChanged(int index)
|
||||
{
|
||||
if (index < 0) {
|
||||
return;
|
||||
}
|
||||
|
||||
m_settings.m_log2Interp = index;
|
||||
updateSampleRateAndFrequency();
|
||||
sendControl();
|
||||
sendSettings();
|
||||
}
|
||||
|
||||
@ -439,63 +319,63 @@ void SDRdaemonSinkGui::on_nbFECBlocks_valueChanged(int value)
|
||||
sendSettings();
|
||||
}
|
||||
|
||||
void SDRdaemonSinkGui::on_address_returnPressed()
|
||||
void SDRdaemonSinkGui::on_apiAddress_returnPressed()
|
||||
{
|
||||
m_settings.m_address = ui->address->text();
|
||||
sendControl();
|
||||
m_settings.m_apiAddress = ui->apiAddress->text();
|
||||
sendSettings();
|
||||
}
|
||||
|
||||
void SDRdaemonSinkGui::on_apiPort_returnPressed()
|
||||
{
|
||||
bool dataOk;
|
||||
int apiPort = ui->apiPort->text().toInt(&dataOk);
|
||||
|
||||
if((!dataOk) || (apiPort < 1024) || (apiPort > 65535))
|
||||
{
|
||||
return;
|
||||
}
|
||||
else
|
||||
{
|
||||
m_settings.m_apiPort = apiPort;
|
||||
}
|
||||
|
||||
sendSettings();
|
||||
}
|
||||
|
||||
void SDRdaemonSinkGui::on_dataAddress_returnPressed()
|
||||
{
|
||||
m_settings.m_dataAddress = ui->dataAddress->text();
|
||||
sendSettings();
|
||||
}
|
||||
|
||||
void SDRdaemonSinkGui::on_dataPort_returnPressed()
|
||||
{
|
||||
bool dataOk;
|
||||
int udpDataPort = ui->dataPort->text().toInt(&dataOk);
|
||||
int dataPort = ui->dataPort->text().toInt(&dataOk);
|
||||
|
||||
if((!dataOk) || (udpDataPort < 1024) || (udpDataPort > 65535))
|
||||
if((!dataOk) || (dataPort < 1024) || (dataPort > 65535))
|
||||
{
|
||||
return;
|
||||
}
|
||||
else
|
||||
{
|
||||
m_settings.m_dataPort = udpDataPort;
|
||||
m_settings.m_dataPort = dataPort;
|
||||
}
|
||||
|
||||
sendSettings();
|
||||
}
|
||||
|
||||
void SDRdaemonSinkGui::on_controlPort_returnPressed()
|
||||
{
|
||||
bool ctlOk;
|
||||
int udpCtlPort = ui->controlPort->text().toInt(&ctlOk);
|
||||
|
||||
if((!ctlOk) || (udpCtlPort < 1024) || (udpCtlPort > 65535))
|
||||
{
|
||||
return;
|
||||
}
|
||||
else
|
||||
{
|
||||
m_settings.m_controlPort = udpCtlPort;
|
||||
}
|
||||
|
||||
sendControl();
|
||||
}
|
||||
|
||||
void SDRdaemonSinkGui::on_specificParms_returnPressed()
|
||||
{
|
||||
m_settings.m_specificParameters = ui->specificParms->text();
|
||||
sendControl();
|
||||
}
|
||||
|
||||
void SDRdaemonSinkGui::on_applyButton_clicked(bool checked __attribute__((unused)))
|
||||
{
|
||||
m_settings.m_address = ui->address->text();
|
||||
m_settings.m_apiAddress = ui->apiAddress->text();
|
||||
m_settings.m_dataAddress = ui->dataAddress->text();
|
||||
|
||||
bool ctlOk;
|
||||
int udpCtlPort = ui->controlPort->text().toInt(&ctlOk);
|
||||
bool apiOk;
|
||||
int apiPort = ui->apiPort->text().toInt(&apiOk);
|
||||
|
||||
if((ctlOk) && (udpCtlPort >= 1024) && (udpCtlPort < 65535))
|
||||
if((apiOk) && (apiPort >= 1024) && (apiPort < 65535))
|
||||
{
|
||||
m_settings.m_controlPort = udpCtlPort;
|
||||
m_settings.m_apiPort = apiPort;
|
||||
}
|
||||
|
||||
bool dataOk;
|
||||
@ -509,11 +389,6 @@ void SDRdaemonSinkGui::on_applyButton_clicked(bool checked __attribute__((unused
|
||||
sendSettings();
|
||||
}
|
||||
|
||||
void SDRdaemonSinkGui::on_sendButton_clicked(bool checked __attribute__((unused)))
|
||||
{
|
||||
sendControl(true);
|
||||
}
|
||||
|
||||
void SDRdaemonSinkGui::on_startStop_toggled(bool checked)
|
||||
{
|
||||
if (m_doApplySettings)
|
||||
@ -570,101 +445,9 @@ void SDRdaemonSinkGui::tick()
|
||||
{
|
||||
if ((++m_tickCount & 0xf) == 0) // 16*50ms ~800ms
|
||||
{
|
||||
void *msgBuf = 0;
|
||||
|
||||
SDRdaemonSinkOutput::MsgConfigureSDRdaemonSinkStreamTiming* message = SDRdaemonSinkOutput::MsgConfigureSDRdaemonSinkStreamTiming::create();
|
||||
m_deviceSampleSink->getInputMessageQueue()->push(message);
|
||||
|
||||
int len = nn_recv(m_nnSender, &msgBuf, NN_MSG, NN_DONTWAIT);
|
||||
|
||||
if ((len > 0) && msgBuf)
|
||||
{
|
||||
std::string msg((char *) msgBuf, len);
|
||||
std::vector<std::string> strs;
|
||||
boost::split(strs, msg, boost::is_any_of(":"));
|
||||
unsigned int nbTokens = strs.size();
|
||||
unsigned int status = 0;
|
||||
bool updateEventCounts = false;
|
||||
|
||||
if (nbTokens > 0) // at least the queue length is given
|
||||
{
|
||||
try
|
||||
{
|
||||
int queueLength = boost::lexical_cast<int>(strs[0]);
|
||||
ui->queueLengthText->setText(QString::fromStdString(strs[0]));
|
||||
m_nbSinceLastFlowCheck++;
|
||||
int samplesCorr = 0;
|
||||
bool quickStart = false;
|
||||
|
||||
if (queueLength < 2)
|
||||
{
|
||||
samplesCorr = 127*8;
|
||||
quickStart = true;
|
||||
}
|
||||
else if (queueLength < 16)
|
||||
{
|
||||
samplesCorr = ((8 - queueLength)*16)/m_nbSinceLastFlowCheck;
|
||||
}
|
||||
else
|
||||
{
|
||||
samplesCorr = -127*16;
|
||||
quickStart = true;
|
||||
}
|
||||
|
||||
if (samplesCorr != 0)
|
||||
{
|
||||
samplesCorr = quickStart ? samplesCorr : samplesCorr <= -50 ? -50 : samplesCorr >= 50 ? 50 : samplesCorr;
|
||||
SDRdaemonSinkOutput::MsgConfigureSDRdaemonSinkChunkCorrection* message = SDRdaemonSinkOutput::MsgConfigureSDRdaemonSinkChunkCorrection::create(samplesCorr);
|
||||
m_deviceSampleSink->getInputMessageQueue()->push(message);
|
||||
m_nbSinceLastFlowCheck = 0;
|
||||
}
|
||||
}
|
||||
catch(const boost::bad_lexical_cast &)
|
||||
{
|
||||
qDebug("SDRdaemonSinkGui::tick: queue length invalid: %s", strs[0].c_str());
|
||||
}
|
||||
}
|
||||
|
||||
if (nbTokens > 1) // the quality status is given also
|
||||
{
|
||||
if (strs[1] == "2")
|
||||
{
|
||||
status = 2;
|
||||
}
|
||||
else if (strs[1] == "1")
|
||||
{
|
||||
status = 1;
|
||||
if (m_countUnrecoverable < 999) m_countUnrecoverable++;
|
||||
updateEventCounts = true;
|
||||
qDebug("SDRdaemonSinkGui::tick: %s", msg.c_str());
|
||||
}
|
||||
else
|
||||
{
|
||||
if (m_countRecovered < 999) m_countRecovered++;
|
||||
updateEventCounts = true;
|
||||
qDebug("SDRdaemonSinkGui::tick: %s", msg.c_str());
|
||||
}
|
||||
}
|
||||
|
||||
if (nbTokens > 2) // the quality indicator message is given also
|
||||
{
|
||||
ui->qualityStatusText->setText(QString::fromStdString(strs[2]));
|
||||
}
|
||||
|
||||
if (status == 2) { // all OK
|
||||
ui->allFramesDecoded->setStyleSheet("QToolButton { background-color : green; }");
|
||||
} else if (status == 1) { // unrecoverable errors
|
||||
ui->allFramesDecoded->setStyleSheet("QToolButton { background-color : red; }");
|
||||
} else { // recoverable errors or unknown status
|
||||
ui->allFramesDecoded->setStyleSheet("QToolButton { background:rgb(56,56,56); }");
|
||||
}
|
||||
|
||||
if (updateEventCounts)
|
||||
{
|
||||
displayEventCounts();
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
displayEventTimer();
|
||||
}
|
||||
}
|
||||
|
@ -99,15 +99,13 @@ private slots:
|
||||
void handleInputMessages();
|
||||
void on_centerFrequency_changed(quint64 value);
|
||||
void on_sampleRate_changed(quint64 value);
|
||||
void on_interp_currentIndexChanged(int index);
|
||||
void on_txDelay_valueChanged(int value);
|
||||
void on_nbFECBlocks_valueChanged(int value);
|
||||
void on_address_returnPressed();
|
||||
void on_apiAddress_returnPressed();
|
||||
void on_apiPort_returnPressed();
|
||||
void on_dataAddress_returnPressed();
|
||||
void on_dataPort_returnPressed();
|
||||
void on_controlPort_returnPressed();
|
||||
void on_specificParms_returnPressed();
|
||||
void on_applyButton_clicked(bool checked);
|
||||
void on_sendButton_clicked(bool checked);
|
||||
void on_startStop_toggled(bool checked);
|
||||
void on_eventCountsReset_clicked(bool checked);
|
||||
void updateHardware();
|
||||
|
@ -6,7 +6,7 @@
|
||||
<rect>
|
||||
<x>0</x>
|
||||
<y>0</y>
|
||||
<width>411</width>
|
||||
<width>400</width>
|
||||
<height>217</height>
|
||||
</rect>
|
||||
</property>
|
||||
@ -18,7 +18,7 @@
|
||||
</property>
|
||||
<property name="minimumSize">
|
||||
<size>
|
||||
<width>380</width>
|
||||
<width>400</width>
|
||||
<height>190</height>
|
||||
</size>
|
||||
</property>
|
||||
@ -221,55 +221,6 @@
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item>
|
||||
<widget class="QLabel" name="interpLabel">
|
||||
<property name="text">
|
||||
<string>Int</string>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item>
|
||||
<widget class="QComboBox" name="interp">
|
||||
<property name="toolTip">
|
||||
<string>Interpolation</string>
|
||||
</property>
|
||||
<item>
|
||||
<property name="text">
|
||||
<string>1</string>
|
||||
</property>
|
||||
</item>
|
||||
<item>
|
||||
<property name="text">
|
||||
<string>2</string>
|
||||
</property>
|
||||
</item>
|
||||
<item>
|
||||
<property name="text">
|
||||
<string>4</string>
|
||||
</property>
|
||||
</item>
|
||||
<item>
|
||||
<property name="text">
|
||||
<string>8</string>
|
||||
</property>
|
||||
</item>
|
||||
<item>
|
||||
<property name="text">
|
||||
<string>16</string>
|
||||
</property>
|
||||
</item>
|
||||
<item>
|
||||
<property name="text">
|
||||
<string>32</string>
|
||||
</property>
|
||||
</item>
|
||||
<item>
|
||||
<property name="text">
|
||||
<string>64</string>
|
||||
</property>
|
||||
</item>
|
||||
</widget>
|
||||
</item>
|
||||
<item>
|
||||
<widget class="Line" name="line">
|
||||
<property name="orientation">
|
||||
@ -536,17 +487,17 @@
|
||||
<item>
|
||||
<layout class="QHBoxLayout" name="addressLayout">
|
||||
<item>
|
||||
<widget class="QLabel" name="addressLabel">
|
||||
<widget class="QLabel" name="apiAddressLabel">
|
||||
<property name="text">
|
||||
<string>Addr:</string>
|
||||
<string>API</string>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item>
|
||||
<widget class="QLineEdit" name="address">
|
||||
<widget class="QLineEdit" name="apiAddress">
|
||||
<property name="minimumSize">
|
||||
<size>
|
||||
<width>120</width>
|
||||
<width>100</width>
|
||||
<height>0</height>
|
||||
</size>
|
||||
</property>
|
||||
@ -562,14 +513,7 @@
|
||||
</widget>
|
||||
</item>
|
||||
<item>
|
||||
<widget class="QLabel" name="dataPortLabel">
|
||||
<property name="text">
|
||||
<string>D:</string>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item>
|
||||
<widget class="QLineEdit" name="dataPort">
|
||||
<widget class="QLineEdit" name="apiPort">
|
||||
<property name="toolTip">
|
||||
<string>Remote data connection port</string>
|
||||
</property>
|
||||
@ -579,32 +523,39 @@
|
||||
<property name="text">
|
||||
<string>0</string>
|
||||
</property>
|
||||
<property name="alignment">
|
||||
<set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item>
|
||||
<widget class="QLabel" name="controlPortLabel">
|
||||
<widget class="QLabel" name="dataAddressLabel">
|
||||
<property name="text">
|
||||
<string>C:</string>
|
||||
<string>Data</string>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item>
|
||||
<widget class="QLineEdit" name="controlPort">
|
||||
<property name="toolTip">
|
||||
<string>Remote control port</string>
|
||||
<widget class="QLineEdit" name="dataAddress">
|
||||
<property name="minimumSize">
|
||||
<size>
|
||||
<width>100</width>
|
||||
<height>0</height>
|
||||
</size>
|
||||
</property>
|
||||
<property name="inputMask">
|
||||
<string>000.000.000.000</string>
|
||||
</property>
|
||||
<property name="text">
|
||||
<string>0...</string>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item>
|
||||
<widget class="QLineEdit" name="dataPort">
|
||||
<property name="inputMask">
|
||||
<string>00000</string>
|
||||
</property>
|
||||
<property name="text">
|
||||
<string>0</string>
|
||||
</property>
|
||||
<property name="alignment">
|
||||
<set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item>
|
||||
@ -622,33 +573,6 @@
|
||||
</item>
|
||||
</layout>
|
||||
</item>
|
||||
<item>
|
||||
<layout class="QHBoxLayout" name="controlLayout">
|
||||
<item>
|
||||
<widget class="QLabel" name="specificParmsLAbel">
|
||||
<property name="text">
|
||||
<string>Sp:</string>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item>
|
||||
<widget class="QLineEdit" name="specificParms"/>
|
||||
</item>
|
||||
<item>
|
||||
<widget class="QPushButton" name="sendButton">
|
||||
<property name="maximumSize">
|
||||
<size>
|
||||
<width>50</width>
|
||||
<height>16777215</height>
|
||||
</size>
|
||||
</property>
|
||||
<property name="text">
|
||||
<string>Send</string>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
</layout>
|
||||
</item>
|
||||
<item>
|
||||
<layout class="QHBoxLayout" name="padLayout">
|
||||
<item>
|
||||
|
@ -66,7 +66,7 @@ bool SDRdaemonSinkOutput::start()
|
||||
qDebug() << "SDRdaemonSinkOutput::start";
|
||||
|
||||
m_sdrDaemonSinkThread = new SDRdaemonSinkThread(&m_sampleSourceFifo);
|
||||
m_sdrDaemonSinkThread->setRemoteAddress(m_settings.m_address, m_settings.m_dataPort);
|
||||
m_sdrDaemonSinkThread->setDataAddress(m_settings.m_dataAddress, m_settings.m_dataPort);
|
||||
m_sdrDaemonSinkThread->setCenterFrequency(m_settings.m_centerFrequency);
|
||||
m_sdrDaemonSinkThread->setSamplerate(m_settings.m_sampleRate);
|
||||
m_sdrDaemonSinkThread->setNbBlocksFEC(m_settings.m_nbFECBlocks);
|
||||
@ -246,10 +246,10 @@ void SDRdaemonSinkOutput::applySettings(const SDRdaemonSinkSettings& settings, b
|
||||
bool forwardChange = false;
|
||||
bool changeTxDelay = false;
|
||||
|
||||
if (force || (m_settings.m_address != settings.m_address) || (m_settings.m_dataPort != settings.m_dataPort))
|
||||
if (force || (m_settings.m_dataAddress != settings.m_dataAddress) || (m_settings.m_dataPort != settings.m_dataPort))
|
||||
{
|
||||
if (m_sdrDaemonSinkThread != 0) {
|
||||
m_sdrDaemonSinkThread->setRemoteAddress(settings.m_address, settings.m_dataPort);
|
||||
m_sdrDaemonSinkThread->setDataAddress(settings.m_dataAddress, settings.m_dataPort);
|
||||
}
|
||||
}
|
||||
|
||||
@ -272,11 +272,6 @@ void SDRdaemonSinkOutput::applySettings(const SDRdaemonSinkSettings& settings, b
|
||||
changeTxDelay = true;
|
||||
}
|
||||
|
||||
if (force || (m_settings.m_log2Interp != settings.m_log2Interp))
|
||||
{
|
||||
forwardChange = true;
|
||||
}
|
||||
|
||||
if (force || (m_settings.m_nbFECBlocks != settings.m_nbFECBlocks))
|
||||
{
|
||||
if (m_sdrDaemonSinkThread != 0) {
|
||||
@ -311,10 +306,11 @@ void SDRdaemonSinkOutput::applySettings(const SDRdaemonSinkSettings& settings, b
|
||||
qDebug() << "SDRdaemonSinkOutput::applySettings:"
|
||||
<< " m_centerFrequency: " << settings.m_centerFrequency
|
||||
<< " m_sampleRate: " << settings.m_sampleRate
|
||||
<< " m_log2Interp: " << settings.m_log2Interp
|
||||
<< " m_txDelay: " << settings.m_txDelay
|
||||
<< " m_nbFECBlocks: " << settings.m_nbFECBlocks
|
||||
<< " m_address: " << settings.m_address
|
||||
<< " m_apiAddress: " << settings.m_apiAddress
|
||||
<< " m_apiPort: " << settings.m_apiPort
|
||||
<< " m_dataAddress: " << settings.m_dataAddress
|
||||
<< " m_dataPort: " << settings.m_dataPort;
|
||||
|
||||
if (forwardChange)
|
||||
@ -376,27 +372,24 @@ int SDRdaemonSinkOutput::webapiSettingsPutPatch(
|
||||
if (deviceSettingsKeys.contains("sampleRate")) {
|
||||
settings.m_sampleRate = response.getSdrDaemonSinkSettings()->getSampleRate();
|
||||
}
|
||||
if (deviceSettingsKeys.contains("log2Interp")) {
|
||||
settings.m_log2Interp = response.getSdrDaemonSinkSettings()->getLog2Interp();
|
||||
}
|
||||
if (deviceSettingsKeys.contains("txDelay")) {
|
||||
settings.m_txDelay = response.getSdrDaemonSinkSettings()->getTxDelay();
|
||||
}
|
||||
if (deviceSettingsKeys.contains("nbFECBlocks")) {
|
||||
settings.m_nbFECBlocks = response.getSdrDaemonSinkSettings()->getNbFecBlocks();
|
||||
}
|
||||
if (deviceSettingsKeys.contains("address")) {
|
||||
settings.m_address = *response.getSdrDaemonSinkSettings()->getAddress();
|
||||
if (deviceSettingsKeys.contains("apiAddress")) {
|
||||
settings.m_apiAddress = *response.getSdrDaemonSinkSettings()->getApiAddress();
|
||||
}
|
||||
if (deviceSettingsKeys.contains("apiPort")) {
|
||||
settings.m_apiPort = response.getSdrDaemonSinkSettings()->getApiPort();
|
||||
}
|
||||
if (deviceSettingsKeys.contains("dataAddress")) {
|
||||
settings.m_dataAddress = *response.getSdrDaemonSinkSettings()->getDataAddress();
|
||||
}
|
||||
if (deviceSettingsKeys.contains("dataPort")) {
|
||||
settings.m_dataPort = response.getSdrDaemonSinkSettings()->getDataPort();
|
||||
}
|
||||
if (deviceSettingsKeys.contains("controlPort")) {
|
||||
settings.m_controlPort = response.getSdrDaemonSinkSettings()->getControlPort();
|
||||
}
|
||||
if (deviceSettingsKeys.contains("specificParameters")) {
|
||||
settings.m_specificParameters = *response.getSdrDaemonSinkSettings()->getSpecificParameters();
|
||||
}
|
||||
|
||||
MsgConfigureSDRdaemonSink *msg = MsgConfigureSDRdaemonSink::create(settings, force);
|
||||
m_inputMessageQueue.push(msg);
|
||||
@ -425,13 +418,12 @@ void SDRdaemonSinkOutput::webapiFormatDeviceSettings(SWGSDRangel::SWGDeviceSetti
|
||||
{
|
||||
response.getSdrDaemonSinkSettings()->setCenterFrequency(settings.m_centerFrequency);
|
||||
response.getSdrDaemonSinkSettings()->setSampleRate(settings.m_sampleRate);
|
||||
response.getSdrDaemonSinkSettings()->setLog2Interp(settings.m_log2Interp);
|
||||
response.getSdrDaemonSinkSettings()->setTxDelay(settings.m_txDelay);
|
||||
response.getSdrDaemonSinkSettings()->setNbFecBlocks(settings.m_nbFECBlocks);
|
||||
response.getSdrDaemonSinkSettings()->setAddress(new QString(settings.m_address));
|
||||
response.getSdrDaemonSinkSettings()->setApiAddress(new QString(settings.m_apiAddress));
|
||||
response.getSdrDaemonSinkSettings()->setApiPort(settings.m_apiPort);
|
||||
response.getSdrDaemonSinkSettings()->setDataAddress(new QString(settings.m_dataAddress));
|
||||
response.getSdrDaemonSinkSettings()->setDataPort(settings.m_dataPort);
|
||||
response.getSdrDaemonSinkSettings()->setControlPort(settings.m_controlPort);
|
||||
response.getSdrDaemonSinkSettings()->setSpecificParameters(new QString(settings.m_specificParameters));
|
||||
}
|
||||
|
||||
void SDRdaemonSinkOutput::webapiFormatDeviceReport(SWGSDRangel::SWGDeviceReport& response)
|
||||
|
@ -29,7 +29,7 @@
|
||||
|
||||
const PluginDescriptor SDRdaemonSinkPlugin::m_pluginDescriptor = {
|
||||
QString("SDRdaemon sink output"),
|
||||
QString("4.0.0"),
|
||||
QString("4.1.0"),
|
||||
QString("(c) Edouard Griffiths, F4EXB"),
|
||||
QString("https://github.com/f4exb/sdrangel"),
|
||||
true,
|
||||
|
@ -26,27 +26,26 @@ void SDRdaemonSinkSettings::resetToDefaults()
|
||||
{
|
||||
m_centerFrequency = 435000*1000;
|
||||
m_sampleRate = 48000;
|
||||
m_log2Interp = 0;
|
||||
m_txDelay = 0.5;
|
||||
m_nbFECBlocks = 0;
|
||||
m_address = "127.0.0.1";
|
||||
m_apiAddress = "127.0.0.1";
|
||||
m_apiPort = 9091;
|
||||
m_dataAddress = "127.0.0.1";
|
||||
m_dataPort = 9090;
|
||||
m_controlPort = 9093;
|
||||
m_specificParameters = "";
|
||||
}
|
||||
|
||||
QByteArray SDRdaemonSinkSettings::serialize() const
|
||||
{
|
||||
SimpleSerializer s(1);
|
||||
|
||||
s.writeU64(1, m_sampleRate);
|
||||
s.writeU32(2, m_log2Interp);
|
||||
s.writeU64(1, m_centerFrequency);
|
||||
s.writeU32(2, m_sampleRate);
|
||||
s.writeFloat(3, m_txDelay);
|
||||
s.writeU32(4, m_nbFECBlocks);
|
||||
s.writeString(5, m_address);
|
||||
s.writeU32(6, m_dataPort);
|
||||
s.writeU32(7, m_controlPort);
|
||||
s.writeString(8, m_specificParameters);
|
||||
s.writeString(5, m_apiAddress);
|
||||
s.writeU32(6, m_apiPort);
|
||||
s.writeString(7, m_dataAddress);
|
||||
s.writeU32(8, m_dataPort);
|
||||
|
||||
return s.final();
|
||||
}
|
||||
@ -64,16 +63,16 @@ bool SDRdaemonSinkSettings::deserialize(const QByteArray& data)
|
||||
if (d.getVersion() == 1)
|
||||
{
|
||||
quint32 uintval;
|
||||
d.readU64(1, &m_sampleRate, 48000);
|
||||
d.readU32(2, &m_log2Interp, 0);
|
||||
d.readU64(1, &m_centerFrequency, 435000*1000);
|
||||
d.readU32(2, &m_sampleRate, 48000);
|
||||
d.readFloat(3, &m_txDelay, 0.5);
|
||||
d.readU32(4, &m_nbFECBlocks, 0);
|
||||
d.readString(5, &m_address, "127.0.0.1");
|
||||
d.readString(5, &m_apiAddress, "127.0.0.1");
|
||||
d.readU32(6, &uintval, 9090);
|
||||
m_apiPort = uintval % (1<<16);
|
||||
d.readString(7, &m_dataAddress, "127.0.0.1");
|
||||
d.readU32(8, &uintval, 9090);
|
||||
m_dataPort = uintval % (1<<16);
|
||||
d.readU32(7, &uintval, 9090);
|
||||
m_controlPort = uintval % (1<<16);
|
||||
d.readString(8, &m_specificParameters, "");
|
||||
return true;
|
||||
}
|
||||
else
|
||||
|
@ -21,14 +21,13 @@
|
||||
|
||||
struct SDRdaemonSinkSettings {
|
||||
quint64 m_centerFrequency;
|
||||
quint64 m_sampleRate;
|
||||
quint32 m_log2Interp;
|
||||
quint32 m_sampleRate;
|
||||
float m_txDelay;
|
||||
quint32 m_nbFECBlocks;
|
||||
QString m_address;
|
||||
QString m_apiAddress;
|
||||
quint16 m_apiPort;
|
||||
QString m_dataAddress;
|
||||
quint16 m_dataPort;
|
||||
quint16 m_controlPort;
|
||||
QString m_specificParameters;
|
||||
|
||||
SDRdaemonSinkSettings();
|
||||
void resetToDefaults();
|
||||
|
@ -50,7 +50,7 @@ public:
|
||||
void setSamplerate(int samplerate);
|
||||
void setNbBlocksFEC(uint32_t nbBlocksFEC) { m_udpSinkFEC.setNbBlocksFEC(nbBlocksFEC); };
|
||||
void setTxDelay(uint32_t txDelay) { m_udpSinkFEC.setTxDelay(txDelay); };
|
||||
void setRemoteAddress(const QString& address, uint16_t port) { m_udpSinkFEC.setRemoteAddress(address, port); }
|
||||
void setDataAddress(const QString& address, uint16_t port) { m_udpSinkFEC.setRemoteAddress(address, port); }
|
||||
|
||||
bool isRunning() const { return m_running; }
|
||||
|
||||
|
@ -3274,9 +3274,6 @@ margin-bottom: 20px;
|
||||
"sampleRate" : {
|
||||
"type" : "integer"
|
||||
},
|
||||
"log2Interp" : {
|
||||
"type" : "integer"
|
||||
},
|
||||
"txDelay" : {
|
||||
"type" : "number",
|
||||
"format" : "float",
|
||||
@ -3285,17 +3282,17 @@ margin-bottom: 20px;
|
||||
"nbFECBlocks" : {
|
||||
"type" : "integer"
|
||||
},
|
||||
"address" : {
|
||||
"apiAddress" : {
|
||||
"type" : "string"
|
||||
},
|
||||
"apiPort" : {
|
||||
"type" : "integer"
|
||||
},
|
||||
"dataAddress" : {
|
||||
"type" : "string"
|
||||
},
|
||||
"dataPort" : {
|
||||
"type" : "integer"
|
||||
},
|
||||
"controlPort" : {
|
||||
"type" : "integer"
|
||||
},
|
||||
"specificParameters" : {
|
||||
"type" : "string"
|
||||
}
|
||||
},
|
||||
"description" : "SDRdaemonSink"
|
||||
@ -28215,7 +28212,7 @@ except ApiException as e:
|
||||
</div>
|
||||
<div id="generator">
|
||||
<div class="content">
|
||||
Generated 2018-08-23T17:21:24.907+02:00
|
||||
Generated 2018-08-29T15:59:39.880+02:00
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
@ -6,22 +6,20 @@ SDRdaemonSinkSettings:
|
||||
format: uint64
|
||||
sampleRate:
|
||||
type: integer
|
||||
log2Interp:
|
||||
type: integer
|
||||
txDelay:
|
||||
description: minimum delay in ms between two consecutive packets sending
|
||||
type: number
|
||||
format: float
|
||||
nbFECBlocks:
|
||||
type: integer
|
||||
address:
|
||||
apiAddress:
|
||||
type: string
|
||||
apiPort:
|
||||
type: integer
|
||||
dataAddress:
|
||||
type: string
|
||||
dataPort:
|
||||
type: integer
|
||||
controlPort:
|
||||
type: integer
|
||||
specificParameters:
|
||||
type: string
|
||||
|
||||
SDRdaemonSinkReport:
|
||||
description: SDRdaemonSource
|
||||
|
@ -6,22 +6,20 @@ SDRdaemonSinkSettings:
|
||||
format: uint64
|
||||
sampleRate:
|
||||
type: integer
|
||||
log2Interp:
|
||||
type: integer
|
||||
txDelay:
|
||||
description: minimum delay in ms between two consecutive packets sending
|
||||
type: number
|
||||
format: float
|
||||
nbFECBlocks:
|
||||
type: integer
|
||||
address:
|
||||
apiAddress:
|
||||
type: string
|
||||
apiPort:
|
||||
type: integer
|
||||
dataAddress:
|
||||
type: string
|
||||
dataPort:
|
||||
type: integer
|
||||
controlPort:
|
||||
type: integer
|
||||
specificParameters:
|
||||
type: string
|
||||
|
||||
SDRdaemonSinkReport:
|
||||
description: SDRdaemonSource
|
||||
|
@ -3274,9 +3274,6 @@ margin-bottom: 20px;
|
||||
"sampleRate" : {
|
||||
"type" : "integer"
|
||||
},
|
||||
"log2Interp" : {
|
||||
"type" : "integer"
|
||||
},
|
||||
"txDelay" : {
|
||||
"type" : "number",
|
||||
"format" : "float",
|
||||
@ -3285,17 +3282,17 @@ margin-bottom: 20px;
|
||||
"nbFECBlocks" : {
|
||||
"type" : "integer"
|
||||
},
|
||||
"address" : {
|
||||
"apiAddress" : {
|
||||
"type" : "string"
|
||||
},
|
||||
"apiPort" : {
|
||||
"type" : "integer"
|
||||
},
|
||||
"dataAddress" : {
|
||||
"type" : "string"
|
||||
},
|
||||
"dataPort" : {
|
||||
"type" : "integer"
|
||||
},
|
||||
"controlPort" : {
|
||||
"type" : "integer"
|
||||
},
|
||||
"specificParameters" : {
|
||||
"type" : "string"
|
||||
}
|
||||
},
|
||||
"description" : "SDRdaemonSink"
|
||||
@ -28215,7 +28212,7 @@ except ApiException as e:
|
||||
</div>
|
||||
<div id="generator">
|
||||
<div class="content">
|
||||
Generated 2018-08-23T17:21:24.907+02:00
|
||||
Generated 2018-08-29T15:59:39.880+02:00
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
@ -32,20 +32,18 @@ SWGSDRdaemonSinkSettings::SWGSDRdaemonSinkSettings() {
|
||||
m_center_frequency_isSet = false;
|
||||
sample_rate = 0;
|
||||
m_sample_rate_isSet = false;
|
||||
log2_interp = 0;
|
||||
m_log2_interp_isSet = false;
|
||||
tx_delay = 0.0f;
|
||||
m_tx_delay_isSet = false;
|
||||
nb_fec_blocks = 0;
|
||||
m_nb_fec_blocks_isSet = false;
|
||||
address = nullptr;
|
||||
m_address_isSet = false;
|
||||
api_address = nullptr;
|
||||
m_api_address_isSet = false;
|
||||
api_port = 0;
|
||||
m_api_port_isSet = false;
|
||||
data_address = nullptr;
|
||||
m_data_address_isSet = false;
|
||||
data_port = 0;
|
||||
m_data_port_isSet = false;
|
||||
control_port = 0;
|
||||
m_control_port_isSet = false;
|
||||
specific_parameters = nullptr;
|
||||
m_specific_parameters_isSet = false;
|
||||
}
|
||||
|
||||
SWGSDRdaemonSinkSettings::~SWGSDRdaemonSinkSettings() {
|
||||
@ -58,20 +56,18 @@ SWGSDRdaemonSinkSettings::init() {
|
||||
m_center_frequency_isSet = false;
|
||||
sample_rate = 0;
|
||||
m_sample_rate_isSet = false;
|
||||
log2_interp = 0;
|
||||
m_log2_interp_isSet = false;
|
||||
tx_delay = 0.0f;
|
||||
m_tx_delay_isSet = false;
|
||||
nb_fec_blocks = 0;
|
||||
m_nb_fec_blocks_isSet = false;
|
||||
address = new QString("");
|
||||
m_address_isSet = false;
|
||||
api_address = new QString("");
|
||||
m_api_address_isSet = false;
|
||||
api_port = 0;
|
||||
m_api_port_isSet = false;
|
||||
data_address = new QString("");
|
||||
m_data_address_isSet = false;
|
||||
data_port = 0;
|
||||
m_data_port_isSet = false;
|
||||
control_port = 0;
|
||||
m_control_port_isSet = false;
|
||||
specific_parameters = new QString("");
|
||||
m_specific_parameters_isSet = false;
|
||||
}
|
||||
|
||||
void
|
||||
@ -80,15 +76,14 @@ SWGSDRdaemonSinkSettings::cleanup() {
|
||||
|
||||
|
||||
|
||||
|
||||
if(address != nullptr) {
|
||||
delete address;
|
||||
if(api_address != nullptr) {
|
||||
delete api_address;
|
||||
}
|
||||
|
||||
|
||||
if(specific_parameters != nullptr) {
|
||||
delete specific_parameters;
|
||||
if(data_address != nullptr) {
|
||||
delete data_address;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
SWGSDRdaemonSinkSettings*
|
||||
@ -106,20 +101,18 @@ SWGSDRdaemonSinkSettings::fromJsonObject(QJsonObject &pJson) {
|
||||
|
||||
::SWGSDRangel::setValue(&sample_rate, pJson["sampleRate"], "qint32", "");
|
||||
|
||||
::SWGSDRangel::setValue(&log2_interp, pJson["log2Interp"], "qint32", "");
|
||||
|
||||
::SWGSDRangel::setValue(&tx_delay, pJson["txDelay"], "float", "");
|
||||
|
||||
::SWGSDRangel::setValue(&nb_fec_blocks, pJson["nbFECBlocks"], "qint32", "");
|
||||
|
||||
::SWGSDRangel::setValue(&address, pJson["address"], "QString", "QString");
|
||||
::SWGSDRangel::setValue(&api_address, pJson["apiAddress"], "QString", "QString");
|
||||
|
||||
::SWGSDRangel::setValue(&api_port, pJson["apiPort"], "qint32", "");
|
||||
|
||||
::SWGSDRangel::setValue(&data_address, pJson["dataAddress"], "QString", "QString");
|
||||
|
||||
::SWGSDRangel::setValue(&data_port, pJson["dataPort"], "qint32", "");
|
||||
|
||||
::SWGSDRangel::setValue(&control_port, pJson["controlPort"], "qint32", "");
|
||||
|
||||
::SWGSDRangel::setValue(&specific_parameters, pJson["specificParameters"], "QString", "QString");
|
||||
|
||||
}
|
||||
|
||||
QString
|
||||
@ -142,27 +135,24 @@ SWGSDRdaemonSinkSettings::asJsonObject() {
|
||||
if(m_sample_rate_isSet){
|
||||
obj->insert("sampleRate", QJsonValue(sample_rate));
|
||||
}
|
||||
if(m_log2_interp_isSet){
|
||||
obj->insert("log2Interp", QJsonValue(log2_interp));
|
||||
}
|
||||
if(m_tx_delay_isSet){
|
||||
obj->insert("txDelay", QJsonValue(tx_delay));
|
||||
}
|
||||
if(m_nb_fec_blocks_isSet){
|
||||
obj->insert("nbFECBlocks", QJsonValue(nb_fec_blocks));
|
||||
}
|
||||
if(address != nullptr && *address != QString("")){
|
||||
toJsonValue(QString("address"), address, obj, QString("QString"));
|
||||
if(api_address != nullptr && *api_address != QString("")){
|
||||
toJsonValue(QString("apiAddress"), api_address, obj, QString("QString"));
|
||||
}
|
||||
if(m_api_port_isSet){
|
||||
obj->insert("apiPort", QJsonValue(api_port));
|
||||
}
|
||||
if(data_address != nullptr && *data_address != QString("")){
|
||||
toJsonValue(QString("dataAddress"), data_address, obj, QString("QString"));
|
||||
}
|
||||
if(m_data_port_isSet){
|
||||
obj->insert("dataPort", QJsonValue(data_port));
|
||||
}
|
||||
if(m_control_port_isSet){
|
||||
obj->insert("controlPort", QJsonValue(control_port));
|
||||
}
|
||||
if(specific_parameters != nullptr && *specific_parameters != QString("")){
|
||||
toJsonValue(QString("specificParameters"), specific_parameters, obj, QString("QString"));
|
||||
}
|
||||
|
||||
return obj;
|
||||
}
|
||||
@ -187,16 +177,6 @@ SWGSDRdaemonSinkSettings::setSampleRate(qint32 sample_rate) {
|
||||
this->m_sample_rate_isSet = true;
|
||||
}
|
||||
|
||||
qint32
|
||||
SWGSDRdaemonSinkSettings::getLog2Interp() {
|
||||
return log2_interp;
|
||||
}
|
||||
void
|
||||
SWGSDRdaemonSinkSettings::setLog2Interp(qint32 log2_interp) {
|
||||
this->log2_interp = log2_interp;
|
||||
this->m_log2_interp_isSet = true;
|
||||
}
|
||||
|
||||
float
|
||||
SWGSDRdaemonSinkSettings::getTxDelay() {
|
||||
return tx_delay;
|
||||
@ -218,13 +198,33 @@ SWGSDRdaemonSinkSettings::setNbFecBlocks(qint32 nb_fec_blocks) {
|
||||
}
|
||||
|
||||
QString*
|
||||
SWGSDRdaemonSinkSettings::getAddress() {
|
||||
return address;
|
||||
SWGSDRdaemonSinkSettings::getApiAddress() {
|
||||
return api_address;
|
||||
}
|
||||
void
|
||||
SWGSDRdaemonSinkSettings::setAddress(QString* address) {
|
||||
this->address = address;
|
||||
this->m_address_isSet = true;
|
||||
SWGSDRdaemonSinkSettings::setApiAddress(QString* api_address) {
|
||||
this->api_address = api_address;
|
||||
this->m_api_address_isSet = true;
|
||||
}
|
||||
|
||||
qint32
|
||||
SWGSDRdaemonSinkSettings::getApiPort() {
|
||||
return api_port;
|
||||
}
|
||||
void
|
||||
SWGSDRdaemonSinkSettings::setApiPort(qint32 api_port) {
|
||||
this->api_port = api_port;
|
||||
this->m_api_port_isSet = true;
|
||||
}
|
||||
|
||||
QString*
|
||||
SWGSDRdaemonSinkSettings::getDataAddress() {
|
||||
return data_address;
|
||||
}
|
||||
void
|
||||
SWGSDRdaemonSinkSettings::setDataAddress(QString* data_address) {
|
||||
this->data_address = data_address;
|
||||
this->m_data_address_isSet = true;
|
||||
}
|
||||
|
||||
qint32
|
||||
@ -237,26 +237,6 @@ SWGSDRdaemonSinkSettings::setDataPort(qint32 data_port) {
|
||||
this->m_data_port_isSet = true;
|
||||
}
|
||||
|
||||
qint32
|
||||
SWGSDRdaemonSinkSettings::getControlPort() {
|
||||
return control_port;
|
||||
}
|
||||
void
|
||||
SWGSDRdaemonSinkSettings::setControlPort(qint32 control_port) {
|
||||
this->control_port = control_port;
|
||||
this->m_control_port_isSet = true;
|
||||
}
|
||||
|
||||
QString*
|
||||
SWGSDRdaemonSinkSettings::getSpecificParameters() {
|
||||
return specific_parameters;
|
||||
}
|
||||
void
|
||||
SWGSDRdaemonSinkSettings::setSpecificParameters(QString* specific_parameters) {
|
||||
this->specific_parameters = specific_parameters;
|
||||
this->m_specific_parameters_isSet = true;
|
||||
}
|
||||
|
||||
|
||||
bool
|
||||
SWGSDRdaemonSinkSettings::isSet(){
|
||||
@ -264,13 +244,12 @@ SWGSDRdaemonSinkSettings::isSet(){
|
||||
do{
|
||||
if(m_center_frequency_isSet){ isObjectUpdated = true; break;}
|
||||
if(m_sample_rate_isSet){ isObjectUpdated = true; break;}
|
||||
if(m_log2_interp_isSet){ isObjectUpdated = true; break;}
|
||||
if(m_tx_delay_isSet){ isObjectUpdated = true; break;}
|
||||
if(m_nb_fec_blocks_isSet){ isObjectUpdated = true; break;}
|
||||
if(address != nullptr && *address != QString("")){ isObjectUpdated = true; break;}
|
||||
if(api_address != nullptr && *api_address != QString("")){ isObjectUpdated = true; break;}
|
||||
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_control_port_isSet){ isObjectUpdated = true; break;}
|
||||
if(specific_parameters != nullptr && *specific_parameters != QString("")){ isObjectUpdated = true; break;}
|
||||
}while(false);
|
||||
return isObjectUpdated;
|
||||
}
|
||||
|
@ -48,27 +48,24 @@ public:
|
||||
qint32 getSampleRate();
|
||||
void setSampleRate(qint32 sample_rate);
|
||||
|
||||
qint32 getLog2Interp();
|
||||
void setLog2Interp(qint32 log2_interp);
|
||||
|
||||
float getTxDelay();
|
||||
void setTxDelay(float tx_delay);
|
||||
|
||||
qint32 getNbFecBlocks();
|
||||
void setNbFecBlocks(qint32 nb_fec_blocks);
|
||||
|
||||
QString* getAddress();
|
||||
void setAddress(QString* address);
|
||||
QString* getApiAddress();
|
||||
void setApiAddress(QString* api_address);
|
||||
|
||||
qint32 getApiPort();
|
||||
void setApiPort(qint32 api_port);
|
||||
|
||||
QString* getDataAddress();
|
||||
void setDataAddress(QString* data_address);
|
||||
|
||||
qint32 getDataPort();
|
||||
void setDataPort(qint32 data_port);
|
||||
|
||||
qint32 getControlPort();
|
||||
void setControlPort(qint32 control_port);
|
||||
|
||||
QString* getSpecificParameters();
|
||||
void setSpecificParameters(QString* specific_parameters);
|
||||
|
||||
|
||||
virtual bool isSet() override;
|
||||
|
||||
@ -79,27 +76,24 @@ private:
|
||||
qint32 sample_rate;
|
||||
bool m_sample_rate_isSet;
|
||||
|
||||
qint32 log2_interp;
|
||||
bool m_log2_interp_isSet;
|
||||
|
||||
float tx_delay;
|
||||
bool m_tx_delay_isSet;
|
||||
|
||||
qint32 nb_fec_blocks;
|
||||
bool m_nb_fec_blocks_isSet;
|
||||
|
||||
QString* address;
|
||||
bool m_address_isSet;
|
||||
QString* api_address;
|
||||
bool m_api_address_isSet;
|
||||
|
||||
qint32 api_port;
|
||||
bool m_api_port_isSet;
|
||||
|
||||
QString* data_address;
|
||||
bool m_data_address_isSet;
|
||||
|
||||
qint32 data_port;
|
||||
bool m_data_port_isSet;
|
||||
|
||||
qint32 control_port;
|
||||
bool m_control_port_isSet;
|
||||
|
||||
QString* specific_parameters;
|
||||
bool m_specific_parameters_isSet;
|
||||
|
||||
};
|
||||
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user