GNU Radio 3.10 OOT Module Porting Guide: Difference between revisions

From GNU Radio
Jump to navigation Jump to search
No edit summary
Line 7: Line 7:
* New Logging Infrastructure
* New Logging Infrastructure
* OOT structure
* OOT structure
* QT Frequency/Waterfall block ranges


= Porting Guide =  
= Porting Guide =  
Line 23: Line 24:
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
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, but they still should be able to compile with 3.9
not work with modtool from 3.9, but they still should be able to compile with 3.9
== QT FFT Size Ranges ==
For QT Frequency Sink and QT Waterfall Sink: because of the interaction between the block and some of the graphical elements such as the control panel, we have limited the available fft sizes
to powers of 2 between 32 and 32768 to keep the widget in a well defined state.  Flowgraphs with values for fft size that are not powers of 2 will show an error
in GRC, but for python flowgraphs, will force it to a default value.


== API Changes ==  
== API Changes ==  

Revision as of 11:51, 11 January 2022

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
  • QT Frequency/Waterfall block ranges

Porting Guide

C++ modernization

GR 3.10 uses C++17 which allows some nice language features. Some might affect your OOT. Please document any needed changes here

Versioning Your shared object files

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, but they still should be able to compile with 3.9

QT FFT Size Ranges

For QT Frequency Sink and QT Waterfall Sink: because of the interaction between the block and some of the graphical elements such as the control panel, we have limited the available fft sizes to powers of 2 between 32 and 32768 to keep the widget in a well defined state. Flowgraphs with values for fft size that are not powers of 2 will show an error in GRC, but for python flowgraphs, will force it to a default value.

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.