Index: trunk/BNC/RTCM/GPSDecoder.h
===================================================================
--- trunk/BNC/RTCM/GPSDecoder.h	(revision 1565)
+++ trunk/BNC/RTCM/GPSDecoder.h	(revision 1566)
@@ -136,6 +136,4 @@
   }
 
-  virtual QList<int>* epochList() {return 0;}
-
   struct t_antInfo {
     enum t_type { ARP, APC };
Index: trunk/BNC/RTCM3/RTCM3Decoder.h
===================================================================
--- trunk/BNC/RTCM3/RTCM3Decoder.h	(revision 1565)
+++ trunk/BNC/RTCM3/RTCM3Decoder.h	(revision 1566)
@@ -41,6 +41,6 @@
   virtual ~RTCM3Decoder();
   virtual t_irc Decode(char* buffer, int bufLen, std::vector<std::string>& errmsg);
-  virtual QList<int>* epochList() {
-    return (_coDecoder ? &(_coDecoder->_epochList) : 0);
+  int corrGPSEpochTime() const {
+    return (_coDecoder ? _coDecoder->GPSEpochTime() : -1);
   }
  signals:
Index: trunk/BNC/RTCM3/RTCM3coDecoder.cpp
===================================================================
--- trunk/BNC/RTCM3/RTCM3coDecoder.cpp	(revision 1565)
+++ trunk/BNC/RTCM3/RTCM3coDecoder.cpp	(revision 1566)
@@ -142,9 +142,4 @@
       double GPSweeks;
       currentGPSWeeks(GPSweek, GPSweeks);
-
-      for (int kk = 0; kk < _co.epochSize; kk++) {
-        _epochList.push_back(_co.epochGPS[kk]);     /* Weber, for latency */
-      }
-
       if (_co.NumberOfGPSSat > 0) {
         if      (GPSweeks > _co.GPSEpochTime + 86400.0) {
Index: trunk/BNC/RTCM3/RTCM3coDecoder.h
===================================================================
--- trunk/BNC/RTCM3/RTCM3coDecoder.h	(revision 1565)
+++ trunk/BNC/RTCM3/RTCM3coDecoder.h	(revision 1566)
@@ -43,6 +43,5 @@
   virtual ~RTCM3coDecoder();
   virtual t_irc Decode(char* buffer, int bufLen, std::vector<std::string>& errmsg);
-  virtual QList<int>* epochList() {return &_epochList;}
-  QList<int>     _epochList;
+  int GPSEpochTime() const {return _co.GPSEpochTime;}
 
  signals:
Index: trunk/BNC/RTCM3/clock_orbit_rtcm.c
===================================================================
--- trunk/BNC/RTCM3/clock_orbit_rtcm.c	(revision 1565)
+++ trunk/BNC/RTCM3/clock_orbit_rtcm.c	(revision 1566)
@@ -3,5 +3,5 @@
         Name:           clock_orbit_rtcm.c
         Project:        RTCM3
-        Version:        $Id: clock_orbit_rtcm.c,v 1.4.2.3 2008/12/19 09:29:13 mervart Exp $
+        Version:        $Id: clock_orbit_rtcm.c,v 1.5 2008/12/19 10:16:59 mervart Exp $
         Authors:        Dirk Stöcker
         Description:    state space approach for RTCM3
@@ -502,6 +502,4 @@
     if(!co) return GCOBR_NOCLOCKORBITPARAMETER;
     G_GPS_EPOCH_TIME(co->GPSEpochTime, co->NumberOfGPSSat)
-    co->epochGPS[co->epochSize] = co->GPSEpochTime;   /* Weber, for latency */
-    if(co->epochSize < 100) {co->epochSize += 1;}     /* Weber, for latency */
     G_MULTIPLE_MESSAGE_INDICATOR(mmi)
     G_RESERVED6
@@ -530,6 +528,4 @@
     if(!co) return GCOBR_NOCLOCKORBITPARAMETER;
     G_GPS_EPOCH_TIME(co->GPSEpochTime, co->NumberOfGPSSat)
-    co->epochGPS[co->epochSize] = co->GPSEpochTime;   /* Weber, for latency */
-    if(co->epochSize < 100) {co->epochSize += 1;}     /* Weber, for latency */
     G_MULTIPLE_MESSAGE_INDICATOR(mmi)
     G_RESERVED6
@@ -550,6 +546,4 @@
     if(!co) return -5;
     G_GPS_EPOCH_TIME(co->GPSEpochTime, co->NumberOfGPSSat)
-    co->epochGPS[co->epochSize] = co->GPSEpochTime;   /* Weber, for latency */
-    if(co->epochSize < 100) {co->epochSize += 1;}     /* Weber, for latency */
     G_MULTIPLE_MESSAGE_INDICATOR(mmi)
     G_RESERVED6
Index: trunk/BNC/RTCM3/clock_orbit_rtcm.h
===================================================================
--- trunk/BNC/RTCM3/clock_orbit_rtcm.h	(revision 1565)
+++ trunk/BNC/RTCM3/clock_orbit_rtcm.h	(revision 1566)
@@ -6,5 +6,5 @@
         Name:           clock_orbit_rtcm.h
         Project:        RTCM3
-        Version:        $Id: clock_orbit_rtcm.h,v 1.2 2008/05/06 15:07:41 mervart Exp $
+        Version:        $Id: clock_orbit_rtcm.h,v 1.3 2008/08/15 16:29:19 weber Exp $
         Authors:        Dirk Stöcker
         Description:    state space approach for RTCM3
@@ -52,6 +52,4 @@
   int ClockDataSupplied;            /* boolean */
   int OrbitDataSupplied;            /* boolean */
-  int epochGPS[101];                /* Weber, for latency */
-  int epochSize;                    /* Weber, for latency */
   enum SatelliteReferencePoint SatRefPoint;
   enum SatelliteReferenceDatum SatRefDatum;
Index: trunk/BNC/bncgetthread.cpp
===================================================================
--- trunk/BNC/bncgetthread.cpp	(revision 1565)
+++ trunk/BNC/bncgetthread.cpp	(revision 1566)
@@ -377,5 +377,8 @@
       _latencyChecker->checkOutage(irc == success);
       _latencyChecker->checkObsLatency(_decoder->_obsList);
-      _latencyChecker->checkCorrLatency(_decoder->epochList());
+      RTCM3Decoder* rtcm3decoder =  dynamic_cast<RTCM3Decoder*>(_decoder);
+      if (rtcm3decoder) {
+        _latencyChecker->checkCorrLatency(rtcm3decoder->corrGPSEpochTime());
+      }
       scanRTCM();            
 
Index: trunk/BNC/latencychecker.cpp
===================================================================
--- trunk/BNC/latencychecker.cpp	(revision 1565)
+++ trunk/BNC/latencychecker.cpp	(revision 1566)
@@ -338,7 +338,7 @@
 // Perform latency checks (corrections)
 //////////////////////////////////////////////////////////////////////////////
-void latencyChecker::checkCorrLatency(QList<int>* epochList) {
-
-  if (epochList == 0) {
+void latencyChecker::checkCorrLatency(int corrGPSEpochTime) {
+
+  if (corrGPSEpochTime < 0) {
     return;
   }
@@ -347,79 +347,74 @@
     if (_perfIntr > 0) {
 
-      QListIterator<int> it(*epochList);
-      while (it.hasNext()) {
-        _newSecGPS = it.next();
-
-        int week;
-        double sec;
-        currentGPSWeeks(week, sec);
-        double dt = fabs(sec - _newSecGPS);
-        const double secPerWeek = 7.0 * 24.0 * 3600.0;
-        if (dt > 0.5 * secPerWeek) {
-          if (sec > _newSecGPS) {
-            sec  -= secPerWeek;
-          } else {
-            sec  += secPerWeek;
-          }
-        }
-        if (_newSecGPS != _oldSecGPS) {
-          if (int(_newSecGPS) % _perfIntr < int(_oldSecGPS) % _perfIntr) {
-            if (_numLat>0) {
-              QString late;
-              if (_meanDiff>0.) {
-                late = QString(": Mean latency %1 sec, min %2, max %3, rms %4, %5 epochs, %6 gaps")
-                .arg(int(_sumLat/_numLat*100)/100.)
-                .arg(int(_minLat*100)/100.)
-                .arg(int(_maxLat*100)/100.)
-                .arg(int((sqrt((_sumLatQ - _sumLat * _sumLat / _numLat)/_numLat))*100)/100.)
-                .arg(_numLat)
-                .arg(_numGaps);
-                emit(newMessage(QString(_staID + late ).toAscii(), true) );
-              } 
-              else {
-                late = QString(": Mean latency %1 sec, min %2, max %3, rms %4, %5 epochs")
-                .arg(int(_sumLat/_numLat*100)/100.)
-                .arg(int(_minLat*100)/100.)
-                .arg(int(_maxLat*100)/100.)
-                .arg(int((sqrt((_sumLatQ - _sumLat * _sumLat / _numLat)/_numLat))*100)/100.)
-                .arg(_numLat);
-                emit(newMessage(QString(_staID + late ).toAscii(), true) );
-              }
+      _newSecGPS = corrGPSEpochTime;
+
+      int week;
+      double sec;
+      currentGPSWeeks(week, sec);
+      double dt = fabs(sec - _newSecGPS);
+      const double secPerWeek = 7.0 * 24.0 * 3600.0;
+      if (dt > 0.5 * secPerWeek) {
+        if (sec > _newSecGPS) {
+          sec  -= secPerWeek;
+        } else {
+          sec  += secPerWeek;
+        }
+      }
+      if (_newSecGPS != _oldSecGPS) {
+        if (int(_newSecGPS) % _perfIntr < int(_oldSecGPS) % _perfIntr) {
+          if (_numLat>0) {
+            QString late;
+            if (_meanDiff>0.) {
+              late = QString(": Mean latency %1 sec, min %2, max %3, rms %4, %5 epochs, %6 gaps")
+              .arg(int(_sumLat/_numLat*100)/100.)
+              .arg(int(_minLat*100)/100.)
+              .arg(int(_maxLat*100)/100.)
+              .arg(int((sqrt((_sumLatQ - _sumLat * _sumLat / _numLat)/_numLat))*100)/100.)
+              .arg(_numLat)
+              .arg(_numGaps);
+              emit(newMessage(QString(_staID + late ).toAscii(), true) );
+            } 
+            else {
+              late = QString(": Mean latency %1 sec, min %2, max %3, rms %4, %5 epochs")
+              .arg(int(_sumLat/_numLat*100)/100.)
+              .arg(int(_minLat*100)/100.)
+              .arg(int(_maxLat*100)/100.)
+              .arg(int((sqrt((_sumLatQ - _sumLat * _sumLat / _numLat)/_numLat))*100)/100.)
+              .arg(_numLat);
+              emit(newMessage(QString(_staID + late ).toAscii(), true) );
             }
-            _meanDiff = int(_diffSecGPS)/_numLat;
-            _diffSecGPS = 0;
-            _numGaps    = 0;
-            _sumLat     = 0.0;
-            _sumLatQ    = 0.0;
-            _numLat     = 0;
-            _minLat     = 1000.;
-            _maxLat     = -1000.;
-          }
-          if (_followSec) {
-            _diffSecGPS += _newSecGPS - _oldSecGPS;
-            if (_meanDiff>0.) {
-              if (_newSecGPS - _oldSecGPS > 1.5 * _meanDiff) {
-                _numGaps += 1;
-              }
+          }
+          _meanDiff = int(_diffSecGPS)/_numLat;
+          _diffSecGPS = 0;
+          _numGaps    = 0;
+          _sumLat     = 0.0;
+          _sumLatQ    = 0.0;
+          _numLat     = 0;
+          _minLat     = 1000.;
+          _maxLat     = -1000.;
+        }
+        if (_followSec) {
+          _diffSecGPS += _newSecGPS - _oldSecGPS;
+          if (_meanDiff>0.) {
+            if (_newSecGPS - _oldSecGPS > 1.5 * _meanDiff) {
+              _numGaps += 1;
             }
           }
-          _curLat   = sec - _newSecGPS;
-          _sumLat  += _curLat;
-          _sumLatQ += _curLat * _curLat;
-          if (_curLat < _minLat) {
-            _minLat = _curLat;
-          }
-          if (_curLat >= _maxLat) {
-            _maxLat = _curLat;
-          }
-          _numLat += 1;
-          _oldSecGPS = _newSecGPS;
-          _followSec = true;
-        }
-      }
-    }
-  }
-  
-  epochList->clear();
+        }
+        _curLat   = sec - _newSecGPS;
+        _sumLat  += _curLat;
+        _sumLatQ += _curLat * _curLat;
+        if (_curLat < _minLat) {
+          _minLat = _curLat;
+        }
+        if (_curLat >= _maxLat) {
+          _maxLat = _curLat;
+        }
+        _numLat += 1;
+        _oldSecGPS = _newSecGPS;
+        _followSec = true;
+      }
+    }
+  }
 }
 
Index: trunk/BNC/latencychecker.h
===================================================================
--- trunk/BNC/latencychecker.h	(revision 1565)
+++ trunk/BNC/latencychecker.h	(revision 1566)
@@ -38,5 +38,5 @@
   void checkOutage(bool decoded);
   void checkObsLatency(const QList<p_obs>& obsList);
-  void checkCorrLatency(QList<int>* epochList);
+  void checkCorrLatency(int corrGPSEpochTime);
 
  signals:
