mirror of
				https://github.com/f4exb/sdrangel.git
				synced 2025-10-27 11:00:31 -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…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user