diff options
author | Matthias P. Braendli <matthias.braendli@mpb.li> | 2015-09-18 11:53:03 +0200 |
---|---|---|
committer | Matthias P. Braendli <matthias.braendli@mpb.li> | 2015-09-18 11:53:03 +0200 |
commit | 415c6de26b164aad462c9051451cb0b324ac2ffc (patch) | |
tree | 5fb517c570c151613a95768aeb58bca14b44c557 /src/FIRFilter.cpp | |
parent | 19a8c5db77e29b5d8309e1c7589bc3fdc283efae (diff) | |
download | dabmod-415c6de26b164aad462c9051451cb0b324ac2ffc.tar.gz dabmod-415c6de26b164aad462c9051451cb0b324ac2ffc.tar.bz2 dabmod-415c6de26b164aad462c9051451cb0b324ac2ffc.zip |
Keep FIR filtertaps after modulator restart
Diffstat (limited to 'src/FIRFilter.cpp')
-rw-r--r-- | src/FIRFilter.cpp | 17 |
1 files changed, 8 insertions, 9 deletions
diff --git a/src/FIRFilter.cpp b/src/FIRFilter.cpp index 9ef49c5..16ddcf5 100644 --- a/src/FIRFilter.cpp +++ b/src/FIRFilter.cpp @@ -298,7 +298,7 @@ void FIRFilterWorker::process(struct FIRFilterWorkerData *fwd) } -FIRFilter::FIRFilter(std::string taps_file) : +FIRFilter::FIRFilter(std::string& taps_file) : ModCodec(ModFormat(sizeof(complexf)), ModFormat(sizeof(complexf))), RemoteControllable("firfilter"), myTapsFile(taps_file) @@ -313,7 +313,7 @@ FIRFilter::FIRFilter(std::string taps_file) : firwd.taps = new float[0]; - load_filter_taps(); + load_filter_taps(myTapsFile); #if __AVX__ fprintf(stderr, "FIRFilter: WARNING: using experimental AVX code !\n"); @@ -323,12 +323,11 @@ FIRFilter::FIRFilter(std::string taps_file) : worker.start(&firwd); } -void -FIRFilter::load_filter_taps() +void FIRFilter::load_filter_taps(std::string tapsFile) { - std::ifstream taps_fstream(myTapsFile.c_str()); + std::ifstream taps_fstream(tapsFile.c_str()); if(!taps_fstream) { - fprintf(stderr, "FIRFilter: file %s could not be opened !\n", myTapsFile.c_str()); + fprintf(stderr, "FIRFilter: file %s could not be opened !\n", tapsFile.c_str()); throw std::runtime_error("FIRFilter: Could not open file with taps! "); } int n_taps; @@ -355,7 +354,7 @@ FIRFilter::load_filter_taps() PDEBUG("FIRFilter: tap: %f\n", myFilter[n] ); if (taps_fstream.eof()) { fprintf(stderr, "FIRFilter: file %s should contains %d taps, but EOF reached "\ - "after %d taps !\n", myTapsFile.c_str(), n_taps, n); + "after %d taps !\n", tapsFile.c_str(), n_taps, n); delete[] myFilter; throw std::runtime_error("FIRFilter: filtertaps file invalid ! "); } @@ -422,9 +421,9 @@ void FIRFilter::set_parameter(const string& parameter, const string& value) throw ParameterError("Parameter 'ntaps' is read-only"); } else if (parameter == "tapsfile") { - myTapsFile = value; try { - load_filter_taps(); + load_filter_taps(value); + myTapsFile = value; } catch (std::runtime_error &e) { throw ParameterError(e.what()); |