summaryrefslogtreecommitdiff
path: root/gr-digital/lib/pfb_clock_sync_ccf_impl.cc
diff options
context:
space:
mode:
Diffstat (limited to 'gr-digital/lib/pfb_clock_sync_ccf_impl.cc')
-rw-r--r--gr-digital/lib/pfb_clock_sync_ccf_impl.cc24
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,