Forum: GNU Radio Vector inputs/outputs with GRExtras block interface

Posted by Roy Thompson (Guest)
on 2012-11-13 23:36
(Received via mailing list)
Is it possible to use a vector input or output with a block that uses
the GRExtras interface?  All of the examples for specifying the I/O
signature for a Python block only show using a numpy type to specify
the data width.

I also tried creating a C++ block and setting the sizeof_stream_item
parameter of the gr_make_io_signature() to the total vector size as
has been done in standard blocks that support vectors, but it doesn't
appear to be working properly either.  For example, I tried setting
the size to 4096 bytes (vector of 1024 floats), but each time my work
function gets called, input_items.size() is only returning 8, where I
would have expected it to only be called when there was a full vector
of data available?

I suppose I could work around this with a vector to stream conversion
block in front of it, but I just wanted to see if it is possible to
directly accept vectors with the newer block interface.

Thanks,
Roy
Posted by Josh Blum (Guest)
on 2012-11-13 23:42
(Received via mailing list)
On 11/13/2012 02:35 PM, Roy Thompson wrote:
> Is it possible to use a vector input or output with a block that uses
> the GRExtras interface?  All of the examples for specifying the I/O
> signature for a Python block only show using a numpy type to specify
> the data width.
>

Actually the neat thing with the python blocks is the items can be any
thing you can represent with numpy dtypes. So vectors, vectors of
vectors with arbitrary sizes, structures. And when work gets called, you
get the inputs and outputs as arrays of these types.

> I also tried creating a C++ block and setting the sizeof_stream_item
> parameter of the gr_make_io_signature() to the total vector size as
> has been done in standard blocks that support vectors, but it doesn't
> appear to be working properly either.  For example, I tried setting
> the size to 4096 bytes (vector of 1024 floats), but each time my work
> function gets called, input_items.size() is only returning 8, where I
> would have expected it to only be called when there was a full vector
> of data available?
>

input_items is an array of arrays, where each element represents an
input port. If input_items.size() == 8, then you must have a block w/ 8
inputs?

-josh
Please log in before posting. Registration is free and takes only a minute.
Existing account (Switch to SSL-encrypted connection)
NEW: Do you have a Google/GoogleMail or Yahoo account? No registration required!
Log in with Google account | Log in with Yahoo account
No account? Register here.