Neato XV-11: Difference between revisions
| Line 425: | Line 425: | ||
<br /> | <br /> | ||
def checksum(data): | def checksum(data): | ||
“”“Compute and return the checksum as an int.”“” | |||
# group the data by word, little-endian | |||
data_list = [] | |||
for t in range(10): | |||
data_list.append( data2*t + (data2*t+1<<8) ) | |||
# compute the checksum on 32 bits | |||
chk32 = 0 | |||
for d in data_list: | |||
chk32 = (chk32 << 1) + d | |||
# return a value wrapped around on 15bits, and truncated to still fit into 15 bits | |||
checksum = (chk32 & 0x7FFF) + ( chk32 >> 15 ) # wrap around to fit into 15 bits | |||
checksum = checksum & 0x7FFF # truncate to 15 bits | |||
return int( checksum ) | |||
==== Data format for firmware 2.1 (Sparkfun scans, pre-production units) ==== | ==== Data format for firmware 2.1 (Sparkfun scans, pre-production units) ==== | ||