Put a block to sleep

Hello everybody,

I want to connect a source to a sink block but there must be a sort of
synchronization between them. The sink block should ask the source to
generate data stream on some specific instances. Between these
instances,
the source block must put to the sleep or be disabled. How could I do
this?

I thought it was possible with exchanging messages between these two
blocks
by which the sink block send a message to the source to disable or
enable
it. But this doesn’t work because the scheduler will remain on the
source
after generating only one block of data (I need to generate just one
block)
at the start up of the flowgraph!

best,
Mostafa

On Wed, May 21, 2014 at 5:53 PM, Mostafa A.
[email protected]wrote:

Hello everybody,

I want to connect a source to a sink block but there must be a sort of
synchronization between them. The sink block should ask the source to
generate data stream on some specific instances. Between these instances,
the source block must put to the sleep or be disabled. How could I do this?

The scheduler takes care of this. You don’t need to worry this.

I thought it was possible with exchanging messages between these two

blocks by which the sink block send a message to the source to disable or
enable it. But this doesn’t work because the scheduler will remain on the
source after generating only one block of data (I need to generate just one
block) at the start up of the flowgraph!

If you just need to generate only one block of data (one element), then
you
may not need gnuradio.

On 21.05.2014 11:53, Mostafa A. wrote:

or enable it. But this doesn’t work because the scheduler will remain on
the source after generating only one block of data (I need to generate
just one block) at the start up of the flowgraph!

If you just need one block, you can use blocks.head.
To “keep your block alive”, you can use a heartbeat message: Give your
block another message port, and use the message strobe to send it
messages every N ms. Once it’s alive, you can figure out if you need
your source to send more data.

M

It doesn’t work for me!

Hi Martin,

blocks.head isn’t appropriate for my case because this is not a test!

I searched for managing a thread, I found this :

http://www.boost.org/doc/libs/1_48_0/doc/html/thread/synchronization.html#thread.synchronization.condvar_ref

which is a part of boost library.

This is exactly what I want, but I don’t know how I could use these
classes
in GNURadio!?

The message passing mechanisms in GNURadio needs a block to be alive(as
far
as I know), but here I think I should put the block ( or the thread) to
sleep and wake it up by a signal.