Releases: SGL-UT/GPSTk
GPSTk v2.12
GPSTk 2.12 Release Notes
Updates since v2.11
General Codebase Changes
- File Deprecation and Ext Cleanup - Lists can be found at the end of this doc
- Updated license and copyright headers on all relevant files.
Build System and Test Suite
- Added a -n flag to build.sh to allow address sanitizer to be turned off for debug builds. REASON: Address sanitizer breaks some project builds that have the gpstk as a dependency. Some people may not want the performance hit for every debug build.
Gitlab CI
- Changes to .gitlab-ci.yml to remove some coverage metrics
- Updated debian package build stage to only happen on master branch.
- Updating the YML file for Gitlab CI builds to add Solaris, OSX, and Windows in as Nightly-only builds. This means that a normal continuous gitlab ci pipeline will only build for debian and redhat. REASON: While Windows, OSX, and Solaris are important and supported platforms, they consistently provide issues when ran in a continuous pipeline and are of less priority than Redhat and Debian. Currently, CDash was used for nightly builds, but migrating everything to a single gitlab platform is best.
- Added RPM generation to CI, to trigger with master builds as does the debian package generation. Packages are saved as artifacts.
Library Changes
- Updated SVNumsXRef for new SV. Also added end date to SVN 36/PRN 4 and added start date for SVN 74/PRN 4
Added "III" Block type. - Added handling for GPS CNAV/CNAV-2 joint nav data such as reduced almanac and data correction packets. REASON: Need to support these messages in the data format. ALSO: This change is coupled with sgltk branch issue_240_CNAV2. Once this is merged the sgltk master build will be broken until that branch is also merged.
- Set the return value in OrbAlmFactory convert default case of no match. REASON: Allows checking the return value to determine if and OrbAlm instance was successfully created from PackedNavBits.
- Updated GNSSEph classes related to LNAV to handle LNAV fit intervals correctly. REASON: launch of GPS III SV 01 revealed misunderstandings in how GPS fit intervals work. Previous code worked fine before GPS III. GPS III is ICD-compliant, but takes advantage of options that previous SVs did not.
- Initialized Rinex3NavHeader class variables to allow comparisons to work better with optional fields.
- Added L1C RINEX character codes to ObsID data structure as ObsIDInitializer did not provide character code translation for the special case of L1 carrier and CD / CP / CD+CP ranging code. REASON: Writing L1C data to a RINEX file was not possible.
- Needed additional interfaces to query the OrbSysStore in order to:
- Know which NavIDs are in a store.
- Know which GNSS systems are in a store.
- Obtain a list<const OrbDataSys*> of all messages in the store that correspond to a given NavID/UID, regardless of the SV that transmitted them.
- REASON: Existing interfaces returned a list of objects for a given SV or a given time range. Downstream applications needed a list of all objects of a given data type (e.g., UTC corrections) in the store. The interface was extended with a new method, but all existing interfaces were maintained unchanged.
- Provided update to correctly differentiate between BeiDou D1 and D2 data, as per Issue 374. REASON: Can't do this downstream as the differentiation is detected by data rates and lost by the time we reach VUB files except for the NavID in the header. Also made OrbElem.svXvt() virtual to allow downstream override for unusual satellite systems.
- Fixed OrbitEphStore::findNearOrbitEph( ) to match expected selection behavior. Also fixed such that it will only return nav data sets that have a fit interval covering the requested time.
- Trivial updates to Geomatics library to further PRSolve development.
- Made getInterpolationOrder const
- Updated core/lib/Math/Matrix/MatrixFunctors.hpp to allow 1x1 matrix, also removed unused variable
- Add toggle bool to CommandLine.*, also count()
- Geomatics Updates:
- SRI: make retriangularize its own function, add a few convenience routines, and add to doc
- SRIMatrix: Better Cholesky, add LDL and UDU
- SatPass: add a single frequency version of smooth()
- KalmanFilter: upgrade test
- StatsFilter: split into two, and add a better first difference filter FDiffFilter, upgrade test
- RINEX obs file loader - Add a class which is used to "load" i.e. read and summarize content, of a Rinex obs file (2 or 3). This is used to 'pre-read' the file to prevent stumbling because of incorrect/missing header information. Add tests of RINEX 3.03, 2.11 and 2.10 obs files. REASON: Used in PPP and differential postitioning
- Orb Sys Store Updates - added bool function hasSignal to find out which signal the sv is using
- Updating SVNumXRef. PRN 4 moved from SVN 74 to SVN 36.
- Added generalized ability to find UTCOffset
New Library Classes
- ext/lib/GNSSEph/CNavMidiAlm.*
- ext/lib/GNSSEph/CNavReducedAlm.*
- ext/lib/GNSSEph/DiffCorrBase.*
- ext/lib/GNSSEph/DiffCorrClk.*
- ext/lib/GNSSEph/DiffCorrEph.*
- ext/lib/Geomatics/MostCommonValue.hpp
- ext/lib/Geomatics/Rinex3ObsFileLoader.cpp
- ext/lib/Geomatics/WNJfilter.hpp
Application Changes
- Added simpler interface to RAIMCompute, RAIMComputeSimple, by deleting the two GPSTk classes/types that aren't exposed to Python via swig: the Matrix class and a vector of SatID::SatelliteSystem enums. RAIMComputeSimple simply declares instances of both types and then calls RAIMCompute with everything. PRSolution builds both objects if they aren't supplied, so the code already could handle not being supplied this information. REASON: Per MDH Tools Tech Jam on 07 Jan 2019, this is the agreed temporary solution to making PRSolution accessible to PySGLTk. The simpler interface may be deprecated upon swig modification, if deemed appropriate.
-
- Changed all of the Rinex usage to Rinex3 within mergeRinNav.cpp & 2. Changed the .exp files used by mergeRinNav.cpp to expect one less significant figure in the header. REASON: Changes for (1) is needed so that the result would be written in scientific notation instead of D notation as per requested in MSN-5790. Changes for (2) is needed because increasing the amount of significant figures that Rinex3 headers writes out ensures that the new version of mergeRinNav passes its application tests. However, it causes issues in other tests. Changing to the expected files allows mergeRinNav to pass its test and other tests to pass. Also, the creation of the new mergeRinNav_1.exp and mergeRinNav_2.exp use the same input.
- Refactored rstats.cpp and added tests. REASON: rstats evolved from a small tool to compute robust stats into a much larger toolset, a mess.
- dfix is a new implementation of cycleslip detection and fixing, with tests.
Updated Applications
- core/apps/positioning/PRSolve.cpp
- core/apps/mergetools/mergeRinNav.cpp
- ext/apps/geomatics/robust/rstats.cpp
SWIG Bindings & Python
- A hard-coded value in FileIO.i is changed so that non-GPS RINEX data can be written with the RINEX3 classes
- Disabled rpath for swig python binaries by forcing CMake to not include RPATH arguments when building SWIG binaries. REASON: This integrates better with our isolated python environments. (e.g. conda)
- Add sdist python target for standalone installation by: 1) Updating the CMake files to produce an "wheel" package for python installation that contains the libgstk.so in addition to the swig'ed library and 2) Modified the init.py script to load the local libgpstk.so before importing _gpstk, bypassing the ld library search. REASON: This should allows preparing a distributable tar ball that can be installed into a python environment, that contains a pre-compiled libgpstk.so library.
- Python CI changes & package build fix - 1) Added an additional check to ensure python is installed correctly after install step completes. 2) Changed the CMake python installation command to use --root instead of --prefix. This is more friendly to the debian package builder, and doesn't appear to break the conda build/install process. 3) Made gpstk import warnings more verbose.
- Added CMAKE flag to install python differently when preparing a package. REASON: Using the --root argument works for a debian package but causes problems with a "normal" installation.
Test Changes
New/Added Tests
- ext/tests/GNSSEph/CNavPackets_T.cpp
- core/tests/GNSSEph/OrbElemLNav_valid_T.cpp
- ext/tests/GNSSEph/OrbSysStore_T.cpp
- core/tests/FileDirProc/FileHunter_T.cpp
- ext/apps/geomatics/RinexObsLoader_test/Rinex3ObsLoader_T.cpp
- ext/apps/geomatics/rstats_test/SDexam01.txt
- ext/apps/geomatics/rstats_test/rstats_T.py
Truth Data Changes
Updated Truth Data
- data/outputs/RinSum_obspath_v211.exp
- data/outputs/RinSum_v210_osn3.exp
- data/outputs/RinSum_v211_cags.exp
- data/outputs/RinSum_v211_kerg.exp
- data/outputs/RinSum_v211_nklg.exp
- data/outputs/RinSum_v302_FAA1.exp
- data/PRSolve_Required.exp
Modified Truth Data
- data/mergeRinNav_1.exp
- data/mergeRinNav_2.exp
- data/test_output_OrbDataSys_T_GPS_CNAV.exp
- data/test_output_OrbDataSys_T_GPS_LNAV.exp
New Data Files
- data/Rinex3ObsLoader210.obs
- data/Rinex3ObsLoader211.obs
- data/Rinex3ObsLoader303.obs
- data/Rinex3ObsLoader_R210.obs
- data/Rinex3ObsLoader_R211.obs
- data/Rinex3ObsLoader_R303.obs
- data/test_rstats.exp
- ext/apps/geomatics/rstats_test/testfft.data
- data/test_dfix_job4131.ed.obs
- data/test_dfix_job4131.ed.obs
- data/test_dfix_job4131.exp
- data/test_dfix_karr.exp
- data/test_dfix_karr0880.ed.10o
- data/test_dfix_tower.exp
- data/test_dfix_tower239.ed.15o
- data/test_dfix_txau.exp
- data/test_dfix_txau047.ed.12o
...
GPSTk v2.11.2
GPSTk 2.11.2 Release Notes
Updates since v2.11.1
Gitlab CI
- Updating the YML file for Gitlab CI builds to add Solaris, OSX, and Windows in as Nightly-only builds. This means that a normal continuous gitlab ci pipeline will only build for debian and redhat. REASON: While Windows, OSX, and Solaris are important and supported platforms, they consistently provide issues when ran in a continuous pipeline and are of less priority than Redhat and Debian. Currently, CDash was used for nightly builds, but migrating everything to a single gitlab platform is best.
Library Changes
- Initialized Rinex3NavHeader class variables to allow comparisons to work better with optional fields.
- Added L1C RINEX character codes to ObsID data structure as ObsIDInitializer did not provide character code translation for the special case of L1 carrier and CD / CP / CD+CP ranging code. REASON: Writing L1C data to a RINEX file was not possible.
- Needed additional interfaces to query the OrbSysStore in order to:
- Know which NavIDs are in a store.
- Know which GNSS systems are in a store.
- Obtain a list<const OrbDataSys*> of all messages in the store that correspond to a given NavID/UID, regardless of the SV that transmitted them.
- REASON: Existing interfaces returned a list of objects for a given SV or a given time range. Downstream applications needed a list of all objects of a given data type (e.g., UTC corrections) in the store. The interface was extended with a new method, but all existing interfaces were maintained unchanged.
- Provided update to correctly differentiate between BeiDou D1 and D2 data, as per Issue 374. REASON: Can't do this downstream as the differentiation is detected by data rates and lost by the time we reach VUB files except for the NavID in the header. Also made OrbElem.svXvt() virtual to allow downstream override for unusual satellite systems.
Application Changes
-
- Changed all of the Rinex usage to Rinex3 within mergeRinNav.cpp & 2. Changed the .exp files used by mergeRinNav.cpp to expect one less significant figure in the header. REASON: Changes for (1) is needed so that the result would be written in scientific notation instead of D notation as per requested in MSN-5790. Changes for (2) is needed because increasing the amount of significant figures that Rinex3 headers writes out ensures that the new version of mergeRinNav passes its application tests. However, it causes issues in other tests. Changing to the expected files allows mergeRinNav to pass its test and other tests to pass. Also, the creation of the new mergeRinNav_1.exp and mergeRinNav_2.exp use the same input.
Updated Applications
- core/apps/mergetools/mergeRinNav.cpp
SWIG Bindings & Python
- A hard-coded value in FileIO.i is changed so that non-GPS RINEX data can be written with the RINEX3 classes
- Disabled rpath for swig python binaries by forcing CMake to not include RPATH arguments when building SWIG binaries. REASON: This integrates better with our isolated python environments. (e.g. conda)
Test Changes
New/Added Tests
- ext/tests/GNSSEph/OrbSysStore_T.cpp
- core/tests/FileDirProc/FileHunter_T.cpp
Truth Data Changes
Modified Truth Data
- data/mergeRinNav_1.exp
- data/mergeRinNav_2.exp
- data/test_output_OrbDataSys_T_GPS_CNAV.exp
- data/test_output_OrbDataSys_T_GPS_LNAV.exp
Fixes since v2.11.1
- Modified the swig build to include the gpstk version as a top-level variable in the python module as installed tools could not determine version.
- Fixed FileHunter::find() time system bug and added relevant unit tests.
- Fixed Issue 375 (erroneously treating files as directories) and mostly addressed Issue 229 (added progressive time filtering for better performance). Also performed some general code cleanup and improved exception handling and doxygen.
GPSTk v2.11.1
GPSTk 2.11.1 Release Notes
Updates since v2.11
Gitlab CI
- Changes to .gitlab-ci.yml to remove some coverage metrics
- Updated debian package build stage to only happen on master branch.
Ext -> Deprecate Migration
- Depricated code that was in ext and causing build failures in debian stretch.
- changed auto_ptr to unique_ptr
- added -std=c++11 flag to linux build (sorry solaris)
- replaced google-mock with googletest in SGL_BASE in fai for stretch
- made google mock look in /usr/src/googletest/googlemock for gmock
- added /deprecated dir for deprecated code
- deprecated several libs/apps in ext that were causing some failures due to c++ deprecations.
- depricated/apps/multipath/CMakeLists.txt
- depricated/apps/multipath/DenseBinnedStats.hpp
- depricated/apps/multipath/ObsArray.*
- depricated/apps/multipath/SparseBinnedStats.hpp
- depricated/apps/multipath/ValarrayUtils.hpp
- depricated/apps/multipath/mpsim.cpp
- depricated/apps/multipath/mpsolve.cpp
- depricated/apps/multipath/testObsArray.cpp
- depricated/apps/multipath/testSparseBinnedStats.cpp
- depricated/apps/multipath/testValarrayUtils.cpp
- depricated/apps/receiver/AshtechMessage.*
- depricated/apps/receiver/CMakeLists.txt
- depricated/apps/receiver/ScreenControl.*
- depricated/apps/receiver/TODO.txt
- depricated/apps/receiver/getUnixSerialInfo.cpp
- depricated/apps/receiver/rinex.nav.template
- depricated/apps/receiver/rinex.obs.template
- depricated/apps/receiver/rtAshtech.cpp
- depricated/apps/swrx/CACodeGenerator.hpp
- depricated/apps/swrx/CCReplica.*
- depricated/apps/swrx/CMakeLists.txt
- depricated/apps/swrx/CodeGenerator.hpp
- depricated/apps/swrx/ConstLinearRecurrentSequence.*
- depricated/apps/swrx/EMLTracker.*
- depricated/apps/swrx/IQStream.*
- depricated/apps/swrx/NAVCodeGenerator.hpp
- depricated/apps/swrx/NavFramer.*
- depricated/apps/swrx/P0CodeGenerator.*
- depricated/apps/swrx/RX.cpp
- depricated/apps/swrx/SVSource.hpp
- depricated/apps/swrx/SimpleCorrelator.hpp
- depricated/apps/swrx/acquire.cpp
- depricated/apps/swrx/codeDump.cpp
- depricated/apps/swrx/complex_math.h
- depricated/apps/swrx/corltr.cpp
- depricated/apps/swrx/gpsSim.cpp
- depricated/apps/swrx/hilbert.cpp
- depricated/apps/swrx/iqdump.cpp
- depricated/apps/swrx/normal.*
- depricated/apps/swrx/plot
- depricated/apps/swrx/position.cpp
- depricated/apps/swrx/simpleNav.cpp
- depricated/apps/swrx/tracker.cpp
- depricated/apps/swrx/trackerMT.cpp
- depricated/apps/time/CMakeLists.txt
- depricated/apps/time/calgps_svg.cpp
- depricated/apps/time/generateCalendars.bash
- depricated/examples/example10.cpp
- depricated/examples/example11.cpp
- depricated/examples/example13.cpp
- depricated/examples/example14.cpp
- depricated/examples/example16.cpp
- depricated/examples/example17.cpp
- depricated/examples/example18.cpp
- depricated/examples/example5.cpp
- depricated/examples/example6.cpp
- depricated/examples/example7.cpp
- depricated/examples/example8.cpp
- depricated/examples/example9.cpp
- depricated/lib/CNAV2EphClk.*
- depricated/lib/CNAVClock.*
- depricated/lib/CNAVEphemeris.*
- depricated/lib/Math/RungeKutta4.*
- depricated/lib/Math/SimpleKalmanFilter.*
- depricated/lib/Procframe/Antenna.*
- depricated/lib/Procframe/AntexReader.*
- depricated/lib/Procframe/BasicModel.*
- depricated/lib/Procframe/CheckPRData.hpp
- depricated/lib/Procframe/CodeKalmanSolver.*
- depricated/lib/Procframe/CodeSmoother.*
- depricated/lib/Procframe/ComputeCombination.*
- depricated/lib/Procframe/ComputeDOP.*
- depricated/lib/Procframe/ComputeIURAWeights.*
- depricated/lib/Procframe/ComputeIonoModel.*
- depricated/lib/Procframe/ComputeLC.*
- depricated/lib/Procframe/ComputeLI.*
- depricated/lib/Procframe/ComputeLdelta.*
- depricated/lib/Procframe/ComputeLinear.*
- depricated/lib/Procframe/ComputeMOPSWeights.*
- depricated/lib/Procframe/ComputeMelbourneWubbena.*
- depricated/lib/Procframe/ComputePC.*
- depricated/lib/Procframe/ComputePI.*
- depricated/lib/Procframe/ComputePdelta.*
- depricated/lib/Procframe/ComputeSatPCenter.*
- depricated/lib/Procframe/ComputeSimpleWeights.*
- depricated/lib/Procframe/ComputeTropModel.*
- depricated/lib/Procframe/ComputeWindUp.*
- depricated/lib/Procframe/ConfData.hpp
- depricated/lib/Procframe/ConfDataItem.hpp
- depricated/lib/Procframe/ConfDataSection.hpp
- depricated/lib/Procframe/ConfDataStructures.hpp
- depricated/lib/Procframe/ConstraintSystem.*
- depricated/lib/Procframe/ConvertC1ToP1.*
- depricated/lib/Procframe/CorrectCodeBiases.*
- depricated/lib/Procframe/CorrectObservables.*
- depricated/lib/Procframe/DataHeaders.*
- depricated/lib/Procframe/DataStructures.*
- depricated/lib/Procframe/Decimate.*
- depricated/lib/Procframe/DeltaOp.*
- depricated/lib/Procframe/Differentiator.*
- depricated/lib/Procframe/DoubleOp.*
- depricated/lib/Procframe/Dumper.*
- depricated/lib/Procframe/EclipsedSatFilter.*
- depricated/lib/Procframe/Equation.*
- depricated/lib/Procframe/EquationSystem.*
- depricated/lib/Procframe/ExtractCombinationData.*
- depricated/lib/Procframe/ExtractData.*
- depricated/lib/Procframe/ExtractLC.hpp
- depricated/lib/Procframe/ExtractPC.hpp
- depricated/lib/Procframe/GDSUtils.hpp
- depricated/lib/Procframe/GeneralConstraint.*
- depricated/lib/Procframe/GeneralEquations.*
- depricated/lib/Procframe/GravitationalDelay.*
- depricated/lib/Procframe/IonexModel.*
- depricated/lib/Procframe/Keeper.*
- depricated/lib/Procframe/LICSDetector.*
- depricated/lib/Procframe/LICSDetector2.*
- depricated/lib/Procframe/LinearCombinations.*
- depricated/lib/Procframe/MOPSWeight.*
- depricated/lib/Procframe/MWCSDetector.*
- depricated/lib/Procframe/MemoryUtils.hpp
- depricated/lib/Procframe/ModelObs.*
- depricated/lib/Procframe/ModelObsFixedStation.*
- depricated/lib/Procframe/ModeledPR.*
- depricated/lib/Procframe/ModeledPseudorangeBase.hpp
- depricated/lib/Procframe/ModeledReferencePR.*
- depricated/lib/Procframe/NablaOp.*
- depricated/lib/Procframe/NetworkObsStreams.*
- depricated/lib/Procframe/OneFreqCSDetector.*
- depricated/lib/Procframe/PCSmoother.*
- depricated/lib/Procframe/PhaseCodeAlignment.*
- depricated/lib/Procframe/ProblemSatFilter.*
- depricated/lib/Procframe/ProcessingClass.hpp
- depricated/lib/Procframe/ProcessingList.*
- depricated/lib/Procframe/ProcessingVector.*
- depricated/lib/Procframe/Pruner.*
- depricated/lib/Procframe/RequireObservables.*
- depricated/lib/Procframe/SatArcMarker.*
- depricated/lib/Procframe/SimpleFilter.*
- depricated/lib/Procframe/SimpleIURAWeight.*
- depricated/lib/Procframe/SolverBase.hpp
- depricated/lib/Procframe/SolverGeneral.*
- depricated/lib/Procframe/SolverLMS.*
- depricated/lib/Procframe/SolverPPP.*
- depricated/lib/Procframe/SolverPPPFB.*
- depricated/lib/Procframe/SolverWMS.*
- depricated/lib/Procframe/SourceID.*
- depricated/lib/Procframe/StochasticModel.*
- depricated/lib/Procframe/Synchronize.*
- depricated/lib/Procframe/TypeID.*
- depricated/lib/Procframe/Variable.*
- depricated/lib/Procframe/WeightBase.hpp
- depricated/lib/Procframe/XYZ2NED.*
- depricated/lib/Procframe/XYZ2NEU.*
- depricated/lib/SVExclusionList.*
- depricated/lib/Vdraw/Adler32.*
- depricated/lib/Vdraw/Base64Encoder.*
- depricated/lib/Vdraw/BasicShape.hpp
- depricated/lib/Vdraw/Bitmap.*
- depricated/lib/Vdraw/BorderLayout.*
- depricated/lib/Vdraw/CRC32.*
- depricated/lib/Vdraw/Canvas.*
- depricated/lib/Vdraw/Circle.hpp
- depricated/lib/Vdraw/Color.*
- depricated/lib/Vdraw/ColorMap.*
- depricated/lib/Vdraw/Comment.*
- depricated/lib/Vdraw/EPSImage.*
- depricated/lib/Vdraw/Fillable.hpp
- depricated/lib/Vdraw/Frame.*
- depricated/lib/Vdraw/GraphicsConstants.*
- depricated/lib/Vdraw/GridLayout.*
- depricated/lib/Vdraw/HLayout.*
- depricated/lib/Vdraw/Helper.hpp
- depricated/lib/Vdraw/InterpolatedColorMap.*
- depricated/lib/Vdraw/Layout.hpp
- depricated/lib/Vdraw/Line.*
- depricated/lib/Vdraw/Markable.hpp
- depricated/lib/Vdraw/Marker.*
- depricated/lib/Vdraw/PNG.*
- depricated/lib/Vdraw/PSImage.*
- depricated/lib/Vdraw/PSImageBase.*
- depricated/lib/Vdraw/Palette.*
- depricated/lib/Vdraw/Path.*
- depricated/lib/Vdraw/Polygon.hpp
- depricated/lib/Vdraw/Rectangle.*
- depricated/lib/Vdraw/SVGImage.*
- depricated/lib/Vdraw/StrokeStyle.*
- depricated/lib/Vdraw/Text.*
- depricated/lib/Vdraw/TextStyle.*
- depricated/lib/Vdraw/VDrawException.hpp
- depricated/lib/Vdraw/VGImage.*
- depricated/lib/Vdraw/VGState.hpp
- depricated/lib/Vdraw/VLayout.*
- depricated/lib/Vdraw/ViewerManager.*
- depricated/lib/Vplot/Axis.*
- depricated/lib/Vplot/AxisStyle.hpp
- depricated/lib/Vplot/LinePlot.*
- depricated/lib/Vplot/Plot.*
- depricated/lib/Vplot/ScatterPlot.*
- depricated/lib/Vplot/SeriesList.*
- depricated/lib/Vplot/Splitter.*
- depricated/lib/Vplot/SurfacePlot.*
- depricated/lib/Vplot/plottypes.hpp
- depricated/lib/Xv.hpp
- depricated/lib/compass_constants.hpp
- depricated/lib/geometry.hpp
- depricated/tests/multipath/CMakeLists.txt
- depricated/tests/multipath/testmpsolve.cmake
- depricated/tests/oldtests/AnotherFileFilterTest.cpp
- depricated/tests/oldtests/EphComp.cpp
- depricated/tests/oldtests/EphCompWin.gp
- depricated/tests/oldtests/FileSpecTest.cpp
- depricated/tests/oldtests/Jamfile
- depricated/tests/oldtests/Makefile.am
- depricated/tests/oldtests/MinSfTest.cpp
- depricated/tests/oldtests/Rinex_dl.pl
- depricated/tests/oldtests/RungeKuttaTest.cpp
- depricated/tests/oldtests/Xbegweek.cpp
- depricated/tests/oldtests/Xendweek.cpp
- depricated/tests/oldtests/configfile.txt
- depricated/tests/oldtests/configfile_readme.txt
- depr...
GPSTk v2.11
GPSTk 2.11 Release Notes
Updates since v2.10
Build System and Test Suite
- Remove inadequately explained lib directory override in CMakeLists.txt
- Added line to GPSTKConfig.cmake to allow dependent projects to find header files regardless of implicit or explicit declaration.
- Test coverage was added on the core-build using gcov and gcovr
- Support for GootleTest/GoogleMock added.
- Updated Debian configuration files for complete debian package building capability
- Travis-CI yaml script added for external Github CI autobuilds.
- Official deb packages are now build for master branch builds and available as artifacts.
Gitlab CI
- Changes to .gitlab-ci.yml to fix SGLTk downstream portion of the GPSTk Gitlab CI/CD pipeline.
- Test coverage was added on the core-build using gcov and gcovr
- Style compliance checking was added (as a new CI-Pipeline stage) using cpplint, but is not enforced.
Library Changes
- SunEarthSatGeometry: Added OrbitNormalAttitude function back in, which was originally added in commit 78e29c3, but accidentally deleted in commit 148a018.
- Added test in core/lib/Utilities/StringUtils:change() that returns immediately if either input string is empty. REASON: Empty input causes no change, and so the loop (numChanges = max unsigned int) is essentially infinite.
- Added routines to core/lib/Utilities/stl_helpers.hpp that find the intersection of two vectors and the 'non-intersection'. NOTE: While there are STL routines that do this, they require sorting the vectors first, which is not good for my application (at least).
- Make all geomatics tests in ext/tests/geomatics/CMakeLists.txt have the same label.
- In core/lib/Geomatics/Namelist.* - Added operator+=(Namelist) for convenience. Found that randomize() does not do anything on Linux Debian (?!) so just replaced std:: call with simple code. Tiny improvements to the format of matrix/vector output.
- Added debiasing before computing stats in core/lib/PosSol/PRSolution.hpp. REASON: Stats on the full PRS solution, which is an Earth-centered Earth-fixed position[3], often suffers numerically b/c the numbers are so large. This change simply debiases the numbers by the first value, so stats, in particular standard deviation, do not have noticeable numerical error.
- Reverted core/lib/FileHandling/Rinex3NavData.cpp to output the xmitTime in the frame of the toe week (derived output week). REASON: Originally, stored xmitTime in the frame of the Rinex3NavData::weeknum which was the week of sf1 HOWtime. output week was derived from weeknum and the difference between xmitTime and toe. When the review was requested, stored xmitTime in the frame of Rinex3NavData::weeknum which was changed to be the toe week. I checked both the RINEX 2.11 (section 6.8) and 3.03 (section 6.13) specs and they agree with the change.
- Added code to core/lib/GNSSEph/RationalizeRinex (used by core/apps/Rinextools/scanBrdcFile) to detect RINEX nav data sets tagged with the wrong SV PRN ID and to not copy such data sets to the output file. REASON: Latest IGS-generated merged RINEX nav (brdc) files contain data sets that are tagged with the incorrect PRN ID.
- NavFilter updates/enhancements - Add a nav filter for forced ordering of data. Add methods for determining filter depth for buffer size computation. ITT receivers in particular do not always output nav subframes in time order or on time or with correct time stamps.
- Added ObservationType for demodulator status codes, which will support changes to tools in SGLTk made in a future merge
- ORD Refactor with CI Pipeline Changes - ord.cpp was exposed in the SWIG interface. Unit tests for coverage were written using GoogleTest/GoogleMock. Test coverage was measured on the core-build using gcov and gcovr. REASON: The ORD routines was considered general enough to add to GPSTk. The project driving it is the HRTR Web Development effort.
- Updated references for 54/18 and 34/18 and updated PRN 4 gap
- Added LNAVOrderFilter for forcing time-order of legacy nav subframe data. REASON: When processing data from multiple receivers, the data may not be sent by the receivers at the same time. This filter makes a "best effort" to enforce time ordering across multiple receivers going into the filter.
- Added sp3d file format support. REASON: We care about sp3d because the IGS MGEX precise orbit files moved from sp3c to sp3d in fall 2017. Therefore, to support various multi-GNSS data experiments, we need to be able to access these files.
- Adding Ellipsoid model for Galileo. REASON: Required for processing Galileo orbits
- Change documentation of ObsID phase units. REASON: Most of the defined file formats and associated readers did not respect the prior documentation for phase observations. This changes the documentation to be consistent with the usage in (at least) MDP, NovAtel, RINEX, and MDH.
- Added ability to use getXvt() calls on unhealthy SVs in XvtStore objects returned by EphReader. Changes include: Migrated onlyHealthy, getOnlyHealthyFlag(), and setOnlyHealthyFlag() from OrbitEphStore to XvtStore; Made sure that default behavior for OrbitEphStore and OrbElemStore was retained; Changed implementation of health status in GloEphemerisStore. REASON: The changes were made since there is a need to be able to call getXvt() on the unhealthy SVs in XvtStore objects returned by EphReader.
- Adding/Clarifying support for Galileo E5a/E5b in ObsID. Adding Galileo F/NAV and I/NAV to NavID. REASON: Need these signals represented in the signal processing infrastructure. Part of Issue 341 - Update Galileo Signal Support.
- Ensured full initialization of Stats objects and fixed a memory leak in OrbitEph::timeDisplay. REASON: This change ensures full initialization of Stats objects to eliminate undefined behavior. Also, this fix contains a fix for a small memory leak in OrbitEph::timeDisplay.
- ORD Calculation Fixes - addressed defects in the new ORD Calculation discovered by Jason Vestuto in his testing. REASON: The calculation results were incorrect.
- Added a base class for help-like command-line options with special processing in CommandOptionParser and BasicFramework. REASON: Too many applications in the MSN have needed this, and this is a better solution than trying to figure out if these help-like options were used after all the normal command-line option parsing.
- Restored Missing GPSWeekZcount Math. REASON: When the time code was migrated to CommonTime/TimeTag implementations, several extremely useful methods were discarded from the GPSWeekZcount class.
- Relaxed fit interval and health restrictions on ext/GNSSEph/OrbAlmStore. REASON: Existing code didn't address existing use cases.
- Added recognition of Galileo antenna offsets to increase capability. REASON: Several other GNSSs are already implemented. This is adding yet another GNSS in the same pattern.
- Create a simple class for applying 10-bit week rollover corrections, with room to expand for other similar capabilities
- ext/lib/FileHandling/TimeNamedFileStream.hppnow creates directories for the files it outputs. REASON: ext/apps/rfw/rfw.cpp needed handholding to do its job. Now it doesn't.
- Adding L1C to ObsID and QZSS to various places. REASON: Need L1C support for upcoming GPS III launch. QZSS already has a L1C broadcast, so it makes sense to look at that as well.
- Added method that returns a reference to PtoNMap. Used to generate csv format of the map. REASON: Want to generate a CSV form of svNumXRef, and this method is used for that.
- Added XvtStoreSatID shim class, which provides clear separation for the descendents of XvtStore that handle satellite data while avoiding any side effects for non-SatID XvtStore classes. REASON:The need for this has been apparent for a while, but the fact XvtStore is also implemented with classes other than SatID presented a problem. REASON: In several places, classes of XvtStore are used to store/retrieve satellite information. As more satellite systems are added and PRN space expands, there is a need to obtain a list of the satellites contained in a store in order to avoid having to do brute force searches over ranges of satellite systems and/or ranges of PRNs. This is already implemented in OrbElemStore (a descendent of XvtStore, but not in other parallel stores (e.g. SP3EphemerisStore).
These changes will impact the following classes, but hopefully only by adding functionality.- SP3EphemrisStore
- PositionSatStore
- TabularSatStore
- GPSEphemerisStore
- OrbElemStore
New Library Classes
- core/lib/GNSSCore/GalileoEllipsoid.hpp
- core/lib/NavFilter/CNav2SanityFilter.*
- core/lib/NavFilter/LNavOrderFilter.*
- core/lib/ORD/ord.*
- core/lib/TimeHandling/TimeCorrection.*
Application Changes
- core/apps/Rinextools/scanBrdcFile updated to detect RINEX nav data sets tagged with the wrong SV PRN ID and to not copy such data sets to the output file.
- Update core/apps/checktools/rowcheck.cpp & core/apps/checktools/rnwcheck.cpp to use newer RINEX classes for rowcheck and rnwcheck to make them RINEX3 compatible
Updated Applications
- core/apps/checktools/rnwcheck.cpp
- core/apps/checktools/rowcheck.cpp
- core/apps/Rinextools/scanBrdcFile
SWIG Bindings & Python
- Updated SWIG interface files for ORD refactor
New/Added SWIG Files
- swig/src/ord.i
Test Changes
New/Added Tests
- core/tests/AppFrame/BasicFrameworkHelp_T.cpp
- core/tests/GNSSEph/OrbElemStore_T.cpp
- core/tests/GNSSEph/SP3EphemerisStore_T.cpp
- core/tests/NavFilter/CNav2Filter_T.cpp
- core/tests/ORD/GTestExperiments.cpp
- core/tests/ORD/OrdMockClasses.hpp
- core/tests/TimeHandling/TimeCorrection_T.cpp
Modified Test files
- core/tests/AppFrame/CMakeLists.txt
- core/tests/FileHandling/SP3_T.cpp
- core/tests/GNSSEph/NavID_T.cpp...
GPSTk v2.10.7
GPSTk 2.10.7 Release Notes
Updates since v2.10.6
Gitlab/Github CI
- Travis-CI yaml script added for external Github CI autobuilds.
- Official deb packages are now build for master branch builds and available as artifacts.
Library Changes
- Adding L1C to ObsID and QZSS to various places. REASON: Need L1C support for upcoming GPS III launch. QZSS already has a L1C broadcast, so it makes sense to look at that as well.
- Added method that returns a reference to PtoNMap. Used to generate csv format of the map. REASON: Want to generate a CSV form of svNumXRef, and this method is used for that.
New Library Classes
- core/lib/NavFilter/CNav2SanityFilter.*
New/Added Tests
- core/tests/NavFilter/CNav2Filter_T.cpp
Modified Test files
- core/tests/GNSSEph/NavID_T.cpp
GPSTk v2.10.6
GPSTk 2.10.6 Release Notes
Updates since v2.10.5
*Library Changes
- ext/lib/FileHandling/TimeNamedFileStream.hppnow creates directories for the files it outputs. REASON: ext/apps/rfw/rfw.cpp needed handholding to do its job. Now it doesn't.
Fixes since v2.10.5
- Replaced ICD-GPS-211 with IS-GPS-200 in several comments
GPSTk v2.10.5
GPSTk 2.10.5 Release Notes
Updates since v2.10.4
Library Changes
- Create a simple class for applying 10-bit week rollover corrections, with room to expand for other similar capabilities
New Library Classes
- core/lib/TimeHandling/TimeCorrection.*
New Tests
- core/tests/TimeHandling/TimeCorrection_T.cpp
GPSTk v2.10.4
GPSTk 2.10.4 Release Notes
Updates since v2.10.3
Build System & Packaging Changes
- Updated Debian configuration files for complete debian package building capability
New Truth Data
- data/test_output_rinex3_clock_TestR3HeaderOutput.exp
GPSTk v2.10.3
GPSTk 2.10.3 Release Notes
Updates since v2.10.2
Library Changes
- Adding Ellipsoid model for Galileo. REASON: Required for processing Galileo orbits
- Change documentation of ObsID phase units. REASON: Most of the defined file formats and associated readers did not respect the prior documentation for phase observations. This changes the documentation to be consistent with the usage in (at least) MDP, NovAtel, RINEX, and MDH.
- Added ability to use getXvt() calls on unhealthy SVs in XvtStore objects returned by EphReader. Changes include: Migrated onlyHealthy, getOnlyHealthyFlag(), and setOnlyHealthyFlag() from OrbitEphStore to XvtStore; Made sure that default behavior for OrbitEphStore and OrbElemStore was retained; Changed implementation of health status in GloEphemerisStore. REASON: The changes were made since there is a need to be able to call getXvt() on the unhealthy SVs in XvtStore objects returned by EphReader.
- Adding/Clarifying support for Galileo E5a/E5b in ObsID. Adding Galileo F/NAV and I/NAV to NavID. REASON: Need these signals represented in the signal processing infrastructure. Part of Issue 341 - Update Galileo Signal Support.
- Ensured full initialization of Stats objects and fixed a memory leak in OrbitEph::timeDisplay. REASON: This change ensures full initialization of Stats objects to eliminate undefined behavior. Also, this fix contains a fix for a small memory leak in OrbitEph::timeDisplay.
- ORD Calculation Fixes - addressed defects in the new ORD Calculation discovered by Jason Vestuto in his testing. REASON: The calculation results were incorrect.
- Added a base class for help-like command-line options with special processing in CommandOptionParser and BasicFramework. REASON: Too many applications in the MSN have needed this, and this is a better solution than trying to figure out if these help-like options were used after all the normal command-line option parsing.
- Restored Missing GPSWeekZcount Math. REASON: When the time code was migrated to CommonTime/TimeTag implementations, several extremely useful methods were discarded from the GPSWeekZcount class.
- Relaxed fit interval and health restrictions on ext/GNSSEph/OrbAlmStore. REASON: Existing code didn't address existing use cases.
- Added recognition of Galileo antenna offsets to increase capability. REASON: Several other GNSSs are already implemented. This is adding yet another GNSS in the same pattern.
New Library Classes
- core/lib/GNSSCore/GalileoEllipsoid.hpp
Test Changes
New/Added Tests
- core/tests/AppFrame/BasicFrameworkHelp_T.cpp
Modified Test files
- core/tests/GNSSEph/NavID_T.cpp
- core/tests/ORD/OrdRegressionChecks_T.cpp
- core/tests/ORD/OrdUnitTests_T.cpp
- core/tests/AppFrame/CMakeLists.txt
- core/tests/testsuccexp.cmake
- core/tests/TimeHandling/GPSWeekZcount_T.cpp
- ext/tests/GNSSEph/OrbAlmStore_T.cpp
Truth Data Changes
New Truth Data
- data/BasicFrameworkHelpReq_T_1.err.exp
- data/BasicFrameworkHelpReq_T_1.exp
- data/BasicFrameworkHelp_T_1.err.exp
- data/BasicFrameworkHelp_T_1.exp
- data/BasicFrameworkHelp_T_3.err.exp
- data/BasicFrameworkHelp_T_3.exp
- data/BasicFrameworkHelp_T_4.err.exp
- data/BasicFrameworkHelp_T_4.exp
- data/BasicFrameworkHelp_T_8.err.exp
- data/BasicFrameworkHelp_T_8.exp
Updated Truth Data
- data/outputs/RinSum_obspath_v211.exp
- data/outputs/RinSum_v211_kerg.exp
- data/outputs/RinSum_v211_nklg.exp
- data/outputs/RinSum_v302_FAA1.exp
Fixes since v2.10.2
- Updated yuma reader to work without newline at end of file. REASON: Needed flexibility to handle files with and without newlines at the end without the reader breaking.
GPSTk v2.10.2
GPSTk 2.10.2 Release Notes
Updates since v2.10.1
Build System and Test Suite
- Test coverage was added on the core-build using gcov and gcovr
- Support for GootleTest/GoogleMock added.
Gitlab CI
- Test coverage was added on the core-build using gcov and gcovr
- Style compliance checking was added (as a new CI-Pipeline stage) using cpplint, but is not enforced.
Library Changes
- Added code to core/lib/GNSSEph/RationalizeRinex (used by core/apps/Rinextools/scanBrdcFile) to detect RINEX nav data sets tagged with the wrong SV PRN ID and to not copy such data sets to the output file. REASON: Latest IGS-generated merged RINEX nav (brdc) files contain data sets that are tagged with the incorrect PRN ID.
- NavFilter updates/enhancements - Add a nav filter for forced ordering of data. Add methods for determining filter depth for buffer size computation. ITT receivers in particular do not always output nav subframes in time order or on time or with correct time stamps.
- Added ObservationType for demodulator status codes, which will support changes to tools in SGLTk made in a future merge
- ORD Refactor with CI Pipeline Changes - ord.cpp was exposed in the SWIG interface. Unit tests for coverage were written using GoogleTest/GoogleMock. Test coverage was measured on the core-build using gcov and gcovr. REASON: The ORD routines was considered general enough to add to GPSTk. The project driving it is the HRTR Web Development effort.
- Updated references for 54/18 and 34/18 and updated PRN 4 gap
- Added LNAVOrderFilter for forcing time-order of legacy nav subframe data. REASON: When processing data from multiple receivers, the data may not be sent by the receivers at the same time. This filter makes a "best effort" to enforce time ordering across multiple receivers going into the filter.
- Added sp3d file format support. REASON: We care about sp3d because the IGS MGEX precise orbit files moved from sp3c to sp3d in fall 2017. Therefore, to support various multi-GNSS data experiments, we need to be able to access these files.
New Library Classes
- core/lib/ORD/ord.cpp
- core/lib/ORD/ord.hpp
- core/lib/NavFilter/LNavOrderFilter.cpp
- core/lib/NavFilter/LNavOrderFilter.hpp
Application Changes
- core/apps/Rinextools/scanBrdcFile updated to detect RINEX nav data sets tagged with the wrong SV PRN ID and to not copy such data sets to the output file.
- Update core/apps/checktools/rowcheck.cpp & core/apps/checktools/rnwcheck.cpp to use newer RINEX classes for rowcheck and rnwcheck to make them RINEX3 compatible
Updated Applications
- core/apps/Rinextools/scanBrdcFile
- core/apps/checktools/rnwcheck.cpp
- core/apps/checktools/rowcheck.cpp
- core/tests/ORD/OrdRegressionChecks_T.cpp
- core/tests/ORD/OrdUnitTests_T.cpp
Test Changes
New/Added Tests
- core/tests/ORD/GTestExperiments.cpp
- core/tests/ORD/OrdMockClasses.hpp
Modified Test files
- core/tests/NavFilter/NavFilterMgr_T.cpp
- ext/tests/GNSSEph/OrbAlmStore_T.cpp
- core/tests/FileHandling/SP3_T.cpp
Truth Data Changes
New Truth Data
- data/test_input_SP3d.sp3
SWIG Bindings & Python
- Updated SWIG interface files for ORD refactor
New/Added SWIG Files
- swig/src/ord.i
Fixes since v2.10.1
- Corrected prettying print of eph health bits in core/lib/GNSSEph/EngEphemeris.cpp
- Fixed incorrect end time for 54/18 in core/lib/GNSSCore/SVNumXRef.cpp
- Fixing bug that introduced false positive on Downstream GPSTk Core build