1
0
mirror of https://github.com/f4exb/sdrangel.git synced 2025-09-04 06:07:49 -04:00

DSD demod: rescale RF bandwidth and FM deviation

This commit is contained in:
f4exb 2017-10-03 22:49:30 +02:00
parent 878871e120
commit 65ec5015df
3 changed files with 24 additions and 24 deletions

View File

@ -55,9 +55,9 @@ DSDDemod::DSDDemod(DeviceSourceAPI *deviceAPI) :
m_config.m_inputSampleRate = 96000; m_config.m_inputSampleRate = 96000;
m_config.m_inputFrequencyOffset = 0; m_config.m_inputFrequencyOffset = 0;
m_config.m_rfBandwidth = 100; m_config.m_rfBandwidth = 10000.0;
m_config.m_fmDeviation = 5000.0;
m_config.m_demodGain = 100; m_config.m_demodGain = 100;
m_config.m_fmDeviation = 100;
m_config.m_squelchGate = 5; // 10s of ms at 48000 Hz sample rate. Corresponds to 2400 for AGC attack m_config.m_squelchGate = 5; // 10s of ms at 48000 Hz sample rate. Corresponds to 2400 for AGC attack
m_config.m_squelch = -30.0; m_config.m_squelch = -30.0;
m_config.m_volume = 1.0; m_config.m_volume = 1.0;
@ -105,8 +105,8 @@ DSDDemod::~DSDDemod()
} }
void DSDDemod::configure(MessageQueue* messageQueue, void DSDDemod::configure(MessageQueue* messageQueue,
int rfBandwidth, Real rfBandwidth,
int fmDeviation, Real fmDeviation,
int demodGain, int demodGain,
int volume, int volume,
int baudRate, int baudRate,
@ -125,8 +125,8 @@ void DSDDemod::configure(MessageQueue* messageQueue,
bool force) bool force)
{ {
Message* cmd = MsgConfigureDSDDemod::create(rfBandwidth, Message* cmd = MsgConfigureDSDDemod::create(rfBandwidth,
demodGain,
fmDeviation, fmDeviation,
demodGain,
volume, volume,
baudRate, baudRate,
squelchGate, squelchGate,
@ -412,9 +412,9 @@ bool DSDDemod::handleMessage(const Message& cmd)
apply(); apply();
qDebug() << "DSDDemod::handleMessage: MsgConfigureDSDDemod: m_rfBandwidth: " << m_config.m_rfBandwidth * 100 qDebug() << "DSDDemod::handleMessage: MsgConfigureDSDDemod: m_rfBandwidth: " << m_config.m_rfBandwidth
<< " m_fmDeviation: " << m_config.m_fmDeviation
<< " m_demodGain: " << m_config.m_demodGain / 100.0 << " m_demodGain: " << m_config.m_demodGain / 100.0
<< " m_fmDeviation: " << m_config.m_fmDeviation * 100
<< " m_volume: " << m_config.m_volume / 10.0 << " m_volume: " << m_config.m_volume / 10.0
<< " m_baudRate: " << m_config.m_baudRate << " m_baudRate: " << m_config.m_baudRate
<< " m_squelchGate" << m_config.m_squelchGate << " m_squelchGate" << m_config.m_squelchGate
@ -456,7 +456,7 @@ void DSDDemod::apply(bool force)
(m_config.m_rfBandwidth != m_running.m_rfBandwidth) || force) (m_config.m_rfBandwidth != m_running.m_rfBandwidth) || force)
{ {
m_settingsMutex.lock(); m_settingsMutex.lock();
m_interpolator.create(16, m_config.m_inputSampleRate, (m_config.m_rfBandwidth * 100) / 2.2); m_interpolator.create(16, m_config.m_inputSampleRate, (m_config.m_rfBandwidth) / 2.2);
m_interpolatorDistanceRemain = 0; m_interpolatorDistanceRemain = 0;
m_interpolatorDistance = (Real) m_config.m_inputSampleRate / (Real) m_config.m_audioSampleRate; m_interpolatorDistance = (Real) m_config.m_inputSampleRate / (Real) m_config.m_audioSampleRate;
m_phaseDiscri.setFMScaling((float) m_config.m_rfBandwidth / (float) m_config.m_fmDeviation); m_phaseDiscri.setFMScaling((float) m_config.m_rfBandwidth / (float) m_config.m_fmDeviation);

View File

@ -69,8 +69,8 @@ public:
void setScopeSink(BasebandSampleSink* sampleSink) { m_scope = sampleSink; } void setScopeSink(BasebandSampleSink* sampleSink) { m_scope = sampleSink; }
void configure(MessageQueue* messageQueue, void configure(MessageQueue* messageQueue,
int rfBandwidth, Real rfBandwidth,
int fmDeviation, Real fmDeviation,
int demodGain, int demodGain,
int volume, int volume,
int baudRate, int baudRate,
@ -139,9 +139,9 @@ private:
MESSAGE_CLASS_DECLARATION MESSAGE_CLASS_DECLARATION
public: public:
int getRFBandwidth() const { return m_rfBandwidth; } Real getRFBandwidth() const { return m_rfBandwidth; }
Real getFMDeviation() const { return m_fmDeviation; }
int getDemodGain() const { return m_demodGain; } int getDemodGain() const { return m_demodGain; }
int getFMDeviation() const { return m_fmDeviation; }
int getVolume() const { return m_volume; } int getVolume() const { return m_volume; }
int getBaudRate() const { return m_baudRate; } int getBaudRate() const { return m_baudRate; }
int getSquelchGate() const { return m_squelchGate; } int getSquelchGate() const { return m_squelchGate; }
@ -157,9 +157,9 @@ private:
const QString& getUDPAddress() const { return m_udpAddress; } const QString& getUDPAddress() const { return m_udpAddress; }
quint16 getUDPPort() const { return m_udpPort; } quint16 getUDPPort() const { return m_udpPort; }
static MsgConfigureDSDDemod* create(int rfBandwidth, static MsgConfigureDSDDemod* create(Real rfBandwidth,
Real fmDeviation,
int demodGain, int demodGain,
int fmDeviation,
int volume, int volume,
int baudRate, int baudRate,
int squelchGate, int squelchGate,
@ -177,8 +177,8 @@ private:
bool force) bool force)
{ {
return new MsgConfigureDSDDemod(rfBandwidth, return new MsgConfigureDSDDemod(rfBandwidth,
demodGain,
fmDeviation, fmDeviation,
demodGain,
volume, volume,
baudRate, baudRate,
squelchGate, squelchGate,
@ -198,8 +198,8 @@ private:
private: private:
Real m_rfBandwidth; Real m_rfBandwidth;
Real m_fmDeviation;
Real m_demodGain; Real m_demodGain;
int m_fmDeviation;
int m_volume; int m_volume;
int m_baudRate; int m_baudRate;
int m_squelchGate; int m_squelchGate;
@ -217,8 +217,8 @@ private:
bool m_force; bool m_force;
MsgConfigureDSDDemod(int rfBandwidth, MsgConfigureDSDDemod(int rfBandwidth,
int demodGain,
int fmDeviation, int fmDeviation,
int demodGain,
int volume, int volume,
int baudRate, int baudRate,
int squelchGate, int squelchGate,
@ -236,8 +236,8 @@ private:
bool force) : bool force) :
Message(), Message(),
m_rfBandwidth(rfBandwidth), m_rfBandwidth(rfBandwidth),
m_demodGain(demodGain),
m_fmDeviation(fmDeviation), m_fmDeviation(fmDeviation),
m_demodGain(demodGain),
m_volume(volume), m_volume(volume),
m_baudRate(baudRate), m_baudRate(baudRate),
m_squelchGate(squelchGate), m_squelchGate(squelchGate),
@ -264,11 +264,11 @@ private:
struct Config { struct Config {
int m_inputSampleRate; int m_inputSampleRate;
qint64 m_inputFrequencyOffset; qint64 m_inputFrequencyOffset;
int m_rfBandwidth; Real m_rfBandwidth;
Real m_fmDeviation;
int m_demodGain; int m_demodGain;
int m_volume; int m_volume;
int m_baudRate; int m_baudRate;
int m_fmDeviation;
int m_squelchGate; int m_squelchGate;
Real m_squelch; Real m_squelch;
bool m_audioMute; bool m_audioMute;
@ -286,11 +286,11 @@ private:
Config() : Config() :
m_inputSampleRate(-1), m_inputSampleRate(-1),
m_inputFrequencyOffset(0), m_inputFrequencyOffset(0),
m_rfBandwidth(-1), m_rfBandwidth(10000.0),
m_fmDeviation(5000.0),
m_demodGain(-1), m_demodGain(-1),
m_volume(-1), m_volume(-1),
m_baudRate(4800), m_baudRate(4800),
m_fmDeviation(1),
m_squelchGate(1), m_squelchGate(1),
m_squelch(0), m_squelch(0),
m_audioMute(false), m_audioMute(false),

View File

@ -407,8 +407,8 @@ void DSDDemodGUI::applySettings(bool force)
ui->tdmaStereoSplit->setChecked(m_tdmaStereo); ui->tdmaStereoSplit->setChecked(m_tdmaStereo);
m_dsdDemod->configure(m_dsdDemod->getInputMessageQueue(), m_dsdDemod->configure(m_dsdDemod->getInputMessageQueue(),
ui->rfBW->value(), ui->rfBW->value() * 100.0,
ui->fmDeviation->value(), ui->fmDeviation->value() * 100.0,
ui->demodGain->value(), ui->demodGain->value(),
ui->volume->value(), ui->volume->value(),
DSDDemodBaudRates::getRate(ui->baudRate->currentIndex()), DSDDemodBaudRates::getRate(ui->baudRate->currentIndex()),