15 lines
350 B
Python
15 lines
350 B
Python
from functools import reduce
|
|
|
|
def compute_chk(data):
|
|
return reduce(lambda a, b: (a+b)%256, data, 0)
|
|
|
|
def compute_checksum(cmd, data):
|
|
return compute_chk(bytearray([cmd]) + data)
|
|
|
|
def bcd_decode(b):
|
|
return \
|
|
1000 * ((b & 0xf000) >> 12) + \
|
|
100 * ((b & 0xf00) >> 8) + \
|
|
10 * ((b & 0xf0) >> 4) + \
|
|
(b & 0x0f)
|