Release 3.6.3 is a significant release, adding major new
capabilities and many bug fixes, while maintaining strict source compatibility with user code already written for the 3.6 API.
Much of the code was the result of two events, the September 2012 GNU
Radio conference in Atlanta, GA, and the November 2012 GNU Radio hackfest held at Ettus Research in Mountain View, CA. Additional work (not discussed here) from these events has been incorporated into the 'next' branch of the code repository, and will become part of the 3.7
API release series.
New features include asynchronous message passing between blocks, new blocks for interfacing with operating system networking stacks, the ability to write new signal processing blocks in Python, enhanced file
source and sinks that can store metadata, flowgraph latency control, improvements to documentation, and further conversion of existing code into the 3.7 API organization (while leaving existing blocks in place.)
Enjoy!
Johnathan Corgan
Corgan Labs
Detailed changelog:
Addition/upgrade of message passing infrastructure (Tim O'Shea, Tom
Rondeau, Johnathan Corgan, Josh Blum)
This introduces the ability to add and connect formally defined asychronous message ports to signal processing blocks and hierarchical blocks. These message ports can be connected to pass
asynchronous data in the form of PMTs (polymorphic types) among blocks in a flowgraph. It is also possible to implement pure message passing blocks that have no requirement for streaming ports or work functions.
We've also introduced the concept of PDUs (Protocol Data Units) as a convention for passing data+metadata using the new messaging ports. A PDU is a PMT pair that combines a PMT dictionary of
metadata keys/values along with a PMT blob to hold a vector of
data in memory.
A few new general purpose blocks supporting these capabilties are in gnuradio-core:
Two new blocks for interfacing with networking stacks using the new PDU semantics:
gr_socket_pdu gr_tuntap_pdu
This new message passing capability and PDU convention is aimed at
providing the infrastructure to better support software radio implementations using packet-oriented semantics, such as MAC-layer processing.
Addition of new Python-based signal processing blocks (Josh Blum)
This feature, originally introduced by Josh Blum as part of GrExtras, allows implementing signal processing blocks directly in Python, and has now become a standard feature of GNU Radio.
Addition of gr-analog top-level component (Tom Rondeau)
This implements the current gnuradio-core signal processing blocks used for analog signal processing into their own top-level component, gr-analog, and uses the new 3.7 API organization. The original blocks in gnuradio-core will be removed on the 3.7 branch
prior to 3.7 release.
Addition of gr-blocks top-level component (Johnathan Corgan)
This implements a large portion of the gnuradio-core non-signal processing blocks in the 3.7 API form. The original blocks in
gnuradio-core will be removed on the 3.7 branch prior to 3.7 release.
Metadata file source and sink blocks (Tom Rondeau)
Two new blocks implement enhanced file source and sink blocks that
incorporate metadata passed using the stream tags feature in GNU Radio. It is now possible to store things like frequency and sample rate into capture files, or whatever key/value pairs you tag onto data streams inside a flowgraph.
GNU Radio buffer latency control (Tim O'Shea, Tom Rondeau)
For finer-grained control over latency inside a GNU Radio flowgraph, it is now possible to adjust, on a per-block basis, the maximum noutput_items that will be used to call a block work function. In addition, it is possible to set the maximum size an
output buffer can grow to before a work function is called.
New GNU Radio Companion (GRC) capabilities
Added optional flag to pad source and sink (Josh Blum) Added wildcard type to pad source and sink (Josh Blum)
Added ability to reload XML for block (Tim O'Shea) Added ability to automatically create hier_blocks from a flowgraph (Tim Newman) Added ability to open custom GRC hier block definitions (Tim O'Shea)
Added new grcc command line GRC-to-Python utility (Tom Rondeau)
New Documentation Updates (Tom Rondeau)
We are introducing documentation into the Doxygen manual describing features and capabilities of GNU Radio, above and
beyond just documenting the API functions. Tom Rondeau has written about this here:
Allow file source to open new files while running (Brett L. Trotter) Allow source blocks to return none/yield (Josh Blum) Improved capabilities of uhd_fft.grc example in gr-uhd (Ben Hilburn)
Added parameter in qtgui sink's GRC block to set the update rate (Julien Olivain) Added source block hook in gr-uhd for issue stream cmd (Josh Blum) Added cmake package support for Ubuntu 12.10 (Nicholas Corgan)
Added gr::blocks::patterned_interleaver (Tim O'Shea) Allow user to set Python path during cmake configuration (Tom Rondeau) Enabled serialize/deserialize for PMT vectors (Tom Rondeau) Added unsigned long long int support to the PMT sugar functions (Tom Rondeau)
Allow using pmt_init_Xvector methods in python (Tom Rondeau)
Bug fixes:
Numerous cmake related bug-fixes (Josh Blum, Johnathan Corgan, Tom Rondeau) Overhaul of cmake include directory ordering (Michael Dickens)
Fixed parallel build failures in cmake (Tom Rondeau)
Fixed segfaults due to old, no longer nedded SWIG workaround (Tom Rondeau) Fixed memory leak issue in arbitrary resampler blocks (Tom ROndeau) Fixed use of default noise seed in channel model (Alick Zhao)
Fixed scaling bug in QAM constellations (Ben Reynwar) Fixed installation of grc examples (Johnathan Corgan) Fixed finding Qwt6 installed on OSX using MacPorts (Ben Reynwar) Fixed implicit assumption in skiphead (Josh Blum)
Fixed include tag include usage throughout core (Josh Blum) Fixed incorrect private usage in gr_endian_swap (Josh Blum) Fixed segfault in gr-filter due to memory free bug (Josh Blum) Fixed UHD pmt tuple ref namespace issue (Josh Blum)
Fixed gr_tag_debug to handle lacking srcid (Martin Braun) Fixed gr-analog for 'sincos(f)' on MacOSX (Michael Dickens) Fixed gr-analog build issues on Windows (Nicholas Corgan) Fixed qtgui time sink to take the bandwidth parameter to set x-axis correctly (Tom Rondeau)
Fixed float-in, complex-out fft block to use the right io sig (Tom Rondeau) Fixed Clang imcompatibility by removing '.version' lines in ASM code in core (Tom Rondeau) Fixed file_meta_source/sink incompatibilities with MSVC (Nicholas Corgan)
Fixed some unused parameter warnings (Alexandru Csete)