-
Patrick Robbe authoredPatrick Robbe authored
CRC.py 1.66 KiB
def crc8_update( crc , data ):
t = data ^ crc
n0 = ( ( t & 0b100000 ) >> 5 ) ^ ( ( t & 0b10000 ) >> 4 ) ^ ( ( t & 0b100 ) >> 2 ) ^ ( ( t & 0b1 ) )
n1 = ( ( t & 0b1000000 ) >> 6 ) ^ ( ( t & 0b100000 ) >> 5 ) ^ ( ( t & 0b1000 ) >> 3 ) ^ ( ( t & 0b10 ) >> 1 )
n2 = ( ( t & 0b10000000 ) >> 7 ) ^ ( ( t & 0b1000000 ) >> 6 ) ^ ( ( t & 0b100000 ) >> 5 ) ^ ( ( t & 0b1 ) )
n3 = ( ( t & 0b10000000 ) >> 7 ) ^ ( ( t & 0b1000000 ) >> 6 ) ^ ( ( t & 0b100000 ) >> 5 ) ^ ( ( t & 0b10000 ) >> 4 ) ^ ( ( t & 0b100 ) >> 2 ) ^ ( ( t & 0b10 ) >> 1 ) ^ ( ( t & 0b1 ) )
n4 = ( ( t & 0b10000000 ) >> 7 ) ^ ( ( t & 0b1000000 ) >> 6 ) ^ ( ( t & 0b100000 ) >> 5 ) ^ ( ( t & 0b1000 ) >> 3 ) ^ ( ( t & 0b100 ) >> 2 ) ^ ( ( t & 0b10 ) >> 1 )
n5 = ( ( t & 0b10000000 ) >> 7 ) ^ ( ( t & 0b1000000 ) >> 6 ) ^ ( ( t & 0b10000 ) >> 4 ) ^ ( ( t & 0b1000 ) >> 3 ) ^ ( ( t & 0b100 ) >> 2 )
n6 = ( ( t & 0b10000000 ) >> 7 ) ^ ( ( t & 0b1000 ) >> 3 ) ^ ( ( t & 0b100 ) >> 2 ) ^ ( ( t & 0b1 ) )
n7 = ( ( t & 0b10000 ) >> 4 ) ^ ( ( t & 0b1000 ) >> 3 ) ^ ( ( t & 0b10 ) >> 1 )
n = n0 | ( n1 << 1 ) | ( n2 << 2 ) | ( n3 << 3 ) | ( n4 << 4 ) | ( n5 << 5 ) | ( n6 << 6 ) | ( n7 << 7 )
return n
crc = 0
crc = crc8_update( crc , 0x00 )
crc = crc8_update( crc , 0x00 )
crc = crc8_update( crc , 0x01 )
crc = crc8_update( crc , 0xf1 )
crc = crc8_update( crc , 0x00 )
crc = crc8_update( crc , 0x00 )
crc = crc8_update( crc , 0x1d )
crc = crc8_update( crc , 0x10 )
crc = crc8_update( crc , 0x20 )
crc = crc8_update( crc , 0x00 )
crc = crc8_update( crc , 0x1d )
crc = crc8_update( crc , 0x10 )
crc = crc8_update( crc , 0x20 )
crc = crc8_update( crc , 0x00 )
print 'CRC = {0:04x}'.format(crc)