Index: trunk/BNC/bncgetthread.cpp
===================================================================
--- trunk/BNC/bncgetthread.cpp	(revision 3559)
+++ trunk/BNC/bncgetthread.cpp	(revision 3560)
@@ -129,4 +129,5 @@
   _PPPclient     = 0;
   _miscMount     = settings.value("miscMount").toString();
+  _decoder   = 0;
 
   // Serial Port
@@ -277,8 +278,10 @@
 t_irc bncGetThread::initDecoder() {
 
+  _decoder = 0;
+
   if      (_format.indexOf("RTCM_2") != -1 || _format.indexOf("RTCM2") != -1 ||
            _format.indexOf("RTCM 2") != -1 ) {
     emit(newMessage(_staID + ": Get data in RTCM 2.x format", true));
-    _decoders[_staID] = new RTCM2Decoder(_staID.data());
+    _decoder = new RTCM2Decoder(_staID.data());
   }
   else if (_format.indexOf("RTCM_3") != -1 || _format.indexOf("RTCM3") != -1 ||
@@ -286,5 +289,5 @@
     emit(newMessage(_staID + ": Get data in RTCM 3.x format", true));
     RTCM3Decoder* newDecoder = new RTCM3Decoder(_staID, _rawFile);
-    _decoders[_staID] = newDecoder;
+    _decoder = newDecoder;
     connect((RTCM3Decoder*) newDecoder, SIGNAL(newMessage(QByteArray,bool)), 
             this, SIGNAL(newMessage(QByteArray,bool)));
@@ -292,17 +295,17 @@
   else if (_format.indexOf("GPSS") != -1 || _format.indexOf("BNC") != -1) {
     emit(newMessage(_staID + ": Get Data in GPSS format", true));
-    _decoders[_staID] = new gpssDecoder();
+    _decoder = new gpssDecoder();
   }
   else if (_format.indexOf("ZERO") != -1) {
     emit(newMessage(_staID + ": Get data in original format", true));
-    _decoders[_staID] = new bncZeroDecoder(_staID);
+    _decoder = new bncZeroDecoder(_staID);
   }
   else if (_format.indexOf("RTNET") != -1) {
     emit(newMessage(_staID + ": Get data in RTNet format", true));
-    _decoders[_staID] = new bncRtnetDecoder();
+    _decoder = new bncRtnetDecoder();
   }
   else if (_format.indexOf("HASS2ASCII") != -1) {
     emit(newMessage(_staID + ": Get data in HASS2ASCII format", true));
-    _decoders[_staID] = new hassDecoder(_staID);
+    _decoder = new hassDecoder(_staID);
   }
   else {
@@ -314,12 +317,9 @@
   msleep(100); //sleep 0.1 sec
   
-  if (_decoders.contains(_staID)) {
-    _decoders[_staID]->initRinex(_staID, _mountPoint, _latitude, _longitude, 
-                                 _nmea, _ntripVersion);
-  }
-  else {
-    emit(newMessage(_staID + ": no decoder initialized " + _format, true));
-    _isToBeDeleted = true;
-    return failure;
+  _decoder->initRinex(_staID, _mountPoint, _latitude, _longitude, 
+                               _nmea, _ntripVersion);
+
+  if (_rawFile) {
+    _decodersRaw[_staID] = _decoder;
   }
 
@@ -348,10 +348,14 @@
   QMutexLocker locker(&_mutexDecoder);
 
-  if (_decoders.contains(_staID) || initDecoder() == success) {
-    return _decoders[_staID];
+  if (!_rawFile) {
+    return _decoder;
   }
   else {
-    return 0;
-  }
+    if (_decodersRaw.contains(_staID) || initDecoder() == success) {
+      return _decodersRaw[_staID];
+    }
+  }
+
+  return 0;
 }
 
@@ -367,8 +371,13 @@
   }
   delete _PPPclient;
-  QMapIterator<QString, GPSDecoder*> it(_decoders);
-  while (it.hasNext()) {
-    it.next();
-    delete it.value();
+  if (_rawFile) {
+    QMapIterator<QString, GPSDecoder*> it(_decodersRaw);
+    while (it.hasNext()) {
+      it.next();
+      delete it.value();
+    }
+  }
+  else {
+    delete _decoder;
   }
   delete _rawFile;
@@ -409,9 +418,14 @@
       // Delete old observations
       // -----------------------
-      QMapIterator<QString, GPSDecoder*> itDec(_decoders);
-      while (itDec.hasNext()) {
-        itDec.next();
-        GPSDecoder* decoder = itDec.value();
-        decoder->_obsList.clear();
+      if (_rawFile) {
+        QMapIterator<QString, GPSDecoder*> itDec(_decodersRaw);
+        while (itDec.hasNext()) {
+          itDec.next();
+          GPSDecoder* decoder = itDec.value();
+          decoder->_obsList.clear();
+        }
+      }
+      else {
+        _decoder->_obsList.clear();
       }
 
@@ -569,5 +583,77 @@
   if (_query && _query->status() == bncNetQuery::running) {
     _nextSleep = 0;
-    QMapIterator<QString, GPSDecoder*> itDec(_decoders);
+    if (_rawFile) {
+      QMapIterator<QString, GPSDecoder*> itDec(_decodersRaw);
+      while (itDec.hasNext()) {
+        itDec.next();
+        GPSDecoder* decoder = itDec.value();
+        decoder->setRinexReconnectFlag(false);
+      }
+    }
+    else {
+      _decoder->setRinexReconnectFlag(false);
+    }
+    return success;
+  }
+
+  // Start a new query
+  // -----------------
+  if (!_rawFile) {
+
+    sleep(_nextSleep);
+    if (_nextSleep == 0) {
+      _nextSleep = 1;
+    }
+    else {
+      _nextSleep = 2 * _nextSleep;
+      if (_nextSleep > 256) {
+        _nextSleep = 256;
+      }
+#ifdef MLS_SOFTWARE
+      if (_nextSleep > 4) {
+        _nextSleep = 4;
+      }
+#endif
+    }
+
+    delete _query;
+    if      (_ntripVersion == "U") {
+      _query = new bncNetQueryUdp();
+    }
+    else if (_ntripVersion == "R") {
+      _query = new bncNetQueryRtp();
+    }
+    else if (_ntripVersion == "S") {
+      _query = new bncNetQueryS();
+    }
+    else if (_ntripVersion == "N") {
+      _query = new bncNetQueryV0();
+    }
+    else if (_ntripVersion == "UN") {
+      _query = new bncNetQueryUdp0();
+    }
+    else if (_ntripVersion == "2") {
+      _query = new bncNetQueryV2(false);
+    }
+    else if (_ntripVersion == "2s") {
+      _query = new bncNetQueryV2(true);
+    }
+    else {
+      _query = new bncNetQueryV1();
+    }
+    if (_nmea == "yes" && _serialNMEA != AUTO_NMEA) {
+      QByteArray gga = ggaString(_latitude, _longitude, "100.0");
+      _query->startRequest(_mountPoint, gga);
+    }
+    else {
+      _query->startRequest(_mountPoint, "");
+    }
+    if (_query->status() != bncNetQuery::running) {
+      return failure;
+    }
+  }
+
+  if (_rawFile) {
+    QMapIterator<QString, GPSDecoder*> itDec(_decodersRaw);
     while (itDec.hasNext()) {
       itDec.next();
@@ -575,69 +661,7 @@
       decoder->setRinexReconnectFlag(false);
     }
-    return success;
-  }
-
-  // Start a new query
-  // -----------------
-  if (!_rawFile) {
-
-    sleep(_nextSleep);
-    if (_nextSleep == 0) {
-      _nextSleep = 1;
-    }
-    else {
-      _nextSleep = 2 * _nextSleep;
-      if (_nextSleep > 256) {
-        _nextSleep = 256;
-      }
-#ifdef MLS_SOFTWARE
-      if (_nextSleep > 4) {
-        _nextSleep = 4;
-      }
-#endif
-    }
-
-    delete _query;
-    if      (_ntripVersion == "U") {
-      _query = new bncNetQueryUdp();
-    }
-    else if (_ntripVersion == "R") {
-      _query = new bncNetQueryRtp();
-    }
-    else if (_ntripVersion == "S") {
-      _query = new bncNetQueryS();
-    }
-    else if (_ntripVersion == "N") {
-      _query = new bncNetQueryV0();
-    }
-    else if (_ntripVersion == "UN") {
-      _query = new bncNetQueryUdp0();
-    }
-    else if (_ntripVersion == "2") {
-      _query = new bncNetQueryV2(false);
-    }
-    else if (_ntripVersion == "2s") {
-      _query = new bncNetQueryV2(true);
-    }
-    else {
-      _query = new bncNetQueryV1();
-    }
-    if (_nmea == "yes" && _serialNMEA != AUTO_NMEA) {
-      QByteArray gga = ggaString(_latitude, _longitude, "100.0");
-      _query->startRequest(_mountPoint, gga);
-    }
-    else {
-      _query->startRequest(_mountPoint, "");
-    }
-    if (_query->status() != bncNetQuery::running) {
-      return failure;
-    }
-  }
-
-  QMapIterator<QString, GPSDecoder*> itDec(_decoders);
-  while (itDec.hasNext()) {
-    itDec.next();
-    GPSDecoder* decoder = itDec.value();
-    decoder->setRinexReconnectFlag(false);
+  }
+  else {
+   _decoder->setRinexReconnectFlag(false);
   }
 
Index: trunk/BNC/bncgetthread.h
===================================================================
--- trunk/BNC/bncgetthread.h	(revision 3559)
+++ trunk/BNC/bncgetthread.h	(revision 3560)
@@ -104,5 +104,6 @@
    void  scanRTCM();
 
-   QMap<QString, GPSDecoder*> _decoders;
+   QMap<QString, GPSDecoder*> _decodersRaw;
+   GPSDecoder*                _decoder;
    bncNetQuery*               _query;
    QUrl                       _mountPoint;
