discuss-gnuradio
[Top][All Lists]
Advanced

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

Re: Adding C++ Code generation support for c++ implemented blocks


From: Marcus Müller
Subject: Re: Adding C++ Code generation support for c++ implemented blocks
Date: Thu, 18 May 2023 13:54:17 +0200
User-agent: Mozilla/5.0 (X11; Linux x86_64; rv:102.0) Gecko/20100101 Thunderbird/102.10.0

Hey Martin,

welcome to the community :)
As you can imagine, with the GNU Radio project, code contributions are always welcome, especially when it comes to adding code generation for existing blocks written in C++. I'm pretty optimistic Daniel feels the same way about gr-satellites.

The S-NET flowgraph screenshot is already a bit older, it still uses GNU Radio 3.7, but with the symbol sync block, it might be quite straightforward to port it (Clock Recovery MM has been deprecated; you can use Symbol Sync with a Mueller and Müller TED instead). You need modern GNU Radio, because on 3.7, C++ generation was not there, and also, the more modern the GNU Radio, the more blocks already come with C++ generation definitions.

I do have one piece of bad news for you, though: Many (most, I think) blocks in gr-satellites, such as the S-NET deframer, are Python blocks. So, the thing that's missing for creating C++ flowgraphs out of these is not only the definition of how the C++ code needed to instantiate them looks like, but also: a C++ implementation!

And that is where it gets hairy: I don't think it's overly complicated to re-implement snet_deframer.py from gr-satellites in C++. The question is whether you *should*, on two levels: first, that's an effort you'd be doing to recreate something that already exists, and second, you should probably really work with upstream (so, Daniel) on whether he would prefer your C++ implementation (he positively might! It's going to faster, especially since you'll be implementing the BCH decodder in C++) or his Python implementation (which is going to be easier to read and maintain, probably). The thing with upstreaming is that you're giving someone your code to take care of, and that's a bit like giving away free puppies: A great gesture, but comes with some work.

In this light, I'd recommend you go through each block in the flowgraphs / applications you want to use and consider whether it's worth going through the porting effort to avoid having to package Python.

There's an alternative to having to package Python yourself, and all the libraries (which are quite a few) that (the used subset of the in-tree modules of) GNU Radio + gr-satellites would use: Make sure the conda recipes work flawlessly for the software you want to ship, and build a conda installer akin to Ryan's radioconda for that specific application. I guess you're mostly targeting Windows there – making a nice installer should not be impossible, but I don't have any personal experience with it. That would have the added benefit that, if you decide that you want your target audience to also have access to truly unportable Python-only software like GRC, you could, at nearly no development cost, add that.

Either way, what you set out to do is truly remarkable and I'm happy you're 
tackling it!

Best,
Marcus


On 18.05.23 11:25, Martin Hübner wrote:

Similarily, the C++ support for the rather easy quadrature demod block should look like this then, right?
https://github.com/Akira25/gnuradio/tree/add\_cpp\_generation-quadmod

That link's private, but if you want us to have a look at it, why don't you open a pull request against gnuradio/gnuradio? You can mark it as "Draft" and write a nice comment what it signifies, and maybe even link to your message in the discuss-gnuradio mailing list archives.



reply via email to

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