5 # val is 12 bits. Return the 16 bits value that includes the 4 bits
9 # add the three 4-bits blocks of x together
13 cksum = (cksum & 0xf) + ((cksum & 0xf0) >> 4)
16 cksum = (cksum & 0xf) + ((cksum & 0xf0) >> 4)
17 cksum = (~cksum) & 0xf
18 return (cksum << 12) + (val & 0xfff)
20 # val is 16 bits, including 4 bits-cksum in MSB, return 0xFFFF is cksum
21 # is wrong, or the 12 bits value on success.
22 def verify_cksum(val):
24 # add the four 4-bits blocks of val together
28 cksum = (cksum & 0xf) + ((cksum & 0xf0) >> 4)
31 cksum = (cksum & 0xf) + ((cksum & 0xf0) >> 4)
34 cksum = (cksum & 0xf) + ((cksum & 0xf0) >> 4)
37 return 0xffff # wrong value
43 x = random.randint(0,(1<<12)-1)
45 y = random.randint(0,(1<<16)-1)
50 print "%d errors / %d"%(err, total)