//==============================================================================================================
void CRC_7::Update(uint8 &crc, uint8 c)
{
uint8 i;
for(i = 0; i < 8; i++)
{
if ((crc ^ (c >> 1)) & 0x40) crc = (crc << 1) ^ 0x09; /* G(x) = x^7 + x^3 + 1 */
else crc <<= 1;
c <<= 1;
}
}
//--------------------------------------------------------------------------------------------------------------
uint8 CRC_7::Get(const uint8 *src, uint8 size)
{
uint8 crc = 0;
while (size--) Update(crc, *src++);
return crc;
}
uint8 CRC_7::Get(const uint8 *src, uint8 size, uint8 crc)
{
while (size--) Update(crc, *src++);
return crc;
}
//==============================================================================================================