diff options
author | eb <eb@221aa14e-8319-0410-a670-987f0aec2ac5> | 2006-08-24 18:50:19 +0000 |
---|---|---|
committer | eb <eb@221aa14e-8319-0410-a670-987f0aec2ac5> | 2006-08-24 18:50:19 +0000 |
commit | 62959cd5d2356fa3120680a96ae6814a0c0effbe (patch) | |
tree | 3ba4d58502b95abe18c2d81b7b4ab46143e931ae | |
parent | 87a17aaaecc22ba91cc04fa10c9024c8650c260a (diff) |
Trial fix for ticket:45
Changed interpretation of second argument to gr_buffer_add_reader from
"history" to "nzero_preload". If the argument is 0, no zeros are
preloaded into the buffer. This is a less surprising interpretation
than the old behavior, which when passed a zero, inserted buffersize-1
zeros ;)
git-svn-id: http://gnuradio.org/svn/gnuradio/trunk@3403 221aa14e-8319-0410-a670-987f0aec2ac5
-rw-r--r-- | gnuradio-core/src/lib/runtime/gr_buffer.cc | 7 | ||||
-rw-r--r-- | gnuradio-core/src/lib/runtime/gr_buffer.h | 11 | ||||
-rw-r--r-- | gnuradio-core/src/lib/runtime/gr_buffer.i | 2 | ||||
-rw-r--r-- | gnuradio-core/src/lib/runtime/qa_gr_buffer.cc | 6 | ||||
-rw-r--r-- | gnuradio-core/src/python/gnuradio/gr/flow_graph.py | 2 |
5 files changed, 17 insertions, 11 deletions
diff --git a/gnuradio-core/src/lib/runtime/gr_buffer.cc b/gnuradio-core/src/lib/runtime/gr_buffer.cc index d3d1230967..e06786880d 100644 --- a/gnuradio-core/src/lib/runtime/gr_buffer.cc +++ b/gnuradio-core/src/lib/runtime/gr_buffer.cc @@ -179,11 +179,14 @@ gr_buffer::update_write_pointer (int nitems) } gr_buffer_reader_sptr -gr_buffer_add_reader (gr_buffer_sptr buf, int history) +gr_buffer_add_reader (gr_buffer_sptr buf, int nzero_preload) { + 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, - history-1))); + nzero_preload))); buf->d_readers.push_back (r.get ()); return r; diff --git a/gnuradio-core/src/lib/runtime/gr_buffer.h b/gnuradio-core/src/lib/runtime/gr_buffer.h index 6f85f275ee..e468f4358a 100644 --- a/gnuradio-core/src/lib/runtime/gr_buffer.h +++ b/gnuradio-core/src/lib/runtime/gr_buffer.h @@ -73,7 +73,7 @@ class gr_buffer { 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 history); + friend gr_buffer_reader_sptr gr_buffer_add_reader (gr_buffer_sptr buf, int nzero_preload); protected: char *d_base; // base address of buffer @@ -129,8 +129,11 @@ class gr_buffer { }; -//! create a new gr_buffer_reader and attach it to buffer \p buf -gr_buffer_reader_sptr gr_buffer_add_reader (gr_buffer_sptr buf, int history); +/*! + * \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. + */ +gr_buffer_reader_sptr gr_buffer_add_reader (gr_buffer_sptr buf, int nzero_preload); //! returns # of gr_buffers currently allocated long gr_buffer_ncurrently_allocated (); @@ -179,7 +182,7 @@ class gr_buffer_reader { private: friend class gr_buffer; - friend gr_buffer_reader_sptr gr_buffer_add_reader (gr_buffer_sptr buf, int history); + friend gr_buffer_reader_sptr gr_buffer_add_reader (gr_buffer_sptr buf, int nzero_preload); gr_buffer_sptr d_buffer; diff --git a/gnuradio-core/src/lib/runtime/gr_buffer.i b/gnuradio-core/src/lib/runtime/gr_buffer.i index 80f92ece12..2cb6deb95a 100644 --- a/gnuradio-core/src/lib/runtime/gr_buffer.i +++ b/gnuradio-core/src/lib/runtime/gr_buffer.i @@ -43,7 +43,7 @@ typedef boost::shared_ptr<gr_buffer_reader> gr_buffer_reader_sptr; %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 history); +gr_buffer_reader_sptr gr_buffer_add_reader (gr_buffer_sptr buf, int nzero_preload); class gr_buffer_reader { public: diff --git a/gnuradio-core/src/lib/runtime/qa_gr_buffer.cc b/gnuradio-core/src/lib/runtime/qa_gr_buffer.cc index 5c549d0b98..5a3d4d3d7b 100644 --- a/gnuradio-core/src/lib/runtime/qa_gr_buffer.cc +++ b/gnuradio-core/src/lib/runtime/qa_gr_buffer.cc @@ -88,7 +88,7 @@ t1_body () int read_counter = 0; gr_buffer_sptr buf (gr_make_buffer (nitems, sizeof (int))); - gr_buffer_reader_sptr r1 (gr_buffer_add_reader (buf, 1)); + gr_buffer_reader_sptr r1 (gr_buffer_add_reader (buf, 0)); int sa; @@ -163,7 +163,7 @@ t2_body () 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, 1)); + gr_buffer_reader_sptr r1 (gr_buffer_add_reader (buf, 0)); int read_counter = 0; int write_counter = 0; @@ -237,7 +237,7 @@ t3_body () for (int i = 0; i < N; i++){ read_counter[i] = 0; - reader[i] = gr_buffer_add_reader (buf, 1); + reader[i] = gr_buffer_add_reader (buf, 0); } for (int lc = 0; lc < 1000; lc++){ diff --git a/gnuradio-core/src/python/gnuradio/gr/flow_graph.py b/gnuradio-core/src/python/gnuradio/gr/flow_graph.py index db9c58768a..d309f60eb4 100644 --- a/gnuradio-core/src/python/gnuradio/gr/flow_graph.py +++ b/gnuradio-core/src/python/gnuradio/gr/flow_graph.py @@ -151,7 +151,7 @@ class flow_graph (basic_flow_graph): upstream_block = e.src.block upstream_port = e.src.port upstream_buffer = upstream_block.detail().output(upstream_port) - d.set_input(our_port, buffer_add_reader(upstream_buffer, m.history())) + d.set_input(our_port, buffer_add_reader(upstream_buffer, m.history()-1)) def topological_sort (self, all_v): |