Ignore:
Timestamp:
Jun 11, 2018, 11:39:18 AM (6 years ago)
Author:
stuerze
Message:

small bug fixes in 'reqc' ephemeris check

File:
1 edited

Legend:

Unmodified
Added
Removed
  • branches/BNC_2.12/src/bncephuser.cpp

    r8322 r8370  
    8383////////////////////////////////////////////////////////////////////////////
    8484void bncEphUser::slotNewGPSEph(t_ephGPS eph) {
    85   putNewEph(&eph, false);
     85  putNewEph(&eph, true);
    8686}
    8787
     
    8989////////////////////////////////////////////////////////////////////////////
    9090void bncEphUser::slotNewGlonassEph(t_ephGlo eph) {
    91   putNewEph(&eph, false);
     91  putNewEph(&eph, true);
    9292}
    9393
     
    9595////////////////////////////////////////////////////////////////////////////
    9696void bncEphUser::slotNewGalileoEph(t_ephGal eph) {
    97   putNewEph(&eph, false);
     97  putNewEph(&eph, true);
    9898}
    9999
     
    101101////////////////////////////////////////////////////////////////////////////
    102102void bncEphUser::slotNewSBASEph(t_ephSBAS eph) {
    103   putNewEph(&eph, false);
     103  putNewEph(&eph, true);
    104104}
    105105
     
    107107////////////////////////////////////////////////////////////////////////////
    108108void 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////////////////////////////////////////////////////////////////////////////
     114t_irc bncEphUser::putNewEph(t_eph* eph, bool realTime) {
    115115
    116116  QMutexLocker locker(&_mutex);
     
    120120  }
    121121
    122   if (check) {
    123     checkEphemeris(eph);
    124   }
     122  checkEphemeris(eph, realTime);
     123
    125124
    126125  const t_ephGPS*     ephGPS     = dynamic_cast<const t_ephGPS*>(eph);
     
    175174//
    176175////////////////////////////////////////////////////////////////////////////
    177 void bncEphUser::checkEphemeris(t_eph* eph) {
     176void bncEphUser::checkEphemeris(t_eph* eph, bool realTime) {
    178177
    179178  if (!eph || eph->checkState() == t_eph::ok || eph->checkState() == t_eph::bad) {
     
    207206  // Check whether the epoch is too far away the current time
    208207  // --------------------------------------------------------
    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 
    243244  // Check consistency with older ephemerides
    244245  // ----------------------------------------
Note: See TracChangeset for help on using the changeset viewer.