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;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
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)))
 | 
			
		||||
{
 | 
			
		||||
	Complex ci;
 | 
			
		||||
@ -171,18 +148,13 @@ bool AMDemod::handleMessage(const Message& cmd)
 | 
			
		||||
	{
 | 
			
		||||
        MsgConfigureAMDemod& cfg = (MsgConfigureAMDemod&) cmd;
 | 
			
		||||
 | 
			
		||||
        AMDemodSettings settings = m_settings;
 | 
			
		||||
        AMDemodSettings settings = cfg.getSettings();
 | 
			
		||||
 | 
			
		||||
	    settings.m_rfBandwidth = cfg.getRFBandwidth();
 | 
			
		||||
	    settings.m_volume = cfg.getVolume();
 | 
			
		||||
	    settings.m_squelch = cfg.getSquelch();
 | 
			
		||||
        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();
 | 
			
		||||
        // These settings are set with DownChannelizer::MsgChannelizerNotification
 | 
			
		||||
	    settings.m_inputSampleRate = m_settings.m_inputSampleRate;
 | 
			
		||||
	    settings.m_inputFrequencyOffset = m_settings.m_inputFrequencyOffset;
 | 
			
		||||
 | 
			
		||||
        applySettings(settings);
 | 
			
		||||
        applySettings(settings, cfg.getForce());
 | 
			
		||||
 | 
			
		||||
        qDebug() << "AMDemod::handleMessage: MsgConfigureAMDemod:"
 | 
			
		||||
                << " m_rfBandwidth: " << settings.m_rfBandwidth
 | 
			
		||||
@ -192,7 +164,8 @@ bool AMDemod::handleMessage(const Message& cmd)
 | 
			
		||||
                << " m_bandpassEnable: " << settings.m_bandpassEnable
 | 
			
		||||
                << " m_copyAudioToUDP: " << settings.m_copyAudioToUDP
 | 
			
		||||
                << " m_udpAddress: " << settings.m_udpAddress
 | 
			
		||||
                << " m_udpPort: " << settings.m_udpPort;
 | 
			
		||||
                << " m_udpPort: " << settings.m_udpPort
 | 
			
		||||
                << " force: " << cfg.getForce();
 | 
			
		||||
 | 
			
		||||
		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)
 | 
			
		||||
{
 | 
			
		||||
    if ((m_settings.m_inputFrequencyOffset != settings.m_inputFrequencyOffset) ||
 | 
			
		||||
 | 
			
		||||
@ -32,20 +32,32 @@
 | 
			
		||||
class AMDemod : public BasebandSampleSink {
 | 
			
		||||
	Q_OBJECT
 | 
			
		||||
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();
 | 
			
		||||
 | 
			
		||||
	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 start();
 | 
			
		||||
	virtual void stop();
 | 
			
		||||
@ -65,74 +77,6 @@ public:
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
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 {
 | 
			
		||||
		RSInitialFill,
 | 
			
		||||
		RSRunning
 | 
			
		||||
 | 
			
		||||
@ -252,7 +252,6 @@ AMDemodGUI::AMDemodGUI(PluginAPI* pluginAPI, DeviceSourceAPI *deviceAPI, QWidget
 | 
			
		||||
    ui->deltaFrequency->setValueRange(false, 7, -9999999, 9999999);
 | 
			
		||||
	ui->channelPowerMeter->setColorTheme(LevelMeterSignalDB::ColorGreenAndBlue);
 | 
			
		||||
 | 
			
		||||
	//m_channelMarker = new ChannelMarker(this);
 | 
			
		||||
	m_channelMarker.setColor(Qt::yellow);
 | 
			
		||||
	m_channelMarker.setBandwidth(5000);
 | 
			
		||||
	m_channelMarker.setCenterFrequency(0);
 | 
			
		||||
@ -279,7 +278,6 @@ AMDemodGUI::~AMDemodGUI()
 | 
			
		||||
	delete m_threadedChannelizer;
 | 
			
		||||
	delete m_channelizer;
 | 
			
		||||
	delete m_amDemod;
 | 
			
		||||
	//delete m_channelMarker;
 | 
			
		||||
	delete ui;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
@ -300,28 +298,8 @@ void AMDemodGUI::applySettings(bool force)
 | 
			
		||||
 | 
			
		||||
		ui->deltaFrequency->setValue(m_channelMarker.getCenterFrequency());
 | 
			
		||||
 | 
			
		||||
//		m_amDemod->configure(m_amDemod->getInputMessageQueue(),
 | 
			
		||||
//			ui->rfBW->value() * 100.0,
 | 
			
		||||
//			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);
 | 
			
		||||
 | 
			
		||||
	    AMDemod::MsgConfigureAMDemod* message = AMDemod::MsgConfigureAMDemod::create( m_settings, force);
 | 
			
		||||
	    m_amDemod->getInputMessageQueue()->push(message);
 | 
			
		||||
	}
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user