- gr-pdu: Protocol Data Units library
- gr-iio: Linux industrial I/O library (but not packaged in pkgsrc)
- Custom Buffers Support
- switch from Log4CPP to spdlog
Changed
SoapySDR support (gr-soapy)
GRC
Parameter expressions and/or values can be displayed in blocks on the flowgraph. Previously, only values were displayed. Look for the "Show Parameter ..." toggles under the View menu.
Deprecated blocks are shown in a distinct color (orange), and the optional deprecated property has been added to block yaml
Dark theme works better, especially for parameter fields
Vector length is now correctly applied to all input ports
Validation has been improved. Raw types are validated. Port connections are checked by type rather than by item size.
Variable names that cause name conflicts in Python code (e.g., with package names) are rejected
Bus logic fixes
Blocks can no longer be dragged off the screen and lost forever
gnuradio-runtime
Remove pmt::pmt_* functions, which were not actually implemented. This is technically an API change, but any use of the API would have resulted in a link error.
Remove Python bindings for internal buffer functions
gr-analog
Added an example for PLL Frequency Detector
Better names for parameters in PLL GRC blocks
gr-blocks
Consistent naming for Vector Length parameter in GRC blocks
count_bits uses VOLK popcnt for better performance (used for example in the Correlate Access Code block)
Rotator block phase increment parameter is controllable via a message, and a tag can be added at the point where the increment is adjusted
gr-digital
MPSK example updated to use a Linear Equalizer (replacing deprecated block)
gr-filter
Filter Delay documentation improvement
Interpolating FIR filter can generate C++ code
gr-dtv
VL-SNR bugs fixed (incorrect constants).
gr-qtgui
Improve autoscaling for vector sinks
Fix floating-point resolution problems in several widgets, due to interpretation of PMT doubles as floats
gr-uhd
Add policy enum to Python bindings for tune_request
Additional time spec options on UHD blocks (PC Clock on Next PPS, GPS Time on Next PPS)
Fix up code that was generating warnings
Fix command handler logic to apply commands from messages to the correct channel
gr_filter_design
"File/Save" is disabled until the taps have been computed, and the GUI is reset after a save, to make it clearer which data is being saved.
Entries are hidden for parameters that do not apply to the selected filter type.
Save window type as an integer instead of a Python enum name
gr_modtool
Improve validation of module and block names
Build System and Infrastructure
Improved messages related to dependencies MPIR and GMP. Only one of these packages is required, and the previous error messages were confusing.
Cleaner builds for Windows and Conda. A number of general cmake improvements have resulted from this work.
In-tree packaging files for DEB and RPM, used with Launchpad and COPR
Added man pages for GNU Radio tools
Test code generation for all in-tree GRC examples
In GrPybind.cmake, PYBIND11_INCLUDE_DIR (incorrect) was changed to
pybind11_INCLUDE_DIR
Changed
C++14
C11
VOLK now “regular” dependency, not in-tree submodule
numpy now also a CMake-checked hard dependency for Python support
Exception Handling: throw by value, catch by reference (clang-tidy check)
C++11: Emplace in vectors where you can; brings performance boni, but not included in clang-tidy-checks
An exception-throwing block will now terminate the flow graph process, configurable through top_block
gr-utils cleanup, folder restructuring
config version checks installed CMake file will accept “at least this version” now
PyBind11 replaces SWIG
Full tree conversion from SWIG to Pybind11 bindings
Doxygen now uses MathJax, full LaTeX installation no longer required
GRC
start flowgraph in folder where it resides
gnuradio-runtime
When calculating offsets in non-integer rate FEC, lround
default seed for gr::random now actually as documented time-dependent
loggers moved from gr::block to gr::basic_block
PMT serialization
PMT dicts no longer indistinguishable from pairs
PMT symbol hashing no longer suffers under oddball own implementations
gr-audio
Increased ALSA buffer nperiods
gr-blocks
add, add_const VOLK’ized, templated
this seems to break things in other places, even if it proves to be mathematically identical
wavfile infrastructure: libsndfile now dependency
gr-digital
transcendental block: default to 32 bit float complex, not double
Linear equalizer: separate adaptive algorithm, allows for using e.g. trained sequences instead of the classical LMS, CMA
DFE: better structure for decision history
gr-dtv
LDPC encoder: template functions instead of #defined macros
LDPC encoder: smaller tables through uint16_t for index tables
gr-fec
API uint8_t, not char
gr-fft
FFT blocks/functions templatized
gr-filter
logging format
rational_resampler_base -> rational_resampler
gr-uhd
Required UHD version bumped to 3.9.7
logging format
Deprecated
gr-analog
sig_source: freq port will be removed in the future
gr-audio
audio-sink, -source: Windows audio sink/source deprecated, the portaudio
sink/source works even better under windows anyway
gr-digital
In favor of symbol_sync, deprecate:
clock_recovery_mm
msk_timing_recovery
pfb_clock_sync
Added
C++ Generation all over the place
PyBind bindings + generator
gnuradio-runtime
block_gateway: set_max_output_buffer
GR_PREFS_PATH environment variable sensitivity to configure the path to the
config file
gnuradio-config-info --print-all
GRC
option to toggle ID visibilities globally
Validation check for QT GUI hints
Python snippets
block header parsing tool
block header parsing tool (GSoC 2019)
gr_modtool
option to convert blacklisted files
gr-analog
sig_source: cmd port adds support for dicts, setting of frequency, amplitude,
offset and phase parameters
gr-blocks
selector now has control message ports
Rotator-based freq shift convenience wrapper
Message-to-Variable and vice versa blocks
DC Spike removal
IQ Swap
Complex to interleaved char / short: scaling option
Delay block: control message port
Phase Shift block with message port
wavfile_sink, _source can now deal with a lot of audio formats: uncompressed
WAV/AIFF, µ- and A-law compressed audio, OGG/Vorbis, FLAC, even octave files
Stream Demux, which demuxes streams according to lengths vector
rotator: phase() getter
gr-digital
OFDM: multiple CP lengths
ofdm_equalizer_simpledfe: enable_soft_output
Constellation Encoder
Constellation: normalization options
gr-fec
{en,de}code_rs_8, {en,de}code_rs_ccsds: Reed-Solomon en- and decoders
gr-fft
Windows:
Gaussian
Flat Top
Tukey
Window build() call now with default beta
gr-filter
GRC: File taps loader block
Low pass FFT filter convenience wrapper
ichar / ishort decimator
phase continuity for freq_xlating_fir_filter
gr-network
gr-network: a whole new networking blocks module!
TCP
UDP
Much better lockup/multithreading support than 3.7-era blks2
gr-qtgui
Azimuth/Elevation plot
Autocorrelation plot
Compass visualization
Dial control
Gauge: dial, level
Distance plot
LED-like indicator
Message-passing check box
Message-passing numeric control
Message-passing push button
Toggle Button
Eye sink
Vertical slider
gr-uhd
Filter API
UHD 4.0 support
Power Reference API
Bidirectional setting messages on both sink, source
gr-vocoder
Codec2 dev branch support
FreeDV: In/output rates can differ
FreeDV: text message output
gr-zeromq
C++ GRC templates
Tag filtering for tag-forwarding blocks
Removed
VOLK is no longer a submodule
Sphinx: consolidate into doxygen, or wiki-maintained block list.
Python 2
SWIG
gru python module
gnuradio-runtime
circular_file.cc
math/common_factor.hpp
gr-blocks
bin_statistics_f
log2_const
gr-digital
PFB clock sync: set_taps
deprecated old OFDM infrastructur
ofdm_frame_acquisition
ofdm_frame_sink
ofdm_insert_preamble
ofdm_sync_fixed
ofdm_sync_pn
ofdm_sync_pnac
ofdm_sync_ml
ofdm_receiver
digital_voice
gr-fft
malloc_float, _double: rely on VOLK
Goertzel: dtor superfluous
gr-filter
deprecated window function duplicates (use them from gr-fft!)
Fixed
CMake: Qwt, Log4Cpp detection
ctrlport strings unicodified
Freedesktop install script was not executed
Redundant icons installed
Path substitution on Windows was backslash-broken
YAML definitions: more than I can count
Cross-building: py interpreter at runtime != build time
gnuradio-runtime
ctrlport: unholy stored reference to stack-allocated object removed
Sine table generation for fixed point math
gr_unittest: floatAlmostEqual had a lot of false passes due abuse of all()
get_tags_in_range for delay < (end-start)
Premature tag pruning
release flattened flowgraph after stopping, fixes restartability/shutdown
problem
PMT serialization portability
latency issue caused by setting block alias on msg block
Windows logging errors
ctrlport: Thrift >= 0.13 broke
GRC
Tab widget ID visibilities
A lot of YAML templates
Default setting in qtgui chooser restored
Boolean parameters no longer switch buttons
Nested namespace handling
Don’t rely on set ordering in tests
configparser import
input box color theme on dark themes
Search box typing doesn’t inadvertedly interact with the rest of GRC anymore
gr_modtool
Empty argument lists allowed
Boost UTF replaced CppUnit, this needed to be done here, too
gr-analog
wfm left/right, filters
gr-audio
portaudio: lock acquisition was improper
gr-blocks
Throttle now uses monotonic clock
Tag debug only saved last work call’s tags
File sink flushes on stop
gr_read_file_metadata.py used to lose rx_time precision
File source big file handling under Windows
file_*: fseek errors used to be ignored
gr-digital
map_bb: thread safety, buffer overflows
additive_scrambler: reset was broken
Constellation scalefactor wasn’t always initialized
long-standing qa_header_payload_demux bug addressed by waiting for both RX and
TX, not only either
false triggers in correlate_access_code
gr-dtv
rate mismatch in ATSC flowgraphs
gr-fec
async_decoder Heap corruption
cc_encoder: constraint length K > 8 led to wrong output
gr-fft
thread safety of copy assignment/ctor
log power FFT Python
gr-filter
variable_band_pass_filter GRC complex taps input
RRC filter gain for alpha = 1
gr-qtgui
Remove copies of image data in returns by using move semantics
Remove bogus overriding in drawing functions of plot_raster, _waterfall
Edit MSG box: don’t require key to be set
Don’t check for Python2 libs
Number Sink ignored averaging setting
gr-uhd
UHD apps: Py3 fixes
USRP blocks: multichannel objects not properly populating channels
gr-video-sdl
YUV formats fixed
gr-zeromq
Don’t depend on deprecated ZMQ functionality
Unhandled exceptions now handled, much calmer
Avoid infinite blocking in tb.stop() by using ZMQ_LINGER