- Timestamp:
- Jan 3, 2009, 12:53:57 PM (16 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
TabularUnified trunk/BNC/GPSS/gpssDecoder.cpp ¶
r1433 r1434 39 39 } EPOCHHEADER; 40 40 41 // Cyclic Redundancy Check 42 //////////////////////////////////////////////////////////////////////////// 43 unsigned short cal_crc(char *buf, int num) { 44 unsigned short polynomial = 0x8408; 45 unsigned short crc = 0; 46 int i; 47 while ( num-- ) { 48 crc = ( crc & 0xFF00 ) | ( *buf++^( crc & 0x00FF ) ); 49 for( i=0; i<8; i++ ){ 50 if( crc & 0x0001 ){ 51 crc >>= 1; 52 crc ^= polynomial; 53 } 54 else{ 55 crc >>= 1; 56 } 57 } 58 } 59 return (crc); 60 } 61 41 62 // Constructor 42 63 //////////////////////////////////////////////////////////////////////////// … … 61 82 _buffer += QByteArray(data, dataLen); 62 83 84 cout << "Decode: buffer length = " << _buffer.length() << endl; 85 63 86 int iBeg; 64 87 while ( (iBeg = _buffer.indexOf(0x02)) != -1) { … … 74 97 int reqLength = 2 + sizeof(recordSize) + sizeof(EPOCHHEADER); 75 98 76 cout << "Obs: " << _buffer.length() << " " << reqLength << endl;77 78 99 if (_buffer.length() >= reqLength) { 79 100 EPOCHHEADER epochHdr; … … 84 105 85 106 if (_buffer.length() >= reqLength) { 107 108 int checkLen = 2 + sizeof(recordSize) + sizeof(EPOCHHEADER) + 109 epochHdr.n_svs * sizeof(t_obsInternal); 110 memcpy(&crc, _buffer.data() + checkLen, sizeof(crc)); 111 int crdCal = cal_crc(_buffer.data(), checkLen); 112 113 cout << "Obs: " << crc << " " << crdCal << endl; 114 86 115 for (int is = 0; is < epochHdr.n_svs; is++) { 87 116 t_obs* obs = new t_obs(); … … 102 131 sizeof(crc) + 1; 103 132 104 cout << "Eph: " <<_buffer.length()<< " " <<reqLength<< endl;133 if (_buffer.length() >= reqLength) { 105 134 106 if (_buffer.length() >= reqLength) { 135 int checkLen = 2 + sizeof(recordSize) + sizeof(gpsephemeris); 136 memcpy(&crc, _buffer.data() + checkLen, sizeof(crc)); 137 int crdCal = cal_crc(_buffer.data(), checkLen); 138 139 cout << "Obs: " << crc << " " << crdCal << endl; 140 107 141 gpsephemeris* gpsEph = new gpsephemeris; 108 142 memcpy(gpsEph, _buffer.data() + 2 + sizeof(recordSize),
Note:
See TracChangeset
for help on using the changeset viewer.