Skip to content

GNSS-SDR v0.0.13

Compare
Choose a tag to compare
@carlesfernandez carlesfernandez released this 29 Jul 08:55
2a77311

DOI

This is a maintenance release which includes bug fixes, compatibility with the
most recent compiler versions, some code optimization and the addition of minor
new features. Most relevant changes with respect to the former release are
listed below:

Improvements in Efficiency:

  • Faster internal handling of Gnss_Synchro objects by reducing the amount of
    copying via adding noexcept move constructor and move assignment operators,
    so the move semantics are also used in STL containers.
  • All std::endl have been replaced by the '\n' character, since there is no
    need to always flush the stream.
  • Performed a stack reordering of class members that seems to offer
    statistically better performance in some processor architectures and/or
    compilers.
  • Add building option ENABLE_STRIP to generate stripped binaries (that is,
    without debugging symbols), smaller in size and potentially providing better
    performance than non-stripped counterparts. Only for GCC in Release build
    mode. Set to OFF by default.

Improvements in Maintainability:

  • Improved usage of smart pointers to better express ownership of resources.
  • Add definition of std::make_unique for buildings with C++11, and make use of
    it along the source code.
  • Private members in headers have been sorted by type and size, minimizing
    padding space in the stack and making the files more readable for humans.
  • Simpler, less error-prone design of the GNSSBlockFactory class public API
    and internal implementation.
  • Simpler API for the Pvt_Solution class.
  • Improved system constant definition headers, numerical values are only written
    once.
  • Improved const correctness.
  • The software can now be built against the GNU Radio 3.9 API that uses standard
    library's smart pointers instead of Boost's. Minimum GNU Radio required
    version still remains at 3.7.3.
  • The software can now be built against Boost <= 1.73 (minimum version: 1.53).
  • Fixed building with GCC 10 (gcc-10 and above flipped a default from -fcommon
    to -fno-common, causing an error due to multiple defined lambda functions).
  • Fixed warnings risen by GCC 10 and Clang 10.
  • Various improvements in the CMake scripts: better decision on the C++ standard
    to use; simplifications for various API dependency and environment versions
    requirements, with more intuitive naming for variables; fixed the
    ENABLE_CLANG_TIDY option; better GFORTRAN module; and broader adoption of
    the modern per-target approach.

Improvements in Portability:

  • The software can now be cross-compiled on Petalinux environments.
  • Removed python six module as a dependency if using Python 3.x.
  • Make use of std::span if the compiler supports it, and use gsl-lite as a
    fallback. The latter has been updated to version 0.37.0.
  • Improved finding of libgfortran in openSUSE and Fedora distributions.
  • Improved interface for FPGA off-loading.
  • Allow a random name for the build type. If not recognized, it is set to
    None. This allows packaging in some distributions that pass an arbitrary
    name as the build type (e.g., Gentoo) to avoid unexpected compiler flags. The
    building option ENABLE_PACKAGING must be set to ON when packaging.
  • Do not stop the receiver if SysV message queues cannot be created.

Improvements in Reliability:

  • Fixed a bug in GLONASS GNAV CRC computation.
  • Fixed a bug in GLONASS time year.
  • Fixed a possible buffer overflow in the generation of RTCM messages.
  • Fixed bugs which could cause a random crash on receiver stopping.

Improvements in Reproducibility:

  • Improved reproducibility of the volk_gnsssdr library: Drop compile-time CPU
    detection.

Improvements in Testability:

  • Add building option ENABLE_BENCHMARKS, which activates the building of
    benchmarks for some code snippets, making it easier to developers to benchmark
    different implementations for the same purpose. Set to OFF by default.

Improvements in Usability:

  • Do not pollute the source directory if the software is built from an
    out-of-source-tree directory. Downloaded external sources and test raw files
    are now stored in a ./thirdparty folder under the building directory. In
    case of an out-of-source-tree build, the generated binaries are stored in an
    ./install folder, also under the building directory. The old behavior for
    generated binaries is maintained if the building is done from any source tree
    subfolder (for instance, gnss-sdr/build): in that case, binaries are stored
    in the source tree (under gnss-sdr/install).
  • Defined new GNSS-SDR.GPS_banned_prns, GNSS-SDR.Galileo_banned_prns,
    GNSS-SDR.Glonass_banned_prns and GNSS-SDR.Beidou_banned_prns configuration
    parameters. The user can specify lists of satellites that will not be
    processed (e.g., GNSS-SDR.Galileo_banned_prns=14,18 since Galileo E14 and
    E18 satellites are not usable for PVT). Satellites on those lists will never
    be assigned to a processing channel.
  • Added a Matlab script to quantize the input signal with a given number of bits
    per sample.
  • Fixed the building option -DENABLE_LOG=OFF, which strips internal logging
    from the binary and can help to reduce its size and ultimately to speed up the
    receiver. In binaries with enabled logging, it still can be disabled by
    passing the command line flag --minloglevel=3 to gnss-sdr. This can be
    relevant in embedded devices with scarce storage capabilities.
  • Fixed a bug in the Signal Sources configuration that made the number of
    samples parameter ignored when too large (that is, when set larger than
    2^31-1). Now the samples parameter accepts values up to 2^64-1, that is,
    18,446,744,073,709,551,615 samples.
  • Fixed a bug in the forwarding of NMEA messages to a serial port (configuration
    of the PVT.nmea_dump_devname parameter was ignored).
  • Updated version of the Contributor Covenant to version 2.0. Added badge in the
    README.md file.

See the definitions of concepts and metrics at https://gnss-sdr.org/design-forces/