You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
113 lines
2.1 KiB
113 lines
2.1 KiB
#!/usr/bin/env python3
|
|
import os
|
|
import zmq
|
|
|
|
import cereal.messaging as messaging
|
|
from cereal.services import service_list
|
|
|
|
from panda.lib.panda import Panda
|
|
from hexdump import hexdump
|
|
import time
|
|
|
|
def raw_panda():
|
|
p = Panda()
|
|
print(p)
|
|
|
|
p.set_uart_baud(2, 9600)
|
|
p.set_uart_baud(3, 9600)
|
|
|
|
p.set_uart_parity(2, 1)
|
|
p.set_uart_parity(3, 1)
|
|
|
|
p.set_uart_callback(2, 1)
|
|
p.set_uart_callback(3, 1)
|
|
|
|
idx = 0
|
|
while 1:
|
|
"""
|
|
dat = p.serial_read(2)
|
|
if len(dat) > 0:
|
|
print "2:",
|
|
hexdump(dat)
|
|
|
|
dat = p.serial_read(3)
|
|
if len(dat) > 0:
|
|
print "3:",
|
|
hexdump(dat)
|
|
|
|
print "read done, waiting"
|
|
time.sleep(0.01)
|
|
"""
|
|
|
|
if idx%2 == 1:
|
|
dat = "\x20\x80\xc0\xa0"
|
|
else:
|
|
dat = "\x00\x80\xc0\xc0"
|
|
p.can_send(0, dat, 8)
|
|
|
|
for r in p.can_recv():
|
|
if r[-1] in [8, 9]:
|
|
print(r[-1], r[2].encode("hex"))
|
|
|
|
time.sleep(0.01)
|
|
idx += 1
|
|
|
|
if __name__ == "__main__":
|
|
#raw_panda()
|
|
#exit(0)
|
|
|
|
logcan = messaging.sub_sock('can')
|
|
|
|
t1 = []
|
|
t2 = []
|
|
t3 = []
|
|
|
|
while len(t1) < 1000 or os.uname()[-1] == "aarch64":
|
|
rr = messaging.recv_sock(logcan, wait=True)
|
|
for c in rr.can:
|
|
if c.src in [9] and len(c.dat) == 5:
|
|
aa = map(lambda x: ord(x)&0x7f, c.dat)
|
|
|
|
# checksum
|
|
assert (-(aa[0]+aa[1]+aa[2]+aa[3]))&0x7f == aa[4]
|
|
|
|
#print map(bin, aa[0:4])
|
|
|
|
aa[0] &= ~0x20
|
|
aa[1] &= ~0x20
|
|
|
|
st = (aa[0] << 5) + aa[1]
|
|
if st >= 256:
|
|
st = -(512-st)
|
|
|
|
mt = ((aa[2] >> 3) << 7) + aa[3]
|
|
if mt >= 512:
|
|
mt = -(1024-mt)
|
|
|
|
print(st, mt)
|
|
t1.append(st)
|
|
t2.append(mt)
|
|
#print map(bin, aa), "apply", st
|
|
|
|
if c.src in [8] and len(c.dat) == 4:
|
|
aa = map(lambda x: ord(x)&0x7f, c.dat)
|
|
|
|
# checksum
|
|
assert (-(aa[0]+aa[1]+aa[2]))&0x7f == aa[3]
|
|
|
|
aa[0] &= ~0x20
|
|
aa[1] &= ~0x20
|
|
|
|
st = (aa[0] << 5) + aa[1]
|
|
if st >= 256:
|
|
st = -(512-st)
|
|
print(aa, "apply", st)
|
|
|
|
t3.append(st)
|
|
|
|
import matplotlib.pyplot as plt
|
|
plt.plot(t1)
|
|
plt.plot(t2)
|
|
plt.plot(t3)
|
|
plt.show()
|
|
|
|
|