Thursday, June 28, 2007

One-liner (almost) CRC.

Dallas iButton 8-bit CRC calculation.
Source: http://www.maxim-ic.com/appnotes.cfm/appnote_number/27
Polynomial: x^8 + x^5 + x^4 + 1 (0x8C)
Initial value: 0x00

uint8_t
_crc_ibutton_update(uint8_t crc, uint8_t data)
{
uint8_t i;
crc = crc ^ data;
for (i = 0; i < 8; ++i) {
crc = (crc << 1) ^ ((crc & 0x01) * 0x8C);
}
return crc;
}

No comments: