Changeset 1978 in ntrip


Ignore:
Timestamp:
Nov 18, 2009, 10:36:47 AM (14 years ago)
Author:
weber
Message:

* empty log message *

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/BNC/latencychecker.cpp

    r1973 r1978  
    309309void latencyChecker::checkObsLatency(const QList<p_obs>& obsList) {
    310310
    311   if ( _checkMountPoint == _staID || _checkMountPoint == "ALL" ) {
    312     if (_perfIntr > 0 ) {
    313 
    314       QListIterator<p_obs> it(obsList);
    315       while (it.hasNext()) {
    316         p_obs obs = it.next();
     311  if (_perfIntr > 0 ) {
     312
     313    QListIterator<p_obs> it(obsList);
     314    while (it.hasNext()) {
     315      p_obs obs = it.next();
    317316     
    318         _newSecGPS = static_cast<int>(obs->_o.GPSWeeks);
    319         if (_newSecGPS != _oldSecGPS) {
    320           if (_newSecGPS % _perfIntr < _oldSecGPS % _perfIntr) {
    321             if (_numLat > 0) {
    322               if (_meanDiff > 0.0) {
     317      _newSecGPS = static_cast<int>(obs->_o.GPSWeeks);
     318      if (_newSecGPS != _oldSecGPS) {
     319        if (_newSecGPS % _perfIntr < _oldSecGPS % _perfIntr) {
     320          if (_numLat > 0) {
     321            if (_meanDiff > 0.0) {
     322              if ( _checkMountPoint == _staID || _checkMountPoint == "ALL" ) {
    323323                emit( newMessage(QString("%1: Mean latency %2 sec, min %3, max %4, rms %5, %6 epochs, %7 gaps")
    324324                  .arg(_staID.data())
     
    330330                  .arg(_numGaps)
    331331                  .toAscii(), true) );
    332               } else {
     332              }
     333            } else {
     334              if ( _checkMountPoint == _staID || _checkMountPoint == "ALL" ) {
    333335                emit( newMessage(QString("%1: Mean latency %2 sec, min %3, max %4, rms %5, %6 epochs")
    334336                  .arg(_staID.data())
     
    341343              }
    342344            }
    343             _meanDiff  = _diffSecGPS / _numLat;
    344             _diffSecGPS = 0;
    345             _numGaps    = 0;
    346             _sumLat     = 0.0;
    347             _sumLatQ    = 0.0;
    348             _numLat     = 0;
    349             _minLat     = _maxDt;
    350             _maxLat     = -_maxDt;
    351345          }
    352           if (_followSec) {
    353             _diffSecGPS += _newSecGPS - _oldSecGPS;
    354             if (_meanDiff>0.) {
    355               if (_newSecGPS - _oldSecGPS > 1.5 * _meanDiff) {
    356                 _numGaps += 1;
    357               }
    358             }
    359           }
    360 
    361           // Compute the observations latency
    362           // --------------------------------
    363           int week;
    364           double sec;
    365           currentGPSWeeks(week, sec);
    366           const double secPerWeek = 7.0 * 24.0 * 3600.0;
    367           if (week < obs->_o.GPSWeek) {
    368             week += 1;
    369             sec  -= secPerWeek;
    370           }
    371           if (week > obs->_o.GPSWeek) {
    372             week -= 1;
    373             sec  += secPerWeek;
    374           }
    375 
    376           _curLat   = sec - obs->_o.GPSWeeks;
    377           _sumLat  += _curLat;
    378           _sumLatQ += _curLat * _curLat;
    379           if (_curLat < _minLat) {
    380             _minLat = _curLat;
    381           }
    382           if (_curLat >= _maxLat) {
    383             _maxLat = _curLat;
    384           }
    385           _numLat += 1;
    386           _oldSecGPS = _newSecGPS;
    387           _followSec = true;
    388         }
    389       }
    390     }
    391   }
    392 }
    393 
    394 // Perform latency checks (corrections)
    395 //////////////////////////////////////////////////////////////////////////////
    396 void latencyChecker::checkCorrLatency(int corrGPSEpochTime) {
    397 
    398   if (corrGPSEpochTime < 0) {
    399     return;
    400   }
    401 
    402   if ( _checkMountPoint == _staID || _checkMountPoint == "ALL" ) {
    403     if (_perfIntr > 0) {
    404 
    405       _newSecGPS = corrGPSEpochTime;
    406 
    407       int week;
    408       double sec;
    409       currentGPSWeeks(week, sec);
    410       double dt = fabs(sec - _newSecGPS);
    411       const double secPerWeek = 7.0 * 24.0 * 3600.0;
    412       if (dt > 0.5 * secPerWeek) {
    413         if (sec > _newSecGPS) {
    414           sec  -= secPerWeek;
    415         } else {
    416           sec  += secPerWeek;
    417         }
    418       }
    419       if (_newSecGPS != _oldSecGPS) {
    420         if (int(_newSecGPS) % _perfIntr < int(_oldSecGPS) % _perfIntr) {
    421           if (_numLat>0) {
    422             QString late;
    423             if (_meanDiff>0.) {
    424               late = QString(": Mean latency %1 sec, min %2, max %3, rms %4, %5 epochs, %6 gaps")
    425               .arg(int(_sumLat/_numLat*100)/100.)
    426               .arg(int(_minLat*100)/100.)
    427               .arg(int(_maxLat*100)/100.)
    428               .arg(int((sqrt((_sumLatQ - _sumLat * _sumLat / _numLat)/_numLat))*100)/100.)
    429               .arg(_numLat)
    430               .arg(_numGaps);
    431               emit(newMessage(QString(_staID + late ).toAscii(), true) );
    432             }
    433             else {
    434               late = QString(": Mean latency %1 sec, min %2, max %3, rms %4, %5 epochs")
    435               .arg(int(_sumLat/_numLat*100)/100.)
    436               .arg(int(_minLat*100)/100.)
    437               .arg(int(_maxLat*100)/100.)
    438               .arg(int((sqrt((_sumLatQ - _sumLat * _sumLat / _numLat)/_numLat))*100)/100.)
    439               .arg(_numLat);
    440               emit(newMessage(QString(_staID + late ).toAscii(), true) );
    441             }
    442           }
    443           _meanDiff = int(_diffSecGPS)/_numLat;
     346          _meanDiff  = _diffSecGPS / _numLat;
    444347          _diffSecGPS = 0;
    445348          _numGaps    = 0;
     
    447350          _sumLatQ    = 0.0;
    448351          _numLat     = 0;
    449           _minLat     = 1000.;
    450           _maxLat     = -1000.;
     352          _minLat     = _maxDt;
     353          _maxLat     = -_maxDt;
    451354        }
    452355        if (_followSec) {
     
    458361          }
    459362        }
    460         _curLat   = sec - _newSecGPS;
     363
     364        // Compute the observations latency
     365        // --------------------------------
     366        int week;
     367        double sec;
     368        currentGPSWeeks(week, sec);
     369        const double secPerWeek = 7.0 * 24.0 * 3600.0;
     370        if (week < obs->_o.GPSWeek) {
     371          week += 1;
     372          sec  -= secPerWeek;
     373        }
     374        if (week > obs->_o.GPSWeek) {
     375          week -= 1;
     376          sec  += secPerWeek;
     377        }
     378         _curLat   = sec - obs->_o.GPSWeeks;
    461379        _sumLat  += _curLat;
    462380        _sumLatQ += _curLat * _curLat;
     
    471389        _followSec = true;
    472390      }
     391    }
     392  }
     393}
     394
     395// Perform latency checks (corrections)
     396//////////////////////////////////////////////////////////////////////////////
     397void latencyChecker::checkCorrLatency(int corrGPSEpochTime) {
     398
     399  if (corrGPSEpochTime < 0) {
     400    return;
     401  }
     402
     403  if (_perfIntr > 0) {
     404
     405    _newSecGPS = corrGPSEpochTime;
     406
     407    int week;
     408    double sec;
     409    currentGPSWeeks(week, sec);
     410    double dt = fabs(sec - _newSecGPS);
     411    const double secPerWeek = 7.0 * 24.0 * 3600.0;
     412    if (dt > 0.5 * secPerWeek) {
     413      if (sec > _newSecGPS) {
     414        sec  -= secPerWeek;
     415      } else {
     416        sec  += secPerWeek;
     417      }
     418    }
     419    if (_newSecGPS != _oldSecGPS) {
     420      if (int(_newSecGPS) % _perfIntr < int(_oldSecGPS) % _perfIntr) {
     421        if (_numLat>0) {
     422          QString late;
     423          if (_meanDiff>0.) {
     424            late = QString(": Mean latency %1 sec, min %2, max %3, rms %4, %5 epochs, %6 gaps")
     425            .arg(int(_sumLat/_numLat*100)/100.)
     426            .arg(int(_minLat*100)/100.)
     427            .arg(int(_maxLat*100)/100.)
     428            .arg(int((sqrt((_sumLatQ - _sumLat * _sumLat / _numLat)/_numLat))*100)/100.)
     429            .arg(_numLat)
     430            .arg(_numGaps);
     431            if ( _checkMountPoint == _staID || _checkMountPoint == "ALL" ) {
     432              emit(newMessage(QString(_staID + late ).toAscii(), true) );
     433            }
     434          }
     435          else {
     436            late = QString(": Mean latency %1 sec, min %2, max %3, rms %4, %5 epochs")
     437            .arg(int(_sumLat/_numLat*100)/100.)
     438            .arg(int(_minLat*100)/100.)
     439            .arg(int(_maxLat*100)/100.)
     440            .arg(int((sqrt((_sumLatQ - _sumLat * _sumLat / _numLat)/_numLat))*100)/100.)
     441            .arg(_numLat);
     442            if ( _checkMountPoint == _staID || _checkMountPoint == "ALL" ) {
     443            emit(newMessage(QString(_staID + late ).toAscii(), true) );
     444            }
     445          }
     446        }
     447        _meanDiff = int(_diffSecGPS)/_numLat;
     448        _diffSecGPS = 0;
     449        _numGaps    = 0;
     450        _sumLat     = 0.0;
     451        _sumLatQ    = 0.0;
     452        _numLat     = 0;
     453        _minLat     = 1000.;
     454        _maxLat     = -1000.;
     455      }
     456      if (_followSec) {
     457        _diffSecGPS += _newSecGPS - _oldSecGPS;
     458        if (_meanDiff>0.) {
     459          if (_newSecGPS - _oldSecGPS > 1.5 * _meanDiff) {
     460            _numGaps += 1;
     461          }
     462        }
     463      }
     464      _curLat   = sec - _newSecGPS;
     465      _sumLat  += _curLat;
     466      _sumLatQ += _curLat * _curLat;
     467      if (_curLat < _minLat) {
     468        _minLat = _curLat;
     469      }
     470      if (_curLat >= _maxLat) {
     471        _maxLat = _curLat;
     472      }
     473      _numLat += 1;
     474      _oldSecGPS = _newSecGPS;
     475      _followSec = true;
    473476    }
    474477  }
Note: See TracChangeset for help on using the changeset viewer.