Changeset 1430 in ntrip


Ignore:
Timestamp:
Jan 3, 2009, 11:15:03 AM (15 years ago)
Author:
mervart
Message:

* empty log message *

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/BNC/GPSS/gpssDecoder.cpp

    r1429 r1430  
    6363    _buffer = _buffer.mid(iBeg);
    6464
    65     // Record Size
    66     // -----------
    6765    int recordSize;
    68     if (_buffer.length() >= int(2 + sizeof(recordSize)) &&
    69         ( char(_buffer[1]) == 0x00 || char(_buffer[1]) == 0x01) ) {
    70       memcpy(&recordSize, _buffer.data()+2, sizeof(recordSize));
    71     }
    72     else {
    73       break;
    74     }
     66    int crc;
    7567   
    7668    // Observations
     
    8274               sizeof(epochHdr));
    8375
    84         if (_buffer.length() >= int(2 + sizeof(recordSize) + sizeof(epochHdr) +
    85                                 epochHdr.n_svs * sizeof(t_obsInternal))) {
    86           for (int is = 1; is <= epochHdr.n_svs; is++) {
     76        int reqLength = 2 + sizeof(recordSize) + sizeof(epochHdr) +
     77          epochHdr.n_svs * sizeof(t_obsInternal) + sizeof(crc) + 1;
     78
     79        if (_buffer.length() >= reqLength) {
     80          for (int is = 0; is < epochHdr.n_svs; is++) {
    8781            t_obs* obs = new t_obs();
    88             memcpy(&(obs->_o), _buffer.data(), sizeof(t_obsInternal));
     82            memcpy(&(obs->_o), _buffer.data() + 2 + sizeof(recordSize) +
     83                               sizeof(epochHdr) + is * sizeof(t_obsInternal),
     84                   sizeof(t_obsInternal));
    8985            _obsList.push_back(obs);
    9086          }
     
    9692    // ---------
    9793    else if (char(_buffer[1]) == 0x01) {
    98       if (_buffer.length() >= int(2+sizeof(recordSize)+ sizeof(gpsephemeris))){
     94      int reqLength = 2 + sizeof(recordSize) + sizeof(gpsephemeris) +
     95        sizeof(crc) + 1;
     96      if (_buffer.length() >= reqLength) {
    9997        gpsephemeris* gpsEph = new gpsephemeris;
    100         memcpy(gpsEph, _buffer.data(), sizeof(gpsephemeris));
     98        memcpy(gpsEph, _buffer.data() + 2 + sizeof(recordSize) +
     99                       sizeof(gpsephemeris), sizeof(gpsephemeris));
    101100        emit newGPSEph(gpsEph);
    102101      }
Note: See TracChangeset for help on using the changeset viewer.