commit-gnuradio
[Top][All Lists]
Advanced

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

[Commit-gnuradio] r8796 - in gnuradio/branches/developers/eb/sched-wip:


From: eb
Subject: [Commit-gnuradio] r8796 - in gnuradio/branches/developers/eb/sched-wip: gnuradio-core/src/lib/io gnuradio-core/src/lib/runtime gr-audio-portaudio/src
Date: Fri, 4 Jul 2008 18:12:57 -0600 (MDT)

Author: eb
Date: 2008-07-04 18:12:54 -0600 (Fri, 04 Jul 2008)
New Revision: 8796

Modified:
   
gnuradio/branches/developers/eb/sched-wip/gnuradio-core/src/lib/io/gri_logger.cc
   
gnuradio/branches/developers/eb/sched-wip/gnuradio-core/src/lib/runtime/gr_buffer.cc
   
gnuradio/branches/developers/eb/sched-wip/gnuradio-core/src/lib/runtime/gr_buffer.h
   
gnuradio/branches/developers/eb/sched-wip/gnuradio-core/src/lib/runtime/gr_buffer.i
   
gnuradio/branches/developers/eb/sched-wip/gnuradio-core/src/lib/runtime/gr_flat_flowgraph.cc
   
gnuradio/branches/developers/eb/sched-wip/gnuradio-core/src/lib/runtime/gr_top_block_impl.cc
   
gnuradio/branches/developers/eb/sched-wip/gnuradio-core/src/lib/runtime/qa_gr_buffer.cc
   
gnuradio/branches/developers/eb/sched-wip/gr-audio-portaudio/src/audio_portaudio_sink.cc
   
gnuradio/branches/developers/eb/sched-wip/gr-audio-portaudio/src/audio_portaudio_source.cc
Log:
Added link fields to gr_buffer and gr_buffer_reader to allow us to
traverse the graph at runtime.


Modified: 
gnuradio/branches/developers/eb/sched-wip/gnuradio-core/src/lib/io/gri_logger.cc
===================================================================
--- 
gnuradio/branches/developers/eb/sched-wip/gnuradio-core/src/lib/io/gri_logger.cc
    2008-07-04 22:48:27 UTC (rev 8795)
+++ 
gnuradio/branches/developers/eb/sched-wip/gnuradio-core/src/lib/io/gri_logger.cc
    2008-07-05 00:12:54 UTC (rev 8796)
@@ -69,8 +69,8 @@
   }
 
   // Create a 1MB buffer.
-  d_writer = gr_make_buffer(1 * 1024 * 1024, sizeof(unsigned char));
-  d_reader = gr_buffer_add_reader(d_writer, 0);
+  d_writer = gr_make_buffer(1 * 1024 * 1024, sizeof(unsigned char), 
gr_block_sptr());
+  d_reader = gr_buffer_add_reader(d_writer, 0, gr_block_sptr());
 
   start_undetached();  // start the thread
 }

Modified: 
gnuradio/branches/developers/eb/sched-wip/gnuradio-core/src/lib/runtime/gr_buffer.cc
===================================================================
--- 
gnuradio/branches/developers/eb/sched-wip/gnuradio-core/src/lib/runtime/gr_buffer.cc
        2008-07-04 22:48:27 UTC (rev 8795)
+++ 
gnuradio/branches/developers/eb/sched-wip/gnuradio-core/src/lib/runtime/gr_buffer.cc
        2008-07-05 00:12:54 UTC (rev 8796)
@@ -77,10 +77,10 @@
 }
 
 
-gr_buffer::gr_buffer (int nitems, size_t sizeof_item)
+gr_buffer::gr_buffer (int nitems, size_t sizeof_item, gr_block_sptr link)
   : d_base (0), d_bufsize (0), d_vmcircbuf (0),
     d_sizeof_item (sizeof_item), d_write_index (0),
-    d_done (false)
+    d_done (false), d_link(link)
 {
   if (!allocate_buffer (nitems, sizeof_item))
     throw std::bad_alloc ();
@@ -89,9 +89,9 @@
 }
 
 gr_buffer_sptr 
-gr_make_buffer (int nitems, size_t sizeof_item)
+gr_make_buffer (int nitems, size_t sizeof_item, gr_block_sptr link)
 {
-  return gr_buffer_sptr (new gr_buffer (nitems, sizeof_item));
+  return gr_buffer_sptr (new gr_buffer (nitems, sizeof_item, link));
 }
 
 gr_buffer::~gr_buffer ()
@@ -179,14 +179,15 @@
 }
 
 gr_buffer_reader_sptr
-gr_buffer_add_reader (gr_buffer_sptr buf, int nzero_preload)
+gr_buffer_add_reader (gr_buffer_sptr buf, int nzero_preload, gr_block_sptr 
link)
 {
   if (nzero_preload < 0)
     throw std::invalid_argument("gr_buffer_add_reader: nzero_preload must be 
>= 0");
 
   gr_buffer_reader_sptr r (new gr_buffer_reader (buf,
                                                 
buf->index_sub(buf->d_write_index,
-                                                               
nzero_preload)));
+                                                               nzero_preload),
+                                                link));
   buf->d_readers.push_back (r.get ());
 
   return r;
@@ -214,8 +215,9 @@
 
 // ----------------------------------------------------------------------------
 
-gr_buffer_reader::gr_buffer_reader (gr_buffer_sptr buffer, unsigned int 
read_index)
-  : d_buffer (buffer), d_read_index (read_index)
+gr_buffer_reader::gr_buffer_reader(gr_buffer_sptr buffer, unsigned int 
read_index,
+                                  gr_block_sptr link)
+  : d_buffer(buffer), d_read_index(read_index), d_link(link)
 {
   s_buffer_reader_count++;
 }

Modified: 
gnuradio/branches/developers/eb/sched-wip/gnuradio-core/src/lib/runtime/gr_buffer.h
===================================================================
--- 
gnuradio/branches/developers/eb/sched-wip/gnuradio-core/src/lib/runtime/gr_buffer.h
 2008-07-04 22:48:27 UTC (rev 8795)
+++ 
gnuradio/branches/developers/eb/sched-wip/gnuradio-core/src/lib/runtime/gr_buffer.h
 2008-07-05 00:12:54 UTC (rev 8796)
@@ -24,6 +24,7 @@
 #define INCLUDED_GR_BUFFER_H
 
 #include <gr_runtime_types.h>
+#include <boost/weak_ptr.hpp>
 
 class gr_vmcircbuf;
 
@@ -33,8 +34,12 @@
  * The total size of the buffer will be rounded up to a system
  * dependent boundary.  This is typically the system page size, but
  * under MS windows is 64KB.
+ *
+ * \param nitems is the minimum number of items the buffer will hold.
+ * \param sizeof_item is the size of an item in bytes.
+ * \param link is the buffer that writes to this buffer.
  */
-gr_buffer_sptr gr_make_buffer (int nitems, size_t sizeof_item);
+gr_buffer_sptr gr_make_buffer (int nitems, size_t sizeof_item, gr_block_sptr 
link);
 
 
 /*!
@@ -67,13 +72,18 @@
   void set_done (bool done)   { d_done = done; }
   bool done () const { return d_done; }
 
+  /*!
+   * \brief Return the block that writes this buffer.
+   */
+  gr_block_sptr link() { return gr_block_sptr(d_link); }
+
   // -------------------------------------------------------------------------
 
  private:
 
   friend class gr_buffer_reader;
-  friend gr_buffer_sptr gr_make_buffer (int nitems, size_t sizeof_item);
-  friend gr_buffer_reader_sptr gr_buffer_add_reader (gr_buffer_sptr buf, int 
nzero_preload);
+  friend gr_buffer_sptr gr_make_buffer (int nitems, size_t sizeof_item, 
gr_block_sptr link);
+  friend gr_buffer_reader_sptr gr_buffer_add_reader (gr_buffer_sptr buf, int 
nzero_preload, gr_block_sptr link);
 
  protected:
   char                                *d_base;         // base address of 
buffer
@@ -84,6 +94,7 @@
   unsigned int                         d_write_index;  // in items 
[0,d_bufsize)
   std::vector<gr_buffer_reader *>      d_readers;
   bool                                 d_done;
+  boost::weak_ptr<gr_block>            d_link;         // block that writes 
this buffer
   
   unsigned
   index_add (unsigned a, unsigned b)
@@ -116,11 +127,15 @@
    *
    * Allocate a buffer that holds at least \p nitems of size \p sizeof_item.
    *
+   * \param nitems is the minimum number of items the buffer will hold.
+   * \param sizeof_item is the size of an item in bytes.
+   * \param link is the buffer that writes to this buffer.
+   *
    * The total size of the buffer will be rounded up to a system
    * dependent boundary.  This is typically the system page size, but
    * under MS windows is 64KB.
    */
-  gr_buffer (int nitems, size_t sizeof_item);
+  gr_buffer (int nitems, size_t sizeof_item, gr_block_sptr link);
 
   /*!
    * \brief disassociate \p reader from this buffer
@@ -132,8 +147,10 @@
 /*!
  * \brief create a new gr_buffer_reader and attach it to buffer \p buf
  * \param nzero_preload -- number of zero items to "preload" into buffer.
+ * \param link is the buffer that reads using this gr_buffer_reader.
  */
-gr_buffer_reader_sptr gr_buffer_add_reader (gr_buffer_sptr buf, int 
nzero_preload);
+gr_buffer_reader_sptr 
+gr_buffer_add_reader (gr_buffer_sptr buf, int nzero_preload, gr_block_sptr 
link);
 
 //! returns # of gr_buffers currently allocated
 long gr_buffer_ncurrently_allocated ();
@@ -183,19 +200,26 @@
   void set_done (bool done)   { d_buffer->set_done (done); }
   bool done () const { return d_buffer->done (); }
 
+  /*!
+   * \brief Return the block that reads via this reader.
+   */
+  gr_block_sptr link() { return gr_block_sptr(d_link); }
+
   // -------------------------------------------------------------------------
 
  private:
 
   friend class gr_buffer;
-  friend gr_buffer_reader_sptr gr_buffer_add_reader (gr_buffer_sptr buf, int 
nzero_preload);
+  friend gr_buffer_reader_sptr 
+  gr_buffer_add_reader (gr_buffer_sptr buf, int nzero_preload, gr_block_sptr 
link);
 
 
   gr_buffer_sptr               d_buffer;
   unsigned int                 d_read_index;   // in items 
[0,d->buffer.d_bufsize)
+  boost::weak_ptr<gr_block>    d_link;         // block that reads via this 
buffer reader
 
   //! constructor is private.  Use gr_buffer::add_reader to create instances
-  gr_buffer_reader (gr_buffer_sptr buffer, unsigned int read_index);
+  gr_buffer_reader (gr_buffer_sptr buffer, unsigned int read_index, 
gr_block_sptr link);
 };
 
 //! returns # of gr_buffer_readers currently allocated

Modified: 
gnuradio/branches/developers/eb/sched-wip/gnuradio-core/src/lib/runtime/gr_buffer.i
===================================================================
--- 
gnuradio/branches/developers/eb/sched-wip/gnuradio-core/src/lib/runtime/gr_buffer.i
 2008-07-04 22:48:27 UTC (rev 8795)
+++ 
gnuradio/branches/developers/eb/sched-wip/gnuradio-core/src/lib/runtime/gr_buffer.i
 2008-07-05 00:12:54 UTC (rev 8796)
@@ -26,14 +26,14 @@
 %rename(buffer) gr_make_buffer;
 %ignore gr_buffer;
 
-gr_buffer_sptr gr_make_buffer (int nitems, size_t sizeof_item);
+gr_buffer_sptr gr_make_buffer (int nitems, size_t sizeof_item, gr_block_sptr 
link);
 
 class gr_buffer {
  public:
   ~gr_buffer ();
 
  private:
-  gr_buffer (int nitems, size_t sizeof_item);
+  gr_buffer (int nitems, size_t sizeof_item, gr_block_sptr link);
 };
   
 
@@ -43,7 +43,7 @@
 %ignore gr_buffer_reader;
 
 %rename(buffer_add_reader) gr_buffer_add_reader;
-gr_buffer_reader_sptr gr_buffer_add_reader (gr_buffer_sptr buf, int 
nzero_preload);
+gr_buffer_reader_sptr gr_buffer_add_reader (gr_buffer_sptr buf, int 
nzero_preload, gr_block_sptr link);
 
 class gr_buffer_reader {
  public:
@@ -51,7 +51,7 @@
 
  private:
   friend class gr_buffer;
-  gr_buffer_reader (gr_buffer_sptr buffer, unsigned int read_index);
+  gr_buffer_reader (gr_buffer_sptr buffer, unsigned int read_index, 
gr_block_sptr link);
 };
 
 

Modified: 
gnuradio/branches/developers/eb/sched-wip/gnuradio-core/src/lib/runtime/gr_flat_flowgraph.cc
===================================================================
--- 
gnuradio/branches/developers/eb/sched-wip/gnuradio-core/src/lib/runtime/gr_flat_flowgraph.cc
        2008-07-04 22:48:27 UTC (rev 8795)
+++ 
gnuradio/branches/developers/eb/sched-wip/gnuradio-core/src/lib/runtime/gr_flat_flowgraph.cc
        2008-07-05 00:12:54 UTC (rev 8796)
@@ -109,7 +109,7 @@
     nitems = std::max(nitems, 
static_cast<int>(2*(decimation*multiple+history)));
   }
 
-  return gr_make_buffer(nitems, item_size);
+  return gr_make_buffer(nitems, item_size, grblock);
 }
 
 void
@@ -138,7 +138,7 @@
     if (GR_FLAT_FLOWGRAPH_DEBUG)
       std::cout << "Setting input " << dst_port << " from edge " << (*e) << 
std::endl;
 
-    detail->set_input(dst_port, gr_buffer_add_reader(src_buffer, 
grblock->history()-1));
+    detail->set_input(dst_port, gr_buffer_add_reader(src_buffer, 
grblock->history()-1, grblock));
   }
 }
 
@@ -225,7 +225,7 @@
            std::cout << "needs a new reader" << std::endl;
 
          // Create new buffer reader and assign
-         detail->set_input(i, gr_buffer_add_reader(src_buffer, 
block->history()-1));
+         detail->set_input(i, gr_buffer_add_reader(src_buffer, 
block->history()-1, block));
        }
       }
     }

Modified: 
gnuradio/branches/developers/eb/sched-wip/gnuradio-core/src/lib/runtime/gr_top_block_impl.cc
===================================================================
--- 
gnuradio/branches/developers/eb/sched-wip/gnuradio-core/src/lib/runtime/gr_top_block_impl.cc
        2008-07-04 22:48:27 UTC (rev 8795)
+++ 
gnuradio/branches/developers/eb/sched-wip/gnuradio-core/src/lib/runtime/gr_top_block_impl.cc
        2008-07-05 00:12:54 UTC (rev 8796)
@@ -38,8 +38,8 @@
 #define GR_TOP_BLOCK_IMPL_DEBUG 0
 
 
-#define USE_STS        0
-#define        USE_TPB 1
+#define USE_STS        1
+#define        USE_TPB 0
 
 
 static gr_scheduler_sptr

Modified: 
gnuradio/branches/developers/eb/sched-wip/gnuradio-core/src/lib/runtime/qa_gr_buffer.cc
===================================================================
--- 
gnuradio/branches/developers/eb/sched-wip/gnuradio-core/src/lib/runtime/qa_gr_buffer.cc
     2008-07-04 22:48:27 UTC (rev 8795)
+++ 
gnuradio/branches/developers/eb/sched-wip/gnuradio-core/src/lib/runtime/qa_gr_buffer.cc
     2008-07-05 00:12:54 UTC (rev 8796)
@@ -52,7 +52,7 @@
   int  nitems = 4000 / sizeof (int);
   int  counter = 0;
 
-  gr_buffer_sptr buf (gr_make_buffer (nitems, sizeof (int)));
+  gr_buffer_sptr buf(gr_make_buffer(nitems, sizeof (int), gr_block_sptr()));
 
   int last_sa;
   int sa;
@@ -87,8 +87,8 @@
   int  write_counter = 0;
   int  read_counter = 0;
 
-  gr_buffer_sptr buf (gr_make_buffer (nitems, sizeof (int)));
-  gr_buffer_reader_sptr r1 (gr_buffer_add_reader (buf, 0));
+  gr_buffer_sptr buf(gr_make_buffer(nitems, sizeof (int), gr_block_sptr()));
+  gr_buffer_reader_sptr r1 (gr_buffer_add_reader (buf, 0, gr_block_sptr()));
   
 
   int sa;
@@ -162,8 +162,8 @@
   
   int  nitems = (64 * (1L << 10)) / sizeof (int);      // 64K worth of ints
 
-  gr_buffer_sptr buf (gr_make_buffer (nitems, sizeof (int)));
-  gr_buffer_reader_sptr r1 (gr_buffer_add_reader (buf, 0));
+  gr_buffer_sptr buf(gr_make_buffer (nitems, sizeof (int), gr_block_sptr()));
+  gr_buffer_reader_sptr r1 (gr_buffer_add_reader (buf, 0, gr_block_sptr()));
 
   int  read_counter = 0;
   int  write_counter = 0;
@@ -229,7 +229,7 @@
   int  nitems = (64 * (1L << 10)) / sizeof (int);
 
   static const int N = 5;
-  gr_buffer_sptr buf (gr_make_buffer (nitems, sizeof (int)));
+  gr_buffer_sptr buf(gr_make_buffer(nitems, sizeof (int), gr_block_sptr()));
   gr_buffer_reader_sptr        reader[N];
   int                  read_counter[N];
   int                  write_counter = 0;
@@ -237,7 +237,7 @@
 
   for (int i = 0; i < N; i++){
     read_counter[i] = 0;
-    reader[i] = gr_buffer_add_reader (buf, 0);
+    reader[i] = gr_buffer_add_reader (buf, 0, gr_block_sptr());
   }
 
   for (int lc = 0; lc < 1000; lc++){

Modified: 
gnuradio/branches/developers/eb/sched-wip/gr-audio-portaudio/src/audio_portaudio_sink.cc
===================================================================
--- 
gnuradio/branches/developers/eb/sched-wip/gr-audio-portaudio/src/audio_portaudio_sink.cc
    2008-07-04 22:48:27 UTC (rev 8795)
+++ 
gnuradio/branches/developers/eb/sched-wip/gr-audio-portaudio/src/audio_portaudio_sink.cc
    2008-07-05 00:12:54 UTC (rev 8796)
@@ -59,8 +59,8 @@
            N_BUFFERS*bufsize_samples/d_output_parameters.channelCount);
 
   // FYI, the buffer indicies are in units of samples.
-  d_writer = gr_make_buffer(N_BUFFERS * bufsize_samples, sizeof(sample_t));
-  d_reader = gr_buffer_add_reader(d_writer, 0);
+  d_writer = gr_make_buffer(N_BUFFERS * bufsize_samples, sizeof(sample_t), 
gr_block_sptr());
+  d_reader = gr_buffer_add_reader(d_writer, 0, gr_block_sptr());
 }
 
 /*

Modified: 
gnuradio/branches/developers/eb/sched-wip/gr-audio-portaudio/src/audio_portaudio_source.cc
===================================================================
--- 
gnuradio/branches/developers/eb/sched-wip/gr-audio-portaudio/src/audio_portaudio_source.cc
  2008-07-04 22:48:27 UTC (rev 8795)
+++ 
gnuradio/branches/developers/eb/sched-wip/gr-audio-portaudio/src/audio_portaudio_source.cc
  2008-07-05 00:12:54 UTC (rev 8796)
@@ -59,8 +59,8 @@
            N_BUFFERS*bufsize_samples/d_input_parameters.channelCount);
 
   // FYI, the buffer indicies are in units of samples.
-  d_writer = gr_make_buffer(N_BUFFERS * bufsize_samples, sizeof(sample_t));
-  d_reader = gr_buffer_add_reader(d_writer, 0);
+  d_writer = gr_make_buffer(N_BUFFERS * bufsize_samples, sizeof(sample_t), 
gr_block_sptr());
+  d_reader = gr_buffer_add_reader(d_writer, 0, gr_block_sptr());
 }
 
 /*





reply via email to

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