mirror of
				https://github.com/f4exb/sdrangel.git
				synced 2025-11-03 13:11:20 -05:00 
			
		
		
		
	AM demod: use settings object to apply settings
This commit is contained in:
		
							parent
							
								
									69a94c6004
								
							
						
					
					
						commit
						1bb612bf62
					
				@ -43,13 +43,6 @@ AMDemod::AMDemod() :
 | 
				
			|||||||
{
 | 
					{
 | 
				
			||||||
	setObjectName("AMDemod");
 | 
						setObjectName("AMDemod");
 | 
				
			||||||
 | 
					
 | 
				
			||||||
//	m_config.m_inputSampleRate = 96000;
 | 
					 | 
				
			||||||
//	m_config.m_inputFrequencyOffset = 0;
 | 
					 | 
				
			||||||
//	m_config.m_rfBandwidth = 5000;
 | 
					 | 
				
			||||||
//	m_config.m_squelch = -40.0;
 | 
					 | 
				
			||||||
//	m_config.m_volume = 2.0;
 | 
					 | 
				
			||||||
//	m_config.m_audioSampleRate = DSPEngine::instance()->getAudioSampleRate();
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
	m_audioBuffer.resize(1<<14);
 | 
						m_audioBuffer.resize(1<<14);
 | 
				
			||||||
	m_audioBufferFill = 0;
 | 
						m_audioBufferFill = 0;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
				
			|||||||
@ -138,37 +138,7 @@ private:
 | 
				
			|||||||
		RSRunning
 | 
							RSRunning
 | 
				
			||||||
	};
 | 
						};
 | 
				
			||||||
 | 
					
 | 
				
			||||||
//	struct Config {
 | 
					 | 
				
			||||||
//		int m_inputSampleRate;
 | 
					 | 
				
			||||||
//		qint64 m_inputFrequencyOffset;
 | 
					 | 
				
			||||||
//		Real m_rfBandwidth;
 | 
					 | 
				
			||||||
//		Real m_squelch;
 | 
					 | 
				
			||||||
//		Real m_volume;
 | 
					 | 
				
			||||||
//		quint32 m_audioSampleRate;
 | 
					 | 
				
			||||||
//		bool m_audioMute;
 | 
					 | 
				
			||||||
//		bool m_bandpassEnable;
 | 
					 | 
				
			||||||
//        bool m_copyAudioToUDP;
 | 
					 | 
				
			||||||
//        QString m_udpAddress;
 | 
					 | 
				
			||||||
//        quint16 m_udpPort;
 | 
					 | 
				
			||||||
//
 | 
					 | 
				
			||||||
//		Config() :
 | 
					 | 
				
			||||||
//			m_inputSampleRate(-1),
 | 
					 | 
				
			||||||
//			m_inputFrequencyOffset(0),
 | 
					 | 
				
			||||||
//			m_rfBandwidth(-1),
 | 
					 | 
				
			||||||
//			m_squelch(0),
 | 
					 | 
				
			||||||
//			m_volume(0),
 | 
					 | 
				
			||||||
//			m_audioSampleRate(0),
 | 
					 | 
				
			||||||
//			m_audioMute(false),
 | 
					 | 
				
			||||||
//			m_bandpassEnable(false),
 | 
					 | 
				
			||||||
//            m_copyAudioToUDP(false),
 | 
					 | 
				
			||||||
//            m_udpAddress("127.0.0.1"),
 | 
					 | 
				
			||||||
//            m_udpPort(9999)
 | 
					 | 
				
			||||||
//		{ }
 | 
					 | 
				
			||||||
//	};
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    AMDemodSettings m_settings;
 | 
					    AMDemodSettings m_settings;
 | 
				
			||||||
//	Config m_config;
 | 
					 | 
				
			||||||
//	Config m_running;
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
	NCO m_nco;
 | 
						NCO m_nco;
 | 
				
			||||||
	Interpolator m_interpolator;
 | 
						Interpolator m_interpolator;
 | 
				
			||||||
 | 
				
			|||||||
@ -155,6 +155,9 @@ bool AMDemodGUI::handleMessage(const Message& message __attribute__((unused)))
 | 
				
			|||||||
void AMDemodGUI::channelMarkerChanged()
 | 
					void AMDemodGUI::channelMarkerChanged()
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
    this->setWindowTitle(m_channelMarker.getTitle());
 | 
					    this->setWindowTitle(m_channelMarker.getTitle());
 | 
				
			||||||
 | 
					    m_settings.m_inputFrequencyOffset = m_channelMarker.getCenterFrequency();
 | 
				
			||||||
 | 
					    m_settings.m_udpAddress = m_channelMarker.getUDPAddress(),
 | 
				
			||||||
 | 
					    m_settings.m_udpPort =  m_channelMarker.getUDPSendPort(),
 | 
				
			||||||
    displayUDPAddress();
 | 
					    displayUDPAddress();
 | 
				
			||||||
	applySettings();
 | 
						applySettings();
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
@ -162,10 +165,13 @@ void AMDemodGUI::channelMarkerChanged()
 | 
				
			|||||||
void AMDemodGUI::on_deltaFrequency_changed(qint64 value)
 | 
					void AMDemodGUI::on_deltaFrequency_changed(qint64 value)
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
    m_channelMarker.setCenterFrequency(value);
 | 
					    m_channelMarker.setCenterFrequency(value);
 | 
				
			||||||
 | 
					    m_settings.m_inputFrequencyOffset = m_channelMarker.getCenterFrequency();
 | 
				
			||||||
 | 
					    applySettings();
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
void AMDemodGUI::on_bandpassEnable_toggled(bool checked __attribute__((unused)))
 | 
					void AMDemodGUI::on_bandpassEnable_toggled(bool checked)
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
 | 
					    m_settings.m_bandpassEnable = checked;
 | 
				
			||||||
    applySettings();
 | 
					    applySettings();
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@ -173,28 +179,33 @@ void AMDemodGUI::on_rfBW_valueChanged(int value)
 | 
				
			|||||||
{
 | 
					{
 | 
				
			||||||
	ui->rfBWText->setText(QString("%1 kHz").arg(value / 10.0, 0, 'f', 1));
 | 
						ui->rfBWText->setText(QString("%1 kHz").arg(value / 10.0, 0, 'f', 1));
 | 
				
			||||||
	m_channelMarker.setBandwidth(value * 100);
 | 
						m_channelMarker.setBandwidth(value * 100);
 | 
				
			||||||
 | 
						m_settings.m_rfBandwidth = value * 100;
 | 
				
			||||||
	applySettings();
 | 
						applySettings();
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
void AMDemodGUI::on_volume_valueChanged(int value)
 | 
					void AMDemodGUI::on_volume_valueChanged(int value)
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
	ui->volumeText->setText(QString("%1").arg(value / 10.0, 0, 'f', 1));
 | 
						ui->volumeText->setText(QString("%1").arg(value / 10.0, 0, 'f', 1));
 | 
				
			||||||
 | 
						m_settings.m_volume = value / 10.0;
 | 
				
			||||||
	applySettings();
 | 
						applySettings();
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
void AMDemodGUI::on_squelch_valueChanged(int value)
 | 
					void AMDemodGUI::on_squelch_valueChanged(int value)
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
	ui->squelchText->setText(QString("%1 dB").arg(value));
 | 
						ui->squelchText->setText(QString("%1 dB").arg(value));
 | 
				
			||||||
 | 
						m_settings.m_squelch = value;
 | 
				
			||||||
	applySettings();
 | 
						applySettings();
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
void AMDemodGUI::on_audioMute_toggled(bool checked __attribute__((unused)))
 | 
					void AMDemodGUI::on_audioMute_toggled(bool checked)
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
 | 
					    m_settings.m_audioMute = checked;
 | 
				
			||||||
	applySettings();
 | 
						applySettings();
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
void AMDemodGUI::on_copyAudioToUDP_toggled(bool checked __attribute__((unused)))
 | 
					void AMDemodGUI::on_copyAudioToUDP_toggled(bool checked)
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
 | 
					    m_settings.m_copyAudioToUDP = checked;
 | 
				
			||||||
    applySettings();
 | 
					    applySettings();
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@ -257,6 +268,7 @@ AMDemodGUI::AMDemodGUI(PluginAPI* pluginAPI, DeviceSourceAPI *deviceAPI, QWidget
 | 
				
			|||||||
    m_deviceAPI->addChannelMarker(&m_channelMarker);
 | 
					    m_deviceAPI->addChannelMarker(&m_channelMarker);
 | 
				
			||||||
    m_deviceAPI->addRollupWidget(this);
 | 
					    m_deviceAPI->addRollupWidget(this);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    displaySettings();
 | 
				
			||||||
	applySettings(true);
 | 
						applySettings(true);
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@ -288,19 +300,57 @@ void AMDemodGUI::applySettings(bool force)
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
		ui->deltaFrequency->setValue(m_channelMarker.getCenterFrequency());
 | 
							ui->deltaFrequency->setValue(m_channelMarker.getCenterFrequency());
 | 
				
			||||||
 | 
					
 | 
				
			||||||
		m_amDemod->configure(m_amDemod->getInputMessageQueue(),
 | 
					//		m_amDemod->configure(m_amDemod->getInputMessageQueue(),
 | 
				
			||||||
			ui->rfBW->value() * 100.0,
 | 
					//			ui->rfBW->value() * 100.0,
 | 
				
			||||||
			ui->volume->value() / 10.0,
 | 
					//			ui->volume->value() / 10.0,
 | 
				
			||||||
			ui->squelch->value(),
 | 
					//			ui->squelch->value(),
 | 
				
			||||||
			ui->audioMute->isChecked(),
 | 
					//			ui->audioMute->isChecked(),
 | 
				
			||||||
			ui->bandpassEnable->isChecked(),
 | 
					//			ui->bandpassEnable->isChecked(),
 | 
				
			||||||
			ui->copyAudioToUDP->isChecked(),
 | 
					//			ui->copyAudioToUDP->isChecked(),
 | 
				
			||||||
			m_channelMarker.getUDPAddress(),
 | 
					//			m_channelMarker.getUDPAddress(),
 | 
				
			||||||
			m_channelMarker.getUDPSendPort(),
 | 
					//			m_channelMarker.getUDPSendPort(),
 | 
				
			||||||
			force);
 | 
					//			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);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					void AMDemodGUI::displaySettings()
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
 | 
					    blockApplySettings(true);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    int displayValue = m_settings.m_rfBandwidth/100.0;
 | 
				
			||||||
 | 
					    ui->rfBW->setValue(displayValue);
 | 
				
			||||||
 | 
					    ui->rfBWText->setText(QString("%1 kHz").arg(displayValue / 10.0, 0, 'f', 1));
 | 
				
			||||||
 | 
					    m_channelMarker.setBandwidth(m_settings.m_rfBandwidth);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    ui->volume->setValue(m_settings.m_volume * 10.0);
 | 
				
			||||||
 | 
					    ui->volumeText->setText(QString("%1").arg(m_settings.m_volume, 0, 'f', 1));
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    ui->squelch->setValue(m_settings.m_squelch);
 | 
				
			||||||
 | 
					    ui->squelchText->setText(QString("%1 dB").arg(m_settings.m_squelch));
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    ui->audioMute->setChecked(m_settings.m_audioMute);
 | 
				
			||||||
 | 
					    ui->bandpassEnable->setChecked(m_settings.m_bandpassEnable);
 | 
				
			||||||
 | 
					    ui->copyAudioToUDP->setChecked(m_settings.m_copyAudioToUDP);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    m_channelMarker.setCenterFrequency(m_settings.m_inputFrequencyOffset);
 | 
				
			||||||
 | 
					    m_channelMarker.setUDPAddress(m_settings.m_udpAddress);
 | 
				
			||||||
 | 
					    m_channelMarker.setUDPSendPort(m_settings.m_udpPort);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    blockApplySettings(false);
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
void AMDemodGUI::displayUDPAddress()
 | 
					void AMDemodGUI::displayUDPAddress()
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
    ui->copyAudioToUDP->setToolTip(QString("Copy audio output to UDP %1:%2").arg(m_channelMarker.getUDPAddress()).arg(m_channelMarker.getUDPSendPort()));
 | 
					    ui->copyAudioToUDP->setToolTip(QString("Copy audio output to UDP %1:%2").arg(m_channelMarker.getUDPAddress()).arg(m_channelMarker.getUDPSendPort()));
 | 
				
			||||||
 | 
				
			|||||||
@ -6,6 +6,7 @@
 | 
				
			|||||||
#include "dsp/channelmarker.h"
 | 
					#include "dsp/channelmarker.h"
 | 
				
			||||||
#include "dsp/movingaverage.h"
 | 
					#include "dsp/movingaverage.h"
 | 
				
			||||||
#include "util/messagequeue.h"
 | 
					#include "util/messagequeue.h"
 | 
				
			||||||
 | 
					#include "amdemodsettings.h"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
class PluginAPI;
 | 
					class PluginAPI;
 | 
				
			||||||
class DeviceSourceAPI;
 | 
					class DeviceSourceAPI;
 | 
				
			||||||
@ -56,6 +57,7 @@ private:
 | 
				
			|||||||
	PluginAPI* m_pluginAPI;
 | 
						PluginAPI* m_pluginAPI;
 | 
				
			||||||
	DeviceSourceAPI* m_deviceAPI;
 | 
						DeviceSourceAPI* m_deviceAPI;
 | 
				
			||||||
	ChannelMarker m_channelMarker;
 | 
						ChannelMarker m_channelMarker;
 | 
				
			||||||
 | 
						AMDemodSettings m_settings;
 | 
				
			||||||
	bool m_doApplySettings;
 | 
						bool m_doApplySettings;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	ThreadedBasebandSampleSink* m_threadedChannelizer;
 | 
						ThreadedBasebandSampleSink* m_threadedChannelizer;
 | 
				
			||||||
@ -70,6 +72,7 @@ private:
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
    void blockApplySettings(bool block);
 | 
					    void blockApplySettings(bool block);
 | 
				
			||||||
	void applySettings(bool force = false);
 | 
						void applySettings(bool force = false);
 | 
				
			||||||
 | 
						void displaySettings();
 | 
				
			||||||
	void displayUDPAddress();
 | 
						void displayUDPAddress();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	void leaveEvent(QEvent*);
 | 
						void leaveEvent(QEvent*);
 | 
				
			||||||
 | 
				
			|||||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user