mirror of
				https://github.com/f4exb/sdrangel.git
				synced 2025-10-31 04:50:29 -04:00 
			
		
		
		
	SDRdaemonFEC: renamed all SDRdaemonFECxxx classes to SDRdaemonSourcexxx classes
This commit is contained in:
		
							parent
							
								
									3d5efd7dba
								
							
						
					
					
						commit
						718d87ecf5
					
				| @ -25,7 +25,7 @@ | ||||
| 
 | ||||
| 
 | ||||
| #define SDRDAEMONFEC_UDPSIZE 512               // UDP payload size
 | ||||
| #define SDRDAEMONFEC_NBORIGINALBLOCKS 128      // number of sample blocks per frame excluding FEC blocks
 | ||||
| #define SDRDAEMONSOURCE_NBORIGINALBLOCKS 128      // number of sample blocks per frame excluding FEC blocks
 | ||||
| #define SDRDAEMONFEC_NBDECODERSLOTS 16         // power of two sub multiple of uint16_t size. A too large one is superfluous.
 | ||||
| 
 | ||||
| class SDRdaemonFECBuffer | ||||
| @ -69,7 +69,7 @@ public: | ||||
|     }; | ||||
| 
 | ||||
|     static const int samplesPerBlock = (SDRDAEMONFEC_UDPSIZE - sizeof(Header)) / sizeof(Sample); | ||||
|     static const int framesSize = SDRDAEMONFEC_NBDECODERSLOTS * (SDRDAEMONFEC_NBORIGINALBLOCKS - 1) * (SDRDAEMONFEC_UDPSIZE - sizeof(Header)); | ||||
|     static const int framesSize = SDRDAEMONFEC_NBDECODERSLOTS * (SDRDAEMONSOURCE_NBORIGINALBLOCKS - 1) * (SDRDAEMONFEC_UDPSIZE - sizeof(Header)); | ||||
| 
 | ||||
|     struct ProtectedBlock | ||||
|     { | ||||
| @ -156,7 +156,7 @@ public: | ||||
|     } | ||||
| 
 | ||||
|     static const int m_udpPayloadSize = SDRDAEMONFEC_UDPSIZE; | ||||
|     static const int m_nbOriginalBlocks = SDRDAEMONFEC_NBORIGINALBLOCKS; | ||||
|     static const int m_nbOriginalBlocks = SDRDAEMONSOURCE_NBORIGINALBLOCKS; | ||||
| 	static const int m_sampleSize; | ||||
| 	static const int m_iqSampleSize; | ||||
| 
 | ||||
|  | ||||
| @ -25,10 +25,10 @@ | ||||
| 
 | ||||
| 
 | ||||
| 
 | ||||
| const int SDRdaemonFECBuffer::m_sampleSize = 2; | ||||
| const int SDRdaemonFECBuffer::m_iqSampleSize = 2 * m_sampleSize; | ||||
| const int SDRdaemonSourceBuffer::m_sampleSize = 2; | ||||
| const int SDRdaemonSourceBuffer::m_iqSampleSize = 2 * m_sampleSize; | ||||
| 
 | ||||
| SDRdaemonFECBuffer::SDRdaemonFECBuffer(uint32_t throttlems) : | ||||
| SDRdaemonSourceBuffer::SDRdaemonSourceBuffer(uint32_t throttlems) : | ||||
|         m_decoderIndexHead(nbDecoderSlots/2), | ||||
|         m_frameHead(0), | ||||
|         m_curNbBlocks(0), | ||||
| @ -65,14 +65,14 @@ SDRdaemonFECBuffer::SDRdaemonFECBuffer(uint32_t throttlems) : | ||||
|     } | ||||
| } | ||||
| 
 | ||||
| SDRdaemonFECBuffer::~SDRdaemonFECBuffer() | ||||
| SDRdaemonSourceBuffer::~SDRdaemonSourceBuffer() | ||||
| { | ||||
| 	if (m_readBuffer) { | ||||
| 		delete[] m_readBuffer; | ||||
| 	} | ||||
| } | ||||
| 
 | ||||
| void SDRdaemonFECBuffer::initDecodeAllSlots() | ||||
| void SDRdaemonSourceBuffer::initDecodeAllSlots() | ||||
| { | ||||
|     for (int i = 0; i < nbDecoderSlots; i++) | ||||
|     { | ||||
| @ -86,7 +86,7 @@ void SDRdaemonFECBuffer::initDecodeAllSlots() | ||||
|     } | ||||
| } | ||||
| 
 | ||||
| void SDRdaemonFECBuffer::initDecodeSlot(int slotIndex) | ||||
| void SDRdaemonSourceBuffer::initDecodeSlot(int slotIndex) | ||||
| { | ||||
|     // collect stats before voiding the slot
 | ||||
| 
 | ||||
| @ -122,7 +122,7 @@ void SDRdaemonFECBuffer::initDecodeSlot(int slotIndex) | ||||
|     memset((void *) m_decoderSlots[slotIndex].m_recoveryBlocks, 0, m_nbOriginalBlocks * sizeof(ProtectedBlock)); | ||||
| } | ||||
| 
 | ||||
| void SDRdaemonFECBuffer::initReadIndex() | ||||
| void SDRdaemonSourceBuffer::initReadIndex() | ||||
| { | ||||
|     m_readIndex = ((m_decoderIndexHead + (nbDecoderSlots/2)) % nbDecoderSlots) * sizeof(BufferFrame); | ||||
|     m_wrDeltaEstimate = m_framesNbBytes / 2; | ||||
| @ -130,7 +130,7 @@ void SDRdaemonFECBuffer::initReadIndex() | ||||
|     m_nbWrites = 0; | ||||
| } | ||||
| 
 | ||||
| void SDRdaemonFECBuffer::rwCorrectionEstimate(int slotIndex) | ||||
| void SDRdaemonSourceBuffer::rwCorrectionEstimate(int slotIndex) | ||||
| { | ||||
| 	if (m_nbReads >= 40) // check every ~1s as tick is ~50ms
 | ||||
| 	{ | ||||
| @ -163,7 +163,7 @@ void SDRdaemonFECBuffer::rwCorrectionEstimate(int slotIndex) | ||||
| 	} | ||||
| } | ||||
| 
 | ||||
| void SDRdaemonFECBuffer::checkSlotData(int slotIndex) | ||||
| void SDRdaemonSourceBuffer::checkSlotData(int slotIndex) | ||||
| { | ||||
|     int pseudoWriteIndex = slotIndex * sizeof(BufferFrame); | ||||
|     m_wrDeltaEstimate = pseudoWriteIndex - m_readIndex; | ||||
| @ -188,7 +188,7 @@ void SDRdaemonFECBuffer::checkSlotData(int slotIndex) | ||||
|     } | ||||
| } | ||||
| 
 | ||||
| void SDRdaemonFECBuffer::writeData(char *array) | ||||
| void SDRdaemonSourceBuffer::writeData(char *array) | ||||
| { | ||||
|     SuperBlock *superBlock = (SuperBlock *) array; | ||||
|     int frameIndex = superBlock->header.frameIndex; | ||||
| @ -321,7 +321,7 @@ void SDRdaemonFECBuffer::writeData(char *array) | ||||
|     } // decode
 | ||||
| } | ||||
| 
 | ||||
| void SDRdaemonFECBuffer::writeData0(char *array __attribute__((unused)), uint32_t length __attribute__((unused))) | ||||
| void SDRdaemonSourceBuffer::writeData0(char *array __attribute__((unused)), uint32_t length __attribute__((unused))) | ||||
| { | ||||
| // Kept as comments for the out of sync blocks algorithms
 | ||||
| //    assert(length == m_udpPayloadSize);
 | ||||
| @ -394,7 +394,7 @@ void SDRdaemonFECBuffer::writeData0(char *array __attribute__((unused)), uint32_ | ||||
| //
 | ||||
| } | ||||
| 
 | ||||
| uint8_t *SDRdaemonFECBuffer::readData(int32_t length) | ||||
| uint8_t *SDRdaemonSourceBuffer::readData(int32_t length) | ||||
| { | ||||
|     uint8_t *buffer = (uint8_t *) m_frames; | ||||
|     uint32_t readIndex = m_readIndex; | ||||
| @ -436,7 +436,7 @@ uint8_t *SDRdaemonFECBuffer::readData(int32_t length) | ||||
|     } | ||||
| } | ||||
| 
 | ||||
| void SDRdaemonFECBuffer::printMeta(const QString& header, MetaDataFEC *metaData) | ||||
| void SDRdaemonSourceBuffer::printMeta(const QString& header, MetaDataFEC *metaData) | ||||
| { | ||||
| 	qDebug() << header << ": " | ||||
|             << "|" << metaData->m_centerFrequency | ||||
|  | ||||
| @ -24,11 +24,11 @@ | ||||
| #include "util/movingaverage.h" | ||||
| 
 | ||||
| 
 | ||||
| #define SDRDAEMONFEC_UDPSIZE 512               // UDP payload size
 | ||||
| #define SDRDAEMONFEC_NBORIGINALBLOCKS 128      // number of sample blocks per frame excluding FEC blocks
 | ||||
| #define SDRDAEMONFEC_NBDECODERSLOTS 16         // power of two sub multiple of uint16_t size. A too large one is superfluous.
 | ||||
| #define SDRDAEMONSOURCE_UDPSIZE 512               // UDP payload size
 | ||||
| #define SDRDAEMONSOURCE_NBORIGINALBLOCKS 128      // number of sample blocks per frame excluding FEC blocks
 | ||||
| #define SDRDAEMONSOURCE_NBDECODERSLOTS 16         // power of two sub multiple of uint16_t size. A too large one is superfluous.
 | ||||
| 
 | ||||
| class SDRdaemonFECBuffer | ||||
| class SDRdaemonSourceBuffer | ||||
| { | ||||
| public: | ||||
| #pragma pack(push, 1) | ||||
| @ -68,8 +68,8 @@ public: | ||||
|         uint8_t  filler; | ||||
|     }; | ||||
| 
 | ||||
|     static const int samplesPerBlock = (SDRDAEMONFEC_UDPSIZE - sizeof(Header)) / sizeof(Sample); | ||||
|     static const int framesSize = SDRDAEMONFEC_NBDECODERSLOTS * (SDRDAEMONFEC_NBORIGINALBLOCKS - 1) * (SDRDAEMONFEC_UDPSIZE - sizeof(Header)); | ||||
|     static const int samplesPerBlock = (SDRDAEMONSOURCE_UDPSIZE - sizeof(Header)) / sizeof(Sample); | ||||
|     static const int framesSize = SDRDAEMONSOURCE_NBDECODERSLOTS * (SDRDAEMONSOURCE_NBORIGINALBLOCKS - 1) * (SDRDAEMONSOURCE_UDPSIZE - sizeof(Header)); | ||||
| 
 | ||||
|     struct ProtectedBlock | ||||
|     { | ||||
| @ -83,8 +83,8 @@ public: | ||||
|     }; | ||||
| #pragma pack(pop) | ||||
| 
 | ||||
| 	SDRdaemonFECBuffer(uint32_t throttlems); | ||||
| 	~SDRdaemonFECBuffer(); | ||||
| 	SDRdaemonSourceBuffer(uint32_t throttlems); | ||||
| 	~SDRdaemonSourceBuffer(); | ||||
| 
 | ||||
| 	// R/W operations
 | ||||
| 	void writeData(char *array); //!< Write data into buffer.
 | ||||
| @ -156,13 +156,13 @@ public: | ||||
|         } | ||||
|     } | ||||
| 
 | ||||
|     static const int m_udpPayloadSize = SDRDAEMONFEC_UDPSIZE; | ||||
|     static const int m_nbOriginalBlocks = SDRDAEMONFEC_NBORIGINALBLOCKS; | ||||
|     static const int m_udpPayloadSize = SDRDAEMONSOURCE_UDPSIZE; | ||||
|     static const int m_nbOriginalBlocks = SDRDAEMONSOURCE_NBORIGINALBLOCKS; | ||||
| 	static const int m_sampleSize; | ||||
| 	static const int m_iqSampleSize; | ||||
| 
 | ||||
| private: | ||||
|     static const int nbDecoderSlots = SDRDAEMONFEC_NBDECODERSLOTS; | ||||
|     static const int nbDecoderSlots = SDRDAEMONSOURCE_NBDECODERSLOTS; | ||||
| 
 | ||||
| #pragma pack(push, 1) | ||||
|     struct BufferFrame | ||||
|  | ||||
| @ -41,7 +41,7 @@ | ||||
| #include <dsp/filerecord.h> | ||||
| #include "sdrdaemonsourcegui.h" | ||||
| 
 | ||||
| SDRdaemonFECGui::SDRdaemonFECGui(DeviceSourceAPI *deviceAPI, QWidget* parent) : | ||||
| SDRdaemonSourceGui::SDRdaemonSourceGui(DeviceSourceAPI *deviceAPI, QWidget* parent) : | ||||
| 	QWidget(parent), | ||||
| 	ui(new Ui::SDRdaemonSourceGui), | ||||
| 	m_deviceAPI(deviceAPI), | ||||
| @ -98,7 +98,7 @@ SDRdaemonFECGui::SDRdaemonFECGui(DeviceSourceAPI *deviceAPI, QWidget* parent) : | ||||
| 	connect(&(deviceAPI->getMainWindow()->getMasterTimer()), SIGNAL(timeout()), this, SLOT(tick())); | ||||
|     connect(&m_updateTimer, SIGNAL(timeout()), this, SLOT(updateHardware())); | ||||
| 
 | ||||
| 	m_sampleSource = new SDRdaemonFECInput(deviceAPI->getMainWindow()->getMasterTimer(), m_deviceAPI); | ||||
| 	m_sampleSource = new SDRdaemonSourceInput(deviceAPI->getMainWindow()->getMasterTimer(), m_deviceAPI); | ||||
| 	connect(m_sampleSource->getOutputMessageQueueToGUI(), SIGNAL(messageEnqueued()), this, SLOT(handleSourceMessages())); | ||||
| 	m_deviceAPI->setSource(m_sampleSource); | ||||
| 
 | ||||
| @ -120,7 +120,7 @@ SDRdaemonFECGui::SDRdaemonFECGui(DeviceSourceAPI *deviceAPI, QWidget* parent) : | ||||
|     sendSettings(); | ||||
| } | ||||
| 
 | ||||
| SDRdaemonFECGui::~SDRdaemonFECGui() | ||||
| SDRdaemonSourceGui::~SDRdaemonSourceGui() | ||||
| { | ||||
|     m_deviceAPI->removeSink(m_fileSink); | ||||
|     delete m_fileSink; | ||||
| @ -128,27 +128,27 @@ SDRdaemonFECGui::~SDRdaemonFECGui() | ||||
| 	delete ui; | ||||
| } | ||||
| 
 | ||||
| void SDRdaemonFECGui::blockApplySettings(bool block) | ||||
| void SDRdaemonSourceGui::blockApplySettings(bool block) | ||||
| { | ||||
|     m_doApplySettings = !block; | ||||
| } | ||||
| 
 | ||||
| void SDRdaemonFECGui::destroy() | ||||
| void SDRdaemonSourceGui::destroy() | ||||
| { | ||||
| 	delete this; | ||||
| } | ||||
| 
 | ||||
| void SDRdaemonFECGui::setName(const QString& name) | ||||
| void SDRdaemonSourceGui::setName(const QString& name) | ||||
| { | ||||
| 	setObjectName(name); | ||||
| } | ||||
| 
 | ||||
| QString SDRdaemonFECGui::getName() const | ||||
| QString SDRdaemonSourceGui::getName() const | ||||
| { | ||||
| 	return objectName(); | ||||
| } | ||||
| 
 | ||||
| void SDRdaemonFECGui::resetToDefaults() | ||||
| void SDRdaemonSourceGui::resetToDefaults() | ||||
| { | ||||
|     blockApplySettings(true); | ||||
|     m_settings.resetToDefaults(); | ||||
| @ -157,12 +157,12 @@ void SDRdaemonFECGui::resetToDefaults() | ||||
|     sendSettings(); | ||||
| } | ||||
| 
 | ||||
| QByteArray SDRdaemonFECGui::serialize() const | ||||
| QByteArray SDRdaemonSourceGui::serialize() const | ||||
| { | ||||
|     return m_settings.serialize(); | ||||
| } | ||||
| 
 | ||||
| bool SDRdaemonFECGui::deserialize(const QByteArray& data) | ||||
| bool SDRdaemonSourceGui::deserialize(const QByteArray& data) | ||||
| { | ||||
|     blockApplySettings(true); | ||||
| 
 | ||||
| @ -185,12 +185,12 @@ bool SDRdaemonFECGui::deserialize(const QByteArray& data) | ||||
|     } | ||||
| } | ||||
| 
 | ||||
| qint64 SDRdaemonFECGui::getCenterFrequency() const | ||||
| qint64 SDRdaemonSourceGui::getCenterFrequency() const | ||||
| { | ||||
|     return m_settings.m_centerFrequency; | ||||
| } | ||||
| 
 | ||||
| void SDRdaemonFECGui::setCenterFrequency(qint64 centerFrequency) | ||||
| void SDRdaemonSourceGui::setCenterFrequency(qint64 centerFrequency) | ||||
| { | ||||
|     m_settings.m_centerFrequency = centerFrequency; | ||||
|     displaySettings(); | ||||
| @ -198,17 +198,17 @@ void SDRdaemonFECGui::setCenterFrequency(qint64 centerFrequency) | ||||
|     sendSettings(); | ||||
| } | ||||
| 
 | ||||
| bool SDRdaemonFECGui::handleMessage(const Message& message) | ||||
| bool SDRdaemonSourceGui::handleMessage(const Message& message) | ||||
| { | ||||
| 	if (SDRdaemonFECInput::MsgReportSDRdaemonAcquisition::match(message)) | ||||
| 	if (SDRdaemonSourceInput::MsgReportSDRdaemonAcquisition::match(message)) | ||||
| 	{ | ||||
| 		m_acquisition = ((SDRdaemonFECInput::MsgReportSDRdaemonAcquisition&)message).getAcquisition(); | ||||
| 		m_acquisition = ((SDRdaemonSourceInput::MsgReportSDRdaemonAcquisition&)message).getAcquisition(); | ||||
| 		updateWithAcquisition(); | ||||
| 		return true; | ||||
| 	} | ||||
| 	else if (SDRdaemonFECInput::MsgReportSDRdaemonFECStreamData::match(message)) | ||||
| 	else if (SDRdaemonSourceInput::MsgReportSDRdaemonSourceStreamData::match(message)) | ||||
| 	{ | ||||
|         int sampleRate = ((SDRdaemonFECInput::MsgReportSDRdaemonFECStreamData&)message).getSampleRate(); | ||||
|         int sampleRate = ((SDRdaemonSourceInput::MsgReportSDRdaemonSourceStreamData&)message).getSampleRate(); | ||||
| 
 | ||||
|         if (m_sampleRate != sampleRate) | ||||
|         { | ||||
| @ -217,30 +217,30 @@ bool SDRdaemonFECGui::handleMessage(const Message& message) | ||||
|             sendControl(); | ||||
|         } | ||||
| 
 | ||||
|         m_centerFrequency = ((SDRdaemonFECInput::MsgReportSDRdaemonFECStreamData&)message).getCenterFrequency(); | ||||
|         m_startingTimeStamp.tv_sec = ((SDRdaemonFECInput::MsgReportSDRdaemonFECStreamData&)message).get_tv_sec(); | ||||
|         m_startingTimeStamp.tv_usec = ((SDRdaemonFECInput::MsgReportSDRdaemonFECStreamData&)message).get_tv_usec(); | ||||
|         m_centerFrequency = ((SDRdaemonSourceInput::MsgReportSDRdaemonSourceStreamData&)message).getCenterFrequency(); | ||||
|         m_startingTimeStamp.tv_sec = ((SDRdaemonSourceInput::MsgReportSDRdaemonSourceStreamData&)message).get_tv_sec(); | ||||
|         m_startingTimeStamp.tv_usec = ((SDRdaemonSourceInput::MsgReportSDRdaemonSourceStreamData&)message).get_tv_usec(); | ||||
| 
 | ||||
|         updateWithStreamData(); | ||||
|         return true; | ||||
| 	} | ||||
| 	else if (SDRdaemonFECInput::MsgReportSDRdaemonFECStreamTiming::match(message)) | ||||
| 	else if (SDRdaemonSourceInput::MsgReportSDRdaemonSourceStreamTiming::match(message)) | ||||
| 	{ | ||||
| 		m_startingTimeStamp.tv_sec = ((SDRdaemonFECInput::MsgReportSDRdaemonFECStreamTiming&)message).get_tv_sec(); | ||||
| 		m_startingTimeStamp.tv_usec = ((SDRdaemonFECInput::MsgReportSDRdaemonFECStreamTiming&)message).get_tv_usec(); | ||||
| 		m_framesDecodingStatus = ((SDRdaemonFECInput::MsgReportSDRdaemonFECStreamTiming&)message).getFramesDecodingStatus(); | ||||
| 		m_allBlocksReceived = ((SDRdaemonFECInput::MsgReportSDRdaemonFECStreamTiming&)message).allBlocksReceived(); | ||||
| 		m_bufferLengthInSecs = ((SDRdaemonFECInput::MsgReportSDRdaemonFECStreamTiming&)message).getBufferLengthInSecs(); | ||||
|         m_bufferGauge = ((SDRdaemonFECInput::MsgReportSDRdaemonFECStreamTiming&)message).getBufferGauge(); | ||||
|         m_minNbBlocks = ((SDRdaemonFECInput::MsgReportSDRdaemonFECStreamTiming&)message).getMinNbBlocks(); | ||||
|         m_minNbOriginalBlocks = ((SDRdaemonFECInput::MsgReportSDRdaemonFECStreamTiming&)message).getMinNbOriginalBlocks(); | ||||
|         m_maxNbRecovery = ((SDRdaemonFECInput::MsgReportSDRdaemonFECStreamTiming&)message).getMaxNbRecovery(); | ||||
|         m_avgNbBlocks = ((SDRdaemonFECInput::MsgReportSDRdaemonFECStreamTiming&)message).getAvgNbBlocks(); | ||||
|         m_avgNbOriginalBlocks = ((SDRdaemonFECInput::MsgReportSDRdaemonFECStreamTiming&)message).getAvgNbOriginalBlocks(); | ||||
|         m_avgNbRecovery = ((SDRdaemonFECInput::MsgReportSDRdaemonFECStreamTiming&)message).getAvgNbRecovery(); | ||||
|         m_nbOriginalBlocks = ((SDRdaemonFECInput::MsgReportSDRdaemonFECStreamTiming&)message).getNbOriginalBlocksPerFrame(); | ||||
| 		m_startingTimeStamp.tv_sec = ((SDRdaemonSourceInput::MsgReportSDRdaemonSourceStreamTiming&)message).get_tv_sec(); | ||||
| 		m_startingTimeStamp.tv_usec = ((SDRdaemonSourceInput::MsgReportSDRdaemonSourceStreamTiming&)message).get_tv_usec(); | ||||
| 		m_framesDecodingStatus = ((SDRdaemonSourceInput::MsgReportSDRdaemonSourceStreamTiming&)message).getFramesDecodingStatus(); | ||||
| 		m_allBlocksReceived = ((SDRdaemonSourceInput::MsgReportSDRdaemonSourceStreamTiming&)message).allBlocksReceived(); | ||||
| 		m_bufferLengthInSecs = ((SDRdaemonSourceInput::MsgReportSDRdaemonSourceStreamTiming&)message).getBufferLengthInSecs(); | ||||
|         m_bufferGauge = ((SDRdaemonSourceInput::MsgReportSDRdaemonSourceStreamTiming&)message).getBufferGauge(); | ||||
|         m_minNbBlocks = ((SDRdaemonSourceInput::MsgReportSDRdaemonSourceStreamTiming&)message).getMinNbBlocks(); | ||||
|         m_minNbOriginalBlocks = ((SDRdaemonSourceInput::MsgReportSDRdaemonSourceStreamTiming&)message).getMinNbOriginalBlocks(); | ||||
|         m_maxNbRecovery = ((SDRdaemonSourceInput::MsgReportSDRdaemonSourceStreamTiming&)message).getMaxNbRecovery(); | ||||
|         m_avgNbBlocks = ((SDRdaemonSourceInput::MsgReportSDRdaemonSourceStreamTiming&)message).getAvgNbBlocks(); | ||||
|         m_avgNbOriginalBlocks = ((SDRdaemonSourceInput::MsgReportSDRdaemonSourceStreamTiming&)message).getAvgNbOriginalBlocks(); | ||||
|         m_avgNbRecovery = ((SDRdaemonSourceInput::MsgReportSDRdaemonSourceStreamTiming&)message).getAvgNbRecovery(); | ||||
|         m_nbOriginalBlocks = ((SDRdaemonSourceInput::MsgReportSDRdaemonSourceStreamTiming&)message).getNbOriginalBlocksPerFrame(); | ||||
| 
 | ||||
|         int nbFECBlocks = ((SDRdaemonFECInput::MsgReportSDRdaemonFECStreamTiming&)message).getNbFECBlocksPerFrame(); | ||||
|         int nbFECBlocks = ((SDRdaemonSourceInput::MsgReportSDRdaemonSourceStreamTiming&)message).getNbFECBlocksPerFrame(); | ||||
| 
 | ||||
|         if (m_nbFECBlocks != nbFECBlocks) | ||||
|         { | ||||
| @ -258,7 +258,7 @@ bool SDRdaemonFECGui::handleMessage(const Message& message) | ||||
| 	} | ||||
| } | ||||
| 
 | ||||
| void SDRdaemonFECGui::handleDSPMessages() | ||||
| void SDRdaemonSourceGui::handleDSPMessages() | ||||
| { | ||||
|     Message* message; | ||||
| 
 | ||||
| @ -280,7 +280,7 @@ void SDRdaemonFECGui::handleDSPMessages() | ||||
|     } | ||||
| } | ||||
| 
 | ||||
| void SDRdaemonFECGui::handleSourceMessages() | ||||
| void SDRdaemonSourceGui::handleSourceMessages() | ||||
| { | ||||
| 	Message* message; | ||||
| 
 | ||||
| @ -295,20 +295,20 @@ void SDRdaemonFECGui::handleSourceMessages() | ||||
| 	} | ||||
| } | ||||
| 
 | ||||
| void SDRdaemonFECGui::updateSampleRateAndFrequency() | ||||
| void SDRdaemonSourceGui::updateSampleRateAndFrequency() | ||||
| { | ||||
|     m_deviceAPI->getSpectrum()->setSampleRate(m_deviceSampleRate); | ||||
|     m_deviceAPI->getSpectrum()->setCenterFrequency(m_deviceCenterFrequency); | ||||
|     ui->deviceRateText->setText(tr("%1k").arg((float)m_deviceSampleRate / 1000)); | ||||
| } | ||||
| 
 | ||||
| void SDRdaemonFECGui::updateTxDelay() | ||||
| void SDRdaemonSourceGui::updateTxDelay() | ||||
| { | ||||
|     m_txDelay = ((127*127*m_settings.m_txDelay) / m_sampleRate)/(128 + m_nbFECBlocks); | ||||
|     ui->txDelayText->setToolTip(tr("%1 us").arg(QString::number(m_txDelay*1e6, 'f', 0))); | ||||
| } | ||||
| 
 | ||||
| void SDRdaemonFECGui::displaySettings() | ||||
| void SDRdaemonSourceGui::displaySettings() | ||||
| { | ||||
|     ui->centerFrequency->setValue(m_settings.m_centerFrequency / 1000); | ||||
|     ui->deviceRateText->setText(tr("%1k").arg(m_sampleRate / 1000.0)); | ||||
| @ -336,10 +336,10 @@ void SDRdaemonFECGui::displaySettings() | ||||
| 	ui->iqImbalance->setChecked(m_settings.m_iqCorrection); | ||||
| } | ||||
| 
 | ||||
| void SDRdaemonFECGui::sendControl(bool force) | ||||
| void SDRdaemonSourceGui::sendControl(bool force) | ||||
| { | ||||
|     QString remoteAddress; | ||||
|     ((SDRdaemonFECInput *) m_sampleSource)->getRemoteAddress(remoteAddress); | ||||
|     ((SDRdaemonSourceInput *) m_sampleSource)->getRemoteAddress(remoteAddress); | ||||
| 
 | ||||
|     if ((remoteAddress != m_remoteAddress) || | ||||
|         (m_settings.m_controlPort != m_controlSettings.m_controlPort) || force) | ||||
| @ -454,13 +454,13 @@ void SDRdaemonFECGui::sendControl(bool force) | ||||
|     m_controlSettings.m_specificParameters = m_settings.m_specificParameters; | ||||
| } | ||||
| 
 | ||||
| void SDRdaemonFECGui::sendSettings() | ||||
| void SDRdaemonSourceGui::sendSettings() | ||||
| { | ||||
|     if(!m_updateTimer.isActive()) | ||||
|         m_updateTimer.start(100); | ||||
| } | ||||
| 
 | ||||
| void SDRdaemonFECGui::on_applyButton_clicked(bool checked __attribute__((unused))) | ||||
| void SDRdaemonSourceGui::on_applyButton_clicked(bool checked __attribute__((unused))) | ||||
| { | ||||
|     m_settings.m_address = ui->address->text(); | ||||
| 
 | ||||
| @ -483,20 +483,20 @@ void SDRdaemonFECGui::on_applyButton_clicked(bool checked __attribute__((unused) | ||||
|     configureUDPLink(); | ||||
| } | ||||
| 
 | ||||
| void SDRdaemonFECGui::on_sendButton_clicked(bool checked __attribute__((unused))) | ||||
| void SDRdaemonSourceGui::on_sendButton_clicked(bool checked __attribute__((unused))) | ||||
| { | ||||
|     updateTxDelay(); | ||||
|     sendControl(true); | ||||
| 	ui->specificParms->setCursorPosition(0); | ||||
| } | ||||
| 
 | ||||
| void SDRdaemonFECGui::on_address_returnPressed() | ||||
| void SDRdaemonSourceGui::on_address_returnPressed() | ||||
| { | ||||
|     m_settings.m_address = ui->address->text(); | ||||
|     configureUDPLink(); | ||||
| } | ||||
| 
 | ||||
| void SDRdaemonFECGui::on_dataPort_returnPressed() | ||||
| void SDRdaemonSourceGui::on_dataPort_returnPressed() | ||||
| { | ||||
|     bool dataOk; | ||||
|     int udpDataPort = ui->dataPort->text().toInt(&dataOk); | ||||
| @ -513,7 +513,7 @@ void SDRdaemonFECGui::on_dataPort_returnPressed() | ||||
|     configureUDPLink(); | ||||
| } | ||||
| 
 | ||||
| void SDRdaemonFECGui::on_controlPort_returnPressed() | ||||
| void SDRdaemonSourceGui::on_controlPort_returnPressed() | ||||
| { | ||||
|     bool ctlOk; | ||||
|     int udpCtlPort = ui->controlPort->text().toInt(&ctlOk); | ||||
| @ -530,7 +530,7 @@ void SDRdaemonFECGui::on_controlPort_returnPressed() | ||||
|     sendControl(); | ||||
| } | ||||
| 
 | ||||
| void SDRdaemonFECGui::on_dcOffset_toggled(bool checked) | ||||
| void SDRdaemonSourceGui::on_dcOffset_toggled(bool checked) | ||||
| { | ||||
| 	if (m_dcBlock != checked) | ||||
| 	{ | ||||
| @ -539,7 +539,7 @@ void SDRdaemonFECGui::on_dcOffset_toggled(bool checked) | ||||
| 	} | ||||
| } | ||||
| 
 | ||||
| void SDRdaemonFECGui::on_iqImbalance_toggled(bool checked) | ||||
| void SDRdaemonSourceGui::on_iqImbalance_toggled(bool checked) | ||||
| { | ||||
| 	if (m_iqCorrection != checked) | ||||
| 	{ | ||||
| @ -548,19 +548,19 @@ void SDRdaemonFECGui::on_iqImbalance_toggled(bool checked) | ||||
| 	} | ||||
| } | ||||
| 
 | ||||
| void SDRdaemonFECGui::on_freq_changed(quint64 value) | ||||
| void SDRdaemonSourceGui::on_freq_changed(quint64 value) | ||||
| { | ||||
|     m_settings.m_centerFrequency = value * 1000; | ||||
|     sendControl(); | ||||
| } | ||||
| 
 | ||||
| void SDRdaemonFECGui::on_sampleRate_changed(quint64 value) | ||||
| void SDRdaemonSourceGui::on_sampleRate_changed(quint64 value) | ||||
| { | ||||
|     m_settings.m_sampleRate = value; | ||||
|     sendControl(); | ||||
| } | ||||
| 
 | ||||
| void SDRdaemonFECGui::on_specificParms_returnPressed() | ||||
| void SDRdaemonSourceGui::on_specificParms_returnPressed() | ||||
| { | ||||
|     if ((ui->specificParms->text()).size() > 0) { | ||||
|         m_settings.m_specificParameters = ui->specificParms->text(); | ||||
| @ -568,19 +568,19 @@ void SDRdaemonFECGui::on_specificParms_returnPressed() | ||||
|     } | ||||
| } | ||||
| 
 | ||||
| void SDRdaemonFECGui::on_decim_currentIndexChanged(int index __attribute__((unused))) | ||||
| void SDRdaemonSourceGui::on_decim_currentIndexChanged(int index __attribute__((unused))) | ||||
| { | ||||
|     m_settings.m_log2Decim = ui->decim->currentIndex(); | ||||
|     sendControl(); | ||||
| } | ||||
| 
 | ||||
| void SDRdaemonFECGui::on_fcPos_currentIndexChanged(int index __attribute__((unused))) | ||||
| void SDRdaemonSourceGui::on_fcPos_currentIndexChanged(int index __attribute__((unused))) | ||||
| { | ||||
|     m_settings.m_fcPos = ui->fcPos->currentIndex(); | ||||
|     sendControl(); | ||||
| } | ||||
| 
 | ||||
| void SDRdaemonFECGui::on_txDelay_valueChanged(int value) | ||||
| void SDRdaemonSourceGui::on_txDelay_valueChanged(int value) | ||||
| { | ||||
|     m_settings.m_txDelay = value / 100.0; | ||||
|     ui->txDelayText->setText(tr("%1").arg(value)); | ||||
| @ -588,7 +588,7 @@ void SDRdaemonFECGui::on_txDelay_valueChanged(int value) | ||||
|     sendControl(); | ||||
| } | ||||
| 
 | ||||
| void SDRdaemonFECGui::on_nbFECBlocks_valueChanged(int value) | ||||
| void SDRdaemonSourceGui::on_nbFECBlocks_valueChanged(int value) | ||||
| { | ||||
|     m_settings.m_nbFECBlocks = value; | ||||
|     QString nstr = QString("%1").arg(m_settings.m_nbFECBlocks, 2, 10, QChar('0')); | ||||
| @ -596,7 +596,7 @@ void SDRdaemonFECGui::on_nbFECBlocks_valueChanged(int value) | ||||
|     sendControl(); | ||||
| } | ||||
| 
 | ||||
| void SDRdaemonFECGui::on_startStop_toggled(bool checked) | ||||
| void SDRdaemonSourceGui::on_startStop_toggled(bool checked) | ||||
| { | ||||
|     if (checked) | ||||
|     { | ||||
| @ -613,7 +613,7 @@ void SDRdaemonFECGui::on_startStop_toggled(bool checked) | ||||
|     } | ||||
| } | ||||
| 
 | ||||
| void SDRdaemonFECGui::on_record_toggled(bool checked) | ||||
| void SDRdaemonSourceGui::on_record_toggled(bool checked) | ||||
| { | ||||
|     if (checked) | ||||
|     { | ||||
| @ -627,7 +627,7 @@ void SDRdaemonFECGui::on_record_toggled(bool checked) | ||||
|     } | ||||
| } | ||||
| 
 | ||||
| void SDRdaemonFECGui::on_eventCountsReset_clicked(bool checked __attribute__((unused))) | ||||
| void SDRdaemonSourceGui::on_eventCountsReset_clicked(bool checked __attribute__((unused))) | ||||
| { | ||||
|     m_countUnrecoverable = 0; | ||||
|     m_countRecovered = 0; | ||||
| @ -636,7 +636,7 @@ void SDRdaemonFECGui::on_eventCountsReset_clicked(bool checked __attribute__((un | ||||
|     displayEventTimer(); | ||||
| } | ||||
| 
 | ||||
| void SDRdaemonFECGui::displayEventCounts() | ||||
| void SDRdaemonSourceGui::displayEventCounts() | ||||
| { | ||||
|     QString nstr = QString("%1").arg(m_countUnrecoverable, 3, 10, QChar('0')); | ||||
|     ui->eventUnrecText->setText(nstr); | ||||
| @ -644,7 +644,7 @@ void SDRdaemonFECGui::displayEventCounts() | ||||
|     ui->eventRecText->setText(nstr); | ||||
| } | ||||
| 
 | ||||
| void SDRdaemonFECGui::displayEventTimer() | ||||
| void SDRdaemonSourceGui::displayEventTimer() | ||||
| { | ||||
|     int elapsedTimeMillis = m_eventsTime.elapsed(); | ||||
|     QTime recordLength(0, 0, 0, 0); | ||||
| @ -653,32 +653,32 @@ void SDRdaemonFECGui::displayEventTimer() | ||||
|     ui->eventCountsTimeText->setText(s_time); | ||||
| } | ||||
| 
 | ||||
| void SDRdaemonFECGui::configureUDPLink() | ||||
| void SDRdaemonSourceGui::configureUDPLink() | ||||
| { | ||||
| 	qDebug() << "SDRdaemonGui::configureUDPLink: " << m_settings.m_address.toStdString().c_str() | ||||
| 			<< " : " << m_settings.m_dataPort; | ||||
| 
 | ||||
| 	SDRdaemonFECInput::MsgConfigureSDRdaemonUDPLink* message = SDRdaemonFECInput::MsgConfigureSDRdaemonUDPLink::create(m_settings.m_address, m_settings.m_dataPort); | ||||
| 	SDRdaemonSourceInput::MsgConfigureSDRdaemonUDPLink* message = SDRdaemonSourceInput::MsgConfigureSDRdaemonUDPLink::create(m_settings.m_address, m_settings.m_dataPort); | ||||
| 	m_sampleSource->getInputMessageQueue()->push(message); | ||||
| } | ||||
| 
 | ||||
| void SDRdaemonFECGui::configureAutoCorrections() | ||||
| void SDRdaemonSourceGui::configureAutoCorrections() | ||||
| { | ||||
| 	SDRdaemonFECInput::MsgConfigureSDRdaemonAutoCorr* message = SDRdaemonFECInput::MsgConfigureSDRdaemonAutoCorr::create(m_dcBlock, m_iqCorrection); | ||||
| 	SDRdaemonSourceInput::MsgConfigureSDRdaemonAutoCorr* message = SDRdaemonSourceInput::MsgConfigureSDRdaemonAutoCorr::create(m_dcBlock, m_iqCorrection); | ||||
| 	m_sampleSource->getInputMessageQueue()->push(message); | ||||
| } | ||||
| 
 | ||||
| void SDRdaemonFECGui::updateWithAcquisition() | ||||
| void SDRdaemonSourceGui::updateWithAcquisition() | ||||
| { | ||||
| } | ||||
| 
 | ||||
| void SDRdaemonFECGui::updateWithStreamData() | ||||
| void SDRdaemonSourceGui::updateWithStreamData() | ||||
| { | ||||
| 	ui->centerFrequency->setValue(m_centerFrequency / 1000); | ||||
| 	updateWithStreamTime(); | ||||
| } | ||||
| 
 | ||||
| void SDRdaemonFECGui::updateWithStreamTime() | ||||
| void SDRdaemonSourceGui::updateWithStreamTime() | ||||
| { | ||||
| 	bool updateEventCounts = false; | ||||
|     quint64 startingTimeStampMsec = ((quint64) m_startingTimeStamp.tv_sec * 1000LL) + ((quint64) m_startingTimeStamp.tv_usec / 1000LL); | ||||
| @ -730,16 +730,16 @@ void SDRdaemonFECGui::updateWithStreamTime() | ||||
|     displayEventTimer(); | ||||
| } | ||||
| 
 | ||||
| void SDRdaemonFECGui::updateHardware() | ||||
| void SDRdaemonSourceGui::updateHardware() | ||||
| { | ||||
|     qDebug() << "SDRdaemonSinkGui::updateHardware"; | ||||
|     SDRdaemonFECInput::MsgConfigureSDRdaemonFEC* message = SDRdaemonFECInput::MsgConfigureSDRdaemonFEC::create(m_settings, m_forceSettings); | ||||
|     SDRdaemonSourceInput::MsgConfigureSDRdaemonSource* message = SDRdaemonSourceInput::MsgConfigureSDRdaemonSource::create(m_settings, m_forceSettings); | ||||
|     m_sampleSource->getInputMessageQueue()->push(message); | ||||
|     m_forceSettings = false; | ||||
|     m_updateTimer.stop(); | ||||
| } | ||||
| 
 | ||||
| void SDRdaemonFECGui::updateStatus() | ||||
| void SDRdaemonSourceGui::updateStatus() | ||||
| { | ||||
|     int state = m_deviceAPI->state(); | ||||
| 
 | ||||
| @ -768,10 +768,10 @@ void SDRdaemonFECGui::updateStatus() | ||||
|     } | ||||
| } | ||||
| 
 | ||||
| void SDRdaemonFECGui::tick() | ||||
| void SDRdaemonSourceGui::tick() | ||||
| { | ||||
| 	if ((++m_tickCount & 0xf) == 0) { | ||||
| 		SDRdaemonFECInput::MsgConfigureSDRdaemonStreamTiming* message = SDRdaemonFECInput::MsgConfigureSDRdaemonStreamTiming::create(); | ||||
| 		SDRdaemonSourceInput::MsgConfigureSDRdaemonStreamTiming* message = SDRdaemonSourceInput::MsgConfigureSDRdaemonStreamTiming::create(); | ||||
| 		m_sampleSource->getInputMessageQueue()->push(message); | ||||
| 	} | ||||
| } | ||||
|  | ||||
| @ -30,12 +30,12 @@ namespace Ui { | ||||
| 	class SDRdaemonSourceGui; | ||||
| } | ||||
| 
 | ||||
| class SDRdaemonFECGui : public QWidget, public PluginGUI { | ||||
| class SDRdaemonSourceGui : public QWidget, public PluginGUI { | ||||
| 	Q_OBJECT | ||||
| 
 | ||||
| public: | ||||
| 	explicit SDRdaemonFECGui(DeviceSourceAPI *deviceAPI, QWidget* parent = NULL); | ||||
| 	virtual ~SDRdaemonFECGui(); | ||||
| 	explicit SDRdaemonSourceGui(DeviceSourceAPI *deviceAPI, QWidget* parent = NULL); | ||||
| 	virtual ~SDRdaemonSourceGui(); | ||||
| 	void destroy(); | ||||
| 
 | ||||
| 	void setName(const QString& name); | ||||
| @ -52,8 +52,8 @@ private: | ||||
| 	Ui::SDRdaemonSourceGui* ui; | ||||
| 
 | ||||
| 	DeviceSourceAPI* m_deviceAPI; | ||||
|     SDRdaemonFECSettings m_settings;        //!< current settings
 | ||||
|     SDRdaemonFECSettings m_controlSettings; //!< settings last sent to device via control port
 | ||||
|     SDRdaemonSourceSettings m_settings;        //!< current settings
 | ||||
|     SDRdaemonSourceSettings m_controlSettings; //!< settings last sent to device via control port
 | ||||
| 	QTimer m_updateTimer; | ||||
| 	QTimer m_statusTimer; | ||||
| 	DeviceSampleSource* m_sampleSource; | ||||
|  | ||||
| @ -28,16 +28,16 @@ | ||||
| #include "sdrdaemonsourceinput.h" | ||||
| #include "sdrdaemonsourceudphandler.h" | ||||
| 
 | ||||
| MESSAGE_CLASS_DEFINITION(SDRdaemonFECInput::MsgConfigureSDRdaemonFEC, Message) | ||||
| MESSAGE_CLASS_DEFINITION(SDRdaemonFECInput::MsgConfigureSDRdaemonUDPLink, Message) | ||||
| MESSAGE_CLASS_DEFINITION(SDRdaemonFECInput::MsgConfigureSDRdaemonAutoCorr, Message) | ||||
| MESSAGE_CLASS_DEFINITION(SDRdaemonFECInput::MsgConfigureSDRdaemonWork, Message) | ||||
| MESSAGE_CLASS_DEFINITION(SDRdaemonFECInput::MsgConfigureSDRdaemonStreamTiming, Message) | ||||
| MESSAGE_CLASS_DEFINITION(SDRdaemonFECInput::MsgReportSDRdaemonAcquisition, Message) | ||||
| MESSAGE_CLASS_DEFINITION(SDRdaemonFECInput::MsgReportSDRdaemonFECStreamData, Message) | ||||
| MESSAGE_CLASS_DEFINITION(SDRdaemonFECInput::MsgReportSDRdaemonFECStreamTiming, Message) | ||||
| MESSAGE_CLASS_DEFINITION(SDRdaemonSourceInput::MsgConfigureSDRdaemonSource, Message) | ||||
| MESSAGE_CLASS_DEFINITION(SDRdaemonSourceInput::MsgConfigureSDRdaemonUDPLink, Message) | ||||
| MESSAGE_CLASS_DEFINITION(SDRdaemonSourceInput::MsgConfigureSDRdaemonAutoCorr, Message) | ||||
| MESSAGE_CLASS_DEFINITION(SDRdaemonSourceInput::MsgConfigureSDRdaemonWork, Message) | ||||
| MESSAGE_CLASS_DEFINITION(SDRdaemonSourceInput::MsgConfigureSDRdaemonStreamTiming, Message) | ||||
| MESSAGE_CLASS_DEFINITION(SDRdaemonSourceInput::MsgReportSDRdaemonAcquisition, Message) | ||||
| MESSAGE_CLASS_DEFINITION(SDRdaemonSourceInput::MsgReportSDRdaemonSourceStreamData, Message) | ||||
| MESSAGE_CLASS_DEFINITION(SDRdaemonSourceInput::MsgReportSDRdaemonSourceStreamTiming, Message) | ||||
| 
 | ||||
| SDRdaemonFECInput::SDRdaemonFECInput(const QTimer& masterTimer, DeviceSourceAPI *deviceAPI) : | ||||
| SDRdaemonSourceInput::SDRdaemonSourceInput(const QTimer& masterTimer, DeviceSourceAPI *deviceAPI) : | ||||
|     m_deviceAPI(deviceAPI), | ||||
| 	m_address("127.0.0.1"), | ||||
| 	m_port(9090), | ||||
| @ -51,17 +51,17 @@ SDRdaemonFECInput::SDRdaemonFECInput(const QTimer& masterTimer, DeviceSourceAPI | ||||
|     m_autoCorrBuffer(false) | ||||
| { | ||||
| 	m_sampleFifo.setSize(96000 * 4); | ||||
| 	m_SDRdaemonUDPHandler = new SDRdaemonFECUDPHandler(&m_sampleFifo, getOutputMessageQueueToGUI(), m_deviceAPI); | ||||
| 	m_SDRdaemonUDPHandler = new SDRdaemonSourceUDPHandler(&m_sampleFifo, getOutputMessageQueueToGUI(), m_deviceAPI); | ||||
| 	m_SDRdaemonUDPHandler->connectTimer(&m_masterTimer); | ||||
| } | ||||
| 
 | ||||
| SDRdaemonFECInput::~SDRdaemonFECInput() | ||||
| SDRdaemonSourceInput::~SDRdaemonSourceInput() | ||||
| { | ||||
| 	stop(); | ||||
| 	delete m_SDRdaemonUDPHandler; | ||||
| } | ||||
| 
 | ||||
| bool SDRdaemonFECInput::start() | ||||
| bool SDRdaemonSourceInput::start() | ||||
| { | ||||
| 	qDebug() << "SDRdaemonInput::start"; | ||||
| 	MsgConfigureSDRdaemonWork *command = MsgConfigureSDRdaemonWork::create(true); | ||||
| @ -69,34 +69,34 @@ bool SDRdaemonFECInput::start() | ||||
| 	return true; | ||||
| } | ||||
| 
 | ||||
| void SDRdaemonFECInput::stop() | ||||
| void SDRdaemonSourceInput::stop() | ||||
| { | ||||
| 	qDebug() << "SDRdaemonInput::stop"; | ||||
| 	MsgConfigureSDRdaemonWork *command = MsgConfigureSDRdaemonWork::create(false); | ||||
| 	getInputMessageQueue()->push(command); | ||||
| } | ||||
| 
 | ||||
| const QString& SDRdaemonFECInput::getDeviceDescription() const | ||||
| const QString& SDRdaemonSourceInput::getDeviceDescription() const | ||||
| { | ||||
| 	return m_deviceDescription; | ||||
| } | ||||
| 
 | ||||
| int SDRdaemonFECInput::getSampleRate() const | ||||
| int SDRdaemonSourceInput::getSampleRate() const | ||||
| { | ||||
| 	return m_sampleRate; | ||||
| } | ||||
| 
 | ||||
| quint64 SDRdaemonFECInput::getCenterFrequency() const | ||||
| quint64 SDRdaemonSourceInput::getCenterFrequency() const | ||||
| { | ||||
| 	return m_centerFrequency; | ||||
| } | ||||
| 
 | ||||
| std::time_t SDRdaemonFECInput::getStartingTimeStamp() const | ||||
| std::time_t SDRdaemonSourceInput::getStartingTimeStamp() const | ||||
| { | ||||
| 	return m_startingTimeStamp; | ||||
| } | ||||
| 
 | ||||
| void SDRdaemonFECInput::getRemoteAddress(QString &s) | ||||
| void SDRdaemonSourceInput::getRemoteAddress(QString &s) | ||||
| { | ||||
| 	if (m_SDRdaemonUDPHandler) { | ||||
| 		m_SDRdaemonUDPHandler->getRemoteAddress(s); | ||||
| @ -104,9 +104,9 @@ void SDRdaemonFECInput::getRemoteAddress(QString &s) | ||||
| } | ||||
| 
 | ||||
| 
 | ||||
| bool SDRdaemonFECInput::handleMessage(const Message& message) | ||||
| bool SDRdaemonSourceInput::handleMessage(const Message& message) | ||||
| { | ||||
|     if (MsgConfigureSDRdaemonFEC::match(message)) | ||||
|     if (MsgConfigureSDRdaemonSource::match(message)) | ||||
|     { | ||||
|         qDebug() << "SDRdaemonFECInput::handleMessage:" << message.getIdentifier(); | ||||
|         //MsgConfigureSDRdaemonFEC& conf = (MsgConfigureSDRdaemonFEC&) message;
 | ||||
|  | ||||
| @ -27,27 +27,27 @@ | ||||
| #include "sdrdaemonsourcesettings.h" | ||||
| 
 | ||||
| class DeviceSourceAPI; | ||||
| class SDRdaemonFECUDPHandler; | ||||
| class SDRdaemonSourceUDPHandler; | ||||
| 
 | ||||
| class SDRdaemonFECInput : public DeviceSampleSource { | ||||
| class SDRdaemonSourceInput : public DeviceSampleSource { | ||||
| public: | ||||
|     class MsgConfigureSDRdaemonFEC : public Message { | ||||
|     class MsgConfigureSDRdaemonSource : public Message { | ||||
|         MESSAGE_CLASS_DECLARATION | ||||
| 
 | ||||
|     public: | ||||
|         const SDRdaemonFECSettings& getSettings() const { return m_settings; } | ||||
|         const SDRdaemonSourceSettings& getSettings() const { return m_settings; } | ||||
|         bool getForce() const { return m_force; } | ||||
| 
 | ||||
|         static MsgConfigureSDRdaemonFEC* create(const SDRdaemonFECSettings& settings, bool force = false) | ||||
|         static MsgConfigureSDRdaemonSource* create(const SDRdaemonSourceSettings& settings, bool force = false) | ||||
|         { | ||||
|             return new MsgConfigureSDRdaemonFEC(settings, force); | ||||
|             return new MsgConfigureSDRdaemonSource(settings, force); | ||||
|         } | ||||
| 
 | ||||
|     private: | ||||
|         SDRdaemonFECSettings m_settings; | ||||
|         SDRdaemonSourceSettings m_settings; | ||||
|         bool m_force; | ||||
| 
 | ||||
|         MsgConfigureSDRdaemonFEC(const SDRdaemonFECSettings& settings, bool force) : | ||||
|         MsgConfigureSDRdaemonSource(const SDRdaemonSourceSettings& settings, bool force) : | ||||
|             Message(), | ||||
|             m_settings(settings), | ||||
|             m_force(force) | ||||
| @ -156,7 +156,7 @@ public: | ||||
| 		{ } | ||||
| 	}; | ||||
| 
 | ||||
| 	class MsgReportSDRdaemonFECStreamData : public Message { | ||||
| 	class MsgReportSDRdaemonSourceStreamData : public Message { | ||||
| 		MESSAGE_CLASS_DECLARATION | ||||
| 
 | ||||
| 	public: | ||||
| @ -165,9 +165,9 @@ public: | ||||
| 		uint32_t get_tv_sec() const { return m_tv_sec; } | ||||
| 		uint32_t get_tv_usec() const { return m_tv_usec; } | ||||
| 
 | ||||
| 		static MsgReportSDRdaemonFECStreamData* create(int sampleRate, quint64 centerFrequency, uint32_t tv_sec, uint32_t tv_usec) | ||||
| 		static MsgReportSDRdaemonSourceStreamData* create(int sampleRate, quint64 centerFrequency, uint32_t tv_sec, uint32_t tv_usec) | ||||
| 		{ | ||||
| 			return new MsgReportSDRdaemonFECStreamData(sampleRate, centerFrequency, tv_sec, tv_usec); | ||||
| 			return new MsgReportSDRdaemonSourceStreamData(sampleRate, centerFrequency, tv_sec, tv_usec); | ||||
| 		} | ||||
| 
 | ||||
| 	protected: | ||||
| @ -176,7 +176,7 @@ public: | ||||
| 		uint32_t m_tv_sec; | ||||
| 		uint32_t m_tv_usec; | ||||
| 
 | ||||
| 		MsgReportSDRdaemonFECStreamData(int sampleRate, quint64 centerFrequency, uint32_t tv_sec, uint32_t tv_usec) : | ||||
| 		MsgReportSDRdaemonSourceStreamData(int sampleRate, quint64 centerFrequency, uint32_t tv_sec, uint32_t tv_usec) : | ||||
| 			Message(), | ||||
| 			m_sampleRate(sampleRate), | ||||
| 			m_centerFrequency(centerFrequency), | ||||
| @ -185,7 +185,7 @@ public: | ||||
| 		{ } | ||||
| 	}; | ||||
| 
 | ||||
| 	class MsgReportSDRdaemonFECStreamTiming : public Message { | ||||
| 	class MsgReportSDRdaemonSourceStreamTiming : public Message { | ||||
| 		MESSAGE_CLASS_DECLARATION | ||||
| 
 | ||||
| 	public: | ||||
| @ -204,7 +204,7 @@ public: | ||||
|         int getNbOriginalBlocksPerFrame() const { return m_nbOriginalBlocksPerFrame; } | ||||
|         int getNbFECBlocksPerFrame() const { return m_nbFECBlocksPerFrame; } | ||||
| 
 | ||||
| 		static MsgReportSDRdaemonFECStreamTiming* create(uint32_t tv_sec, | ||||
| 		static MsgReportSDRdaemonSourceStreamTiming* create(uint32_t tv_sec, | ||||
| 				uint32_t tv_usec, | ||||
| 				float bufferLenSec, | ||||
|                 int32_t bufferGauge, | ||||
| @ -219,7 +219,7 @@ public: | ||||
|                 int nbOriginalBlocksPerFrame, | ||||
|                 int nbFECBlocksPerFrame) | ||||
| 		{ | ||||
| 			return new MsgReportSDRdaemonFECStreamTiming(tv_sec, | ||||
| 			return new MsgReportSDRdaemonSourceStreamTiming(tv_sec, | ||||
| 					tv_usec, | ||||
| 					bufferLenSec, | ||||
|                     bufferGauge, | ||||
| @ -251,7 +251,7 @@ public: | ||||
|         int      m_nbOriginalBlocksPerFrame; | ||||
|         int      m_nbFECBlocksPerFrame; | ||||
| 
 | ||||
| 		MsgReportSDRdaemonFECStreamTiming(uint32_t tv_sec, | ||||
| 		MsgReportSDRdaemonSourceStreamTiming(uint32_t tv_sec, | ||||
| 				uint32_t tv_usec, | ||||
| 				float bufferLenSec, | ||||
|                 int32_t bufferGauge, | ||||
| @ -283,8 +283,8 @@ public: | ||||
| 		{ } | ||||
| 	}; | ||||
| 
 | ||||
| 	SDRdaemonFECInput(const QTimer& masterTimer, DeviceSourceAPI *deviceAPI); | ||||
| 	virtual ~SDRdaemonFECInput(); | ||||
| 	SDRdaemonSourceInput(const QTimer& masterTimer, DeviceSourceAPI *deviceAPI); | ||||
| 	virtual ~SDRdaemonSourceInput(); | ||||
| 
 | ||||
| 	virtual bool start(); | ||||
| 	virtual void stop(); | ||||
| @ -302,7 +302,7 @@ private: | ||||
| 	QMutex m_mutex; | ||||
| 	QString m_address; | ||||
| 	quint16 m_port; | ||||
| 	SDRdaemonFECUDPHandler* m_SDRdaemonUDPHandler; | ||||
| 	SDRdaemonSourceUDPHandler* m_SDRdaemonUDPHandler; | ||||
| 	QString m_deviceDescription; | ||||
| 	int m_sampleRate; | ||||
| 	quint64 m_centerFrequency; | ||||
|  | ||||
| @ -24,8 +24,8 @@ | ||||
| #include "sdrdaemonsourcegui.h" | ||||
| #include "sdrdaemonsourceplugin.h" | ||||
| 
 | ||||
| const PluginDescriptor SDRdaemonFECPlugin::m_pluginDescriptor = { | ||||
| 	QString("SDRdaemon with FEC input"), | ||||
| const PluginDescriptor SDRdaemonSourcePlugin::m_pluginDescriptor = { | ||||
| 	QString("SDRdaemon source input"), | ||||
| 	QString("3.5.0"), | ||||
| 	QString("(c) Edouard Griffiths, F4EXB"), | ||||
| 	QString("https://github.com/f4exb/sdrangel"), | ||||
| @ -33,32 +33,32 @@ const PluginDescriptor SDRdaemonFECPlugin::m_pluginDescriptor = { | ||||
| 	QString("https://github.com/f4exb/sdrangel") | ||||
| }; | ||||
| 
 | ||||
| const QString SDRdaemonFECPlugin::m_hardwareID = "SDRdaemonFEC"; | ||||
| const QString SDRdaemonFECPlugin::m_deviceTypeID = SDRDAEMONFEC_DEVICE_TYPE_ID; | ||||
| const QString SDRdaemonSourcePlugin::m_hardwareID = "SDRdaemonSource"; | ||||
| const QString SDRdaemonSourcePlugin::m_deviceTypeID = SDRDAEMONSOURCE_DEVICE_TYPE_ID; | ||||
| 
 | ||||
| SDRdaemonFECPlugin::SDRdaemonFECPlugin(QObject* parent) : | ||||
| SDRdaemonSourcePlugin::SDRdaemonSourcePlugin(QObject* parent) : | ||||
| 	QObject(parent) | ||||
| { | ||||
| } | ||||
| 
 | ||||
| const PluginDescriptor& SDRdaemonFECPlugin::getPluginDescriptor() const | ||||
| const PluginDescriptor& SDRdaemonSourcePlugin::getPluginDescriptor() const | ||||
| { | ||||
| 	return m_pluginDescriptor; | ||||
| } | ||||
| 
 | ||||
| void SDRdaemonFECPlugin::initPlugin(PluginAPI* pluginAPI) | ||||
| void SDRdaemonSourcePlugin::initPlugin(PluginAPI* pluginAPI) | ||||
| { | ||||
| 	pluginAPI->registerSampleSource(m_deviceTypeID, this); | ||||
| } | ||||
| 
 | ||||
| PluginInterface::SamplingDevices SDRdaemonFECPlugin::enumSampleSources() | ||||
| PluginInterface::SamplingDevices SDRdaemonSourcePlugin::enumSampleSources() | ||||
| { | ||||
| 	SamplingDevices result; | ||||
| 	int count = 1; | ||||
| 
 | ||||
| 	for(int i = 0; i < count; i++) | ||||
| 	{ | ||||
| 		QString displayedName(QString("SDRdaemonFEC[%1]").arg(i)); | ||||
| 		QString displayedName(QString("SDRdaemonSource[%1]").arg(i)); | ||||
| 
 | ||||
| 		result.append(SamplingDevice(displayedName, | ||||
| 		        m_hardwareID, | ||||
| @ -70,11 +70,11 @@ PluginInterface::SamplingDevices SDRdaemonFECPlugin::enumSampleSources() | ||||
| 	return result; | ||||
| } | ||||
| 
 | ||||
| PluginGUI* SDRdaemonFECPlugin::createSampleSourcePluginGUI(const QString& sourceId, QWidget **widget, DeviceSourceAPI *deviceAPI) | ||||
| PluginGUI* SDRdaemonSourcePlugin::createSampleSourcePluginGUI(const QString& sourceId, QWidget **widget, DeviceSourceAPI *deviceAPI) | ||||
| { | ||||
| 	if(sourceId == m_deviceTypeID) | ||||
| 	{ | ||||
| 		SDRdaemonFECGui* gui = new SDRdaemonFECGui(deviceAPI); | ||||
| 		SDRdaemonSourceGui* gui = new SDRdaemonSourceGui(deviceAPI); | ||||
| 		*widget = gui; | ||||
| 		return gui; | ||||
| 	} | ||||
|  | ||||
| @ -20,17 +20,17 @@ | ||||
| #include <QObject> | ||||
| #include "plugin/plugininterface.h" | ||||
| 
 | ||||
| #define SDRDAEMONFEC_DEVICE_TYPE_ID "sdrangel.samplesource.sdrdaemonfec" | ||||
| #define SDRDAEMONSOURCE_DEVICE_TYPE_ID "sdrangel.samplesource.sdrdaemonsource" | ||||
| 
 | ||||
| class PluginAPI; | ||||
| 
 | ||||
| class SDRdaemonFECPlugin : public QObject, public PluginInterface { | ||||
| class SDRdaemonSourcePlugin : public QObject, public PluginInterface { | ||||
| 	Q_OBJECT | ||||
| 	Q_INTERFACES(PluginInterface) | ||||
| 	Q_PLUGIN_METADATA(IID SDRDAEMONFEC_DEVICE_TYPE_ID) | ||||
| 	Q_PLUGIN_METADATA(IID SDRDAEMONSOURCE_DEVICE_TYPE_ID) | ||||
| 
 | ||||
| public: | ||||
| 	explicit SDRdaemonFECPlugin(QObject* parent = NULL); | ||||
| 	explicit SDRdaemonSourcePlugin(QObject* parent = NULL); | ||||
| 
 | ||||
| 	const PluginDescriptor& getPluginDescriptor() const; | ||||
| 	void initPlugin(PluginAPI* pluginAPI); | ||||
|  | ||||
| @ -17,12 +17,12 @@ | ||||
| #include "util/simpleserializer.h" | ||||
| #include "sdrdaemonsourcesettings.h" | ||||
| 
 | ||||
| SDRdaemonFECSettings::SDRdaemonFECSettings() | ||||
| SDRdaemonSourceSettings::SDRdaemonSourceSettings() | ||||
| { | ||||
|     resetToDefaults(); | ||||
| } | ||||
| 
 | ||||
| void SDRdaemonFECSettings::resetToDefaults() | ||||
| void SDRdaemonSourceSettings::resetToDefaults() | ||||
| { | ||||
|     m_centerFrequency = 435000*1000; | ||||
|     m_sampleRate = 256000; | ||||
| @ -38,7 +38,7 @@ void SDRdaemonFECSettings::resetToDefaults() | ||||
|     m_fcPos = 2; // center
 | ||||
| } | ||||
| 
 | ||||
| QByteArray SDRdaemonFECSettings::serialize() const | ||||
| QByteArray SDRdaemonSourceSettings::serialize() const | ||||
| { | ||||
|     SimpleSerializer s(1); | ||||
| 
 | ||||
| @ -57,7 +57,7 @@ QByteArray SDRdaemonFECSettings::serialize() const | ||||
|     return s.final(); | ||||
| } | ||||
| 
 | ||||
| bool SDRdaemonFECSettings::deserialize(const QByteArray& data) | ||||
| bool SDRdaemonSourceSettings::deserialize(const QByteArray& data) | ||||
| { | ||||
|     SimpleDeserializer d(data); | ||||
| 
 | ||||
|  | ||||
| @ -20,7 +20,7 @@ | ||||
| #include <QByteArray> | ||||
| #include <QString> | ||||
| 
 | ||||
| struct SDRdaemonFECSettings { | ||||
| struct SDRdaemonSourceSettings { | ||||
|     quint64 m_centerFrequency; | ||||
|     quint64 m_sampleRate; | ||||
|     quint32 m_log2Decim; | ||||
| @ -34,7 +34,7 @@ struct SDRdaemonFECSettings { | ||||
|     bool    m_iqCorrection; | ||||
|     quint32 m_fcPos; | ||||
| 
 | ||||
|     SDRdaemonFECSettings(); | ||||
|     SDRdaemonSourceSettings(); | ||||
|     void resetToDefaults(); | ||||
|     QByteArray serialize() const; | ||||
|     bool deserialize(const QByteArray& data); | ||||
|  | ||||
| @ -26,7 +26,7 @@ | ||||
| #include "sdrdaemonsourceinput.h" | ||||
| #include "sdrdaemonsourceudphandler.h" | ||||
| 
 | ||||
| SDRdaemonFECUDPHandler::SDRdaemonFECUDPHandler(SampleSinkFifo *sampleFifo, MessageQueue *outputMessageQueueToGUI, DeviceSourceAPI *devieAPI) : | ||||
| SDRdaemonSourceUDPHandler::SDRdaemonSourceUDPHandler(SampleSinkFifo *sampleFifo, MessageQueue *outputMessageQueueToGUI, DeviceSourceAPI *devieAPI) : | ||||
|     m_deviceAPI(devieAPI), | ||||
| 	m_sdrDaemonBuffer(m_rateDivider), | ||||
| 	m_dataSocket(0), | ||||
| @ -45,17 +45,17 @@ SDRdaemonFECUDPHandler::SDRdaemonFECUDPHandler(SampleSinkFifo *sampleFifo, Messa | ||||
| 	m_tickCount(0), | ||||
| 	m_samplesCount(0), | ||||
| 	m_timer(0), | ||||
|     m_throttlems(SDRDAEMONFEC_THROTTLE_MS), | ||||
|     m_throttlems(SDRDAEMONSOURCE_THROTTLE_MS), | ||||
|     m_readLengthSamples(0), | ||||
|     m_readLength(0), | ||||
|     m_throttleToggle(false), | ||||
|     m_rateDivider(1000/SDRDAEMONFEC_THROTTLE_MS), | ||||
|     m_rateDivider(1000/SDRDAEMONSOURCE_THROTTLE_MS), | ||||
| 	m_autoCorrBuffer(true) | ||||
| { | ||||
|     m_udpBuf = new char[SDRdaemonFECBuffer::m_udpPayloadSize]; | ||||
|     m_udpBuf = new char[SDRdaemonSourceBuffer::m_udpPayloadSize]; | ||||
| } | ||||
| 
 | ||||
| SDRdaemonFECUDPHandler::~SDRdaemonFECUDPHandler() | ||||
| SDRdaemonSourceUDPHandler::~SDRdaemonSourceUDPHandler() | ||||
| { | ||||
| 	stop(); | ||||
| 	delete[] m_udpBuf; | ||||
| @ -66,7 +66,7 @@ SDRdaemonFECUDPHandler::~SDRdaemonFECUDPHandler() | ||||
| #endif | ||||
| } | ||||
| 
 | ||||
| void SDRdaemonFECUDPHandler::start() | ||||
| void SDRdaemonSourceUDPHandler::start() | ||||
| { | ||||
| 	qDebug("SDRdaemonFECUDPHandler::start"); | ||||
| 
 | ||||
| @ -98,7 +98,7 @@ void SDRdaemonFECUDPHandler::start() | ||||
|     m_elapsedTimer.start(); | ||||
| } | ||||
| 
 | ||||
| void SDRdaemonFECUDPHandler::stop() | ||||
| void SDRdaemonSourceUDPHandler::stop() | ||||
| { | ||||
| 	qDebug("SDRdaemonFECUDPHandler::stop"); | ||||
| 
 | ||||
| @ -115,7 +115,7 @@ void SDRdaemonFECUDPHandler::stop() | ||||
| 	} | ||||
| } | ||||
| 
 | ||||
| void SDRdaemonFECUDPHandler::configureUDPLink(const QString& address, quint16 port) | ||||
| void SDRdaemonSourceUDPHandler::configureUDPLink(const QString& address, quint16 port) | ||||
| { | ||||
| 	qDebug("SDRdaemonFECUDPHandler::configureUDPLink: %s:%d", address.toStdString().c_str(), port); | ||||
| 	bool addressOK = m_dataAddress.setAddress(address); | ||||
| @ -131,7 +131,7 @@ void SDRdaemonFECUDPHandler::configureUDPLink(const QString& address, quint16 po | ||||
| 	start(); | ||||
| } | ||||
| 
 | ||||
| void SDRdaemonFECUDPHandler::dataReadyRead() | ||||
| void SDRdaemonSourceUDPHandler::dataReadyRead() | ||||
| { | ||||
|     m_udpReadBytes = 0; | ||||
| 
 | ||||
| @ -140,17 +140,17 @@ void SDRdaemonFECUDPHandler::dataReadyRead() | ||||
| 		qint64 pendingDataSize = m_dataSocket->pendingDatagramSize(); | ||||
| 		m_udpReadBytes += m_dataSocket->readDatagram(&m_udpBuf[m_udpReadBytes], pendingDataSize, &m_remoteAddress, 0); | ||||
| 
 | ||||
| 		if (m_udpReadBytes == SDRdaemonFECBuffer::m_udpPayloadSize) { | ||||
| 		if (m_udpReadBytes == SDRdaemonSourceBuffer::m_udpPayloadSize) { | ||||
| 		    processData(); | ||||
| 		    m_udpReadBytes = 0; | ||||
| 		} | ||||
| 	} | ||||
| } | ||||
| 
 | ||||
| void SDRdaemonFECUDPHandler::processData() | ||||
| void SDRdaemonSourceUDPHandler::processData() | ||||
| { | ||||
|     m_sdrDaemonBuffer.writeData(m_udpBuf); | ||||
|     const SDRdaemonFECBuffer::MetaDataFEC& metaData =  m_sdrDaemonBuffer.getCurrentMeta(); | ||||
|     const SDRdaemonSourceBuffer::MetaDataFEC& metaData =  m_sdrDaemonBuffer.getCurrentMeta(); | ||||
| 
 | ||||
|     bool change = false; | ||||
| //    m_tv_sec = metaData.m_tv_sec;
 | ||||
| @ -174,7 +174,7 @@ void SDRdaemonFECUDPHandler::processData() | ||||
|     { | ||||
|         DSPSignalNotification *notif = new DSPSignalNotification(m_samplerate, m_centerFrequency * 1000); // Frequency in Hz for the DSP engine
 | ||||
|         m_deviceAPI->getDeviceInputMessageQueue()->push(notif); | ||||
|         SDRdaemonFECInput::MsgReportSDRdaemonFECStreamData *report = SDRdaemonFECInput::MsgReportSDRdaemonFECStreamData::create( | ||||
|         SDRdaemonSourceInput::MsgReportSDRdaemonSourceStreamData *report = SDRdaemonSourceInput::MsgReportSDRdaemonSourceStreamData::create( | ||||
|             m_samplerate, | ||||
|             m_centerFrequency * 1000, // Frequency in Hz for the GUI
 | ||||
|             m_tv_sec, | ||||
| @ -183,7 +183,7 @@ void SDRdaemonFECUDPHandler::processData() | ||||
|     } | ||||
| } | ||||
| 
 | ||||
| void SDRdaemonFECUDPHandler::connectTimer(const QTimer* timer) | ||||
| void SDRdaemonSourceUDPHandler::connectTimer(const QTimer* timer) | ||||
| { | ||||
| 	qDebug() << "SDRdaemonFECUDPHandler::connectTimer"; | ||||
| #ifdef USE_INTERNAL_TIMER | ||||
| @ -199,7 +199,7 @@ void SDRdaemonFECUDPHandler::connectTimer(const QTimer* timer) | ||||
|     m_rateDivider = 1000 / m_throttlems; | ||||
| } | ||||
| 
 | ||||
| void SDRdaemonFECUDPHandler::tick() | ||||
| void SDRdaemonSourceUDPHandler::tick() | ||||
| { | ||||
|     // auto throttling
 | ||||
|     int throttlems = m_elapsedTimer.restart(); | ||||
| @ -215,7 +215,7 @@ void SDRdaemonFECUDPHandler::tick() | ||||
|         m_readLengthSamples += m_sdrDaemonBuffer.getRWBalanceCorrection(); | ||||
|     } | ||||
| 
 | ||||
|     m_readLength = m_readLengthSamples * SDRdaemonFECBuffer::m_iqSampleSize; | ||||
|     m_readLength = m_readLengthSamples * SDRdaemonSourceBuffer::m_iqSampleSize; | ||||
| 
 | ||||
|     // read samples directly feeding the SampleFifo (no callback)
 | ||||
|     m_sampleFifo->write(reinterpret_cast<quint8*>(m_sdrDaemonBuffer.readData(m_readLength)), m_readLength); | ||||
| @ -243,7 +243,7 @@ void SDRdaemonFECUDPHandler::tick() | ||||
| 			framesDecodingStatus = 2; | ||||
| 		} | ||||
| 
 | ||||
| 		SDRdaemonFECInput::MsgReportSDRdaemonFECStreamTiming *report = SDRdaemonFECInput::MsgReportSDRdaemonFECStreamTiming::create( | ||||
| 		SDRdaemonSourceInput::MsgReportSDRdaemonSourceStreamTiming *report = SDRdaemonSourceInput::MsgReportSDRdaemonSourceStreamTiming::create( | ||||
| 			m_tv_sec, | ||||
| 			m_tv_usec, | ||||
| 			m_sdrDaemonBuffer.getBufferLengthInSecs(), | ||||
|  | ||||
| @ -25,31 +25,31 @@ | ||||
| 
 | ||||
| #include "sdrdaemonsourcebuffer.h" | ||||
| 
 | ||||
| #define SDRDAEMONFEC_THROTTLE_MS 50 | ||||
| #define SDRDAEMONSOURCE_THROTTLE_MS 50 | ||||
| 
 | ||||
| class SampleSinkFifo; | ||||
| class MessageQueue; | ||||
| class QTimer; | ||||
| class DeviceSourceAPI; | ||||
| 
 | ||||
| class SDRdaemonFECUDPHandler : public QObject | ||||
| class SDRdaemonSourceUDPHandler : public QObject | ||||
| { | ||||
| 	Q_OBJECT | ||||
| public: | ||||
| 	SDRdaemonFECUDPHandler(SampleSinkFifo* sampleFifo, MessageQueue *outputMessageQueueToGUI, DeviceSourceAPI *deviceAPI); | ||||
| 	~SDRdaemonFECUDPHandler(); | ||||
| 	SDRdaemonSourceUDPHandler(SampleSinkFifo* sampleFifo, MessageQueue *outputMessageQueueToGUI, DeviceSourceAPI *deviceAPI); | ||||
| 	~SDRdaemonSourceUDPHandler(); | ||||
| 	void connectTimer(const QTimer* timer); | ||||
| 	void start(); | ||||
| 	void stop(); | ||||
| 	void configureUDPLink(const QString& address, quint16 port); | ||||
| 	void getRemoteAddress(QString& s) const { s = m_remoteAddress.toString(); } | ||||
|     int getNbOriginalBlocks() const { return SDRdaemonFECBuffer::m_nbOriginalBlocks; } | ||||
|     int getNbOriginalBlocks() const { return SDRdaemonSourceBuffer::m_nbOriginalBlocks; } | ||||
| public slots: | ||||
| 	void dataReadyRead(); | ||||
| 
 | ||||
| private: | ||||
| 	DeviceSourceAPI *m_deviceAPI; | ||||
| 	SDRdaemonFECBuffer m_sdrDaemonBuffer; | ||||
| 	SDRdaemonSourceBuffer m_sdrDaemonBuffer; | ||||
| 	QUdpSocket *m_dataSocket; | ||||
| 	QHostAddress m_dataAddress; | ||||
| 	QHostAddress m_remoteAddress; | ||||
|  | ||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user