diff options
Diffstat (limited to 'gr-digital/lib/pfb_clock_sync_ccf_impl.cc')
-rw-r--r-- | gr-digital/lib/pfb_clock_sync_ccf_impl.cc | 24 |
1 files changed, 17 insertions, 7 deletions
diff --git a/gr-digital/lib/pfb_clock_sync_ccf_impl.cc b/gr-digital/lib/pfb_clock_sync_ccf_impl.cc index c8e1221c90..314ff94b0b 100644 --- a/gr-digital/lib/pfb_clock_sync_ccf_impl.cc +++ b/gr-digital/lib/pfb_clock_sync_ccf_impl.cc @@ -134,6 +134,14 @@ namespace gr { ninput_items_required[i] = (noutput_items + history()) * (d_sps/d_osps); } + void + pfb_clock_sync_ccf_impl::update_taps(const std::vector<float> &taps) + { + d_updated_taps = taps; + d_updated = true; + } + + /******************************************************************* SET FUNCTIONS *******************************************************************/ @@ -279,8 +287,6 @@ namespace gr { // Make sure there is enough output space for d_osps outputs/input. set_output_multiple(d_osps); - - d_updated = true; } void @@ -397,6 +403,15 @@ namespace gr { gr_complex *in = (gr_complex *) input_items[0]; gr_complex *out = (gr_complex *) 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]; @@ -404,11 +419,6 @@ namespace gr { outk = (float*)output_items[3]; } - if(d_updated) { - d_updated = false; - return 0; // history requirements may have changed. - } - std::vector<tag_t> tags; get_tags_in_range(tags, 0, nitems_read(0), nitems_read(0)+d_sps*noutput_items, |