Merge pull request #24 from commaai/redux/runtime_can_loopback

Can loopback now runtime configurable.
This commit is contained in:
George Hotz
2017-07-16 15:41:41 -07:00
committed by GitHub
4 changed files with 14 additions and 4 deletions

View File

@@ -18,9 +18,9 @@ void can_init(uint8_t bus_number, int silent) {
CAN_BTR_TS2_0 | (prescaler - 1);
// silent loopback mode for debugging
#ifdef CAN_LOOPBACK_MODE
if (can_loopback) {
CAN->BTR |= CAN_BTR_SILM | CAN_BTR_LBKM;
#endif
}
if (silent) {
CAN->BTR |= CAN_BTR_SILM;

View File

@@ -3,7 +3,6 @@
//#define DEBUG
//#define DEBUG_USB
//#define CAN_LOOPBACK_MODE
#ifdef STM32F4
#define PANDA

View File

@@ -44,7 +44,7 @@
// debug safety check: is controls allowed?
int controls_allowed = 0;
int started = 0;
int can_live = 0, pending_can_live = 0;
int can_live = 0, pending_can_live = 0, can_loopback = 0;
// optional features
int gas_interceptor_detected = 0;
@@ -707,6 +707,14 @@ int usb_cb_control_msg(USB_Setup_TypeDef *setup, uint8_t *resp, int hardwired) {
if (!ur) break;
uart_set_baud(ur->uart, (int)setup->b.wIndex.w*300);
break;
case 0xe5: // Set CAN loopback (for testing)
can_loopback = (setup->b.wValue.w > 0);
can_init(CAN1, 0);
can_init(CAN2, 0);
#ifdef CAN3
can_init(CAN3, 0);
#endif
break;
case 0xf0: // k-line wValue pulse on uart2
if (setup->b.wValue.w == 1) {
GPIOC->ODR &= ~(1 << 10);

View File

@@ -157,6 +157,9 @@ class Panda(object):
def set_gmlan(self, on, bus=2):
self._handle.controlWrite(Panda.REQUEST_TYPE, 0xdb, on, bus, b'')
def set_can_loopback(self, enable):
self._handle.controlWrite(Panda.REQUEST_TYPE, 0xe5, bool(enable), 0, b'')
def set_uart_baud(self, uart, rate):
self._handle.controlWrite(Panda.REQUEST_TYPE, 0xe1, uart, rate, b'')