1
0
mirror of https://github.com/f4exb/sdrangel.git synced 2025-05-28 05:02:25 -04:00

AM Demod: use settings object to pass data from GUI to demod

This commit is contained in:
f4exb 2017-09-27 00:16:35 +02:00
parent 1bb612bf62
commit 7159ffff09
3 changed files with 32 additions and 176 deletions

View File

@ -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) ||

View File

@ -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

View File

@ -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);
}
}