commit-gnuradio
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[Commit-gnuradio] r8689 - in gnuradio/trunk: gnuradio-core/src/lib/runti


From: eb
Subject: [Commit-gnuradio] r8689 - in gnuradio/trunk: gnuradio-core/src/lib/runtime gr-gpio/src/python gr-utils/src/python
Date: Tue, 24 Jun 2008 14:48:40 -0600 (MDT)

Author: eb
Date: 2008-06-24 14:48:39 -0600 (Tue, 24 Jun 2008)
New Revision: 8689

Modified:
   gnuradio/trunk/gnuradio-core/src/lib/runtime/gr_top_block.cc
   gnuradio/trunk/gnuradio-core/src/lib/runtime/gr_top_block.h
   gnuradio/trunk/gnuradio-core/src/lib/runtime/gr_top_block.i
   gnuradio/trunk/gnuradio-core/src/lib/runtime/gr_top_block_impl.cc
   gnuradio/trunk/gnuradio-core/src/lib/runtime/gr_top_block_impl.h
   gnuradio/trunk/gnuradio-core/src/lib/runtime/gr_top_block_impl_sts.cc
   gnuradio/trunk/gr-gpio/src/python/gpio_usrp_siggen.py
   gnuradio/trunk/gr-utils/src/python/usrp_siggen.py
Log:
removed is_running method from gr_top_block

Modified: gnuradio/trunk/gnuradio-core/src/lib/runtime/gr_top_block.cc
===================================================================
--- gnuradio/trunk/gnuradio-core/src/lib/runtime/gr_top_block.cc        
2008-06-24 19:41:34 UTC (rev 8688)
+++ gnuradio/trunk/gnuradio-core/src/lib/runtime/gr_top_block.cc        
2008-06-24 20:48:39 UTC (rev 8689)
@@ -96,9 +96,3 @@
 {
   d_impl->dump();
 }
-
-bool
-gr_top_block::is_running()
-{
-  return d_impl->is_running();
-}

Modified: gnuradio/trunk/gnuradio-core/src/lib/runtime/gr_top_block.h
===================================================================
--- gnuradio/trunk/gnuradio-core/src/lib/runtime/gr_top_block.h 2008-06-24 
19:41:34 UTC (rev 8688)
+++ gnuradio/trunk/gnuradio-core/src/lib/runtime/gr_top_block.h 2008-06-24 
20:48:39 UTC (rev 8689)
@@ -1,6 +1,6 @@
 /* -*- c++ -*- */
 /*
- * Copyright 2007 Free Software Foundation, Inc.
+ * Copyright 2007,2008 Free Software Foundation, Inc.
  * 
  * This file is part of GNU Radio
  * 
@@ -103,11 +103,6 @@
    * Displays flattened flowgraph edges and block connectivity
    */
   void dump();
-
-  /*!
-   * Returns true if flowgraph is running
-   */
-  bool is_running();
 };
 
 #endif /* INCLUDED_GR_TOP_BLOCK_H */

Modified: gnuradio/trunk/gnuradio-core/src/lib/runtime/gr_top_block.i
===================================================================
--- gnuradio/trunk/gnuradio-core/src/lib/runtime/gr_top_block.i 2008-06-24 
19:41:34 UTC (rev 8688)
+++ gnuradio/trunk/gnuradio-core/src/lib/runtime/gr_top_block.i 2008-06-24 
20:48:39 UTC (rev 8689)
@@ -1,6 +1,6 @@
 /* -*- c++ -*- */
 /*
- * Copyright 2007 Free Software Foundation, Inc.
+ * Copyright 2007,2008 Free Software Foundation, Inc.
  * 
  * This file is part of GNU Radio
  * 
@@ -46,7 +46,6 @@
   void run();
   void lock();
   void unlock() throw (std::runtime_error);
-  bool is_running();
   void dump();
 };
 

Modified: gnuradio/trunk/gnuradio-core/src/lib/runtime/gr_top_block_impl.cc
===================================================================
--- gnuradio/trunk/gnuradio-core/src/lib/runtime/gr_top_block_impl.cc   
2008-06-24 19:41:34 UTC (rev 8688)
+++ gnuradio/trunk/gnuradio-core/src/lib/runtime/gr_top_block_impl.cc   
2008-06-24 20:48:39 UTC (rev 8689)
@@ -57,8 +57,11 @@
     std::cout << "start: entered " << this << std::endl;
 
   if (d_running)
-    throw std::runtime_error("top block already running or wait() not called 
after previous stop()");
+    throw std::runtime_error("top_block::start: top block already running or 
wait() not called after previous stop()");
 
+  if (d_lock_count > 0)
+    throw std::runtime_error("top_block::start: can't call start with flow 
graph locked");
+
   // Create new flat flow graph by flattening hierarchy
   d_ffg = d_owner->flatten();
 
@@ -68,6 +71,7 @@
 
   // Execute scheduler threads
   start_threads();
+  d_running = true;
 }
 
 
@@ -86,8 +90,10 @@
 gr_top_block_impl::unlock()
 {
   omni_mutex_lock lock(d_reconf);
-  if (d_lock_count <= 0)
+  if (d_lock_count <= 0){
+    d_lock_count = 0;          // fix it, then complain
     throw std::runtime_error("unpaired unlock() call");
+  }
 
   d_lock_count--;
   if (GR_TOP_BLOCK_IMPL_DEBUG)
@@ -107,7 +113,7 @@
     std::cout << "restart: entered" << std::endl;
 
   if (!d_running)
-    throw std::runtime_error("top block is not running");
+    return;            // nothing to do
 
   // Stop scheduler threads and wait for completion
   stop();
@@ -133,6 +139,7 @@
   d_ffg = new_ffg;
 
   start_threads();
+  d_running = true;
 }
 
 void

Modified: gnuradio/trunk/gnuradio-core/src/lib/runtime/gr_top_block_impl.h
===================================================================
--- gnuradio/trunk/gnuradio-core/src/lib/runtime/gr_top_block_impl.h    
2008-06-24 19:41:34 UTC (rev 8688)
+++ gnuradio/trunk/gnuradio-core/src/lib/runtime/gr_top_block_impl.h    
2008-06-24 20:48:39 UTC (rev 8689)
@@ -49,16 +49,13 @@
   virtual void wait() = 0;
 
   // Lock the top block to allow reconfiguration
-  virtual void lock();
+  void lock();
 
   // Unlock the top block at end of reconfiguration
-  virtual void unlock();
+  void unlock();
 
   // Dump the flowgraph to stdout
   void dump();
-
-  // Return true if flowgraph is running
-  bool is_running() const { return d_running; }
   
 protected:
     
@@ -70,7 +67,6 @@
   int                            d_lock_count;
 
   virtual void start_threads() = 0;
-  virtual void restart();
 
 /*!
  * Make a vector of gr_block from a vector of gr_basic_block
@@ -79,6 +75,8 @@
  */
   static gr_block_vector_t make_gr_block_vector(gr_basic_block_vector_t 
blocks);
 
+private:
+  void restart();
 };
 
 #endif /* INCLUDED_GR_TOP_BLOCK_IMPL_H */

Modified: gnuradio/trunk/gnuradio-core/src/lib/runtime/gr_top_block_impl_sts.cc
===================================================================
--- gnuradio/trunk/gnuradio-core/src/lib/runtime/gr_top_block_impl_sts.cc       
2008-06-24 19:41:34 UTC (rev 8688)
+++ gnuradio/trunk/gnuradio-core/src/lib/runtime/gr_top_block_impl_sts.cc       
2008-06-24 20:48:39 UTC (rev 8689)
@@ -85,8 +85,6 @@
       std::cout << "start_threads: starting " << thread << std::endl;
     thread->start();
   }
-
-  d_running = true;
 }
 
 /*

Modified: gnuradio/trunk/gr-gpio/src/python/gpio_usrp_siggen.py
===================================================================
--- gnuradio/trunk/gr-gpio/src/python/gpio_usrp_siggen.py       2008-06-24 
19:41:34 UTC (rev 8688)
+++ gnuradio/trunk/gr-gpio/src/python/gpio_usrp_siggen.py       2008-06-24 
20:48:39 UTC (rev 8689)
@@ -90,26 +90,25 @@
         # self.file_sink = gr.file_sink (gr.sizeof_gr_complex, "siggen.dat")
 
     def _configure_graph (self, type):
-        was_running = self.is_running ()
-        if was_running:
-            self.stop ()
-        self.disconnect_all ()
-        if type == gr.GR_SIN_WAVE:
-            self.connect (self.siggen, self.u)
-            # self.connect (self.siggen, self.file_sink)
-            self.siggen.set_waveform (type)
-            self.src = self.siggen
-        elif type == gr.GR_UNIFORM or type == gr.GR_GAUSSIAN:
-            self.connect (self.noisegen, self.u)
-            self.noisegen.set_type (type)
-            self.src = self.noisegen
-        elif type == gr.GR_CONST_WAVE:
-            self.connect (self.vecgen, self.u)
-            self.src = self.vecgen
-        else:
-            raise ValueError, type
-        if was_running:
-            self.start ()
+        try:
+            self.lock()
+            self.disconnect_all ()
+            if type == gr.GR_SIN_WAVE:
+                self.connect (self.siggen, self.u)
+                # self.connect (self.siggen, self.file_sink)
+                self.siggen.set_waveform (type)
+                self.src = self.siggen
+            elif type == gr.GR_UNIFORM or type == gr.GR_GAUSSIAN:
+                self.connect (self.noisegen, self.u)
+                self.noisegen.set_type (type)
+                self.src = self.noisegen
+            elif type == gr.GR_CONST_WAVE:
+                self.connect (self.vecgen, self.u)
+                self.src = self.vecgen
+            else:
+                raise ValueError, type
+        finally:
+            self.unlock()
 
     def set_freq(self, target_freq):
         """

Modified: gnuradio/trunk/gr-utils/src/python/usrp_siggen.py
===================================================================
--- gnuradio/trunk/gr-utils/src/python/usrp_siggen.py   2008-06-24 19:41:34 UTC 
(rev 8688)
+++ gnuradio/trunk/gr-utils/src/python/usrp_siggen.py   2008-06-24 20:48:39 UTC 
(rev 8689)
@@ -69,23 +69,22 @@
         # self.file_sink = gr.file_sink (gr.sizeof_gr_complex, "siggen.dat")
 
     def _configure_graph (self, type):
-        was_running = self.is_running ()
-        if was_running:
-            self.stop ()
-        self.disconnect_all ()
-        if type == gr.GR_SIN_WAVE or type == gr.GR_CONST_WAVE:
-            self.connect (self.siggen, self.u)
-            # self.connect (self.siggen, self.file_sink)
-            self.siggen.set_waveform (type)
-            self.src = self.siggen
-        elif type == gr.GR_UNIFORM or type == gr.GR_GAUSSIAN:
-            self.connect (self.noisegen, self.u)
-            self.noisegen.set_type (type)
-            self.src = self.noisegen
-        else:
-            raise ValueError, type
-        if was_running:
-            self.start ()
+        try:
+            self.lock()
+            self.disconnect_all ()
+            if type == gr.GR_SIN_WAVE or type == gr.GR_CONST_WAVE:
+                self.connect (self.siggen, self.u)
+                # self.connect (self.siggen, self.file_sink)
+                self.siggen.set_waveform (type)
+                self.src = self.siggen
+            elif type == gr.GR_UNIFORM or type == gr.GR_GAUSSIAN:
+                self.connect (self.noisegen, self.u)
+                self.noisegen.set_type (type)
+                self.src = self.noisegen
+            else:
+                raise ValueError, type
+        finally:
+            self.unlock()
 
     def set_freq(self, target_freq):
         """





reply via email to

[Prev in Thread] Current Thread [Next in Thread]