Changeset 8370 in ntrip
- Timestamp:
- Jun 11, 2018, 11:39:18 AM (7 years ago)
- Location:
- branches/BNC_2.12/src
- Files:
-
- 7 edited
Legend:
- Unmodified
- Added
- Removed
-
branches/BNC_2.12/src/PPP_SSR_I/pppClient.cpp
r7968 r8370 353 353 ////////////////////////////////////////////////////////////////////////////// 354 354 void t_pppClient::putEphemeris(const t_eph* eph) { 355 bool check = _opt->_realTime;356 355 if (_newEph) 357 356 delete _newEph; … … 375 374 376 375 if (_newEph) { 377 _ephUser->putNewEph(_newEph, check);376 _ephUser->putNewEph(_newEph, _opt->_realTime); 378 377 } 379 378 } -
branches/BNC_2.12/src/bncephuser.cpp
r8322 r8370 83 83 //////////////////////////////////////////////////////////////////////////// 84 84 void bncEphUser::slotNewGPSEph(t_ephGPS eph) { 85 putNewEph(&eph, false);85 putNewEph(&eph, true); 86 86 } 87 87 … … 89 89 //////////////////////////////////////////////////////////////////////////// 90 90 void bncEphUser::slotNewGlonassEph(t_ephGlo eph) { 91 putNewEph(&eph, false);91 putNewEph(&eph, true); 92 92 } 93 93 … … 95 95 //////////////////////////////////////////////////////////////////////////// 96 96 void bncEphUser::slotNewGalileoEph(t_ephGal eph) { 97 putNewEph(&eph, false);97 putNewEph(&eph, true); 98 98 } 99 99 … … 101 101 //////////////////////////////////////////////////////////////////////////// 102 102 void bncEphUser::slotNewSBASEph(t_ephSBAS eph) { 103 putNewEph(&eph, false);103 putNewEph(&eph, true); 104 104 } 105 105 … … 107 107 //////////////////////////////////////////////////////////////////////////// 108 108 void bncEphUser::slotNewBDSEph(t_ephBDS eph) { 109 putNewEph(&eph, false);110 } 111 112 // 113 //////////////////////////////////////////////////////////////////////////// 114 t_irc bncEphUser::putNewEph(t_eph* eph, bool check) {109 putNewEph(&eph, true); 110 } 111 112 // 113 //////////////////////////////////////////////////////////////////////////// 114 t_irc bncEphUser::putNewEph(t_eph* eph, bool realTime) { 115 115 116 116 QMutexLocker locker(&_mutex); … … 120 120 } 121 121 122 if (check) { 123 checkEphemeris(eph); 124 } 122 checkEphemeris(eph, realTime); 123 125 124 126 125 const t_ephGPS* ephGPS = dynamic_cast<const t_ephGPS*>(eph); … … 175 174 // 176 175 //////////////////////////////////////////////////////////////////////////// 177 void bncEphUser::checkEphemeris(t_eph* eph ) {176 void bncEphUser::checkEphemeris(t_eph* eph, bool realTime) { 178 177 179 178 if (!eph || eph->checkState() == t_eph::ok || eph->checkState() == t_eph::bad) { … … 207 206 // Check whether the epoch is too far away the current time 208 207 // -------------------------------------------------------- 209 bncTime toc = eph->TOC(); 210 QDateTime now = currentDateAndTimeGPS(); 211 bncTime currentTime(now.toString(Qt::ISODate).toStdString()); 212 double timeDiff = fabs(toc - currentTime); 213 214 if (eph->type() == t_eph::GPS && timeDiff > 4*3600) { // update interval: 2h, data sets are valid for 4 hours 215 eph->setCheckState(t_eph::outdated); 216 return; 217 } 218 else if (eph->type() == t_eph::Galileo && timeDiff > 4*3600) { // update interval: 2h, data sets are valid for 4 hours 219 eph->setCheckState(t_eph::outdated); 220 return; 221 } 222 else if (eph->type() == t_eph::GLONASS && timeDiff > 1*3600) { // updated every 30 minutes 223 eph->setCheckState(t_eph::outdated); 224 return; 225 } 226 else if (eph->type() == t_eph::QZSS && timeDiff > 4*3600) { // orbit parameters are valid for 7200 seconds (at minimum) 227 eph->setCheckState(t_eph::outdated); 228 return; 229 } 230 else if (eph->type() == t_eph::SBAS && timeDiff > 600) { // maximum update interval: 300 sec 231 eph->setCheckState(t_eph::outdated); 232 return; 233 } 234 else if (eph->type() == t_eph::BDS && timeDiff > 6*3600) { // updates (GEO) up to 6 hours 235 eph->setCheckState(t_eph::outdated); 236 return; 237 } 238 else if (eph->type() == t_eph::IRNSS && timeDiff > 24*3600) { // update interval: up to 24 hours 239 eph->setCheckState(t_eph::outdated); 240 return; 241 } 242 208 if (realTime) { 209 bncTime toc = eph->TOC(); 210 QDateTime now = currentDateAndTimeGPS(); 211 bncTime currentTime(now.toString(Qt::ISODate).toStdString()); 212 double timeDiff = fabs(toc - currentTime); 213 214 if (eph->type() == t_eph::GPS && timeDiff > 4*3600) { // update interval: 2h, data sets are valid for 4 hours 215 eph->setCheckState(t_eph::outdated); 216 return; 217 } 218 else if (eph->type() == t_eph::Galileo && timeDiff > 4*3600) { // update interval: 2h, data sets are valid for 4 hours 219 eph->setCheckState(t_eph::outdated); 220 return; 221 } 222 else if (eph->type() == t_eph::GLONASS && timeDiff > 1*3600) { // updated every 30 minutes 223 eph->setCheckState(t_eph::outdated); 224 return; 225 } 226 else if (eph->type() == t_eph::QZSS && timeDiff > 4*3600) { // orbit parameters are valid for 7200 seconds (at minimum) 227 eph->setCheckState(t_eph::outdated); 228 return; 229 } 230 else if (eph->type() == t_eph::SBAS && timeDiff > 600) { // maximum update interval: 300 sec 231 eph->setCheckState(t_eph::outdated); 232 return; 233 } 234 else if (eph->type() == t_eph::BDS && timeDiff > 6*3600) { // updates (GEO) up to 6 hours 235 eph->setCheckState(t_eph::outdated); 236 return; 237 } 238 else if (eph->type() == t_eph::IRNSS && timeDiff > 24*3600) { // update interval: up to 24 hours 239 eph->setCheckState(t_eph::outdated); 240 return; 241 } 242 } 243 243 244 // Check consistency with older ephemerides 244 245 // ---------------------------------------- -
branches/BNC_2.12/src/bncephuser.h
r6981 r8370 74 74 75 75 private: 76 void checkEphemeris(t_eph* eph );76 void checkEphemeris(t_eph* eph, bool realTime); 77 77 QMutex _mutex; 78 78 static const unsigned _maxQueueSize = 5; -
branches/BNC_2.12/src/ephemeris.cpp
r8218 r8370 335 335 double E = M; 336 336 double E_last; 337 int nLoop = 0; 337 338 do { 338 339 E_last = E; 339 340 E = M + _e*sin(E); 341 342 if (++nLoop == 100) { 343 return failure; 344 } 340 345 } while ( fabs(E-E_last)*a0 > 0.001 ); 341 346 double v = 2.0*atan( sqrt( (1.0 + _e)/(1.0 - _e) )*tan( E/2 ) ); … … 921 926 double E = M; 922 927 double E_last; 928 int nLoop = 0; 923 929 do { 924 930 E_last = E; 925 931 E = M + _e*sin(E); 932 933 if (++nLoop == 100) { 934 return failure; 935 } 926 936 } while ( fabs(E-E_last)*a0 > 0.001 ); 927 937 double v = 2.0*atan( sqrt( (1.0 + _e)/(1.0 - _e) )*tan( E/2 ) ); -
branches/BNC_2.12/src/rinex/reqcanalyze.cpp
r8149 r8370 1054 1054 for (unsigned ii = 0; ii < rnxNavFile.ephs().size(); ii++) { 1055 1055 t_eph* eph = rnxNavFile.ephs()[ii]; 1056 ephUser.putNewEph(eph, true);1056 ephUser.putNewEph(eph, false); 1057 1057 if (eph->checkState() == t_eph::bad) { 1058 1058 ++numBad; -
branches/BNC_2.12/src/rinex/reqcedit.cpp
r8351 r8370 642 642 break; 643 643 } 644 if (eph->checkState() != t_eph::bad) { 645 continue; 646 } 644 647 outNavFile.writeEph(eph); 645 648 } -
branches/BNC_2.12/src/rinex/rnxnavfile.cpp
r8353 r8370 210 210 eph = new t_ephGPS(version(), lines); 211 211 } 212 if (eph && 213 eph->checkState() != t_eph::bad && 214 eph->checkState() != t_eph::outdated) { 215 _ephs.push_back(eph); 216 } 217 else { 218 delete eph; 219 } 212 _ephs.push_back(eph); 220 213 } 221 214 }
Note:
See TracChangeset
for help on using the changeset viewer.