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