/data3/calcul/jacquem/working_dir/Micromegas/micromegasFrameWork/src/analyse/Renaud/change_crc.cpp

Go to the documentation of this file.
00001 #include <iostream>
00002 #include <include/mTypes.h>
00003 #include <vector>
00004 #include <sstream>
00005 //#include "Log.hh"
00006 #include <fstream>
00007 //#include <TROOT.h>
00008 #include <string>
00009 
00010 /////////////////////////////////////////////////////////////////
00011 using namespace std;
00012 void init();
00013 void compute(ui16 value);
00014 void usage(char *progname) ;
00015 std::vector<ui16> keys;
00016 ui16 crc;
00017 /////////////////////////////////////////////////////////////////
00018 
00019 /*
00020 g++ -I. src/analyse/Renaud/change_crc.cpp
00021 g++ -I. src/analyse/Renaud/change_crc.cpp -o src/analyse/Renaud/change_crc
00022 */
00023 
00024 
00025 int main(int argc, char** argv)
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 }
00078 
00079 /////////////////////////////////////////////////////////////////
00080 //---------oO0Oo-----oO0Oo----------
00081 void compute(ui16 value)
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 }
00100 
00101 
00102 //---------oO0Oo-----oO0Oo----------
00103 void init()
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 }
00363 
00364 
00365 void usage(char *progname)
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 }
00371 
00372 

Generated on Mon Jan 7 13:15:21 2013 for MicromegasFramework by  doxygen 1.4.7