mirror of
https://github.com/AlexandreRouma/SDRPlusPlus.git
synced 2025-07-10 11:05:22 +02:00
DSP code cleanup
This commit is contained in:
@ -44,9 +44,11 @@ namespace dsp {
|
||||
phasorSpeed = (2 * FL_M_PI) / (_sampleRate / _deviation);
|
||||
generic_block<FloatFMDemod>::registerInput(_in);
|
||||
generic_block<FloatFMDemod>::registerOutput(&out);
|
||||
generic_block<FloatFMDemod>::_block_init = true;
|
||||
}
|
||||
|
||||
void setInput(stream<complex_t>* in) {
|
||||
assert(generic_block<FloatFMDemod>::_block_init);
|
||||
std::lock_guard<std::mutex> lck(generic_block<FloatFMDemod>::ctrlMtx);
|
||||
generic_block<FloatFMDemod>::tempStop();
|
||||
generic_block<FloatFMDemod>::unregisterInput(_in);
|
||||
@ -56,6 +58,7 @@ namespace dsp {
|
||||
}
|
||||
|
||||
void setSampleRate(float sampleRate) {
|
||||
assert(generic_block<FloatFMDemod>::_block_init);
|
||||
std::lock_guard<std::mutex> lck(generic_block<FloatFMDemod>::ctrlMtx);
|
||||
generic_block<FloatFMDemod>::tempStop();
|
||||
_sampleRate = sampleRate;
|
||||
@ -64,10 +67,12 @@ namespace dsp {
|
||||
}
|
||||
|
||||
float getSampleRate() {
|
||||
assert(generic_block<FloatFMDemod>::_block_init);
|
||||
return _sampleRate;
|
||||
}
|
||||
|
||||
void setDeviation(float deviation) {
|
||||
assert(generic_block<FloatFMDemod>::_block_init);
|
||||
std::lock_guard<std::mutex> lck(generic_block<FloatFMDemod>::ctrlMtx);
|
||||
generic_block<FloatFMDemod>::tempStop();
|
||||
_deviation = deviation;
|
||||
@ -76,6 +81,7 @@ namespace dsp {
|
||||
}
|
||||
|
||||
float getDeviation() {
|
||||
assert(generic_block<FloatFMDemod>::_block_init);
|
||||
return _deviation;
|
||||
}
|
||||
|
||||
@ -121,9 +127,11 @@ namespace dsp {
|
||||
phasorSpeed = (2 * FL_M_PI) / (_sampleRate / _deviation);
|
||||
generic_block<FMDemod>::registerInput(_in);
|
||||
generic_block<FMDemod>::registerOutput(&out);
|
||||
generic_block<FMDemod>::_block_init = true;
|
||||
}
|
||||
|
||||
void setInput(stream<complex_t>* in) {
|
||||
assert(generic_block<FMDemod>::_block_init);
|
||||
std::lock_guard<std::mutex> lck(generic_block<FMDemod>::ctrlMtx);
|
||||
generic_block<FMDemod>::tempStop();
|
||||
generic_block<FMDemod>::unregisterInput(_in);
|
||||
@ -133,6 +141,7 @@ namespace dsp {
|
||||
}
|
||||
|
||||
void setSampleRate(float sampleRate) {
|
||||
assert(generic_block<FMDemod>::_block_init);
|
||||
std::lock_guard<std::mutex> lck(generic_block<FMDemod>::ctrlMtx);
|
||||
generic_block<FMDemod>::tempStop();
|
||||
_sampleRate = sampleRate;
|
||||
@ -141,15 +150,18 @@ namespace dsp {
|
||||
}
|
||||
|
||||
float getSampleRate() {
|
||||
assert(generic_block<FMDemod>::_block_init);
|
||||
return _sampleRate;
|
||||
}
|
||||
|
||||
void setDeviation(float deviation) {
|
||||
assert(generic_block<FMDemod>::_block_init);
|
||||
_deviation = deviation;
|
||||
phasorSpeed = (2 * FL_M_PI) / (_sampleRate / _deviation);
|
||||
}
|
||||
|
||||
float getDeviation() {
|
||||
assert(generic_block<FMDemod>::_block_init);
|
||||
return _deviation;
|
||||
}
|
||||
|
||||
@ -194,9 +206,11 @@ namespace dsp {
|
||||
_in = in;
|
||||
generic_block<AMDemod>::registerInput(_in);
|
||||
generic_block<AMDemod>::registerOutput(&out);
|
||||
generic_block<AMDemod>::_block_init = true;
|
||||
}
|
||||
|
||||
void setInput(stream<complex_t>* in) {
|
||||
assert(generic_block<AMDemod>::_block_init);
|
||||
std::lock_guard<std::mutex> lck(generic_block<AMDemod>::ctrlMtx);
|
||||
generic_block<AMDemod>::tempStop();
|
||||
generic_block<AMDemod>::unregisterInput(_in);
|
||||
@ -237,8 +251,10 @@ namespace dsp {
|
||||
SSBDemod(stream<complex_t>* in, float sampleRate, float bandWidth, int mode) { init(in, sampleRate, bandWidth, mode); }
|
||||
|
||||
~SSBDemod() {
|
||||
if (!generic_block<SSBDemod>::_block_init) { return; }
|
||||
generic_block<SSBDemod>::stop();
|
||||
delete[] buffer;
|
||||
generic_block<SSBDemod>::_block_init = false;
|
||||
}
|
||||
|
||||
enum {
|
||||
@ -267,9 +283,11 @@ namespace dsp {
|
||||
buffer = new lv_32fc_t[STREAM_BUFFER_SIZE];
|
||||
generic_block<SSBDemod>::registerInput(_in);
|
||||
generic_block<SSBDemod>::registerOutput(&out);
|
||||
generic_block<SSBDemod>::_block_init = true;
|
||||
}
|
||||
|
||||
void setInput(stream<complex_t>* in) {
|
||||
assert(generic_block<SSBDemod>::_block_init);
|
||||
std::lock_guard<std::mutex> lck(generic_block<SSBDemod>::ctrlMtx);
|
||||
generic_block<SSBDemod>::tempStop();
|
||||
generic_block<SSBDemod>::unregisterInput(_in);
|
||||
@ -279,7 +297,7 @@ namespace dsp {
|
||||
}
|
||||
|
||||
void setSampleRate(float sampleRate) {
|
||||
// No need to restart
|
||||
assert(generic_block<SSBDemod>::_block_init);
|
||||
_sampleRate = sampleRate;
|
||||
switch (_mode) {
|
||||
case MODE_USB:
|
||||
@ -295,7 +313,7 @@ namespace dsp {
|
||||
}
|
||||
|
||||
void setBandWidth(float bandWidth) {
|
||||
// No need to restart
|
||||
assert(generic_block<SSBDemod>::_block_init);
|
||||
_bandWidth = bandWidth;
|
||||
switch (_mode) {
|
||||
case MODE_USB:
|
||||
@ -311,6 +329,7 @@ namespace dsp {
|
||||
}
|
||||
|
||||
void setMode(int mode) {
|
||||
assert(generic_block<SSBDemod>::_block_init);
|
||||
_mode = mode;
|
||||
switch (_mode) {
|
||||
case MODE_USB:
|
||||
@ -352,6 +371,7 @@ namespace dsp {
|
||||
class MSKDemod : public generic_hier_block<MSKDemod> {
|
||||
public:
|
||||
MSKDemod() {}
|
||||
|
||||
MSKDemod(stream<complex_t>* input, float sampleRate, float deviation, float baudRate, float omegaGain = (0.01*0.01) / 4, float muGain = 0.01f, float omegaRelLimit = 0.005f) {
|
||||
init(input, sampleRate, deviation, baudRate, omegaGain, muGain, omegaRelLimit);
|
||||
}
|
||||
@ -370,9 +390,11 @@ namespace dsp {
|
||||
|
||||
generic_hier_block<MSKDemod>::registerBlock(&demod);
|
||||
generic_hier_block<MSKDemod>::registerBlock(&recov);
|
||||
generic_hier_block<MSKDemod>::_block_init = true;
|
||||
}
|
||||
|
||||
void setSampleRate(float sampleRate) {
|
||||
assert(generic_hier_block<MSKDemod>::_block_init);
|
||||
generic_hier_block<MSKDemod>::tempStop();
|
||||
_sampleRate = sampleRate;
|
||||
demod.setSampleRate(_sampleRate);
|
||||
@ -381,23 +403,27 @@ namespace dsp {
|
||||
}
|
||||
|
||||
void setDeviation(float deviation) {
|
||||
assert(generic_hier_block<MSKDemod>::_block_init);
|
||||
_deviation = deviation;
|
||||
demod.setDeviation(deviation);
|
||||
}
|
||||
|
||||
void setBaudRate(float baudRate, float omegaRelLimit) {
|
||||
assert(generic_hier_block<MSKDemod>::_block_init);
|
||||
_baudRate = baudRate;
|
||||
_omegaRelLimit = omegaRelLimit;
|
||||
recov.setOmega(_sampleRate / _baudRate, _omegaRelLimit);
|
||||
}
|
||||
|
||||
void setMMGains(float omegaGain, float myGain) {
|
||||
assert(generic_hier_block<MSKDemod>::_block_init);
|
||||
_omegaGain = omegaGain;
|
||||
_muGain = myGain;
|
||||
recov.setGains(_omegaGain, _muGain);
|
||||
}
|
||||
|
||||
void setOmegaRelLimit(float omegaRelLimit) {
|
||||
assert(generic_hier_block<MSKDemod>::_block_init);
|
||||
_omegaRelLimit = omegaRelLimit;
|
||||
recov.setOmegaRelLimit(_omegaRelLimit);
|
||||
}
|
||||
@ -420,6 +446,7 @@ namespace dsp {
|
||||
class PSKDemod : public generic_hier_block<PSKDemod<ORDER, OFFSET>> {
|
||||
public:
|
||||
PSKDemod() {}
|
||||
|
||||
PSKDemod(stream<complex_t>* input, float sampleRate, float baudRate, int RRCTapCount = 31, float RRCAlpha = 0.32f, float agcRate = 10e-4, float costasLoopBw = 0.004f, float omegaGain = (0.01*0.01) / 4, float muGain = 0.01f, float omegaRelLimit = 0.005f) {
|
||||
init(input, sampleRate, baudRate, RRCTapCount, RRCAlpha, agcRate, costasLoopBw, omegaGain, muGain, omegaRelLimit);
|
||||
}
|
||||
@ -456,13 +483,17 @@ namespace dsp {
|
||||
generic_hier_block<PSKDemod<ORDER, OFFSET>>::registerBlock(&recov);
|
||||
|
||||
out = &recov.out;
|
||||
|
||||
generic_hier_block<PSKDemod<ORDER, OFFSET>>::_block_init = true;
|
||||
}
|
||||
|
||||
void setInput(stream<complex_t>* input) {
|
||||
assert((generic_hier_block<PSKDemod<ORDER, OFFSET>>::_block_init));
|
||||
agc.setInput(input);
|
||||
}
|
||||
|
||||
void setSampleRate(float sampleRate) {
|
||||
assert((generic_hier_block<PSKDemod<ORDER, OFFSET>>::_block_init));
|
||||
_sampleRate = sampleRate;
|
||||
rrc.tempStop();
|
||||
recov.tempStop();
|
||||
@ -474,6 +505,7 @@ namespace dsp {
|
||||
}
|
||||
|
||||
void setBaudRate(float baudRate) {
|
||||
assert((generic_hier_block<PSKDemod<ORDER, OFFSET>>::_block_init));
|
||||
_baudRate = baudRate;
|
||||
rrc.tempStop();
|
||||
recov.tempStop();
|
||||
@ -485,6 +517,7 @@ namespace dsp {
|
||||
}
|
||||
|
||||
void setRRCParams(int RRCTapCount, float RRCAlpha) {
|
||||
assert((generic_hier_block<PSKDemod<ORDER, OFFSET>>::_block_init));
|
||||
_RRCTapCount = RRCTapCount;
|
||||
_RRCAlpha = RRCAlpha;
|
||||
taps.setTapCount(_RRCTapCount);
|
||||
@ -493,22 +526,26 @@ namespace dsp {
|
||||
}
|
||||
|
||||
void setAgcRate(float agcRate) {
|
||||
assert((generic_hier_block<PSKDemod<ORDER, OFFSET>>::_block_init));
|
||||
_agcRate = agcRate;
|
||||
agc.setRate(_agcRate);
|
||||
}
|
||||
|
||||
void setCostasLoopBw(float costasLoopBw) {
|
||||
assert((generic_hier_block<PSKDemod<ORDER, OFFSET>>::_block_init));
|
||||
_costasLoopBw = costasLoopBw;
|
||||
demod.setLoopBandwidth(_costasLoopBw);
|
||||
}
|
||||
|
||||
void setMMGains(float omegaGain, float myGain) {
|
||||
assert((generic_hier_block<PSKDemod<ORDER, OFFSET>>::_block_init));
|
||||
_omegaGain = omegaGain;
|
||||
_muGain = myGain;
|
||||
recov.setGains(_omegaGain, _muGain);
|
||||
}
|
||||
|
||||
void setOmegaRelLimit(float omegaRelLimit) {
|
||||
assert((generic_hier_block<PSKDemod<ORDER, OFFSET>>::_block_init));
|
||||
_omegaRelLimit = omegaRelLimit;
|
||||
recov.setOmegaRelLimit(_omegaRelLimit);
|
||||
}
|
||||
@ -537,6 +574,7 @@ namespace dsp {
|
||||
class PMDemod : public generic_hier_block<PMDemod> {
|
||||
public:
|
||||
PMDemod() {}
|
||||
|
||||
PMDemod(stream<complex_t>* input, float sampleRate, float baudRate, float agcRate = 0.02e-3f, float pllLoopBandwidth = (0.06f*0.06f) / 4.0f, int rrcTapCount = 31, float rrcAlpha = 0.6f, float omegaGain = (0.01*0.01) / 4, float muGain = 0.01f, float omegaRelLimit = 0.005f) {
|
||||
init(input, sampleRate, baudRate, agcRate, pllLoopBandwidth, rrcTapCount, rrcAlpha, omegaGain, muGain, omegaRelLimit);
|
||||
}
|
||||
@ -564,23 +602,28 @@ namespace dsp {
|
||||
generic_hier_block<PMDemod>::registerBlock(&pll);
|
||||
generic_hier_block<PMDemod>::registerBlock(&rrc);
|
||||
generic_hier_block<PMDemod>::registerBlock(&recov);
|
||||
generic_hier_block<PMDemod>::_block_init = true;
|
||||
}
|
||||
|
||||
void setInput(stream<complex_t>* input) {
|
||||
assert(generic_hier_block<PMDemod>::_block_init);
|
||||
agc.setInput(input);
|
||||
}
|
||||
|
||||
void setAgcRate(float agcRate) {
|
||||
assert(generic_hier_block<PMDemod>::_block_init);
|
||||
_agcRate = agcRate;
|
||||
agc.setRate(_agcRate);
|
||||
}
|
||||
|
||||
void setPllLoopBandwidth(float pllLoopBandwidth) {
|
||||
assert(generic_hier_block<PMDemod>::_block_init);
|
||||
_pllLoopBandwidth = pllLoopBandwidth;
|
||||
pll.setLoopBandwidth(_pllLoopBandwidth);
|
||||
}
|
||||
|
||||
void setRRCParams(int rrcTapCount, float rrcAlpha) {
|
||||
assert(generic_hier_block<PMDemod>::_block_init);
|
||||
_rrcTapCount = rrcTapCount;
|
||||
_rrcAlpha = rrcAlpha;
|
||||
rrcwin.setTapCount(_rrcTapCount);
|
||||
@ -589,12 +632,14 @@ namespace dsp {
|
||||
}
|
||||
|
||||
void setMMGains(float omegaGain, float muGain) {
|
||||
assert(generic_hier_block<PMDemod>::_block_init);
|
||||
_omegaGain = omegaGain;
|
||||
_muGain = muGain;
|
||||
recov.setGains(_omegaGain, _muGain);
|
||||
}
|
||||
|
||||
void setOmegaRelLimit(float omegaRelLimit) {
|
||||
assert(generic_hier_block<PMDemod>::_block_init);
|
||||
_omegaRelLimit = omegaRelLimit;
|
||||
recov.setOmegaRelLimit(_omegaRelLimit);
|
||||
}
|
||||
|
Reference in New Issue
Block a user