here is some information to hier
blocks from the GNU Radio wiki.
If your structure of A_Func is that simple, I think its the
best way to write the hier block by hand.
When you implement B_Func and C_Func in gr blocks, you have to
change your A_Func code anyway because you call instances of
classes instead of functions.
Don't worry about modifying the flow graph. There are multiple
methods next to connect() (like wait(), unlock(), ..). It is no
problem to do flow graph controlling inside an if statement. You
can read more about controlling flow graphs here.
If any questions while creating the hier block occur, just ask.
Best regards
Luca
On 24.05.2017 09:06, Vipin Sharma
wrote:
Thanks Luca.
I may need a pointer to creating hierarchical python blocks
using gr_modtool.
My application's A_Func is mostly a control flow logic
which simply calls the appropriate B_Func or C_Func depending
on certain conditions. The other job of the A_Func is to pass
along the input data stream to these sub functions. This,
A_Func, of course is very easy to code in Matlab. I was trying
to find an automated way to capture the Matlab control flow
logic in GRC. It looks like I have two options (both manual):
1) Mimic Matlab's A_Func in Python (hierarchical block). I
hope this way of doing things still gives me the ability to
probe waveforms at the output of B_Func for example.
2) Mimic Matlab's A_Func in GRC GUI using the in built
basic blocks. Not sure how I will code if/else controls in GRC
GUI though. Any pointers appreciated.
3) Any other idea?
Vipin
On Tue, May 23, 2017 at 11:51 PM Moritz Luca Schmid
<
address@hidden>
wrote:
The question I have is this:
A_Func calls B_Func and C_Func. I don’t think I
can instantiate the three custom blocks directly
in one GRC flow-graph. What will happen to the
function call made in A_Func for B_Func when
A_Func custom block is kicked off for execution by
the GRC scheduler? Is there any way in GRC to
define hierarchical custom blocks?
There are
hierarchical blocks in GNU Radio, but only for python.
If your A_Func logic is relatively straight forward
calling the other functions, you can try create a python
hier block (you can do this with gr_modtool as well).
But if the function calls don't relate to the data flow,
it makes no sense to create different blocks for each
function in my opinion. Remember that a GR block should
fulfill one logical signal processing step. If your
functions separately don't do that, defining multiple
methods in your class of the block is better way to do
it.
One way to solve this issue is
the have Matlab Coder dump all code in one C++
file and then simply create one giant custom block
to instantiate in GRC gui. Problem is that I won’t
be able to debug in GRC gui very well (granularity
of probe points would be severally limited).
Anyway, I think it
depends on the structure and purpose of your different
functions. Are they each executing a signal processing
step themselves or is only the ensemble of the three
functions one logical signal processing. In the latter
case I would implement the three functions in one block.
Best
Luca