mirror of
https://github.com/f4exb/sdrangel.git
synced 2025-05-23 18:52:28 -04:00
SDRDaemonSink and DaemonSource: do not set frequency via SDRDaemonSink
This commit is contained in:
parent
b75eb08a91
commit
98a1f1952f
@ -299,10 +299,6 @@ void DaemonSrc::handleDataBlock(SDRDaemonDataBlock* dataBlock __attribute__((unu
|
|||||||
{
|
{
|
||||||
printMeta("DaemonSrc::handleDataBlock", metaData);
|
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)
|
if (m_currentMeta.m_sampleRate != metaData->m_sampleRate)
|
||||||
{
|
{
|
||||||
m_channelizer->configure(m_channelizer->getInputMessageQueue(), metaData->m_sampleRate, 0);
|
m_channelizer->configure(m_channelizer->getInputMessageQueue(), metaData->m_sampleRate, 0);
|
||||||
|
@ -96,7 +96,6 @@ bool DaemonSrcGUI::handleMessage(const Message& message)
|
|||||||
else if (DaemonSrc::MsgReportStreamData::match(message))
|
else if (DaemonSrc::MsgReportStreamData::match(message))
|
||||||
{
|
{
|
||||||
const DaemonSrc::MsgReportStreamData& report = (DaemonSrc::MsgReportStreamData&) 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()));
|
ui->sampleRate->setText(QString("%1").arg(report.get_sampleRate()));
|
||||||
QString nominalNbBlocksText = QString("%1/%2")
|
QString nominalNbBlocksText = QString("%1/%2")
|
||||||
.arg(report.get_nbOriginalBlocks() + report.get_nbFECBlocks())
|
.arg(report.get_nbOriginalBlocks() + report.get_nbFECBlocks())
|
||||||
|
@ -158,52 +158,6 @@
|
|||||||
</item>
|
</item>
|
||||||
<item>
|
<item>
|
||||||
<layout class="QHBoxLayout" name="nominalValuesLayout">
|
<layout class="QHBoxLayout" name="nominalValuesLayout">
|
||||||
<item>
|
|
||||||
<widget class="QLabel" name="centerFrequencyLabel">
|
|
||||||
<property name="text">
|
|
||||||
<string>Freq</string>
|
|
||||||
</property>
|
|
||||||
</widget>
|
|
||||||
</item>
|
|
||||||
<item>
|
|
||||||
<widget class="QLabel" name="centerFrequency">
|
|
||||||
<property name="minimumSize">
|
|
||||||
<size>
|
|
||||||
<width>60</width>
|
|
||||||
<height>0</height>
|
|
||||||
</size>
|
|
||||||
</property>
|
|
||||||
<property name="toolTip">
|
|
||||||
<string>Stream center frequency setting</string>
|
|
||||||
</property>
|
|
||||||
<property name="text">
|
|
||||||
<string>00000000</string>
|
|
||||||
</property>
|
|
||||||
<property name="alignment">
|
|
||||||
<set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
|
|
||||||
</property>
|
|
||||||
</widget>
|
|
||||||
</item>
|
|
||||||
<item>
|
|
||||||
<widget class="QLabel" name="centerFrequencyUnits">
|
|
||||||
<property name="text">
|
|
||||||
<string>kHz</string>
|
|
||||||
</property>
|
|
||||||
</widget>
|
|
||||||
</item>
|
|
||||||
<item>
|
|
||||||
<spacer name="horizontalSpacer_3">
|
|
||||||
<property name="orientation">
|
|
||||||
<enum>Qt::Horizontal</enum>
|
|
||||||
</property>
|
|
||||||
<property name="sizeHint" stdset="0">
|
|
||||||
<size>
|
|
||||||
<width>40</width>
|
|
||||||
<height>20</height>
|
|
||||||
</size>
|
|
||||||
</property>
|
|
||||||
</spacer>
|
|
||||||
</item>
|
|
||||||
<item>
|
<item>
|
||||||
<widget class="QLabel" name="sampleRateLabel">
|
<widget class="QLabel" name="sampleRateLabel">
|
||||||
<property name="text">
|
<property name="text">
|
||||||
@ -237,6 +191,19 @@
|
|||||||
</property>
|
</property>
|
||||||
</widget>
|
</widget>
|
||||||
</item>
|
</item>
|
||||||
|
<item>
|
||||||
|
<spacer name="horizontalSpacer_3">
|
||||||
|
<property name="orientation">
|
||||||
|
<enum>Qt::Horizontal</enum>
|
||||||
|
</property>
|
||||||
|
<property name="sizeHint" stdset="0">
|
||||||
|
<size>
|
||||||
|
<width>40</width>
|
||||||
|
<height>20</height>
|
||||||
|
</size>
|
||||||
|
</property>
|
||||||
|
</spacer>
|
||||||
|
</item>
|
||||||
</layout>
|
</layout>
|
||||||
</item>
|
</item>
|
||||||
<item>
|
<item>
|
||||||
|
@ -46,6 +46,7 @@ SDRdaemonSinkGui::SDRdaemonSinkGui(DeviceUISet *deviceUISet, QWidget* parent) :
|
|||||||
m_deviceUISet(deviceUISet),
|
m_deviceUISet(deviceUISet),
|
||||||
m_settings(),
|
m_settings(),
|
||||||
m_deviceSampleSink(0),
|
m_deviceSampleSink(0),
|
||||||
|
m_deviceCenterFrequency(0),
|
||||||
m_samplesCount(0),
|
m_samplesCount(0),
|
||||||
m_tickCount(0),
|
m_tickCount(0),
|
||||||
m_nbSinceLastFlowCheck(0),
|
m_nbSinceLastFlowCheck(0),
|
||||||
@ -86,6 +87,8 @@ SDRdaemonSinkGui::SDRdaemonSinkGui(DeviceUISet *deviceUISet, QWidget* parent) :
|
|||||||
m_networkManager = new QNetworkAccessManager();
|
m_networkManager = new QNetworkAccessManager();
|
||||||
connect(m_networkManager, SIGNAL(finished(QNetworkReply*)), this, SLOT(networkManagerFinished(QNetworkReply*)));
|
connect(m_networkManager, SIGNAL(finished(QNetworkReply*)), this, SLOT(networkManagerFinished(QNetworkReply*)));
|
||||||
|
|
||||||
|
m_deviceUISet->getSpectrum()->setCenterFrequency(m_deviceCenterFrequency);
|
||||||
|
|
||||||
m_time.start();
|
m_time.start();
|
||||||
displayEventCounts();
|
displayEventCounts();
|
||||||
displayEventTimer();
|
displayEventTimer();
|
||||||
@ -130,18 +133,6 @@ void SDRdaemonSinkGui::resetToDefaults()
|
|||||||
sendSettings();
|
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
|
QByteArray SDRdaemonSinkGui::serialize() const
|
||||||
{
|
{
|
||||||
return m_settings.serialize();
|
return m_settings.serialize();
|
||||||
@ -201,9 +192,8 @@ void SDRdaemonSinkGui::handleInputMessages()
|
|||||||
{
|
{
|
||||||
DSPSignalNotification* notif = (DSPSignalNotification*) message;
|
DSPSignalNotification* notif = (DSPSignalNotification*) message;
|
||||||
m_sampleRate = notif->getSampleRate();
|
m_sampleRate = notif->getSampleRate();
|
||||||
m_deviceCenterFrequency = notif->getCenterFrequency();
|
|
||||||
qDebug("SDRdaemonSinkGui::handleInputMessages: DSPSignalNotification: SampleRate:%d, CenterFrequency:%llu", notif->getSampleRate(), notif->getCenterFrequency());
|
qDebug("SDRdaemonSinkGui::handleInputMessages: DSPSignalNotification: SampleRate:%d, CenterFrequency:%llu", notif->getSampleRate(), notif->getCenterFrequency());
|
||||||
updateSampleRateAndFrequency();
|
updateSampleRate();
|
||||||
|
|
||||||
delete message;
|
delete message;
|
||||||
}
|
}
|
||||||
@ -216,10 +206,9 @@ void SDRdaemonSinkGui::handleInputMessages()
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void SDRdaemonSinkGui::updateSampleRateAndFrequency()
|
void SDRdaemonSinkGui::updateSampleRate()
|
||||||
{
|
{
|
||||||
m_deviceUISet->getSpectrum()->setSampleRate(m_sampleRate);
|
m_deviceUISet->getSpectrum()->setSampleRate(m_sampleRate);
|
||||||
m_deviceUISet->getSpectrum()->setCenterFrequency(m_deviceCenterFrequency);
|
|
||||||
ui->deviceRateText->setText(tr("%1k").arg((float)(m_sampleRate) / 1000));
|
ui->deviceRateText->setText(tr("%1k").arg((float)(m_sampleRate) / 1000));
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -232,7 +221,7 @@ void SDRdaemonSinkGui::updateTxDelayTooltip()
|
|||||||
void SDRdaemonSinkGui::displaySettings()
|
void SDRdaemonSinkGui::displaySettings()
|
||||||
{
|
{
|
||||||
blockApplySettings(true);
|
blockApplySettings(true);
|
||||||
ui->centerFrequency->setValue(m_settings.m_centerFrequency / 1000);
|
ui->centerFrequency->setValue(m_deviceCenterFrequency / 1000);
|
||||||
ui->sampleRate->setValue(m_settings.m_sampleRate);
|
ui->sampleRate->setValue(m_settings.m_sampleRate);
|
||||||
ui->txDelay->setValue(m_settings.m_txDelay*100);
|
ui->txDelay->setValue(m_settings.m_txDelay*100);
|
||||||
ui->txDelayText->setText(tr("%1").arg(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)
|
void SDRdaemonSinkGui::on_sampleRate_changed(quint64 value)
|
||||||
{
|
{
|
||||||
m_settings.m_sampleRate = value;
|
m_settings.m_sampleRate = value;
|
||||||
@ -558,6 +541,11 @@ void SDRdaemonSinkGui::analyzeApiReply(const QJsonObject& jsonObject)
|
|||||||
if (jsonObject.contains("DaemonSourceReport"))
|
if (jsonObject.contains("DaemonSourceReport"))
|
||||||
{
|
{
|
||||||
QJsonObject report = jsonObject["DaemonSourceReport"].toObject();
|
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();
|
int queueSize = report["queueSize"].toInt();
|
||||||
queueSize = queueSize == 0 ? 10 : queueSize;
|
queueSize = queueSize == 0 ? 10 : queueSize;
|
||||||
int queueLength = report["queueLength"].toInt();
|
int queueLength = report["queueLength"].toInt();
|
||||||
|
@ -80,8 +80,8 @@ public:
|
|||||||
QString getName() const;
|
QString getName() const;
|
||||||
|
|
||||||
void resetToDefaults();
|
void resetToDefaults();
|
||||||
virtual qint64 getCenterFrequency() const;
|
virtual qint64 getCenterFrequency() const { return m_deviceCenterFrequency; }
|
||||||
virtual void setCenterFrequency(qint64 centerFrequency);
|
virtual void setCenterFrequency(qint64 centerFrequency __attribute__((unused))) {}
|
||||||
QByteArray serialize() const;
|
QByteArray serialize() const;
|
||||||
bool deserialize(const QByteArray& data);
|
bool deserialize(const QByteArray& data);
|
||||||
virtual MessageQueue *getInputMessageQueue() { return &m_inputMessageQueue; }
|
virtual MessageQueue *getInputMessageQueue() { return &m_inputMessageQueue; }
|
||||||
@ -128,7 +128,7 @@ private:
|
|||||||
void displayTime();
|
void displayTime();
|
||||||
void sendControl(bool force = false);
|
void sendControl(bool force = false);
|
||||||
void sendSettings();
|
void sendSettings();
|
||||||
void updateSampleRateAndFrequency();
|
void updateSampleRate();
|
||||||
void updateTxDelayTooltip();
|
void updateTxDelayTooltip();
|
||||||
void displayEventCounts();
|
void displayEventCounts();
|
||||||
void displayEventStatus(int recoverableCount, int unrecoverableCount);
|
void displayEventStatus(int recoverableCount, int unrecoverableCount);
|
||||||
|
@ -2,6 +2,9 @@
|
|||||||
<ui version="4.0">
|
<ui version="4.0">
|
||||||
<class>SDRdaemonSinkGui</class>
|
<class>SDRdaemonSinkGui</class>
|
||||||
<widget class="QWidget" name="SDRdaemonSinkGui">
|
<widget class="QWidget" name="SDRdaemonSinkGui">
|
||||||
|
<property name="enabled">
|
||||||
|
<bool>true</bool>
|
||||||
|
</property>
|
||||||
<property name="geometry">
|
<property name="geometry">
|
||||||
<rect>
|
<rect>
|
||||||
<x>0</x>
|
<x>0</x>
|
||||||
@ -114,7 +117,7 @@
|
|||||||
<item>
|
<item>
|
||||||
<widget class="ValueDial" name="centerFrequency" native="true">
|
<widget class="ValueDial" name="centerFrequency" native="true">
|
||||||
<property name="enabled">
|
<property name="enabled">
|
||||||
<bool>true</bool>
|
<bool>false</bool>
|
||||||
</property>
|
</property>
|
||||||
<property name="sizePolicy">
|
<property name="sizePolicy">
|
||||||
<sizepolicy hsizetype="Maximum" vsizetype="Maximum">
|
<sizepolicy hsizetype="Maximum" vsizetype="Maximum">
|
||||||
@ -146,24 +149,42 @@
|
|||||||
</widget>
|
</widget>
|
||||||
</item>
|
</item>
|
||||||
<item>
|
<item>
|
||||||
<widget class="QLabel" name="freqUnits">
|
<layout class="QVBoxLayout" name="freqRightLayout">
|
||||||
<property name="text">
|
<item>
|
||||||
<string> kHz</string>
|
<layout class="QHBoxLayout" name="freqRightTopLayout">
|
||||||
</property>
|
<item>
|
||||||
</widget>
|
<widget class="QLabel" name="freqUnits">
|
||||||
</item>
|
<property name="text">
|
||||||
<item>
|
<string> kHz</string>
|
||||||
<spacer name="freqRightlSpacer">
|
</property>
|
||||||
<property name="orientation">
|
</widget>
|
||||||
<enum>Qt::Horizontal</enum>
|
</item>
|
||||||
</property>
|
</layout>
|
||||||
<property name="sizeHint" stdset="0">
|
</item>
|
||||||
<size>
|
<item>
|
||||||
<width>0</width>
|
<layout class="QHBoxLayout" name="freqRightBotLayout">
|
||||||
<height>0</height>
|
<item>
|
||||||
</size>
|
<widget class="QLabel" name="remoteRateText">
|
||||||
</property>
|
<property name="minimumSize">
|
||||||
</spacer>
|
<size>
|
||||||
|
<width>50</width>
|
||||||
|
<height>0</height>
|
||||||
|
</size>
|
||||||
|
</property>
|
||||||
|
<property name="toolTip">
|
||||||
|
<string>Remote baseband sample rate</string>
|
||||||
|
</property>
|
||||||
|
<property name="text">
|
||||||
|
<string>00000k</string>
|
||||||
|
</property>
|
||||||
|
<property name="alignment">
|
||||||
|
<set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
|
||||||
|
</property>
|
||||||
|
</widget>
|
||||||
|
</item>
|
||||||
|
</layout>
|
||||||
|
</item>
|
||||||
|
</layout>
|
||||||
</item>
|
</item>
|
||||||
</layout>
|
</layout>
|
||||||
</item>
|
</item>
|
||||||
|
@ -47,6 +47,7 @@ const uint32_t SDRdaemonSinkOutput::NbSamplesForRateCorrection = 5000000;
|
|||||||
SDRdaemonSinkOutput::SDRdaemonSinkOutput(DeviceSinkAPI *deviceAPI) :
|
SDRdaemonSinkOutput::SDRdaemonSinkOutput(DeviceSinkAPI *deviceAPI) :
|
||||||
m_deviceAPI(deviceAPI),
|
m_deviceAPI(deviceAPI),
|
||||||
m_settings(),
|
m_settings(),
|
||||||
|
m_centerFrequency(0),
|
||||||
m_sdrDaemonSinkThread(0),
|
m_sdrDaemonSinkThread(0),
|
||||||
m_deviceDescription("SDRdaemonSink"),
|
m_deviceDescription("SDRdaemonSink"),
|
||||||
m_startingTimeStamp(0),
|
m_startingTimeStamp(0),
|
||||||
@ -85,7 +86,6 @@ bool SDRdaemonSinkOutput::start()
|
|||||||
|
|
||||||
m_sdrDaemonSinkThread = new SDRdaemonSinkThread(&m_sampleSourceFifo);
|
m_sdrDaemonSinkThread = new SDRdaemonSinkThread(&m_sampleSourceFifo);
|
||||||
m_sdrDaemonSinkThread->setDataAddress(m_settings.m_dataAddress, m_settings.m_dataPort);
|
m_sdrDaemonSinkThread->setDataAddress(m_settings.m_dataAddress, m_settings.m_dataPort);
|
||||||
m_sdrDaemonSinkThread->setCenterFrequency(m_settings.m_centerFrequency);
|
|
||||||
m_sdrDaemonSinkThread->setSamplerate(m_settings.m_sampleRate);
|
m_sdrDaemonSinkThread->setSamplerate(m_settings.m_sampleRate);
|
||||||
m_sdrDaemonSinkThread->setNbBlocksFEC(m_settings.m_nbFECBlocks);
|
m_sdrDaemonSinkThread->setNbBlocksFEC(m_settings.m_nbFECBlocks);
|
||||||
m_sdrDaemonSinkThread->connectTimer(m_masterTimer);
|
m_sdrDaemonSinkThread->connectTimer(m_masterTimer);
|
||||||
@ -161,22 +161,7 @@ int SDRdaemonSinkOutput::getSampleRate() const
|
|||||||
|
|
||||||
quint64 SDRdaemonSinkOutput::getCenterFrequency() const
|
quint64 SDRdaemonSinkOutput::getCenterFrequency() const
|
||||||
{
|
{
|
||||||
return m_settings.m_centerFrequency;
|
return 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);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
std::time_t SDRdaemonSinkOutput::getStartingTimeStamp() const
|
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 (force || (m_settings.m_sampleRate != settings.m_sampleRate))
|
||||||
{
|
{
|
||||||
if (m_sdrDaemonSinkThread != 0) {
|
if (m_sdrDaemonSinkThread != 0) {
|
||||||
@ -316,7 +292,6 @@ void SDRdaemonSinkOutput::applySettings(const SDRdaemonSinkSettings& settings, b
|
|||||||
mutexLocker.unlock();
|
mutexLocker.unlock();
|
||||||
|
|
||||||
qDebug() << "SDRdaemonSinkOutput::applySettings:"
|
qDebug() << "SDRdaemonSinkOutput::applySettings:"
|
||||||
<< " m_centerFrequency: " << settings.m_centerFrequency
|
|
||||||
<< " m_sampleRate: " << settings.m_sampleRate
|
<< " m_sampleRate: " << settings.m_sampleRate
|
||||||
<< " m_txDelay: " << settings.m_txDelay
|
<< " m_txDelay: " << settings.m_txDelay
|
||||||
<< " m_nbFECBlocks: " << settings.m_nbFECBlocks
|
<< " m_nbFECBlocks: " << settings.m_nbFECBlocks
|
||||||
@ -327,7 +302,7 @@ void SDRdaemonSinkOutput::applySettings(const SDRdaemonSinkSettings& settings, b
|
|||||||
|
|
||||||
if (forwardChange)
|
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);
|
m_deviceAPI->getDeviceEngineInputMessageQueue()->push(notif);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -378,9 +353,6 @@ int SDRdaemonSinkOutput::webapiSettingsPutPatch(
|
|||||||
{
|
{
|
||||||
SDRdaemonSinkSettings settings = m_settings;
|
SDRdaemonSinkSettings settings = m_settings;
|
||||||
|
|
||||||
if (deviceSettingsKeys.contains("centerFrequency")) {
|
|
||||||
settings.m_centerFrequency = response.getSdrDaemonSinkSettings()->getCenterFrequency();
|
|
||||||
}
|
|
||||||
if (deviceSettingsKeys.contains("sampleRate")) {
|
if (deviceSettingsKeys.contains("sampleRate")) {
|
||||||
settings.m_sampleRate = response.getSdrDaemonSinkSettings()->getSampleRate();
|
settings.m_sampleRate = response.getSdrDaemonSinkSettings()->getSampleRate();
|
||||||
}
|
}
|
||||||
@ -434,7 +406,7 @@ int SDRdaemonSinkOutput::webapiReportGet(
|
|||||||
|
|
||||||
void SDRdaemonSinkOutput::webapiFormatDeviceSettings(SWGSDRangel::SWGDeviceSettings& response, const SDRdaemonSinkSettings& settings)
|
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()->setSampleRate(settings.m_sampleRate);
|
||||||
response.getSdrDaemonSinkSettings()->setTxDelay(settings.m_txDelay);
|
response.getSdrDaemonSinkSettings()->setTxDelay(settings.m_txDelay);
|
||||||
response.getSdrDaemonSinkSettings()->setNbFecBlocks(settings.m_nbFECBlocks);
|
response.getSdrDaemonSinkSettings()->setNbFecBlocks(settings.m_nbFECBlocks);
|
||||||
@ -514,6 +486,7 @@ void SDRdaemonSinkOutput::analyzeApiReply(const QJsonObject& jsonObject)
|
|||||||
if (jsonObject.contains("DaemonSourceReport"))
|
if (jsonObject.contains("DaemonSourceReport"))
|
||||||
{
|
{
|
||||||
QJsonObject report = jsonObject["DaemonSourceReport"].toObject();
|
QJsonObject report = jsonObject["DaemonSourceReport"].toObject();
|
||||||
|
m_centerFrequency = report["deviceCenterFreq"].toInt() * 1000;
|
||||||
int queueSize = report["queueSize"].toInt();
|
int queueSize = report["queueSize"].toInt();
|
||||||
queueSize = queueSize == 0 ? 10 : queueSize;
|
queueSize = queueSize == 0 ? 10 : queueSize;
|
||||||
int queueLength = report["queueLength"].toInt();
|
int queueLength = report["queueLength"].toInt();
|
||||||
|
@ -136,7 +136,7 @@ public:
|
|||||||
virtual const QString& getDeviceDescription() const;
|
virtual const QString& getDeviceDescription() const;
|
||||||
virtual int getSampleRate() const;
|
virtual int getSampleRate() const;
|
||||||
virtual quint64 getCenterFrequency() const;
|
virtual quint64 getCenterFrequency() const;
|
||||||
virtual void setCenterFrequency(qint64 centerFrequency);
|
virtual void setCenterFrequency(qint64 centerFrequency __attribute__((unused))) {}
|
||||||
std::time_t getStartingTimeStamp() const;
|
std::time_t getStartingTimeStamp() const;
|
||||||
|
|
||||||
virtual bool handleMessage(const Message& message);
|
virtual bool handleMessage(const Message& message);
|
||||||
@ -168,6 +168,7 @@ private:
|
|||||||
DeviceSinkAPI *m_deviceAPI;
|
DeviceSinkAPI *m_deviceAPI;
|
||||||
QMutex m_mutex;
|
QMutex m_mutex;
|
||||||
SDRdaemonSinkSettings m_settings;
|
SDRdaemonSinkSettings m_settings;
|
||||||
|
uint64_t m_centerFrequency;
|
||||||
SDRdaemonSinkThread* m_sdrDaemonSinkThread;
|
SDRdaemonSinkThread* m_sdrDaemonSinkThread;
|
||||||
QString m_deviceDescription;
|
QString m_deviceDescription;
|
||||||
std::time_t m_startingTimeStamp;
|
std::time_t m_startingTimeStamp;
|
||||||
|
@ -48,7 +48,6 @@ public:
|
|||||||
void startWork();
|
void startWork();
|
||||||
void stopWork();
|
void stopWork();
|
||||||
|
|
||||||
void setCenterFrequency(uint64_t centerFrequency) { m_udpSinkFEC.setCenterFrequency(centerFrequency); }
|
|
||||||
void setSamplerate(int samplerate);
|
void setSamplerate(int samplerate);
|
||||||
void setNbBlocksFEC(uint32_t nbBlocksFEC) { m_udpSinkFEC.setNbBlocksFEC(nbBlocksFEC); };
|
void setNbBlocksFEC(uint32_t nbBlocksFEC) { m_udpSinkFEC.setNbBlocksFEC(nbBlocksFEC); };
|
||||||
void setTxDelay(uint32_t txDelay) { m_udpSinkFEC.setTxDelay(txDelay); };
|
void setTxDelay(uint32_t txDelay) { m_udpSinkFEC.setTxDelay(txDelay); };
|
||||||
|
@ -28,7 +28,6 @@ MESSAGE_CLASS_DEFINITION(UDPSinkFECWorker::MsgConfigureRemoteAddress, Message)
|
|||||||
|
|
||||||
|
|
||||||
UDPSinkFEC::UDPSinkFEC() :
|
UDPSinkFEC::UDPSinkFEC() :
|
||||||
m_centerFrequency(100000),
|
|
||||||
m_sampleRate(48000),
|
m_sampleRate(48000),
|
||||||
m_sampleBytes(1),
|
m_sampleBytes(1),
|
||||||
m_sampleBits(8),
|
m_sampleBits(8),
|
||||||
@ -103,7 +102,7 @@ void UDPSinkFEC::write(const SampleVector::iterator& begin, uint32_t sampleChunk
|
|||||||
gettimeofday(&tv, 0);
|
gettimeofday(&tv, 0);
|
||||||
|
|
||||||
// create meta data TODO: semaphore
|
// 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_sampleRate = m_sampleRate;
|
||||||
metaData.m_sampleBytes = m_sampleBytes;
|
metaData.m_sampleBytes = m_sampleBytes;
|
||||||
metaData.m_sampleBits = m_sampleBits;
|
metaData.m_sampleBits = m_sampleBits;
|
||||||
|
@ -109,9 +109,6 @@ public:
|
|||||||
return ret;
|
return ret;
|
||||||
}
|
}
|
||||||
|
|
||||||
/** Set center frequency given in Hz */
|
|
||||||
void setCenterFrequency(uint64_t centerFrequency) { m_centerFrequency = centerFrequency / 1000; }
|
|
||||||
|
|
||||||
/** Set sample rate given in Hz */
|
/** Set sample rate given in Hz */
|
||||||
void setSampleRate(uint32_t sampleRate) { m_sampleRate = sampleRate; }
|
void setSampleRate(uint32_t sampleRate) { m_sampleRate = sampleRate; }
|
||||||
|
|
||||||
@ -131,7 +128,6 @@ public:
|
|||||||
private:
|
private:
|
||||||
std::string m_error;
|
std::string m_error;
|
||||||
|
|
||||||
uint32_t m_centerFrequency; //!< center frequency in kHz
|
|
||||||
uint32_t m_sampleRate; //!< sample rate in Hz
|
uint32_t m_sampleRate; //!< sample rate in Hz
|
||||||
uint8_t m_sampleBytes; //!< number of bytes per sample
|
uint8_t m_sampleBytes; //!< number of bytes per sample
|
||||||
uint8_t m_sampleBits; //!< number of effective bits per sample
|
uint8_t m_sampleBits; //!< number of effective bits per sample
|
||||||
|
Loading…
x
Reference in New Issue
Block a user