mirror of
				https://github.com/f4exb/sdrangel.git
				synced 2025-11-03 13:11:20 -05:00 
			
		
		
		
	AM Demod: use settings object to pass data from GUI to demod
This commit is contained in:
		
							parent
							
								
									1bb612bf62
								
							
						
					
					
						commit
						7159ffff09
					
				@ -62,29 +62,6 @@ AMDemod::~AMDemod()
 | 
				
			|||||||
    delete m_udpBufferAudio;
 | 
					    delete m_udpBufferAudio;
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
void AMDemod::configure(MessageQueue* messageQueue,
 | 
					 | 
				
			||||||
        Real rfBandwidth,
 | 
					 | 
				
			||||||
        Real volume,
 | 
					 | 
				
			||||||
        Real squelch,
 | 
					 | 
				
			||||||
        bool audioMute,
 | 
					 | 
				
			||||||
        bool bandpassEnable,
 | 
					 | 
				
			||||||
        bool copyAudioToUDP,
 | 
					 | 
				
			||||||
        const QString& udpAddress,
 | 
					 | 
				
			||||||
        quint16 udpPort,
 | 
					 | 
				
			||||||
        bool force)
 | 
					 | 
				
			||||||
{
 | 
					 | 
				
			||||||
	Message* cmd = MsgConfigureAMDemod::create(rfBandwidth,
 | 
					 | 
				
			||||||
	        volume,
 | 
					 | 
				
			||||||
	        squelch,
 | 
					 | 
				
			||||||
	        audioMute,
 | 
					 | 
				
			||||||
	        bandpassEnable,
 | 
					 | 
				
			||||||
            copyAudioToUDP,
 | 
					 | 
				
			||||||
            udpAddress,
 | 
					 | 
				
			||||||
            udpPort,
 | 
					 | 
				
			||||||
            force);
 | 
					 | 
				
			||||||
	messageQueue->push(cmd);
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
void AMDemod::feed(const SampleVector::const_iterator& begin, const SampleVector::const_iterator& end, bool firstOfBurst __attribute__((unused)))
 | 
					void AMDemod::feed(const SampleVector::const_iterator& begin, const SampleVector::const_iterator& end, bool firstOfBurst __attribute__((unused)))
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
	Complex ci;
 | 
						Complex ci;
 | 
				
			||||||
@ -171,18 +148,13 @@ bool AMDemod::handleMessage(const Message& cmd)
 | 
				
			|||||||
	{
 | 
						{
 | 
				
			||||||
        MsgConfigureAMDemod& cfg = (MsgConfigureAMDemod&) cmd;
 | 
					        MsgConfigureAMDemod& cfg = (MsgConfigureAMDemod&) cmd;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        AMDemodSettings settings = m_settings;
 | 
					        AMDemodSettings settings = cfg.getSettings();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	    settings.m_rfBandwidth = cfg.getRFBandwidth();
 | 
					        // These settings are set with DownChannelizer::MsgChannelizerNotification
 | 
				
			||||||
	    settings.m_volume = cfg.getVolume();
 | 
						    settings.m_inputSampleRate = m_settings.m_inputSampleRate;
 | 
				
			||||||
	    settings.m_squelch = cfg.getSquelch();
 | 
						    settings.m_inputFrequencyOffset = m_settings.m_inputFrequencyOffset;
 | 
				
			||||||
        settings.m_audioMute = cfg.getAudioMute();
 | 
					 | 
				
			||||||
        settings.m_bandpassEnable = cfg.getBandpassEnable();
 | 
					 | 
				
			||||||
        settings.m_copyAudioToUDP = cfg.getCopyAudioToUDP();
 | 
					 | 
				
			||||||
        settings.m_udpAddress = cfg.getUDPAddress();
 | 
					 | 
				
			||||||
        settings.m_udpPort = cfg.getUDPPort();
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
        applySettings(settings);
 | 
					        applySettings(settings, cfg.getForce());
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        qDebug() << "AMDemod::handleMessage: MsgConfigureAMDemod:"
 | 
					        qDebug() << "AMDemod::handleMessage: MsgConfigureAMDemod:"
 | 
				
			||||||
                << " m_rfBandwidth: " << settings.m_rfBandwidth
 | 
					                << " m_rfBandwidth: " << settings.m_rfBandwidth
 | 
				
			||||||
@ -192,7 +164,8 @@ bool AMDemod::handleMessage(const Message& cmd)
 | 
				
			|||||||
                << " m_bandpassEnable: " << settings.m_bandpassEnable
 | 
					                << " m_bandpassEnable: " << settings.m_bandpassEnable
 | 
				
			||||||
                << " m_copyAudioToUDP: " << settings.m_copyAudioToUDP
 | 
					                << " m_copyAudioToUDP: " << settings.m_copyAudioToUDP
 | 
				
			||||||
                << " m_udpAddress: " << settings.m_udpAddress
 | 
					                << " m_udpAddress: " << settings.m_udpAddress
 | 
				
			||||||
                << " m_udpPort: " << settings.m_udpPort;
 | 
					                << " m_udpPort: " << settings.m_udpPort
 | 
				
			||||||
 | 
					                << " force: " << cfg.getForce();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
		return true;
 | 
							return true;
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
@ -202,45 +175,6 @@ bool AMDemod::handleMessage(const Message& cmd)
 | 
				
			|||||||
	}
 | 
						}
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
//void AMDemod::apply(bool force)
 | 
					 | 
				
			||||||
//{
 | 
					 | 
				
			||||||
//
 | 
					 | 
				
			||||||
//	if ((m_config.m_inputFrequencyOffset != m_running.m_inputFrequencyOffset) ||
 | 
					 | 
				
			||||||
//		(m_config.m_inputSampleRate != m_running.m_inputSampleRate) || force)
 | 
					 | 
				
			||||||
//	{
 | 
					 | 
				
			||||||
//		m_nco.setFreq(-m_config.m_inputFrequencyOffset, m_config.m_inputSampleRate);
 | 
					 | 
				
			||||||
//	}
 | 
					 | 
				
			||||||
//
 | 
					 | 
				
			||||||
//	if((m_config.m_inputSampleRate != m_running.m_inputSampleRate) ||
 | 
					 | 
				
			||||||
//		(m_config.m_rfBandwidth != m_running.m_rfBandwidth) ||
 | 
					 | 
				
			||||||
//		(m_config.m_audioSampleRate != m_running.m_audioSampleRate) ||
 | 
					 | 
				
			||||||
//		(m_config.m_bandpassEnable != m_running.m_bandpassEnable) || force)
 | 
					 | 
				
			||||||
//	{
 | 
					 | 
				
			||||||
//		m_settingsMutex.lock();
 | 
					 | 
				
			||||||
//		m_interpolator.create(16, m_config.m_inputSampleRate, m_config.m_rfBandwidth / 2.2f);
 | 
					 | 
				
			||||||
//		m_interpolatorDistanceRemain = 0;
 | 
					 | 
				
			||||||
//		m_interpolatorDistance = (Real) m_config.m_inputSampleRate / (Real) m_config.m_audioSampleRate;
 | 
					 | 
				
			||||||
//		m_bandpass.create(301, m_config.m_audioSampleRate, 300.0, m_config.m_rfBandwidth / 2.0f);
 | 
					 | 
				
			||||||
//		m_settingsMutex.unlock();
 | 
					 | 
				
			||||||
//	}
 | 
					 | 
				
			||||||
//
 | 
					 | 
				
			||||||
//	if ((m_config.m_squelch != m_running.m_squelch) || force)
 | 
					 | 
				
			||||||
//	{
 | 
					 | 
				
			||||||
//		m_squelchLevel = pow(10.0, m_config.m_squelch / 20.0);
 | 
					 | 
				
			||||||
//		m_squelchLevel *= m_squelchLevel;
 | 
					 | 
				
			||||||
//        qDebug("AMDemod::applySettings: m_squelchLevel: %f", m_squelchLevel);
 | 
					 | 
				
			||||||
//	}
 | 
					 | 
				
			||||||
//
 | 
					 | 
				
			||||||
//    if ((m_config.m_udpAddress != m_running.m_udpAddress)
 | 
					 | 
				
			||||||
//        || (m_config.m_udpPort != m_running.m_udpPort) || force)
 | 
					 | 
				
			||||||
//    {
 | 
					 | 
				
			||||||
//        m_udpBufferAudio->setAddress(m_config.m_udpAddress);
 | 
					 | 
				
			||||||
//        m_udpBufferAudio->setPort(m_config.m_udpPort);
 | 
					 | 
				
			||||||
//    }
 | 
					 | 
				
			||||||
//
 | 
					 | 
				
			||||||
//	m_running = m_config;
 | 
					 | 
				
			||||||
//}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
void AMDemod::applySettings(const AMDemodSettings& settings, bool force)
 | 
					void AMDemod::applySettings(const AMDemodSettings& settings, bool force)
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
    if ((m_settings.m_inputFrequencyOffset != settings.m_inputFrequencyOffset) ||
 | 
					    if ((m_settings.m_inputFrequencyOffset != settings.m_inputFrequencyOffset) ||
 | 
				
			||||||
 | 
				
			|||||||
@ -32,20 +32,32 @@
 | 
				
			|||||||
class AMDemod : public BasebandSampleSink {
 | 
					class AMDemod : public BasebandSampleSink {
 | 
				
			||||||
	Q_OBJECT
 | 
						Q_OBJECT
 | 
				
			||||||
public:
 | 
					public:
 | 
				
			||||||
 | 
					    class MsgConfigureAMDemod : public Message {
 | 
				
			||||||
 | 
					        MESSAGE_CLASS_DECLARATION
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    public:
 | 
				
			||||||
 | 
					        const AMDemodSettings& getSettings() const { return m_settings; }
 | 
				
			||||||
 | 
					        bool getForce() const { return m_force; }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        static MsgConfigureAMDemod* create(const AMDemodSettings& settings, bool force)
 | 
				
			||||||
 | 
					        {
 | 
				
			||||||
 | 
					            return new MsgConfigureAMDemod(settings, force);
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    private:
 | 
				
			||||||
 | 
					        AMDemodSettings m_settings;
 | 
				
			||||||
 | 
					        bool m_force;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        MsgConfigureAMDemod(const AMDemodSettings& settings, bool force) :
 | 
				
			||||||
 | 
					            Message(),
 | 
				
			||||||
 | 
					            m_settings(settings),
 | 
				
			||||||
 | 
					            m_force(force)
 | 
				
			||||||
 | 
					        { }
 | 
				
			||||||
 | 
					    };
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	AMDemod();
 | 
						AMDemod();
 | 
				
			||||||
	~AMDemod();
 | 
						~AMDemod();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	void configure(MessageQueue* messageQueue,
 | 
					 | 
				
			||||||
	        Real rfBandwidth,
 | 
					 | 
				
			||||||
	        Real volume,
 | 
					 | 
				
			||||||
	        Real squelch,
 | 
					 | 
				
			||||||
	        bool audioMute,
 | 
					 | 
				
			||||||
	        bool bandpassEnable,
 | 
					 | 
				
			||||||
	        bool copyAudioToUDP,
 | 
					 | 
				
			||||||
	        const QString& udpAddress,
 | 
					 | 
				
			||||||
	        quint16 udpPort,
 | 
					 | 
				
			||||||
	        bool force);
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
	virtual void feed(const SampleVector::const_iterator& begin, const SampleVector::const_iterator& end, bool po);
 | 
						virtual void feed(const SampleVector::const_iterator& begin, const SampleVector::const_iterator& end, bool po);
 | 
				
			||||||
	virtual void start();
 | 
						virtual void start();
 | 
				
			||||||
	virtual void stop();
 | 
						virtual void stop();
 | 
				
			||||||
@ -65,74 +77,6 @@ public:
 | 
				
			|||||||
	}
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
private:
 | 
					private:
 | 
				
			||||||
	class MsgConfigureAMDemod : public Message {
 | 
					 | 
				
			||||||
		MESSAGE_CLASS_DECLARATION
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
	public:
 | 
					 | 
				
			||||||
		Real getRFBandwidth() const { return m_rfBandwidth; }
 | 
					 | 
				
			||||||
		Real getVolume() const { return m_volume; }
 | 
					 | 
				
			||||||
		Real getSquelch() const { return m_squelch; }
 | 
					 | 
				
			||||||
		bool getAudioMute() const { return m_audioMute; }
 | 
					 | 
				
			||||||
		bool getBandpassEnable() const { return m_bandpassEnable; }
 | 
					 | 
				
			||||||
		bool getCopyAudioToUDP() const { return m_copyAudioToUDP; }
 | 
					 | 
				
			||||||
		const QString& getUDPAddress() const { return m_udpAddress; }
 | 
					 | 
				
			||||||
		quint16 getUDPPort() const { return m_udpPort; }
 | 
					 | 
				
			||||||
		bool getForce() const { return m_force; }
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
		static MsgConfigureAMDemod* create(Real rfBandwidth,
 | 
					 | 
				
			||||||
		        Real volume,
 | 
					 | 
				
			||||||
		        Real squelch,
 | 
					 | 
				
			||||||
		        bool audioMute,
 | 
					 | 
				
			||||||
		        bool bandpassEnable,
 | 
					 | 
				
			||||||
		        bool copyAudioToUDP,
 | 
					 | 
				
			||||||
		        const QString& udpAddress,
 | 
					 | 
				
			||||||
		        quint16 udpPort,
 | 
					 | 
				
			||||||
		        bool force)
 | 
					 | 
				
			||||||
		{
 | 
					 | 
				
			||||||
			return new MsgConfigureAMDemod(rfBandwidth,
 | 
					 | 
				
			||||||
			        volume,
 | 
					 | 
				
			||||||
			        squelch,
 | 
					 | 
				
			||||||
			        audioMute,
 | 
					 | 
				
			||||||
			        bandpassEnable,
 | 
					 | 
				
			||||||
			        copyAudioToUDP,
 | 
					 | 
				
			||||||
			        udpAddress,
 | 
					 | 
				
			||||||
			        udpPort,
 | 
					 | 
				
			||||||
			        force);
 | 
					 | 
				
			||||||
		}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
	private:
 | 
					 | 
				
			||||||
		Real m_rfBandwidth;
 | 
					 | 
				
			||||||
		Real m_volume;
 | 
					 | 
				
			||||||
		Real m_squelch;
 | 
					 | 
				
			||||||
		bool m_audioMute;
 | 
					 | 
				
			||||||
		bool m_bandpassEnable;
 | 
					 | 
				
			||||||
		bool m_copyAudioToUDP;
 | 
					 | 
				
			||||||
		QString m_udpAddress;
 | 
					 | 
				
			||||||
		quint16 m_udpPort;
 | 
					 | 
				
			||||||
		bool m_force;
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
		MsgConfigureAMDemod(Real rfBandwidth,
 | 
					 | 
				
			||||||
		        Real volume,
 | 
					 | 
				
			||||||
		        Real squelch,
 | 
					 | 
				
			||||||
		        bool audioMute,
 | 
					 | 
				
			||||||
		        bool bandpassEnable,
 | 
					 | 
				
			||||||
		        bool copyAudioToUDP,
 | 
					 | 
				
			||||||
		        const QString& udpAddress,
 | 
					 | 
				
			||||||
		        quint16 udpPort,
 | 
					 | 
				
			||||||
		        bool force) :
 | 
					 | 
				
			||||||
			Message(),
 | 
					 | 
				
			||||||
			m_rfBandwidth(rfBandwidth),
 | 
					 | 
				
			||||||
			m_volume(volume),
 | 
					 | 
				
			||||||
			m_squelch(squelch),
 | 
					 | 
				
			||||||
			m_audioMute(audioMute),
 | 
					 | 
				
			||||||
			m_bandpassEnable(bandpassEnable),
 | 
					 | 
				
			||||||
			m_copyAudioToUDP(copyAudioToUDP),
 | 
					 | 
				
			||||||
			m_udpAddress(udpAddress),
 | 
					 | 
				
			||||||
			m_udpPort(udpPort),
 | 
					 | 
				
			||||||
			m_force(force)
 | 
					 | 
				
			||||||
		{ }
 | 
					 | 
				
			||||||
	};
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
	enum RateState {
 | 
						enum RateState {
 | 
				
			||||||
		RSInitialFill,
 | 
							RSInitialFill,
 | 
				
			||||||
		RSRunning
 | 
							RSRunning
 | 
				
			||||||
 | 
				
			|||||||
@ -252,7 +252,6 @@ AMDemodGUI::AMDemodGUI(PluginAPI* pluginAPI, DeviceSourceAPI *deviceAPI, QWidget
 | 
				
			|||||||
    ui->deltaFrequency->setValueRange(false, 7, -9999999, 9999999);
 | 
					    ui->deltaFrequency->setValueRange(false, 7, -9999999, 9999999);
 | 
				
			||||||
	ui->channelPowerMeter->setColorTheme(LevelMeterSignalDB::ColorGreenAndBlue);
 | 
						ui->channelPowerMeter->setColorTheme(LevelMeterSignalDB::ColorGreenAndBlue);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	//m_channelMarker = new ChannelMarker(this);
 | 
					 | 
				
			||||||
	m_channelMarker.setColor(Qt::yellow);
 | 
						m_channelMarker.setColor(Qt::yellow);
 | 
				
			||||||
	m_channelMarker.setBandwidth(5000);
 | 
						m_channelMarker.setBandwidth(5000);
 | 
				
			||||||
	m_channelMarker.setCenterFrequency(0);
 | 
						m_channelMarker.setCenterFrequency(0);
 | 
				
			||||||
@ -279,7 +278,6 @@ AMDemodGUI::~AMDemodGUI()
 | 
				
			|||||||
	delete m_threadedChannelizer;
 | 
						delete m_threadedChannelizer;
 | 
				
			||||||
	delete m_channelizer;
 | 
						delete m_channelizer;
 | 
				
			||||||
	delete m_amDemod;
 | 
						delete m_amDemod;
 | 
				
			||||||
	//delete m_channelMarker;
 | 
					 | 
				
			||||||
	delete ui;
 | 
						delete ui;
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@ -300,28 +298,8 @@ void AMDemodGUI::applySettings(bool force)
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
		ui->deltaFrequency->setValue(m_channelMarker.getCenterFrequency());
 | 
							ui->deltaFrequency->setValue(m_channelMarker.getCenterFrequency());
 | 
				
			||||||
 | 
					
 | 
				
			||||||
//		m_amDemod->configure(m_amDemod->getInputMessageQueue(),
 | 
						    AMDemod::MsgConfigureAMDemod* message = AMDemod::MsgConfigureAMDemod::create( m_settings, force);
 | 
				
			||||||
//			ui->rfBW->value() * 100.0,
 | 
						    m_amDemod->getInputMessageQueue()->push(message);
 | 
				
			||||||
//			ui->volume->value() / 10.0,
 | 
					 | 
				
			||||||
//			ui->squelch->value(),
 | 
					 | 
				
			||||||
//			ui->audioMute->isChecked(),
 | 
					 | 
				
			||||||
//			ui->bandpassEnable->isChecked(),
 | 
					 | 
				
			||||||
//			ui->copyAudioToUDP->isChecked(),
 | 
					 | 
				
			||||||
//			m_channelMarker.getUDPAddress(),
 | 
					 | 
				
			||||||
//			m_channelMarker.getUDPSendPort(),
 | 
					 | 
				
			||||||
//			force);
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
        m_amDemod->configure(m_amDemod->getInputMessageQueue(),
 | 
					 | 
				
			||||||
            m_settings.m_rfBandwidth,
 | 
					 | 
				
			||||||
            m_settings.m_volume,
 | 
					 | 
				
			||||||
            m_settings.m_squelch,
 | 
					 | 
				
			||||||
            m_settings.m_audioMute,
 | 
					 | 
				
			||||||
            m_settings.m_bandpassEnable,
 | 
					 | 
				
			||||||
            m_settings.m_copyAudioToUDP,
 | 
					 | 
				
			||||||
            m_settings.m_udpAddress,
 | 
					 | 
				
			||||||
            m_settings.m_udpPort,
 | 
					 | 
				
			||||||
            force);
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
				
			|||||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user