Changeset 7486 in ntrip


Ignore:
Timestamp:
Oct 6, 2015, 4:07:16 PM (9 years ago)
Author:
stuerze
Message:

minor addition to prevent a crash after failed decoding

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/BNC/src/bncgetthread.cpp

    r7423 r7486  
    3535 * Created:    24-Dec-2005
    3636 *
    37  * Changes:   
     37 * Changes:
    3838 *
    3939 * -----------------------------------------------------------------------*/
     
    8585// Constructor 2
    8686////////////////////////////////////////////////////////////////////////////
    87 bncGetThread::bncGetThread(const QUrl& mountPoint, 
     87bncGetThread::bncGetThread(const QUrl& mountPoint,
    8888                           const QByteArray& format,
    8989                           const QByteArray& latitude,
    9090                           const QByteArray& longitude,
    91                            const QByteArray& nmea, 
     91                           const QByteArray& nmea,
    9292                           const QByteArray& ntripVersion) {
    9393  _rawFile      = 0;
     
    119119  setTerminationEnabled(true);
    120120
    121   connect(this, SIGNAL(newMessage(QByteArray,bool)), 
     121  connect(this, SIGNAL(newMessage(QByteArray,bool)),
    122122          BNC_CORE, SLOT(slotMessage(const QByteArray,bool)));
    123123
     
    172172    QString hlp = settings.value("serialBaudRate").toString();
    173173    if      (hlp == "110") {
    174       _serialPort->setBaudRate(BAUD110);   
     174      _serialPort->setBaudRate(BAUD110);
    175175    }
    176176    else if (hlp == "300") {
    177       _serialPort->setBaudRate(BAUD300);   
     177      _serialPort->setBaudRate(BAUD300);
    178178    }
    179179    else if (hlp == "600") {
    180       _serialPort->setBaudRate(BAUD600);   
     180      _serialPort->setBaudRate(BAUD600);
    181181    }
    182182    else if (hlp == "1200") {
    183       _serialPort->setBaudRate(BAUD1200);   
     183      _serialPort->setBaudRate(BAUD1200);
    184184    }
    185185    else if (hlp == "2400") {
    186       _serialPort->setBaudRate(BAUD2400);   
     186      _serialPort->setBaudRate(BAUD2400);
    187187    }
    188188    else if (hlp == "4800") {
    189       _serialPort->setBaudRate(BAUD4800);   
     189      _serialPort->setBaudRate(BAUD4800);
    190190    }
    191191    else if (hlp == "9600") {
    192       _serialPort->setBaudRate(BAUD9600);   
     192      _serialPort->setBaudRate(BAUD9600);
    193193    }
    194194    else if (hlp == "19200") {
    195       _serialPort->setBaudRate(BAUD19200);   
     195      _serialPort->setBaudRate(BAUD19200);
    196196    }
    197197    else if (hlp == "38400") {
    198       _serialPort->setBaudRate(BAUD38400);   
     198      _serialPort->setBaudRate(BAUD38400);
    199199    }
    200200    else if (hlp == "57600") {
    201       _serialPort->setBaudRate(BAUD57600);   
     201      _serialPort->setBaudRate(BAUD57600);
    202202    }
    203203    else if (hlp == "115200") {
    204       _serialPort->setBaudRate(BAUD115200);   
     204      _serialPort->setBaudRate(BAUD115200);
    205205    }
    206206
     
    209209    hlp = settings.value("serialParity").toString();
    210210    if      (hlp == "NONE") {
    211       _serialPort->setParity(PAR_NONE);   
     211      _serialPort->setParity(PAR_NONE);
    212212    }
    213213    else if (hlp == "ODD") {
    214       _serialPort->setParity(PAR_ODD);   
     214      _serialPort->setParity(PAR_ODD);
    215215    }
    216216    else if (hlp == "EVEN") {
    217       _serialPort->setParity(PAR_EVEN);   
     217      _serialPort->setParity(PAR_EVEN);
    218218    }
    219219    else if (hlp == "SPACE") {
    220       _serialPort->setParity(PAR_SPACE);   
     220      _serialPort->setParity(PAR_SPACE);
    221221    }
    222222
     
    225225    hlp = settings.value("serialDataBits").toString();
    226226    if      (hlp == "5") {
    227       _serialPort->setDataBits(DATA_5);   
     227      _serialPort->setDataBits(DATA_5);
    228228    }
    229229    else if (hlp == "6") {
    230       _serialPort->setDataBits(DATA_6);   
     230      _serialPort->setDataBits(DATA_6);
    231231    }
    232232    else if (hlp == "7") {
    233       _serialPort->setDataBits(DATA_7);   
     233      _serialPort->setDataBits(DATA_7);
    234234    }
    235235    else if (hlp == "8") {
    236       _serialPort->setDataBits(DATA_8);   
     236      _serialPort->setDataBits(DATA_8);
    237237    }
    238238    hlp = settings.value("serialStopBits").toString();
    239239    if      (hlp == "1") {
    240       _serialPort->setStopBits(STOP_1);   
     240      _serialPort->setStopBits(STOP_1);
    241241    }
    242242    else if (hlp == "2") {
    243       _serialPort->setStopBits(STOP_2);   
     243      _serialPort->setStopBits(STOP_2);
    244244    }
    245245
     
    248248    hlp = settings.value("serialFlowControl").toString();
    249249    if (hlp == "XONXOFF") {
    250       _serialPort->setFlowControl(FLOW_XONXOFF);   
     250      _serialPort->setFlowControl(FLOW_XONXOFF);
    251251    }
    252252    else if (hlp == "HARDWARE") {
    253       _serialPort->setFlowControl(FLOW_HARDWARE);   
     253      _serialPort->setFlowControl(FLOW_HARDWARE);
    254254    }
    255255    else {
    256       _serialPort->setFlowControl(FLOW_OFF);   
     256      _serialPort->setFlowControl(FLOW_OFF);
    257257    }
    258258
     
    265265      emit(newMessage((_staID + ": Cannot open serial port\n"), true));
    266266    }
    267     connect(_serialPort, SIGNAL(readyRead()), 
     267    connect(_serialPort, SIGNAL(readyRead()),
    268268            this, SLOT(slotSerialReadyRead()));
    269269
     
    323323    RTCM3Decoder* newDecoder = new RTCM3Decoder(_staID, _rawFile);
    324324    _decoder = newDecoder;
    325     connect((RTCM3Decoder*) newDecoder, SIGNAL(newMessage(QByteArray,bool)), 
     325    connect((RTCM3Decoder*) newDecoder, SIGNAL(newMessage(QByteArray,bool)),
    326326            this, SIGNAL(newMessage(QByteArray,bool)));
    327327  }
     
    341341
    342342  msleep(100); //sleep 0.1 sec
    343  
    344   _decoder->initRinex(_staID, _mountPoint, _latitude, _longitude, 
     343
     344  _decoder->initRinex(_staID, _mountPoint, _latitude, _longitude,
    345345                               _nmea, _ntripVersion);
    346346
     
    393393}
    394394
    395 // 
     395//
    396396////////////////////////////////////////////////////////////////////////////
    397397void bncGetThread::terminate() {
     
    478478      // -----------
    479479      if (_rawOutput) {
    480         BNC_CORE->writeRawData(data, _staID, _format); 
     480        BNC_CORE->writeRawData(data, _staID, _format);
    481481      }
    482482
     
    485485        _serialPort->write(data);
    486486      }
    487      
     487
    488488      // Decode Data
    489489      // -----------
     
    496496      t_irc irc = decoder()->Decode(data.data(), data.size(), errmsg);
    497497
     498      if (irc == failure) {
     499        continue;
     500      }
     501
    498502      // Perform various scans and checks
    499503      // --------------------------------
     
    502506        _latencyChecker->checkObsLatency(decoder()->_obsList);
    503507        _latencyChecker->checkCorrLatency(decoder()->corrGPSEpochTime());
    504        
     508
    505509        emit newLatency(_staID, _latencyChecker->currentLatency());
    506510      }
    507511
    508       miscScanRTCM();           
     512      miscScanRTCM();
    509513
    510514      // Loop over all observations (observations output)
     
    542546            long oldTime = it.value();
    543547            if      (obsTime <  oldTime) {
    544               emit( newMessage(_staID + 
     548              emit( newMessage(_staID +
    545549                 ": old observation " + prn.toAscii(), false));
    546550              continue;
    547551            }
    548552            else if (obsTime == oldTime) {
    549               emit( newMessage(_staID + 
     553              emit( newMessage(_staID +
    550554                 ": observation coming more than once " + prn.toAscii(), false));
    551555              continue;
     
    581585}
    582586
    583 // Try Re-Connect 
     587// Try Re-Connect
    584588////////////////////////////////////////////////////////////////////////////
    585589t_irc bncGetThread::tryReconnect() {
     
    715719        emit(newMessage(_staID + ": Received message type " + type.toAscii(), true));
    716720      }
    717  
     721
    718722      // Check Observation Types
    719723      // -----------------------
     
    777781        }
    778782        if (!allFound) {
    779           QString msg; 
     783          QString msg;
    780784          QTextStream str(&msg);
    781785          QString s;
     
    818822          emit(newMessage(_staID + ": Antenna height above marker "  + ant4 + "m", true));
    819823        }
    820         emit(newAntCrd(_staID, decoder()->_antList[ii].xx, 
    821                        decoder()->_antList[ii].yy, decoder()->_antList[ii].zz, 
     824        emit(newAntCrd(_staID, decoder()->_antList[ii].xx,
     825                       decoder()->_antList[ii].yy, decoder()->_antList[ii].zz,
    822826                       hh, antT));
    823827      }
     
    854858          hh = decoder()->_antList[ii].height;
    855859        }
    856         emit(newAntCrd(_staID, decoder()->_antList[ii].xx, 
    857                        decoder()->_antList[ii].yy, decoder()->_antList[ii].zz, 
     860        emit(newAntCrd(_staID, decoder()->_antList[ii].xx,
     861                       decoder()->_antList[ii].yy, decoder()->_antList[ii].zz,
    858862                       hh, antT));
    859863  }
Note: See TracChangeset for help on using the changeset viewer.