1
0
mirror of https://github.com/gnss-sdr/gnss-sdr synced 2024-08-25 11:06:49 +00:00

Merge branch 'next' of https://github.com/gnss-sdr/gnss-sdr into next

This commit is contained in:
Carles Fernandez 2018-05-15 07:28:20 +02:00
commit 6a12efebe3
No known key found for this signature in database
GPG Key ID: 4C583C52B0C3877D
3 changed files with 62 additions and 43 deletions

View File

@ -1119,9 +1119,9 @@ if(NOT MATIO_FOUND OR MATIO_VERSION_STRING VERSION_LESS ${GNSSSDR_MATIO_MIN_VERS
endif(${LINUX_DISTRIBUTION} MATCHES "Fedora" OR ${LINUX_DISTRIBUTION} MATCHES "Red Hat") endif(${LINUX_DISTRIBUTION} MATCHES "Fedora" OR ${LINUX_DISTRIBUTION} MATCHES "Red Hat")
message(FATAL_ERROR "libtool is required to build matio from source") message(FATAL_ERROR "libtool is required to build matio from source")
endif(NOT EXISTS "/usr/bin/libtoolize") endif(NOT EXISTS "/usr/bin/libtoolize")
if(EXISTS "/usr/bin/aclocal-1.15" OR EXISTS "/usr/bin/aclocal-1.14" OR EXISTS "/usr/bin/aclocal-1.13" OR EXISTS "/usr/bin/aclocal-1.11" OR EXISTS "/usr/bin/aclocal-1.10") if(EXISTS "/usr/bin/aclocal" OR EXISTS "/usr/bin/aclocal-1.16" OR EXISTS "/usr/bin/aclocal-1.15" OR EXISTS "/usr/bin/aclocal-1.14" OR EXISTS "/usr/bin/aclocal-1.13" OR EXISTS "/usr/bin/aclocal-1.11" OR EXISTS "/usr/bin/aclocal-1.10")
message(STATUS "Automake found.") message(STATUS "Automake found.")
else(EXISTS "/usr/bin/aclocal-1.15" OR EXISTS "/usr/bin/aclocal-1.14" OR EXISTS "/usr/bin/aclocal-1.13" OR EXISTS "/usr/bin/aclocal-1.11" OR EXISTS "/usr/bin/aclocal-1.10") else(EXISTS "/usr/bin/aclocal" OR EXISTS "/usr/bin/aclocal-1.16" OR EXISTS "/usr/bin/aclocal-1.15" OR EXISTS "/usr/bin/aclocal-1.14" OR EXISTS "/usr/bin/aclocal-1.13" OR EXISTS "/usr/bin/aclocal-1.11" OR EXISTS "/usr/bin/aclocal-1.10")
message(" aclocal has not been found.") message(" aclocal has not been found.")
message(" You can try to install it by typing:") message(" You can try to install it by typing:")
if(${LINUX_DISTRIBUTION} MATCHES "Fedora" OR ${LINUX_DISTRIBUTION} MATCHES "Red Hat") if(${LINUX_DISTRIBUTION} MATCHES "Fedora" OR ${LINUX_DISTRIBUTION} MATCHES "Red Hat")
@ -1132,7 +1132,7 @@ if(NOT MATIO_FOUND OR MATIO_VERSION_STRING VERSION_LESS ${GNSSSDR_MATIO_MIN_VERS
message(" sudo apt-get install automake") message(" sudo apt-get install automake")
endif(${LINUX_DISTRIBUTION} MATCHES "Fedora" OR ${LINUX_DISTRIBUTION} MATCHES "Red Hat") endif(${LINUX_DISTRIBUTION} MATCHES "Fedora" OR ${LINUX_DISTRIBUTION} MATCHES "Red Hat")
message(FATAL_ERROR "aclocal is required to build matio from source") message(FATAL_ERROR "aclocal is required to build matio from source")
endif(EXISTS "/usr/bin/aclocal-1.15" OR EXISTS "/usr/bin/aclocal-1.14" OR EXISTS "/usr/bin/aclocal-1.13" OR EXISTS "/usr/bin/aclocal-1.11" OR EXISTS "/usr/bin/aclocal-1.10") endif(EXISTS "/usr/bin/aclocal" OR EXISTS "/usr/bin/aclocal-1.16" OR EXISTS "/usr/bin/aclocal-1.15" OR EXISTS "/usr/bin/aclocal-1.14" OR EXISTS "/usr/bin/aclocal-1.13" OR EXISTS "/usr/bin/aclocal-1.11" OR EXISTS "/usr/bin/aclocal-1.10")
endif(OS_IS_LINUX) endif(OS_IS_LINUX)
find_package(HDF5) find_package(HDF5)
if(HDF5_FOUND) if(HDF5_FOUND)

View File

@ -9,4 +9,4 @@ Before submitting your pull request, please make sure the following is done:
6. You have forked the [gnss-sdr upstream repository](https://github.com/gnss-sdr/gnss-sdr) and have created your branch from `next` (or any other currently living branch in the upstream repository). 6. You have forked the [gnss-sdr upstream repository](https://github.com/gnss-sdr/gnss-sdr) and have created your branch from `next` (or any other currently living branch in the upstream repository).
7. Please include a description of your changes here. 7. Please include a description of your changes here.
**Please feel free to delete this line and the above text once you have read it and in case you want to go on with your pull request.** **Please feel free to delete this line and the above text once you have read it and in case you want to go on with your pull request, and explain your intend below.**

View File

@ -1,32 +1,37 @@
## [Unreleased](https://github.com/gnss-sdr/gnss-sdr/tree/next) ## [Unreleased](https://github.com/gnss-sdr/gnss-sdr/tree/next)
Next release will have several improvements, addition of new features and bug fixes in many dimensions: Next release will have several improvements in different dimensions, addition of new features and bug fixes:
### Improvements in Accuracy: ### Improvements in Accuracy:
- Part of the RTKLIB core libraries has been integrated into GNSS-SDR. There is now a single PVT block implementation which makes use of RTKLIB to deliver PVT solutions, including Single and PPP navigation modes. - Part of the RTKLIB core libraries has been integrated into GNSS-SDR. There is now a single PVT block implementation which makes use of RTKLIB to deliver PVT solutions, including Single and PPP navigation modes.
- Fixed CN0 estimation for other correlation times than 1 ms. - Fixed CN0 estimation for other correlation times than 1 ms.
- Improved computation of tracking parameters and GNSS observables.
- Other minor bug fixes.
### Improvements in Availability: ### Improvements in Availability:
- Internal Finite State Machines rewritten for improved continuity in delivering position fixes. This fixes a bug that was stalling the receiver after about six hours of continuous operation. - Internal Finite State Machines rewritten for improved continuity in delivering position fixes. This fixes a bug that was stalling the receiver after about six hours of continuous operation.
- Redesign of the time counter for enhanced continuity. - Redesign of the time counter for enhanced continuity.
- Improved acquisition and tracking sensibility.
- Other minor bug fixes.
### Improvements in Efficiency: ### Improvements in Efficiency:
- Added the possibility of non-blocking acquisition, which works well when using real-time data from a RF front-end. - Added the possibility of non-blocking acquisition, which works well when using real-time data from an RF front-end.
- Complex codes have been replaced by real codes, alleviating the computational burden. - Complex local codes have been replaced by real codes, alleviating the computational burden.
- New kernels: volk_gnsssdr_16i_xn_resampler_16i_xn.h, volk_gnsssdr_16ic_16i_rotator_dot_prod_16ic_xn.h, volk_gnsssdr_32f_xn_resampler_32f_xn.h, volk_gnsssdr_32fc_32f_rotator_dot_prod_32fc_xn.h - New kernels: volk_gnsssdr_16i_xn_resampler_16i_xn.h, volk_gnsssdr_16ic_16i_rotator_dot_prod_16ic_xn.h, volk_gnsssdr_32f_xn_resampler_32f_xn.h, volk_gnsssdr_32fc_32f_rotator_dot_prod_32fc_xn.h
- Some AVX2 kernels added to the volk_gnsssdr library. - Some AVX2 implementations added to the volk_gnsssdr library.
- Several performance improvements. - Improvement in C++ usage: Use of const container calls when result is immediately converted to a const iterator. Using these members removes an implicit conversion from iterator to const_iterator.
- A number of code optimizations here and there.
### Improvements in Flexibility: ### Improvements in Flexibility:
- A number of new parameters have been exposed in the configuration. - A number of new parameters have been exposed to the configuration system.
- Possibility to choose Pilot or Data tracking where available. - Possibility to choose Pilot or Data component for tracking of GPS L5 and Galileo E5a signals.
- Enabled extended coherent integration times. - Enabled extended coherent integration times.
- Some configuration parameters can now be overridden by commandline flags for easier use in scripts. - Some configuration parameters can now be overridden by commandline flags for easier use in scripts.
@ -37,78 +42,92 @@ Next release will have several improvements, addition of new features and bug fi
- Added the GLONASS L1 SP receiver chain. - Added the GLONASS L1 SP receiver chain.
- Added the GLONASS L2 SP receiver chain. - Added the GLONASS L2 SP receiver chain.
- Improvements in the Galileo E5a and GPS L2C receiver chains. - Improvements in the Galileo E5a and GPS L2C receiver chains.
- Added four more signal sources: "Fmcomms2_Signal_Source", "Plutosdr_Signal Source", "Spir_GSS6450_File_Signal_Source" and "Labsat_Signal_Source". - Updated list of available GNSS satellites.
- Added four more signal sources: "Fmcomms2_Signal_Source", "Plutosdr_Signal Source", "Spir_GSS6450_File_Signal_Source" and "Labsat_Signal_Source". Documented in https://gnss-sdr.org/docs/sp-blocks/signal-source/
- Improved support for BladeRF, HackRF and RTL-SDR front-ends. - Improved support for BladeRF, HackRF and RTL-SDR front-ends.
- Added tools for the interaction with front-ends based on the AD9361 chipset. - Added tools for the interaction with front-ends based on the AD9361 chipset.
- Intermediate results are now saved in .mat binary format, readable from Matlab/Octave and from Python via h5py. - Intermediate results are now saved in .mat binary format, readable from Matlab/Octave and from Python via h5py.
- Added the GPX output format. - Added the GPX output format.
- Fixed a bug in the format of NMEA sentences when latitude or longitude minutes were >10 - Fixed a bug in the format of NMEA sentences when latitude or longitude minutes were >10.
- Improvements in the RTCM server. - Improvements in the RTCM server stability.
- Improvements in the generation of RINEX files. - Improvements in the correctness of generated RINEX files.
### Improvements in Maintainability: ### Improvements in Maintainability:
- C-style casts have been replaced by C++ casts. C-style casts are difficult to search for. C++ casts provide compile time checking ability and express programmers' intent better, so they are safer and clearer. - Setup of a Continuous Integration system that checks building and runs QA code in a wide range of GNU/Linux distributions (ArchLinux, CentOS, Debian, Fedora, OpenSUSE, Ubuntu) and releases. See https://gitlab.com/gnss-sdr/gnss-sdr
- The override special identifier is now used when overriding a virtual function. This helps the compiler to check for type changes in the base class. - Creation of multi-system processing blocks, drastically reducing code duplication and maintainability time.
- Use of const container calls when result is immediately converted to a const iterator. Using these members removes an implicit conversion from iterator to const_iterator. - Automated code formatting with clang-format. This tool is widely available and easy to integrate into many code editors, and it also can be used from the command line. It cuts time spent on adhering to the project's code formatting style.
- Improved control over minimum required versions for core dependencies. - Improvement in C++ usage: C-style casts have been replaced by C++ casts. C-style casts are difficult to search for. C++ casts provide compile time checking ability and express programmers' intent better, so they are safer and clearer.
- Automated code formating with clang-format. - Improvement in C++ usage: The override special identifier is now used when overriding a virtual function. This helps the compiler to check for type changes in the base class, making the detection of errors easier.
- Application of the coding style guide in several source files, improving readability. - Improvement in C++ usage: A number of unused includes have been removed. Order of includes set to: local (in-source) headers, then library headers, then system headers. This helps to detect missing includes.
- The software builds with C++11, C++14 and C++17 standards. - Improvement in C++ usage: Enhanced const correctness. Misuses of those variables are detected by the compiler.
- Setup of a Continuous Integration system that checks building in a wide range of Linux distributions.
### Improvements in Portability: ### Improvements in Portability:
- The <ctime> library has been replaced by the more modern and portable <chrono>. - Several CMake scripts improvements, more verbose outputs in case of errors. Building configuration has been documented in https://gnss-sdr.org/docs/tutorials/configuration-options-building-time/
- The <stdio.h> library has been replaced by the more modern and portable <fstream> for file handling. - Improved SDK for cross-compilation in embedded devices. Documented in https://gnss-sdr.org/docs/tutorials/cross-compiling/
- C++ libraries preferred over C libraries (e.g., <cctype> instead of <type.h>). - Improved control over minimum required versions for core dependencies.
- A number of unused includes have been removed. - The software builds with C++11, C++14 and C++17 standards.
- The software can now be built using GCC or LLVM/Clang compilers on GNU/Linux. - The software can now be built using GCC >= 4.7.2 or LLVM/Clang >= 3.4.0 compilers on GNU/Linux, and with Clang/AppleClang on MacOS.
- The Ninja build system can be used in replacement of make. - The Ninja build system can be used in replacement of make.
- The volk_gnsssdr library can be built using Python 2.7 or Python 3.6. - The volk_gnsssdr library can be built using Python 2.7 or Python 3.6.
- Several CMake scripts improvements. - The volk_gnsssdr library is now ready for AArch64 NEON instructions.
- BLAS and LAPACK libraries are mandatory on ARM devices. - Ready for GNU Radio 3.8 C++ API (as per current next branch of GNU Radio upstream repository).
- Improved detection of required and optional dependencies in many GNU/Linux distributions and processor architectures.
- Improvement in C++ usage: The <ctime> library has been replaced by the more modern and portable <chrono>.
- Improvement in C++ usage: The <stdio.h> library has been replaced by the more modern and portable <fstream> for file handling.
- Improvement in C++ usage: C++ libraries preferred over C libraries (e.g., <cctype> instead of <ctype.h>, <cmath> instead of <math.h>).
- Fixes required by Debian packaging.
- Fixes required by Macports packaging.
- A downside in portability: BLAS and LAPACK libraries are now required even in ARM devices.
- A downside in portability: the matio library >= 1.5.3 is a new required dependency. If not found, it is downloaded and built automatically at building time, but this requires libtool, automake and hdf5 already installed in the system.
### Improvements in Reliability: ### Improvements in Reliability:
- Introduced 3 new Input Filter implementations for pulsed and narrowband interference mitigation: `Pulse_Blanking_Filter`, `Notch_Filter` and `Notch_Filter_Lite`. - Introduced 3 new Input Filter implementations for pulsed and narrowband interference mitigation: `Pulse_Blanking_Filter`, `Notch_Filter` and `Notch_Filter_Lite`. Documented in https://gnss-sdr.org/docs/sp-blocks/input-filter/
- Enhanced const correctness. - Improved flow graph stabiliy.
- rand() function replaced by <random> library. - Introduction of high-integrity C++ practices into the source code and included in the coding style guide. See https://gnss-sdr.org/coding-style/
- strlen and strncpy have been replaced by safer C++ counterparts.
- Fixed a number of defects detected by Coverity Scan. - Fixed a number of defects detected by Coverity Scan.
- Some destructors have been fixed, avoiding a segmentation fault when exiting the program. - Improvement in C++ usage: rand() function replaced by <random> library.
- Introduction of high-integrity C++ practices into the coding style guide. - Improvement in C++ usage: strlen and strncpy have been replaced by safer C++ counterparts.
- Website switched from http to https. Links in source code switched when available. - Improvement in C++ usage: Some destructors have been fixed, avoiding segmentation faults when exiting the program.
- Website switched from http to https. Links in the source tree switched when available.
### Improvements in Reproducibility: ### Improvements in Reproducibility:
- Setup of a Continuous Reproducibility system at GitLab for the automatic reproduction of experiments. The concept was introduced in https://ieeexplore.ieee.org/document/8331069/ - Setup of a Continuous Reproducibility system at GitLab for the automatic reproduction of experiments. The concept was introduced in https://ieeexplore.ieee.org/document/8331069/ Example added in the src/utils/reproducibility/ieee-access18/ folder.
- Fixes of Lintian warnings related to build reproducibility. - Fixes of Lintian warnings related to build reproducibility.
### Improvements in Scalability: ### Improvements in Scalability:
- Improvements in multi-system, multi-band receiver configurations. The receiver now accepts any number of channels in the three available bands. - Improvements in multi-system, multi-band receiver configurations. The receiver now accepts any number of channels and systems in the three available bands.
- All possible combinations of signals and integration times are now accepted by the Observables block.
### Improvements in Testability: ### Improvements in Testability:
- Several Unit Tests added. - Several Unit Tests added. Documentation of testing concepts and available tests at https://gnss-sdr.org/docs/tutorials/testing-software-receiver/
- Receiver channels can now be fixed to a given satellite. - Receiver channels can now be fixed to a given satellite.
- Improved CTest support in volk_gnsssdr. - Improved CTest support in volk_gnsssdr.
### Improvements in Usability: ### Improvements in Usability:
- All Observables block implementations have been collapsed in a universal implementation for all kinds of GNSS signals, making it easier to configure. - All Observables block implementations have been merged into a single implementation for all kinds of GNSS signals, making it easier to configure.
- All PVT block implementations have been collapsed in a universal implementation for all kinds of GNSS signals, making it easier to configure. - All PVT block implementations have been merged into a single implementation for all kinds of GNSS signals, making it easier to configure.
- Misleading parameter name GNSS-SDR.internal_fs_hz has been replaced by GNSS-SDR.internal_fs_sps. The old parameter name is still read. If found, a warning is provided to the user. - Misleading parameter name GNSS-SDR.internal_fs_hz has been replaced by GNSS-SDR.internal_fs_sps. The old parameter name is still read. If found, a warning is provided to the user.
- Updated and improved documentation. - Updated and improved documentation of processing blocks at https://gnss-sdr.org/docs/sp-blocks/
- Improved documentation of required dependency packages in several GNU/Linux distributions.
- Parameter names with the same role have been harmonized within different block implementations.
- Added a chnagelog, a code of conduct, a contributing guide and a pull-request template in the source tree.
- Added colors to the commandline user interface. - Added colors to the commandline user interface.
- Updated manfiles.
See the definitions of concepts and metrics at https://gnss-sdr.org/design-forces/ See the definitions of concepts and metrics at https://gnss-sdr.org/design-forces/