From 4d1edc068b507fe3fb4bf7a309bb9a45af547a7d Mon Sep 17 00:00:00 2001 From: rbiasini Date: Wed, 13 Nov 2019 23:50:42 -0800 Subject: [PATCH] skip tx_hook if a message is forwarded (#379) --- board/drivers/can.h | 8 ++++---- board/main.c | 2 +- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/board/drivers/can.h b/board/drivers/can.h index c9bf2d25436b35..6a11fcf6f68c30 100644 --- a/board/drivers/can.h +++ b/board/drivers/can.h @@ -27,7 +27,7 @@ void can_set_forwarding(int from, int to); void can_init(uint8_t can_number); void can_init_all(void); -void can_send(CAN_FIFOMailBox_TypeDef *to_push, uint8_t bus_number); +void can_send(CAN_FIFOMailBox_TypeDef *to_push, uint8_t bus_number, bool skip_tx_hook); bool can_pop(can_ring *q, CAN_FIFOMailBox_TypeDef *elem); // Ignition detected from CAN meessages @@ -394,7 +394,7 @@ void can_rx(uint8_t can_number) { to_send.RDTR = to_push.RDTR; to_send.RDLR = to_push.RDLR; to_send.RDHR = to_push.RDHR; - can_send(&to_send, bus_fwd_num); + can_send(&to_send, bus_fwd_num, true); } safety_rx_hook(&to_push); @@ -420,8 +420,8 @@ void CAN3_TX_IRQHandler(void) { process_can(2); } void CAN3_RX0_IRQHandler(void) { can_rx(2); } void CAN3_SCE_IRQHandler(void) { can_sce(CAN3); } -void can_send(CAN_FIFOMailBox_TypeDef *to_push, uint8_t bus_number) { - if (safety_tx_hook(to_push) != 0) { +void can_send(CAN_FIFOMailBox_TypeDef *to_push, uint8_t bus_number, bool skip_tx_hook) { + if (skip_tx_hook || safety_tx_hook(to_push) != 0) { if (bus_number < BUS_MAX) { // add CAN packet to send queue // bus number isn't passed through diff --git a/board/main.c b/board/main.c index 532565d371e896..5319accfdd3b7c 100644 --- a/board/main.c +++ b/board/main.c @@ -233,7 +233,7 @@ void usb_cb_ep3_out(void *usbdata, int len, bool hardwired) { to_push.RIR = d32[dpkt]; uint8_t bus_number = (to_push.RDTR >> 4) & CAN_BUS_NUM_MASK; - can_send(&to_push, bus_number); + can_send(&to_push, bus_number, false); } }