Adding QA code for fir filter with buffer.
[debian/gnuradio] / gnuradio-core / src / lib / general / gr_clock_recovery_mm_cc.cc
index bab0e938b6b1562b03b3a53247a85a4323940db6..60e3dd13d59659b9f6623834e1d4f4fef03fd4b6 100644 (file)
@@ -29,6 +29,8 @@
 #include <gr_clock_recovery_mm_cc.h>
 #include <gri_mmse_fir_interpolator_cc.h>
 #include <stdexcept>
+#include <cstdio>
+
 
 // Public constructor
 
@@ -151,27 +153,14 @@ gr_clock_recovery_mm_cc::general_work (int noutput_items,
       out[oo++] = d_p_0T;
       
       // limit mm_val
-
-      if (mm_val > 1.0)
-       mm_val = 1.0;
-      else if (mm_val < -1.0)
-       mm_val = -1.0;
-
+      mm_val = gr_branchless_clip(mm_val,1.0);
       d_omega = d_omega + d_gain_omega * mm_val;
-
-      if (d_omega > d_max_omega)
-       d_omega = d_max_omega;
-      else if (d_omega < d_min_omega)
-       d_omega = d_min_omega;
+      d_omega = d_omega_mid + gr_branchless_clip(d_omega-d_omega_mid, d_omega_relative_limit);   // make sure we don't walk away
 
       d_mu = d_mu + d_omega + d_gain_mu * mm_val;
       ii += (int)floor(d_mu);
       d_mu -= floor(d_mu);
-      
-      #if 0
-      printf("%f\t%f\n", d_omega, d_mu);
-      #endif
-      
+            
       // write the error signal to the second output
       foptr[oo-1] = gr_complex(d_mu,0);
       
@@ -197,16 +186,10 @@ gr_clock_recovery_mm_cc::general_work (int noutput_items,
       out[oo++] = d_p_0T;
       
       // limit mm_val
-      if (mm_val > 1.0)
-       mm_val = 1.0;
-      else if (mm_val < -1.0)
-       mm_val = -1.0;
+      mm_val = gr_branchless_clip(mm_val,1.0);
       
       d_omega = d_omega + d_gain_omega * mm_val;
-      if (d_omega > d_max_omega)
-       d_omega = d_max_omega;
-      else if (d_omega < d_min_omega)
-       d_omega = d_min_omega;
+      d_omega = d_omega_mid + gr_branchless_clip(d_omega-d_omega_mid, d_omega_relative_limit);   // make sure we don't walk away
       
       d_mu = d_mu + d_omega + d_gain_mu * mm_val;
       ii += (int)floor(d_mu);