GNSS-SDR v0.0.16 released
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_Source
for interoperability with LimeSDR (requires gr-limesdr and the-DENABLE_LIMESDR=ON
building flag).
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-initializer
clang-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 -
cpplint
job on GitHub: Added thebuild/include_what_you_use
filter for early detection of missing includes. - CI -
clang-tidy
job 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.
- Updated
cpu_features
library 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.enable_monitor=true
,NavDataMonitor.client_addresses=127.0.0.1
andNavDataMonitor.port=1237
in the configuration file. Format described in thenav_message.proto
file. A simple listener application written in C++ is included insrc/utils/nav-listener
as 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=true
and, optionally,TelemetryDecoder_XX.dump_crc_stats_filename=./crc_stats
in the configuration file. At the end of the processing (or exiting withq
+[Enter]
), the CRC check success rate will be reported in a file. - The
UHD_Signal_Source
learned to dump data in folders that do not exist, e.g., ifSignalSource.dump=true
,SignalSource.dump_filename=./non-existing/data.dat
, and thenon-existing
folder 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_level
that sets the logging verbosity level of the RTKLIB library. - Added a new output parameter
Flag_PLL_180_deg_phase_locked
in 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_Source
and extended integration times. - The
Fifo_Signal_Source
Signal Source implementation learned to handle theibyte
type. - Added a
CITATION.cff
file. - Updated version of the Contributor Covenant to version 2.1.
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.16 is 10.5281/zenodo.6090349.
Leave a comment