Changeset 1312 in ntrip
- Timestamp:
- Dec 20, 2008, 1:46:46 PM (16 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/BNC/GPSS/gpssDecoder.cpp
r1311 r1312 18 18 #include "gpssDecoder.h" 19 19 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 31 30 32 31 using namespace std; … … 56 55 _buffer.append(data, dataLen); 57 56 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 61 62 unsigned offset = 0; 62 63 EPOCHHEADER epochHdr;64 t_obsInternal gpsObs[MAX_PRN];65 gpsephemeris gpsEph;66 67 63 for (offset = 0; offset < _buffer.size(); offset++) { 68 64 … … 92 88 _mode = MODE_SEARCH; 93 89 } else { 94 memcpy(& _buffer[offset], &recordSize, sizeof(recordSize));90 memcpy(&recordSize, &_buffer[offset], sizeof(recordSize)); 95 91 if (_mode == MODE_EPOCH) { 96 92 _mode = MODE_EPOCH_BODY; … … 108 104 _mode = MODE_SEARCH; 109 105 } 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 } 112 112 _mode = MODE_EPOCH_CRC; 113 --offset; 113 114 } 114 115 continue; … … 116 117 case MODE_EPH_BODY: 117 118 if (offset + recordSize > _buffer.size()) { 118 errmsg.push_back("Record size too large ( B)");119 errmsg.push_back("Record size too large (C)"); 119 120 _mode = MODE_SEARCH; 120 121 } else { 121 /// memcpy(&_buffer[offset], eph, recordSize);122 offset += recordSize- 1;122 memcpy(&gpsEph, &_buffer[offset], sizeof(gpsEph)); 123 offset += sizeof(gpsEph) - 1; 123 124 _mode = MODE_EPH_CRC; 124 125 } … … 134 135 135 136 case MODE_EPOCH_ETX: 136 haveEpoch = true;137 137 _mode = MODE_SEARCH; 138 138 continue; 139 139 140 140 case MODE_EPH_ETX: 141 haveEph = true;142 141 _mode = MODE_SEARCH; 143 142 continue; 144 143 } 144 } 145 145 146 if (haveEpoch) { 147 haveEpoch = false; 148 } 149 150 if (haveEph) { 151 haveEph = false; 152 } 153 } 146 return success; 154 147 }
Note:
See TracChangeset
for help on using the changeset viewer.