#include <iostream>
#include <include/mTypes.h>
#include <vector>
#include <sstream>
#include <fstream>
#include <string>
Include dependency graph for change_crc.cpp:
Go to the source code of this file.
Functions | |
void | init () |
void | compute (ui16 value) |
void | usage (char *progname) |
int | main (int argc, char **argv) |
Variables | |
std::vector< ui16 > | keys |
ui16 | crc |
void init | ( | ) |
Definition at line 103 of file change_crc.cpp.
Referenced by FillEvent(), IlcConfDb::init(), and main().
00104 { 00105 keys.push_back(0x0000); 00106 keys.push_back(0x1021); 00107 keys.push_back(0x2042); 00108 keys.push_back(0x3063); 00109 keys.push_back(0x4084); 00110 keys.push_back(0x50A5); 00111 keys.push_back(0x60C6); 00112 keys.push_back(0x70E7); 00113 keys.push_back(0x8108); 00114 keys.push_back(0x9129); 00115 keys.push_back(0xA14A); 00116 keys.push_back(0xB16B); 00117 keys.push_back(0xC18C); 00118 keys.push_back(0xD1AD); 00119 keys.push_back(0xE1CE); 00120 keys.push_back(0xF1EF); 00121 keys.push_back(0x1231); 00122 keys.push_back(0x0210); 00123 keys.push_back(0x3273); 00124 keys.push_back(0x2252); 00125 keys.push_back(0x52B5); 00126 keys.push_back(0x4294); 00127 keys.push_back(0x72F7); 00128 keys.push_back(0x62D6); 00129 keys.push_back(0x9339); 00130 keys.push_back(0x8318); 00131 keys.push_back(0xB37B); 00132 keys.push_back(0xA35A); 00133 keys.push_back(0xD3BD); 00134 keys.push_back(0xC39C); 00135 keys.push_back(0xF3FF); 00136 keys.push_back(0xE3DE); 00137 keys.push_back(0x2462); 00138 keys.push_back(0x3443); 00139 keys.push_back(0x0420); 00140 keys.push_back(0x1401); 00141 keys.push_back(0x64E6); 00142 keys.push_back(0x74C7); 00143 keys.push_back(0x44A4); 00144 keys.push_back(0x5485); 00145 keys.push_back(0xA56A); 00146 keys.push_back(0xB54B); 00147 keys.push_back(0x8528); 00148 keys.push_back(0x9509); 00149 keys.push_back(0xE5EE); 00150 keys.push_back(0xF5CF); 00151 keys.push_back(0xC5AC); 00152 keys.push_back(0xD58D); 00153 keys.push_back(0x3653); 00154 keys.push_back(0x2672); 00155 keys.push_back(0x1611); 00156 keys.push_back(0x0630); 00157 keys.push_back(0x76D7); 00158 keys.push_back(0x66F6); 00159 keys.push_back(0x5695); 00160 keys.push_back(0x46B4); 00161 keys.push_back(0xB75B); 00162 keys.push_back(0xA77A); 00163 keys.push_back(0x9719); 00164 keys.push_back(0x8738); 00165 keys.push_back(0xF7DF); 00166 keys.push_back(0xE7FE); 00167 keys.push_back(0xD79D); 00168 keys.push_back(0xC7BC); 00169 keys.push_back(0x48C4); 00170 keys.push_back(0x58E5); 00171 keys.push_back(0x6886); 00172 keys.push_back(0x78A7); 00173 keys.push_back(0x0840); 00174 keys.push_back(0x1861); 00175 keys.push_back(0x2802); 00176 keys.push_back(0x3823); 00177 keys.push_back(0xC9CC); 00178 keys.push_back(0xD9ED); 00179 keys.push_back(0xE98E); 00180 keys.push_back(0xF9AF); 00181 keys.push_back(0x8948); 00182 keys.push_back(0x9969); 00183 keys.push_back(0xA90A); 00184 keys.push_back(0xB92B); 00185 keys.push_back(0x5AF5); 00186 keys.push_back(0x4AD4); 00187 keys.push_back(0x7AB7); 00188 keys.push_back(0x6A96); 00189 keys.push_back(0x1A71); 00190 keys.push_back(0x0A50); 00191 keys.push_back(0x3A33); 00192 keys.push_back(0x2A12); 00193 keys.push_back(0xDBFD); 00194 keys.push_back(0xCBDC); 00195 keys.push_back(0xFBBF); 00196 keys.push_back(0xEB9E); 00197 keys.push_back(0x9B79); 00198 keys.push_back(0x8B58); 00199 keys.push_back(0xBB3B); 00200 keys.push_back(0xAB1A); 00201 keys.push_back(0x6CA6); 00202 keys.push_back(0x7C87); 00203 keys.push_back(0x4CE4); 00204 keys.push_back(0x5CC5); 00205 keys.push_back(0x2C22); 00206 keys.push_back(0x3C03); 00207 keys.push_back(0x0C60); 00208 keys.push_back(0x1C41); 00209 keys.push_back(0xEDAE); 00210 keys.push_back(0xFD8F); 00211 keys.push_back(0xCDEC); 00212 keys.push_back(0xDDCD); 00213 keys.push_back(0xAD2A); 00214 keys.push_back(0xBD0B); 00215 keys.push_back(0x8D68); 00216 keys.push_back(0x9D49); 00217 keys.push_back(0x7E97); 00218 keys.push_back(0x6EB6); 00219 keys.push_back(0x5ED5); 00220 keys.push_back(0x4EF4); 00221 keys.push_back(0x3E13); 00222 keys.push_back(0x2E32); 00223 keys.push_back(0x1E51); 00224 keys.push_back(0x0E70); 00225 keys.push_back(0xFF9F); 00226 keys.push_back(0xEFBE); 00227 keys.push_back(0xDFDD); 00228 keys.push_back(0xCFFC); 00229 keys.push_back(0xBF1B); 00230 keys.push_back(0xAF3A); 00231 keys.push_back(0x9F59); 00232 keys.push_back(0x8F78); 00233 keys.push_back(0x9188); 00234 keys.push_back(0x81A9); 00235 keys.push_back(0xB1CA); 00236 keys.push_back(0xA1EB); 00237 keys.push_back(0xD10C); 00238 keys.push_back(0xC12D); 00239 keys.push_back(0xF14E); 00240 keys.push_back(0xE16F); 00241 keys.push_back(0x1080); 00242 keys.push_back(0x00A1); 00243 keys.push_back(0x30C2); 00244 keys.push_back(0x20E3); 00245 keys.push_back(0x5004); 00246 keys.push_back(0x4025); 00247 keys.push_back(0x7046); 00248 keys.push_back(0x6067); 00249 keys.push_back(0x83B9); 00250 keys.push_back(0x9398); 00251 keys.push_back(0xA3FB); 00252 keys.push_back(0xB3DA); 00253 keys.push_back(0xC33D); 00254 keys.push_back(0xD31C); 00255 keys.push_back(0xE37F); 00256 keys.push_back(0xF35E); 00257 keys.push_back(0x02B1); 00258 keys.push_back(0x1290); 00259 keys.push_back(0x22F3); 00260 keys.push_back(0x32D2); 00261 keys.push_back(0x4235); 00262 keys.push_back(0x5214); 00263 keys.push_back(0x6277); 00264 keys.push_back(0x7256); 00265 keys.push_back(0xB5EA); 00266 keys.push_back(0xA5CB); 00267 keys.push_back(0x95A8); 00268 keys.push_back(0x8589); 00269 keys.push_back(0xF56E); 00270 keys.push_back(0xE54F); 00271 keys.push_back(0xD52C); 00272 keys.push_back(0xC50D); 00273 keys.push_back(0x34E2); 00274 keys.push_back(0x24C3); 00275 keys.push_back(0x14A0); 00276 keys.push_back(0x0481); 00277 keys.push_back(0x7466); 00278 keys.push_back(0x6447); 00279 keys.push_back(0x5424); 00280 keys.push_back(0x4405); 00281 keys.push_back(0xA7DB); 00282 keys.push_back(0xB7FA); 00283 keys.push_back(0x8799); 00284 keys.push_back(0x97B8); 00285 keys.push_back(0xE75F); 00286 keys.push_back(0xF77E); 00287 keys.push_back(0xC71D); 00288 keys.push_back(0xD73C); 00289 keys.push_back(0x26D3); 00290 keys.push_back(0x36F2); 00291 keys.push_back(0x0691); 00292 keys.push_back(0x16B0); 00293 keys.push_back(0x6657); 00294 keys.push_back(0x7676); 00295 keys.push_back(0x4615); 00296 keys.push_back(0x5634); 00297 keys.push_back(0xD94C); 00298 keys.push_back(0xC96D); 00299 keys.push_back(0xF90E); 00300 keys.push_back(0xE92F); 00301 keys.push_back(0x99C8); 00302 keys.push_back(0x89E9); 00303 keys.push_back(0xB98A); 00304 keys.push_back(0xA9AB); 00305 keys.push_back(0x5844); 00306 keys.push_back(0x4865); 00307 keys.push_back(0x7806); 00308 keys.push_back(0x6827); 00309 keys.push_back(0x18C0); 00310 keys.push_back(0x08E1); 00311 keys.push_back(0x3882); 00312 keys.push_back(0x28A3); 00313 keys.push_back(0xCB7D); 00314 keys.push_back(0xDB5C); 00315 keys.push_back(0xEB3F); 00316 keys.push_back(0xFB1E); 00317 keys.push_back(0x8BF9); 00318 keys.push_back(0x9BD8); 00319 keys.push_back(0xABBB); 00320 keys.push_back(0xBB9A); 00321 keys.push_back(0x4A75); 00322 keys.push_back(0x5A54); 00323 keys.push_back(0x6A37); 00324 keys.push_back(0x7A16); 00325 keys.push_back(0x0AF1); 00326 keys.push_back(0x1AD0); 00327 keys.push_back(0x2AB3); 00328 keys.push_back(0x3A92); 00329 keys.push_back(0xFD2E); 00330 keys.push_back(0xED0F); 00331 keys.push_back(0xDD6C); 00332 keys.push_back(0xCD4D); 00333 keys.push_back(0xBDAA); 00334 keys.push_back(0xAD8B); 00335 keys.push_back(0x9DE8); 00336 keys.push_back(0x8DC9); 00337 keys.push_back(0x7C26); 00338 keys.push_back(0x6C07); 00339 keys.push_back(0x5C64); 00340 keys.push_back(0x4C45); 00341 keys.push_back(0x3CA2); 00342 keys.push_back(0x2C83); 00343 keys.push_back(0x1CE0); 00344 keys.push_back(0x0CC1); 00345 keys.push_back(0xEF1F); 00346 keys.push_back(0xFF3E); 00347 keys.push_back(0xCF5D); 00348 keys.push_back(0xDF7C); 00349 keys.push_back(0xAF9B); 00350 keys.push_back(0xBFBA); 00351 keys.push_back(0x8FD9); 00352 keys.push_back(0x9FF8); 00353 keys.push_back(0x6E17); 00354 keys.push_back(0x7E36); 00355 keys.push_back(0x4E55); 00356 keys.push_back(0x5E74); 00357 keys.push_back(0x2E93); 00358 keys.push_back(0x3EB2); 00359 keys.push_back(0x0ED1); 00360 keys.push_back(0x1EF0); 00361 // FILE_LOG(logDEBUG1 ) << dec << "keys.size()[" << keys.size() << "]" << endl; 00362 }
void compute | ( | ui16 | value | ) |
Definition at line 81 of file change_crc.cpp.
Referenced by main().
00082 { 00083 00084 // FILE_LOG(logDEBUG1 ) << hex << "----- BEGIN CRC[0x" << crc << "]" ; 00085 //FILE_LOG(logDEBUG1 ) << hex << " CRC receive value[0x" << value << "]" << endl; 00086 00087 ui16 first = ( crc & 0x00FF ) << 8; 00088 00089 ui16 index = ( crc & 0xFF00 ) >> 8; 00090 00091 index = index ^ value; // XOR 00092 00093 if ( index > keys.size() ) { crc = 0; return ; } 00094 00095 ui16 second = keys[index]; 00096 00097 crc = first ^ second ; 00098 // FILE_LOG(logDEBUG1 ) << hex << "---- END CRC[0x" << crc << "]" << dec << endl; 00099 }
void usage | ( | char * | progname | ) |
Definition at line 365 of file change_crc.cpp.
00366 { 00367 printf("Usage : %s filename", progname); 00368 printf(" Modify CRC in MICROROC bonding test file generated with Labview"); 00369 // printf(" scurve_rootfile.root is created\n"); 00370 }
int main | ( | int | argc, | |
char ** | argv | |||
) |
Definition at line 25 of file change_crc.cpp.
00026 { 00027 00028 if(argc != 2) 00029 { usage(argv[0]) ; 00030 return 1 ; 00031 } 00032 string LabviewFilename = argv[1] ; 00033 00034 //int crap ; // buffer to read data 00035 int start = 18 ; 00036 int stop = 109 ; 00037 string bufferdata ; // buffer to read data 00038 string byte ; 00039 stringstream scrc ; 00040 // stringstream ssbyte ; 00041 int currentbyte ; 00042 long pos ; 00043 00044 fstream dataLabview ; 00045 dataLabview.open(LabviewFilename.c_str(),fstream::in | fstream::out) ; 00046 if (dataLabview.is_open()==false) 00047 { cerr << "Could not open data file : " << LabviewFilename << endl ; 00048 exit(1) ; 00049 } 00050 00051 for (int nline=0;nline<=28;nline++) 00052 { getline(dataLabview,bufferdata) ; 00053 } 00054 // cout << bufferdata << endl ; 00055 00056 init(); 00057 crc=0xffff ; 00058 for (int o=start;o<stop;o+=2) // loop on bytes 00059 { byte = bufferdata.substr(o, 2); 00060 stringstream (byte) >> hex >> currentbyte ; 00061 //cout << byte << " " << hex << currentbyte << endl ; 00062 compute(currentbyte) ; 00063 } 00064 cout << "Old CRC[0x" << bufferdata.substr(stop,4) << "]" << std::endl; 00065 scrc.width(4) ; 00066 scrc << hex << crc ; 00067 cout << "New CRC[0x" << scrc.str() << "]" << endl ; 00068 00069 pos=dataLabview.tellp(); 00070 // cout << pos << endl ; 00071 dataLabview.seekp(pos-5); 00072 dataLabview.write((scrc.str()).c_str() ,4); 00073 dataLabview.close() ; 00074 00075 return 0; 00076 00077 }
std::vector<ui16> keys |
ui16 crc |