Changeset 1313 in ntrip for trunk/BNC/GPSS
- Timestamp:
- Dec 20, 2008, 1:59:44 PM (16 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/BNC/GPSS/gpssDecoder.cpp
r1312 r1313 39 39 //////////////////////////////////////////////////////////////////////////// 40 40 gpssDecoder::gpssDecoder() : GPSDecoder() { 41 _mode = MODE_SEARCH; 41 _mode = MODE_SEARCH; 42 _recordSize = 0; 42 43 } 43 44 … … 53 54 errmsg.clear(); 54 55 56 if (_mode == MODE_SEARCH) { 57 _buffer.clear(); 58 } 55 59 _buffer.append(data, dataLen); 56 60 57 61 EPOCHHEADER epochHdr; 58 t_obsInternal gpsObs;59 62 gpsephemeris gpsEph; 60 int recordSize;61 63 62 64 unsigned offset = 0; … … 84 86 case MODE_EPOCH: 85 87 case MODE_EPH: 86 if (offset+sizeof( recordSize) > _buffer.size()) {88 if (offset+sizeof(_recordSize) > _buffer.size()) { 87 89 errmsg.push_back("Record size too large (A)"); 88 90 _mode = MODE_SEARCH; 89 91 } else { 90 memcpy(& recordSize, &_buffer[offset], sizeof(recordSize));92 memcpy(&_recordSize, &_buffer[offset], sizeof(_recordSize)); 91 93 if (_mode == MODE_EPOCH) { 92 94 _mode = MODE_EPOCH_BODY; … … 95 97 _mode = MODE_EPH_BODY; 96 98 } 97 offset += sizeof( recordSize) - 1;99 offset += sizeof(_recordSize) - 1; 98 100 } 99 101 continue; 100 102 101 103 case MODE_EPOCH_BODY: 102 if (offset + recordSize > _buffer.size()) {104 if (offset + _recordSize > _buffer.size()) { 103 105 errmsg.push_back("Record size too large (B)"); 104 106 _mode = MODE_SEARCH; … … 107 109 offset += sizeof(epochHdr); 108 110 for (int is = 1; is <= epochHdr.n_svs; is++) { 109 memcpy(&gpsObs, &_buffer[offset], sizeof(gpsObs)); 110 offset += sizeof(gpsObs); 111 t_obs* obs = new t_obs(); 112 memcpy(&(obs->_o), &_buffer[offset], sizeof(obs->_o)); 113 _obsList.push_back(obs); 114 offset += sizeof(obs->_o); 111 115 } 112 116 _mode = MODE_EPOCH_CRC; … … 116 120 117 121 case MODE_EPH_BODY: 118 if (offset + recordSize > _buffer.size()) {122 if (offset + _recordSize > _buffer.size()) { 119 123 errmsg.push_back("Record size too large (C)"); 120 124 _mode = MODE_SEARCH; 121 125 } else { 122 126 memcpy(&gpsEph, &_buffer[offset], sizeof(gpsEph)); 127 emit newGPSEph(&gpsEph); 123 128 offset += sizeof(gpsEph) - 1; 124 129 _mode = MODE_EPH_CRC; … … 144 149 } 145 150 146 return success; 151 if (errmsg.size() == 0) { 152 return success; 153 } 154 else { 155 return failure; 156 } 147 157 }
Note:
See TracChangeset
for help on using the changeset viewer.