[Top][All Lists]
[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());
}
/*
[Prev in Thread] |
Current Thread |
[Next in Thread] |
- [Commit-gnuradio] r8796 - in gnuradio/branches/developers/eb/sched-wip: gnuradio-core/src/lib/io gnuradio-core/src/lib/runtime gr-audio-portaudio/src,
eb <=