mirror of
				https://github.com/f4exb/sdrangel.git
				synced 2025-11-03 21:20:31 -05: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">
 | 
				
			||||||
@ -145,6 +148,10 @@
 | 
				
			|||||||
       </property>
 | 
					       </property>
 | 
				
			||||||
      </widget>
 | 
					      </widget>
 | 
				
			||||||
     </item>
 | 
					     </item>
 | 
				
			||||||
 | 
					     <item>
 | 
				
			||||||
 | 
					      <layout class="QVBoxLayout" name="freqRightLayout">
 | 
				
			||||||
 | 
					       <item>
 | 
				
			||||||
 | 
					        <layout class="QHBoxLayout" name="freqRightTopLayout">
 | 
				
			||||||
         <item>
 | 
					         <item>
 | 
				
			||||||
          <widget class="QLabel" name="freqUnits">
 | 
					          <widget class="QLabel" name="freqUnits">
 | 
				
			||||||
           <property name="text">
 | 
					           <property name="text">
 | 
				
			||||||
@ -152,18 +159,32 @@
 | 
				
			|||||||
           </property>
 | 
					           </property>
 | 
				
			||||||
          </widget>
 | 
					          </widget>
 | 
				
			||||||
         </item>
 | 
					         </item>
 | 
				
			||||||
 | 
					        </layout>
 | 
				
			||||||
 | 
					       </item>
 | 
				
			||||||
       <item>
 | 
					       <item>
 | 
				
			||||||
      <spacer name="freqRightlSpacer">
 | 
					        <layout class="QHBoxLayout" name="freqRightBotLayout">
 | 
				
			||||||
       <property name="orientation">
 | 
					         <item>
 | 
				
			||||||
        <enum>Qt::Horizontal</enum>
 | 
					          <widget class="QLabel" name="remoteRateText">
 | 
				
			||||||
       </property>
 | 
					           <property name="minimumSize">
 | 
				
			||||||
       <property name="sizeHint" stdset="0">
 | 
					 | 
				
			||||||
            <size>
 | 
					            <size>
 | 
				
			||||||
         <width>0</width>
 | 
					             <width>50</width>
 | 
				
			||||||
             <height>0</height>
 | 
					             <height>0</height>
 | 
				
			||||||
            </size>
 | 
					            </size>
 | 
				
			||||||
           </property>
 | 
					           </property>
 | 
				
			||||||
      </spacer>
 | 
					           <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