diff --git a/plugins/channeltx/daemonsrc/daemonsrc.cpp b/plugins/channeltx/daemonsrc/daemonsrc.cpp
index 52fefbf09..e6f711ca1 100644
--- a/plugins/channeltx/daemonsrc/daemonsrc.cpp
+++ b/plugins/channeltx/daemonsrc/daemonsrc.cpp
@@ -299,10 +299,6 @@ void DaemonSrc::handleDataBlock(SDRDaemonDataBlock* dataBlock __attribute__((unu
{
printMeta("DaemonSrc::handleDataBlock", metaData);
- if (m_currentMeta.m_centerFrequency != metaData->m_centerFrequency) {
- m_deviceAPI->getSampleSink()->setCenterFrequency(metaData->m_centerFrequency*1000); // frequency is in kHz
- }
-
if (m_currentMeta.m_sampleRate != metaData->m_sampleRate)
{
m_channelizer->configure(m_channelizer->getInputMessageQueue(), metaData->m_sampleRate, 0);
diff --git a/plugins/channeltx/daemonsrc/daemonsrcgui.cpp b/plugins/channeltx/daemonsrc/daemonsrcgui.cpp
index 2b95ada47..003262f6a 100644
--- a/plugins/channeltx/daemonsrc/daemonsrcgui.cpp
+++ b/plugins/channeltx/daemonsrc/daemonsrcgui.cpp
@@ -96,7 +96,6 @@ bool DaemonSrcGUI::handleMessage(const Message& message)
else if (DaemonSrc::MsgReportStreamData::match(message))
{
const DaemonSrc::MsgReportStreamData& report = (DaemonSrc::MsgReportStreamData&) message;
- ui->centerFrequency->setText(QString("%1").arg(report.get_centerFreq()));
ui->sampleRate->setText(QString("%1").arg(report.get_sampleRate()));
QString nominalNbBlocksText = QString("%1/%2")
.arg(report.get_nbOriginalBlocks() + report.get_nbFECBlocks())
diff --git a/plugins/channeltx/daemonsrc/daemonsrcgui.ui b/plugins/channeltx/daemonsrc/daemonsrcgui.ui
index 611064c00..3b4ee8bdd 100644
--- a/plugins/channeltx/daemonsrc/daemonsrcgui.ui
+++ b/plugins/channeltx/daemonsrc/daemonsrcgui.ui
@@ -158,52 +158,6 @@
-
-
-
-
-
- Freq
-
-
-
- -
-
-
-
- 60
- 0
-
-
-
- Stream center frequency setting
-
-
- 00000000
-
-
- Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter
-
-
-
- -
-
-
- kHz
-
-
-
- -
-
-
- Qt::Horizontal
-
-
-
- 40
- 20
-
-
-
-
-
@@ -237,6 +191,19 @@
+ -
+
+
+ Qt::Horizontal
+
+
+
+ 40
+ 20
+
+
+
+
-
diff --git a/plugins/samplesink/sdrdaemonsink/sdrdaemonsinkgui.cpp b/plugins/samplesink/sdrdaemonsink/sdrdaemonsinkgui.cpp
index a11fcb007..80cb47f24 100644
--- a/plugins/samplesink/sdrdaemonsink/sdrdaemonsinkgui.cpp
+++ b/plugins/samplesink/sdrdaemonsink/sdrdaemonsinkgui.cpp
@@ -46,6 +46,7 @@ SDRdaemonSinkGui::SDRdaemonSinkGui(DeviceUISet *deviceUISet, QWidget* parent) :
m_deviceUISet(deviceUISet),
m_settings(),
m_deviceSampleSink(0),
+ m_deviceCenterFrequency(0),
m_samplesCount(0),
m_tickCount(0),
m_nbSinceLastFlowCheck(0),
@@ -86,6 +87,8 @@ SDRdaemonSinkGui::SDRdaemonSinkGui(DeviceUISet *deviceUISet, QWidget* parent) :
m_networkManager = new QNetworkAccessManager();
connect(m_networkManager, SIGNAL(finished(QNetworkReply*)), this, SLOT(networkManagerFinished(QNetworkReply*)));
+ m_deviceUISet->getSpectrum()->setCenterFrequency(m_deviceCenterFrequency);
+
m_time.start();
displayEventCounts();
displayEventTimer();
@@ -130,18 +133,6 @@ void SDRdaemonSinkGui::resetToDefaults()
sendSettings();
}
-qint64 SDRdaemonSinkGui::getCenterFrequency() const
-{
- return m_settings.m_centerFrequency;
-}
-
-void SDRdaemonSinkGui::setCenterFrequency(qint64 centerFrequency)
-{
- m_settings.m_centerFrequency = centerFrequency;
- displaySettings();
- sendSettings();
-}
-
QByteArray SDRdaemonSinkGui::serialize() const
{
return m_settings.serialize();
@@ -201,9 +192,8 @@ void SDRdaemonSinkGui::handleInputMessages()
{
DSPSignalNotification* notif = (DSPSignalNotification*) message;
m_sampleRate = notif->getSampleRate();
- m_deviceCenterFrequency = notif->getCenterFrequency();
qDebug("SDRdaemonSinkGui::handleInputMessages: DSPSignalNotification: SampleRate:%d, CenterFrequency:%llu", notif->getSampleRate(), notif->getCenterFrequency());
- updateSampleRateAndFrequency();
+ updateSampleRate();
delete message;
}
@@ -216,10 +206,9 @@ void SDRdaemonSinkGui::handleInputMessages()
}
}
-void SDRdaemonSinkGui::updateSampleRateAndFrequency()
+void SDRdaemonSinkGui::updateSampleRate()
{
m_deviceUISet->getSpectrum()->setSampleRate(m_sampleRate);
- m_deviceUISet->getSpectrum()->setCenterFrequency(m_deviceCenterFrequency);
ui->deviceRateText->setText(tr("%1k").arg((float)(m_sampleRate) / 1000));
}
@@ -232,7 +221,7 @@ void SDRdaemonSinkGui::updateTxDelayTooltip()
void SDRdaemonSinkGui::displaySettings()
{
blockApplySettings(true);
- ui->centerFrequency->setValue(m_settings.m_centerFrequency / 1000);
+ ui->centerFrequency->setValue(m_deviceCenterFrequency / 1000);
ui->sampleRate->setValue(m_settings.m_sampleRate);
ui->txDelay->setValue(m_settings.m_txDelay*100);
ui->txDelayText->setText(tr("%1").arg(m_settings.m_txDelay*100));
@@ -296,12 +285,6 @@ void SDRdaemonSinkGui::updateStatus()
}
}
-void SDRdaemonSinkGui::on_centerFrequency_changed(quint64 value)
-{
- m_settings.m_centerFrequency = value * 1000;
- sendSettings();
-}
-
void SDRdaemonSinkGui::on_sampleRate_changed(quint64 value)
{
m_settings.m_sampleRate = value;
@@ -558,6 +541,11 @@ void SDRdaemonSinkGui::analyzeApiReply(const QJsonObject& jsonObject)
if (jsonObject.contains("DaemonSourceReport"))
{
QJsonObject report = jsonObject["DaemonSourceReport"].toObject();
+ m_deviceCenterFrequency = report["deviceCenterFreq"].toInt() * 1000;
+ m_deviceUISet->getSpectrum()->setCenterFrequency(m_deviceCenterFrequency);
+ ui->centerFrequency->setValue(m_deviceCenterFrequency/1000);
+ int remoteRate = report["deviceSampleRate"].toInt();
+ ui->remoteRateText->setText(tr("%1k").arg((float)(remoteRate) / 1000));
int queueSize = report["queueSize"].toInt();
queueSize = queueSize == 0 ? 10 : queueSize;
int queueLength = report["queueLength"].toInt();
diff --git a/plugins/samplesink/sdrdaemonsink/sdrdaemonsinkgui.h b/plugins/samplesink/sdrdaemonsink/sdrdaemonsinkgui.h
index 683a13774..186a012f6 100644
--- a/plugins/samplesink/sdrdaemonsink/sdrdaemonsinkgui.h
+++ b/plugins/samplesink/sdrdaemonsink/sdrdaemonsinkgui.h
@@ -80,8 +80,8 @@ public:
QString getName() const;
void resetToDefaults();
- virtual qint64 getCenterFrequency() const;
- virtual void setCenterFrequency(qint64 centerFrequency);
+ virtual qint64 getCenterFrequency() const { return m_deviceCenterFrequency; }
+ virtual void setCenterFrequency(qint64 centerFrequency __attribute__((unused))) {}
QByteArray serialize() const;
bool deserialize(const QByteArray& data);
virtual MessageQueue *getInputMessageQueue() { return &m_inputMessageQueue; }
@@ -128,7 +128,7 @@ private:
void displayTime();
void sendControl(bool force = false);
void sendSettings();
- void updateSampleRateAndFrequency();
+ void updateSampleRate();
void updateTxDelayTooltip();
void displayEventCounts();
void displayEventStatus(int recoverableCount, int unrecoverableCount);
diff --git a/plugins/samplesink/sdrdaemonsink/sdrdaemonsinkgui.ui b/plugins/samplesink/sdrdaemonsink/sdrdaemonsinkgui.ui
index 9e8e6680a..760a65de5 100644
--- a/plugins/samplesink/sdrdaemonsink/sdrdaemonsinkgui.ui
+++ b/plugins/samplesink/sdrdaemonsink/sdrdaemonsinkgui.ui
@@ -2,6 +2,9 @@
SDRdaemonSinkGui
+
+ true
+
0
@@ -114,7 +117,7 @@
-
- true
+ false
@@ -146,24 +149,42 @@
-
-
-
- kHz
-
-
-
- -
-
-
- Qt::Horizontal
-
-
-
- 0
- 0
-
-
-
+
+
-
+
+
-
+
+
+ kHz
+
+
+
+
+
+ -
+
+
-
+
+
+
+ 50
+ 0
+
+
+
+ Remote baseband sample rate
+
+
+ 00000k
+
+
+ Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter
+
+
+
+
+
+
diff --git a/plugins/samplesink/sdrdaemonsink/sdrdaemonsinkoutput.cpp b/plugins/samplesink/sdrdaemonsink/sdrdaemonsinkoutput.cpp
index 026e1c112..064dfcfe5 100644
--- a/plugins/samplesink/sdrdaemonsink/sdrdaemonsinkoutput.cpp
+++ b/plugins/samplesink/sdrdaemonsink/sdrdaemonsinkoutput.cpp
@@ -47,6 +47,7 @@ const uint32_t SDRdaemonSinkOutput::NbSamplesForRateCorrection = 5000000;
SDRdaemonSinkOutput::SDRdaemonSinkOutput(DeviceSinkAPI *deviceAPI) :
m_deviceAPI(deviceAPI),
m_settings(),
+ m_centerFrequency(0),
m_sdrDaemonSinkThread(0),
m_deviceDescription("SDRdaemonSink"),
m_startingTimeStamp(0),
@@ -85,7 +86,6 @@ bool SDRdaemonSinkOutput::start()
m_sdrDaemonSinkThread = new SDRdaemonSinkThread(&m_sampleSourceFifo);
m_sdrDaemonSinkThread->setDataAddress(m_settings.m_dataAddress, m_settings.m_dataPort);
- m_sdrDaemonSinkThread->setCenterFrequency(m_settings.m_centerFrequency);
m_sdrDaemonSinkThread->setSamplerate(m_settings.m_sampleRate);
m_sdrDaemonSinkThread->setNbBlocksFEC(m_settings.m_nbFECBlocks);
m_sdrDaemonSinkThread->connectTimer(m_masterTimer);
@@ -161,22 +161,7 @@ int SDRdaemonSinkOutput::getSampleRate() const
quint64 SDRdaemonSinkOutput::getCenterFrequency() const
{
- return m_settings.m_centerFrequency;
-}
-
-void SDRdaemonSinkOutput::setCenterFrequency(qint64 centerFrequency)
-{
- SDRdaemonSinkSettings settings = m_settings;
- settings.m_centerFrequency = centerFrequency;
-
- MsgConfigureSDRdaemonSink* message = MsgConfigureSDRdaemonSink::create(settings, false);
- m_inputMessageQueue.push(message);
-
- if (m_guiMessageQueue)
- {
- MsgConfigureSDRdaemonSink* messageToGUI = MsgConfigureSDRdaemonSink::create(settings, false);
- m_guiMessageQueue->push(messageToGUI);
- }
+ return m_centerFrequency;
}
std::time_t SDRdaemonSinkOutput::getStartingTimeStamp() const
@@ -262,15 +247,6 @@ void SDRdaemonSinkOutput::applySettings(const SDRdaemonSinkSettings& settings, b
}
}
- if (force || (m_settings.m_centerFrequency != settings.m_centerFrequency))
- {
- if (m_sdrDaemonSinkThread != 0) {
- m_sdrDaemonSinkThread->setCenterFrequency(settings.m_centerFrequency);
- }
-
- forwardChange = true;
- }
-
if (force || (m_settings.m_sampleRate != settings.m_sampleRate))
{
if (m_sdrDaemonSinkThread != 0) {
@@ -316,7 +292,6 @@ void SDRdaemonSinkOutput::applySettings(const SDRdaemonSinkSettings& settings, b
mutexLocker.unlock();
qDebug() << "SDRdaemonSinkOutput::applySettings:"
- << " m_centerFrequency: " << settings.m_centerFrequency
<< " m_sampleRate: " << settings.m_sampleRate
<< " m_txDelay: " << settings.m_txDelay
<< " m_nbFECBlocks: " << settings.m_nbFECBlocks
@@ -327,7 +302,7 @@ void SDRdaemonSinkOutput::applySettings(const SDRdaemonSinkSettings& settings, b
if (forwardChange)
{
- DSPSignalNotification *notif = new DSPSignalNotification(settings.m_sampleRate, settings.m_centerFrequency);
+ DSPSignalNotification *notif = new DSPSignalNotification(settings.m_sampleRate, m_centerFrequency);
m_deviceAPI->getDeviceEngineInputMessageQueue()->push(notif);
}
@@ -378,9 +353,6 @@ int SDRdaemonSinkOutput::webapiSettingsPutPatch(
{
SDRdaemonSinkSettings settings = m_settings;
- if (deviceSettingsKeys.contains("centerFrequency")) {
- settings.m_centerFrequency = response.getSdrDaemonSinkSettings()->getCenterFrequency();
- }
if (deviceSettingsKeys.contains("sampleRate")) {
settings.m_sampleRate = response.getSdrDaemonSinkSettings()->getSampleRate();
}
@@ -434,7 +406,7 @@ int SDRdaemonSinkOutput::webapiReportGet(
void SDRdaemonSinkOutput::webapiFormatDeviceSettings(SWGSDRangel::SWGDeviceSettings& response, const SDRdaemonSinkSettings& settings)
{
- response.getSdrDaemonSinkSettings()->setCenterFrequency(settings.m_centerFrequency);
+ response.getSdrDaemonSinkSettings()->setCenterFrequency(m_centerFrequency);
response.getSdrDaemonSinkSettings()->setSampleRate(settings.m_sampleRate);
response.getSdrDaemonSinkSettings()->setTxDelay(settings.m_txDelay);
response.getSdrDaemonSinkSettings()->setNbFecBlocks(settings.m_nbFECBlocks);
@@ -514,6 +486,7 @@ void SDRdaemonSinkOutput::analyzeApiReply(const QJsonObject& jsonObject)
if (jsonObject.contains("DaemonSourceReport"))
{
QJsonObject report = jsonObject["DaemonSourceReport"].toObject();
+ m_centerFrequency = report["deviceCenterFreq"].toInt() * 1000;
int queueSize = report["queueSize"].toInt();
queueSize = queueSize == 0 ? 10 : queueSize;
int queueLength = report["queueLength"].toInt();
diff --git a/plugins/samplesink/sdrdaemonsink/sdrdaemonsinkoutput.h b/plugins/samplesink/sdrdaemonsink/sdrdaemonsinkoutput.h
index 30fc4ee2e..9e0d9fc66 100644
--- a/plugins/samplesink/sdrdaemonsink/sdrdaemonsinkoutput.h
+++ b/plugins/samplesink/sdrdaemonsink/sdrdaemonsinkoutput.h
@@ -136,7 +136,7 @@ public:
virtual const QString& getDeviceDescription() const;
virtual int getSampleRate() const;
virtual quint64 getCenterFrequency() const;
- virtual void setCenterFrequency(qint64 centerFrequency);
+ virtual void setCenterFrequency(qint64 centerFrequency __attribute__((unused))) {}
std::time_t getStartingTimeStamp() const;
virtual bool handleMessage(const Message& message);
@@ -168,6 +168,7 @@ private:
DeviceSinkAPI *m_deviceAPI;
QMutex m_mutex;
SDRdaemonSinkSettings m_settings;
+ uint64_t m_centerFrequency;
SDRdaemonSinkThread* m_sdrDaemonSinkThread;
QString m_deviceDescription;
std::time_t m_startingTimeStamp;
diff --git a/plugins/samplesink/sdrdaemonsink/sdrdaemonsinkthread.h b/plugins/samplesink/sdrdaemonsink/sdrdaemonsinkthread.h
index f84b5f8a8..39e40bb0c 100644
--- a/plugins/samplesink/sdrdaemonsink/sdrdaemonsinkthread.h
+++ b/plugins/samplesink/sdrdaemonsink/sdrdaemonsinkthread.h
@@ -48,7 +48,6 @@ public:
void startWork();
void stopWork();
- void setCenterFrequency(uint64_t centerFrequency) { m_udpSinkFEC.setCenterFrequency(centerFrequency); }
void setSamplerate(int samplerate);
void setNbBlocksFEC(uint32_t nbBlocksFEC) { m_udpSinkFEC.setNbBlocksFEC(nbBlocksFEC); };
void setTxDelay(uint32_t txDelay) { m_udpSinkFEC.setTxDelay(txDelay); };
diff --git a/plugins/samplesink/sdrdaemonsink/udpsinkfec.cpp b/plugins/samplesink/sdrdaemonsink/udpsinkfec.cpp
index e1bad17d5..d00213e87 100644
--- a/plugins/samplesink/sdrdaemonsink/udpsinkfec.cpp
+++ b/plugins/samplesink/sdrdaemonsink/udpsinkfec.cpp
@@ -28,7 +28,6 @@ MESSAGE_CLASS_DEFINITION(UDPSinkFECWorker::MsgConfigureRemoteAddress, Message)
UDPSinkFEC::UDPSinkFEC() :
- m_centerFrequency(100000),
m_sampleRate(48000),
m_sampleBytes(1),
m_sampleBits(8),
@@ -103,7 +102,7 @@ void UDPSinkFEC::write(const SampleVector::iterator& begin, uint32_t sampleChunk
gettimeofday(&tv, 0);
// create meta data TODO: semaphore
- metaData.m_centerFrequency = m_centerFrequency;
+ metaData.m_centerFrequency = 0; // frequency not set by stream
metaData.m_sampleRate = m_sampleRate;
metaData.m_sampleBytes = m_sampleBytes;
metaData.m_sampleBits = m_sampleBits;
diff --git a/plugins/samplesink/sdrdaemonsink/udpsinkfec.h b/plugins/samplesink/sdrdaemonsink/udpsinkfec.h
index 0b00d6a52..337a19ea5 100644
--- a/plugins/samplesink/sdrdaemonsink/udpsinkfec.h
+++ b/plugins/samplesink/sdrdaemonsink/udpsinkfec.h
@@ -109,9 +109,6 @@ public:
return ret;
}
- /** Set center frequency given in Hz */
- void setCenterFrequency(uint64_t centerFrequency) { m_centerFrequency = centerFrequency / 1000; }
-
/** Set sample rate given in Hz */
void setSampleRate(uint32_t sampleRate) { m_sampleRate = sampleRate; }
@@ -131,7 +128,6 @@ public:
private:
std::string m_error;
- uint32_t m_centerFrequency; //!< center frequency in kHz
uint32_t m_sampleRate; //!< sample rate in Hz
uint8_t m_sampleBytes; //!< number of bytes per sample
uint8_t m_sampleBits; //!< number of effective bits per sample