From 27ef9f2236ca45eae9adaa395969133c2a59b75b Mon Sep 17 00:00:00 2001 From: Nigel Armstrong Date: Fri, 12 Apr 2019 16:57:32 -0700 Subject: [PATCH] Squashed 'panda/' changes from 06958e4..38dc4e6 38dc4e6 Chrysler safety: better to mention messages we don't want to forward 236705f chrysler: forward bus 0 to bus 2 (#177) 62d4219 debug_console.py: exit when no pandas found (#175) git-subtree-dir: panda git-subtree-split: 38dc4e678325d13b4324f91f6eff8cb6a0fe575d --- board/safety/safety_chrysler.h | 23 ++++++++++++++++++++--- tests/debug_console.py | 3 +++ 2 files changed, 23 insertions(+), 3 deletions(-) diff --git a/board/safety/safety_chrysler.h b/board/safety/safety_chrysler.h index b1c6a743f1..4af588401e 100644 --- a/board/safety/safety_chrysler.h +++ b/board/safety/safety_chrysler.h @@ -5,7 +5,7 @@ const int CHRYSLER_MAX_RATE_UP = 3; const int CHRYSLER_MAX_RATE_DOWN = 3; const int CHRYSLER_MAX_TORQUE_ERROR = 80; // max torque cmd in excess of torque motor -int chrysler_camera_detected = 0; +int chrysler_camera_detected = 0; // is giraffe switch 2 high? int chrysler_rt_torque_last = 0; int chrysler_desired_torque_last = 0; int chrysler_cruise_engaged_last = 0; @@ -125,12 +125,29 @@ static int chrysler_tx_hook(CAN_FIFOMailBox_TypeDef *to_send) { return true; } +static void chrysler_init(int16_t param) { + chrysler_camera_detected = 0; +} + +static int chrysler_fwd_hook(int bus_num, CAN_FIFOMailBox_TypeDef *to_fwd) { + int32_t addr = to_fwd->RIR >> 21; + // forward CAN 0 -> 2 so stock LKAS camera sees messages + if (bus_num == 0 && !chrysler_camera_detected) { + return 2; + } + // forward all messages from camera except LKAS_COMMAND and LKAS_HUD + if (bus_num == 2 && !chrysler_camera_detected && addr != 658 && addr != 678) { + return 0; + } + return -1; // do not forward +} + const safety_hooks chrysler_hooks = { - .init = nooutput_init, + .init = chrysler_init, .rx = chrysler_rx_hook, .tx = chrysler_tx_hook, .tx_lin = nooutput_tx_lin_hook, .ignition = default_ign_hook, - .fwd = nooutput_fwd_hook, + .fwd = chrysler_fwd_hook, }; diff --git a/tests/debug_console.py b/tests/debug_console.py index f4db77f091..0238ed7897 100755 --- a/tests/debug_console.py +++ b/tests/debug_console.py @@ -21,6 +21,9 @@ if __name__ == "__main__": pandas = list(map(lambda x: Panda(x, claim=claim), serials)) + if not len(pandas): + sys.exit("no pandas found") + if os.getenv("BAUD") is not None: for panda in pandas: panda.set_uart_baud(port_number, int(os.getenv("BAUD")))