CrcCheck Class Reference

#include <CrcCheck.hh>

Collaboration diagram for CrcCheck:

Collaboration graph
[legend]
List of all members.

Public Member Functions

 CrcCheck ()
 ~CrcCheck ()
void compute (ui16 value)
void reset ()
ui16 getCrc ()

Private Member Functions

void init ()

Private Attributes

std::vector< ui16 > keys
ui16 crc

Detailed Description

Definition at line 16 of file CrcCheck.hh.


Constructor & Destructor Documentation

CrcCheck::CrcCheck (  ) 

Definition at line 14 of file CrcCheck.cpp.

00015 :crc(0xffff)
00016 {
00017 FILE_LOG(logDEBUG )  << hex << "CrcCheck constructeur CRC[0x" << crc << "]" << endl;
00018 init();
00019 }

CrcCheck::~CrcCheck (  ) 

Definition at line 22 of file CrcCheck.cpp.

00023 {
00024 }


Member Function Documentation

void CrcCheck::init (  )  [private]

Definition at line 49 of file CrcCheck.cpp.

Referenced by CrcCheck().

00050 {
00051   keys.push_back(0x0000);
00052   keys.push_back(0x1021);
00053   keys.push_back(0x2042);
00054   keys.push_back(0x3063);
00055   keys.push_back(0x4084);
00056   keys.push_back(0x50A5);
00057   keys.push_back(0x60C6);
00058   keys.push_back(0x70E7);
00059   keys.push_back(0x8108);
00060   keys.push_back(0x9129);
00061   keys.push_back(0xA14A);
00062   keys.push_back(0xB16B);
00063   keys.push_back(0xC18C);
00064   keys.push_back(0xD1AD);
00065   keys.push_back(0xE1CE);
00066   keys.push_back(0xF1EF);
00067   keys.push_back(0x1231);
00068   keys.push_back(0x0210);
00069   keys.push_back(0x3273);
00070   keys.push_back(0x2252);
00071   keys.push_back(0x52B5);
00072   keys.push_back(0x4294);
00073   keys.push_back(0x72F7);
00074   keys.push_back(0x62D6);
00075   keys.push_back(0x9339);
00076   keys.push_back(0x8318);
00077   keys.push_back(0xB37B);
00078   keys.push_back(0xA35A);
00079   keys.push_back(0xD3BD);
00080   keys.push_back(0xC39C);
00081   keys.push_back(0xF3FF);
00082   keys.push_back(0xE3DE);
00083   keys.push_back(0x2462);
00084   keys.push_back(0x3443);
00085   keys.push_back(0x0420);
00086   keys.push_back(0x1401);
00087   keys.push_back(0x64E6);
00088   keys.push_back(0x74C7);
00089   keys.push_back(0x44A4);
00090   keys.push_back(0x5485);
00091   keys.push_back(0xA56A);
00092   keys.push_back(0xB54B);
00093   keys.push_back(0x8528);
00094   keys.push_back(0x9509);
00095   keys.push_back(0xE5EE);
00096   keys.push_back(0xF5CF);
00097   keys.push_back(0xC5AC);
00098   keys.push_back(0xD58D);
00099   keys.push_back(0x3653);
00100   keys.push_back(0x2672);
00101   keys.push_back(0x1611);
00102   keys.push_back(0x0630);
00103   keys.push_back(0x76D7);
00104   keys.push_back(0x66F6);
00105   keys.push_back(0x5695);
00106   keys.push_back(0x46B4);
00107   keys.push_back(0xB75B);
00108   keys.push_back(0xA77A);
00109   keys.push_back(0x9719);
00110   keys.push_back(0x8738);
00111   keys.push_back(0xF7DF);
00112   keys.push_back(0xE7FE);
00113   keys.push_back(0xD79D);
00114   keys.push_back(0xC7BC);
00115   keys.push_back(0x48C4);
00116   keys.push_back(0x58E5);
00117   keys.push_back(0x6886);
00118   keys.push_back(0x78A7);
00119   keys.push_back(0x0840);
00120   keys.push_back(0x1861);
00121   keys.push_back(0x2802);
00122   keys.push_back(0x3823);
00123   keys.push_back(0xC9CC);
00124   keys.push_back(0xD9ED);
00125   keys.push_back(0xE98E);
00126   keys.push_back(0xF9AF);
00127   keys.push_back(0x8948);
00128   keys.push_back(0x9969);
00129   keys.push_back(0xA90A);
00130   keys.push_back(0xB92B);
00131   keys.push_back(0x5AF5);
00132   keys.push_back(0x4AD4);
00133   keys.push_back(0x7AB7);
00134   keys.push_back(0x6A96);
00135   keys.push_back(0x1A71);
00136   keys.push_back(0x0A50);
00137   keys.push_back(0x3A33);
00138   keys.push_back(0x2A12);
00139   keys.push_back(0xDBFD);
00140   keys.push_back(0xCBDC);
00141   keys.push_back(0xFBBF);
00142   keys.push_back(0xEB9E);
00143   keys.push_back(0x9B79);
00144   keys.push_back(0x8B58);
00145   keys.push_back(0xBB3B);
00146   keys.push_back(0xAB1A);
00147   keys.push_back(0x6CA6);
00148   keys.push_back(0x7C87);
00149   keys.push_back(0x4CE4);
00150   keys.push_back(0x5CC5);
00151   keys.push_back(0x2C22);
00152   keys.push_back(0x3C03);
00153   keys.push_back(0x0C60);
00154   keys.push_back(0x1C41);
00155   keys.push_back(0xEDAE);
00156   keys.push_back(0xFD8F);
00157   keys.push_back(0xCDEC);
00158   keys.push_back(0xDDCD);
00159   keys.push_back(0xAD2A);
00160   keys.push_back(0xBD0B);
00161   keys.push_back(0x8D68);
00162   keys.push_back(0x9D49);
00163   keys.push_back(0x7E97);
00164   keys.push_back(0x6EB6);
00165   keys.push_back(0x5ED5);
00166   keys.push_back(0x4EF4);
00167   keys.push_back(0x3E13);
00168   keys.push_back(0x2E32);
00169   keys.push_back(0x1E51);
00170   keys.push_back(0x0E70);
00171   keys.push_back(0xFF9F);
00172   keys.push_back(0xEFBE);
00173   keys.push_back(0xDFDD);
00174   keys.push_back(0xCFFC);
00175   keys.push_back(0xBF1B);
00176   keys.push_back(0xAF3A);
00177   keys.push_back(0x9F59);
00178   keys.push_back(0x8F78);
00179   keys.push_back(0x9188);
00180   keys.push_back(0x81A9);
00181   keys.push_back(0xB1CA);
00182   keys.push_back(0xA1EB);
00183   keys.push_back(0xD10C);
00184   keys.push_back(0xC12D);
00185   keys.push_back(0xF14E);
00186   keys.push_back(0xE16F);
00187   keys.push_back(0x1080);
00188   keys.push_back(0x00A1);
00189   keys.push_back(0x30C2);
00190   keys.push_back(0x20E3);
00191   keys.push_back(0x5004);
00192   keys.push_back(0x4025);
00193   keys.push_back(0x7046);
00194   keys.push_back(0x6067);
00195   keys.push_back(0x83B9);
00196   keys.push_back(0x9398);
00197   keys.push_back(0xA3FB);
00198   keys.push_back(0xB3DA);
00199   keys.push_back(0xC33D);
00200   keys.push_back(0xD31C);
00201   keys.push_back(0xE37F);
00202   keys.push_back(0xF35E);
00203   keys.push_back(0x02B1);
00204   keys.push_back(0x1290);
00205   keys.push_back(0x22F3);
00206   keys.push_back(0x32D2);
00207   keys.push_back(0x4235);
00208   keys.push_back(0x5214);
00209   keys.push_back(0x6277);
00210   keys.push_back(0x7256);
00211   keys.push_back(0xB5EA);
00212   keys.push_back(0xA5CB);
00213   keys.push_back(0x95A8);
00214   keys.push_back(0x8589);
00215   keys.push_back(0xF56E);
00216   keys.push_back(0xE54F);
00217   keys.push_back(0xD52C);
00218   keys.push_back(0xC50D);
00219   keys.push_back(0x34E2);
00220   keys.push_back(0x24C3);
00221   keys.push_back(0x14A0);
00222   keys.push_back(0x0481);
00223   keys.push_back(0x7466);
00224   keys.push_back(0x6447);
00225   keys.push_back(0x5424);
00226   keys.push_back(0x4405);
00227   keys.push_back(0xA7DB);
00228   keys.push_back(0xB7FA);
00229   keys.push_back(0x8799);
00230   keys.push_back(0x97B8);
00231   keys.push_back(0xE75F);
00232   keys.push_back(0xF77E);
00233   keys.push_back(0xC71D);
00234   keys.push_back(0xD73C);
00235   keys.push_back(0x26D3);
00236   keys.push_back(0x36F2);
00237   keys.push_back(0x0691);
00238   keys.push_back(0x16B0);
00239   keys.push_back(0x6657);
00240   keys.push_back(0x7676);
00241   keys.push_back(0x4615);
00242   keys.push_back(0x5634);
00243   keys.push_back(0xD94C);
00244   keys.push_back(0xC96D);
00245   keys.push_back(0xF90E);
00246   keys.push_back(0xE92F);
00247   keys.push_back(0x99C8);
00248   keys.push_back(0x89E9);
00249   keys.push_back(0xB98A);
00250   keys.push_back(0xA9AB);
00251   keys.push_back(0x5844);
00252   keys.push_back(0x4865);
00253   keys.push_back(0x7806);
00254   keys.push_back(0x6827);
00255   keys.push_back(0x18C0);
00256   keys.push_back(0x08E1);
00257   keys.push_back(0x3882);
00258   keys.push_back(0x28A3);
00259   keys.push_back(0xCB7D);
00260   keys.push_back(0xDB5C);
00261   keys.push_back(0xEB3F);
00262   keys.push_back(0xFB1E);
00263   keys.push_back(0x8BF9);
00264   keys.push_back(0x9BD8);
00265   keys.push_back(0xABBB);
00266   keys.push_back(0xBB9A);
00267   keys.push_back(0x4A75);
00268   keys.push_back(0x5A54);
00269   keys.push_back(0x6A37);
00270   keys.push_back(0x7A16);
00271   keys.push_back(0x0AF1);
00272   keys.push_back(0x1AD0);
00273   keys.push_back(0x2AB3);
00274   keys.push_back(0x3A92);
00275   keys.push_back(0xFD2E);
00276   keys.push_back(0xED0F);
00277   keys.push_back(0xDD6C);
00278   keys.push_back(0xCD4D);
00279   keys.push_back(0xBDAA);
00280   keys.push_back(0xAD8B);
00281   keys.push_back(0x9DE8);
00282   keys.push_back(0x8DC9);
00283   keys.push_back(0x7C26);
00284   keys.push_back(0x6C07);
00285   keys.push_back(0x5C64);
00286   keys.push_back(0x4C45);
00287   keys.push_back(0x3CA2);
00288   keys.push_back(0x2C83);
00289   keys.push_back(0x1CE0);
00290   keys.push_back(0x0CC1);
00291   keys.push_back(0xEF1F);
00292   keys.push_back(0xFF3E);
00293   keys.push_back(0xCF5D);
00294   keys.push_back(0xDF7C);
00295   keys.push_back(0xAF9B);
00296   keys.push_back(0xBFBA);
00297   keys.push_back(0x8FD9);
00298   keys.push_back(0x9FF8);
00299   keys.push_back(0x6E17);
00300   keys.push_back(0x7E36);
00301   keys.push_back(0x4E55);
00302   keys.push_back(0x5E74);
00303   keys.push_back(0x2E93);
00304   keys.push_back(0x3EB2);
00305   keys.push_back(0x0ED1);
00306   keys.push_back(0x1EF0);
00307  // FILE_LOG(logDEBUG1 ) <<   dec << "keys.size()[" << keys.size() << "]" << endl;
00308 }

void CrcCheck::compute ( ui16  value  ) 

Definition at line 27 of file CrcCheck.cpp.

Referenced by MicrorocOldLabviewReader::getAcqData(), MicrorocMergeReader::getAcqData(), Hardroc2XdaqReader::getAcqData(), Hardroc2LabviewReader::getAcqData(), MicrorocOldLabviewReader::getAnalogData(), DifReader::getData(), CalibMicrorocParser::getData(), CalibMicrorocParser::getNextEvent(), and MicrorocXDaqReader::getSpecificData().

00028 {
00029 
00030 //  FILE_LOG(logDEBUG1 )  << hex << "----- BEGIN   CRC[0x" << crc << "]" ;
00031   //FILE_LOG(logDEBUG1 )  << hex << "   CRC receive value[0x" << value << "]" << endl;
00032 
00033   ui16 first = ( crc & 0x00FF )  << 8; 
00034 
00035   ui16 index = ( crc & 0xFF00 ) >> 8;
00036   
00037   index = index ^ value;  // XOR
00038 
00039   if ( index > keys.size() ) { crc = 0; return ; }
00040   
00041   ui16 second = keys[index]; 
00042 
00043   crc = first ^ second ;
00044 //  FILE_LOG(logDEBUG1 ) << hex << "---- END    CRC[0x" << crc << "]" << dec << endl;
00045 }

void CrcCheck::reset (  )  [inline]

Definition at line 27 of file CrcCheck.hh.

Referenced by AcquisitionParser::setComputeCrcFlag().

00027 { crc = 0xffff; };

ui16 CrcCheck::getCrc (  )  [inline]

Definition at line 29 of file CrcCheck.hh.

Referenced by MicrorocOldLabviewReader::getAcqData(), MicrorocMergeReader::getAcqData(), Hardroc2XdaqReader::getAcqData(), Hardroc2LabviewReader::getAcqData(), MicrorocOldLabviewReader::getAnalogData(), and CalibMicrorocParser::getNextEvent().

00029 { return crc; };


Member Data Documentation

std::vector<ui16> CrcCheck::keys [private]

Definition at line 29 of file CrcCheck.hh.

Referenced by compute(), and init().

ui16 CrcCheck::crc [private]

Definition at line 34 of file CrcCheck.hh.

Referenced by compute(), CrcCheck(), and reset().


The documentation for this class was generated from the following files:
Generated on Mon Jan 7 13:18:09 2013 for MicromegasFramework by  doxygen 1.4.7