mirror of
https://github.com/f4exb/sdrangel.git
synced 2025-05-29 05:22:25 -04: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