From e7940cc3e996d1ae3fb5a9a396353878d9fd2a82 Mon Sep 17 00:00:00 2001 From: Eric Brown Date: Mon, 10 Feb 2025 20:10:29 -0700 Subject: [PATCH] Remove car specific flags (#2116) * Subaru: combine panda flags * Remove car-specific panda flags * Rename usages in tests * update opendbc ref * ? ? * fix ltl * order --------- Co-authored-by: Shane Smiskol --- Dockerfile | 4 +-- python/__init__.py | 41 --------------------- tests/hitl/2_health.py | 5 +-- tests/safety/test_chrysler.py | 6 ++-- tests/safety/test_ford.py | 5 +-- tests/safety/test_gm.py | 6 ++-- tests/safety/test_honda.py | 13 +++---- tests/safety/test_hyundai.py | 8 +++-- tests/safety/test_hyundai_canfd.py | 52 ++++++++++++++++----------- tests/safety/test_nissan.py | 4 ++- tests/safety/test_subaru.py | 8 +++-- tests/safety/test_subaru_preglobal.py | 4 ++- tests/safety/test_tesla.py | 8 +++-- tests/safety/test_toyota.py | 11 +++--- tests/safety/test_volkswagen_mqb.py | 3 +- tests/safety/test_volkswagen_pq.py | 4 ++- tests/safety_replay/helpers.py | 5 +-- 17 files changed, 89 insertions(+), 98 deletions(-) diff --git a/Dockerfile b/Dockerfile index 8c93288c..86c039a3 100644 --- a/Dockerfile +++ b/Dockerfile @@ -37,11 +37,11 @@ RUN pip3 install --break-system-packages --no-cache-dir $PYTHONPATH/panda/[dev] # TODO: this should be a "pip install" or not even in this repo at all RUN git config --global --add safe.directory $PYTHONPATH/panda -ENV OPENDBC_REF="7af6f3885dc43be8ecf331df1f0914cf3338de50" +ENV OPENDBC_REF="25b3266b0bf95fced1589fd28f824227da62ffc0" RUN cd /tmp/ && \ git clone --depth 1 https://github.com/commaai/opendbc opendbc_repo && \ cd opendbc_repo && git fetch origin $OPENDBC_REF && git checkout FETCH_HEAD && rm -rf .git/ && \ - pip3 install --break-system-packages --no-cache-dir Cython numpy && \ + pip3 install --break-system-packages --no-cache-dir Cython numpy pycapnp && \ ln -s $PWD/opendbc $PYTHONPATH/opendbc && \ scons -j8 --minimal opendbc/ diff --git a/python/__init__.py b/python/__init__.py index 36227269..fb052ede 100644 --- a/python/__init__.py +++ b/python/__init__.py @@ -184,47 +184,6 @@ class Panda: HARNESS_STATUS_NORMAL = 1 HARNESS_STATUS_FLIPPED = 2 - # first byte is for EPS scaling factor - FLAG_TOYOTA_ALT_BRAKE = (1 << 8) - FLAG_TOYOTA_STOCK_LONGITUDINAL = (2 << 8) - FLAG_TOYOTA_LTA = (4 << 8) - FLAG_TOYOTA_SECOC = (8 << 8) - - FLAG_HONDA_ALT_BRAKE = 1 - FLAG_HONDA_BOSCH_LONG = 2 - FLAG_HONDA_NIDEC_ALT = 4 - FLAG_HONDA_RADARLESS = 8 - - FLAG_HYUNDAI_EV_GAS = 1 - FLAG_HYUNDAI_HYBRID_GAS = 2 - FLAG_HYUNDAI_LONG = 4 - FLAG_HYUNDAI_CAMERA_SCC = 8 - FLAG_HYUNDAI_CANFD_HDA2 = 16 - FLAG_HYUNDAI_CANFD_ALT_BUTTONS = 32 - FLAG_HYUNDAI_ALT_LIMITS = 64 - FLAG_HYUNDAI_CANFD_HDA2_ALT_STEERING = 128 - - FLAG_TESLA_POWERTRAIN = 1 - FLAG_TESLA_LONG_CONTROL = 2 - FLAG_TESLA_RAVEN = 4 - - FLAG_VOLKSWAGEN_LONG_CONTROL = 1 - - FLAG_CHRYSLER_RAM_DT = 1 - FLAG_CHRYSLER_RAM_HD = 2 - - FLAG_SUBARU_GEN2 = 1 - FLAG_SUBARU_LONG = 2 - FLAG_SUBARU_PREGLOBAL_REVERSED_DRIVER_TORQUE = 4 - - FLAG_NISSAN_ALT_EPS_BUS = 1 - - FLAG_GM_HW_CAM = 1 - FLAG_GM_HW_CAM_LONG = 2 - - FLAG_FORD_LONG_CONTROL = 1 - FLAG_FORD_CANFD = 2 - def __init__(self, serial: str | None = None, claim: bool = True, disable_checks: bool = True, can_speed_kbps: int = 500, cli: bool = True): self._disable_checks = disable_checks diff --git a/tests/hitl/2_health.py b/tests/hitl/2_health.py index 12c75f56..03a065bb 100644 --- a/tests/hitl/2_health.py +++ b/tests/hitl/2_health.py @@ -1,6 +1,7 @@ import time import pytest +from opendbc.car.hyundai.values import HyundaiPandaFlags from panda import Panda @@ -36,10 +37,10 @@ def test_hw_type(p): def test_heartbeat(p, panda_jungle): panda_jungle.set_ignition(True) # TODO: add more cases here once the tests aren't super slow - p.set_safety_mode(mode=Panda.SAFETY_HYUNDAI, param=Panda.FLAG_HYUNDAI_LONG) + p.set_safety_mode(mode=Panda.SAFETY_HYUNDAI, param=HyundaiPandaFlags.FLAG_HYUNDAI_LONG) p.send_heartbeat() assert p.health()['safety_mode'] == Panda.SAFETY_HYUNDAI - assert p.health()['safety_param'] == Panda.FLAG_HYUNDAI_LONG + assert p.health()['safety_param'] == HyundaiPandaFlags.FLAG_HYUNDAI_LONG # shouldn't do anything once we're in a car safety mode p.set_heartbeat_disabled() diff --git a/tests/safety/test_chrysler.py b/tests/safety/test_chrysler.py index 5bbb6dd1..24ee934d 100755 --- a/tests/safety/test_chrysler.py +++ b/tests/safety/test_chrysler.py @@ -1,5 +1,7 @@ #!/usr/bin/env python3 import unittest + +from opendbc.car.chrysler.values import ChryslerPandaFlags from panda import Panda from panda.tests.libpanda import libpanda_py import panda.tests.safety.common as common @@ -89,7 +91,7 @@ class TestChryslerRamDTSafety(TestChryslerSafety): def setUp(self): self.packer = CANPackerPanda("chrysler_ram_dt_generated") self.safety = libpanda_py.libpanda - self.safety.set_safety_hooks(Panda.SAFETY_CHRYSLER, Panda.FLAG_CHRYSLER_RAM_DT) + self.safety.set_safety_hooks(Panda.SAFETY_CHRYSLER, ChryslerPandaFlags.FLAG_CHRYSLER_RAM_DT) self.safety.init_tests() def _speed_msg(self, speed): @@ -113,7 +115,7 @@ class TestChryslerRamHDSafety(TestChryslerSafety): def setUp(self): self.packer = CANPackerPanda("chrysler_ram_hd_generated") self.safety = libpanda_py.libpanda - self.safety.set_safety_hooks(Panda.SAFETY_CHRYSLER, Panda.FLAG_CHRYSLER_RAM_HD) + self.safety.set_safety_hooks(Panda.SAFETY_CHRYSLER, ChryslerPandaFlags.FLAG_CHRYSLER_RAM_HD) self.safety.init_tests() def _speed_msg(self, speed): diff --git a/tests/safety/test_ford.py b/tests/safety/test_ford.py index 9ae6207e..7d4a1c89 100755 --- a/tests/safety/test_ford.py +++ b/tests/safety/test_ford.py @@ -4,6 +4,7 @@ import random import unittest import panda.tests.safety.common as common +from opendbc.car.ford.values import FordPandaFlags from panda import Panda from panda.tests.libpanda import libpanda_py @@ -365,7 +366,7 @@ class TestFordCANFDStockSafety(TestFordSafetyBase): def setUp(self): self.packer = CANPackerPanda("ford_lincoln_base_pt") self.safety = libpanda_py.libpanda - self.safety.set_safety_hooks(Panda.SAFETY_FORD, Panda.FLAG_FORD_CANFD) + self.safety.set_safety_hooks(Panda.SAFETY_FORD, FordPandaFlags.FLAG_FORD_CANFD) self.safety.init_tests() @@ -457,7 +458,7 @@ class TestFordCANFDLongitudinalSafety(TestFordLongitudinalSafetyBase): def setUp(self): self.packer = CANPackerPanda("ford_lincoln_base_pt") self.safety = libpanda_py.libpanda - self.safety.set_safety_hooks(Panda.SAFETY_FORD, Panda.FLAG_FORD_LONG_CONTROL | Panda.FLAG_FORD_CANFD) + self.safety.set_safety_hooks(Panda.SAFETY_FORD, FordPandaFlags.FLAG_FORD_LONG_CONTROL | FordPandaFlags.FLAG_FORD_CANFD) self.safety.init_tests() diff --git a/tests/safety/test_gm.py b/tests/safety/test_gm.py index c6c5ac6b..aa83fdaf 100755 --- a/tests/safety/test_gm.py +++ b/tests/safety/test_gm.py @@ -1,5 +1,7 @@ #!/usr/bin/env python3 import unittest + +from opendbc.car.gm.values import GMPandaFlags from panda import Panda from panda.tests.libpanda import libpanda_py import panda.tests.safety.common as common @@ -187,7 +189,7 @@ class TestGmCameraSafety(TestGmCameraSafetyBase): self.packer = CANPackerPanda("gm_global_a_powertrain_generated") self.packer_chassis = CANPackerPanda("gm_global_a_chassis") self.safety = libpanda_py.libpanda - self.safety.set_safety_hooks(Panda.SAFETY_GM, Panda.FLAG_GM_HW_CAM) + self.safety.set_safety_hooks(Panda.SAFETY_GM, GMPandaFlags.FLAG_GM_HW_CAM) self.safety.init_tests() def test_buttons(self): @@ -219,7 +221,7 @@ class TestGmCameraLongitudinalSafety(GmLongitudinalBase, TestGmCameraSafetyBase) self.packer = CANPackerPanda("gm_global_a_powertrain_generated") self.packer_chassis = CANPackerPanda("gm_global_a_chassis") self.safety = libpanda_py.libpanda - self.safety.set_safety_hooks(Panda.SAFETY_GM, Panda.FLAG_GM_HW_CAM | Panda.FLAG_GM_HW_CAM_LONG) + self.safety.set_safety_hooks(Panda.SAFETY_GM, GMPandaFlags.FLAG_GM_HW_CAM | GMPandaFlags.FLAG_GM_HW_CAM_LONG) self.safety.init_tests() diff --git a/tests/safety/test_honda.py b/tests/safety/test_honda.py index 082199c0..08b6eb41 100755 --- a/tests/safety/test_honda.py +++ b/tests/safety/test_honda.py @@ -2,6 +2,7 @@ import unittest import numpy as np +from opendbc.car.honda.values import HondaPandaFlags from panda import Panda from panda.tests.libpanda import libpanda_py import panda.tests.safety.common as common @@ -357,7 +358,7 @@ class TestHondaNidecPcmAltSafety(TestHondaNidecPcmSafety): def setUp(self): self.packer = CANPackerPanda("acura_ilx_2016_can_generated") self.safety = libpanda_py.libpanda - self.safety.set_safety_hooks(Panda.SAFETY_HONDA_NIDEC, Panda.FLAG_HONDA_NIDEC_ALT) + self.safety.set_safety_hooks(Panda.SAFETY_HONDA_NIDEC, HondaPandaFlags.FLAG_HONDA_NIDEC_ALT) self.safety.init_tests() def _acc_state_msg(self, main_on): @@ -422,7 +423,7 @@ class TestHondaBoschAltBrakeSafetyBase(TestHondaBoschSafetyBase): """ def setUp(self): super().setUp() - self.safety.set_safety_hooks(Panda.SAFETY_HONDA_BOSCH, Panda.FLAG_HONDA_ALT_BRAKE) + self.safety.set_safety_hooks(Panda.SAFETY_HONDA_BOSCH, HondaPandaFlags.FLAG_HONDA_ALT_BRAKE) self.safety.init_tests() def _user_brake_msg(self, brake): @@ -471,7 +472,7 @@ class TestHondaBoschLongSafety(HondaButtonEnableBase, TestHondaBoschSafetyBase): def setUp(self): super().setUp() - self.safety.set_safety_hooks(Panda.SAFETY_HONDA_BOSCH, Panda.FLAG_HONDA_BOSCH_LONG) + self.safety.set_safety_hooks(Panda.SAFETY_HONDA_BOSCH, HondaPandaFlags.FLAG_HONDA_BOSCH_LONG) self.safety.init_tests() def _send_gas_brake_msg(self, gas, accel): @@ -531,7 +532,7 @@ class TestHondaBoschRadarlessSafety(HondaPcmEnableBase, TestHondaBoschRadarlessS def setUp(self): super().setUp() - self.safety.set_safety_hooks(Panda.SAFETY_HONDA_BOSCH, Panda.FLAG_HONDA_RADARLESS) + self.safety.set_safety_hooks(Panda.SAFETY_HONDA_BOSCH, HondaPandaFlags.FLAG_HONDA_RADARLESS) self.safety.init_tests() @@ -542,7 +543,7 @@ class TestHondaBoschRadarlessAltBrakeSafety(HondaPcmEnableBase, TestHondaBoschRa def setUp(self): super().setUp() - self.safety.set_safety_hooks(Panda.SAFETY_HONDA_BOSCH, Panda.FLAG_HONDA_RADARLESS | Panda.FLAG_HONDA_ALT_BRAKE) + self.safety.set_safety_hooks(Panda.SAFETY_HONDA_BOSCH, HondaPandaFlags.FLAG_HONDA_RADARLESS | HondaPandaFlags.FLAG_HONDA_ALT_BRAKE) self.safety.init_tests() @@ -556,7 +557,7 @@ class TestHondaBoschRadarlessLongSafety(common.LongitudinalAccelSafetyTest, Hond def setUp(self): super().setUp() - self.safety.set_safety_hooks(Panda.SAFETY_HONDA_BOSCH, Panda.FLAG_HONDA_RADARLESS | Panda.FLAG_HONDA_BOSCH_LONG) + self.safety.set_safety_hooks(Panda.SAFETY_HONDA_BOSCH, HondaPandaFlags.FLAG_HONDA_RADARLESS | HondaPandaFlags.FLAG_HONDA_BOSCH_LONG) self.safety.init_tests() def _accel_msg(self, accel): diff --git a/tests/safety/test_hyundai.py b/tests/safety/test_hyundai.py index 1bff99fa..51386563 100755 --- a/tests/safety/test_hyundai.py +++ b/tests/safety/test_hyundai.py @@ -1,6 +1,8 @@ #!/usr/bin/env python3 import random import unittest + +from opendbc.car.hyundai.values import HyundaiPandaFlags from panda import Panda from panda.tests.libpanda import libpanda_py import panda.tests.safety.common as common @@ -121,7 +123,7 @@ class TestHyundaiSafetyAltLimits(TestHyundaiSafety): def setUp(self): self.packer = CANPackerPanda("hyundai_kia_generic") self.safety = libpanda_py.libpanda - self.safety.set_safety_hooks(Panda.SAFETY_HYUNDAI, Panda.FLAG_HYUNDAI_ALT_LIMITS) + self.safety.set_safety_hooks(Panda.SAFETY_HYUNDAI, HyundaiPandaFlags.FLAG_HYUNDAI_ALT_LIMITS) self.safety.init_tests() @@ -132,7 +134,7 @@ class TestHyundaiSafetyCameraSCC(TestHyundaiSafety): def setUp(self): self.packer = CANPackerPanda("hyundai_kia_generic") self.safety = libpanda_py.libpanda - self.safety.set_safety_hooks(Panda.SAFETY_HYUNDAI, Panda.FLAG_HYUNDAI_CAMERA_SCC) + self.safety.set_safety_hooks(Panda.SAFETY_HYUNDAI, HyundaiPandaFlags.FLAG_HYUNDAI_CAMERA_SCC) self.safety.init_tests() @@ -178,7 +180,7 @@ class TestHyundaiLongitudinalSafety(HyundaiLongitudinalBase, TestHyundaiSafety): def setUp(self): self.packer = CANPackerPanda("hyundai_kia_generic") self.safety = libpanda_py.libpanda - self.safety.set_safety_hooks(Panda.SAFETY_HYUNDAI, Panda.FLAG_HYUNDAI_LONG) + self.safety.set_safety_hooks(Panda.SAFETY_HYUNDAI, HyundaiPandaFlags.FLAG_HYUNDAI_LONG) self.safety.init_tests() def _accel_msg(self, accel, aeb_req=False, aeb_decel=0): diff --git a/tests/safety/test_hyundai_canfd.py b/tests/safety/test_hyundai_canfd.py index 7f280b63..b7152474 100755 --- a/tests/safety/test_hyundai_canfd.py +++ b/tests/safety/test_hyundai_canfd.py @@ -1,6 +1,8 @@ #!/usr/bin/env python3 from parameterized import parameterized_class import unittest + +from opendbc.car.hyundai.values import HyundaiPandaFlags from panda import Panda from panda.tests.libpanda import libpanda_py import panda.tests.safety.common as common @@ -107,13 +109,17 @@ class TestHyundaiCanfdHDA1Base(TestHyundaiCanfdBase): @parameterized_class([ # Radar SCC, test with long flag to ensure flag is not respected until it is supported - {"GAS_MSG": ("ACCELERATOR_BRAKE_ALT", "ACCELERATOR_PEDAL_PRESSED"), "SCC_BUS": 0, "SAFETY_PARAM": Panda.FLAG_HYUNDAI_LONG}, - {"GAS_MSG": ("ACCELERATOR", "ACCELERATOR_PEDAL"), "SCC_BUS": 0, "SAFETY_PARAM": Panda.FLAG_HYUNDAI_EV_GAS | Panda.FLAG_HYUNDAI_LONG}, - {"GAS_MSG": ("ACCELERATOR_ALT", "ACCELERATOR_PEDAL"), "SCC_BUS": 0, "SAFETY_PARAM": Panda.FLAG_HYUNDAI_HYBRID_GAS | Panda.FLAG_HYUNDAI_LONG}, + {"GAS_MSG": ("ACCELERATOR_BRAKE_ALT", "ACCELERATOR_PEDAL_PRESSED"), "SCC_BUS": 0, "SAFETY_PARAM": HyundaiPandaFlags.FLAG_HYUNDAI_LONG}, + {"GAS_MSG": ("ACCELERATOR", "ACCELERATOR_PEDAL"), "SCC_BUS": 0, "SAFETY_PARAM": HyundaiPandaFlags.FLAG_HYUNDAI_EV_GAS | + HyundaiPandaFlags.FLAG_HYUNDAI_LONG}, + {"GAS_MSG": ("ACCELERATOR_ALT", "ACCELERATOR_PEDAL"), "SCC_BUS": 0, "SAFETY_PARAM": HyundaiPandaFlags.FLAG_HYUNDAI_HYBRID_GAS | + HyundaiPandaFlags.FLAG_HYUNDAI_LONG}, # Camera SCC - {"GAS_MSG": ("ACCELERATOR_BRAKE_ALT", "ACCELERATOR_PEDAL_PRESSED"), "SCC_BUS": 2, "SAFETY_PARAM": Panda.FLAG_HYUNDAI_CAMERA_SCC}, - {"GAS_MSG": ("ACCELERATOR", "ACCELERATOR_PEDAL"), "SCC_BUS": 2, "SAFETY_PARAM": Panda.FLAG_HYUNDAI_EV_GAS | Panda.FLAG_HYUNDAI_CAMERA_SCC}, - {"GAS_MSG": ("ACCELERATOR_ALT", "ACCELERATOR_PEDAL"), "SCC_BUS": 2, "SAFETY_PARAM": Panda.FLAG_HYUNDAI_HYBRID_GAS | Panda.FLAG_HYUNDAI_CAMERA_SCC}, + {"GAS_MSG": ("ACCELERATOR_BRAKE_ALT", "ACCELERATOR_PEDAL_PRESSED"), "SCC_BUS": 2, "SAFETY_PARAM": HyundaiPandaFlags.FLAG_HYUNDAI_CAMERA_SCC}, + {"GAS_MSG": ("ACCELERATOR", "ACCELERATOR_PEDAL"), "SCC_BUS": 2, "SAFETY_PARAM": HyundaiPandaFlags.FLAG_HYUNDAI_EV_GAS | + HyundaiPandaFlags.FLAG_HYUNDAI_CAMERA_SCC}, + {"GAS_MSG": ("ACCELERATOR_ALT", "ACCELERATOR_PEDAL"), "SCC_BUS": 2, "SAFETY_PARAM": HyundaiPandaFlags.FLAG_HYUNDAI_HYBRID_GAS | + HyundaiPandaFlags.FLAG_HYUNDAI_CAMERA_SCC}, ]) class TestHyundaiCanfdHDA1(TestHyundaiCanfdHDA1Base): pass @@ -121,13 +127,16 @@ class TestHyundaiCanfdHDA1(TestHyundaiCanfdHDA1Base): @parameterized_class([ # Radar SCC, test with long flag to ensure flag is not respected until it is supported - {"GAS_MSG": ("ACCELERATOR_BRAKE_ALT", "ACCELERATOR_PEDAL_PRESSED"), "SCC_BUS": 0, "SAFETY_PARAM": Panda.FLAG_HYUNDAI_LONG}, - {"GAS_MSG": ("ACCELERATOR", "ACCELERATOR_PEDAL"), "SCC_BUS": 0, "SAFETY_PARAM": Panda.FLAG_HYUNDAI_EV_GAS | Panda.FLAG_HYUNDAI_LONG}, - {"GAS_MSG": ("ACCELERATOR_ALT", "ACCELERATOR_PEDAL"), "SCC_BUS": 0, "SAFETY_PARAM": Panda.FLAG_HYUNDAI_HYBRID_GAS | Panda.FLAG_HYUNDAI_LONG}, + {"GAS_MSG": ("ACCELERATOR_BRAKE_ALT", "ACCELERATOR_PEDAL_PRESSED"), "SCC_BUS": 0, "SAFETY_PARAM": HyundaiPandaFlags.FLAG_HYUNDAI_LONG}, + {"GAS_MSG": ("ACCELERATOR", "ACCELERATOR_PEDAL"), "SCC_BUS": 0, "SAFETY_PARAM": HyundaiPandaFlags.FLAG_HYUNDAI_EV_GAS | HyundaiPandaFlags.FLAG_HYUNDAI_LONG}, + {"GAS_MSG": ("ACCELERATOR_ALT", "ACCELERATOR_PEDAL"), "SCC_BUS": 0, "SAFETY_PARAM": HyundaiPandaFlags.FLAG_HYUNDAI_HYBRID_GAS | + HyundaiPandaFlags.FLAG_HYUNDAI_LONG}, # Camera SCC - {"GAS_MSG": ("ACCELERATOR_BRAKE_ALT", "ACCELERATOR_PEDAL_PRESSED"), "SCC_BUS": 2, "SAFETY_PARAM": Panda.FLAG_HYUNDAI_CAMERA_SCC}, - {"GAS_MSG": ("ACCELERATOR", "ACCELERATOR_PEDAL"), "SCC_BUS": 2, "SAFETY_PARAM": Panda.FLAG_HYUNDAI_EV_GAS | Panda.FLAG_HYUNDAI_CAMERA_SCC}, - {"GAS_MSG": ("ACCELERATOR_ALT", "ACCELERATOR_PEDAL"), "SCC_BUS": 2, "SAFETY_PARAM": Panda.FLAG_HYUNDAI_HYBRID_GAS | Panda.FLAG_HYUNDAI_CAMERA_SCC}, + {"GAS_MSG": ("ACCELERATOR_BRAKE_ALT", "ACCELERATOR_PEDAL_PRESSED"), "SCC_BUS": 2, "SAFETY_PARAM": HyundaiPandaFlags.FLAG_HYUNDAI_CAMERA_SCC}, + {"GAS_MSG": ("ACCELERATOR", "ACCELERATOR_PEDAL"), "SCC_BUS": 2, "SAFETY_PARAM": HyundaiPandaFlags.FLAG_HYUNDAI_EV_GAS | + HyundaiPandaFlags.FLAG_HYUNDAI_CAMERA_SCC}, + {"GAS_MSG": ("ACCELERATOR_ALT", "ACCELERATOR_PEDAL"), "SCC_BUS": 2, "SAFETY_PARAM": HyundaiPandaFlags.FLAG_HYUNDAI_HYBRID_GAS | + HyundaiPandaFlags.FLAG_HYUNDAI_CAMERA_SCC}, ]) class TestHyundaiCanfdHDA1AltButtons(TestHyundaiCanfdHDA1Base): @@ -136,7 +145,7 @@ class TestHyundaiCanfdHDA1AltButtons(TestHyundaiCanfdHDA1Base): def setUp(self): self.packer = CANPackerPanda("hyundai_canfd") self.safety = libpanda_py.libpanda - self.safety.set_safety_hooks(Panda.SAFETY_HYUNDAI_CANFD, Panda.FLAG_HYUNDAI_CANFD_ALT_BUTTONS | self.SAFETY_PARAM) + self.safety.set_safety_hooks(Panda.SAFETY_HYUNDAI_CANFD, HyundaiPandaFlags.FLAG_HYUNDAI_CANFD_ALT_BUTTONS | self.SAFETY_PARAM) self.safety.init_tests() def _button_msg(self, buttons, main_button=0, bus=1): @@ -171,7 +180,7 @@ class TestHyundaiCanfdHDA2EV(TestHyundaiCanfdBase): def setUp(self): self.packer = CANPackerPanda("hyundai_canfd") self.safety = libpanda_py.libpanda - self.safety.set_safety_hooks(Panda.SAFETY_HYUNDAI_CANFD, Panda.FLAG_HYUNDAI_CANFD_HDA2 | Panda.FLAG_HYUNDAI_EV_GAS) + self.safety.set_safety_hooks(Panda.SAFETY_HYUNDAI_CANFD, HyundaiPandaFlags.FLAG_HYUNDAI_CANFD_HDA2 | HyundaiPandaFlags.FLAG_HYUNDAI_EV_GAS) self.safety.init_tests() @@ -191,8 +200,8 @@ class TestHyundaiCanfdHDA2EVAltSteering(TestHyundaiCanfdBase): def setUp(self): self.packer = CANPackerPanda("hyundai_canfd") self.safety = libpanda_py.libpanda - self.safety.set_safety_hooks(Panda.SAFETY_HYUNDAI_CANFD, Panda.FLAG_HYUNDAI_CANFD_HDA2 | Panda.FLAG_HYUNDAI_EV_GAS | - Panda.FLAG_HYUNDAI_CANFD_HDA2_ALT_STEERING) + self.safety.set_safety_hooks(Panda.SAFETY_HYUNDAI_CANFD, HyundaiPandaFlags.FLAG_HYUNDAI_CANFD_HDA2 | HyundaiPandaFlags.FLAG_HYUNDAI_EV_GAS | + HyundaiPandaFlags.FLAG_HYUNDAI_CANFD_HDA2_ALT_STEERING) self.safety.init_tests() @@ -213,7 +222,8 @@ class TestHyundaiCanfdHDA2LongEV(HyundaiLongitudinalBase, TestHyundaiCanfdHDA2EV def setUp(self): self.packer = CANPackerPanda("hyundai_canfd") self.safety = libpanda_py.libpanda - self.safety.set_safety_hooks(Panda.SAFETY_HYUNDAI_CANFD, Panda.FLAG_HYUNDAI_CANFD_HDA2 | Panda.FLAG_HYUNDAI_LONG | Panda.FLAG_HYUNDAI_EV_GAS) + self.safety.set_safety_hooks(Panda.SAFETY_HYUNDAI_CANFD, HyundaiPandaFlags.FLAG_HYUNDAI_CANFD_HDA2 | + HyundaiPandaFlags.FLAG_HYUNDAI_LONG | HyundaiPandaFlags.FLAG_HYUNDAI_EV_GAS) self.safety.init_tests() def _accel_msg(self, accel, aeb_req=False, aeb_decel=0): @@ -227,9 +237,9 @@ class TestHyundaiCanfdHDA2LongEV(HyundaiLongitudinalBase, TestHyundaiCanfdHDA2EV # Tests HDA1 longitudinal for ICE, hybrid, EV @parameterized_class([ # Camera SCC is the only supported configuration for HDA1 longitudinal, TODO: allow radar SCC - {"GAS_MSG": ("ACCELERATOR_BRAKE_ALT", "ACCELERATOR_PEDAL_PRESSED"), "SAFETY_PARAM": Panda.FLAG_HYUNDAI_LONG}, - {"GAS_MSG": ("ACCELERATOR", "ACCELERATOR_PEDAL"), "SAFETY_PARAM": Panda.FLAG_HYUNDAI_LONG | Panda.FLAG_HYUNDAI_EV_GAS}, - {"GAS_MSG": ("ACCELERATOR_ALT", "ACCELERATOR_PEDAL"), "SAFETY_PARAM": Panda.FLAG_HYUNDAI_LONG | Panda.FLAG_HYUNDAI_HYBRID_GAS}, + {"GAS_MSG": ("ACCELERATOR_BRAKE_ALT", "ACCELERATOR_PEDAL_PRESSED"), "SAFETY_PARAM": HyundaiPandaFlags.FLAG_HYUNDAI_LONG}, + {"GAS_MSG": ("ACCELERATOR", "ACCELERATOR_PEDAL"), "SAFETY_PARAM": HyundaiPandaFlags.FLAG_HYUNDAI_LONG | HyundaiPandaFlags.FLAG_HYUNDAI_EV_GAS}, + {"GAS_MSG": ("ACCELERATOR_ALT", "ACCELERATOR_PEDAL"), "SAFETY_PARAM": HyundaiPandaFlags.FLAG_HYUNDAI_LONG | HyundaiPandaFlags.FLAG_HYUNDAI_HYBRID_GAS}, ]) class TestHyundaiCanfdHDA1Long(HyundaiLongitudinalBase, TestHyundaiCanfdHDA1Base): @@ -253,7 +263,7 @@ class TestHyundaiCanfdHDA1Long(HyundaiLongitudinalBase, TestHyundaiCanfdHDA1Base def setUp(self): self.packer = CANPackerPanda("hyundai_canfd") self.safety = libpanda_py.libpanda - self.safety.set_safety_hooks(Panda.SAFETY_HYUNDAI_CANFD, Panda.FLAG_HYUNDAI_CAMERA_SCC | self.SAFETY_PARAM) + self.safety.set_safety_hooks(Panda.SAFETY_HYUNDAI_CANFD, HyundaiPandaFlags.FLAG_HYUNDAI_CAMERA_SCC | self.SAFETY_PARAM) self.safety.init_tests() def _accel_msg(self, accel, aeb_req=False, aeb_decel=0): diff --git a/tests/safety/test_nissan.py b/tests/safety/test_nissan.py index 4c83ca32..c5dda2cc 100755 --- a/tests/safety/test_nissan.py +++ b/tests/safety/test_nissan.py @@ -1,5 +1,7 @@ #!/usr/bin/env python3 import unittest + +from opendbc.car.nissan.values import NissanPandaFlags from panda import Panda from panda.tests.libpanda import libpanda_py import panda.tests.safety.common as common @@ -88,7 +90,7 @@ class TestNissanSafetyAltEpsBus(TestNissanSafety): def setUp(self): self.packer = CANPackerPanda("nissan_x_trail_2017_generated") self.safety = libpanda_py.libpanda - self.safety.set_safety_hooks(Panda.SAFETY_NISSAN, Panda.FLAG_NISSAN_ALT_EPS_BUS) + self.safety.set_safety_hooks(Panda.SAFETY_NISSAN, NissanPandaFlags.FLAG_NISSAN_ALT_EPS_BUS) self.safety.init_tests() diff --git a/tests/safety/test_subaru.py b/tests/safety/test_subaru.py index 7d07f79a..2afbfe92 100755 --- a/tests/safety/test_subaru.py +++ b/tests/safety/test_subaru.py @@ -1,6 +1,8 @@ #!/usr/bin/env python3 import enum import unittest + +from opendbc.car.subaru.values import SubaruPandaFlags from panda import Panda from panda.tests.libpanda import libpanda_py import panda.tests.safety.common as common @@ -182,17 +184,17 @@ class TestSubaruGen2TorqueSafetyBase(TestSubaruTorqueSafetyBase): class TestSubaruGen2TorqueStockLongitudinalSafety(TestSubaruStockLongitudinalSafetyBase, TestSubaruGen2TorqueSafetyBase): - FLAGS = Panda.FLAG_SUBARU_GEN2 + FLAGS = SubaruPandaFlags.FLAG_SUBARU_GEN2 TX_MSGS = lkas_tx_msgs(SUBARU_ALT_BUS) class TestSubaruGen1LongitudinalSafety(TestSubaruLongitudinalSafetyBase, TestSubaruTorqueSafetyBase): - FLAGS = Panda.FLAG_SUBARU_LONG + FLAGS = SubaruPandaFlags.FLAG_SUBARU_LONG TX_MSGS = lkas_tx_msgs(SUBARU_MAIN_BUS) + long_tx_msgs(SUBARU_MAIN_BUS) class TestSubaruGen2LongitudinalSafety(TestSubaruLongitudinalSafetyBase, TestSubaruGen2TorqueSafetyBase): - FLAGS = Panda.FLAG_SUBARU_LONG | Panda.FLAG_SUBARU_GEN2 + FLAGS = SubaruPandaFlags.FLAG_SUBARU_LONG | SubaruPandaFlags.FLAG_SUBARU_GEN2 TX_MSGS = lkas_tx_msgs(SUBARU_ALT_BUS) + long_tx_msgs(SUBARU_ALT_BUS) + gen2_long_additional_tx_msgs() def _rdbi_msg(self, did: int): diff --git a/tests/safety/test_subaru_preglobal.py b/tests/safety/test_subaru_preglobal.py index 06c4cdef..c555a34d 100755 --- a/tests/safety/test_subaru_preglobal.py +++ b/tests/safety/test_subaru_preglobal.py @@ -1,5 +1,7 @@ #!/usr/bin/env python3 import unittest + +from opendbc.car.subaru.values import SubaruPandaFlags from panda import Panda from panda.tests.libpanda import libpanda_py import panda.tests.safety.common as common @@ -62,7 +64,7 @@ class TestSubaruPreglobalSafety(common.PandaCarSafetyTest, common.DriverTorqueSt class TestSubaruPreglobalReversedDriverTorqueSafety(TestSubaruPreglobalSafety): - FLAGS = Panda.FLAG_SUBARU_PREGLOBAL_REVERSED_DRIVER_TORQUE + FLAGS = SubaruPandaFlags.FLAG_SUBARU_PREGLOBAL_REVERSED_DRIVER_TORQUE DBC = "subaru_outback_2019_generated" diff --git a/tests/safety/test_tesla.py b/tests/safety/test_tesla.py index 9461ff68..f26c346d 100755 --- a/tests/safety/test_tesla.py +++ b/tests/safety/test_tesla.py @@ -1,6 +1,8 @@ #!/usr/bin/env python3 import unittest import numpy as np + +from opendbc.car.tesla.values import TeslaPandaFlags from panda import Panda import panda.tests.safety.common as common from panda.tests.libpanda import libpanda_py @@ -112,7 +114,7 @@ class TestTeslaRavenSteeringSafety(TestTeslaSteeringSafety): def setUp(self): self.packer = CANPackerPanda("tesla_can") self.safety = libpanda_py.libpanda - self.safety.set_safety_hooks(Panda.SAFETY_TESLA, Panda.FLAG_TESLA_RAVEN) + self.safety.set_safety_hooks(Panda.SAFETY_TESLA, TeslaPandaFlags.FLAG_TESLA_RAVEN) self.safety.init_tests() def _angle_meas_msg(self, angle: float): @@ -165,7 +167,7 @@ class TestTeslaChassisLongitudinalSafety(TestTeslaLongitudinalSafety): def setUp(self): self.packer = CANPackerPanda("tesla_can") self.safety = libpanda_py.libpanda - self.safety.set_safety_hooks(Panda.SAFETY_TESLA, Panda.FLAG_TESLA_LONG_CONTROL) + self.safety.set_safety_hooks(Panda.SAFETY_TESLA, TeslaPandaFlags.FLAG_TESLA_LONG_CONTROL) self.safety.init_tests() @@ -177,7 +179,7 @@ class TestTeslaPTLongitudinalSafety(TestTeslaLongitudinalSafety): def setUp(self): self.packer = CANPackerPanda("tesla_powertrain") self.safety = libpanda_py.libpanda - self.safety.set_safety_hooks(Panda.SAFETY_TESLA, Panda.FLAG_TESLA_LONG_CONTROL | Panda.FLAG_TESLA_POWERTRAIN) + self.safety.set_safety_hooks(Panda.SAFETY_TESLA, TeslaPandaFlags.FLAG_TESLA_LONG_CONTROL | TeslaPandaFlags.FLAG_TESLA_POWERTRAIN) self.safety.init_tests() diff --git a/tests/safety/test_toyota.py b/tests/safety/test_toyota.py index 700bd109..0462e13c 100755 --- a/tests/safety/test_toyota.py +++ b/tests/safety/test_toyota.py @@ -4,6 +4,7 @@ import random import unittest import itertools +from opendbc.car.toyota.values import ToyotaPandaFlags from panda import Panda from panda.tests.libpanda import libpanda_py import panda.tests.safety.common as common @@ -166,7 +167,7 @@ class TestToyotaSafetyAngle(TestToyotaSafetyBase, common.AngleSteeringSafetyTest def setUp(self): self.packer = CANPackerPanda("toyota_nodsu_pt_generated") self.safety = libpanda_py.libpanda - self.safety.set_safety_hooks(Panda.SAFETY_TOYOTA, self.EPS_SCALE | Panda.FLAG_TOYOTA_LTA) + self.safety.set_safety_hooks(Panda.SAFETY_TOYOTA, self.EPS_SCALE | ToyotaPandaFlags.FLAG_TOYOTA_LTA) self.safety.init_tests() # Only allow LKA msgs with no actuation @@ -268,7 +269,7 @@ class TestToyotaAltBrakeSafety(TestToyotaSafetyTorque): def setUp(self): self.packer = CANPackerPanda("toyota_new_mc_pt_generated") self.safety = libpanda_py.libpanda - self.safety.set_safety_hooks(Panda.SAFETY_TOYOTA, self.EPS_SCALE | Panda.FLAG_TOYOTA_ALT_BRAKE) + self.safety.set_safety_hooks(Panda.SAFETY_TOYOTA, self.EPS_SCALE | ToyotaPandaFlags.FLAG_TOYOTA_ALT_BRAKE) self.safety.init_tests() def _user_brake_msg(self, brake): @@ -313,7 +314,7 @@ class TestToyotaStockLongitudinalTorque(TestToyotaStockLongitudinalBase, TestToy def setUp(self): self.packer = CANPackerPanda("toyota_nodsu_pt_generated") self.safety = libpanda_py.libpanda - self.safety.set_safety_hooks(Panda.SAFETY_TOYOTA, self.EPS_SCALE | Panda.FLAG_TOYOTA_STOCK_LONGITUDINAL) + self.safety.set_safety_hooks(Panda.SAFETY_TOYOTA, self.EPS_SCALE | ToyotaPandaFlags.FLAG_TOYOTA_STOCK_LONGITUDINAL) self.safety.init_tests() @@ -322,7 +323,7 @@ class TestToyotaStockLongitudinalAngle(TestToyotaStockLongitudinalBase, TestToyo def setUp(self): self.packer = CANPackerPanda("toyota_nodsu_pt_generated") self.safety = libpanda_py.libpanda - self.safety.set_safety_hooks(Panda.SAFETY_TOYOTA, self.EPS_SCALE | Panda.FLAG_TOYOTA_STOCK_LONGITUDINAL | Panda.FLAG_TOYOTA_LTA) + self.safety.set_safety_hooks(Panda.SAFETY_TOYOTA, self.EPS_SCALE | ToyotaPandaFlags.FLAG_TOYOTA_STOCK_LONGITUDINAL | ToyotaPandaFlags.FLAG_TOYOTA_LTA) self.safety.init_tests() @@ -335,7 +336,7 @@ class TestToyotaSecOcSafety(TestToyotaStockLongitudinalBase): def setUp(self): self.packer = CANPackerPanda("toyota_secoc_pt_generated") self.safety = libpanda_py.libpanda - self.safety.set_safety_hooks(Panda.SAFETY_TOYOTA, self.EPS_SCALE | Panda.FLAG_TOYOTA_STOCK_LONGITUDINAL | Panda.FLAG_TOYOTA_SECOC) + self.safety.set_safety_hooks(Panda.SAFETY_TOYOTA, self.EPS_SCALE | ToyotaPandaFlags.FLAG_TOYOTA_STOCK_LONGITUDINAL | ToyotaPandaFlags.FLAG_TOYOTA_SECOC) self.safety.init_tests() # This platform also has alternate brake and PCM messages, but same naming in the DBC, so same packers work diff --git a/tests/safety/test_volkswagen_mqb.py b/tests/safety/test_volkswagen_mqb.py index 276ee6c2..6dd739d7 100755 --- a/tests/safety/test_volkswagen_mqb.py +++ b/tests/safety/test_volkswagen_mqb.py @@ -5,6 +5,7 @@ from panda import Panda from panda.tests.libpanda import libpanda_py import panda.tests.safety.common as common from panda.tests.safety.common import CANPackerPanda +from opendbc.car.volkswagen.values import VolkswagenPandaFlags MAX_ACCEL = 2.0 MIN_ACCEL = -3.5 @@ -165,7 +166,7 @@ class TestVolkswagenMqbLongSafety(TestVolkswagenMqbSafety): def setUp(self): self.packer = CANPackerPanda("vw_mqb_2010") self.safety = libpanda_py.libpanda - self.safety.set_safety_hooks(Panda.SAFETY_VOLKSWAGEN_MQB, Panda.FLAG_VOLKSWAGEN_LONG_CONTROL) + self.safety.set_safety_hooks(Panda.SAFETY_VOLKSWAGEN_MQB, VolkswagenPandaFlags.FLAG_VOLKSWAGEN_LONG_CONTROL) self.safety.init_tests() # stock cruise controls are entirely bypassed under openpilot longitudinal control diff --git a/tests/safety/test_volkswagen_pq.py b/tests/safety/test_volkswagen_pq.py index f2bc3178..c557e9a7 100755 --- a/tests/safety/test_volkswagen_pq.py +++ b/tests/safety/test_volkswagen_pq.py @@ -1,5 +1,7 @@ #!/usr/bin/env python3 import unittest + +from opendbc.car.volkswagen.values import VolkswagenPandaFlags from panda import Panda from panda.tests.libpanda import libpanda_py import panda.tests.safety.common as common @@ -147,7 +149,7 @@ class TestVolkswagenPqLongSafety(TestVolkswagenPqSafety, common.LongitudinalAcce def setUp(self): self.packer = CANPackerPanda("vw_golf_mk4") self.safety = libpanda_py.libpanda - self.safety.set_safety_hooks(Panda.SAFETY_VOLKSWAGEN_PQ, Panda.FLAG_VOLKSWAGEN_LONG_CONTROL) + self.safety.set_safety_hooks(Panda.SAFETY_VOLKSWAGEN_PQ, VolkswagenPandaFlags.FLAG_VOLKSWAGEN_LONG_CONTROL) self.safety.init_tests() # stock cruise controls are entirely bypassed under openpilot longitudinal control diff --git a/tests/safety_replay/helpers.py b/tests/safety_replay/helpers.py index a1a6cd3a..bd284612 100644 --- a/tests/safety_replay/helpers.py +++ b/tests/safety_replay/helpers.py @@ -1,3 +1,4 @@ +from opendbc.car.toyota.values import ToyotaPandaFlags import panda.tests.libpanda.libpanda_py as libpanda_py from panda import Panda @@ -12,7 +13,7 @@ def is_steering_msg(mode, param, addr): if mode in (Panda.SAFETY_HONDA_NIDEC, Panda.SAFETY_HONDA_BOSCH): ret = (addr == 0xE4) or (addr == 0x194) or (addr == 0x33D) or (addr == 0x33DA) or (addr == 0x33DB) elif mode == Panda.SAFETY_TOYOTA: - ret = addr == (0x191 if param & Panda.FLAG_TOYOTA_LTA else 0x2E4) + ret = addr == (0x191 if param & ToyotaPandaFlags.FLAG_TOYOTA_LTA else 0x2E4) elif mode == Panda.SAFETY_GM: ret = addr == 384 elif mode == Panda.SAFETY_HYUNDAI: @@ -33,7 +34,7 @@ def get_steer_value(mode, param, to_send): torque = (to_send.data[0] << 8) | to_send.data[1] torque = to_signed(torque, 16) elif mode == Panda.SAFETY_TOYOTA: - if param & Panda.FLAG_TOYOTA_LTA: + if param & ToyotaPandaFlags.FLAG_TOYOTA_LTA: angle = (to_send.data[1] << 8) | to_send.data[2] angle = to_signed(angle, 16) else: