Go to the documentation of this file.00001
00029
00030
00031 #ifndef CRC_h_
00032 #define CRC_h_
00033
00034 #include "sdhlibrary_settings.h"
00035
00036
00037
00038
00039
00040
00041
00042
00043
00044
00045 #include "basisdef.h"
00046
00047
00048
00049
00050
00051 NAMESPACE_SDH_START
00052
00053
00054 typedef UInt16 tCRCValue;
00055
00056
00057
00058
00059
00060
00061
00062
00063
00064
00065
00066
00067
00068
00069
00070
00071
00072
00073
00074
00082 class VCC_EXPORT cCRC
00083 {
00084 protected:
00086 tCRCValue current_crc;
00087
00089 tCRCValue initial_value;
00090
00092 tCRCValue const* crc_table;
00093
00094 public:
00096 cCRC( tCRCValue const* _crc_table, tCRCValue _initial_value )
00097 {
00098 crc_table = _crc_table;
00099 initial_value = _initial_value;
00100 current_crc = initial_value;
00101 }
00102
00104 tCRCValue AddByte( unsigned char byte )
00105 {
00106 current_crc = ( (current_crc & 0xFF00) >> 8 ) ^ crc_table[ ( current_crc & 0x00FF ) ^ (byte & 0x00FF)];
00107 return current_crc;
00108 }
00109
00111 tCRCValue AddBytes( unsigned char* bytes, int nb_bytes )
00112 {
00113 for ( int i=0; i<nb_bytes; i++ )
00114 current_crc = ( (current_crc & 0xFF00) >> 8 ) ^ crc_table[ ( current_crc & 0x00FF ) ^ (bytes[i] & 0x00FF)];
00115 return current_crc;
00116 }
00117
00119 inline tCRCValue GetCRC()
00120 {
00121 return current_crc;
00122 }
00123
00125 inline UInt8 GetCRC_LB()
00126 {
00127 return current_crc & 0x00ff;
00128 }
00129
00131 inline UInt8 GetCRC_HB()
00132 {
00133 return (current_crc >> 8) & 0x00ff;
00134 }
00135
00137 inline tCRCValue Reset()
00138 {
00139 current_crc = initial_value;
00140 return current_crc;
00141 }
00142 };
00143
00144
00145
00147 class VCC_EXPORT cCRC_DSACON32m : public cCRC
00148 {
00149 protected:
00151 static tCRCValue const crc_table_dsacon32m[256];
00152
00153 public:
00155 inline cCRC_DSACON32m( void )
00156 : cCRC( crc_table_dsacon32m, 0xffff )
00157 {
00158
00159 }
00160 };
00161
00162
00163
00170 class VCC_EXPORT cCRC_SDH : public cCRC_DSACON32m
00171 {
00172 public:
00174 inline cCRC_SDH( void )
00175 : cCRC_DSACON32m()
00176 {
00177
00178 }
00179 };
00180
00181
00182
00183 NAMESPACE_SDH_END
00184
00185 #endif
00186
00187
00188
00189
00190
00191
00192
00193
00194
00195
00196
00197
00198