discuss-gnuradio
[Top][All Lists]
Advanced

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

Re: [Discuss-gnuradio] Handling custom blocks in GRC


From: Vipin Sharma
Subject: Re: [Discuss-gnuradio] Handling custom blocks in GRC
Date: Wed, 24 May 2017 07:35:39 +0000

Cool, thanks! Will try that out soon. 

On Wed, May 24, 2017 at 12:34 AM Moritz Luca Schmid <address@hidden> wrote:
Hey Vipin,

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:

Hi Vipin,

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


reply via email to

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