diff options
author | Matthias P. Braendli <matthias.braendli@mpb.li> | 2018-08-07 11:29:47 +0200 |
---|---|---|
committer | Matthias P. Braendli <matthias.braendli@mpb.li> | 2018-08-07 11:29:47 +0200 |
commit | b6e9577aaed919975f32ee1a5a9821668089f2db (patch) | |
tree | 18d3c0ebdc5db92a7caa5931c8171787932f333c | |
parent | e68fa7c6cb9a718ec16cf849e5885e1ca9b3cf3d (diff) | |
download | dabmod-b6e9577aaed919975f32ee1a5a9821668089f2db.tar.gz dabmod-b6e9577aaed919975f32ee1a5a9821668089f2db.tar.bz2 dabmod-b6e9577aaed919975f32ee1a5a9821668089f2db.zip |
Keep RC-modified settings across modulator restarts
-rw-r--r-- | src/ConfigParser.h | 2 | ||||
-rw-r--r-- | src/DabModulator.cpp | 2 | ||||
-rw-r--r-- | src/DabModulator.h | 4 | ||||
-rw-r--r-- | src/FIRFilter.cpp | 2 | ||||
-rw-r--r-- | src/FIRFilter.h | 4 | ||||
-rw-r--r-- | src/GainControl.cpp | 6 | ||||
-rw-r--r-- | src/GainControl.h | 10 | ||||
-rw-r--r-- | src/GuardIntervalInserter.cpp | 4 | ||||
-rw-r--r-- | src/GuardIntervalInserter.h | 4 | ||||
-rw-r--r-- | src/MemlessPoly.cpp | 2 | ||||
-rw-r--r-- | src/MemlessPoly.h | 4 | ||||
-rw-r--r-- | src/OfdmGenerator.cpp | 9 | ||||
-rw-r--r-- | src/OfdmGenerator.h | 12 | ||||
-rw-r--r-- | src/TII.cpp | 2 | ||||
-rw-r--r-- | src/TII.h | 4 |
15 files changed, 35 insertions, 36 deletions
diff --git a/src/ConfigParser.h b/src/ConfigParser.h index 51afbc2..ee961fa 100644 --- a/src/ConfigParser.h +++ b/src/ConfigParser.h @@ -80,7 +80,7 @@ struct mod_settings_t { float cfrErrorClip = 1.0f; // Settings for the OFDM windowing - unsigned ofdmWindowOverlap = 0; + size_t ofdmWindowOverlap = 0; #if defined(HAVE_OUTPUT_UHD) || defined(HAVE_SOAPYSDR) Output::SDRDeviceConfig sdr_device_config; diff --git a/src/DabModulator.cpp b/src/DabModulator.cpp index 62f98bf..ca958e3 100644 --- a/src/DabModulator.cpp +++ b/src/DabModulator.cpp @@ -59,7 +59,7 @@ #include "Log.h" DabModulator::DabModulator(EtiSource& etiSource, - const mod_settings_t& settings) : + mod_settings_t& settings) : ModInput(), m_settings(settings), myEtiSource(etiSource), diff --git a/src/DabModulator.h b/src/DabModulator.h index e84ce96..355eeb3 100644 --- a/src/DabModulator.h +++ b/src/DabModulator.h @@ -50,7 +50,7 @@ class DabModulator : public ModInput, public ModMetadata { public: DabModulator(EtiSource& etiSource, - const mod_settings_t& settings); + mod_settings_t& settings); int process(Buffer* dataOut); const char* name() { return "DabModulator"; } @@ -64,7 +64,7 @@ public: protected: void setMode(unsigned mode); - const mod_settings_t& m_settings; + mod_settings_t& m_settings; EtiSource& myEtiSource; std::shared_ptr<Flowgraph> myFlowgraph; diff --git a/src/FIRFilter.cpp b/src/FIRFilter.cpp index 740d8ed..8b6fe58 100644 --- a/src/FIRFilter.cpp +++ b/src/FIRFilter.cpp @@ -71,7 +71,7 @@ static const std::array<float, 45> default_filter_taps({ -0.00110450468492}); -FIRFilter::FIRFilter(const std::string& taps_file) : +FIRFilter::FIRFilter(std::string& taps_file) : PipelinedModCodec(), RemoteControllable("firfilter"), m_taps_file(taps_file) diff --git a/src/FIRFilter.h b/src/FIRFilter.h index e03321a..8d2e707 100644 --- a/src/FIRFilter.h +++ b/src/FIRFilter.h @@ -51,7 +51,7 @@ typedef std::complex<float> complexf; class FIRFilter : public PipelinedModCodec, public RemoteControllable { public: - FIRFilter(const std::string& taps_file); + FIRFilter(std::string& taps_file); FIRFilter(const FIRFilter& other) = delete; FIRFilter& operator=(const FIRFilter& other) = delete; virtual ~FIRFilter(); @@ -69,7 +69,7 @@ protected: virtual int internal_process(Buffer* const dataIn, Buffer* dataOut) override; void load_filter_taps(const std::string &tapsFile); - std::string m_taps_file; + std::string& m_taps_file; mutable std::mutex m_taps_mutex; std::vector<float> m_taps; diff --git a/src/GainControl.cpp b/src/GainControl.cpp index 07660ff..9cde8b1 100644 --- a/src/GainControl.cpp +++ b/src/GainControl.cpp @@ -46,10 +46,10 @@ using namespace std; static float var_variance; GainControl::GainControl(size_t framesize, - GainMode gainMode, - float digGain, + GainMode& gainMode, + float& digGain, float normalise, - float varVariance) : + float& varVariance) : PipelinedModCodec(), RemoteControllable("gain"), #ifdef __SSE__ diff --git a/src/GainControl.h b/src/GainControl.h index b4579cd..e8965e9 100644 --- a/src/GainControl.h +++ b/src/GainControl.h @@ -51,10 +51,10 @@ class GainControl : public PipelinedModCodec, public RemoteControllable { public: GainControl(size_t framesize, - GainMode gainMode, - float digGain, + GainMode& gainMode, + float& digGain, float normalise, - float varVariance); + float& varVariance); virtual ~GainControl(); GainControl(const GainControl&) = delete; @@ -80,8 +80,8 @@ class GainControl : public PipelinedModCodec, public RemoteControllable float m_normalise; // The following variables are accessed from the RC thread - float m_var_variance_rc; - GainMode m_gainmode; + float& m_var_variance_rc; + GainMode& m_gainmode; mutable std::mutex m_mutex; #ifdef __SSE__ diff --git a/src/GuardIntervalInserter.cpp b/src/GuardIntervalInserter.cpp index 79692f5..6e1df4f 100644 --- a/src/GuardIntervalInserter.cpp +++ b/src/GuardIntervalInserter.cpp @@ -38,14 +38,14 @@ GuardIntervalInserter::GuardIntervalInserter( size_t spacing, size_t nullSize, size_t symSize, - size_t windowOverlap) : + size_t& windowOverlap) : ModCodec(), RemoteControllable("guardinterval"), d_nbSymbols(nbSymbols), d_spacing(spacing), d_nullSize(nullSize), d_symSize(symSize), - d_windowOverlap(0) + d_windowOverlap(windowOverlap) { if (d_nullSize == 0) { throw std::logic_error("NULL symbol must be present"); diff --git a/src/GuardIntervalInserter.h b/src/GuardIntervalInserter.h index 7714c1a..02ba72c 100644 --- a/src/GuardIntervalInserter.h +++ b/src/GuardIntervalInserter.h @@ -50,7 +50,7 @@ class GuardIntervalInserter : public ModCodec, public RemoteControllable size_t spacing, size_t nullSize, size_t symSize, - size_t windowOverlap = 0); + size_t& windowOverlap); int process(Buffer* const dataIn, Buffer* dataOut); const char* name() { return "GuardIntervalInserter"; } @@ -71,7 +71,7 @@ class GuardIntervalInserter : public ModCodec, public RemoteControllable size_t d_symSize; mutable std::mutex d_windowMutex; - size_t d_windowOverlap; + size_t& d_windowOverlap; std::vector<float> d_window; }; diff --git a/src/MemlessPoly.cpp b/src/MemlessPoly.cpp index c017fab..07e4c1a 100644 --- a/src/MemlessPoly.cpp +++ b/src/MemlessPoly.cpp @@ -51,7 +51,7 @@ using namespace std; // Number of AM/AM coefs, identical to number of AM/PM coefs #define NUM_COEFS 5 -MemlessPoly::MemlessPoly(const std::string& coefs_file, unsigned int num_threads) : +MemlessPoly::MemlessPoly(std::string& coefs_file, unsigned int num_threads) : PipelinedModCodec(), RemoteControllable("memlesspoly"), m_coefs_am(), diff --git a/src/MemlessPoly.h b/src/MemlessPoly.h index c9d4f56..43fdb2d 100644 --- a/src/MemlessPoly.h +++ b/src/MemlessPoly.h @@ -58,7 +58,7 @@ enum class dpd_type_t { class MemlessPoly : public PipelinedModCodec, public RemoteControllable { public: - MemlessPoly(const std::string& coefs_file, unsigned int num_threads); + MemlessPoly(std::string& coefs_file, unsigned int num_threads); MemlessPoly(const MemlessPoly& other) = delete; MemlessPoly& operator=(const MemlessPoly& other) = delete; virtual ~MemlessPoly(); @@ -136,7 +136,7 @@ private: static constexpr size_t lut_entries = 32; std::array<complexf, lut_entries> m_lut; // Lookup table correction factors - std::string m_coefs_file; + std::string& m_coefs_file; mutable std::mutex m_coefs_mutex; }; diff --git a/src/OfdmGenerator.cpp b/src/OfdmGenerator.cpp index 9a824ec..d9c3608 100644 --- a/src/OfdmGenerator.cpp +++ b/src/OfdmGenerator.cpp @@ -40,9 +40,9 @@ static const size_t MAX_CLIP_STATS = 10; OfdmGenerator::OfdmGenerator(size_t nbSymbols, size_t nbCarriers, size_t spacing, - bool enableCfr, - float cfrClip, - float cfrErrorClip, + bool& enableCfr, + float& cfrClip, + float& cfrErrorClip, bool inverse) : ModCodec(), RemoteControllable("ofdm"), myFftPlan(nullptr), @@ -197,10 +197,9 @@ int OfdmGenerator::process(Buffer* const dataIn, Buffer* dataOut) // The PAPRStats' clear() is not threadsafe, do not access it // from the RC functions. - if (myPaprClearRequest.load()) { + if (myPaprClearRequest.exchange(false)) { myPaprBeforeCFR.clear(); myPaprAfterCFR.clear(); - myPaprClearRequest.store(false); } for (size_t i = 0; i < myNbSymbols; ++i) { diff --git a/src/OfdmGenerator.h b/src/OfdmGenerator.h index cccccf5..30fdff4 100644 --- a/src/OfdmGenerator.h +++ b/src/OfdmGenerator.h @@ -47,9 +47,9 @@ class OfdmGenerator : public ModCodec, public RemoteControllable OfdmGenerator(size_t nbSymbols, size_t nbCarriers, size_t spacing, - bool enableCfr, - float cfrClip, - float cfrErrorClip, + bool& enableCfr, + float& cfrClip, + float& cfrErrorClip, bool inverse = true); virtual ~OfdmGenerator(); OfdmGenerator(const OfdmGenerator&) = delete; @@ -91,10 +91,10 @@ class OfdmGenerator : public ModCodec, public RemoteControllable unsigned myZeroDst; unsigned myZeroSize; - bool myCfr; // Whether to enable crest factor reduction + bool& myCfr; // Whether to enable crest factor reduction mutable std::mutex myCfrRcMutex; - float myCfrClip; - float myCfrErrorClip; + float& myCfrClip; + float& myCfrErrorClip; fftwf_plan myCfrFft; fftwf_complex *myCfrPostClip; fftwf_complex *myCfrPostFft; diff --git a/src/TII.cpp b/src/TII.cpp index a9eee16..904f3ff 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, const tii_config_t& tii_config) : +TII::TII(unsigned int dabmode, tii_config_t& tii_config) : ModCodec(), RemoteControllable("tii"), m_dabmode(dabmode), @@ -81,7 +81,7 @@ class TIIError : public std::runtime_error { class TII : public ModCodec, public RemoteControllable { public: - TII(unsigned int dabmode, const tii_config_t& tii_config); + TII(unsigned int dabmode, tii_config_t& tii_config); int process(Buffer* dataIn, Buffer* dataOut); const char* name(); @@ -105,7 +105,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 = true; |