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