58 lines
898 B
C++
58 lines
898 B
C++
#include "CrcUtil.h"
|
|
|
|
|
|
uint16 usMBCRC16(uint8 * pucFrame, uint8 usLen)
|
|
{
|
|
uint8 ucCRCHi = 0xFF;
|
|
uint8 ucCRCLo = 0xFF;
|
|
int iIndex;
|
|
while (usLen--)
|
|
{
|
|
iIndex = ucCRCLo ^ *(pucFrame++);
|
|
ucCRCLo = (uint8)(ucCRCHi ^ aucCRCHi[iIndex]);
|
|
ucCRCHi = aucCRCLo[iIndex];
|
|
}
|
|
return (uint16)(ucCRCHi << 8 | ucCRCLo);
|
|
}
|
|
|
|
|
|
uint16 CRC16(uint8 *ptr, uint8 len)
|
|
{
|
|
uint8 i;
|
|
uint16 crc = 0;
|
|
while (len-- != 0)
|
|
{
|
|
for (i = 0x80; i != 0; i /= 2)
|
|
{
|
|
if ((crc & 0x8000) != 0)
|
|
{
|
|
crc *= 2; crc ^= 0x8005;
|
|
}
|
|
else
|
|
crc *= 2;
|
|
if ((*ptr&i) != 0)
|
|
crc ^= 0x8005;
|
|
}
|
|
ptr++;
|
|
}
|
|
return(crc);
|
|
}
|
|
|
|
|
|
/*
|
|
CRC16źĆË㺯Ęý
|
|
*/
|
|
uint16 MB_CRC16(uint8 Buff[], int count)
|
|
{
|
|
uint8 CRCHi = 0xFF;
|
|
uint8 CRCLo = 0xFF;
|
|
int index;
|
|
int i = 0;
|
|
while ((count--) > 0)
|
|
{
|
|
index = CRCLo ^ Buff[i++];
|
|
CRCLo = (uint8)(CRCHi ^ _CRCHi[index]);
|
|
CRCHi = _CRCLo[index];
|
|
}
|
|
return (uint16)(CRCHi << 8 | CRCLo);
|
|
} |