From 242997af1838146a56547d8ac9e2719eadebe66f Mon Sep 17 00:00:00 2001
From: Tom Rondeau <trondeau@vt.edu>
Date: Thu, 7 Mar 2013 10:21:23 -0500
Subject: blocks: moving bin_statistics_f into gr-blocks.

QA worked, but keeping disabled for now in reference to issue #199.
---
 gr-blocks/python/qa_bin_statistics.py | 227 ++++++++++++++++++++++++++++++++++
 1 file changed, 227 insertions(+)
 create mode 100755 gr-blocks/python/qa_bin_statistics.py

(limited to 'gr-blocks/python/qa_bin_statistics.py')

diff --git a/gr-blocks/python/qa_bin_statistics.py b/gr-blocks/python/qa_bin_statistics.py
new file mode 100755
index 0000000000..c1b3072530
--- /dev/null
+++ b/gr-blocks/python/qa_bin_statistics.py
@@ -0,0 +1,227 @@
+#!/usr/bin/env python
+#
+# Copyright 2006,2007,2010,2013 Free Software Foundation, Inc.
+#
+# This file is part of GNU Radio
+#
+# GNU Radio is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 3, or (at your option)
+# any later version.
+#
+# GNU Radio is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with GNU Radio; see the file COPYING.  If not, write to
+# the Free Software Foundation, Inc., 51 Franklin Street,
+# Boston, MA 02110-1301, USA.
+#
+
+from gnuradio import gr, gr_unittest
+import blocks_swig as blocks
+import random
+import struct
+
+"""
+Note: There has been an issue with this block in the past, see Issue
+#199. This looks like it might have fixed itself over the years. I am
+leaving these tests disabled on our master branch for v3.6 for now,
+though, just in case. TWR.
+"""
+
+class counter(gr.feval_dd):
+    def __init__(self, step_size=1):
+        gr.feval_dd.__init__(self)
+        self.step_size = step_size
+        self.count = 0
+
+    def eval(self, input):
+        #print "eval: self.count =", self.count
+        t = self.count
+        self.count = self.count + self.step_size
+        return t
+
+
+class counter3(gr.feval_dd):
+    def __init__(self, f, step_size):
+        gr.feval_dd.__init__(self)
+        self.f = f
+        self.step_size = step_size
+        self.count = 0
+
+    def eval(self, input):
+        try:
+            #print "eval: self.count =", self.count
+            t = self.count
+            self.count = self.count + self.step_size
+            self.f(self.count)
+        except Exception, e:
+            print "Exception: ", e
+        return t
+
+def foobar3(new_t):
+    #print "foobar3: new_t =", new_t
+    pass
+
+
+class counter4(gr.feval_dd):
+    def __init__(self, obj_instance, step_size):
+        gr.feval_dd.__init__(self)
+        self.obj_instance = obj_instance
+        self.step_size = step_size
+        self.count = 0
+
+    def eval(self, input):
+        try:
+            #print "eval: self.count =", self.count
+            t = self.count
+            self.count = self.count + self.step_size
+            self.obj_instance.foobar4(self.count)
+        except Exception, e:
+            print "Exception: ", e
+        return t
+
+
+class parse_msg(object):
+    def __init__(self, msg):
+        self.center_freq = msg.arg1()
+        self.vlen = int(msg.arg2())
+        assert(msg.length() == self.vlen * gr.sizeof_float)
+        self.data = struct.unpack('%df' % (self.vlen,), msg.to_string())
+
+class test_bin_statistics(gr_unittest.TestCase):
+
+    def setUp(self):
+        self.tb = gr.top_block ()
+
+    def tearDown(self):
+        self.tb = None
+
+    def xtest_001(self):
+        vlen = 4
+        tune = counter(1)
+        tune_delay = 0
+        dwell_delay = 1
+        msgq = gr.msg_queue()
+
+        src_data = tuple([float(x) for x in
+                          ( 1,  2,  3,  4,
+                            5,  6,  7,  8,
+                            9, 10, 11, 12,
+                            13, 14, 15, 16
+                            )])
+
+        expected_results = tuple([float(x) for x in
+                                  ( 1,  2,  3,  4,
+                                    5,  6,  7,  8,
+                                    9, 10, 11, 12,
+                                    13, 14, 15, 16
+                                    )])
+
+        src = gr.vector_source_f(src_data, False)
+        s2v = blocks.stream_to_vector(gr.sizeof_float, vlen)
+        stats = blocks.bin_statistics_f(vlen, msgq, tune, tune_delay, dwell_delay)
+        self.tb.connect(src, s2v, stats)
+        self.tb.run()
+        self.assertEqual(4, msgq.count())
+        for i in range(4):
+            m = parse_msg(msgq.delete_head())
+            #print "m =", m.center_freq, m.data
+            self.assertEqual(expected_results[vlen*i:vlen*i + vlen], m.data)
+
+    def xtest_002(self):
+        vlen = 4
+        tune = counter(1)
+        tune_delay = 1
+        dwell_delay = 2
+        msgq = gr.msg_queue()
+
+        src_data = tuple([float(x) for x in
+                          ( 1,  2,  3,  4,
+                            9,  6, 11,  8,
+                            5, 10,  7, 12,
+                            13, 14, 15, 16
+                            )])
+
+        expected_results = tuple([float(x) for x in
+                                  ( 9, 10, 11, 12)])
+
+        src = gr.vector_source_f(src_data, False)
+        s2v = blocks.stream_to_vector(gr.sizeof_float, vlen)
+        stats = blocks.bin_statistics_f(vlen, msgq, tune, tune_delay, dwell_delay)
+        self.tb.connect(src, s2v, stats)
+        self.tb.run()
+        self.assertEqual(1, msgq.count())
+        for i in range(1):
+            m = parse_msg(msgq.delete_head())
+            #print "m =", m.center_freq, m.data
+            self.assertEqual(expected_results[vlen*i:vlen*i + vlen], m.data)
+
+
+
+    def xtest_003(self):
+        vlen = 4
+        tune = counter3(foobar3, 1)
+        tune_delay = 1
+        dwell_delay = 2
+        msgq = gr.msg_queue()
+
+        src_data = tuple([float(x) for x in
+                          ( 1,  2,  3,  4,
+                            9,  6, 11,  8,
+                            5, 10,  7, 12,
+                            13, 14, 15, 16
+                            )])
+
+        expected_results = tuple([float(x) for x in
+                                  ( 9, 10, 11, 12)])
+
+        src = gr.vector_source_f(src_data, False)
+        s2v = blocks.stream_to_vector(gr.sizeof_float, vlen)
+        stats = blocks.bin_statistics_f(vlen, msgq, tune, tune_delay, dwell_delay)
+        self.tb.connect(src, s2v, stats)
+        self.tb.run()
+        self.assertEqual(1, msgq.count())
+        for i in range(1):
+            m = parse_msg(msgq.delete_head())
+            #print "m =", m.center_freq, m.data
+            self.assertEqual(expected_results[vlen*i:vlen*i + vlen], m.data)
+
+    def foobar4(self, new_t):
+        #print "foobar4: new_t =", new_t
+        pass
+
+    def xtest_004(self):
+        vlen = 4
+        tune = counter4(self, 1)
+        tune_delay = 1
+        dwell_delay = 2
+        msgq = gr.msg_queue()
+
+        src_data = tuple([float(x) for x in
+                          ( 1,  2,  3,  4,
+                            9,  6, 11,  8,
+                            5, 10,  7, 12,
+                            13, 14, 15, 16
+                            )])
+
+        expected_results = tuple([float(x) for x in
+                                  ( 9, 10, 11, 12)])
+
+        src = gr.vector_source_f(src_data, False)
+        s2v = blocks.stream_to_vector(gr.sizeof_float, vlen)
+        stats = blocks.bin_statistics_f(vlen, msgq, tune, tune_delay, dwell_delay)
+        self.tb.connect(src, s2v, stats)
+        self.tb.run()
+        self.assertEqual(1, msgq.count())
+        for i in range(1):
+            m = parse_msg(msgq.delete_head())
+            #print "m =", m.center_freq, m.data
+            self.assertEqual(expected_results[vlen*i:vlen*i + vlen], m.data)
+
+
+if __name__ == '__main__':
+   gr_unittest.run(test_bin_statistics, "test_bin_statistics.xml")
-- 
cgit v1.2.3


From afdf1aff307f9214e81314ddb0868eb0ef6a874f Mon Sep 17 00:00:00 2001
From: Tom Rondeau <trondeau@vt.edu>
Date: Thu, 7 Mar 2013 10:28:09 -0500
Subject: blocks: removing bin_statistics_f from core; now in gr-blocks.

---
 docs/sphinx/source/gr/index.rst                    |   1 -
 docs/sphinx/source/gr/sink_blk.rst                 |   1 -
 gnuradio-core/src/lib/general/CMakeLists.txt       |   1 -
 gnuradio-core/src/lib/general/general.i            |   2 -
 .../src/lib/general/gr_bin_statistics_f.cc         | 174 ---------------------
 .../src/lib/general/gr_bin_statistics_f.h          | 100 ------------
 .../src/lib/general/gr_bin_statistics_f.i          |  47 ------
 gr-blocks/python/qa_bin_statistics.py              |  13 +-
 gr-uhd/examples/python/usrp_spectrum_sense.py      |   8 +-
 9 files changed, 10 insertions(+), 337 deletions(-)
 delete mode 100644 gnuradio-core/src/lib/general/gr_bin_statistics_f.cc
 delete mode 100644 gnuradio-core/src/lib/general/gr_bin_statistics_f.h
 delete mode 100644 gnuradio-core/src/lib/general/gr_bin_statistics_f.i

(limited to 'gr-blocks/python/qa_bin_statistics.py')

diff --git a/docs/sphinx/source/gr/index.rst b/docs/sphinx/source/gr/index.rst
index 3372816eff..b1663a7e23 100644
--- a/docs/sphinx/source/gr/index.rst
+++ b/docs/sphinx/source/gr/index.rst
@@ -39,7 +39,6 @@ Signal Sinks
 .. autosummary::
    :nosignatures:
 
-   gnuradio.gr.bin_statistics_f
    gnuradio.gr.check_counting_s
    gnuradio.gr.check_lfsr_32k_s
    gnuradio.gr.null_sink
diff --git a/docs/sphinx/source/gr/sink_blk.rst b/docs/sphinx/source/gr/sink_blk.rst
index 1be1130dce..56b29efff9 100644
--- a/docs/sphinx/source/gr/sink_blk.rst
+++ b/docs/sphinx/source/gr/sink_blk.rst
@@ -1,7 +1,6 @@
 gnuradio.gr: Signal Sinks
 =========================
 
-.. autooldblock:: gnuradio.gr.bin_statistics_f
 .. autooldblock:: gnuradio.gr.check_counting_s
 .. autooldblock:: gnuradio.gr.check_lfsr_32k_s
 .. autooldblock:: gnuradio.gr.null_sink
diff --git a/gnuradio-core/src/lib/general/CMakeLists.txt b/gnuradio-core/src/lib/general/CMakeLists.txt
index bbc6a7612b..bca0583b59 100644
--- a/gnuradio-core/src/lib/general/CMakeLists.txt
+++ b/gnuradio-core/src/lib/general/CMakeLists.txt
@@ -140,7 +140,6 @@ endif(ENABLE_PYTHON)
 set(gr_core_general_triple_threats
     complex_vec_test
     gr_align_on_samplenumbers_ss
-    gr_bin_statistics_f
     gr_block_gateway
     gr_check_counting_s
     gr_check_lfsr_32k_s
diff --git a/gnuradio-core/src/lib/general/general.i b/gnuradio-core/src/lib/general/general.i
index f7f7942577..2712c4101c 100644
--- a/gnuradio-core/src/lib/general/general.i
+++ b/gnuradio-core/src/lib/general/general.i
@@ -43,7 +43,6 @@
 #include <gr_test_types.h>
 #include <gr_test.h>
 #include <gr_feval.h>
-#include <gr_bin_statistics_f.h>
 #include <gr_copy.h>
 #include <complex_vec_test.h>
 #include <gr_annotator_alltoall.h>
@@ -73,7 +72,6 @@
 %include "gr_test_types.h"
 %include "gr_test.i"
 %include "gr_feval.i"
-%include "gr_bin_statistics_f.i"
 %include "gr_copy.i"
 %include "complex_vec_test.i"
 %include "gr_annotator_alltoall.i"
diff --git a/gnuradio-core/src/lib/general/gr_bin_statistics_f.cc b/gnuradio-core/src/lib/general/gr_bin_statistics_f.cc
deleted file mode 100644
index 3938f2b487..0000000000
--- a/gnuradio-core/src/lib/general/gr_bin_statistics_f.cc
+++ /dev/null
@@ -1,174 +0,0 @@
-/* -*- c++ -*- */
-/*
- * Copyright 2006,2010 Free Software Foundation, Inc.
- *
- * This file is part of GNU Radio
- *
- * GNU Radio is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 3, or (at your option)
- * any later version.
- *
- * GNU Radio is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with GNU Radio; see the file COPYING.  If not, write to
- * the Free Software Foundation, Inc., 51 Franklin Street,
- * Boston, MA 02110-1301, USA.
- */
-
-#ifdef HAVE_CONFIG_H
-#include "config.h"
-#endif
-
-#include <gr_bin_statistics_f.h>
-#include <gr_io_signature.h>
-#include <string.h>
-
-gr_bin_statistics_f_sptr
-gr_make_bin_statistics_f(unsigned int vlen,
-			gr_msg_queue_sptr msgq,
-			gr_feval_dd *tune,
-			size_t tune_delay,
-			size_t dwell_delay)
-{
-  return gnuradio::get_initial_sptr(new gr_bin_statistics_f(vlen,
-							  msgq,
-							  tune,
-							  tune_delay,
-							  dwell_delay));
-}
-
-gr_bin_statistics_f::gr_bin_statistics_f(unsigned int vlen,
-					 gr_msg_queue_sptr msgq,
-					 gr_feval_dd *tune,
-					 size_t tune_delay,
-					 size_t dwell_delay)
-  : gr_sync_block("bin_statistics_f",
-		  gr_make_io_signature(1, 1, sizeof(float) * vlen),
-		  gr_make_io_signature(0, 0, 0)),
-    d_vlen(vlen), d_msgq(msgq), d_tune(tune),
-    d_tune_delay(tune_delay), d_dwell_delay(dwell_delay),
-    d_center_freq(0), d_delay(0),
-    d_max(vlen)
-{
-  enter_init();
-}
-
-gr_bin_statistics_f::~gr_bin_statistics_f()
-{
-  // NOP
-}
-
-void
-gr_bin_statistics_f::enter_init()
-{
-  d_state = ST_INIT;
-  d_delay = 0;
-}
-
-void
-gr_bin_statistics_f::enter_tune_delay()
-{
-  d_state = ST_TUNE_DELAY;
-  d_delay = d_tune_delay;
-  d_center_freq = d_tune->calleval(0);
-}
-
-void
-gr_bin_statistics_f::enter_dwell_delay()
-{
-  d_state = ST_DWELL_DELAY;
-  d_delay = d_dwell_delay;
-  reset_stats();
-}
-
-void
-gr_bin_statistics_f::leave_dwell_delay()
-{
-  send_stats();
-}
-
-int
-gr_bin_statistics_f::work(int noutput_items,
-			  gr_vector_const_void_star &input_items,
-			  gr_vector_void_star &output_items)
-{
-  const float *input = (const float *) input_items[0];
-  size_t vlen = d_max.size();
-
-  int n = 0;
-  int t;
-
-  while (n < noutput_items){
-    switch (d_state){
-
-    case ST_INIT:
-      enter_tune_delay();
-      break;
-
-    case ST_TUNE_DELAY:
-      t = std::min(noutput_items - n, int(d_delay));
-      n += t;
-      d_delay -= t;
-      assert(d_delay >= 0);
-      if (d_delay == 0)
-	enter_dwell_delay();
-      break;
-
-    case ST_DWELL_DELAY:
-      t = std::min(noutput_items - n, int(d_delay));
-      for (int i = 0; i < t; i++){
-	accrue_stats(&input[n * vlen]);
-	n++;
-      }
-      d_delay -= t;
-      assert(d_delay >= 0);
-      if (d_delay == 0){
-	leave_dwell_delay();
-	enter_tune_delay();
-      }
-      break;
-
-    default:
-      assert(0);
-    }
-  }
-
-  return noutput_items;
-}
-
-//////////////////////////////////////////////////////////////////////////
-//           virtual methods for gathering stats
-//////////////////////////////////////////////////////////////////////////
-
-void
-gr_bin_statistics_f::reset_stats()
-{
-  for (size_t i = 0; i < vlen(); i++){
-    d_max[i] = 0;
-  }
-}
-
-void
-gr_bin_statistics_f::accrue_stats(const float *input)
-{
-  for (size_t i = 0; i < vlen(); i++){
-    d_max[i] = std::max(d_max[i], input[i]);	// compute per bin maxima
-  }
-}
-
-void
-gr_bin_statistics_f::send_stats()
-{
-  if (msgq()->full_p())		// if the queue is full, don't block, drop the data...
-    return;
-
-  // build & send a message
-  gr_message_sptr msg = gr_make_message(0, center_freq(), vlen(), vlen() * sizeof(float));
-  memcpy(msg->msg(), &d_max[0], vlen() * sizeof(float));
-  msgq()->insert_tail(msg);
-}
diff --git a/gnuradio-core/src/lib/general/gr_bin_statistics_f.h b/gnuradio-core/src/lib/general/gr_bin_statistics_f.h
deleted file mode 100644
index dd10759096..0000000000
--- a/gnuradio-core/src/lib/general/gr_bin_statistics_f.h
+++ /dev/null
@@ -1,100 +0,0 @@
-/* -*- c++ -*- */
-/*
- * Copyright 2006 Free Software Foundation, Inc.
- *
- * This file is part of GNU Radio
- *
- * GNU Radio is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 3, or (at your option)
- * any later version.
- *
- * GNU Radio is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with GNU Radio; see the file COPYING.  If not, write to
- * the Free Software Foundation, Inc., 51 Franklin Street,
- * Boston, MA 02110-1301, USA.
- */
-
-#ifndef INCLUDED_GR_BIN_STATISTICS_F_H
-#define INCLUDED_GR_BIN_STATISTICS_F_H
-
-
-#include <gr_core_api.h>
-#include <gr_sync_block.h>
-#include <gr_feval.h>
-#include <gr_message.h>
-#include <gr_msg_queue.h>
-
-class gr_bin_statistics_f;
-typedef boost::shared_ptr<gr_bin_statistics_f> gr_bin_statistics_f_sptr;
-
-
-GR_CORE_API gr_bin_statistics_f_sptr
-gr_make_bin_statistics_f(unsigned int vlen,	// vector length
-			 gr_msg_queue_sptr msgq,
-			 gr_feval_dd *tune,	// callback
-			 size_t tune_delay,	// samples
-			 size_t dwell_delay);	// samples
-
-/*!
- * \brief control scanning and record frequency domain statistics
- * \ingroup sink_blk
- */
-class GR_CORE_API gr_bin_statistics_f : public gr_sync_block
-{
-  friend GR_CORE_API gr_bin_statistics_f_sptr
-  gr_make_bin_statistics_f(unsigned int vlen,	   // vector length
-			   gr_msg_queue_sptr msgq,
-			   gr_feval_dd *tune,      // callback
-			   size_t tune_delay,	   // samples
-			   size_t dwell_delay);	   // samples
-
-  enum state_t { ST_INIT, ST_TUNE_DELAY, ST_DWELL_DELAY };
-
-  size_t	     d_vlen;
-  gr_msg_queue_sptr  d_msgq;
-  gr_feval_dd       *d_tune;
-  size_t	     d_tune_delay;
-  size_t	     d_dwell_delay;
-  double	     d_center_freq;
-
-  state_t	     d_state;
-  size_t	     d_delay;	// nsamples remaining to state transition
-
-  gr_bin_statistics_f(unsigned int vlen,
-		      gr_msg_queue_sptr msgq,
-		      gr_feval_dd *tune,
-		      size_t tune_delay,
-		      size_t dwell_delay);
-
-  void enter_init();
-  void enter_tune_delay();
-  void enter_dwell_delay();
-  void leave_dwell_delay();
-
-protected:
-  std::vector<float> d_max;	// per bin maxima
-
-  size_t vlen() const { return d_vlen; }
-  double center_freq() const { return d_center_freq; }
-  gr_msg_queue_sptr msgq() const { return d_msgq; }
-
-  virtual void reset_stats();
-  virtual void accrue_stats(const float *input);
-  virtual void send_stats();
-
-public:
-  ~gr_bin_statistics_f();
-
-  int work(int noutput_items,
-	   gr_vector_const_void_star &input_items,
-	   gr_vector_void_star &output_items);
-
-};
-
-#endif
diff --git a/gnuradio-core/src/lib/general/gr_bin_statistics_f.i b/gnuradio-core/src/lib/general/gr_bin_statistics_f.i
deleted file mode 100644
index 94a3db69a2..0000000000
--- a/gnuradio-core/src/lib/general/gr_bin_statistics_f.i
+++ /dev/null
@@ -1,47 +0,0 @@
-/* -*- c++ -*- */
-/*
- * Copyright 2006,2010 Free Software Foundation, Inc.
- *
- * This file is part of GNU Radio
- *
- * GNU Radio is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 3, or (at your option)
- * any later version.
- *
- * GNU Radio is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License along
- * with this program; if not, write to the Free Software Foundation, Inc.,
- * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
- */
-
-// Directors are only supported in Python, Java and C#.  gr_feval_dd uses directors
-#ifdef SWIGPYTHON
-
-GR_SWIG_BLOCK_MAGIC(gr,bin_statistics_f);
-
-gr_bin_statistics_f_sptr
-gr_make_bin_statistics_f(unsigned int vlen,	// vector length
-			 gr_msg_queue_sptr msgq,
-			 gr_feval_dd *tune,	// callback
-			 size_t tune_delay,	// samples
-			 size_t dwell_delay);	// samples
-
-
-class gr_bin_statistics_f : public gr_sync_block
-{
-private:
-  gr_bin_statistics_f(unsigned int vlen,
-		      gr_msg_queue_sptr msgq,
-		      gr_feval_dd *tune,
-		      size_t tune_delay,
-		      size_t dwell_delay);
-public:
-  ~gr_bin_statistics_f();
-};
-
-#endif
diff --git a/gr-blocks/python/qa_bin_statistics.py b/gr-blocks/python/qa_bin_statistics.py
index c1b3072530..666f7c0d68 100755
--- a/gr-blocks/python/qa_bin_statistics.py
+++ b/gr-blocks/python/qa_bin_statistics.py
@@ -27,9 +27,8 @@ import struct
 
 """
 Note: There has been an issue with this block in the past, see Issue
-#199. This looks like it might have fixed itself over the years. I am
-leaving these tests disabled on our master branch for v3.6 for now,
-though, just in case. TWR.
+#199. This test is being enabled only on the 'next' branch for version
+v3.7 for now. TWR
 """
 
 class counter(gr.feval_dd):
@@ -100,7 +99,7 @@ class test_bin_statistics(gr_unittest.TestCase):
     def tearDown(self):
         self.tb = None
 
-    def xtest_001(self):
+    def test_001(self):
         vlen = 4
         tune = counter(1)
         tune_delay = 0
@@ -132,7 +131,7 @@ class test_bin_statistics(gr_unittest.TestCase):
             #print "m =", m.center_freq, m.data
             self.assertEqual(expected_results[vlen*i:vlen*i + vlen], m.data)
 
-    def xtest_002(self):
+    def test_002(self):
         vlen = 4
         tune = counter(1)
         tune_delay = 1
@@ -162,7 +161,7 @@ class test_bin_statistics(gr_unittest.TestCase):
 
 
 
-    def xtest_003(self):
+    def test_003(self):
         vlen = 4
         tune = counter3(foobar3, 1)
         tune_delay = 1
@@ -194,7 +193,7 @@ class test_bin_statistics(gr_unittest.TestCase):
         #print "foobar4: new_t =", new_t
         pass
 
-    def xtest_004(self):
+    def test_004(self):
         vlen = 4
         tune = counter4(self, 1)
         tune_delay = 1
diff --git a/gr-uhd/examples/python/usrp_spectrum_sense.py b/gr-uhd/examples/python/usrp_spectrum_sense.py
index 077365a916..39e85ab18a 100755
--- a/gr-uhd/examples/python/usrp_spectrum_sense.py
+++ b/gr-uhd/examples/python/usrp_spectrum_sense.py
@@ -49,7 +49,7 @@ class tune(gr.feval_dd):
 
     def eval(self, ignore):
         """
-        This method is called from gr.bin_statistics_f when it wants
+        This method is called from blocks.bin_statistics_f when it wants
         to change the center frequency.  This method tunes the front
         end to the new center frequency, and returns the new frequency
         as its result.
@@ -183,9 +183,9 @@ class my_top_block(gr.top_block):
 
         self.msgq = gr.msg_queue(16)
         self._tune_callback = tune(self)        # hang on to this to keep it from being GC'd
-        stats = gr.bin_statistics_f(self.fft_size, self.msgq,
-                                    self._tune_callback, tune_delay,
-                                    dwell_delay)
+        stats = blocks.bin_statistics_f(self.fft_size, self.msgq,
+                                        self._tune_callback, tune_delay,
+                                        dwell_delay)
 
         # FIXME leave out the log10 until we speed it up
 	#self.connect(self.u, s2v, ffter, c2mag, log, stats)
-- 
cgit v1.2.3