From 816eb840fd86000b12525ff28d128fe643a15a73 Mon Sep 17 00:00:00 2001
From: Jon Szymaniak <jon.szymaniak@gmail.com>
Date: Tue, 24 Mar 2015 11:52:45 -0400
Subject: analog: Wrapped squelch blocks' setter methods with lock

The setter methods of squelch_base and its children have been updated to
hold d_setlock to avoid races.

For example, updating the CTCSS frequency parameter requires
updates to three separate fft::goertzel objects, which are used during
the general_work().
---
 gr-analog/lib/pwr_squelch_cc_impl.cc | 14 ++++++++++++++
 1 file changed, 14 insertions(+)

(limited to 'gr-analog/lib/pwr_squelch_cc_impl.cc')

diff --git a/gr-analog/lib/pwr_squelch_cc_impl.cc b/gr-analog/lib/pwr_squelch_cc_impl.cc
index 1a414ed464..62b9cff5c6 100644
--- a/gr-analog/lib/pwr_squelch_cc_impl.cc
+++ b/gr-analog/lib/pwr_squelch_cc_impl.cc
@@ -69,5 +69,19 @@ namespace gr {
       d_pwr = d_iir.filter(in.real()*in.real()+in.imag()*in.imag());
     }
 
+    void
+    pwr_squelch_cc_impl::set_threshold(double db)
+    {
+        gr::thread::scoped_lock l(d_setlock);
+        d_threshold = std::pow(10.0, db/10);
+    }
+
+    void
+    pwr_squelch_cc_impl::set_alpha(double alpha)
+    {
+        gr::thread::scoped_lock l(d_setlock);
+        d_iir.set_taps(alpha);
+    }
+
   } /* namespace analog */
 } /* namespace gr */
-- 
cgit v1.2.3