tests work on legacy board
parent
639ea617b8
commit
4d879f7e47
88
board/main.c
88
board/main.c
|
@ -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:
|
||||
|
|
|
@ -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
|
||||
|
||||
|
|
|
@ -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
|
||||
|
|
Loading…
Reference in New Issue