discuss-gnuradio
[Top][All Lists]
Advanced

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

Re: [Discuss-gnuradio] Connect one source to multiple sinks?


From: Eric Blossom
Subject: Re: [Discuss-gnuradio] Connect one source to multiple sinks?
Date: Tue, 2 Nov 2004 07:44:24 -0800
User-agent: Mutt/1.5.6i

On Tue, Nov 02, 2004 at 02:06:56AM -0600, David Carr wrote:
> There's an easy solution here but I don't know it...
> 
>        self.connect (src, filter1)
>        self.connect (filter1, nulls1)
>        self.connect (src, filter2)
>        self.connect (filter2, nulls2)
> 
> python: ssrp_source_c.cc:65: virtual int ssrp_source_c::work(int, 
> gr_vector_const_void_star&, gr_vector_void_star&): Assertion 
> `output_items.size () == 1' failed.
> 
> I realize that this is the ssrp code that is balking, however this part 
> is almost completely from the USRP.  What is the right thing to do?
> 
> -David Carr

OK, I see a couple of suspicious things here.  First, that assertion
should never be triggered.  It should never happen if the io signature
that was passed to gr_sync_block is correct.  I would expect that to
be:

     : gr_sync_block ("ssrp_source_c",
                       gr_make_io_signature (0, 0, 0),
                       gr_make_io_signature (1, 1, sizeof (gr_complex)))

This specifies that the block takes zero inputs and produces a minimum
of 1 and a maximum of 1 (i.e., exactly 1) gr_complex output streams.


The fully expanded version of what you've written is:

>        self.connect ((src, 0), (filter1, 0))
>        self.connect ((filter1, 0), (nulls1, 0))
>        self.connect ((src, 0), (filter2, 0))
>        self.connect ((filter2, 0), (nulls2, 0))

This connects (src, 0) to two different outputs.  This should work
fine.  If you happened to be using

>        self.connect ((src, 0), (filter1, 0))
>        self.connect ((src, 1), (filter2, 0))

I would expect it to raise an exception, not trigger the assertion,
since this assumes that there are two distinct outputs from your src 0,
but most likely your i/o signature specifies exactly 1.

The rules are:

  * Any particular output can be connected to an arbitrary number of
    inputs

  * A given input can have only a single output connected to it.

Did this help?

Eric




reply via email to

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