[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Commit-gnuradio] [gnuradio] 06/43: gnuradio-runtime: (option 1) The hie
From: |
git |
Subject: |
[Commit-gnuradio] [gnuradio] 06/43: gnuradio-runtime: (option 1) The hier block can now take a generic min/max output buffer length and assign it to every block within the hier (assumes all output buffers have the same min/max values set); (option 2) sets only the blocks connected to hier output ports and does not set the other internal blocks (requires that each port has different values); for single port output hier blocks only option 1 is possible. |
Date: |
Thu, 2 Apr 2015 19:15:50 +0000 (UTC) |
This is an automated email from the git hooks/post-receive script.
jcorgan pushed a commit to branch master
in repository gnuradio.
commit 2f33b9cee312a2b97948c2999a937b8ef601b09b
Author: Bill Clark <address@hidden>
Date: Wed Apr 1 13:07:30 2015 -0400
gnuradio-runtime: (option 1) The hier block can now take a generic min/max
output buffer length and assign it to every block within the hier (assumes all
output buffers have the same min/max values set); (option 2) sets only the
blocks connected to hier output ports and does not set the other internal
blocks (requires that each port has different values); for single port output
hier blocks only option 1 is possible.
---
gnuradio-runtime/lib/hier_block2.cc | 21 ++++++++--
gnuradio-runtime/lib/hier_block2_detail.cc | 62 +++++++++++++++++++++++++-----
2 files changed, 69 insertions(+), 14 deletions(-)
diff --git a/gnuradio-runtime/lib/hier_block2.cc
b/gnuradio-runtime/lib/hier_block2.cc
index 130b2a1..a12980a 100644
--- a/gnuradio-runtime/lib/hier_block2.cc
+++ b/gnuradio-runtime/lib/hier_block2.cc
@@ -29,6 +29,7 @@
#include <gnuradio/flowgraph.h>
#include "hier_block2_detail.h"
#include <iostream>
+#include <stdio.h>
namespace gr {
@@ -199,8 +200,10 @@ namespace gr {
{
if(d_max_output_buffer.size() == 0)
throw std::length_error("hier_block2::max_output_buffer: out_sig
greater than zero, buff_vect isn't");
- for(int idx = 0; idx < output_signature()->max_streams(); idx++)
+ for(int idx = 0; idx < output_signature()->max_streams(); idx++){
d_max_output_buffer[idx] = max_output_buffer;
+ printf("Port %d is being set to
max(%ld)\t%s\n",idx,max_output_buffer,(alias()).c_str());
+ }
}
}
@@ -209,8 +212,10 @@ namespace gr {
{
if((size_t)port >= d_max_output_buffer.size())
throw std::invalid_argument("hier_block2::max_output_buffer: port out of
range.");
- else
+ else{
d_max_output_buffer[port] = max_output_buffer;
+ printf("Port %d is being set to
max(%ld)\t%s\n",port,max_output_buffer,(alias()).c_str());
+ }
}
long
@@ -228,8 +233,10 @@ namespace gr {
{
if(d_min_output_buffer.size() == 0)
throw std::length_error("hier_block2::min_output_buffer: out_sig
greater than zero, buff_vect isn't");
- for(int idx = 0; idx < output_signature()->max_streams(); idx++)
+ for(int idx = 0; idx < output_signature()->max_streams(); idx++){
d_min_output_buffer[idx] = min_output_buffer;
+ printf("Port %d is being set to
min(%ld)\t%s\n",idx,min_output_buffer,(alias()).c_str());
+ }
}
}
@@ -238,8 +245,10 @@ namespace gr {
{
if((size_t)port >= d_min_output_buffer.size())
throw std::invalid_argument("hier_block2::min_output_buffer: port out of
range.");
- else
+ else{
d_min_output_buffer[port] = min_output_buffer;
+ printf("Port %d is being set to
min(%ld)\t%s\n",port,min_output_buffer,(alias()).c_str());
+ }
}
bool
@@ -251,9 +260,11 @@ namespace gr {
if(d_min_output_buffer[0] != d_min_output_buffer[idx])
all_equal = false;
}
+ printf("Set all min (%d)\n",int(all_equal),(alias()).c_str());
return all_equal;
}
else{
+ printf("Set all min (%d)\n",int(false),(alias()).c_str());
return false;
}
}
@@ -266,9 +277,11 @@ namespace gr {
if(d_max_output_buffer[0] != d_max_output_buffer[idx])
all_equal = false;
}
+ printf("Set all max (%d)\t%s\n",int(all_equal),(alias()).c_str());
return all_equal;
}
else{
+ printf("Set all max (%d)\t%s\n",int(false),(alias()).c_str());
return false;
}
}
diff --git a/gnuradio-runtime/lib/hier_block2_detail.cc
b/gnuradio-runtime/lib/hier_block2_detail.cc
index 249fccf..20a2e24 100644
--- a/gnuradio-runtime/lib/hier_block2_detail.cc
+++ b/gnuradio-runtime/lib/hier_block2_detail.cc
@@ -30,6 +30,7 @@
#include <stdexcept>
#include <sstream>
#include <boost/format.hpp>
+#include <stdio.h>
namespace gr {
@@ -515,11 +516,6 @@ namespace gr {
bool ctrlport_on = prefs::singleton()->get_bool("ControlPort", "on",
false);
// Get the min and max buffer length
- // TODO: Currently assuming all blocks within hier
- // are set to the first port value. (latency case)
- // Address the condition where only the block connected
- // to a specific hier port is modified by the hier port assignment
- // TODO: handle the connect port only case
long min_buff(-1), max_buff(-1);
bool set_all_min_buff = d_owner->set_all_min_output_buffer();
bool set_all_max_buff = d_owner->set_all_max_output_buffer();
@@ -545,12 +541,16 @@ namespace gr {
if(min_buff != -1){
block_sptr bb = boost::dynamic_pointer_cast<block>(b);
if(bb != 0){
- bb->set_min_output_buffer(min_buff);
+ if(bb->min_output_buffer(0) != min_buff){
+ bb->set_min_output_buffer(min_buff);
+ }
}
else{
hier_block2_sptr hh = boost::dynamic_pointer_cast<hier_block2>(b);
if(hh != 0){
- hh->set_min_output_buffer(min_buff);
+ if(hh->min_output_buffer(0) != min_buff){
+ hh->set_min_output_buffer(min_buff);
+ }
}
}
}
@@ -560,12 +560,16 @@ namespace gr {
if(max_buff != -1){
block_sptr bb = boost::dynamic_pointer_cast<block>(b);
if(bb != 0){
- bb->set_max_output_buffer(max_buff);
+ if(bb->max_output_buffer(0) != max_buff){
+ bb->set_max_output_buffer(max_buff);
+ }
}
else{
hier_block2_sptr hh = boost::dynamic_pointer_cast<hier_block2>(b);
if(hh != 0){
- hh->set_max_output_buffer(max_buff);
+ if(hh->max_output_buffer(0) != max_buff){
+ hh->set_max_output_buffer(max_buff);
+ }
}
}
}
@@ -578,6 +582,44 @@ namespace gr {
b->rpc_set();
}
}
+ if(set_all_min_buff){
+ //sets the min buff for every block within hier_block2
+ if(min_buff != -1){
+ block_sptr bb = boost::dynamic_pointer_cast<block>(b);
+ if(bb != 0){
+ if(bb->min_output_buffer(0) != min_buff){
+ bb->set_min_output_buffer(min_buff);
+ }
+ }
+ else{
+ hier_block2_sptr hh = boost::dynamic_pointer_cast<hier_block2>(b);
+ if(hh != 0){
+ if(hh->min_output_buffer(0) != min_buff){
+ hh->set_min_output_buffer(min_buff);
+ }
+ }
+ }
+ }
+ }
+ if(set_all_max_buff){
+ //sets the max buff for every block within hier_block2
+ if(max_buff != -1){
+ block_sptr bb = boost::dynamic_pointer_cast<block>(b);
+ if(bb != 0){
+ if(bb->max_output_buffer(0) != max_buff){
+ bb->set_max_output_buffer(max_buff);
+ }
+ }
+ else{
+ hier_block2_sptr hh = boost::dynamic_pointer_cast<hier_block2>(b);
+ if(hh != 0){
+ if(hh->max_output_buffer(0) != max_buff){
+ hh->set_max_output_buffer(max_buff);
+ }
+ }
+ }
+ }
+ }
}
if(HIER_BLOCK2_DETAIL_DEBUG)
@@ -685,7 +727,7 @@ namespace gr {
<< " is not connected internally";
throw std::runtime_error(msg.str());
}
- // TODO: Update buffers of just these output blocks
+ // Set the buffers of only the blocks connected to the hier output
if(!set_all_min_buff){
min_buff = d_owner->min_output_buffer(i);
if(min_buff != -1){
- [Commit-gnuradio] [gnuradio] branch master updated (7fe6115 -> 3061e47), git, 2015/04/02
- [Commit-gnuradio] [gnuradio] 16/43: fec: LDPC async decoder now running, git, 2015/04/02
- [Commit-gnuradio] [gnuradio] 04/43: gnuradio-runtime: added the individual port assignments to the hier_block2 max/min_output_buffer size; if output ports have different size assignments only the block directly connected to the output port is changed otherwise every block within the hier is set to that output buffer size; therefore single output hier blocks will always set every block within to the output buffer size, git, 2015/04/02
- [Commit-gnuradio] [gnuradio] 17/43: gnuradio-runtume: hier_block2 output buffer lengths - clean up of debug output, git, 2015/04/02
- [Commit-gnuradio] [gnuradio] 26/43: grc: no shebang for hier blocks; use python2, git, 2015/04/02
- [Commit-gnuradio] [gnuradio] 15/43: fec: ldpc encoder now working in async encoder interface, git, 2015/04/02
- [Commit-gnuradio] [gnuradio] 06/43: gnuradio-runtime: (option 1) The hier block can now take a generic min/max output buffer length and assign it to every block within the hier (assumes all output buffers have the same min/max values set); (option 2) sets only the blocks connected to hier output ports and does not set the other internal blocks (requires that each port has different values); for single port output hier blocks only option 1 is possible.,
git <=
- [Commit-gnuradio] [gnuradio] 07/43: gnuradio-runtime: non-helpful debug outputs removed from hier_block2 and hier_block2_detail, git, 2015/04/02
- [Commit-gnuradio] [gnuradio] 27/43: grc: optional thread-safe setters in generated code (#748), git, 2015/04/02
- [Commit-gnuradio] [gnuradio] 19/43: gnuradio-runtime: added logger to flat_flowgraph and print out a warning for when the max_output_buffer isn't set to the requested value, git, 2015/04/02
- [Commit-gnuradio] [gnuradio] 28/43: grc: don't try to open missing files, git, 2015/04/02
- [Commit-gnuradio] [gnuradio] 01/43: gnuradio-runtime: trying to see if this will handle the output buffer size of hier blocks; trying to find the proper casting methods, git, 2015/04/02
- [Commit-gnuradio] [gnuradio] 10/43: fec: cleaning up LDPC warnings, git, 2015/04/02
- [Commit-gnuradio] [gnuradio] 18/43: fec: ldpc works, add iterations meta tag, etc, git, 2015/04/02
- [Commit-gnuradio] [gnuradio] 34/43: Merge remote-tracking branch 'saikwolf/logging_flat_flowgraph', git, 2015/04/02
- [Commit-gnuradio] [gnuradio] 03/43: gnuradio-runtime:: removed the individual port setting on hier_block2, current operation assuming the buffers are being set for latency and therefore all blocks are being set to a small amount, git, 2015/04/02
- [Commit-gnuradio] [gnuradio] 11/43: fec: LDPC cleaning up comments, git, 2015/04/02