diff options
Diffstat (limited to 'gr-digital/lib/pfb_clock_sync_fff_impl.cc')
-rw-r--r-- | gr-digital/lib/pfb_clock_sync_fff_impl.cc | 23 |
1 files changed, 16 insertions, 7 deletions
diff --git a/gr-digital/lib/pfb_clock_sync_fff_impl.cc b/gr-digital/lib/pfb_clock_sync_fff_impl.cc index beb6bf5579..09c72495a0 100644 --- a/gr-digital/lib/pfb_clock_sync_fff_impl.cc +++ b/gr-digital/lib/pfb_clock_sync_fff_impl.cc @@ -131,6 +131,13 @@ namespace gr { ninput_items_required[i] = (noutput_items + history()) * (d_sps/d_osps); } + void + pfb_clock_sync_fff_impl::update_taps(const std::vector<float> &taps) + { + d_updated_taps = taps; + d_updated = true; + } + /******************************************************************* SET FUNCTIONS *******************************************************************/ @@ -258,8 +265,6 @@ namespace gr { // Make sure there is enough output space for d_osps outputs/input. set_output_multiple(d_osps); - - d_updated = true; } void @@ -376,6 +381,15 @@ namespace gr { float *in = (float *) input_items[0]; float *out = (float *) output_items[0]; + if(d_updated) { + std::vector<float> dtaps; + create_diff_taps(d_updated_taps, dtaps); + set_taps(d_updated_taps, d_taps, d_filters); + set_taps(dtaps, d_dtaps, d_diff_filters); + d_updated = false; + return 0; // history requirements may have changed. + } + float *err = NULL, *outrate = NULL, *outk = NULL; if(output_items.size() == 4) { err = (float *) output_items[1]; @@ -383,11 +397,6 @@ namespace gr { outk = (float*)output_items[3]; } - if(d_updated) { - d_updated = false; - return 0; // history requirements may have changed. - } - int i = 0, count = 0; // produce output as long as we can and there are enough input samples |