summaryrefslogtreecommitdiff
path: root/gnuradio-core/src/lib
diff options
context:
space:
mode:
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 a93751b2f..938a522f4 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 9518c5c92..c60b63d88 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 4cbc1dece..775c78cc8 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 f0314e400..85e66c069 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 86d3d34d3..e062f000e 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);