From 767f8bb4b63716fec90af9760b81ee72a186773d Mon Sep 17 00:00:00 2001 From: Shane Smiskol Date: Sun, 2 Mar 2025 23:50:12 -0800 Subject: [PATCH 1/3] debug --- opendbc/safety/safety.h | 4 ++-- opendbc/safety/safety/safety_hyundai_canfd.h | 16 ++++++++++++++++ opendbc/safety/tests/test_defaults.py | 7 +++++++ opendbc/safety/tests/test_hyundai_canfd.py | 12 ++++++++++++ 4 files changed, 37 insertions(+), 2 deletions(-) diff --git a/opendbc/safety/safety.h b/opendbc/safety/safety.h index e41091b7fe0..77d505e03b1 100644 --- a/opendbc/safety/safety.h +++ b/opendbc/safety/safety.h @@ -172,8 +172,8 @@ static void update_counter(RxCheck addr_list[], int index, uint8_t counter) { } static bool rx_msg_safety_check(const CANPacket_t *to_push, - const safety_config *cfg, - const safety_hooks *safety_hooks) { + const safety_config *cfg, + const safety_hooks *safety_hooks) { int index = get_addr_check_index(to_push, cfg->rx_checks, cfg->rx_checks_len); update_addr_timestamp(cfg->rx_checks, index); diff --git a/opendbc/safety/safety/safety_hyundai_canfd.h b/opendbc/safety/safety/safety_hyundai_canfd.h index 89430abb968..4eb045028bd 100644 --- a/opendbc/safety/safety/safety_hyundai_canfd.h +++ b/opendbc/safety/safety/safety_hyundai_canfd.h @@ -203,6 +203,16 @@ static bool hyundai_canfd_tx_hook(const CANPacket_t *to_send) { violation |= longitudinal_accel_checks(desired_accel_raw, HYUNDAI_LONG_LIMITS); violation |= longitudinal_accel_checks(desired_accel_val, HYUNDAI_LONG_LIMITS); } else { + const int acc_mode = (GET_BYTE(to_send, 8) >> 4) & 0x7U; + + printf("cruise_engaged_prev: %d\n", cruise_engaged_prev); + printf("acc_mode: %d\n", acc_mode); + printf("desired_accel_raw: %d\n", desired_accel_raw); + + if (acc_mode != 4) { + violation = true; + } + // only used to cancel on here if ((desired_accel_raw != 0) || (desired_accel_val != 0)) { violation = true; @@ -250,6 +260,7 @@ static safety_config hyundai_canfd_init(uint16_t param) { static const CanMsg HYUNDAI_CANFD_LKA_STEERING_TX_MSGS[] = { HYUNDAI_CANFD_LKA_STEERING_COMMON_TX_MSGS(0, 1) +// HYUNDAI_CANFD_SCC_CONTROL_COMMON_TX_MSGS(1) }; static const CanMsg HYUNDAI_CANFD_LKA_STEERING_ALT_TX_MSGS[] = { @@ -303,6 +314,7 @@ static safety_config hyundai_canfd_init(uint16_t param) { HYUNDAI_CANFD_COMMON_RX_CHECKS(1) }; + printf("HERE2!\n"); ret = BUILD_SAFETY_CFG(hyundai_canfd_lka_steering_long_rx_checks, HYUNDAI_CANFD_LKA_STEERING_LONG_TX_MSGS); } else { // Longitudinal checks for LFA steering @@ -310,6 +322,8 @@ static safety_config hyundai_canfd_init(uint16_t param) { HYUNDAI_CANFD_COMMON_RX_CHECKS(0) }; + printf("HERE!\n"); + ret = hyundai_camera_scc ? BUILD_SAFETY_CFG(hyundai_canfd_long_rx_checks, HYUNDAI_CANFD_LFA_STEERING_CAMERA_SCC_TX_MSGS) : \ BUILD_SAFETY_CFG(hyundai_canfd_long_rx_checks, HYUNDAI_CANFD_LFA_STEERING_LONG_TX_MSGS); } @@ -326,6 +340,7 @@ static safety_config hyundai_canfd_init(uint16_t param) { ret = hyundai_canfd_lka_steering_alt ? BUILD_SAFETY_CFG(hyundai_canfd_lka_steering_rx_checks, HYUNDAI_CANFD_LKA_STEERING_ALT_TX_MSGS) : \ BUILD_SAFETY_CFG(hyundai_canfd_lka_steering_rx_checks, HYUNDAI_CANFD_LKA_STEERING_TX_MSGS); } else if (!hyundai_camera_scc) { + printf("HERE4!\n"); // Radar sends SCC messages on these cars instead of camera static RxCheck hyundai_canfd_radar_scc_rx_checks[] = { HYUNDAI_CANFD_COMMON_RX_CHECKS(0) @@ -334,6 +349,7 @@ static safety_config hyundai_canfd_init(uint16_t param) { ret = BUILD_SAFETY_CFG(hyundai_canfd_radar_scc_rx_checks, HYUNDAI_CANFD_LFA_STEERING_TX_MSGS); } else { + printf("HERE5!\n"); // *** LFA steering checks *** // Camera sends SCC messages on LFA steering cars. // Both button messages exist on some platforms, so we ensure we track the correct one using flag diff --git a/opendbc/safety/tests/test_defaults.py b/opendbc/safety/tests/test_defaults.py index 8b5b2c2dd33..28cc791d55e 100755 --- a/opendbc/safety/tests/test_defaults.py +++ b/opendbc/safety/tests/test_defaults.py @@ -22,6 +22,13 @@ def setUp(self): self.safety.set_safety_hooks(CarParams.SafetyModel.noOutput, 0) self.safety.init_tests() + def test_spam_can_buses(self): + # asserts tx allowed for all scanned addrs + for bus in range(4): + for addr in self.SCANNED_ADDRS: + should_tx = [addr, bus] in self.TX_MSGS + self.assertEqual(should_tx, self._tx(common.make_msg(bus, addr, 8)), f"allowed TX {addr=} {bus=}") + class TestSilent(TestNoOutput): """SILENT uses same hooks as NOOUTPUT""" diff --git a/opendbc/safety/tests/test_hyundai_canfd.py b/opendbc/safety/tests/test_hyundai_canfd.py index 826c0aef538..a2935e48cf5 100755 --- a/opendbc/safety/tests/test_hyundai_canfd.py +++ b/opendbc/safety/tests/test_hyundai_canfd.py @@ -152,6 +152,10 @@ def _button_msg(self, buttons, main_button=0, bus=1): } return self.packer.make_can_msg_panda("CRUISE_BUTTONS_ALT", self.PT_BUS, values) + def _acc_cancel_msg(self, cancel, accel=0): + values = {"ACCMode": 4 if cancel else 0, "aReqRaw": accel, "aReqValue": accel} + return self.packer.make_can_msg_panda("SCC_CONTROL", self.PT_BUS, values) + def test_button_sends(self): """ No button send allowed with alt buttons. @@ -161,6 +165,14 @@ def test_button_sends(self): self.safety.set_controls_allowed(enabled) self.assertFalse(self._tx(self._button_msg(btn))) + def test_acc_cancel(self): + # FIXME: the CANFD_ALT_BUTTONS cars are the only ones that use SCC_CONTROL to cancel, why can't we use buttons? + for enabled in (True, False): + self.safety.set_controls_allowed(enabled) + self.assertTrue(self._tx(self._acc_cancel_msg(True))) + self.assertFalse(self._tx(self._acc_cancel_msg(True, accel=1))) + self.assertFalse(self._tx(self._acc_cancel_msg(False))) + class TestHyundaiCanfdLKASteeringEV(TestHyundaiCanfdBase): From a950b9283f2b01d8c83b60e21993b18c1d1e2edc Mon Sep 17 00:00:00 2001 From: Shane Smiskol Date: Sun, 2 Mar 2025 23:52:03 -0800 Subject: [PATCH 2/3] remove debugging --- opendbc/safety/safety.h | 4 ++-- opendbc/safety/safety/safety_hyundai_canfd.h | 14 ++------------ opendbc/safety/tests/test_defaults.py | 7 ------- 3 files changed, 4 insertions(+), 21 deletions(-) diff --git a/opendbc/safety/safety.h b/opendbc/safety/safety.h index 77d505e03b1..e41091b7fe0 100644 --- a/opendbc/safety/safety.h +++ b/opendbc/safety/safety.h @@ -172,8 +172,8 @@ static void update_counter(RxCheck addr_list[], int index, uint8_t counter) { } static bool rx_msg_safety_check(const CANPacket_t *to_push, - const safety_config *cfg, - const safety_hooks *safety_hooks) { + const safety_config *cfg, + const safety_hooks *safety_hooks) { int index = get_addr_check_index(to_push, cfg->rx_checks, cfg->rx_checks_len); update_addr_timestamp(cfg->rx_checks, index); diff --git a/opendbc/safety/safety/safety_hyundai_canfd.h b/opendbc/safety/safety/safety_hyundai_canfd.h index 4eb045028bd..fc126e0d8ad 100644 --- a/opendbc/safety/safety/safety_hyundai_canfd.h +++ b/opendbc/safety/safety/safety_hyundai_canfd.h @@ -203,17 +203,12 @@ static bool hyundai_canfd_tx_hook(const CANPacket_t *to_send) { violation |= longitudinal_accel_checks(desired_accel_raw, HYUNDAI_LONG_LIMITS); violation |= longitudinal_accel_checks(desired_accel_val, HYUNDAI_LONG_LIMITS); } else { + // only used to cancel on here const int acc_mode = (GET_BYTE(to_send, 8) >> 4) & 0x7U; - - printf("cruise_engaged_prev: %d\n", cruise_engaged_prev); - printf("acc_mode: %d\n", acc_mode); - printf("desired_accel_raw: %d\n", desired_accel_raw); - if (acc_mode != 4) { violation = true; } - // only used to cancel on here if ((desired_accel_raw != 0) || (desired_accel_val != 0)) { violation = true; } @@ -260,7 +255,7 @@ static safety_config hyundai_canfd_init(uint16_t param) { static const CanMsg HYUNDAI_CANFD_LKA_STEERING_TX_MSGS[] = { HYUNDAI_CANFD_LKA_STEERING_COMMON_TX_MSGS(0, 1) -// HYUNDAI_CANFD_SCC_CONTROL_COMMON_TX_MSGS(1) + HYUNDAI_CANFD_SCC_CONTROL_COMMON_TX_MSGS(1) }; static const CanMsg HYUNDAI_CANFD_LKA_STEERING_ALT_TX_MSGS[] = { @@ -314,7 +309,6 @@ static safety_config hyundai_canfd_init(uint16_t param) { HYUNDAI_CANFD_COMMON_RX_CHECKS(1) }; - printf("HERE2!\n"); ret = BUILD_SAFETY_CFG(hyundai_canfd_lka_steering_long_rx_checks, HYUNDAI_CANFD_LKA_STEERING_LONG_TX_MSGS); } else { // Longitudinal checks for LFA steering @@ -322,8 +316,6 @@ static safety_config hyundai_canfd_init(uint16_t param) { HYUNDAI_CANFD_COMMON_RX_CHECKS(0) }; - printf("HERE!\n"); - ret = hyundai_camera_scc ? BUILD_SAFETY_CFG(hyundai_canfd_long_rx_checks, HYUNDAI_CANFD_LFA_STEERING_CAMERA_SCC_TX_MSGS) : \ BUILD_SAFETY_CFG(hyundai_canfd_long_rx_checks, HYUNDAI_CANFD_LFA_STEERING_LONG_TX_MSGS); } @@ -340,7 +332,6 @@ static safety_config hyundai_canfd_init(uint16_t param) { ret = hyundai_canfd_lka_steering_alt ? BUILD_SAFETY_CFG(hyundai_canfd_lka_steering_rx_checks, HYUNDAI_CANFD_LKA_STEERING_ALT_TX_MSGS) : \ BUILD_SAFETY_CFG(hyundai_canfd_lka_steering_rx_checks, HYUNDAI_CANFD_LKA_STEERING_TX_MSGS); } else if (!hyundai_camera_scc) { - printf("HERE4!\n"); // Radar sends SCC messages on these cars instead of camera static RxCheck hyundai_canfd_radar_scc_rx_checks[] = { HYUNDAI_CANFD_COMMON_RX_CHECKS(0) @@ -349,7 +340,6 @@ static safety_config hyundai_canfd_init(uint16_t param) { ret = BUILD_SAFETY_CFG(hyundai_canfd_radar_scc_rx_checks, HYUNDAI_CANFD_LFA_STEERING_TX_MSGS); } else { - printf("HERE5!\n"); // *** LFA steering checks *** // Camera sends SCC messages on LFA steering cars. // Both button messages exist on some platforms, so we ensure we track the correct one using flag diff --git a/opendbc/safety/tests/test_defaults.py b/opendbc/safety/tests/test_defaults.py index 28cc791d55e..8b5b2c2dd33 100755 --- a/opendbc/safety/tests/test_defaults.py +++ b/opendbc/safety/tests/test_defaults.py @@ -22,13 +22,6 @@ def setUp(self): self.safety.set_safety_hooks(CarParams.SafetyModel.noOutput, 0) self.safety.init_tests() - def test_spam_can_buses(self): - # asserts tx allowed for all scanned addrs - for bus in range(4): - for addr in self.SCANNED_ADDRS: - should_tx = [addr, bus] in self.TX_MSGS - self.assertEqual(should_tx, self._tx(common.make_msg(bus, addr, 8)), f"allowed TX {addr=} {bus=}") - class TestSilent(TestNoOutput): """SILENT uses same hooks as NOOUTPUT""" From bfb41f84b2eb4dc5b4e636001399d6f1d70e2c32 Mon Sep 17 00:00:00 2001 From: Shane Smiskol Date: Sun, 2 Mar 2025 23:52:19 -0800 Subject: [PATCH 3/3] huh --- opendbc/safety/safety/safety_hyundai_canfd.h | 1 - 1 file changed, 1 deletion(-) diff --git a/opendbc/safety/safety/safety_hyundai_canfd.h b/opendbc/safety/safety/safety_hyundai_canfd.h index fc126e0d8ad..c89c513a679 100644 --- a/opendbc/safety/safety/safety_hyundai_canfd.h +++ b/opendbc/safety/safety/safety_hyundai_canfd.h @@ -255,7 +255,6 @@ static safety_config hyundai_canfd_init(uint16_t param) { static const CanMsg HYUNDAI_CANFD_LKA_STEERING_TX_MSGS[] = { HYUNDAI_CANFD_LKA_STEERING_COMMON_TX_MSGS(0, 1) - HYUNDAI_CANFD_SCC_CONTROL_COMMON_TX_MSGS(1) }; static const CanMsg HYUNDAI_CANFD_LKA_STEERING_ALT_TX_MSGS[] = {