Changeset 10791 in ntrip for trunk/BNC/src/PPP/pppClient.cpp


Ignore:
Timestamp:
Dec 3, 2025, 5:37:16 PM (2 weeks ago)
Author:
mervart
Message:

BNC Multifrequency and PPPAR Client (initial version)

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/BNC/src/PPP/pppClient.cpp

    r10765 r10791  
    117117//////////////////////////////////////////////////////////////////////////////
    118118void t_pppClient::putOrbCorrections(const vector<t_orbCorr*>& corr) {
     119  if (OPT->_logMode == t_pppOptions::normal && corr.size() > 0) {
     120    LOG << "orbCorrections " << string(corr[0]->_time) << ' ' << corr.size() << endl;
     121  }
    119122  for (unsigned ii = 0; ii < corr.size(); ii++) {
    120123    _ephPool->putOrbCorrection(new t_orbCorr(*corr[ii]));
     
    125128//////////////////////////////////////////////////////////////////////////////
    126129void t_pppClient::putClkCorrections(const vector<t_clkCorr*>& corr) {
     130  if (OPT->_logMode == t_pppOptions::normal && corr.size() > 0) {
     131    LOG << "clkCorrections " << string(corr[0]->_time) << ' ' << corr.size() << endl;
     132  }
    127133  for (unsigned ii = 0; ii < corr.size(); ii++) {
    128134    _ephPool->putClkCorrection(new t_clkCorr(*corr[ii]));
     
    133139//////////////////////////////////////////////////////////////////////////////
    134140void t_pppClient::putCodeBiases(const vector<t_satCodeBias*>& biases) {
     141  if (OPT->_logMode == t_pppOptions::normal && biases.size() > 0) {
     142    LOG << "codeBiases     " << string(biases[0]->_time) << ' ' << biases.size() << endl;
     143  }
     144  set<char> systems;
    135145  for (unsigned ii = 0; ii < biases.size(); ii++) {
    136     _obsPool->putCodeBias(new t_satCodeBias(*biases[ii]));
     146    t_satCodeBias* newBias = new t_satCodeBias(*biases[ii]);
     147    char sys = newBias->_prn.system();
     148    if (systems.find(sys) == systems.end()) {
     149      _obsPool->clearCodeBiases(sys);
     150      systems.insert(sys);
     151    }
     152    _obsPool->putCodeBias(newBias);
    137153  }
    138154}
     
    141157//////////////////////////////////////////////////////////////////////////////
    142158void t_pppClient::putPhaseBiases(const vector<t_satPhaseBias*>& biases) {
     159  if (OPT->_logMode == t_pppOptions::normal && biases.size() > 0) {
     160    LOG << "phaseBiases    " << string(biases[0]->_time) << ' ' << biases.size() << endl;
     161  }
     162  set<char> systems;
    143163  for (unsigned ii = 0; ii < biases.size(); ii++) {
    144     _obsPool->putPhaseBias(new t_satPhaseBias(*biases[ii]));
     164    t_satPhaseBias* newBias = new t_satPhaseBias(*biases[ii]);
     165    char sys = newBias->_prn.system();
     166    if (systems.find(sys) == systems.end()) {
     167      _obsPool->clearPhaseBiases(sys);
     168      systems.insert(sys);
     169    }
     170    _obsPool->putPhaseBias(newBias);
    145171  }
    146172}
     
    211237    }
    212238  }
    213 /*
    214   vector<t_pppSatObs*>::iterator it = obsVector.begin();
    215   while (it != obsVector.end()) {
    216     t_pppSatObs* satObs = *it;
    217     satObs->printObsMinusComputed();
    218     it++;
    219   }
    220 */
     239
     240  if (OPT->_logMode == t_pppOptions::all) {
     241    vector<t_pppSatObs*>::iterator it = obsVector.begin();
     242    while (it != obsVector.end()) {
     243      t_pppSatObs* satObs = *it;
     244      satObs->printObsMinusComputed();
     245      it++;
     246    }
     247  }
    221248  return pseudoObsIono;
    222249}
    223 
    224 //
    225 //////////////////////////////////////////////////////////////////////////////
    226 void t_pppClient::useObsWithCodeBiasesOnly(std::vector<t_pppSatObs*>& obsVector) {
    227 
    228   vector<t_pppSatObs*>::iterator it = obsVector.begin();
    229   while (it != obsVector.end()) {
    230     t_pppSatObs* pppSatObs = *it;
    231     bool codeBiasesAvailable = false;
    232     if (pppSatObs->getCodeBias(pppSatObs->fType1()) &&
    233         pppSatObs->getCodeBias(pppSatObs->fType2())) {
    234         codeBiasesAvailable = true;
    235     }
    236     if (codeBiasesAvailable) {
    237       ++it;
    238     }
    239     else {
    240       it = obsVector.erase(it);
    241       delete pppSatObs;
    242     }
    243   }
    244   return;
    245 }
    246 
    247250
    248251// Compute the Bancroft position, check for blunders
     
    251254                                  vector<t_pppSatObs*>& obsVector,
    252255                                  ColumnVector& xyzc, bool print) {
    253   t_lc::type tLC = t_lc::dummy;
     256
    254257  int  numBancroft = obsVector.size();
    255258
     
    259262    for (unsigned ii = 0; ii < obsVector.size(); ii++) {
    260263      const t_pppSatObs* satObs = obsVector.at(ii);
    261       if (tLC == t_lc::dummy) {
    262         if (satObs->isValid(t_lc::cIF)) {
    263           tLC = t_lc::cIF;
    264         }
    265         else if (satObs->isValid(t_lc::c1)) {
    266           tLC = t_lc::c1;
    267         }
    268         else if (satObs->isValid(t_lc::c2)) {
    269           tLC = t_lc::c2;
    270         }
    271       }
    272       if ( satObs->isValid(tLC) &&
     264      t_lc LC = satObs->rangeLC();
     265      if ( satObs->isValid(LC) &&
    273266          (!satObs->modelSet() || satObs->eleSat() >= _opt->_minEle) ) {
    274267        ++iObs;
     
    276269        BB[iObs][1] = satObs->xc()[1];
    277270        BB[iObs][2] = satObs->xc()[2];
    278         BB[iObs][3] = satObs->obsValue(tLC) - satObs->cmpValueForBanc(tLC);
     271        BB[iObs][3] = satObs->obsValue(LC) - satObs->cmpValueForBanc(LC);
    279272      }
    280273    }
     
    297290    for (unsigned ii = 0; ii < obsVector.size(); ii++) {
    298291      const t_pppSatObs* satObs = obsVector.at(ii);
    299       if (satObs->isValid() &&
     292      t_lc LC = satObs->rangeLC();
     293      if (satObs->isValid(LC) &&
    300294          (!satObs->modelSet() || satObs->eleSat() >= _opt->_minEle) ) {
    301295        ColumnVector rr = satObs->xc().Rows(1,3) - xyzc.Rows(1,3);
    302         double res = rr.NormFrobenius() - satObs->obsValue(tLC)
     296        double res = rr.NormFrobenius() - satObs->obsValue(LC)
    303297                   - (satObs->xc()[3] - xyzc[3]) * t_CST::c;
    304298        if (fabs(res) > maxRes) {
     
    354348//
    355349//////////////////////////////////////////////////////////////////////////////
    356 void t_pppClient::finish(t_irc irc, int ind) {
     350void t_pppClient::finish(t_irc irc, int /*ind*/) {
    357351#ifdef BNC_DEBUG_PPP
    358352  LOG << "t_pppClient::finish(" << ind << "): " << irc << endl;
     
    463457      }
    464458    }
    465     // use observations only if satellite code biases are available
    466     /* ------------------------------------------------------------
    467     if (!_opt->_corrMount.empty() {
    468         useObsWithCodeBiasesOnly(_obsRover);
    469     }*/
     459
     460    // Use observations only if satellite code biases are available
     461    // ------------------------------------------------------------
     462    if (_opt->ambRes()) {
     463      useObsWithBiasesOnly(_obsRover);
     464    }
    470465
    471466    if (int(_obsRover.size()) < _opt->_minObs) {
     
    613608
    614609}
     610
     611//
     612//////////////////////////////////////////////////////////////////////////////
     613void t_pppClient::useObsWithBiasesOnly(vector<t_pppSatObs*>& obsVector) const {
     614  vector<t_pppSatObs*>::iterator it = obsVector.begin();
     615  while (it != obsVector.end()) {
     616    t_pppSatObs* pppSatObs = *it;
     617    if (pppSatObs->hasBiases()) {
     618      ++it;
     619    }
     620    else {
     621      it = obsVector.erase(it);
     622      delete pppSatObs;
     623    }
     624  }
     625}
Note: See TracChangeset for help on using the changeset viewer.