From abbd0afddfec59a8a9bbf0d5da4625e1c28f4135 Mon Sep 17 00:00:00 2001 From: Tom <trondeau@vt.edu> Date: Fri, 9 Oct 2009 14:03:33 -0700 Subject: Moving filter number decision to start work function. --- gnuradio-core/src/lib/filter/gr_pfb_clock_sync_ccf.cc | 17 +++++++++-------- 1 file changed, 9 insertions(+), 8 deletions(-) (limited to 'gnuradio-core/src') diff --git a/gnuradio-core/src/lib/filter/gr_pfb_clock_sync_ccf.cc b/gnuradio-core/src/lib/filter/gr_pfb_clock_sync_ccf.cc index bfbbf8b8b4..1507d7492a 100644 --- a/gnuradio-core/src/lib/filter/gr_pfb_clock_sync_ccf.cc +++ b/gnuradio-core/src/lib/filter/gr_pfb_clock_sync_ccf.cc @@ -241,14 +241,6 @@ gr_pfb_clock_sync_ccf::general_work (int noutput_items, // produce output as long as we can and there are enough input samples while((i < noutput_items) && (count < nrequired)) { - out[i] = d_filters[d_filtnum]->filter(&in[count]); - gr_complex diff = d_diff_filters[d_filtnum]->filter(&in[count]); - error_r = out[i].real() * diff.real(); - error_i = out[i].imag() * diff.imag(); - error = error_i + error_r; - - d_k = d_k + d_alpha*error + d_rate; - d_rate = d_rate + d_beta*error; d_filtnum = (int)floor(d_k); // Keep the current filter number in [0, d_nfilters] @@ -264,6 +256,15 @@ gr_pfb_clock_sync_ccf::general_work (int noutput_items, d_filtnum += d_nfilters; count -= 1; } + + out[i] = d_filters[d_filtnum]->filter(&in[count]); + gr_complex diff = d_diff_filters[d_filtnum]->filter(&in[count]); + error_r = out[i].real() * diff.real(); + error_i = out[i].imag() * diff.imag(); + error = error_i + error_r; + + d_k = d_k + d_alpha*error + d_rate; + d_rate = d_rate + d_beta*error; // Keep our rate within a good range d_rate = gr_branchless_clip(d_rate, d_max_dev); -- cgit v1.2.3