summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJon Szymaniak <jon.szymaniak@gmail.com>2015-02-03 15:04:10 -0500
committerJon Szymaniak <jon.szymaniak@gmail.com>2015-02-25 19:48:30 -0500
commit0b8122391963e423ca4b291a49431ffc401cafd1 (patch)
tree492d59547165014a28a676db1d27e87b97a245dc
parent47320cf0dfdd6a4294d60ec3b704dd3a0f33023b (diff)
analog: Added frequency accessor and modifier to CTCSS squelch
-rw-r--r--gr-analog/grc/analog_ctcss_squelch_ff.xml1
-rw-r--r--gr-analog/include/gnuradio/analog/ctcss_squelch_ff.h2
-rw-r--r--gr-analog/lib/ctcss_squelch_ff_impl.cc22
-rw-r--r--gr-analog/lib/ctcss_squelch_ff_impl.h10
4 files changed, 30 insertions, 5 deletions
diff --git a/gr-analog/grc/analog_ctcss_squelch_ff.xml b/gr-analog/grc/analog_ctcss_squelch_ff.xml
index 9585835e21..7a2248aa7e 100644
--- a/gr-analog/grc/analog_ctcss_squelch_ff.xml
+++ b/gr-analog/grc/analog_ctcss_squelch_ff.xml
@@ -32,6 +32,7 @@
<import>from gnuradio import analog</import>
<make>analog.ctcss_squelch_ff($rate, $freq, $level, $len, $ramp, $gate)</make>
<callback>set_level($level)</callback>
+ <callback>set_frequency($freq)</callback>
<param>
<name>Sampling Rate (Hz)</name>
<key>rate</key>
diff --git a/gr-analog/include/gnuradio/analog/ctcss_squelch_ff.h b/gr-analog/include/gnuradio/analog/ctcss_squelch_ff.h
index 6d1b5291d0..2655c845bb 100644
--- a/gr-analog/include/gnuradio/analog/ctcss_squelch_ff.h
+++ b/gr-analog/include/gnuradio/analog/ctcss_squelch_ff.h
@@ -63,6 +63,8 @@ namespace gr {
virtual float level() const = 0;
virtual void set_level(float level) = 0;
virtual int len() const = 0;
+ virtual float frequency() const = 0;
+ virtual void set_frequency(float frequency) = 0;
virtual int ramp() const = 0;
virtual void set_ramp(int ramp) = 0;
diff --git a/gr-analog/lib/ctcss_squelch_ff_impl.cc b/gr-analog/lib/ctcss_squelch_ff_impl.cc
index a82ca4646e..fb34485178 100644
--- a/gr-analog/lib/ctcss_squelch_ff_impl.cc
+++ b/gr-analog/lib/ctcss_squelch_ff_impl.cc
@@ -74,6 +74,17 @@ namespace gr {
f_r = ctcss_tones[i+1];
}
+ void
+ ctcss_squelch_ff_impl::update_fft_params()
+ {
+ float f_l, f_r;
+ compute_freqs(d_freq, f_l, f_r);
+
+ d_goertzel_l->set_params(d_rate, d_len, f_l);
+ d_goertzel_c->set_params(d_rate, d_len, d_freq);
+ d_goertzel_r->set_params(d_rate, d_len, f_r);
+ }
+
ctcss_squelch_ff_impl::ctcss_squelch_ff_impl(int rate, float freq, float level,
int len, int ramp, bool gate)
: block("ctcss_squelch_ff",
@@ -83,19 +94,20 @@ namespace gr {
{
d_freq = freq;
d_level = level;
+ d_rate = rate;
// Default is 100 ms detection time
if(len == 0)
- d_len = (int)(rate/10.0);
+ d_len = (int)(d_rate/10.0);
else
- d_len = len;
+ d_len = len;
float f_l, f_r;
compute_freqs(d_freq, f_l, f_r);
- d_goertzel_l = new fft::goertzel(rate, d_len, f_l);
- d_goertzel_c = new fft::goertzel(rate, d_len, freq);
- d_goertzel_r = new fft::goertzel(rate, d_len, f_r);
+ d_goertzel_l = new fft::goertzel(d_rate, d_len, f_l);
+ d_goertzel_c = new fft::goertzel(d_rate, d_len, freq);
+ d_goertzel_r = new fft::goertzel(d_rate, d_len, f_r);
d_mute = true;
}
diff --git a/gr-analog/lib/ctcss_squelch_ff_impl.h b/gr-analog/lib/ctcss_squelch_ff_impl.h
index 6a137e0595..67ce66c4ba 100644
--- a/gr-analog/lib/ctcss_squelch_ff_impl.h
+++ b/gr-analog/lib/ctcss_squelch_ff_impl.h
@@ -36,6 +36,7 @@ namespace gr {
float d_freq;
float d_level;
int d_len;
+ int d_rate;
bool d_mute;
fft::goertzel *d_goertzel_l;
@@ -45,6 +46,8 @@ namespace gr {
static int find_tone(float freq);
static void compute_freqs(const float &freq, float &f_l, float &f_r);
+ void update_fft_params();
+
protected:
virtual void update_state(const float &in);
virtual bool mute() const { return d_mute; }
@@ -58,6 +61,13 @@ namespace gr {
float level() const { return d_level; }
void set_level(float level) { d_level = level; }
int len() const { return d_len; }
+ float frequency() const { return d_freq; }
+
+ void set_frequency(float frequency)
+ {
+ d_freq = frequency;
+ update_fft_params();
+ }
int ramp() const { return squelch_base_ff_impl::ramp(); }
void set_ramp(int ramp) { squelch_base_ff_impl::set_ramp(ramp); }