mirror of
				https://github.com/f4exb/sdrangel.git
				synced 2025-10-26 02:20:26 -04:00 
			
		
		
		
	AM modulator: GUI and modulator separation phase1
This commit is contained in:
		
							parent
							
								
									b635e3c0ee
								
							
						
					
					
						commit
						8782abe31f
					
				| @ -24,6 +24,8 @@ | |||||||
| #include <dsp/upchannelizer.h> | #include <dsp/upchannelizer.h> | ||||||
| #include "dsp/dspengine.h" | #include "dsp/dspengine.h" | ||||||
| #include "dsp/pidcontroller.h" | #include "dsp/pidcontroller.h" | ||||||
|  | #include "dsp/threadedbasebandsamplesource.h" | ||||||
|  | #include "device/devicesinkapi.h" | ||||||
| 
 | 
 | ||||||
| MESSAGE_CLASS_DEFINITION(AMMod::MsgConfigureAMMod, Message) | MESSAGE_CLASS_DEFINITION(AMMod::MsgConfigureAMMod, Message) | ||||||
| MESSAGE_CLASS_DEFINITION(AMMod::MsgConfigureChannelizer, Message) | MESSAGE_CLASS_DEFINITION(AMMod::MsgConfigureChannelizer, Message) | ||||||
| @ -36,7 +38,8 @@ MESSAGE_CLASS_DEFINITION(AMMod::MsgReportFileSourceStreamTiming, Message) | |||||||
| 
 | 
 | ||||||
| const int AMMod::m_levelNbSamples = 480; // every 10ms
 | const int AMMod::m_levelNbSamples = 480; // every 10ms
 | ||||||
| 
 | 
 | ||||||
| AMMod::AMMod() : | AMMod::AMMod(DeviceSinkAPI *deviceAPI) : | ||||||
|  |     m_deviceAPI(deviceAPI), | ||||||
|     m_movingAverage(40, 0), |     m_movingAverage(40, 0), | ||||||
|     m_volumeAGC(40, 0), |     m_volumeAGC(40, 0), | ||||||
|     m_audioFifo(4800), |     m_audioFifo(4800), | ||||||
| @ -67,11 +70,18 @@ AMMod::AMMod() : | |||||||
| 	m_cwKeyer.setMode(CWKeyer::CWNone); | 	m_cwKeyer.setMode(CWKeyer::CWNone); | ||||||
| 	m_cwSmoother.setNbFadeSamples(192); // 4 ms @ 48 kHz
 | 	m_cwSmoother.setNbFadeSamples(192); // 4 ms @ 48 kHz
 | ||||||
| 
 | 
 | ||||||
|  |     m_channelizer = new UpChannelizer(this); | ||||||
|  |     m_threadedChannelizer = new ThreadedBasebandSampleSource(m_channelizer, this); | ||||||
|  |     m_deviceAPI->addThreadedSource(m_threadedChannelizer); | ||||||
|  | 
 | ||||||
|     applySettings(m_settings, true); |     applySettings(m_settings, true); | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| AMMod::~AMMod() | AMMod::~AMMod() | ||||||
| { | { | ||||||
|  |     m_deviceAPI->removeThreadedSource(m_threadedChannelizer); | ||||||
|  |     delete m_threadedChannelizer; | ||||||
|  |     delete m_channelizer; | ||||||
|     DSPEngine::instance()->removeAudioSource(&m_audioFifo); |     DSPEngine::instance()->removeAudioSource(&m_audioFifo); | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
|  | |||||||
| @ -34,6 +34,10 @@ | |||||||
| 
 | 
 | ||||||
| #include "ammodsettings.h" | #include "ammodsettings.h" | ||||||
| 
 | 
 | ||||||
|  | class ThreadedBasebandSampleSource; | ||||||
|  | class UpChannelizer; | ||||||
|  | class DeviceSinkAPI; | ||||||
|  | 
 | ||||||
| class AMMod : public BasebandSampleSource { | class AMMod : public BasebandSampleSource { | ||||||
|     Q_OBJECT |     Q_OBJECT | ||||||
| 
 | 
 | ||||||
| @ -221,7 +225,7 @@ public: | |||||||
| 
 | 
 | ||||||
|     //=================================================================
 |     //=================================================================
 | ||||||
| 
 | 
 | ||||||
|     AMMod(); |     AMMod(DeviceSinkAPI *deviceAPI); | ||||||
|     ~AMMod(); |     ~AMMod(); | ||||||
| 
 | 
 | ||||||
|     virtual void pull(Sample& sample); |     virtual void pull(Sample& sample); | ||||||
| @ -250,6 +254,9 @@ private: | |||||||
|         RSRunning |         RSRunning | ||||||
|     }; |     }; | ||||||
| 
 | 
 | ||||||
|  |     DeviceSinkAPI* m_deviceAPI; | ||||||
|  |     ThreadedBasebandSampleSource* m_threadedChannelizer; | ||||||
|  |     UpChannelizer* m_channelizer; | ||||||
|     AMModSettings m_settings; |     AMModSettings m_settings; | ||||||
| 
 | 
 | ||||||
|     NCO m_carrierNco; |     NCO m_carrierNco; | ||||||
|  | |||||||
| @ -25,7 +25,6 @@ | |||||||
| #include "device/devicesinkapi.h" | #include "device/devicesinkapi.h" | ||||||
| #include "dsp/upchannelizer.h" | #include "dsp/upchannelizer.h" | ||||||
| 
 | 
 | ||||||
| #include "dsp/threadedbasebandsamplesource.h" |  | ||||||
| #include "ui_ammodgui.h" | #include "ui_ammodgui.h" | ||||||
| #include "plugin/pluginapi.h" | #include "plugin/pluginapi.h" | ||||||
| #include "util/simpleserializer.h" | #include "util/simpleserializer.h" | ||||||
| @ -289,12 +288,8 @@ AMModGUI::AMModGUI(PluginAPI* pluginAPI, DeviceSinkAPI *deviceAPI, QWidget* pare | |||||||
| 	connect(this, SIGNAL(widgetRolled(QWidget*,bool)), this, SLOT(onWidgetRolled(QWidget*,bool))); | 	connect(this, SIGNAL(widgetRolled(QWidget*,bool)), this, SLOT(onWidgetRolled(QWidget*,bool))); | ||||||
| 	connect(this, SIGNAL(menuDoubleClickEvent()), this, SLOT(onMenuDoubleClicked())); | 	connect(this, SIGNAL(menuDoubleClickEvent()), this, SLOT(onMenuDoubleClicked())); | ||||||
| 
 | 
 | ||||||
| 	m_amMod = new AMMod(); | 	m_amMod = new AMMod(m_deviceAPI); | ||||||
| 	m_amMod->setMessageQueueToGUI(getInputMessageQueue()); | 	m_amMod->setMessageQueueToGUI(getInputMessageQueue()); | ||||||
| 	m_channelizer = new UpChannelizer(m_amMod); |  | ||||||
| 	m_threadedChannelizer = new ThreadedBasebandSampleSource(m_channelizer, this); |  | ||||||
| 	//m_pluginAPI->addThreadedSink(m_threadedChannelizer);
 |  | ||||||
|     m_deviceAPI->addThreadedSource(m_threadedChannelizer); |  | ||||||
| 
 | 
 | ||||||
| 	connect(&m_pluginAPI->getMainWindow()->getMasterTimer(), SIGNAL(timeout()), this, SLOT(tick())); | 	connect(&m_pluginAPI->getMainWindow()->getMasterTimer(), SIGNAL(timeout()), this, SLOT(tick())); | ||||||
| 
 | 
 | ||||||
| @ -334,9 +329,6 @@ AMModGUI::AMModGUI(PluginAPI* pluginAPI, DeviceSinkAPI *deviceAPI, QWidget* pare | |||||||
| AMModGUI::~AMModGUI() | AMModGUI::~AMModGUI() | ||||||
| { | { | ||||||
|     m_deviceAPI->removeChannelInstance(this); |     m_deviceAPI->removeChannelInstance(this); | ||||||
| 	m_deviceAPI->removeThreadedSource(m_threadedChannelizer); |  | ||||||
| 	delete m_threadedChannelizer; |  | ||||||
| 	delete m_channelizer; |  | ||||||
| 	delete m_amMod; | 	delete m_amMod; | ||||||
| 	delete ui; | 	delete ui; | ||||||
| } | } | ||||||
| @ -352,9 +344,10 @@ void AMModGUI::applySettings(bool force __attribute((unused))) | |||||||
| 	{ | 	{ | ||||||
| 		setTitleColor(m_channelMarker.getColor()); | 		setTitleColor(m_channelMarker.getColor()); | ||||||
| 
 | 
 | ||||||
| 		m_channelizer->configure(m_channelizer->getInputMessageQueue(), | 		AMMod::MsgConfigureChannelizer *msgConfigure = AMMod::MsgConfigureChannelizer::create( | ||||||
|             48000, |             48000, | ||||||
|             m_channelMarker.getCenterFrequency()); |             m_channelMarker.getCenterFrequency()); | ||||||
|  |         m_amMod->getInputMessageQueue()->push(msgConfigure); | ||||||
| 
 | 
 | ||||||
| 		ui->deltaFrequency->setValue(m_channelMarker.getCenterFrequency()); | 		ui->deltaFrequency->setValue(m_channelMarker.getCenterFrequency()); | ||||||
| 
 | 
 | ||||||
|  | |||||||
| @ -29,8 +29,6 @@ | |||||||
| class PluginAPI; | class PluginAPI; | ||||||
| class DeviceSinkAPI; | class DeviceSinkAPI; | ||||||
| 
 | 
 | ||||||
| class ThreadedBasebandSampleSource; |  | ||||||
| class UpChannelizer; |  | ||||||
| class AMMod; | class AMMod; | ||||||
| 
 | 
 | ||||||
| namespace Ui { | namespace Ui { | ||||||
| @ -91,8 +89,6 @@ private: | |||||||
|     bool m_basicSettingsShown; |     bool m_basicSettingsShown; | ||||||
|     bool m_doApplySettings; |     bool m_doApplySettings; | ||||||
| 
 | 
 | ||||||
|     ThreadedBasebandSampleSource* m_threadedChannelizer; |  | ||||||
|     UpChannelizer* m_channelizer; |  | ||||||
|     AMMod* m_amMod; |     AMMod* m_amMod; | ||||||
|     MovingAverage<double> m_channelPowerDbAvg; |     MovingAverage<double> m_channelPowerDbAvg; | ||||||
| 
 | 
 | ||||||
|  | |||||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user