summaryrefslogtreecommitdiff
path: root/gnuradio-core/src/lib
diff options
context:
space:
mode:
authorTom Rondeau <trondeau@vt.edu>2011-01-17 17:00:13 -0500
committerTom Rondeau <trondeau@vt.edu>2011-01-17 17:00:13 -0500
commit31bbbec88b19230eb37b197d7623c3671e57837e (patch)
treef081bf733ddbab9aceeff7d82585a142b4687463 /gnuradio-core/src/lib
parent328b0761c6266d746cd15dae87e0c838b5e0acfc (diff)
parentf294603db32348e1f8fd0de18adf7b74db915d93 (diff)
Merge branch 'master' into next
* master: Adding new accessor for Goertzel filter to GRC block. Thanks to Marcus Leech for the last three modifications. Adding accessors to Goertzel filter GR block to call setparms from implementation file for (re)setting parameters. Adding accessor function to Goertzel filter implementaiton to set/reset its parameters.
Diffstat (limited to 'gnuradio-core/src/lib')
-rw-r--r--gnuradio-core/src/lib/filter/gr_goertzel_fc.cc18
-rw-r--r--gnuradio-core/src/lib/filter/gr_goertzel_fc.h7
-rw-r--r--gnuradio-core/src/lib/filter/gr_goertzel_fc.i6
-rw-r--r--gnuradio-core/src/lib/filter/gri_goertzel.cc10
-rw-r--r--gnuradio-core/src/lib/filter/gri_goertzel.h3
5 files changed, 38 insertions, 6 deletions
diff --git a/gnuradio-core/src/lib/filter/gr_goertzel_fc.cc b/gnuradio-core/src/lib/filter/gr_goertzel_fc.cc
index a93751b2f0..938a522f40 100644
--- a/gnuradio-core/src/lib/filter/gr_goertzel_fc.cc
+++ b/gnuradio-core/src/lib/filter/gr_goertzel_fc.cc
@@ -1,6 +1,6 @@
/* -*- c++ -*- */
/*
- * Copyright 2006,2010 Free Software Foundation, Inc.
+ * Copyright 2006,2010,2011 Free Software Foundation, Inc.
*
* This file is part of GNU Radio
*
@@ -42,6 +42,8 @@ gr_goertzel_fc::gr_goertzel_fc(int rate, int len, float freq)
d_goertzel(rate, len, freq)
{
d_len = len;
+ d_rate = rate;
+ d_freq = freq;
}
int gr_goertzel_fc::work(int noutput_items,
@@ -58,3 +60,17 @@ int gr_goertzel_fc::work(int noutput_items,
return noutput_items;
}
+
+void
+gr_goertzel_fc::set_freq(float freq)
+{
+ d_freq = freq;
+ d_goertzel.gri_setparms(d_rate, d_len, d_freq);
+}
+
+void
+gr_goertzel_fc::set_rate(int rate)
+{
+ d_rate = rate;
+ d_goertzel.gri_setparms(d_rate, d_len, d_freq);
+}
diff --git a/gnuradio-core/src/lib/filter/gr_goertzel_fc.h b/gnuradio-core/src/lib/filter/gr_goertzel_fc.h
index 9518c5c927..c60b63d882 100644
--- a/gnuradio-core/src/lib/filter/gr_goertzel_fc.h
+++ b/gnuradio-core/src/lib/filter/gr_goertzel_fc.h
@@ -1,6 +1,6 @@
/* -*- c++ -*- */
/*
- * Copyright 2006 Free Software Foundation, Inc.
+ * Copyright 2006,2011 Free Software Foundation, Inc.
*
* This file is part of GNU Radio
*
@@ -44,11 +44,16 @@ private:
gr_goertzel_fc(int rate, int len, float freq);
gri_goertzel d_goertzel;
int d_len;
+ float d_freq;
+ int d_rate;
public:
int work(int noutput_items,
gr_vector_const_void_star &input_items,
gr_vector_void_star &output_items);
+
+ void set_freq (float freq);
+ void set_rate (int rate);
};
#endif /* INCLUDED_GR_GOERTZEL_FC_H */
diff --git a/gnuradio-core/src/lib/filter/gr_goertzel_fc.i b/gnuradio-core/src/lib/filter/gr_goertzel_fc.i
index 4cbc1dece3..775c78cc8e 100644
--- a/gnuradio-core/src/lib/filter/gr_goertzel_fc.i
+++ b/gnuradio-core/src/lib/filter/gr_goertzel_fc.i
@@ -1,6 +1,6 @@
/* -*- c++ -*- */
/*
- * Copyright 2006 Free Software Foundation, Inc.
+ * Copyright 2006,2011 Free Software Foundation, Inc.
*
* This file is part of GNU Radio
*
@@ -28,4 +28,8 @@ class gr_goertzel_fc : public gr_sync_decimator
{
private:
gr_goertzel_fc();
+
+public:
+ void set_freq (float freq);
+ void set_rate (int rate);
};
diff --git a/gnuradio-core/src/lib/filter/gri_goertzel.cc b/gnuradio-core/src/lib/filter/gri_goertzel.cc
index f0314e4004..85e66c069b 100644
--- a/gnuradio-core/src/lib/filter/gri_goertzel.cc
+++ b/gnuradio-core/src/lib/filter/gri_goertzel.cc
@@ -1,6 +1,6 @@
/* -*- c++ -*- */
/*
- * Copyright 2002 Free Software Foundation, Inc.
+ * Copyright 2002,2011 Free Software Foundation, Inc.
*
* This file is part of GNU Radio
*
@@ -26,15 +26,21 @@
gri_goertzel::gri_goertzel(int rate, int len, float freq)
{
+ gri_setparms(rate, len, freq);
+}
+
+void
+gri_goertzel::gri_setparms(int rate, int len, float freq)
+{
d_d1 = 0.0;
d_d2 = 0.0;
float w = 2.0*M_PI*freq/rate;
d_wr = 2.0*std::cos(w);
d_wi = std::sin(w);
-
d_len = len;
d_processed = 0;
+
}
gr_complex gri_goertzel::batch(float *in)
diff --git a/gnuradio-core/src/lib/filter/gri_goertzel.h b/gnuradio-core/src/lib/filter/gri_goertzel.h
index 86d3d34d36..e062f000e0 100644
--- a/gnuradio-core/src/lib/filter/gri_goertzel.h
+++ b/gnuradio-core/src/lib/filter/gri_goertzel.h
@@ -1,6 +1,6 @@
/* -*- c++ -*- */
/*
- * Copyright 2006 Free Software Foundation, Inc.
+ * Copyright 2006,2011 Free Software Foundation, Inc.
*
* This file is part of GNU Radio
*
@@ -34,6 +34,7 @@ class gri_goertzel
public:
gri_goertzel() {}
gri_goertzel(int rate, int len, float freq);
+ void gri_setparms(int rate, int len, float freq);
// Process a input array
gr_complex batch(float *in);