Changeset 11073 in ntrip
- Timestamp:
- Oct 5, 2026, 1:53:32 PM (16 hours ago)
- Location:
- trunk/BNC/src
- Files:
-
- 2 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/BNC/src/ssrQc.cpp
r11070 r11073 50 50 namespace { 51 51 const double MAX_CLK_JUMP = 0.5; // [m] clock change beyond its rate between consecutive epochs 52 const double EPH_WARMUP = 120.0; // [s] no ephemeris checks at the start 52 53 const char* TYPE_NAME[] = {"ORBIT", "CLOCK", "CODE_BIAS", "PHASE_BIAS"}; 53 54 … … 143 144 //////////////////////////////////////////////////////////////////////////// 144 145 void t_ssrQc::checkInterval(const bncTime& time) { 146 if (!_startTime.valid()) { 147 _startTime = time; 148 } 145 149 if (!_intervalStart.valid()) { 146 150 double sec = floor(time.gpssec() / _interval) * _interval; … … 181 185 // Broadcast ephemeris the correction refers to 182 186 //////////////////////////////////////////////////////////////////////////// 183 void t_ssrQc::checkEph(t_satStat& stat, const QString& prnInt, unsigned iod) { 187 void t_ssrQc::checkEph(t_satStat& stat, const QString& prnInt, unsigned iod, const bncTime& time) { 188 // not before all broadcast ephemerides may have been received 189 if (time - _startTime < EPH_WARMUP) { 190 return; 191 } 184 192 t_eph* ephLast = _ephUser.ephLast(prnInt); 185 193 t_eph* ephPrev = _ephUser.ephPrev(prnInt); … … 208 216 t_satStat& stat = _satStat[QString::fromStdString(corr._staID) + ' ' + prn]; 209 217 stat.numOrb += 1; 210 checkEph(stat, QString::fromStdString(corr._prn.toInternalString()), corr._iod); 218 checkEph(stat, QString::fromStdString(corr._prn.toInternalString()), corr._iod, corr._time); 211 219 double radial = fabs(corr._xr[0]); 212 220 double alongCross = max(fabs(corr._xr[1]), fabs(corr._xr[2])); … … 226 234 t_satStat& stat = _satStat[QString::fromStdString(corr._staID) + ' ' + prn]; 227 235 stat.numClk += 1; 228 checkEph(stat, QString::fromStdString(corr._prn.toInternalString()), corr._iod); 236 checkEph(stat, QString::fromStdString(corr._prn.toInternalString()), corr._iod, corr._time); 229 237 230 238 // jump: change between consecutive epochs (same IOD) beyond the clock rate … … 297 305 newEpoch(bias._staID, bias._prn.system(), PBIAS, bias._time, bias._updateInt, 298 306 QString::fromStdString(bias._prn.toString())); 307 QString staSys = QString("%1 %2").arg(bias._staID.c_str()).arg(bias._prn.system()); 308 for (const t_frqPhaseBias& frqBias : bias._bias) { 309 _phaseSignals[staSys].insert(QString::fromStdString(frqBias._rnxType2ch)); 310 } 299 311 } 300 312 } … … 462 474 } 463 475 } 476 if (_phaseSignals.contains(staSys)) { 477 QStringList sigs = _phaseSignals[staSys].values(); 478 sigs.sort(); 479 lines << "phase bias signals: " + sigs.join(" "); 480 } 464 481 addSats(QString("clock jumps > %1 m").arg(MAX_CLK_JUMP), jumps); 465 482 if (!maxRadialPrn.isEmpty()) { -
trunk/BNC/src/ssrQc.h
r11070 r11073 69 69 void newEpoch(const std::string& staID, char sys, e_type type, const bncTime& time, 70 70 unsigned updateInt, const QString& prn); 71 void checkEph(t_satStat& stat, const QString& prnInt, unsigned iod); 71 void checkEph(t_satStat& stat, const QString& prnInt, unsigned iod, const bncTime& time); 72 72 void checkInterval(const bncTime& time); 73 73 void writeReport(bool final); … … 82 82 bncTime _intervalStart; 83 83 bncTime _lastTime; 84 bncTime _startTime; // first correction epoch 84 85 bncEphUser _ephUser; 85 86 QMap<QString, t_epoStat> _epoStat; // key "STA SYS TYPE" 86 87 QMap<QString, t_satStat> _satStat; // key "STA PRN" 87 QMap<QString, QSet<QString> > _codeSignals; // key "STA SYS": signals with code biases 88 QMap<QString, QSet<QString> > _codeSignals; // key "STA SYS": signals with code biases 89 QMap<QString, QSet<QString> > _phaseSignals; // key "STA SYS": signals with phase biases 88 90 }; 89 91
Note:
See TracChangeset
for help on using the changeset viewer.
