This release adds new features and fixes some bugs. Most relevant changes with respect to the former release are listed below:
Improvements in Availability:
- Added the Galileo E5b receiving chain. The software is now able to compute PVT solutions as a standalone Galileo E5b receiver.
- Improved Time-To-First-Fix when using GPS L1 C/A signals, fixing a bug that was making the receiver to drop the satellite if the PLL got locked at 180 degrees, and making some optimizations on bit transition detection.
- Fixed a bug that prevented from obtaining PVT fixes with Galileo E1 OS signals if the I/NAV subframe type 0 was the first decoded subframe.
Improvements in Interoperability:
- Fixed setting of the signal source gain if the AGC is enabled when using the AD9361 front-end.
- Fixed the regeneration of Galileo ephemeris from the reduced clock and ephemeris data (CED) defined in the Galileo E1B INAV message introduced in Galileo OS SIS ICD Issue 2.0.
- Added a
Limesdr_Signal_Sourcefor interoperability with LimeSDR (requires gr-limesdr and the
Improvements in Maintainability:
- Rewritten Viterbi decoder for Galileo navigation messages. Encapsulated in a class instead of being implemented as free inline functions. This improves memory management and source code readability.
- Prefer initialization to assignment in constructors. This improves the readability of the code, could potentially increase performance, and allows for easier detection of unused data members (see the CppCoreGuidelines. Added the
cppcoreguidelines-prefer-member-initializerclang-tidy check to enforce this policy.
- Non-functional change: Fixed formatting defects detected by clang-format 13.0.
- Non-functional change: Simplified flow graph disconnection.
- Updated GSL implementation to v0.40.0. See the gsl-lite release
- CI -
cpplintjob on GitHub: Added the
build/include_what_you_usefilter for early detection of missing includes.
- CI -
clang-tidyjob on GitHub: More robust detection of LLVM paths installed by homebrew.
Improvements in Portability:
- Fixed building against the new API in the gr-iio component present in GNU Radio v3.10.X.Y.
- Fixed building against GNU Radio v3.10.X.Y, which does not support the C++20 standard.
- Fixed building against GNU Radio v3.10.X.Y, which replaced log4cpp by the spdlog and fmt libraries.
cpu_featureslibrary for improved processor detection.
Improvements in Reliability:
- Fixed some potential buffer overflows.
- Avoid source code lines longer than 512 characters. This was a warning raised by Lintian (very-long-line-length-in-source-file). Long lines in source code could be used to obfuscate the source code and to hide stuff like backdoors or security problems.
Improvements in Usability:
- Added a new monitor to extract the decoded data bits of the navigation messages and send them elsewhere via UDP. Activated by setting
NavDataMonitor.port=1237in the configuration file. Format described in the
nav_message.protofile. A simple listener application written in C++ is included in
src/utils/nav-listeneras an example.
- Extract successful rate of the CRC check in the decoding of navigation messages. This can be enabled by setting
TelemetryDecoder_XX.dump_crc_stats_filename=./crc_statsin the configuration file. At the end of the processing (or exiting with
[Enter]), the CRC check success rate will be reported in a file.
UHD_Signal_Sourcelearned to dump data in folders that do not exist, e.g., if
SignalSource.dump_filename=./non-existing/data.dat, and the
non-existingfolder does not exist, it will be created if the running user has writing permissions. This also works for absolute paths.
- Added a new configuration parameter
PVT.rtk_trace_levelthat sets the logging verbosity level of the RTKLIB library.
- Added a new output parameter
Flag_PLL_180_deg_phase_lockedin the monitor output that indicates if the PLL got locked at 180 degrees, so the symbol sign is reversed.
- Fixed a bug in the satellite selection algorithm for configurations with a large number of channels. The maximum number of channels per signal is now limited to the number of available satellites per system minus one. The number of channels performing concurrent acquisition,
Channels.in_acquisition, cannot be larger than the total number of channels. The program will stop if those requirements are not met in the configuration file.
- Fixed program termination when using
File_Signal_Sourceand extended integration times.
Fifo_Signal_SourceSignal Source implementation learned to handle the
- Added a
- Updated version of the Contributor Covenant to version 2.1.
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.16 is 10.5281/zenodo.6090349.