GNSS-SDR v0.0.14 released
This is a maintenance and bug fix release. Most relevant changes with respect to the former release are listed below:
Improvements in Availability:
- Fixed bug in acquisition detection when the configuration parameter
Acquisition_XX.thresholdwas set butAcquisition_XX.pfawas not, causing false locks. - Fixed anti-jamming filters:
Pulse_Blanking_Filter,Notch_FilterandNotch_Filter_Lite.
Improvements in Efficiency:
- Faster
SignalConditionerblock when its implementation is set toPass_Through.
Improvements in Interoperability:
- Added the Galileo E6 B/C signal structure based on E6-B/C Codes Technical Note, Issue 1, January 2019, including Acquisition and Tracking blocks. The Telemetry Decoder is still empty (only the CRC is checked, based on Galileo High Accuracy Service E6-B Signal-In-Space Message Specification v1.2, April 2020).
Improvements in Maintainability:
- Added a common shared pointer definition
gnss_shared_ptr, which allows to handle theboost::shared_ptrtostd::shared_ptrtransition in GNU Radio 3.9 API more nicely. - Support new FFT and firdes blocks’ API in GNU Radio 3.9.
- Added detection of inconsistent function prototypes in
volk_gnsssdrlibrary kernels at compile time. - Fixed defects detected by clang-tidy check
bugprone-reserved-identifier, and added to the checks list. This check corresponds to CERT C Coding Standard rule DCL37-C as well as its C++ counterpart, DCL51-CPP. - Applied and added more clang-tidy checks related to readability:
readability-make-member-function-constandreadability-qualified-auto.
Improvements in Portability:
- Fixed
-DENABLE_OWN_GLOG=ONbuilding option when gflags is installed and it is older than v2.1.2 (e.g., in CentOS 7). - Improved handling of old gflags versions, minimum version set to 2.1.2.
Replaced
google::bygflags::namespace when using functions of the gflags library. - Replaced
git://byhttps://as the used protocol when downloading Gflags, so it can work through firewalls requiring authentication. - Fixed static linking of the matio library when downloaded and built by CMake.
- Improved CPU feature detection by switching to Google’s
cpu_features library: The
volk_gnsssdrlibrary had its own CPU feature detection methods, which were not totally reliable and difficult to implement across compilers and OSes. This is now handled by thecpu_featureslibrary, thus building upon that expertise. Since that library has higher dependency version requirements than GNSS-SDR, the old method is still used in old development environments. No extra dependency is needed. This change is transparent to the user, since everything is managed by the CMake scripts. - The
volk_gnsssdrlibrary can be built on Microsoft Windows and can execute SIMD instructions on that OS. - Removed all instances of
_mm256_zeroupper()in thevolk_gnsssdrlibrary, since they are not required and lead to miscompilation with GCC 10.2 and optimization level-O3. - Fixed building with
-DENABLE_CUDA=ONfor blocks implemented with CUDA. - Fixed linking against the ORC library if it is present in the system.
- Fixed a bug introduced in v0.0.13 that prevented getting Galileo-only PVT fixes in some environments.
- Fixed duplication of protobuf build tree if it was locally built and then installed with DESTDIR variable set.
Improvements in Usability:
- Fixed a bug when enabling pseudorange carrier smoothing in other bands than L1.
- If
SignalConditioner.implementation=Pass_Through, then all the configuration parameters for theDataTypeAdapter,InputFilterandResamplerblocks are ignored. This was the default behavior in GNSS-SDR v0.0.12, but it changed in v0.0.13. This change recovers the old behavior. - Fixed occasional segmentation fault when exiting with
q+[Enter]keys ifAcquisition_XX.blocking=false. - Fixed the termination of the receiver with
q+[Enter]keys when using theOsmosdr_Signal_Sourceimplementation of theSignalSourceblock. - The
Labsat_Signal_Sourceimplementation of theSignalSourceblock now can be throttled with the new parametersSignalSource.enable_throttle_controlandSignalSource.throttle_frequency_sps, thus allowing the emulation of real-time operation. - Improved General Block diagram, both in content and in image resolution.
- The
Custom_UDP_Signal_Sourceimplementation now acceptsSignalSource.sample_type=cfloat, in addition to the existing 4 and 8-bit length sample types. - Fixed the
obsdiffandrinex2assistutilities when installed if they were built with a locally downloaded version of GPSTk. - The generated HTML documentation now makes use of the Doxygen grouping feature.
- Improved rendering of equations in HTML documentation generated by Doxygen.
Make use of MathJax for equation rendering. Added new building option
ENABLE_EXTERNAL_MATHJAX, set toONby default. If set toOFF, it allows using a local installation of MathJax 2. - Improved dumps in Telemetry Decoding blocks. Now they include the raw
navigation message bits. If
TelemetryDecoder_XX.dump=true, the resulting.datbinary file is also delivered in.matformat, which is readable from Matlab and Python.
As usual, compressed tarballs are available from GitHub and Sourceforge.
In order to make GNSS-SDR more easily referenced, and to promote reproducible research, each software release gets a Digital Object Identifier provided by Zenodo. The DOI for GNSS-SDR v0.0.14 is 10.5281/zenodo.4428100.