From 29f51e3f95acb3918cf5ef9e9134254e256afbb4 Mon Sep 17 00:00:00 2001
From: Tom Rondeau <trondeau@vt.edu>
Date: Mon, 18 Feb 2013 17:55:14 -0500
Subject: ctrlport: adding a config param to enable/disable controlport,
 default=disabled.

Also updates QA code for ctrlport to turn controlport on via env var.
---
 .../src/lib/runtime/gr_hier_block2_detail.cc        | 21 +++++++++++++++------
 gnuradio-core/src/lib/runtime/gr_top_block_impl.cc  |  5 ++++-
 .../python/gnuradio/ctrlport/qa_cpp_py_binding.py   |  2 ++
 .../gnuradio/ctrlport/qa_cpp_py_binding_set.py      |  2 ++
 4 files changed, 23 insertions(+), 7 deletions(-)

(limited to 'gnuradio-core/src')

diff --git a/gnuradio-core/src/lib/runtime/gr_hier_block2_detail.cc b/gnuradio-core/src/lib/runtime/gr_hier_block2_detail.cc
index 6850afa845..c8564f6698 100644
--- a/gnuradio-core/src/lib/runtime/gr_hier_block2_detail.cc
+++ b/gnuradio-core/src/lib/runtime/gr_hier_block2_detail.cc
@@ -25,6 +25,7 @@
 
 #include <gr_hier_block2_detail.h>
 #include <gr_io_signature.h>
+#include <gr_prefs.h>
 #include <stdexcept>
 #include <sstream>
 #include <boost/format.hpp>
@@ -474,20 +475,28 @@ gr_hier_block2_detail::flatten_aux(gr_flat_flowgraph_sptr sfg) const
   gr_edge_viter_t p;
   gr_msg_edge_viter_t q,u;
 
+  // Only run setup_rpc if ControlPort config param is enabled.
+  bool ctrlport_on = gr_prefs::singleton()->get_bool("ControlPort", "on", false);
+
   // For every block (gr_block and gr_hier_block2), set up the RPC
   // interface.
   for(p = edges.begin(); p != edges.end(); p++) {
     gr_basic_block_sptr b;
     b = p->src().block();
-    if(!b->is_rpc_set()) {
-      b->setup_rpc();
-      b->rpc_set();
+
+    if(ctrlport_on) {
+      if(!b->is_rpc_set()) {
+	b->setup_rpc();
+	b->rpc_set();
+      }
     }
 
     b = p->dst().block();
-    if(!b->is_rpc_set()) {
-      b->setup_rpc();
-      b->rpc_set();
+    if(ctrlport_on) {
+      if(!b->is_rpc_set()) {
+	b->setup_rpc();
+	b->rpc_set();
+      }
     }
   }
 
diff --git a/gnuradio-core/src/lib/runtime/gr_top_block_impl.cc b/gnuradio-core/src/lib/runtime/gr_top_block_impl.cc
index e563fbadb8..7e771204a0 100644
--- a/gnuradio-core/src/lib/runtime/gr_top_block_impl.cc
+++ b/gnuradio-core/src/lib/runtime/gr_top_block_impl.cc
@@ -29,6 +29,7 @@
 #include <gr_flat_flowgraph.h>
 #include <gr_scheduler_sts.h>
 #include <gr_scheduler_tpb.h>
+#include <gr_prefs.h>
 
 #include <stdexcept>
 #include <iostream>
@@ -108,7 +109,9 @@ gr_top_block_impl::start(int max_noutput_items)
   d_ffg->validate();
   d_ffg->setup_connections();
 
-  d_ffg->enable_pc_rpc();
+  // Only export perf. counters if ControlPort config param is enabled.
+  if(gr_prefs::singleton()->get_bool("ControlPort", "on", false))
+    d_ffg->enable_pc_rpc();
 
   d_scheduler = make_scheduler(d_ffg, d_max_noutput_items);
   d_state = RUNNING;
diff --git a/gnuradio-core/src/python/gnuradio/ctrlport/qa_cpp_py_binding.py b/gnuradio-core/src/python/gnuradio/ctrlport/qa_cpp_py_binding.py
index 34c7d0f5df..a8b6de8c53 100755
--- a/gnuradio-core/src/python/gnuradio/ctrlport/qa_cpp_py_binding.py
+++ b/gnuradio-core/src/python/gnuradio/ctrlport/qa_cpp_py_binding.py
@@ -30,6 +30,7 @@ from gnuradio import gr, gr_unittest
 
 from gnuradio.ctrlport import GNURadio
 from gnuradio import ctrlport
+import os
 
 def get1():
     return "success"
@@ -69,6 +70,7 @@ class test_cpp_py_binding(gr_unittest.TestCase):
 
     def setUp(self):
         self.tb = gr.top_block()
+        os.environ['GR_CONF_CONTROLPORT_ON'] = 'True'
 
     def tearDown(self):
         self.tb = None
diff --git a/gnuradio-core/src/python/gnuradio/ctrlport/qa_cpp_py_binding_set.py b/gnuradio-core/src/python/gnuradio/ctrlport/qa_cpp_py_binding_set.py
index 8b1b15022c..4ca120099c 100755
--- a/gnuradio-core/src/python/gnuradio/ctrlport/qa_cpp_py_binding_set.py
+++ b/gnuradio-core/src/python/gnuradio/ctrlport/qa_cpp_py_binding_set.py
@@ -30,6 +30,7 @@ from gnuradio import gr, gr_unittest
 
 from gnuradio.ctrlport import GNURadio
 from gnuradio import ctrlport
+import os
 
 class inc_class:
     def __init__(self,val):
@@ -51,6 +52,7 @@ getset3 = inc_class("test");
 class test_cpp_py_binding_set(gr_unittest.TestCase):
     def setUp(self):
         self.tb = gr.top_block()
+        os.environ['GR_CONF_CONTROLPORT_ON'] = 'True'
 
     def tearDown(self):
         self.tb = None
-- 
cgit v1.2.3