Changeset 9361 in ntrip for trunk


Ignore:
Timestamp:
Mar 5, 2021, 10:48:34 AM (4 years ago)
Author:
stuerze
Message:

eph check ajusted

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/BNC/src/bncephuser.cpp

    r9332 r9361  
    224224    double dt = currentTime - toc;
    225225
    226     // update interval: 2h, data sets are valid for 4 hours
    227     if      (eph->type() == t_eph::GPS     && (dt > 4*3600.0 || dt < -2*3600.0)) {
    228       eph->setCheckState(t_eph::outdated);
    229       return;
    230     }
    231     // update interval: 3h, data sets are valid for 4 hours
    232     else if (eph->type() == t_eph::Galileo && (dt > 4*3600.0 || dt <      0.0)) {
    233       eph->setCheckState(t_eph::outdated);
    234       return;
    235     }
    236     // updated every 30 minutes
    237     else if (eph->type() == t_eph::GLONASS && (dt > 1*3600.0 || dt <   -1800.0)) {
    238       eph->setCheckState(t_eph::outdated);
    239       return;
    240     }
    241     // orbit parameters are valid for 7200 seconds (minimum)
    242     else if (eph->type() == t_eph::QZSS    && (dt > 2*3600.0 || dt < -1*3600.0)) {
    243       eph->setCheckState(t_eph::outdated);
    244       return;
    245     }
    246     // maximum update interval: 300 sec
    247     else if (eph->type() == t_eph::SBAS    && (dt >     600 || dt <     -300.0)) {
    248       eph->setCheckState(t_eph::outdated);
    249       return;
    250     }
    251     // updates 1h (GEO) up to 6 hours non-GEO
    252     else if (eph->type() == t_eph::BDS     && (dt > 6*3600  || dt <        0.0)) {
    253       eph->setCheckState(t_eph::outdated);
    254       return;
    255     }
    256     // update interval: up to 24 hours
    257     else if (eph->type() == t_eph::IRNSS   && fabs(dt > 24*3600.0)) {
     226    // update interval: 2h, data sets are valid for 4 hours + 5 min
     227    if      (eph->type() == t_eph::GPS     && (dt > 14700.0 || dt < -7500.0)) {
     228      eph->setCheckState(t_eph::outdated);
     229      return;
     230    }
     231    // update interval: 3h, data sets are valid for 4 hours + 5 min
     232    else if (eph->type() == t_eph::Galileo && (dt > 14700.0 || dt < 0.0)) {
     233      eph->setCheckState(t_eph::outdated);
     234      return;
     235    }
     236    // updated every 30 minutes + 5 min
     237    else if (eph->type() == t_eph::GLONASS && (dt > 3900.0 || dt < -2100.0)) {
     238      eph->setCheckState(t_eph::outdated);
     239      return;
     240    }
     241    // orbit parameters are valid for 7200 seconds (minimum) + 5 min
     242    else if (eph->type() == t_eph::QZSS    && (dt > 7500.0 || dt < 3900.0)) {
     243      eph->setCheckState(t_eph::outdated);
     244      return;
     245    }
     246    // maximum update interval: 300 sec + 5 min
     247    else if (eph->type() == t_eph::SBAS    && (dt > 600.0 || dt < -600.0)) {
     248      eph->setCheckState(t_eph::outdated);
     249      return;
     250    }
     251    // updates 1h + 5 min
     252    else if (eph->type() == t_eph::BDS     && (dt > 3900.0 || dt < 0.0)) {
     253      eph->setCheckState(t_eph::outdated);
     254      return;
     255    }
     256    // update interval: up to 24 hours + 5 min
     257    else if (eph->type() == t_eph::IRNSS   && fabs(dt > 86700.0)) {
    258258      eph->setCheckState(t_eph::outdated);
    259259      return;
     
    263263  // Check consistency with older ephemeris
    264264  // --------------------------------------
    265   const double MAXDIFF = 10.0;
    266   const double MINDIFF = 0.005;
    267   QString      prn     = QString(eph->prn().toInternalString().c_str());
    268   t_eph*       ephL    = ephLast(prn);
     265  const double MAXDIFF_INIT = 10.0;
     266  const double MINDIFF      = 0.005;
     267  QString      prn          = QString(eph->prn().toInternalString().c_str());
     268  t_eph*       ephL         = ephLast(prn);
     269
     270  // maxdiff adapted to individual systems
     271  char   sys     = eph->prn().system();
     272  double MAXDIFF = MAXDIFF_INIT;
     273  if (sys == 'C' ||
     274      sys == 'S'    ) {
     275    MAXDIFF *= 10.0;
     276  }
    269277
    270278  if (ephL) {
     
    293301    }
    294302
    295     double dt = eph->TOC() - ephL->TOC();
    296303    // some lines to allow update of ephemeris data sets after an outage
    297304    // -----------------------------------------------------------------
    298     // update interval: 2h,
    299     // sometimes corrected BRDC sets are sent with TOC values 16 seconds
    300     // before the nominal TOC (integer time)
    301     if      (eph->type() == t_eph::GPS     && dt > (2*3600.0 + 60.0)) {
    302       ephL->setCheckState(t_eph::outdated);
    303       return;
    304     }
    305     // update interval: 3h,
    306     else if (eph->type() == t_eph::Galileo && dt > (3*3600.0 + 60.0)) {
     305    double dt = eph->TOC() - ephL->TOC();
     306
     307    // update interval: 2h, + 5 min
     308    if      (eph->type() == t_eph::GPS     && dt > 3900.0) {
     309      ephL->setCheckState(t_eph::outdated);
     310      return;
     311    }
     312    // update interval: 3h, + 5 min
     313    else if (eph->type() == t_eph::Galileo && dt > 11100.0) {
    307314      ephL->setCheckState(t_eph::outdated);
    308315      return;
    309316    }
    310317    // updated every 30 minutes
    311     else if (eph->type() == t_eph::GLONASS && dt > (  1800.0 + 60.0)) {
     318    else if (eph->type() == t_eph::GLONASS && dt > 2100.0) {
    312319      ephL->setCheckState(t_eph::outdated);
    313320      return;
    314321    }
    315322    // updated every ?
    316     else if (eph->type() == t_eph::QZSS    && dt > (2*3600.0 + 60.0)) {
    317       ephL->setCheckState(t_eph::outdated);
    318       return;
    319     }
    320     // maximum update interval: 300 sec
    321     else if  (eph->type() == t_eph::SBAS   && dt > (   300.0)) {
    322       ephL->setCheckState(t_eph::outdated);
    323       return;
    324     }
    325     // updates 1h (GEO) up to 6 hours non-GEO
    326     else if  (eph->type() == t_eph::BDS    && dt >  6*3600.0) {
    327       ephL->setCheckState(t_eph::outdated);
    328       return;
    329     }
    330     // update interval: up to 24 hours
    331     else if  (eph->type() == t_eph::IRNSS  && dt > 24*3600.0) {
     323    else if (eph->type() == t_eph::QZSS    && dt > 3900.0) {
     324      ephL->setCheckState(t_eph::outdated);
     325      return;
     326    }
     327    // maximum update interval: 300 sec + 5 min
     328    else if  (eph->type() == t_eph::SBAS   && dt > 600.0) {
     329      ephL->setCheckState(t_eph::outdated);
     330      return;
     331    }
     332    // updates 1h + 5 min
     333    else if  (eph->type() == t_eph::BDS    && dt > 3900.0) {
     334      ephL->setCheckState(t_eph::outdated);
     335      return;
     336    }
     337    // update interval: up to 24 hours + 5 min
     338    else if  (eph->type() == t_eph::IRNSS  && dt > 86700.0) {
    332339      ephL->setCheckState(t_eph::outdated);
    333340      return;
Note: See TracChangeset for help on using the changeset viewer.