Термотроник АДИ-0-0 [21/24] Приложение 4 функция расчета контрольной суммы crc32

Термотроник АДИ-0-0 [21/24] Приложение 4 функция расчета контрольной суммы crc32
АДИ Описание протокола обмена с.21
Приложение 4. Функция расчета контрольной суммы Crc32
#define CRC32_Pre() 0xFFFFFFFF
#define CRC32_Pnom() 0xEDB88320
#define CRC32_XOR() 0xFFFFFFFF
#define CRC32_Check(_C) (_C == 0xDEBB20E3)
unsigned char CRC32(void * pBuf, unsigned long len)
{
unsigned long j;
unsigned long _CRC;
_CRC = CRC32_Pre();
for (j=0; j < len; j++) {
_CRC = CRC32_Calc_Byte(*((BYTE*)(pBuf)+j), _CRC);
}
if (CRC32_Check(_CRC)) {
return 1;
} else {
return 0;
}
}
unsigned long CRC32_Calc_Byte(unsigned char _D, unsigned long _C)
{
unsigned char _i = 8;
_C ^= (_D & 0xFF);
do {
if (_C & 1) { _C=(_C>>1)^CRC32_Pnom(); } else { _C>>=1; }
} while (--_i);
return (_C);
}

Содержание

Похожие устройства