diff --git a/deps/RTKLIB b/deps/RTKLIB index 3f0bb15ea844df97592a5d0c96222da5db6566ae..c28e43077f2fb431ce3e1cc306155342e7307c66 160000 --- a/deps/RTKLIB +++ b/deps/RTKLIB @@ -1 +1 @@ -Subproject commit 3f0bb15ea844df97592a5d0c96222da5db6566ae +Subproject commit c28e43077f2fb431ce3e1cc306155342e7307c66 diff --git a/include/gnss_utils/navigation.h b/include/gnss_utils/navigation.h index 929dec288cd9a1df5e5ff8058b185a305b8eea63..f4910dabfb97f6a2cd62dea2543247075cbc206b 100644 --- a/include/gnss_utils/navigation.h +++ b/include/gnss_utils/navigation.h @@ -132,11 +132,6 @@ inline bool Navigation::addFcb(const fcbd_t& fcb) return addToArray<fcbd_t>(fcb, nav_.fcb, nav_.nf, nav_.nfmax); } -inline void Navigation::addSbasMessage(const sbsmsg_t& sbas_msg) -{ - sbsupdatecorr(&sbas_msg, &nav_); -} - inline void Navigation::freeEphemeris() { freeEph(nav_); diff --git a/src/navigation.cpp b/src/navigation.cpp index c0eb72c4681d6cb650e960e8fba5ac50cd4bc5db..8c76449c950b6e59b932b017416e320a89d22455 100644 --- a/src/navigation.cpp +++ b/src/navigation.cpp @@ -158,6 +158,25 @@ void Navigation::loadFromRinex(const std::string& rnx_file, gtime_t t_start, gti << std::endl; } +void Navigation::addSbasMessage(const sbsmsg_t& sbas_msg) +{ + // init seph with array of size NSATSBS*2 + if (nav_.seph == NULL) + { + std::cout << "Navigation::addSbasMessage: initializing sbas ephemerides array...\n"; + if (!(nav_.seph =(seph_t *)malloc(sizeof(seph_t)*NSATSBS*2))) + { + std::cout << "Navigation::addSbasMessage: could not malloc sbas ephemerides!\n"; + return; + } + nav_.ns=NSATSBS*2; + nav_.nsmax=NSATSBS*2; + for (auto i=0; i<NSATSBS*2; i++) + nav_.seph[i]=seph_t{0}; + } + sbsupdatecorr(&sbas_msg, &nav_); +} + void Navigation::copyAllArrays(const nav_t& nav) { // GPS/QZS/GAL ephemeris @@ -182,11 +201,18 @@ void Navigation::copyAllArrays(const nav_t& nav) void Navigation::copyEphemeris(const nav_t& nav) { - copyArray<eph_t>(nav.eph, nav.n, nav_.eph, nav_.n, nav_.nmax); - copyArray<geph_t>(nav.geph, nav.ng, nav_.geph, nav_.ng, nav_.ngmax); - copyArray<seph_t>(nav.seph, nav.ns, nav_.seph, nav_.ns, nav_.nsmax); + // Not SBAS ephemeris! - uniqueNavigation(); + // copy + copyArray<eph_t>(nav.eph, nav.n, nav_.eph, nav_.n, nav_.nmax); + copyArray<geph_t>(nav.geph, nav.ng, nav_.geph, nav_.ng, nav_.ngmax); + + // unique + uniqeph (&nav_); + uniqgeph(&nav_); + + // wavelengths + updatenav(&nav_); } void Navigation::copyAlmanac(const nav_t& nav) diff --git a/src/receivers/ublox_raw.cpp b/src/receivers/ublox_raw.cpp index 6c2ba9a517085d391eb88292b11f8654bafd91da..afaf32ba80d06161b7344ecaa0ef9af1692eee52 100644 --- a/src/receivers/ublox_raw.cpp +++ b/src/receivers/ublox_raw.cpp @@ -29,7 +29,7 @@ RawDataType UBloxRaw::addDataStream(const std::vector<uint8_t>& data_stream) break; case NAV_EPH: // Ephemeris - //std::cout << "Ephemeris received!\n"; + std::cout << "Ephemeris received!\n"; nav_.copyEphemeris(raw_data_.nav); break;