[Top][All Lists]

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

Re: [Discuss-gnuradio] Activating/Deactivating Blocks in real time

From: Isdren Gineer
Subject: Re: [Discuss-gnuradio] Activating/Deactivating Blocks in real time
Date: Thu, 3 Oct 2013 13:59:10 -0700

Perhaps the gr.copy() block will accomplish what you need.

Help on function copy in module gnuradio.gr.gnuradio_core_general:

copy(*args, **kwargs)
    copy(size_t itemsize) -> gr_copy_sptr
    output[i] = input[i]
    When enabled (default), this block copies its input to its output. When disabled, this block drops its input on the floor.

enabled(self) method of gnuradio.gr.gnuradio_core_general.gr_copy_sptr instance
    enabled(self) -> bool

set_enabled(self, *args, **kwargs) method of gnuradio.gr.gnuradio_core_general.gr_copy_sptr instance
    set_enabled(self, bool enabled)

On Thu, Oct 3, 2013 at 5:03 AM, West, Nathan <address@hidden> wrote:
On Wed, Oct 2, 2013 at 11:06 PM, Achilleas Anastasopoulos <address@hidden> wrote:
I guess I forgot to make this one thing more clear:

I would like the input stream of block A to be consumed even
when s(t)=1.

With Tim's suggestion, when s(t)=1 we will have the right output, but the input will be waiting in block's A queue to be processed the
moment s(t) turns 0.
Is this correct, or am I missing something?

But this gives me the following idea:

I guess what i need in addition to that is a block that based
on s(t) either sends the input to the output when s(t)==0 (which is then connected to A),
or just consumes the input (when s(t)==1).
Is there such a block available? (even if not, this is pretty easy to write!)

Any comments on this?

thanks for the hints and ideas!


I solved a similar problem by creating a general block that consumes an input stream on some condition, and passes it otherwise. If you pair this with another block that tags a sample where passing or rejecting  should begin (correlate_access_code_tag?) it works quite nicely. With this approach you could use the control pin idea, but I would recommend tags to keep it cleaner.

Looking at this might help you get going a little faster if this sounds like it would work for you: https://github.com/n-west/gr-west_3_6/blob/master/lib/filter_payload_impl.cc  It's a little messy because I was trying (and more or less failied) to make it dynamic and allow multiple streams coming in to be synchronized and let any input stream control output of all streams. It also still uses 3.6 API (I know, the shame!)


On Wed, Oct 2, 2013 at 5:51 PM, Monahan-Mitchell, Tim <address@hidden> wrote:

Can you do this with a 2:1 mux block? Input 2 = constant 0, control input is s(t)?


From: discuss-gnuradio-bounces+tmonahan=address@hidden [mailto:discuss-gnuradio-bounces+tmonahan=address@hidden] On Behalf Of Achilleas Anastasopoulos
Sent: Wednesday, October 02, 2013 3:48 PM
To: address@hidden
Subject: [Discuss-gnuradio] Activating/Deactivating Blocks in real time


I have the following problem that I would like your opinion on how to solve elegantly:

I have a block A (say a standard sync block with some memory--eg an fir filter) which
has input x(t) and output y(t) and is pretty computationally intensive.

I would like to add the following functionality to it:

Add a new input s(t) to A which can be 0 or 1.

When s(t)=1 the block operates as before ie, it processes x(t) to generate y(t).

If s(t)=0 I would like it to output y(t)=0 and consume the appropriate x(t)'s from the input.

This way when s(t)=0 block A essentially "does not work".


This is pretty straightforward to code if I modify the work function of block A.

However, block A for me is a pretty complicated hierarchical block, so I don't have access to its "work" function.

One way to do this is to rewrite the whole hierarchical block A as a flat block and then do as suggested above.

Is there a better way?




Discuss-gnuradio mailing list

Discuss-gnuradio mailing list

reply via email to

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