diff --git a/CMakeLists.txt b/CMakeLists.txt index a5b78f616..a0e001f0c 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -10,8 +10,8 @@ cmake_minimum_required( VERSION 2.8.5 ) project( GPSTK ) set( GPSTK_VERSION_MAJOR "2" ) -set( GPSTK_VERSION_MINOR "10" ) -set( GPSTK_VERSION_PATCH "7" ) +set( GPSTK_VERSION_MINOR "11" ) +set( GPSTK_VERSION_PATCH "0" ) set( GPSTK_VERSION "${GPSTK_VERSION_MAJOR}.${GPSTK_VERSION_MINOR}.${GPSTK_VERSION_PATCH}" ) # Test data file source directory diff --git a/ChangeLog.md b/ChangeLog.md index dee71aaa2..3a085f773 100644 --- a/ChangeLog.md +++ b/ChangeLog.md @@ -1,4 +1,4 @@ -Version 2.10.7 Thursday, December 6, 2018 +Version 2.11 Thursday, January 3, 2019 General modifications --------------------- @@ -6,55 +6,39 @@ Version 2.10.7 Thursday, December 6, 2018 - Added official debian builds to package stage of GPSTk CI Modifications by Author - --------------------- -Bryan Parsons (28): - First cut of Travis-CI build file for external CI builds with Github. - Travis.yml file update for external gitlab CI - Travis.yml update - .travis.yml update and added shebang to swig/gpstk/__init__.py as Travis CI defaults to using SH. - Updated apt-get gtest and gmock definitions for travis.yml - Linux build for External Github/Travis-CI is now working, .travis.yml is good to go. - Added build and coverage badges to README.md and updated .travis.yml. - Temporarily allowing failures for windows CI builds, as Runner is having authentication issues. - Merge branch 'issue_349_L1C' into 'master' - Merge branch 'issue_361_CSVxref' into 'master' - Updating Debian package files to resolve libgpstk-dev conflict. - Additional tweak to .install files - Additional changes to fix issues building deb packages. - Another tweak to fix debian package build issues. - tweaking deb package build process for debian wheezy. - Removing parallel builds due to potential bug issues utilizing feature when building deb packages. - Tweak to deb rules file. - Continued tweaking as deb packages errors are debugged. - Updates for debian package building. - Adding official debian builds to package stage of GPSTk CI - Updating debian package building scrding command. - Adding official debian builds to package stage of GPSTk CI - Updating debian package building scrding command. - Merge branch 'gitlab_ci_tweaks' of repositories.arlut.utexas.edu:sgl/gpstk into gitlab_ci_tweaks - Merge branch 'gitlab_ci_tweaks' into 'master' - Update gitlab ci to add .deb packages to artifacts. - Additional tweaks to .gitlab-ci.yml for proper debian package artifacts. - Updated gitlab ci deb artifact building to only build on Master. - -Eric Bigenwald (1): - added method that returns a reference to PtoNMap. Used to generate csv format of the map - -renfrob (14): - Add L1C to ObsID (incomplete) - Add L1C to NavID (incomplete) - Updated NavID_T for L1C - More iterim changes - De-conflating similar Rinex track codes - Adding CNAV-2 filter for sanity checks - Adding tests for CNav2SanityFilter - Tweaks following testing - Fix for next-frame offset - Removing debug prints - Correcting time tags in test messages - Merge branch 'issue_349_L1C' - Merge branch 'master' into issue_349_L1C - Update SVN/PRN relationships + --------------------- + +Bryan Parsons (4): + Adding .changes file to gitlab.ci debian artifacts. + Expose all debian package files to be swept into package artifact. + Merge branch 'issue_363_moving_alm' into 'master' + Merge branch 'issue_365_XvtStoreSatID' into 'master' + +Nick Boeker (7): + Merge remote-tracking branch 'origin/master' into issue_359_CNAV_Packets + Moved Non-GPS Almanac Calculation to sgltk + Merge remote-tracking branch 'origin/master' into issue_363_moving_alm + Merge remote-tracking branch 'origin/master' into issue_363_moving_alm + Merge remote-tracking branch 'origin/master' into issue_362_moving_alm + Rolled back CNAV2 changes + Merge remote-tracking branch 'origin/master' into issue_363_moving_alm + +renfrob (15): + Add CNAV Reduced packet encapsulation + Adding units tests for CNavReducedAlm + Adding test cases + Adding support for CNAV/CNAV-2 Differentail Correction Packets + Making unit tests work.: + Adding CNAV/CNAV-2 Reduced Almanac read/dump + Adding getIndexSet() method to XvtStore + Extending tests to permit XvtStore.getIndexSet() + Adding a test for OrbElemStore + Working out various time representation issues. + Removing debug prints + Increasing precision in dumpBody() to match Rinex + Adding patch to place Galileo IODnav in IODC location + Softening GPS dependences in dumpHeader() and dumpTerse() to permit Galileo output + Returning output precision to previous width to avoid replacing several test output files. ################################################# diff --git a/Doxyfile b/Doxyfile index b8b6879f2..16af7013e 100644 --- a/Doxyfile +++ b/Doxyfile @@ -32,7 +32,7 @@ PROJECT_NAME = "GPS ToolKit Software Library" # This could be handy for archiving the generated documentation or # if some version control system is used. -PROJECT_NUMBER = 2.10.7 +PROJECT_NUMBER = 2.11.0 # Using the PROJECT_BRIEF tag one can provide an optional one line description # for a project that appears at the top of each page and should give viewer diff --git a/NEWS.md b/NEWS.md index 0a29fbcc7..2e4e0b3c8 100644 --- a/NEWS.md +++ b/NEWS.md @@ -3,6 +3,9 @@ NEWS GPS Toolkit News ------------------------------------------------------------------------------ + January 3, 2019 . . . Release Candidate for Version 2.11 is frozen in the + repository + December 6, 2018 . . . Release Candidate for Version 2.10.7 is frozen in the repository diff --git a/RELNOTES.md b/RELNOTES.md index 27d628cfd..918708222 100755 --- a/RELNOTES.md +++ b/RELNOTES.md @@ -1,27 +1,142 @@ -GPSTk 2.10.7 Release Notes +GPSTk 2.11 Release Notes ======================== -Updates since v2.10.6 ----------------------- +Updates since v2.10 +------------------ -**Gitlab/Github CI** +**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. -**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. + +**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 78e29c30, but accidentally deleted in commit 148a0180. + * 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 + * core/tests/NavFilter/NavFilterMgr_T.cpp + * core/tests/ORD/OrdRegressionChecks_T.cpp + * core/tests/ORD/OrdUnitTests_T.cpp + * core/tests/testsuccexp.cmake + * core/tests/TimeHandling/GPSWeekZcount_T.cpp + * ext/test/geomatics/CMakeLists.txt + * ext/tests/GNSSEph/OrbAlm_T.cpp + * ext/tests/GNSSEph/OrbAlmStore_T.cpp + +**Truth Data Changes** + +*New Truth Data* + * 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 + * data/BasicFrameworkHelpReq_T_1.err.exp + * data/BasicFrameworkHelpReq_T_1.exp + * data/test_input_SP3d.sp3 + * data/test_output_rinex3_clock_TestR3HeaderOutput.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 +---------------- + * Fixed a bug in core/lib/Math/Stats.hpp that produced unpredictable results when trying to add an empty object. + * int -> unsigned int changes in ext/lib/Geomatics/StatsFilter.hpp + * Freed memory returned by core/lib/GNSSEph/OrbitEphStore::addToList and updated comments for that method. This fixed memory leaks in core/lib/GNSSEph/GPSEphemerisStore::addToList and core/lib/GNSSEph/Rinex3EphemerisStore::addToList. + * 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 + * 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. + * Replaced ICD-GPS-211 with IS-GPS-200 in several comments \ No newline at end of file diff --git a/debian/changelog b/debian/changelog index 56c816802..e6c3d49c7 100644 --- a/debian/changelog +++ b/debian/changelog @@ -1,3 +1,9 @@ +gpstk (2.11.0-1) UNRELEASED; urgency=medium + + * Update to upstream version 2.11 + + -- Bryan Parsons Tue, 18 Dec 2018 10:32:41 -0600 + gpstk (2.10.7-1) stable; urgency=medium * Update to upstream version 2.10.7 diff --git a/debian/control b/debian/control index 7a2d27406..e467169f0 100644 --- a/debian/control +++ b/debian/control @@ -11,7 +11,7 @@ Vcs-Browser: https://github.com/SGL-UT/GPSTk.git Package: gpstk-bin Architecture: any -Depends: libgpstk2.10 (>= ${binary:Version}), python-gpstk, ${misc:Depends}, ${shlibs:Depends}, ${python:Depends} +Depends: libgpstk2.11 (>= ${binary:Version}), python-gpstk, ${misc:Depends}, ${shlibs:Depends}, ${python:Depends} Description: GPS Toolkit (GPSTk) - command line tools The GPS Toolkit (GPSTk) is an open-source (LGPL) project sponsored by the Space and Geophysics Laboratory (SGL), part of the Applied Research @@ -24,7 +24,7 @@ Description: GPS Toolkit (GPSTk) - command line tools Package: libgpstk-dev Section: libdevel Architecture: any -Depends: libgpstk2.10 (= ${binary:Version}), ${misc:Depends} +Depends: libgpstk2.11 (= ${binary:Version}), ${misc:Depends} Description: GPS Toolkit (GPSTk) - Headers The GPS Toolkit (GPSTk) is an open-source (LGPL) project sponsored by the Space and Geophysics Laboratory (SGL), part of the Applied Research @@ -33,7 +33,7 @@ Description: GPS Toolkit (GPSTk) - Headers * provide applications for use by the GNSS and satellite navigation community. * provide a core library to facilitate the development of GNSS applications. -Package: libgpstk2.10 +Package: libgpstk2.11 Architecture: any Depends: ${shlibs:Depends}, ${misc:Depends} Description: GPS Toolkit (GPSTk) - Shared Libraries @@ -44,11 +44,11 @@ Description: GPS Toolkit (GPSTk) - Shared Libraries * provide applications for use by the GNSS and satellite navigation community. * provide a core library to facilitate the development of GNSS applications. -Package: libgpstk2.10-dbg +Package: libgpstk2.11-dbg Architecture: any Section: debug Priority: extra -Depends: libgpstk2.10 (= ${binary:Version}), ${misc:Depends} +Depends: libgpstk2.11 (= ${binary:Version}), ${misc:Depends} Description: GPS Toolkit (GPSTk) - Shared Library Debugging Symbols The GPS Toolkit (GPSTk) is an open-source (LGPL) project sponsored by the Space and Geophysics Laboratory (SGL), part of the Applied Research diff --git a/debian/libgpstk2.10.install b/debian/libgpstk2.11.install similarity index 100% rename from debian/libgpstk2.10.install rename to debian/libgpstk2.11.install diff --git a/swig/sphinx/conf.py b/swig/sphinx/conf.py index 3e1002019..73b7f405a 100755 --- a/swig/sphinx/conf.py +++ b/swig/sphinx/conf.py @@ -54,9 +54,9 @@ # built documents. # # The short X.Y version. -version = '2.10' +version = '2.11' # The full version, including alpha/beta/rc tags. -release = '2.10.7' +release = '2.11.0' # The language for content autogenerated by Sphinx. Refer to documentation # for a list of supported languages.