diff options
Diffstat (limited to 'src')
-rw-r--r-- | src/DabMod.cpp | 26 | ||||
-rw-r--r-- | src/DabModulator.cpp | 77 | ||||
-rw-r--r-- | src/DabModulator.h | 24 | ||||
-rw-r--r-- | src/GainControl.cpp | 2 | ||||
-rw-r--r-- | src/GainControl.h | 4 | ||||
-rw-r--r-- | src/TII.cpp | 2 | ||||
-rw-r--r-- | src/TII.h | 4 |
7 files changed, 49 insertions, 90 deletions
diff --git a/src/DabMod.cpp b/src/DabMod.cpp index 7c342a2..15b3be2 100644 --- a/src/DabMod.cpp +++ b/src/DabMod.cpp @@ -317,18 +317,7 @@ int launch_modulator(int argc, char* argv[]) } Flowgraph flowgraph; - auto modulator = make_shared<DabModulator>( - ediReader, - mod_settings.tiiConfig, - mod_settings.outputRate, - mod_settings.clockRate, - mod_settings.dabMode, - mod_settings.gainMode, - mod_settings.digitalgain, - mod_settings.normalise, - mod_settings.gainmodeVariance, - mod_settings.filterTapsFilename, - mod_settings.polyCoefFilename); + auto modulator = make_shared<DabModulator>(ediReader, mod_settings); if (format_converter) { flowgraph.connect(modulator, format_converter); @@ -422,18 +411,7 @@ int launch_modulator(int argc, char* argv[]) m.etiReader = &etiReader; auto input = make_shared<InputMemory>(&m.data); - auto modulator = make_shared<DabModulator>( - etiReader, - mod_settings.tiiConfig, - mod_settings.outputRate, - mod_settings.clockRate, - mod_settings.dabMode, - mod_settings.gainMode, - mod_settings.digitalgain, - mod_settings.normalise, - mod_settings.gainmodeVariance, - mod_settings.filterTapsFilename, - mod_settings.polyCoefFilename); + auto modulator = make_shared<DabModulator>(etiReader, mod_settings); if (format_converter) { flowgraph.connect(modulator, format_converter); diff --git a/src/DabModulator.cpp b/src/DabModulator.cpp index bebbedd..34d8e66 100644 --- a/src/DabModulator.cpp +++ b/src/DabModulator.cpp @@ -55,37 +55,21 @@ #include "RemoteControl.h" #include "Log.h" -DabModulator::DabModulator( - EtiSource& etiSource, - tii_config_t& tiiConfig, - unsigned outputRate, unsigned clockRate, - unsigned dabMode, GainMode gainMode, - float& digGain, float normalise, - float gainmodeVariance, - const std::string& filterTapsFilename, - const std::string& polyCoefFilename - ) : +DabModulator::DabModulator(EtiSource& etiSource, + const mod_settings_t& settings) : ModInput(), - myOutputRate(outputRate), - myClockRate(clockRate), - myDabMode(dabMode), - myGainMode(gainMode), - myDigGain(digGain), - myNormalise(normalise), - myGainmodeVariance(gainmodeVariance), + m_settings(settings), myEtiSource(etiSource), - myFlowgraph(), - myFilterTapsFilename(filterTapsFilename), - myPolyCoefFilename(polyCoefFilename), - myTiiConfig(tiiConfig) + myFlowgraph() { PDEBUG("DabModulator::DabModulator(%u, %u, %u, %zu) @ %p\n", outputRate, clockRate, dabMode, (size_t)gainMode, this); - if (myDabMode == 0) { + if (m_settings.dabMode == 0) { setMode(2); - } else { - setMode(myDabMode); + } + else { + setMode(m_settings.dabMode); } } @@ -139,8 +123,8 @@ int DabModulator::process(Buffer* dataOut) if (not myFlowgraph) { unsigned mode = myEtiSource.getMode(); - if (myDabMode != 0) { - mode = myDabMode; + if (m_settings.dabMode != 0) { + mode = m_settings.dabMode; } else if (mode == 0) { mode = 4; } @@ -166,10 +150,10 @@ int DabModulator::process(Buffer* dataOut) // TODO this needs a review bool useCicEq = false; unsigned cic_ratio = 1; - if (myClockRate) { - cic_ratio = myClockRate / myOutputRate; + if (m_settings.clockRate) { + cic_ratio = m_settings.clockRate / m_settings.outputRate; cic_ratio /= 4; // FPGA DUC - if (myClockRate == 400000000) { // USRP2 + if (m_settings.clockRate == 400000000) { // USRP2 if (cic_ratio & 1) { // odd useCicEq = true; } // even, no filter @@ -181,12 +165,16 @@ int DabModulator::process(Buffer* dataOut) auto cifCicEq = make_shared<CicEqualizer>( myNbCarriers, - (float)mySpacing * (float)myOutputRate / 2048000.0f, cic_ratio); + (float)mySpacing * (float)m_settings.outputRate / 2048000.0f, + cic_ratio); shared_ptr<TII> tii; shared_ptr<PhaseReference> tiiRef; try { - tii = make_shared<TII>(myDabMode, myTiiConfig, myEtiSource.getFp()); + tii = make_shared<TII>( + m_settings.dabMode, + m_settings.tiiConfig, + myEtiSource.getFp()); rcs.enrol(tii.get()); tiiRef = make_shared<PhaseReference>(mode); } @@ -198,8 +186,11 @@ int DabModulator::process(Buffer* dataOut) (1 + myNbSymbols), myNbCarriers, mySpacing); auto cifGain = make_shared<GainControl>( - mySpacing, myGainMode, myDigGain, myNormalise, - myGainmodeVariance); + mySpacing, + m_settings.gainMode, + m_settings.digitalgain, + m_settings.normalise, + m_settings.gainmodeVariance); rcs.enrol(cifGain.get()); @@ -207,15 +198,15 @@ int DabModulator::process(Buffer* dataOut) myNbSymbols, mySpacing, myNullSize, mySymSize); shared_ptr<FIRFilter> cifFilter; - if (not myFilterTapsFilename.empty()) { - cifFilter = make_shared<FIRFilter>(myFilterTapsFilename); + if (not m_settings.filterTapsFilename.empty()) { + cifFilter = make_shared<FIRFilter>(m_settings.filterTapsFilename); rcs.enrol(cifFilter.get()); } shared_ptr<MemlessPoly> cifPoly; - if (not myPolyCoefFilename.empty()) { - cifPoly = make_shared<MemlessPoly>(myPolyCoefFilename); - etiLog.level(debug) << myPolyCoefFilename << "\n"; + if (not m_settings.polyCoefFilename.empty()) { + cifPoly = make_shared<MemlessPoly>(m_settings.polyCoefFilename); + etiLog.level(debug) << m_settings.polyCoefFilename << "\n"; etiLog.level(debug) << cifPoly->m_coefs[0] << " " << cifPoly->m_coefs[1] << " "<< cifPoly->m_coefs[2] << " "<< cifPoly->m_coefs[3] << " "<< cifPoly->m_coefs[4] << " "<< @@ -227,9 +218,13 @@ int DabModulator::process(Buffer* dataOut) auto myOutput = make_shared<OutputMemory>(dataOut); shared_ptr<Resampler> cifRes; - if (myOutputRate != 2048000) { - cifRes = make_shared<Resampler>(2048000, myOutputRate, mySpacing); - } else { + if (m_settings.outputRate != 2048000) { + cifRes = make_shared<Resampler>( + 2048000, + m_settings.outputRate, + mySpacing); + } + else { fprintf(stderr, "No resampler\n"); } diff --git a/src/DabModulator.h b/src/DabModulator.h index e8048ac..6878853 100644 --- a/src/DabModulator.h +++ b/src/DabModulator.h @@ -36,6 +36,7 @@ #include <memory> #include "ModPlugin.h" +#include "ConfigParser.h" #include "EtiReader.h" #include "Flowgraph.h" #include "GainControl.h" @@ -48,15 +49,8 @@ class DabModulator : public ModInput { public: - DabModulator( - EtiSource& etiSource, - tii_config_t& tiiConfig, - unsigned outputRate, unsigned clockRate, - unsigned dabMode, GainMode gainMode, - float& digGain, float normalise, - float gainmodeVariance, - const std::string& filterTapsFilename, - const std::string& polyCoefFilename); + DabModulator(EtiSource& etiSource, + const mod_settings_t& settings); int process(Buffer* dataOut); const char* name() { return "DabModulator"; } @@ -67,18 +61,10 @@ public: protected: void setMode(unsigned mode); - unsigned myOutputRate; - unsigned myClockRate; - unsigned myDabMode; - GainMode myGainMode; - float& myDigGain; - float myNormalise; - float myGainmodeVariance; + const mod_settings_t& m_settings; + EtiSource& myEtiSource; std::shared_ptr<Flowgraph> myFlowgraph; - std::string myFilterTapsFilename; - std::string myPolyCoefFilename; - tii_config_t& myTiiConfig; size_t myNbSymbols; size_t myNbCarriers; diff --git a/src/GainControl.cpp b/src/GainControl.cpp index f363d20..2a91b12 100644 --- a/src/GainControl.cpp +++ b/src/GainControl.cpp @@ -47,7 +47,7 @@ static float var_variance; GainControl::GainControl(size_t framesize, GainMode mode, - float& digGain, + float digGain, float normalise, float varVariance) : PipelinedModCodec(), diff --git a/src/GainControl.h b/src/GainControl.h index e8f1be9..44c9fa9 100644 --- a/src/GainControl.h +++ b/src/GainControl.h @@ -52,7 +52,7 @@ class GainControl : public PipelinedModCodec, public RemoteControllable public: GainControl(size_t framesize, GainMode mode, - float& digGain, + float digGain, float normalise, float varVariance); @@ -76,7 +76,7 @@ class GainControl : public PipelinedModCodec, public RemoteControllable Buffer* const dataIn, Buffer* dataOut) override; size_t m_frameSize; - float& m_digGain; + float m_digGain; float m_normalise; // The following variables are accessed from the RC thread diff --git a/src/TII.cpp b/src/TII.cpp index 6bc3f0d..8a8bd86 100644 --- a/src/TII.cpp +++ b/src/TII.cpp @@ -106,7 +106,7 @@ const int pattern_tm1_2_4[][8] = { // {{{ {1,1,1,0,1,0,0,0}, {1,1,1,1,0,0,0,0} }; // }}} -TII::TII(unsigned int dabmode, tii_config_t& tii_config, unsigned phase) : +TII::TII(unsigned int dabmode, const tii_config_t& tii_config, unsigned phase) : ModCodec(), RemoteControllable("tii"), m_dabmode(dabmode), @@ -83,7 +83,7 @@ class TIIError : public std::runtime_error { class TII : public ModCodec, public RemoteControllable { public: - TII(unsigned int dabmode, tii_config_t& tii_config, unsigned phase); + TII(unsigned int dabmode, const tii_config_t& tii_config, unsigned phase); virtual ~TII(); TII(const TII&) = delete; TII& operator=(const TII&) = delete; @@ -110,7 +110,7 @@ class TII : public ModCodec, public RemoteControllable unsigned int m_dabmode; // Remote-controllable settings - tii_config_t& m_conf; + tii_config_t m_conf; // Internal flag when to insert TII bool m_insert; |