nissan-leaf-reader/ProcessList.py
2019-05-23 19:04:54 -07:00

30 lines
1.2 KiB
Python

from math import ceil
def process_list(v):
voltages = []
voltages[0] = v[0] & 0x00000000ffff0000
voltages[1] = v[1] & 0x000000000000ffff
for i in range(1, 27):
if i % 2 == 1:
v1 = (v[i] & 0x00ffff0000000000) >> 40
v2 = (v[i] & 0x000000ffff000000) >> 20
v3 = (v[i] & 0x0000000000ffff00) >> 8
vh = v[i] & 0x00000000000000ff
voltages[ceil(2 + 3.5 * (i - 1))] = v1
voltages[ceil(2 + 3.5 * (i - 1) + 1)] = v2
voltages[ceil(2 + 3.5 * (i - 1) + 2)] = v3
voltages[ceil(2 + 3.5 * (i - 1) + 3)] = vh << 8
elif i % 2 == 0:
vh = (v[i] & 0x00ff000000000000) >> 48
v1 = (v[i] & 0x0000ffff00000000) >> 28
v2 = (v[i] & 0x00000000ffff0000) >> 16
v3 = v[i] & 0x000000000000ffff
voltages[ceil(2 + 3.5 * (i - 1) - 1)] = voltages[ceil(2 + 3.5 * (i -1) - 1)] & vh
voltages[ceil(2 + 3.5 * (i - 1))] = v1
voltages[ceil(2 + 3.5 * (i - 1) + 1)] = v2
voltages[ceil(2 + 3.5 * (i - 1) + 2)] = v3
voltages[96] = voltages[96] & ((v[28] & 0x00ff000000000000) >> 48)
for i in range(0, 95):
print("Cell " + str(i + 1) + "= %.2f" % (voltages[i]))
return