Index: trunk/BNC/bncmodel.cpp
===================================================================
--- trunk/BNC/bncmodel.cpp	(revision 3382)
+++ trunk/BNC/bncmodel.cpp	(revision 3383)
@@ -56,13 +56,8 @@
 using namespace std;
 
-const unsigned MINOBS           =    5;
-const double   MINELE_GPS       = 10.0 * M_PI / 180.0;
-const double   MINELE_GLO       = 10.0 * M_PI / 180.0;
-const double   MINELE_GAL       = 10.0 * M_PI / 180.0;
-const double   MAXRES_CODE_GPS  = 10.0;
-const double   MAXRES_PHASE_GPS = 0.04;
-const double   MAXRES_PHASE_GLO = 0.04;
-const double   MAXRES_CODE_GAL  = 10.0;
-const double   MAXRES_PHASE_GAL = 0.04;
+const unsigned MINOBS       =    5;
+const double   MINELE       = 10.0 * M_PI / 180.0;
+const double   MAXRES_CODE  = 10.0;
+const double   MAXRES_PHASE = 0.04;
 
 // Constructor
@@ -327,22 +322,24 @@
   Tracer tracer("bncModel::cmpBancroft");
 
-  if (epoData->sizeGPS() < MINOBS) {
+  if (epoData->sizeSys('G') < MINOBS) {
     _log += "bncModel::cmpBancroft: not enough data\n";
     return failure;
   }
 
-  Matrix BB(epoData->sizeGPS(), 4);
-
-  QMapIterator<QString, t_satData*> it(epoData->satDataGPS);
+  Matrix BB(epoData->sizeSys('G'), 4);
+
+  QMapIterator<QString, t_satData*> it(epoData->satData);
   int iObsBanc = 0;
   while (it.hasNext()) {
-    ++iObsBanc;
     it.next();
-    QString    prn     = it.key();
     t_satData* satData = it.value();
-    BB(iObsBanc, 1) = satData->xx(1);
-    BB(iObsBanc, 2) = satData->xx(2);
-    BB(iObsBanc, 3) = satData->xx(3);
-    BB(iObsBanc, 4) = satData->P3 + satData->clk;
+    if (satData->system() == 'G') {
+      ++iObsBanc;
+      QString    prn     = it.key();
+      BB(iObsBanc, 1) = satData->xx(1);
+      BB(iObsBanc, 2) = satData->xx(2);
+      BB(iObsBanc, 3) = satData->xx(3);
+      BB(iObsBanc, 4) = satData->P3 + satData->clk;
+    }
   }
 
@@ -355,34 +352,12 @@
   // Compute Satellite Elevations
   // ----------------------------
-  QMutableMapIterator<QString, t_satData*> iGPS(epoData->satDataGPS);
-  while (iGPS.hasNext()) {
-    iGPS.next();
-    t_satData* satData = iGPS.value();
+  QMutableMapIterator<QString, t_satData*> im(epoData->satData);
+  while (im.hasNext()) {
+    im.next();
+    t_satData* satData = im.value();
     cmpEle(satData);
-    if (satData->eleSat < MINELE_GPS) {
+    if (satData->eleSat < MINELE) {
       delete satData;
-      iGPS.remove();
-    }
-  }
-
-  QMutableMapIterator<QString, t_satData*> iGlo(epoData->satDataGlo);
-  while (iGlo.hasNext()) {
-    iGlo.next();
-    t_satData* satData = iGlo.value();
-    cmpEle(satData);
-    if (satData->eleSat < MINELE_GLO) {
-      delete satData;
-      iGlo.remove();
-    }
-  }
-
-  QMutableMapIterator<QString, t_satData*> iGal(epoData->satDataGal);
-  while (iGal.hasNext()) {
-    iGal.next();
-    t_satData* satData = iGal.value();
-    cmpEle(satData);
-    if (satData->eleSat < MINELE_GAL) {
-      delete satData;
-      iGal.remove();
+      im.remove();
     }
   }
@@ -605,15 +580,13 @@
     // ------------------------------------------------
     int iPar = 0;
-    QMutableVectorIterator<bncParam*> it(_params);
-    while (it.hasNext()) {
-      bncParam* par = it.next();
+    QMutableVectorIterator<bncParam*> im(_params);
+    while (im.hasNext()) {
+      bncParam* par = im.next();
       bool removed = false;
       if (par->type == bncParam::AMB_L3) {
-        if (epoData->satDataGPS.find(par->prn) == epoData->satDataGPS.end() &&
-            epoData->satDataGlo.find(par->prn) == epoData->satDataGlo.end() && 
-            epoData->satDataGal.find(par->prn) == epoData->satDataGal.end() ) {
+        if (epoData->satData.find(par->prn) == epoData->satData.end()) {
           removed = true;
           delete par;
-          it.remove();
+          im.remove();
         }
       }
@@ -626,22 +599,8 @@
     // Add new ambiguity parameters
     // ----------------------------
-    QMapIterator<QString, t_satData*> iGPS(epoData->satDataGPS);
-    while (iGPS.hasNext()) {
-      iGPS.next();
-      t_satData* satData = iGPS.value();
-      addAmb(satData);
-    }
-
-    QMapIterator<QString, t_satData*> iGlo(epoData->satDataGlo);
-    while (iGlo.hasNext()) {
-      iGlo.next();
-      t_satData* satData = iGlo.value();
-      addAmb(satData);
-    }
-
-    QMapIterator<QString, t_satData*> iGal(epoData->satDataGal);
-    while (iGal.hasNext()) {
-      iGal.next();
-      t_satData* satData = iGal.value();
+    QMapIterator<QString, t_satData*> it(epoData->satData);
+    while (it.hasNext()) {
+      it.next();
+      t_satData* satData = it.value();
       addAmb(satData);
     }
@@ -943,7 +902,5 @@
 ////////////////////////////////////////////////////////////////////////////
 bool bncModel::outlierDetection(int iPhase, const ColumnVector& vv,
-                               QMap<QString, t_satData*>& satDataGPS,
-                               QMap<QString, t_satData*>& satDataGlo,
-                               QMap<QString, t_satData*>& satDataGal) {
+                                QMap<QString, t_satData*>& satData) {
 
   Tracer tracer("bncModel::outlierDetection");
@@ -959,62 +916,23 @@
   bool irc = false;
 
+  // Check Code
+  // ----------
   if (iPhase == 0) {
-
-    // Check GPS Code
-    // --------------
-    if (!irc) {
-      findMaxRes(iPhase, vv,satDataGPS, prnCode, maxResCode, prnPhase, maxResPhase);
-      if (maxResCode > MAXRES_CODE_GPS) {
-        prnRemoved = prnCode;
-        maxRes     = maxResCode;
-        irc        = true;
-      }
-    }
-    
-    // Check Galileo Code
-    // ------------------
-    if (!irc) {
-      findMaxRes(iPhase, vv,satDataGal, prnCode, maxResCode, prnPhase, maxResPhase);
-      if (maxResCode > MAXRES_CODE_GAL) {
-        prnRemoved = prnCode;
-        maxRes     = maxResCode;
-        irc        = true;
-      }
-    }
-  }
-
+    findMaxRes(iPhase, vv, satData, prnCode, maxResCode, prnPhase, maxResPhase);
+    if (maxResCode > MAXRES_CODE) {
+      prnRemoved = prnCode;
+      maxRes     = maxResCode;
+      irc        = true;
+    }
+  }
+
+  // Check Phase
+  // -----------
   else {
-
-    // Check Glonass Phase
-    // -------------------
-    if (!irc) {
-      findMaxRes(iPhase, vv,satDataGlo, prnCode, maxResCode, prnPhase, maxResPhase);
-      if (maxResPhase > MAXRES_PHASE_GLO) {
-        prnRemoved = prnPhase;
-        maxRes     = maxResPhase;
-        irc        = true;
-      }
-    }
-    
-    // Check Galileo Phase
-    // -------------------
-    if (!irc) {
-      findMaxRes(iPhase, vv,satDataGal, prnCode, maxResCode, prnPhase, maxResPhase);
-      if      (maxResPhase > MAXRES_PHASE_GAL) {
-        prnRemoved = prnPhase;
-        maxRes     = maxResPhase;
-        irc        = true;
-      }
-    }
-    
-    // Check GPS Phase
-    // ---------------
-    if (!irc) {
-      findMaxRes(iPhase, vv,satDataGPS, prnCode, maxResCode, prnPhase, maxResPhase);
-      if      (maxResPhase > MAXRES_PHASE_GPS) {
-        prnRemoved = prnPhase;
-        maxRes     = maxResPhase;
-        irc        = true;
-      }
+    findMaxRes(iPhase, vv, satData, prnCode, maxResCode, prnPhase, maxResPhase);
+    if (maxResPhase > MAXRES_PHASE) {
+      prnRemoved = prnPhase;
+      maxRes     = maxResPhase;
+      irc        = true;
     }
   }
@@ -1325,5 +1243,10 @@
 
   std::vector<QString> allPrns; 
-  getAllPrns(epoData, &allPrns);
+  QMapIterator<QString, t_satData*> it(epoData->satData);
+  while (it.hasNext()) {
+    it.next();
+    t_satData* satData = it.value();
+    allPrns.push_back(satData->prn);
+  }
 
   std::vector<QString> usedPrns;
@@ -1355,7 +1278,5 @@
         QString prn = allPrns[ip];
         if ( !findInVector(usedPrns, prn) ) {
-          epoData->satDataGPS.remove(prn);
-          epoData->satDataGlo.remove(prn);
-          epoData->satDataGal.remove(prn);
+          epoData->satData.remove(prn);
         }
       }
@@ -1379,5 +1300,5 @@
         }
         else {
-          if (epoData->sizeGPS() < MINOBS) {
+          if (epoData->sizeSys('G') < MINOBS) {
             restoreState(epoData);
             _log += "bncModel::update_p: not enough data\n";
@@ -1410,8 +1331,8 @@
         unsigned nObs = 0;
         if (iPhase == 0) {
-          nObs = epoData->sizeGPS() + epoData->sizeGal(); // Glonass code not used
+          nObs = epoData->sizeAll() - epoData->sizeSys('R'); // Glonass code not used
         }
         else {
-          nObs = epoData->sizeGPS() + epoData->sizeGal() + epoData->sizeGlo();
+          nObs = epoData->sizeAll();
         }
         
@@ -1424,21 +1345,10 @@
         // GPS
         // ---
-        QMapIterator<QString, t_satData*> itGPS(epoData->satDataGPS);
-        while (itGPS.hasNext()) {
-          itGPS.next();
-          t_satData* satData = itGPS.value();
-          QString prn = satData->prn;
-          if (findInVector(usedPrns, satData->prn)) {
-            addObs(iPhase, iObs, satData, AA, ll, PP);
-          }
-        }
-        
-        // Glonass
-        // -------
-        if (iPhase == 1) {
-          QMapIterator<QString, t_satData*> itGlo(epoData->satDataGlo);
-          while (itGlo.hasNext()) {
-            itGlo.next();
-            t_satData* satData = itGlo.value();
+        QMapIterator<QString, t_satData*> it(epoData->satData);
+        while (it.hasNext()) {
+          it.next();
+          t_satData* satData = it.value();
+          if (iPhase == 1 || satData->system() != 'R') {
+            QString prn = satData->prn;
             if (findInVector(usedPrns, satData->prn)) {
               addObs(iPhase, iObs, satData, AA, ll, PP);
@@ -1446,16 +1356,5 @@
           }
         }
-        
-        // Galileo
-        // -------
-        QMapIterator<QString, t_satData*> itGal(epoData->satDataGal);
-        while (itGal.hasNext()) {
-          itGal.next();
-          t_satData* satData = itGal.value();
-          if (findInVector(usedPrns, satData->prn)) {
-            addObs(iPhase, iObs, satData, AA, ll, PP);
-          }
-        }
-        
+
         // Compute Filter Update
         // ---------------------
@@ -1470,24 +1369,12 @@
           str.setf(ios::fixed);
         
-          QMapIterator<QString, t_satData*> itGPS(epoData->satDataGPS);
-          while (itGPS.hasNext()) {
-            itGPS.next();
-            t_satData* satData = itGPS.value();
-            printRes(iPhase, vv, str, satData);
-          }
-          if (iPhase == 1) {
-            QMapIterator<QString, t_satData*> itGlo(epoData->satDataGlo);
-            while (itGlo.hasNext()) {
-              itGlo.next();
-              t_satData* satData = itGlo.value();
+          QMapIterator<QString, t_satData*> it(epoData->satData);
+          while (it.hasNext()) {
+            it.next();
+            t_satData* satData = it.value();
+            if (iPhase == 1 || satData->system() != 'R') {
               printRes(iPhase, vv, str, satData);
             }
           }
-          QMapIterator<QString, t_satData*> itGal(epoData->satDataGal);
-          while (itGal.hasNext()) {
-            itGal.next();
-            t_satData* satData = itGal.value();
-            printRes(iPhase, vv, str, satData);
-          }
           _log += str.str().c_str();
         }
@@ -1495,8 +1382,6 @@
         // Check the residuals
         // -------------------
-        outlierDetected = outlierDetection(iPhase, vv, 
-                                           epoData->satDataGPS, 
-                                           epoData->satDataGlo, 
-                                           epoData->satDataGal);
+        outlierDetected = outlierDetection(iPhase, vv, epoData->satData); 
+
         if (outlierDetected) {
           restoreState(epoData);
@@ -1568,36 +1453,2 @@
   epoData->deepCopy(_epoData_sav);
 }
-
-// 
-////////////////////////////////////////////////////////////////////////////
-void bncModel::getAllPrns(const t_epoData* epoData, 
-                          std::vector<QString>* allPrns) {
-
-  // GPS
-  // ---
-  QMapIterator<QString, t_satData*> itGPS(epoData->satDataGPS);
-  while (itGPS.hasNext()) {
-    itGPS.next();
-    t_satData* satData = itGPS.value();
-    allPrns->push_back(satData->prn);
-  }
-  
-  // Glonass
-  // -------
-  QMapIterator<QString, t_satData*> itGlo(epoData->satDataGlo);
-  while (itGlo.hasNext()) {
-    itGlo.next();
-    t_satData* satData = itGlo.value();
-    allPrns->push_back(satData->prn);
-  }
-  
-  // Galileo
-  // -------
-  QMapIterator<QString, t_satData*> itGal(epoData->satDataGal);
-  while (itGal.hasNext()) {
-    itGal.next();
-    t_satData* satData = itGal.value();
-    allPrns->push_back(satData->prn);
-  }
-}
-
Index: trunk/BNC/bncmodel.h
===================================================================
--- trunk/BNC/bncmodel.h	(revision 3382)
+++ trunk/BNC/bncmodel.h	(revision 3383)
@@ -111,13 +111,9 @@
   t_irc  update_p(t_epoData* epoData);
   bool   outlierDetection(int iPhase, const ColumnVector& vv,
-                          QMap<QString, t_satData*>& satDataGPS,
-                          QMap<QString, t_satData*>& satDataGlo,
-                          QMap<QString, t_satData*>& satDataGal);
+                          QMap<QString, t_satData*>& satData);
   void writeNMEAstr(const QString& nmStr);
 
   double windUp(const QString& prn, const ColumnVector& rSat,
                 const ColumnVector& rRec);
-
-  void getAllPrns(const t_epoData* epoData, std::vector<QString>* allPrns);
 
   bncTime  _startTime;
Index: trunk/BNC/bncpppclient.cpp
===================================================================
--- trunk/BNC/bncpppclient.cpp	(revision 3382)
+++ trunk/BNC/bncpppclient.cpp	(revision 3383)
@@ -194,5 +194,5 @@
       satData->lambda3 = c1 * t_CST::c / f1 + c2 * t_CST::c / f2;
 
-      _epoData.back()->satDataGPS[satData->prn] = satData;
+      _epoData.back()->satData[satData->prn] = satData;
     }
     else {
@@ -227,5 +227,5 @@
       satData->lambda3 = c1 * t_CST::c / f1 + c2 * t_CST::c / f2;
 
-      _epoData.back()->satDataGlo[satData->prn] = satData;
+      _epoData.back()->satData[satData->prn] = satData;
     }
     else {
@@ -250,5 +250,5 @@
       satData->L3      = c1 * satData->L1 + c5 * satData->L5;
       satData->lambda3 = c1 * t_CST::c / f1 + c5 * t_CST::c / f5;
-      _epoData.back()->satDataGal[satData->prn] = satData;
+      _epoData.back()->satData[satData->prn] = satData;
     }
     else {
@@ -459,39 +459,13 @@
   // Data Pre-Processing
   // -------------------
-  QMutableMapIterator<QString, t_satData*> iGPS(_epoData.front()->satDataGPS);
-  while (iGPS.hasNext()) {
-    iGPS.next();
-    QString    prn     = iGPS.key();
-    t_satData* satData = iGPS.value();
+  QMutableMapIterator<QString, t_satData*> it(_epoData.front()->satData);
+  while (it.hasNext()) {
+    it.next();
+    QString    prn     = it.key();
+    t_satData* satData = it.value();
 
     if (cmpToT(satData) != success) {
       delete satData;
-      iGPS.remove();
-      continue;
-    }
-  }
-
-  QMutableMapIterator<QString, t_satData*> iGlo(_epoData.front()->satDataGlo);
-  while (iGlo.hasNext()) {
-    iGlo.next();
-    QString    prn     = iGlo.key();
-    t_satData* satData = iGlo.value();
-
-    if (cmpToT(satData) != success) {
-      delete satData;
-      iGlo.remove();
-      continue;
-    }
-  }
-
-  QMutableMapIterator<QString, t_satData*> iGal(_epoData.front()->satDataGal);
-  while (iGal.hasNext()) {
-    iGal.next();
-    QString    prn     = iGal.key();
-    t_satData* satData = iGal.value();
-
-    if (cmpToT(satData) != success) {
-      delete satData;
-      iGal.remove();
+      it.remove();
       continue;
     }
Index: trunk/BNC/bncpppclient.h
===================================================================
--- trunk/BNC/bncpppclient.h	(revision 3382)
+++ trunk/BNC/bncpppclient.h	(revision 3383)
@@ -71,22 +71,10 @@
 
   void clear() {
-    QMapIterator<QString, t_satData*> itGPS(satDataGPS);
-    while (itGPS.hasNext()) {
-      itGPS.next();
-      delete itGPS.value();
+    QMapIterator<QString, t_satData*> it(satData);
+    while (it.hasNext()) {
+      it.next();
+      delete it.value();
     }
-    satDataGPS.clear();
-    QMapIterator<QString, t_satData*> itGlo(satDataGlo);
-    while (itGlo.hasNext()) {
-      itGlo.next();
-      delete itGlo.value();
-    }
-    satDataGlo.clear();
-    QMapIterator<QString, t_satData*> itGal(satDataGal);
-    while (itGal.hasNext()) {
-      itGal.next();
-      delete itGal.value();
-    }
-    satDataGal.clear();
+    satData.clear();
   }
 
@@ -94,30 +82,26 @@
     clear();
     tt = from->tt;
-    QMapIterator<QString, t_satData*> itGPS(from->satDataGPS);
-    while (itGPS.hasNext()) {
-      itGPS.next();
-      satDataGPS[itGPS.key()] = new t_satData(*itGPS.value());
-    }
-    QMapIterator<QString, t_satData*> itGlo(from->satDataGlo);
-    while (itGlo.hasNext()) {
-      itGlo.next();
-      satDataGlo[itGlo.key()] = new t_satData(*itGlo.value());
-    }
-    QMapIterator<QString, t_satData*> itGal(from->satDataGal);
-    while (itGal.hasNext()) {
-      itGal.next();
-      satDataGal[itGal.key()] = new t_satData(*itGal.value());
+    QMapIterator<QString, t_satData*> it(from->satData);
+    while (it.hasNext()) {
+      it.next();
+      satData[it.key()] = new t_satData(*it.value());
     }
   }
 
-  unsigned sizeGPS() const {return satDataGPS.size();}
-  unsigned sizeGlo() const {return satDataGlo.size();}
-  unsigned sizeGal() const {return satDataGal.size();}
-  unsigned sizeAll() const {return satDataGPS.size() + satDataGlo.size() +
-                                   satDataGal.size();}
+  unsigned sizeSys(char system) const {
+    unsigned ans = 0;
+    QMapIterator<QString, t_satData*> it(satData);
+    while (it.hasNext()) {
+      it.next();
+      if (it.value()->system() == system) {
+        ++ans;
+      }
+    }
+    return ans;
+  }
+  unsigned sizeAll() const {return satData.size();}
+
   bncTime                   tt;
-  QMap<QString, t_satData*> satDataGPS;
-  QMap<QString, t_satData*> satDataGlo;
-  QMap<QString, t_satData*> satDataGal;
+  QMap<QString, t_satData*> satData;
 };
 
