commit-gnuradio
[Top][All Lists]
Advanced

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

[Commit-gnuradio] r6349 - in gnuradio/branches/developers/jcorgan/t162:


From: jcorgan
Subject: [Commit-gnuradio] r6349 - in gnuradio/branches/developers/jcorgan/t162: gnuradio-core/src/lib/runtime gnuradio-core/src/python/gnuradio/blks2impl gnuradio-examples/python/digital
Date: Fri, 7 Sep 2007 10:06:24 -0600 (MDT)

Author: jcorgan
Date: 2007-09-07 10:06:24 -0600 (Fri, 07 Sep 2007)
New Revision: 6349

Modified:
   
gnuradio/branches/developers/jcorgan/t162/gnuradio-core/src/lib/runtime/gr_flat_flowgraph.cc
   
gnuradio/branches/developers/jcorgan/t162/gnuradio-core/src/lib/runtime/gr_top_block.cc
   
gnuradio/branches/developers/jcorgan/t162/gnuradio-core/src/lib/runtime/gr_top_block.h
   
gnuradio/branches/developers/jcorgan/t162/gnuradio-core/src/lib/runtime/gr_top_block.i
   
gnuradio/branches/developers/jcorgan/t162/gnuradio-core/src/lib/runtime/gr_top_block_impl.cc
   
gnuradio/branches/developers/jcorgan/t162/gnuradio-core/src/lib/runtime/gr_top_block_impl.h
   
gnuradio/branches/developers/jcorgan/t162/gnuradio-core/src/python/gnuradio/blks2impl/gmsk.py
   
gnuradio/branches/developers/jcorgan/t162/gnuradio-examples/python/digital/benchmark_tx.py
   
gnuradio/branches/developers/jcorgan/t162/gnuradio-examples/python/digital/transmit_path.py
Log:
Partial conversion of digital/benchmark_tx.py, work-in-progress.

Modified: 
gnuradio/branches/developers/jcorgan/t162/gnuradio-core/src/lib/runtime/gr_flat_flowgraph.cc
===================================================================
--- 
gnuradio/branches/developers/jcorgan/t162/gnuradio-core/src/lib/runtime/gr_flat_flowgraph.cc
        2007-09-07 15:46:11 UTC (rev 6348)
+++ 
gnuradio/branches/developers/jcorgan/t162/gnuradio-core/src/lib/runtime/gr_flat_flowgraph.cc
        2007-09-07 16:06:24 UTC (rev 6349)
@@ -31,7 +31,7 @@
 #include <iostream>
 #include <map>
 
-#define GR_FLAT_FLOWGRAPH_DEBUG 0
+#define GR_FLAT_FLOWGRAPH_DEBUG 1
 
 gr_flat_flowgraph_sptr
 gr_make_flat_flowgraph()

Modified: 
gnuradio/branches/developers/jcorgan/t162/gnuradio-core/src/lib/runtime/gr_top_block.cc
===================================================================
--- 
gnuradio/branches/developers/jcorgan/t162/gnuradio-core/src/lib/runtime/gr_top_block.cc
     2007-09-07 15:46:11 UTC (rev 6348)
+++ 
gnuradio/branches/developers/jcorgan/t162/gnuradio-core/src/lib/runtime/gr_top_block.cc
     2007-09-07 16:06:24 UTC (rev 6349)
@@ -88,3 +88,9 @@
 {
   d_impl->unlock();
 }
+
+void
+gr_top_block::set_verbose(int verbosity)
+{
+  d_impl->set_verbose(verbosity);
+}

Modified: 
gnuradio/branches/developers/jcorgan/t162/gnuradio-core/src/lib/runtime/gr_top_block.h
===================================================================
--- 
gnuradio/branches/developers/jcorgan/t162/gnuradio-core/src/lib/runtime/gr_top_block.h
      2007-09-07 15:46:11 UTC (rev 6348)
+++ 
gnuradio/branches/developers/jcorgan/t162/gnuradio-core/src/lib/runtime/gr_top_block.h
      2007-09-07 16:06:24 UTC (rev 6349)
@@ -97,6 +97,13 @@
    * reconfiguration happens.
    */
   virtual void unlock();
+
+  /*!
+   * Set debug verbosity
+   *
+   */
+  void set_verbose(int verbosity);
+
 };
 
 #endif /* INCLUDED_GR_TOP_BLOCK_H */

Modified: 
gnuradio/branches/developers/jcorgan/t162/gnuradio-core/src/lib/runtime/gr_top_block.i
===================================================================
--- 
gnuradio/branches/developers/jcorgan/t162/gnuradio-core/src/lib/runtime/gr_top_block.i
      2007-09-07 15:46:11 UTC (rev 6348)
+++ 
gnuradio/branches/developers/jcorgan/t162/gnuradio-core/src/lib/runtime/gr_top_block.i
      2007-09-07 16:06:24 UTC (rev 6349)
@@ -46,6 +46,7 @@
   void run();
   void lock();
   void unlock();
+  void set_verbose(int verbosity);
 };
 
 %{

Modified: 
gnuradio/branches/developers/jcorgan/t162/gnuradio-core/src/lib/runtime/gr_top_block_impl.cc
===================================================================
--- 
gnuradio/branches/developers/jcorgan/t162/gnuradio-core/src/lib/runtime/gr_top_block_impl.cc
        2007-09-07 15:46:11 UTC (rev 6348)
+++ 
gnuradio/branches/developers/jcorgan/t162/gnuradio-core/src/lib/runtime/gr_top_block_impl.cc
        2007-09-07 16:06:24 UTC (rev 6349)
@@ -34,7 +34,7 @@
 #include <iostream>
 #include <string.h>
 
-#define GR_TOP_BLOCK_IMPL_DEBUG 0
+#define VERBOSE 1
 
 static gr_top_block_impl *s_impl = 0;
 
@@ -59,7 +59,7 @@
 static void 
 runtime_sigint_handler(int signum)
 {
-  if (GR_TOP_BLOCK_IMPL_DEBUG){
+  if (VERBOSE) {
     char *msg = "SIGINT received, calling stop()\n";
     ::write(1, msg, strlen(msg));      // write is OK to call from signal 
handler
   }
@@ -71,7 +71,8 @@
 // ----------------------------------------------------------------
 
 gr_top_block_impl::gr_top_block_impl(gr_top_block *owner) 
-  : d_running(false),
+  : d_verbose(0),
+    d_running(false),
     d_ffg(),
     d_owner(owner),
     d_lock_count(0)
@@ -91,7 +92,7 @@
 void
 gr_top_block_impl::start()
 {
-  if (GR_TOP_BLOCK_IMPL_DEBUG)
+  if (d_verbose)
     std::cout << "start: entered" << std::endl;
 
   if (d_running)
@@ -111,15 +112,18 @@
 void
 gr_top_block_impl::start_threads()
 {
-  if (GR_TOP_BLOCK_IMPL_DEBUG)
+  if (d_verbose)
     std::cout << "start_threads: entered" << std::endl;
 
   d_graphs = d_ffg->partition();
+  if (d_verbose)
+    std::cout << "flow graph has " << d_graphs.size() << " disjoint 
sub-graphs" 
+              << std::endl;
   for (std::vector<gr_basic_block_vector_t>::iterator p = d_graphs.begin();
        p != d_graphs.end(); p++) {
     gr_scheduler_thread *thread = new 
gr_scheduler_thread(make_gr_block_vector(*p));
     d_threads.push_back(thread);
-    if (GR_TOP_BLOCK_IMPL_DEBUG)
+    if (d_verbose)
       std::cout << "start_threads: starting " << thread << std::endl;
     thread->start();
   }
@@ -134,7 +138,7 @@
 void
 gr_top_block_impl::stop()
 {
-  if (GR_TOP_BLOCK_IMPL_DEBUG){
+  if (d_verbose){
     char *msg = "stop: entered\n";
     ::write(1, msg, strlen(msg));
   }
@@ -149,18 +153,18 @@
 void
 gr_top_block_impl::wait()
 {
-  if (GR_TOP_BLOCK_IMPL_DEBUG)
+  if (d_verbose)
     std::cout << "wait: entered" << std::endl;
 
   void *dummy_status; // don't ever dereference this
   gr_local_sighandler sigint(SIGINT, runtime_sigint_handler);
 
   for (gr_scheduler_thread_viter_t p = d_threads.begin(); p != 
d_threads.end(); p++) {
-    if (GR_TOP_BLOCK_IMPL_DEBUG)
+    if (d_verbose)
       std::cout << "wait: joining thread " << (*p) << std::endl;
     (*p)->join(&dummy_status); // pthreads will self-delete, so pointer is now 
dead
     (*p) = 0; // FIXME: switch to stl::list and actually remove from container
-    if (GR_TOP_BLOCK_IMPL_DEBUG)
+    if (d_verbose)
       std::cout << "wait: join returned" << std::endl;
   }
 
@@ -174,7 +178,7 @@
 {
   omni_mutex_lock lock(d_reconf);
   d_lock_count++;
-  if (GR_TOP_BLOCK_IMPL_DEBUG)
+  if (d_verbose)
     std::cout << "runtime: locked, count = " << d_lock_count <<  std::endl;
 }
 
@@ -186,11 +190,11 @@
     throw std::runtime_error("unpaired unlock() call");
 
   d_lock_count--;
-  if (GR_TOP_BLOCK_IMPL_DEBUG)
+  if (d_verbose)
     std::cout << "unlock: unlocked, count = " << d_lock_count << std::endl;
 
   if (d_lock_count == 0) {
-    if (GR_TOP_BLOCK_IMPL_DEBUG)
+    if (d_verbose)
       std::cout << "unlock: restarting flowgraph" << std::endl;
     restart();
   }
@@ -199,7 +203,7 @@
 void
 gr_top_block_impl::restart()
 {
-  if (GR_TOP_BLOCK_IMPL_DEBUG)
+  if (d_verbose)
     std::cout << "restart: entered" << std::endl;
 
   if (!d_running)
@@ -208,7 +212,7 @@
   // Stop scheduler threads and wait for completion
   stop();
   wait();
-  if (GR_TOP_BLOCK_IMPL_DEBUG)
+  if (d_verbose)
     std::cout << "restart: threads stopped" << std::endl;
 
   // Create new simple flow graph
@@ -216,9 +220,15 @@
   new_ffg->validate();                // check consistency, sanity, etc
   new_ffg->merge_connections(d_ffg);   // reuse buffers, etc
 
-  if (GR_TOP_BLOCK_IMPL_DEBUG)
+  if (d_verbose)
     std::cout << "restart: replacing old flow graph with new" << std::endl;
   d_ffg = new_ffg;
 
   start_threads();
 }
+
+void
+gr_top_block_impl::set_verbose(int verbosity)
+{
+  d_verbose = verbosity;
+}

Modified: 
gnuradio/branches/developers/jcorgan/t162/gnuradio-core/src/lib/runtime/gr_top_block_impl.h
===================================================================
--- 
gnuradio/branches/developers/jcorgan/t162/gnuradio-core/src/lib/runtime/gr_top_block_impl.h
 2007-09-07 15:46:11 UTC (rev 6348)
+++ 
gnuradio/branches/developers/jcorgan/t162/gnuradio-core/src/lib/runtime/gr_top_block_impl.h
 2007-09-07 16:06:24 UTC (rev 6349)
@@ -53,8 +53,12 @@
   // Unlock the top block at end of reconfiguration
   void unlock();
 
+  // Enable verbose messages
+  void set_verbose(int verbosity);
+
 private:
     
+  int                            d_verbose;
   bool                           d_running;
   gr_flat_flowgraph_sptr         d_ffg;
   gr_scheduler_thread_vector_t   d_threads;

Modified: 
gnuradio/branches/developers/jcorgan/t162/gnuradio-core/src/python/gnuradio/blks2impl/gmsk.py
===================================================================
--- 
gnuradio/branches/developers/jcorgan/t162/gnuradio-core/src/python/gnuradio/blks2impl/gmsk.py
       2007-09-07 15:46:11 UTC (rev 6348)
+++ 
gnuradio/branches/developers/jcorgan/t162/gnuradio-core/src/python/gnuradio/blks2impl/gmsk.py
       2007-09-07 16:06:24 UTC (rev 6349)
@@ -47,9 +47,9 @@
 #                              GMSK modulator
 # /////////////////////////////////////////////////////////////////////////////
 
-class gmsk_mod(gr.hier_block):
+class gmsk_mod(gr.hier_block2):
 
-    def __init__(self, fg,
+    def __init__(self,
                  samples_per_symbol=_def_samples_per_symbol,
                  bt=_def_bt,
                  verbose=_def_verbose,
@@ -61,8 +61,6 @@
        The input is a byte stream (unsigned char) and the
        output is the complex modulated signal at baseband.
 
-       @param fg: flow graph
-       @type fg: flow graph
        @param samples_per_symbol: samples per baud >= 2
        @type samples_per_symbol: integer
        @param bt: Gaussian filter bandwidth * symbol time
@@ -73,7 +71,10 @@
         @type debug: bool       
        """
 
-        self._fg = fg
+       gr.hier_block2.__init__(self, "gmsk_mod",
+                               gr.io_signature(1, 1, gr.sizeof_char),       # 
Input signature
+                               gr.io_signature(1, 1, gr.sizeof_gr_complex)) # 
Output signature
+
         self._samples_per_symbol = samples_per_symbol
         self._bt = bt
 
@@ -109,8 +110,7 @@
             self._setup_logging()
 
        # Connect & Initialize base class
-       self._fg.connect(self.nrz, self.gaussian_filter, self.fmmod)
-       gr.hier_block.__init__(self, self._fg, self.nrz, self.fmmod)
+       self.connect(self, self.nrz, self.gaussian_filter, self.fmmod, self)
 
     def samples_per_symbol(self):
         return self._samples_per_symbol
@@ -127,12 +127,12 @@
 
     def _setup_logging(self):
         print "Modulation logging turned on."
-        self._fg.connect(self.nrz,
-                         gr.file_sink(gr.sizeof_float, "nrz.dat"))
-        self._fg.connect(self.gaussian_filter,
-                         gr.file_sink(gr.sizeof_float, "gaussian_filter.dat"))
-        self._fg.connect(self.fmmod,
-                         gr.file_sink(gr.sizeof_gr_complex, "fmmod.dat"))
+        self.connect(self.nrz,
+                     gr.file_sink(gr.sizeof_float, "nrz.dat"))
+        self.connect(self.gaussian_filter,
+                     gr.file_sink(gr.sizeof_float, "gaussian_filter.dat"))
+        self.connect(self.fmmod,
+                     gr.file_sink(gr.sizeof_gr_complex, "fmmod.dat"))
 
 
     def add_options(parser):
@@ -158,9 +158,9 @@
 #                            GMSK demodulator
 # /////////////////////////////////////////////////////////////////////////////
 
-class gmsk_demod(gr.hier_block):
+class gmsk_demod(gr.hier_block2):
 
-    def __init__(self, fg,
+    def __init__(self,
                  samples_per_symbol=_def_samples_per_symbol,
                  gain_mu=_def_gain_mu,
                  mu=_def_mu,
@@ -175,8 +175,6 @@
        The input is the complex modulated signal at baseband.
        The output is a stream of bits packed 1 bit per byte (the LSB)
 
-       @param fg: flow graph
-       @type fg: flow graph
        @param samples_per_symbol: samples per baud
        @type samples_per_symbol: integer
         @param verbose: Print information about modulator?
@@ -196,7 +194,10 @@
         @param float
        """
 
-        self._fg = fg
+       gr.hier_block2.__init__(self, "gmsk_demod",
+                               gr.io_signature(1, 1, gr.sizeof_gr_complex), # 
Input signature
+                               gr.io_signature(1, 1, gr.sizeof_char))       # 
Output signature
+
         self._samples_per_symbol = samples_per_symbol
         self._gain_mu = gain_mu
         self._mu = mu
@@ -233,8 +234,7 @@
             self._setup_logging()
 
        # Connect & Initialize base class
-       self._fg.connect(self.fmdemod, self.clock_recovery, self.slicer)
-       gr.hier_block.__init__(self, self._fg, self.fmdemod, self.slicer)
+       self._fg.connect(self, self.fmdemod, self.clock_recovery, self.slicer, 
self)
 
     def samples_per_symbol(self):
         return self._samples_per_symbol
@@ -255,12 +255,12 @@
 
     def _setup_logging(self):
         print "Demodulation logging turned on."
-        self._fg.connect(self.fmdemod,
-                        gr.file_sink(gr.sizeof_float, "fmdemod.dat"))
-        self._fg.connect(self.clock_recovery,
-                        gr.file_sink(gr.sizeof_float, "clock_recovery.dat"))
-        self._fg.connect(self.slicer,
-                        gr.file_sink(gr.sizeof_char, "slicer.dat"))
+        self.connect(self.fmdemod,
+                    gr.file_sink(gr.sizeof_float, "fmdemod.dat"))
+        self.connect(self.clock_recovery,
+                    gr.file_sink(gr.sizeof_float, "clock_recovery.dat"))
+        self.connect(self.slicer,
+                    gr.file_sink(gr.sizeof_char, "slicer.dat"))
 
     def add_options(parser):
         """

Modified: 
gnuradio/branches/developers/jcorgan/t162/gnuradio-examples/python/digital/benchmark_tx.py
===================================================================
--- 
gnuradio/branches/developers/jcorgan/t162/gnuradio-examples/python/digital/benchmark_tx.py
  2007-09-07 15:46:11 UTC (rev 6348)
+++ 
gnuradio/branches/developers/jcorgan/t162/gnuradio-examples/python/digital/benchmark_tx.py
  2007-09-07 16:06:24 UTC (rev 6349)
@@ -1,6 +1,6 @@
 #!/usr/bin/env python
 #
-# Copyright 2005, 2006 Free Software Foundation, Inc.
+# Copyright 2005, 2006, 2007 Free Software Foundation, Inc.
 # 
 # This file is part of GNU Radio
 # 
@@ -37,10 +37,10 @@
 #raw_input('Attach and press enter')
 
 
-class my_graph(gr.flow_graph):
+class my_top_block(gr.top_block):
     def __init__(self, modulator_class, options):
-        gr.flow_graph.__init__(self)
-        self.txpath = transmit_path(self, modulator_class, options)
+        gr.top_block.__init__(self)
+        self.txpath = transmit_path(modulator_class, options)
 
 
 # /////////////////////////////////////////////////////////////////////////////
@@ -50,7 +50,7 @@
 def main():
 
     def send_pkt(payload='', eof=False):
-        return fg.txpath.send_pkt(payload, eof)
+        return tb.txpath.send_pkt(payload, eof)
 
     def rx_callback(ok, payload):
         print "ok = %r, payload = '%s'" % (ok, payload)
@@ -95,14 +95,15 @@
         source_file = open(options.from_file, 'r')
 
     # build the graph
-    fg = my_graph(mods[options.modulation], options)
+    tb = my_top_block(mods[options.modulation], options)
+    tb.set_verbose(1)
 
     r = gr.enable_realtime_scheduling()
     if r != gr.RT_OK:
         print "Warning: failed to enable realtime scheduling"
 
-    fg.start()                       # start flow graph
-
+    tb.start()                       # start flow graph
+        
     # generate and send packets
     nbytes = int(1e6 * options.megabytes)
     n = 0
@@ -126,8 +127,9 @@
         pktno += 1
         
     send_pkt(eof=True)
-    fg.wait()                       # wait for it to finish
 
+    tb.wait()                       # wait for it to finish
+
 if __name__ == '__main__':
     try:
         main()

Modified: 
gnuradio/branches/developers/jcorgan/t162/gnuradio-examples/python/digital/transmit_path.py
===================================================================
--- 
gnuradio/branches/developers/jcorgan/t162/gnuradio-examples/python/digital/transmit_path.py
 2007-09-07 15:46:11 UTC (rev 6348)
+++ 
gnuradio/branches/developers/jcorgan/t162/gnuradio-examples/python/digital/transmit_path.py
 2007-09-07 16:06:24 UTC (rev 6349)
@@ -1,5 +1,5 @@
 #
-# Copyright 2005,2006 Free Software Foundation, Inc.
+# Copyright 2005,2006,2007 Free Software Foundation, Inc.
 # 
 # This file is part of GNU Radio
 # 
@@ -19,7 +19,7 @@
 # Boston, MA 02110-1301, USA.
 # 
 
-from gnuradio import gr, gru, blks
+from gnuradio import gr, gru, blks2
 from gnuradio import usrp
 from gnuradio import eng_notation
 
@@ -33,11 +33,14 @@
 #                              transmit path
 # /////////////////////////////////////////////////////////////////////////////
 
-class transmit_path(gr.hier_block): 
-    def __init__(self, fg, modulator_class, options):
+class transmit_path(gr.hier_block2): 
+    def __init__(self, modulator_class, options):
         '''
         See below for what options should hold
         '''
+       gr.hier_block2.__init__(self, "transmit_path",
+                               gr.io_signature(0, 0, 0), # Input signature
+                               gr.io_signature(0, 0, 0)) # Output signature
 
         options = copy.copy(options)    # make a copy so we can destructively 
modify
 
@@ -77,12 +80,11 @@
     
         # transmitter
         self.packet_transmitter = \
-            blks.mod_pkts(fg,
-                          self._modulator_class(fg, **mod_kwargs),
-                          access_code=None,
-                          msgq_limit=4,
-                          pad_for_usrp=True,
-                          use_whitener_offset=options.use_whitener_offset)
+            blks2.mod_pkts(self._modulator_class(**mod_kwargs),
+                           access_code=None,
+                           msgq_limit=4,
+                           pad_for_usrp=True,
+                           use_whitener_offset=options.use_whitener_offset)
 
 
         # Set the USRP for maximum transmit gain
@@ -100,8 +102,7 @@
             self._print_verbage()
 
         # Create and setup transmit path flow graph
-        fg.connect(self.packet_transmitter, self.amp, self.u)
-        gr.hier_block.__init__(self, fg, None, None)
+        self.connect(self.packet_transmitter, self.amp, self.u)
 
     def _setup_usrp_sink(self):
         """





reply via email to

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