Changeset 3560 in ntrip for trunk/BNC/bncgetthread.cpp


Ignore:
Timestamp:
Dec 24, 2011, 10:55:51 AM (12 years ago)
Author:
mervart
Message:
 
File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/BNC/bncgetthread.cpp

    r3559 r3560  
    129129  _PPPclient     = 0;
    130130  _miscMount     = settings.value("miscMount").toString();
     131  _decoder   = 0;
    131132
    132133  // Serial Port
     
    277278t_irc bncGetThread::initDecoder() {
    278279
     280  _decoder = 0;
     281
    279282  if      (_format.indexOf("RTCM_2") != -1 || _format.indexOf("RTCM2") != -1 ||
    280283           _format.indexOf("RTCM 2") != -1 ) {
    281284    emit(newMessage(_staID + ": Get data in RTCM 2.x format", true));
    282     _decoders[_staID] = new RTCM2Decoder(_staID.data());
     285    _decoder = new RTCM2Decoder(_staID.data());
    283286  }
    284287  else if (_format.indexOf("RTCM_3") != -1 || _format.indexOf("RTCM3") != -1 ||
     
    286289    emit(newMessage(_staID + ": Get data in RTCM 3.x format", true));
    287290    RTCM3Decoder* newDecoder = new RTCM3Decoder(_staID, _rawFile);
    288     _decoders[_staID] = newDecoder;
     291    _decoder = newDecoder;
    289292    connect((RTCM3Decoder*) newDecoder, SIGNAL(newMessage(QByteArray,bool)),
    290293            this, SIGNAL(newMessage(QByteArray,bool)));
     
    292295  else if (_format.indexOf("GPSS") != -1 || _format.indexOf("BNC") != -1) {
    293296    emit(newMessage(_staID + ": Get Data in GPSS format", true));
    294     _decoders[_staID] = new gpssDecoder();
     297    _decoder = new gpssDecoder();
    295298  }
    296299  else if (_format.indexOf("ZERO") != -1) {
    297300    emit(newMessage(_staID + ": Get data in original format", true));
    298     _decoders[_staID] = new bncZeroDecoder(_staID);
     301    _decoder = new bncZeroDecoder(_staID);
    299302  }
    300303  else if (_format.indexOf("RTNET") != -1) {
    301304    emit(newMessage(_staID + ": Get data in RTNet format", true));
    302     _decoders[_staID] = new bncRtnetDecoder();
     305    _decoder = new bncRtnetDecoder();
    303306  }
    304307  else if (_format.indexOf("HASS2ASCII") != -1) {
    305308    emit(newMessage(_staID + ": Get data in HASS2ASCII format", true));
    306     _decoders[_staID] = new hassDecoder(_staID);
     309    _decoder = new hassDecoder(_staID);
    307310  }
    308311  else {
     
    314317  msleep(100); //sleep 0.1 sec
    315318 
    316   if (_decoders.contains(_staID)) {
    317     _decoders[_staID]->initRinex(_staID, _mountPoint, _latitude, _longitude,
    318                                  _nmea, _ntripVersion);
    319   }
    320   else {
    321     emit(newMessage(_staID + ": no decoder initialized " + _format, true));
    322     _isToBeDeleted = true;
    323     return failure;
     319  _decoder->initRinex(_staID, _mountPoint, _latitude, _longitude,
     320                               _nmea, _ntripVersion);
     321
     322  if (_rawFile) {
     323    _decodersRaw[_staID] = _decoder;
    324324  }
    325325
     
    348348  QMutexLocker locker(&_mutexDecoder);
    349349
    350   if (_decoders.contains(_staID) || initDecoder() == success) {
    351     return _decoders[_staID];
     350  if (!_rawFile) {
     351    return _decoder;
    352352  }
    353353  else {
    354     return 0;
    355   }
     354    if (_decodersRaw.contains(_staID) || initDecoder() == success) {
     355      return _decodersRaw[_staID];
     356    }
     357  }
     358
     359  return 0;
    356360}
    357361
     
    367371  }
    368372  delete _PPPclient;
    369   QMapIterator<QString, GPSDecoder*> it(_decoders);
    370   while (it.hasNext()) {
    371     it.next();
    372     delete it.value();
     373  if (_rawFile) {
     374    QMapIterator<QString, GPSDecoder*> it(_decodersRaw);
     375    while (it.hasNext()) {
     376      it.next();
     377      delete it.value();
     378    }
     379  }
     380  else {
     381    delete _decoder;
    373382  }
    374383  delete _rawFile;
     
    409418      // Delete old observations
    410419      // -----------------------
    411       QMapIterator<QString, GPSDecoder*> itDec(_decoders);
    412       while (itDec.hasNext()) {
    413         itDec.next();
    414         GPSDecoder* decoder = itDec.value();
    415         decoder->_obsList.clear();
     420      if (_rawFile) {
     421        QMapIterator<QString, GPSDecoder*> itDec(_decodersRaw);
     422        while (itDec.hasNext()) {
     423          itDec.next();
     424          GPSDecoder* decoder = itDec.value();
     425          decoder->_obsList.clear();
     426        }
     427      }
     428      else {
     429        _decoder->_obsList.clear();
    416430      }
    417431
     
    569583  if (_query && _query->status() == bncNetQuery::running) {
    570584    _nextSleep = 0;
    571     QMapIterator<QString, GPSDecoder*> itDec(_decoders);
     585    if (_rawFile) {
     586      QMapIterator<QString, GPSDecoder*> itDec(_decodersRaw);
     587      while (itDec.hasNext()) {
     588        itDec.next();
     589        GPSDecoder* decoder = itDec.value();
     590        decoder->setRinexReconnectFlag(false);
     591      }
     592    }
     593    else {
     594      _decoder->setRinexReconnectFlag(false);
     595    }
     596    return success;
     597  }
     598
     599  // Start a new query
     600  // -----------------
     601  if (!_rawFile) {
     602
     603    sleep(_nextSleep);
     604    if (_nextSleep == 0) {
     605      _nextSleep = 1;
     606    }
     607    else {
     608      _nextSleep = 2 * _nextSleep;
     609      if (_nextSleep > 256) {
     610        _nextSleep = 256;
     611      }
     612#ifdef MLS_SOFTWARE
     613      if (_nextSleep > 4) {
     614        _nextSleep = 4;
     615      }
     616#endif
     617    }
     618
     619    delete _query;
     620    if      (_ntripVersion == "U") {
     621      _query = new bncNetQueryUdp();
     622    }
     623    else if (_ntripVersion == "R") {
     624      _query = new bncNetQueryRtp();
     625    }
     626    else if (_ntripVersion == "S") {
     627      _query = new bncNetQueryS();
     628    }
     629    else if (_ntripVersion == "N") {
     630      _query = new bncNetQueryV0();
     631    }
     632    else if (_ntripVersion == "UN") {
     633      _query = new bncNetQueryUdp0();
     634    }
     635    else if (_ntripVersion == "2") {
     636      _query = new bncNetQueryV2(false);
     637    }
     638    else if (_ntripVersion == "2s") {
     639      _query = new bncNetQueryV2(true);
     640    }
     641    else {
     642      _query = new bncNetQueryV1();
     643    }
     644    if (_nmea == "yes" && _serialNMEA != AUTO_NMEA) {
     645      QByteArray gga = ggaString(_latitude, _longitude, "100.0");
     646      _query->startRequest(_mountPoint, gga);
     647    }
     648    else {
     649      _query->startRequest(_mountPoint, "");
     650    }
     651    if (_query->status() != bncNetQuery::running) {
     652      return failure;
     653    }
     654  }
     655
     656  if (_rawFile) {
     657    QMapIterator<QString, GPSDecoder*> itDec(_decodersRaw);
    572658    while (itDec.hasNext()) {
    573659      itDec.next();
     
    575661      decoder->setRinexReconnectFlag(false);
    576662    }
    577     return success;
    578   }
    579 
    580   // Start a new query
    581   // -----------------
    582   if (!_rawFile) {
    583 
    584     sleep(_nextSleep);
    585     if (_nextSleep == 0) {
    586       _nextSleep = 1;
    587     }
    588     else {
    589       _nextSleep = 2 * _nextSleep;
    590       if (_nextSleep > 256) {
    591         _nextSleep = 256;
    592       }
    593 #ifdef MLS_SOFTWARE
    594       if (_nextSleep > 4) {
    595         _nextSleep = 4;
    596       }
    597 #endif
    598     }
    599 
    600     delete _query;
    601     if      (_ntripVersion == "U") {
    602       _query = new bncNetQueryUdp();
    603     }
    604     else if (_ntripVersion == "R") {
    605       _query = new bncNetQueryRtp();
    606     }
    607     else if (_ntripVersion == "S") {
    608       _query = new bncNetQueryS();
    609     }
    610     else if (_ntripVersion == "N") {
    611       _query = new bncNetQueryV0();
    612     }
    613     else if (_ntripVersion == "UN") {
    614       _query = new bncNetQueryUdp0();
    615     }
    616     else if (_ntripVersion == "2") {
    617       _query = new bncNetQueryV2(false);
    618     }
    619     else if (_ntripVersion == "2s") {
    620       _query = new bncNetQueryV2(true);
    621     }
    622     else {
    623       _query = new bncNetQueryV1();
    624     }
    625     if (_nmea == "yes" && _serialNMEA != AUTO_NMEA) {
    626       QByteArray gga = ggaString(_latitude, _longitude, "100.0");
    627       _query->startRequest(_mountPoint, gga);
    628     }
    629     else {
    630       _query->startRequest(_mountPoint, "");
    631     }
    632     if (_query->status() != bncNetQuery::running) {
    633       return failure;
    634     }
    635   }
    636 
    637   QMapIterator<QString, GPSDecoder*> itDec(_decoders);
    638   while (itDec.hasNext()) {
    639     itDec.next();
    640     GPSDecoder* decoder = itDec.value();
    641     decoder->setRinexReconnectFlag(false);
     663  }
     664  else {
     665   _decoder->setRinexReconnectFlag(false);
    642666  }
    643667
Note: See TracChangeset for help on using the changeset viewer.