mirror of
https://github.com/f4exb/sdrangel.git
synced 2024-12-23 01:55:48 -05: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…
Reference in New Issue
Block a user