Changeset 8368 in ntrip for trunk/BNC/src/bncephuser.cpp


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

small bug fixes in 'reqc' ephemeris check

File:
1 edited

Legend:

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

    r8317 r8368  
    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);
    125123
    126124  const t_ephGPS*     ephGPS     = dynamic_cast<const t_ephGPS*>(eph);
     
    175173//
    176174////////////////////////////////////////////////////////////////////////////
    177 void bncEphUser::checkEphemeris(t_eph* eph) {
     175void bncEphUser::checkEphemeris(t_eph* eph, bool realTime) {
    178176
    179177  if (!eph || eph->checkState() == t_eph::ok || eph->checkState() == t_eph::bad) {
     
    207205  // Check whether the epoch is too far away the current time
    208206  // --------------------------------------------------------
    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 
     207  if (realTime) {
     208    bncTime toc = eph->TOC();
     209    QDateTime now = currentDateAndTimeGPS();
     210    bncTime currentTime(now.toString(Qt::ISODate).toStdString());
     211    double timeDiff = fabs(toc - currentTime);
     212
     213    if (eph->type() == t_eph::GPS && timeDiff > 4 * 3600) { // update interval: 2h, data sets are valid for 4 hours
     214      eph->setCheckState(t_eph::outdated);
     215      return;
     216    }
     217    else if (eph->type() == t_eph::Galileo && timeDiff > 4 * 3600) { // update interval: 2h, data sets are valid for 4 hours
     218      eph->setCheckState(t_eph::outdated);
     219      return;
     220    }
     221    else if (eph->type() == t_eph::GLONASS && timeDiff > 1 * 3600) { // updated every 30 minutes
     222      eph->setCheckState(t_eph::outdated);
     223      return;
     224    }
     225    else if (eph->type() == t_eph::QZSS && timeDiff > 4 * 3600) { // orbit parameters are valid for 7200 seconds (at minimum)
     226      eph->setCheckState(t_eph::outdated);
     227      return;
     228    }
     229    else if (eph->type() == t_eph::SBAS && timeDiff > 600) { // maximum update interval: 300 sec
     230      eph->setCheckState(t_eph::outdated);
     231      return;
     232    }
     233    else if (eph->type() == t_eph::BDS && timeDiff > 6 * 3600) { // updates (GEO) up to 6 hours
     234      eph->setCheckState(t_eph::outdated);
     235      return;
     236    }
     237    else if (eph->type() == t_eph::IRNSS && timeDiff > 24 * 3600) { // update interval: up to 24 hours
     238      eph->setCheckState(t_eph::outdated);
     239      return;
     240    }
     241  }
    244242
    245243  // Check consistency with older ephemerides
Note: See TracChangeset for help on using the changeset viewer.