Dear Isaac,
you can overwrite the start method of gr::block
https://www.gnuradio.org/doc/doxygen/classgr_1_1block.html#a7f58745d1374b30a7b866406dc97850f
This function will be called once the processing starts.
Yours
Martin
On 2020-11-18 02:35, isaac mario tupac davila wrote:
Hi Marcus
Thanks for your answer. I am restructuring the design of my OOT block.
I'd like to ask a last question about it...I am trying to send some
commands (array of bytes) to an external hardware only ONCE before
starting with my real time data acquisition . The problem is that if I
implement the sending of the commands in the general work of my block,
the commands will be sent each time the general work finishes and starts
again. My solution proposed is to begin the execution of my flowgraph
and send an external signal (specificallykill -SIGIO PID) from terminal
to call the implemented method which sends the commands, so that my
general work will only focus on the data acquisition and I will send the
commands only once.
My question is: Is there a facility or tool that GNU Radio gives me to
solve this situation? There should be a more suitable solution.
Any help or recommendation would be appreciated.
Thanks
Regards
Isaac.
El dom., 15 nov. 2020 a las 13:50, Marcus Müller (<mmuel...@gnuradio.org
<mailto:mmuel...@gnuradio.org>>) escribió:
Hello,
On 15.11.20 06:26, isaac mario tupac davila wrote:
> Hello
>
> I'm Isaac.
Hi Isaac, nice having you.
> I have a question about threads..... I've created three
> threads and I want to pass real data from one thread to the next
block
> directly without returning to the general work method.
That sounds like a misguided design approach. Please don't do that.
The work function is meant to be seen as atomically processing a bit of
data from its input to its output.
If you need asynchronous messaging, then use the msg_passing facilities.
These make sure you don't change the state of the block while its
general_work is executing.
> I could give
> value to the out array in the thread but for some reason the data
> doesn't pass to the next block. I am not sure if it's because I
didn't
> put: return noutput_items in the thread,
What you describe as thread makes no sense – the way GNU Radio is,
there's exactly one thread executing a block's general_work at a time,
and that's the thread of the block_executor. And `return` ends that
execution; that's how C++ works.
> as normally this is in the
> general work method... I also add that the function is defined in the
> thread as void*function and I defined the out array as a
complex<short>*.
>
> Any help would be appreciated.
I'm afraid there's something not GNU Radio-compatible in the way you've
architected your system, but we sadly don't know your system well enough
to comment on what to change.
Best regards,
Marcus