Changeset 9419 in ntrip for trunk/BNC/src/PPP/pppParlist.cpp


Ignore:
Timestamp:
May 3, 2021, 2:18:39 PM (3 years ago)
Author:
stuerze
Message:

update regarding PPP

File:
1 edited

Legend:

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

    r9399 r9419  
    121121     _sigma0  = OPT->_aprSigCodeBias;
    122122     break;
    123    case pBiasG1:   case pBiasE1:   case pBiasC1:
    124    case pBiasG2:   case pBiasE2:   case pBiasC2:
     123   case pBiasG1:   case pBiasE1:   case pBiasR1:   case pBiasC1:
     124   case pBiasG2:   case pBiasE2:   case pBiasR2:   case pBiasC2:
    125125     _epoSpec = true;
    126126     _sigma0  = OPT->_aprSigPhaseBias;
     
    261261    if ((obs->prn().system() == 'G') && (tLC == t_lc::l1)) {return 1.0;} else {return 0.0;}
    262262    break;
     263  case pBiasR1:
     264    if ((obs->prn().system() == 'R') && (tLC == t_lc::l1)) {return 1.0;} else {return 0.0;}
     265    break;
    263266  case pBiasE1:
    264267    if ((obs->prn().system() == 'E') && (tLC == t_lc::l1)) {return 1.0;} else {return 0.0;}
     
    269272  case pBiasG2:
    270273    if ((obs->prn().system() == 'G') && (tLC == t_lc::l2)) {return 1.0;} else {return 0.0;}
     274    break;
     275  case pBiasR2:
     276    if ((obs->prn().system() == 'R') && (tLC == t_lc::l2)) {return 1.0;} else {return 0.0;}
    271277    break;
    272278  case pBiasE2:
     
    320326    ss << "BIA  " << left << setw(3) << t_lc::toString(_tLC) << right << " G  ";
    321327    break;
    322   case cBiasR1:
    323   case cBiasR2:
     328  case cBiasR1:  case pBiasR1:
     329  case cBiasR2:  case pBiasR2:
    324330    ss << "BIA  " << left << setw(3) << t_lc::toString(_tLC) << right << " R  ";
    325331    break;
     
    351357//
    352358////////////////////////////////////////////////////////////////////////////
    353 t_irc t_pppParlist::set(const bncTime& epoTime,
    354     const std::vector<t_pppSatObs*>& obsVector,
     359t_irc t_pppParlist::set(const bncTime& epoTime, const std::vector<t_pppSatObs*>& obsVector,
    355360    const QMap<char, t_pppRefSat*>& refSatMap) {
    356361
     
    374379      }
    375380    }
     381
    376382    else if (par->type() == t_pppParam::amb) {
    377       char system = par->prn().system();
    378       t_prn refPrn = t_prn();
    379       if (OPT->_refSatRequired) {
    380         refPrn = (refSatMap[system])->prn();
    381       }
    382       if ((par->lastObsTime().valid() &&
    383           (epoTime - par->lastObsTime() > 60.0)) ||
    384           (refPrn == par->prn())) {
    385         remove = true;
     383      if (OPT->_obsModelType == OPT->DCMcodeBias ||  OPT->_obsModelType == OPT->DCMphaseBias) {
     384        t_prn refPrn = (refSatMap[par->prn().system()])->prn();
     385        if (par->lastObsTime().valid() &&
     386            ((epoTime - par->lastObsTime() > 1.0) || (par->prn() == refPrn))) {
     387            remove = true;
     388        }
     389      }
     390      else {
     391        if (par->lastObsTime().valid() && (epoTime - par->lastObsTime() > 60.0)) {
     392            remove = true;
     393        }
    386394      }
    387395    }
     
    420428  }
    421429
     430  // Check if ambiguity parameters have observations
     431  // -----------------------------------------------
     432  if (OPT->_obsModelType == OPT->DCMcodeBias ||
     433      OPT->_obsModelType == OPT->DCMphaseBias) {
     434    vector<t_pppParam*>::iterator it = _params.begin();
     435    while (it != _params.end()) {
     436      t_pppParam* par = *it;
     437      bool remove = false;
     438      if (par->type() == t_pppParam::amb && !par->lastObsTime().valid()) {
     439        remove = true;
     440      }
     441      if (remove) {
     442        delete par;
     443        it = _params.erase(it);
     444      }
     445      else {
     446        ++it;
     447      }
     448    }
     449  }
     450
     451  // check which systems have observations
     452  // -------------------------------------
     453  _usedSystems.clear();
     454  for (unsigned jj = 0; jj < obsVector.size(); jj++) {
     455    const t_pppSatObs* satObs = obsVector[jj];
     456    char sys = satObs->prn().system();
     457    if (!_usedSystems.contains(sys)) {
     458      _usedSystems.append(sys);
     459    }
     460  }
     461
     462  if (_usedSystems.size() > 1 &&
     463      !_usedSystems.contains('G')) { // required to setup ISB w. r. t. GPS
     464    return failure;
     465  }
     466
    422467  // Required Set of Parameters
    423468  // --------------------------
     
    433478  // --------------------
    434479  if (OPT->_obsModelType == OPT->DCMcodeBias) {
    435     if (OPT->useSystem('G')) {
     480    if (_usedSystems.contains('G')) {
    436481      required.push_back(new t_pppParam(t_pppParam::cBiasG1, t_prn(), t_lc::c1));
    437482      required.push_back(new t_pppParam(t_pppParam::cBiasG2, t_prn(), t_lc::c2));
    438483    }
    439     if (OPT->useSystem('R')) {
     484    if (_usedSystems.contains('R')) {
    440485      required.push_back(new t_pppParam(t_pppParam::cBiasR1, t_prn(), t_lc::c1));
    441486      required.push_back(new t_pppParam(t_pppParam::cBiasR2, t_prn(), t_lc::c2));
    442487    }
    443     if (OPT->useSystem('E')) {
     488    if (_usedSystems.contains('E')) {
    444489      required.push_back(new t_pppParam(t_pppParam::cBiasE1, t_prn(), t_lc::c1));
    445490      required.push_back(new t_pppParam(t_pppParam::cBiasE2, t_prn(), t_lc::c2));
    446491    }
    447     if (OPT->useSystem('C')) {
     492    if (_usedSystems.contains('C')) {
    448493      required.push_back(new t_pppParam(t_pppParam::cBiasC1, t_prn(), t_lc::c1));
    449494      required.push_back(new t_pppParam(t_pppParam::cBiasC2, t_prn(), t_lc::c2));
     
    455500  if ((OPT->_obsModelType == OPT->DCMphaseBias) ||
    456501      (OPT->_obsModelType == OPT->PPPRTK)     ) {
    457     if (OPT->useSystem('G')) {
     502    if (_usedSystems.contains('G')) {
    458503      required.push_back(new t_pppParam(t_pppParam::pBiasG1, t_prn(), t_lc::l1));
    459504      required.push_back(new t_pppParam(t_pppParam::pBiasG2, t_prn(), t_lc::l2));
    460505    }
    461     if (OPT->useSystem('E')) {
     506    if (_usedSystems.contains('R')) {
     507      required.push_back(new t_pppParam(t_pppParam::pBiasR1, t_prn(), t_lc::l1));
     508      required.push_back(new t_pppParam(t_pppParam::pBiasR2, t_prn(), t_lc::l2));
     509    }
     510    if (_usedSystems.contains('E')) {
    462511      required.push_back(new t_pppParam(t_pppParam::pBiasE1, t_prn(), t_lc::l1));
    463512      required.push_back(new t_pppParam(t_pppParam::pBiasE2, t_prn(), t_lc::l2));
    464513    }
    465     if (OPT->useSystem('C')) {
     514    if (_usedSystems.contains('C')) {
    466515      required.push_back(new t_pppParam(t_pppParam::pBiasC1, t_prn(), t_lc::l1));
    467516      required.push_back(new t_pppParam(t_pppParam::pBiasC2, t_prn(), t_lc::l2));
    468517    }
    469518  }
     519
    470520  // Receiver Clock
    471521  // --------------
     
    474524  // GPS-GLONASS Clock Offset
    475525  // ------------------------
    476   if (OPT->useSystem('R') && OPT->useSystem('G')) {
     526  if (_usedSystems.contains('G') && _usedSystems.contains('R')) {
    477527    required.push_back(new t_pppParam(t_pppParam::offGR, t_prn(), t_lc::dummy));
    478528  }
    479529
    480   // GPS-Galileo Clock Offset
     530  //GPS-Galileo Clock Offset
    481531  // ------------------------
    482   if (OPT->useSystem('E') && OPT->useSystem('G')) {
     532  if (_usedSystems.contains('G') && _usedSystems.contains('E')) {
    483533    required.push_back(new t_pppParam(t_pppParam::offGE, t_prn(), t_lc::dummy));
    484534  }
     
    486536  // GPS-BDS Clock Offset
    487537  // ------------------------
    488   if (OPT->useSystem('C') && OPT->useSystem('G')) {
     538  if (_usedSystems.contains('G') && _usedSystems.contains('C')) {
    489539    required.push_back(new t_pppParam(t_pppParam::offGC, t_prn(), t_lc::dummy));
    490540  }
     
    509559  // -----------
    510560  for (unsigned jj = 0; jj < obsVector.size(); jj++) {
    511     const t_pppSatObs*        satObs = obsVector[jj];
     561    const t_pppSatObs*  satObs = obsVector[jj];
    512562    if ((OPT->_obsModelType == OPT->IF)        ||
    513563        (OPT->_obsModelType == OPT->PPPRTK)    ||
Note: See TracChangeset for help on using the changeset viewer.