Changeset 1312 in ntrip


Ignore:
Timestamp:
Dec 20, 2008, 1:46:46 PM (15 years ago)
Author:
mervart
Message:

* empty log message *

File:
1 edited

Legend:

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

    r1311 r1312  
    1818#include "gpssDecoder.h"
    1919
    20 #define MODE_SEARCH     0
    21 #define MODE_TYPE       1
    22 #define MODE_EPOCH      2
    23 #define MODE_EPOCH_BODY 3
    24 #define MODE_EPOCH_CRC  4
    25 #define MODE_EPOCH_ETX  5
    26 #define MODE_EPH        6
    27 #define MODE_EPH_BODY   7
    28 #define MODE_EPH_CRC    8
    29 #define MODE_EPH_ETX    9
    30 #define MAX_PRN         32
     20#define MODE_SEARCH     0
     21#define MODE_TYPE       1
     22#define MODE_EPOCH      2
     23#define MODE_EPOCH_BODY 3
     24#define MODE_EPOCH_CRC  4
     25#define MODE_EPOCH_ETX  5
     26#define MODE_EPH        6
     27#define MODE_EPH_BODY   7
     28#define MODE_EPH_CRC    8
     29#define MODE_EPH_ETX    9
    3130
    3231using namespace std;
     
    5655  _buffer.append(data, dataLen);
    5756
    58   bool     haveEpoch  = false;
    59   bool     haveEph    = false;
    60   int      recordSize = 0;
     57  EPOCHHEADER   epochHdr;
     58  t_obsInternal gpsObs;
     59  gpsephemeris  gpsEph;
     60  int           recordSize;
     61
    6162  unsigned offset     = 0;
    62 
    63   EPOCHHEADER   epochHdr;
    64   t_obsInternal gpsObs[MAX_PRN];
    65   gpsephemeris  gpsEph;
    66 
    6763  for (offset = 0; offset < _buffer.size(); offset++) {
    6864
     
    9288          _mode = MODE_SEARCH;
    9389        } else {
    94           memcpy(&_buffer[offset], &recordSize, sizeof(recordSize));
     90          memcpy(&recordSize, &_buffer[offset], sizeof(recordSize));
    9591          if (_mode == MODE_EPOCH) {
    9692            _mode = MODE_EPOCH_BODY;
     
    108104          _mode = MODE_SEARCH;
    109105        } else {
    110           ///          memcpy(&_buffer[offset], epoch, recordSize);
    111           offset += recordSize - 1;
     106          memcpy(&epochHdr, &_buffer[offset], sizeof(epochHdr));
     107          offset += sizeof(epochHdr);
     108          for (int is = 1; is <= epochHdr.n_svs; is++) {
     109            memcpy(&gpsObs, &_buffer[offset], sizeof(gpsObs));
     110            offset += sizeof(gpsObs);
     111          }
    112112          _mode = MODE_EPOCH_CRC;
     113          --offset;
    113114        }
    114115        continue;
     
    116117      case MODE_EPH_BODY:
    117118        if (offset + recordSize > _buffer.size()) {
    118           errmsg.push_back("Record size too large (B)");
     119          errmsg.push_back("Record size too large (C)");
    119120          _mode = MODE_SEARCH;
    120121        } else {
    121           ///          memcpy(&_buffer[offset], eph, recordSize);
    122           offset += recordSize - 1;
     122          memcpy(&gpsEph, &_buffer[offset], sizeof(gpsEph));
     123          offset += sizeof(gpsEph) - 1;
    123124          _mode = MODE_EPH_CRC;
    124125        }
     
    134135
    135136      case MODE_EPOCH_ETX:
    136         haveEpoch = true;
    137137        _mode = MODE_SEARCH;
    138138        continue;
    139139
    140140      case MODE_EPH_ETX:
    141         haveEph = true;
    142141        _mode = MODE_SEARCH;
    143142        continue;
    144143    }
     144  }
    145145
    146     if (haveEpoch) {
    147       haveEpoch = false;
    148     }
    149 
    150     if (haveEph) {
    151       haveEph = false;
    152     }
    153   }
     146  return success;
    154147}
Note: See TracChangeset for help on using the changeset viewer.