]> git.gag.com Git - debian/gnuradio/commitdiff
Adds dynamic setters/getters for moving average filters.
authorjcorgan <jcorgan@221aa14e-8319-0410-a670-987f0aec2ac5>
Thu, 30 Apr 2009 19:57:02 +0000 (19:57 +0000)
committerjcorgan <jcorgan@221aa14e-8319-0410-a670-987f0aec2ac5>
Thu, 30 Apr 2009 19:57:02 +0000 (19:57 +0000)
git-svn-id: http://gnuradio.org/svn/gnuradio/trunk@10932 221aa14e-8319-0410-a670-987f0aec2ac5

gnuradio-core/src/lib/gengen/gr_moving_average_XX.cc.t
gnuradio-core/src/lib/gengen/gr_moving_average_XX.h.t
gnuradio-core/src/lib/gengen/gr_moving_average_XX.i.t

index e5e985235e02346d372592cbe7e6ca706e6d09fd..33a0acf9ce725d1856ab68b25a2e09975a8070cc 100644 (file)
@@ -39,9 +39,12 @@ gr_make_@BASE_NAME@ (int length, @O_TYPE@ scale, int max_iter)
   : gr_sync_block ("@BASE_NAME@",
                   gr_make_io_signature (1, 1, sizeof (@I_TYPE@)),
                   gr_make_io_signature (1, 1, sizeof (@O_TYPE@))),
-    d_length(length),
-    d_scale(scale),
-    d_max_iter(max_iter)
+  d_length(length),
+  d_scale(scale),
+  d_max_iter(max_iter),
+  d_new_length(length),
+  d_new_scale(scale),
+  d_updated(false)
 {
   set_history(length);
 }
@@ -50,11 +53,27 @@ gr_make_@BASE_NAME@ (int length, @O_TYPE@ scale, int max_iter)
 {
 }
 
+void
+@NAME@::set_length_and_scale(int length, @O_TYPE@ scale)
+{
+  d_new_length = length;
+  d_new_scale = scale;
+  d_updated = true;
+}
+
 int 
 @NAME@::work (int noutput_items,
              gr_vector_const_void_star &input_items,
              gr_vector_void_star &output_items)
 {
+  if (d_updated) {
+    d_length = d_new_length;
+    d_scale = d_new_scale;
+    set_history(d_length);
+    d_updated = false;
+    return 0; // history requirements might have changed
+  }
+
   const @I_TYPE@ *in = (const @I_TYPE@ *) input_items[0];
   @O_TYPE@ *out = (@O_TYPE@ *) output_items[0];
 
index 3121e3bfd45beed3a5c05c68282d4e1e93d9948b..ee61808f2a91e2a43ecacc3e3275d05a7c45a5a7 100644 (file)
@@ -50,12 +50,21 @@ private:
   @O_TYPE@ d_scale;
   int d_max_iter;
 
+  int d_new_length;
+  @O_TYPE@ d_new_scale;
+  bool d_updated;
+
 public:
   ~@NAME@ ();  
 
   int work (int noutput_items,
            gr_vector_const_void_star &input_items,
            gr_vector_void_star &output_items);
+
+  int length() const { return d_new_length; }
+  @O_TYPE@ scale() const { return d_new_scale; }
+
+  void set_length_and_scale(int length, @O_TYPE@ scale);
 };
 
 #endif /* @GUARD_NAME@ */
index c7da8d94e6a62d4a4f1c47c78e4c1c5debe60cac..855be90b00260250787903f98a18de86f286e8e7 100644 (file)
@@ -30,4 +30,9 @@ class @NAME@ : public gr_sync_block
 {
 private:
   @NAME@ ();
+
+ public:
+  int length() const;
+  @O_TYPE@ scale() const;
+  void set_length_and_scale(int length, @O_TYPE@ scale);
 };