Index: /trunk/BNC/src/RTRover/bncrtrover.cpp
===================================================================
--- /trunk/BNC/src/RTRover/bncrtrover.cpp	(revision 5524)
+++ /trunk/BNC/src/RTRover/bncrtrover.cpp	(revision 5525)
@@ -396,5 +396,5 @@
 //
 ////////////////////////////////////////////////////////////////////////////
-void t_bncRtrover::slotNewObs(QByteArray staID, bool /* firstObs */, t_obs obsIn) {
+void t_bncRtrover::slotNewObs(QByteArray staID, QList<t_obs> obsList) {
   QMutexLocker locker(&_mutex);
 
@@ -403,89 +403,95 @@
   }
 
-  bncTime obsTime(obsIn.GPSWeek, obsIn.GPSWeeks);
-
-  // Find corresponding epoch or create a new one
-  // --------------------------------------------
-  t_epoData* epoData = 0;
-  for (unsigned ii = 0; ii < _epochs.size(); ii++) {
-    if (_epochs[ii]->_time == obsTime) {
-      epoData = _epochs[ii];
-      break;
-    }
-  }
-  if (epoData == 0) {
-    if (_epochs.size() == 0 || _epochs.back()->_time < obsTime) {
-      epoData = new t_epoData();
-      epoData->_time = obsTime;
-      _epochs.push_back(epoData);
-    }
-    else {
+  QListIterator<t_obs> it(obsList);
+  while (it.hasNext()) {
+
+    const t_obs& obsIn = it.next();
+
+    bncTime obsTime(obsIn.GPSWeek, obsIn.GPSWeeks);
+    
+    // Find corresponding epoch or create a new one
+    // --------------------------------------------
+    t_epoData* epoData = 0;
+    for (unsigned ii = 0; ii < _epochs.size(); ii++) {
+      if (_epochs[ii]->_time == obsTime) {
+        epoData = _epochs[ii];
+        break;
+      }
+    }
+    if (epoData == 0) {
+      if (_epochs.size() == 0 || _epochs.back()->_time < obsTime) {
+        epoData = new t_epoData();
+        epoData->_time = obsTime;
+        _epochs.push_back(epoData);
+      }
+      else {
+        return;
+      } 
+    }
+    
+    // Store observation into epoch class
+    // ----------------------------------
+    if      (staID == _roverMount) {
+      epoData->_obsRover.push_back(obsIn);
+    }
+    else if (staID == _baseMount) {
+      epoData->_obsBase.push_back(obsIn);
+    }
+    
+    // Wait for observations
+    // ---------------------
+    const double WAITTIME = 5.0;
+    double dt = 0.0;
+    if (_epochs.size() > 1) {
+      dt = _epochs.back()->_time - _epochs.front()->_time;
+    }
+    if (dt < WAITTIME) {
       return;
-    } 
-  }
-
-  // Store observation into epoch class
-  // ----------------------------------
-  if      (staID == _roverMount) {
-    epoData->_obsRover.push_back(obsIn);
-  }
-  else if (staID == _baseMount) {
-    epoData->_obsBase.push_back(obsIn);
-  }
-
-  // Wait for observations
-  // ---------------------
-  const double WAITTIME = 5.0;
-  double dt = 0.0;
-  if (_epochs.size() > 1) {
-    dt = _epochs.back()->_time - _epochs.front()->_time;
-  }
-  if (dt < WAITTIME) {
-    return;
-  }
-
-  // Copy observations into rtrover_satObs structures
-  // ------------------------------------------------
-  t_epoData* frontEpoData = _epochs.front();
-  _epochs.erase(_epochs.begin());
-
-  int numSatRover = frontEpoData->_obsRover.size();
-  rtrover_satObs satObsRover[numSatRover];
-  for (int ii = 0; ii < numSatRover; ii++) {
-    const t_obs& obsBnc = frontEpoData->_obsRover[ii];
-    rtrover_satObs& satObs = satObsRover[ii];
-    copyObs(obsBnc, satObs);
-  }
-
-  int numSatBase = frontEpoData->_obsBase.size();
-  rtrover_satObs satObsBase[numSatBase];
-  for (int ii = 0; ii < numSatBase; ii++) {
-    const t_obs& obsBnc = frontEpoData->_obsBase[ii];
-    rtrover_satObs& satObs = satObsBase[ii];
-    copyObs(obsBnc, satObs);
-  }
-
-  delete frontEpoData;
-
-  // Process single epoch
-  // --------------------
-  rtrover_output output;
-  rtrover_processEpoch(numSatRover, satObsRover, numSatBase, satObsBase, &output);
-
-  // Write output
-  // ---------------------
-  _outputFile.write(output._log);
-  _outputFile.flush();
-
-  // Free memory
-  // -----------
-  rtrover_freeOutput(&output);
-  for (int ii = 0; ii < numSatRover; ii++) {
-    rtrover_satObs& satObs = satObsRover[ii];
-    delete [] satObs._obs;
-  }
-  for (int ii = 0; ii < numSatBase; ii++) {
-    rtrover_satObs& satObs = satObsBase[ii];
-    delete [] satObs._obs;
-  }
-}
+    }
+    
+    // Copy observations into rtrover_satObs structures
+    // ------------------------------------------------
+    t_epoData* frontEpoData = _epochs.front();
+    _epochs.erase(_epochs.begin());
+    
+    int numSatRover = frontEpoData->_obsRover.size();
+    rtrover_satObs satObsRover[numSatRover];
+    for (int ii = 0; ii < numSatRover; ii++) {
+      const t_obs& obsBnc = frontEpoData->_obsRover[ii];
+      rtrover_satObs& satObs = satObsRover[ii];
+      copyObs(obsBnc, satObs);
+    }
+    
+    int numSatBase = frontEpoData->_obsBase.size();
+    rtrover_satObs satObsBase[numSatBase];
+    for (int ii = 0; ii < numSatBase; ii++) {
+      const t_obs& obsBnc = frontEpoData->_obsBase[ii];
+      rtrover_satObs& satObs = satObsBase[ii];
+      copyObs(obsBnc, satObs);
+    }
+    
+    delete frontEpoData;
+    
+    // Process single epoch
+    // --------------------
+    rtrover_output output;
+    rtrover_processEpoch(numSatRover, satObsRover, numSatBase, satObsBase, &output);
+    
+    // Write output
+    // ---------------------
+    _outputFile.write(output._log);
+    _outputFile.flush();
+    
+    // Free memory
+    // -----------
+    rtrover_freeOutput(&output);
+    for (int ii = 0; ii < numSatRover; ii++) {
+      rtrover_satObs& satObs = satObsRover[ii];
+      delete [] satObs._obs;
+    }
+    for (int ii = 0; ii < numSatBase; ii++) {
+      rtrover_satObs& satObs = satObsBase[ii];
+      delete [] satObs._obs;
+    }
+  }
+}
Index: /trunk/BNC/src/RTRover/bncrtrover.h
===================================================================
--- /trunk/BNC/src/RTRover/bncrtrover.h	(revision 5524)
+++ /trunk/BNC/src/RTRover/bncrtrover.h	(revision 5525)
@@ -20,5 +20,5 @@
   void slotNewEphGalileo(galileoephemeris galeph);
   void slotNewCorrections(QList<QString> corrList);
-  void slotNewObs(QByteArray staID, bool firstObs, t_obs obs);
+  void slotNewObs(QByteArray staID, QList<t_obs> obsList);
 
  private:
