tests work on legacy board

master
Firmware Batman 2017-07-18 21:14:38 -07:00
parent 639ea617b8
commit 4d879f7e47
3 changed files with 60 additions and 47 deletions

View File

@ -461,11 +461,13 @@ void usb_cb_ep2_out(uint8_t *usbdata, int len, int hardwired) {
}
void send_can(CAN_FIFOMailBox_TypeDef *to_push, uint8_t bus_number) {
// add CAN packet to send queue
// bus number isn't passed through
to_push->RDTR &= 0xF;
push(can_queues[bus_number], to_push);
process_can(CAN_NUM_FROM_BUS_NUM(bus_number));
if (bus_number < BUS_MAX) {
// add CAN packet to send queue
// bus number isn't passed through
to_push->RDTR &= 0xF;
push(can_queues[bus_number], to_push);
process_can(CAN_NUM_FROM_BUS_NUM(bus_number));
}
}
// send on CAN
@ -578,46 +580,48 @@ int usb_cb_control_msg(USB_Setup_TypeDef *setup, uint8_t *resp, int hardwired) {
break;
// **** 0xdb: set GMLAN multiplexing mode
case 0xdb:
if (setup->b.wValue.w == 1) {
// GMLAN ON
if (setup->b.wIndex.w == 1) {
puts("GMLAN on CAN2\n");
// GMLAN on CAN2
set_can_mode(1, 1);
bus_lookup[1] = 3;
can_num_lookup[1] = -1;
can_num_lookup[3] = 1;
can_init(1);
} else if (setup->b.wIndex.w == 2) {
puts("GMLAN on CAN3\n");
// GMLAN on CAN3
set_can_mode(2, 1);
bus_lookup[2] = 3;
can_num_lookup[2] = -1;
can_num_lookup[3] = 2;
can_init(2);
}
} else {
// GMLAN OFF
switch (can_num_lookup[3]) {
case 1:
puts("disable GMLAN on CAN2\n");
set_can_mode(1, 0);
bus_lookup[1] = 1;
can_num_lookup[1] = 1;
can_num_lookup[3] = -1;
#ifdef PANDA
if (setup->b.wValue.w == 1) {
// GMLAN ON
if (setup->b.wIndex.w == 1) {
puts("GMLAN on CAN2\n");
// GMLAN on CAN2
set_can_mode(1, 1);
bus_lookup[1] = 3;
can_num_lookup[1] = -1;
can_num_lookup[3] = 1;
can_init(1);
break;
case 2:
puts("disable GMLAN on CAN3\n");
set_can_mode(2, 0);
bus_lookup[2] = 2;
can_num_lookup[2] = 2;
can_num_lookup[3] = -1;
} else if (setup->b.wIndex.w == 2 && revision == PANDA_REV_C) {
puts("GMLAN on CAN3\n");
// GMLAN on CAN3
set_can_mode(2, 1);
bus_lookup[2] = 3;
can_num_lookup[2] = -1;
can_num_lookup[3] = 2;
can_init(2);
break;
}
} else {
// GMLAN OFF
switch (can_num_lookup[3]) {
case 1:
puts("disable GMLAN on CAN2\n");
set_can_mode(1, 0);
bus_lookup[1] = 1;
can_num_lookup[1] = 1;
can_num_lookup[3] = -1;
can_init(1);
break;
case 2:
puts("disable GMLAN on CAN3\n");
set_can_mode(2, 0);
bus_lookup[2] = 2;
can_num_lookup[2] = 2;
can_num_lookup[3] = -1;
can_init(2);
break;
}
}
}
#endif
break;
// **** 0xdc: set safety mode
case 0xdc:

View File

@ -114,14 +114,14 @@ class Panda(object):
self._handle.close()
@staticmethod
def program(clean=False):
def program(clean=False, legacy=False):
BASEDIR = os.path.join(os.path.dirname(os.path.realpath(__file__)), "../")
# TODO: check for legacy board
if clean:
cmd = "make clean"
else:
cmd = "true"
ret = os.system("cd %s && %s && make" % (os.path.join(BASEDIR, "board"), cmd))
ret = os.system("cd %s && %s && make -f %s" % (os.path.join(BASEDIR, "board"), cmd, "Makefile.legacy" if legacy else "Makefile"))
time.sleep(1)
return ret==0

View File

@ -5,10 +5,12 @@ import time
from panda import Panda
from nose.tools import timed, assert_equal, assert_less, assert_greater
LEGACY = os.getenv("LEGACY") is not None
# must run first
def test_build_download_connect():
# download the latest code
assert(Panda.program(True))
assert(Panda.program(True, legacy=True))
# connect to the panda
p = Panda()
@ -34,7 +36,12 @@ def test_can_loopback():
# enable CAN loopback mode
p.set_can_loopback(True)
for bus in [0,1,2]:
if LEGACY:
busses = [0,1]
else:
busses = [0,1,2]
for bus in busses:
# set bus 0 speed to 250
p.set_can_speed_kbps(bus, 250)
@ -138,7 +145,6 @@ def test_throughput():
# enable CAN loopback mode
p.set_can_loopback(True)
for speed in [100,250,500,750,1000]:
# set bus 0 speed to speed
p.set_can_speed_kbps(0, speed)
@ -154,6 +160,9 @@ def test_throughput():
print("loopback 100 messages at speed %d, comp speed is %.2f, percent %.2f" % (speed, comp_kbps, saturation_pct))
def test_gmlan():
if LEGACY:
return
p = connect_wo_esp()
# enable output mode