GNU Radio 3.10 OOT Module Porting Guide: Difference between revisions
No edit summary |
|||
Line 3: | Line 3: | ||
* C++ modernization (C++17) | * C++ modernization (C++17) | ||
* Introduction of gr-pdu | |||
* ATSC Block Refactoring | |||
* New Logging Infrastructure | |||
* OOT structure | |||
= Porting Guide = | = Porting Guide = | ||
== C++ modernization == | |||
GR 3.10 uses C++17 which allows some nice language features. Here are the ones that might impact your OOT: | |||
* std::any - where boost::any was used, now std::any | |||
== Versioning Your shared object files == | == Versioning Your shared object files == | ||
Line 12: | Line 20: | ||
littered with old libgnuradio-yourproject.so.git-commit-number files and soft links. | littered with old libgnuradio-yourproject.so.git-commit-number files and soft links. | ||
= | == OOT Structure == | ||
3.10 restructures the OOT file structure to more closely resemble the in-tree components. OOTs created with 3.9 should have no issue being interpreted by | |||
modtool and the macros to do python bindings. But creating a new OOT will be slightly different and have a different structure. OOTs created with 3.10 will | |||
not work with modtool from 3.9, or compile with 3.9 | |||
== API Changes == | == API Changes == | ||
Line 21: | Line 30: | ||
There was previously a decimation value in the constructor of a kernel::fir_xxx object that has now been removed | There was previously a decimation value in the constructor of a kernel::fir_xxx object that has now been removed | ||
=== ATSC Blocks === | |||
The inputs and outputs of the ATSC blocks previously passed structs that contained data and metadata. These have now been broken out into separate streams. |
Revision as of 11:20, 28 October 2021
The major changes in the (in-progress) GNU Radio 3.10 release that will impact OOTs are:
- C++ modernization (C++17)
- Introduction of gr-pdu
- ATSC Block Refactoring
- New Logging Infrastructure
- OOT structure
Porting Guide
C++ modernization
GR 3.10 uses C++17 which allows some nice language features. Here are the ones that might impact your OOT:
- std::any - where boost::any was used, now std::any
You may want to edit the /lib/CMakeList.txt file in order to set a version. The default VERSION_PATCH is set to git, you may want to edit it to 0 for your first version. Then when you need to push out a modified version remember to edit the version numbers before building. If you leave the VERSION_PATCH at git the install directory may eventually become littered with old libgnuradio-yourproject.so.git-commit-number files and soft links.
OOT Structure
3.10 restructures the OOT file structure to more closely resemble the in-tree components. OOTs created with 3.9 should have no issue being interpreted by modtool and the macros to do python bindings. But creating a new OOT will be slightly different and have a different structure. OOTs created with 3.10 will not work with modtool from 3.9, or compile with 3.9
API Changes
Removal of Decimation Parameter from FIR objects
There was previously a decimation value in the constructor of a kernel::fir_xxx object that has now been removed
ATSC Blocks
The inputs and outputs of the ATSC blocks previously passed structs that contained data and metadata. These have now been broken out into separate streams.