From 396465cb7500544893b0d2f97886a8c42b03730c Mon Sep 17 00:00:00 2001 From: Shane Smiskol Date: Tue, 11 Feb 2025 22:14:44 -0600 Subject: [PATCH] Move safety constants to opendbc (#2145) * move to opendbc * all passing * do the rest * fix * and another * order * and update ref to master --- Dockerfile | 2 +- __init__.py | 2 +- board/jungle/scripts/loopback_test.py | 5 +-- board/jungle/scripts/spam_can.py | 3 +- examples/query_fw_versions.py | 5 +-- examples/query_vin_and_stats.py | 3 +- examples/tesla_tester.py | 5 +-- python/__init__.py | 44 ++------------------------- tests/black_white_loopback_test.py | 9 +++--- tests/black_white_relay_endurance.py | 9 +++--- tests/black_white_relay_test.py | 9 +++--- tests/bulk_write_test.py | 5 +-- tests/can_printer.py | 3 +- tests/canfd/test_canfd.py | 7 +++-- tests/echo.py | 3 +- tests/elm_car_simulator.py | 3 +- tests/hitl/2_health.py | 7 +++-- tests/hitl/3_usb_to_can.py | 7 +++-- tests/hitl/4_can_loopback.py | 14 ++++----- tests/hitl/6_safety.py | 11 ++++--- tests/hitl/9_harness.py | 3 +- tests/loopback_test.py | 3 +- tests/message_drop_test.py | 5 +-- tests/relay_test.py | 5 +-- tests/safety/common.py | 2 +- tests/safety/test_body.py | 4 +-- tests/safety/test_chrysler.py | 8 ++--- tests/safety/test_defaults.py | 10 +++--- tests/safety/test_elm327.py | 5 +-- tests/safety/test_ford.py | 8 ++--- tests/safety/test_gm.py | 10 +++--- tests/safety/test_honda.py | 18 +++++------ tests/safety/test_hyundai.py | 16 +++++----- tests/safety/test_hyundai_canfd.py | 14 ++++----- tests/safety/test_mazda.py | 4 +-- tests/safety/test_nissan.py | 8 ++--- tests/safety/test_subaru.py | 4 +-- tests/safety/test_subaru_preglobal.py | 4 +-- tests/safety/test_tesla.py | 10 +++--- tests/safety/test_toyota.py | 14 ++++----- tests/safety/test_volkswagen_mqb.py | 6 ++-- tests/safety/test_volkswagen_pq.py | 6 ++-- tests/safety_replay/helpers.py | 34 ++++++++++----------- tests/som/on-device.py | 3 +- tests/som/test_bootkick.py | 5 +-- tests/spam_can.py | 3 +- tests/standalone_test.py | 3 +- tests/usbprotocol/test_comms.py | 5 +-- 48 files changed, 182 insertions(+), 194 deletions(-) diff --git a/Dockerfile b/Dockerfile index 8dd33d6929..fdd6a57566 100644 --- a/Dockerfile +++ b/Dockerfile @@ -37,7 +37,7 @@ 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="0eab9bf26e1b36678db4f198986091c82e538967" +ENV OPENDBC_REF="950e7b34efa64d2ad41df3300652661fbae06f57" RUN cd /tmp/ && \ git clone --depth 1 https://github.com/sunnypilot/opendbc opendbc_repo && \ cd opendbc_repo && git fetch origin $OPENDBC_REF && git checkout FETCH_HEAD && rm -rf .git/ && \ diff --git a/__init__.py b/__init__.py index 6c391bb38d..4bedd8ddf1 100644 --- a/__init__.py +++ b/__init__.py @@ -5,7 +5,7 @@ from .python.utils import logger # noqa: F401 from .python import (Panda, PandaDFU, isotp, # noqa: F401 pack_can_buffer, unpack_can_buffer, calculate_checksum, - DLC_TO_LEN, LEN_TO_DLC, ALTERNATIVE_EXPERIENCE, CANPACKET_HEAD_SIZE) + DLC_TO_LEN, LEN_TO_DLC, CANPACKET_HEAD_SIZE) # panda jungle diff --git a/board/jungle/scripts/loopback_test.py b/board/jungle/scripts/loopback_test.py index b7be5586b9..7a661dd126 100755 --- a/board/jungle/scripts/loopback_test.py +++ b/board/jungle/scripts/loopback_test.py @@ -5,6 +5,7 @@ import random from termcolor import cprint +from opendbc.safety import Safety from panda import Panda, PandaJungle NUM_PANDAS_PER_TEST = 1 @@ -88,7 +89,7 @@ def can_loopback(sender): def test_loopback(): # disable safety modes for panda in pandas: - panda.set_safety_mode(Panda.SAFETY_ELM327 if FOR_RELEASE_BUILDS else Panda.SAFETY_ALLOUTPUT) + panda.set_safety_mode(Safety.SAFETY_ELM327 if FOR_RELEASE_BUILDS else Safety.SAFETY_ALLOUTPUT) # perform loopback with jungle as a sender can_loopback(jungle) @@ -99,7 +100,7 @@ def test_loopback(): # enable safety modes for panda in pandas: - panda.set_safety_mode(Panda.SAFETY_SILENT) + panda.set_safety_mode(Safety.SAFETY_SILENT) ################################################################# ############################# MAIN ############################## diff --git a/board/jungle/scripts/spam_can.py b/board/jungle/scripts/spam_can.py index c3d798b473..63df4f440a 100755 --- a/board/jungle/scripts/spam_can.py +++ b/board/jungle/scripts/spam_can.py @@ -1,6 +1,7 @@ #!/usr/bin/env python3 import os import random +from opendbc.safety import Safety from panda import PandaJungle def get_test_string(): @@ -9,7 +10,7 @@ def get_test_string(): if __name__ == "__main__": p = PandaJungle() - p.set_safety_mode(PandaJungle.SAFETY_ALLOUTPUT) + p.set_safety_mode(Safety.SAFETY_ALLOUTPUT) print("Spamming all buses...") while True: diff --git a/examples/query_fw_versions.py b/examples/query_fw_versions.py index e811778efa..2736e6491e 100755 --- a/examples/query_fw_versions.py +++ b/examples/query_fw_versions.py @@ -1,10 +1,11 @@ #!/usr/bin/env python3 import argparse from tqdm import tqdm -from panda import Panda from opendbc.car.carlog import carlog from opendbc.car.uds import UdsClient, MessageTimeoutError, NegativeResponseError, InvalidSubAddressError, \ SESSION_TYPE, DATA_IDENTIFIER_TYPE +from opendbc.safety import Safety +from panda import Panda if __name__ == "__main__": parser = argparse.ArgumentParser() @@ -63,7 +64,7 @@ exit() panda = Panda(serial=args.serial) - panda.set_safety_mode(Panda.SAFETY_ELM327, 1 if args.no_obd else 0) + panda.set_safety_mode(Safety.SAFETY_ELM327, 1 if args.no_obd else 0) print("querying addresses ...") with tqdm(addrs) as t: for addr in t: diff --git a/examples/query_vin_and_stats.py b/examples/query_vin_and_stats.py index 564b5b9177..5063093c8a 100755 --- a/examples/query_vin_and_stats.py +++ b/examples/query_vin_and_stats.py @@ -1,6 +1,7 @@ #!/usr/bin/env python3 import time import struct +from opendbc.safety import Safety from panda import Panda from hexdump import hexdump from panda.python.isotp import isotp_send, isotp_recv @@ -30,7 +31,7 @@ def get_supported_pids(): if __name__ == "__main__": panda = Panda() - panda.set_safety_mode(Panda.SAFETY_ELM327) + panda.set_safety_mode(Safety.SAFETY_ELM327) panda.can_clear(0) # 09 02 = Get VIN diff --git a/examples/tesla_tester.py b/examples/tesla_tester.py index 48a6b7de6f..011ee5c1d2 100755 --- a/examples/tesla_tester.py +++ b/examples/tesla_tester.py @@ -1,6 +1,7 @@ #!/usr/bin/env python3 import binascii +from opendbc.safety import Safety from panda import Panda def tesla_tester(): @@ -13,7 +14,7 @@ def tesla_tester(): # Now set the panda from its default of SAFETY_SILENT (read only) to SAFETY_ALLOUTPUT # Careful, as this will let us send any CAN messages we want (which could be very bad!) print("Setting Panda to output mode...") - p.set_safety_mode(Panda.SAFETY_ALLOUTPUT) + p.set_safety_mode(Safety.SAFETY_ALLOUTPUT) # BDY 0x248 is the MCU_commands message, which includes folding mirrors, opening the trunk, frunk, setting the cars lock state and more. # For our test, we will edit the 3rd byte, which is MCU_lockRequest. 0x01 will lock, 0x02 will unlock: @@ -26,7 +27,7 @@ def tesla_tester(): #Back to safety... print("Disabling output on Panda...") - p.set_safety_mode(Panda.SAFETY_SILENT) + p.set_safety_mode(Safety.SAFETY_SILENT) print("Reading VIN from 0x568. This is painfully slow and can take up to 3 minutes (1 minute per message; 3 messages needed for full VIN)...") diff --git a/python/__init__.py b/python/__init__.py index f56e1573a5..449c3c4fb2 100644 --- a/python/__init__.py +++ b/python/__init__.py @@ -9,6 +9,8 @@ from functools import wraps, partial from itertools import accumulate +from opendbc.safety import Safety + from .base import BaseHandle from .constants import FW_PATH, McuType from .dfu import PandaDFU @@ -101,48 +103,8 @@ def wrapper(self, *args, **kwargs): -class ALTERNATIVE_EXPERIENCE: - DEFAULT = 0 - DISABLE_DISENGAGE_ON_GAS = 1 - DISABLE_STOCK_AEB = 2 - RAISE_LONGITUDINAL_LIMITS_TO_ISO_MAX = 8 - ALLOW_AEB = 16 - - # sunnypilot - ENABLE_MADS = 2 ** 10 - DISENGAGE_LATERAL_ON_BRAKE = 2 ** 11 - class Panda: - # matches cereal.car.CarParams.SafetyModel - SAFETY_SILENT = 0 - SAFETY_HONDA_NIDEC = 1 - SAFETY_TOYOTA = 2 - SAFETY_ELM327 = 3 - SAFETY_GM = 4 - SAFETY_HONDA_BOSCH_GIRAFFE = 5 - SAFETY_FORD = 6 - SAFETY_HYUNDAI = 8 - SAFETY_CHRYSLER = 9 - SAFETY_TESLA = 10 - SAFETY_SUBARU = 11 - SAFETY_MAZDA = 13 - SAFETY_NISSAN = 14 - SAFETY_VOLKSWAGEN_MQB = 15 - SAFETY_ALLOUTPUT = 17 - SAFETY_GM_ASCM = 18 - SAFETY_NOOUTPUT = 19 - SAFETY_HONDA_BOSCH = 20 - SAFETY_VOLKSWAGEN_PQ = 21 - SAFETY_SUBARU_PREGLOBAL = 22 - SAFETY_HYUNDAI_LEGACY = 23 - SAFETY_HYUNDAI_COMMUNITY = 24 - SAFETY_STELLANTIS = 25 - SAFETY_FAW = 26 - SAFETY_BODY = 27 - SAFETY_HYUNDAI_CANFD = 28 - SAFETY_PSA = 31 - SERIAL_DEBUG = 0 SERIAL_ESP = 1 SERIAL_LIN1 = 2 @@ -752,7 +714,7 @@ def get_interrupt_call_rate(self, irqnum): def set_power_save(self, power_save_enabled=0): self._handle.controlWrite(Panda.REQUEST_OUT, 0xe7, int(power_save_enabled), 0, b'') - def set_safety_mode(self, mode=SAFETY_SILENT, param=0): + def set_safety_mode(self, mode=Safety.SAFETY_SILENT, param=0): self._handle.controlWrite(Panda.REQUEST_OUT, 0xdc, mode, param, b'') def set_obd(self, obd): diff --git a/tests/black_white_loopback_test.py b/tests/black_white_loopback_test.py index 69b0cfbd1e..0b0fa5e054 100755 --- a/tests/black_white_loopback_test.py +++ b/tests/black_white_loopback_test.py @@ -9,6 +9,7 @@ import time import random import argparse +from opendbc.safety import Safety from panda import Panda def get_test_string(): @@ -47,8 +48,8 @@ def run_test(sleep_duration): raise Exception("Connect white/grey and black panda to run this test!") # disable safety modes - black_panda.set_safety_mode(Panda.SAFETY_ALLOUTPUT) - other_panda.set_safety_mode(Panda.SAFETY_ALLOUTPUT) + black_panda.set_safety_mode(Safety.SAFETY_ALLOUTPUT) + other_panda.set_safety_mode(Safety.SAFETY_ALLOUTPUT) # test health packet print("black panda health", black_panda.health()) @@ -62,9 +63,9 @@ def run_test(sleep_duration): print("Number of cycles:", counter, "Non-zero bus errors:", nonzero_bus_errors, "Zero bus errors:", zero_bus_errors, "Content errors:", content_errors) # Toggle relay - black_panda.set_safety_mode(Panda.SAFETY_SILENT) + black_panda.set_safety_mode(Safety.SAFETY_SILENT) time.sleep(1) - black_panda.set_safety_mode(Panda.SAFETY_ALLOUTPUT) + black_panda.set_safety_mode(Safety.SAFETY_ALLOUTPUT) time.sleep(1) diff --git a/tests/black_white_relay_endurance.py b/tests/black_white_relay_endurance.py index 433f12343a..a750ef44a5 100755 --- a/tests/black_white_relay_endurance.py +++ b/tests/black_white_relay_endurance.py @@ -10,6 +10,7 @@ import random import argparse +from opendbc.safety import Safety from panda import Panda def get_test_string(): @@ -48,8 +49,8 @@ def run_test(sleep_duration): raise Exception("Connect white/grey and black panda to run this test!") # disable safety modes - black_panda.set_safety_mode(Panda.SAFETY_ALLOUTPUT) - other_panda.set_safety_mode(Panda.SAFETY_ALLOUTPUT) + black_panda.set_safety_mode(Safety.SAFETY_ALLOUTPUT) + other_panda.set_safety_mode(Safety.SAFETY_ALLOUTPUT) # test health packet print("black panda health", black_panda.health()) @@ -69,9 +70,9 @@ def run_test(sleep_duration): if (time.time() - temp_start_time) > 3600 * 6: # Toggle relay - black_panda.set_safety_mode(Panda.SAFETY_SILENT) + black_panda.set_safety_mode(Safety.SAFETY_SILENT) time.sleep(1) - black_panda.set_safety_mode(Panda.SAFETY_ALLOUTPUT) + black_panda.set_safety_mode(Safety.SAFETY_ALLOUTPUT) time.sleep(1) temp_start_time = time.time() diff --git a/tests/black_white_relay_test.py b/tests/black_white_relay_test.py index dce44f5675..48b93197e3 100755 --- a/tests/black_white_relay_test.py +++ b/tests/black_white_relay_test.py @@ -9,6 +9,7 @@ import random import argparse +from opendbc.safety import Safety from panda import Panda def get_test_string(): @@ -50,8 +51,8 @@ def run_test(sleep_duration): raise Exception("Connect white/grey and black panda to run this test!") # disable safety modes - black_panda.set_safety_mode(Panda.SAFETY_ALLOUTPUT) - other_panda.set_safety_mode(Panda.SAFETY_ALLOUTPUT) + black_panda.set_safety_mode(Safety.SAFETY_ALLOUTPUT) + other_panda.set_safety_mode(Safety.SAFETY_ALLOUTPUT) # test health packet print("black panda health", black_panda.health()) @@ -60,7 +61,7 @@ def run_test(sleep_duration): # test black -> other while True: # Switch on relay - black_panda.set_safety_mode(Panda.SAFETY_ALLOUTPUT) + black_panda.set_safety_mode(Safety.SAFETY_ALLOUTPUT) time.sleep(0.05) if not test_buses(black_panda, other_panda, (0, False, [0])): @@ -68,7 +69,7 @@ def run_test(sleep_duration): raise Exception("Open error") # Switch off relay - black_panda.set_safety_mode(Panda.SAFETY_SILENT) + black_panda.set_safety_mode(Safety.SAFETY_SILENT) time.sleep(0.05) if not test_buses(black_panda, other_panda, (0, False, [0, 2])): diff --git a/tests/bulk_write_test.py b/tests/bulk_write_test.py index e886efb06d..90e2d47099 100755 --- a/tests/bulk_write_test.py +++ b/tests/bulk_write_test.py @@ -4,6 +4,7 @@ import threading from typing import Any +from opendbc.safety import Safety from panda import Panda JUNGLE = "JUNGLE" in os.environ @@ -30,9 +31,9 @@ def flood_tx(panda): raise Exception("Connect two pandas to perform this test!") sender = Panda(serials[0]) receiver = Panda(serials[1]) # type: ignore - receiver.set_safety_mode(Panda.SAFETY_ALLOUTPUT) + receiver.set_safety_mode(Safety.SAFETY_ALLOUTPUT) - sender.set_safety_mode(Panda.SAFETY_ALLOUTPUT) + sender.set_safety_mode(Safety.SAFETY_ALLOUTPUT) # Start transmisson threading.Thread(target=flood_tx, args=(sender,)).start() diff --git a/tests/can_printer.py b/tests/can_printer.py index 404bc9dcf7..1838163e83 100755 --- a/tests/can_printer.py +++ b/tests/can_printer.py @@ -4,6 +4,7 @@ from collections import defaultdict import binascii +from opendbc.safety import Safety from panda import Panda # fake @@ -16,7 +17,7 @@ def can_printer(): time.sleep(1) p.can_clear(0xFFFF) - p.set_safety_mode(Panda.SAFETY_ALLOUTPUT) + p.set_safety_mode(Safety.SAFETY_ALLOUTPUT) start = sec_since_boot() lp = sec_since_boot() diff --git a/tests/canfd/test_canfd.py b/tests/canfd/test_canfd.py index 500a69aa06..b5474a397c 100755 --- a/tests/canfd/test_canfd.py +++ b/tests/canfd/test_canfd.py @@ -3,6 +3,7 @@ import time import random from collections import defaultdict +from opendbc.safety import Safety from panda import Panda, calculate_checksum, DLC_TO_LEN from panda import PandaJungle from panda.tests.hitl.helpers import time_many_sends @@ -44,14 +45,14 @@ def panda_init(serial, enable_canfd=False, enable_non_iso=False): p.set_can_data_speed_kbps(bus, 2000) if enable_non_iso: p.set_canfd_non_iso(bus, True) - p.set_safety_mode(Panda.SAFETY_ALLOUTPUT) + p.set_safety_mode(Safety.SAFETY_ALLOUTPUT) return p def test_canfd_throughput(p, p_recv=None): two_pandas = p_recv is not None - p.set_safety_mode(Panda.SAFETY_ALLOUTPUT) + p.set_safety_mode(Safety.SAFETY_ALLOUTPUT) if two_pandas: - p_recv.set_safety_mode(Panda.SAFETY_ALLOUTPUT) + p_recv.set_safety_mode(Safety.SAFETY_ALLOUTPUT) # enable output mode else: p.set_can_loopback(True) diff --git a/tests/echo.py b/tests/echo.py index 1c20561b10..8d3845c68c 100755 --- a/tests/echo.py +++ b/tests/echo.py @@ -1,11 +1,12 @@ #!/usr/bin/env python3 +from opendbc.safety import Safety from panda import Panda # This script is intended to be used in conjunction with the echo_loopback_test.py test script from panda jungle. # It sends a reversed response back for every message received containing b"test". if __name__ == "__main__": p = Panda() - p.set_safety_mode(Panda.SAFETY_ALLOUTPUT) + p.set_safety_mode(Safety.SAFETY_ALLOUTPUT) p.set_power_save(False) while True: diff --git a/tests/elm_car_simulator.py b/tests/elm_car_simulator.py index 90024a2541..751b12f4af 100755 --- a/tests/elm_car_simulator.py +++ b/tests/elm_car_simulator.py @@ -10,6 +10,7 @@ import threading from collections import deque +from opendbc.safety import Safety from panda import Panda def lin_checksum(dat): @@ -61,7 +62,7 @@ def set_enable(self, on): self.__on = on def start(self): - self.panda.set_safety_mode(Panda.SAFETY_ALLOUTPUT) + self.panda.set_safety_mode(Safety.SAFETY_ALLOUTPUT) if self.__lin_enable: self.__lin_monitor_thread.start() if self.__can_enable: diff --git a/tests/hitl/2_health.py b/tests/hitl/2_health.py index aa0039be9c..df462e9b2d 100644 --- a/tests/hitl/2_health.py +++ b/tests/hitl/2_health.py @@ -2,6 +2,7 @@ import pytest from opendbc.car.hyundai.values import HyundaiSafetyFlags +from opendbc.safety import Safety from panda import Panda @@ -37,9 +38,9 @@ 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=HyundaiSafetyFlags.FLAG_HYUNDAI_LONG) + p.set_safety_mode(mode=Safety.SAFETY_HYUNDAI, param=HyundaiSafetyFlags.FLAG_HYUNDAI_LONG) p.send_heartbeat() - assert p.health()['safety_mode'] == Panda.SAFETY_HYUNDAI + assert p.health()['safety_mode'] == Safety.SAFETY_HYUNDAI assert p.health()['safety_param'] == HyundaiSafetyFlags.FLAG_HYUNDAI_LONG # shouldn't do anything once we're in a car safety mode @@ -49,7 +50,7 @@ def test_heartbeat(p, panda_jungle): h = p.health() assert h['heartbeat_lost'] - assert h['safety_mode'] == Panda.SAFETY_SILENT + assert h['safety_mode'] == Safety.SAFETY_SILENT assert h['safety_param'] == 0 assert h['controls_allowed'] == 0 diff --git a/tests/hitl/3_usb_to_can.py b/tests/hitl/3_usb_to_can.py index 9920f44a87..bff9f4b6a7 100644 --- a/tests/hitl/3_usb_to_can.py +++ b/tests/hitl/3_usb_to_can.py @@ -1,11 +1,12 @@ import time from flaky import flaky +from opendbc.safety import Safety from panda import Panda from panda.tests.hitl.helpers import time_many_sends def test_can_loopback(p): - p.set_safety_mode(Panda.SAFETY_ALLOUTPUT) + p.set_safety_mode(Safety.SAFETY_ALLOUTPUT) p.set_can_loopback(True) for bus in (0, 1, 2): @@ -30,7 +31,7 @@ def test_can_loopback(p): def test_reliability(p): MSG_COUNT = 100 - p.set_safety_mode(Panda.SAFETY_ALLOUTPUT) + p.set_safety_mode(Safety.SAFETY_ALLOUTPUT) p.set_can_loopback(True) p.set_can_speed_kbps(0, 1000) @@ -60,7 +61,7 @@ def test_reliability(p): @flaky(max_runs=6, min_passes=1) def test_throughput(p): # enable output mode - p.set_safety_mode(Panda.SAFETY_ALLOUTPUT) + p.set_safety_mode(Safety.SAFETY_ALLOUTPUT) # enable CAN loopback mode p.set_can_loopback(True) diff --git a/tests/hitl/4_can_loopback.py b/tests/hitl/4_can_loopback.py index c482ba8227..8ad58ffa04 100644 --- a/tests/hitl/4_can_loopback.py +++ b/tests/hitl/4_can_loopback.py @@ -6,7 +6,7 @@ from flaky import flaky from collections import defaultdict -from panda import Panda +from opendbc.safety import Safety from panda.tests.hitl.conftest import PandaGroup from panda.tests.hitl.helpers import time_many_sends, get_random_can_messages, clear_can_buffers @@ -27,7 +27,7 @@ def test(p_send, p_recv): print(f"two pandas bus {bus}, 100 messages at speed {speed:4d}, comp speed is {comp_kbps:7.2f}, {saturation_pct:6.2f}%") # Run tests in both directions - p.set_safety_mode(Panda.SAFETY_ALLOUTPUT) + p.set_safety_mode(Safety.SAFETY_ALLOUTPUT) test(p, panda_jungle) test(panda_jungle, p) @@ -84,7 +84,7 @@ def test(p_send, p_recv): .format(bus, num_messages, speed, average_latency, average_comp_kbps, average_saturation_pct)) # Run tests in both directions - p.set_safety_mode(Panda.SAFETY_ALLOUTPUT) + p.set_safety_mode(Safety.SAFETY_ALLOUTPUT) test(p, panda_jungle) test(panda_jungle, p) @@ -126,12 +126,12 @@ def test(p_send, p_recv, address=None): print("Bus:", bus, "address:", addr, "OBD:", obd, "OK") # Run tests in both directions - p.set_safety_mode(Panda.SAFETY_ALLOUTPUT) + p.set_safety_mode(Safety.SAFETY_ALLOUTPUT) test(p, panda_jungle) test(panda_jungle, p) # Test extended frame address with ELM327 mode - p.set_safety_mode(Panda.SAFETY_ELM327) + p.set_safety_mode(Safety.SAFETY_ELM327) test(p, panda_jungle, 0x18DB33F1) test(panda_jungle, p, 0x18DB33F1) @@ -153,7 +153,7 @@ def flood_tx(panda): packet += [[0xaa, msg, 0], [0xaa, msg, 1], [0xaa, msg, 2]] * NUM_MESSAGES_PER_BUS # Disable timeout - panda.set_safety_mode(Panda.SAFETY_ALLOUTPUT) + panda.set_safety_mode(Safety.SAFETY_ALLOUTPUT) panda.can_send_many(packet, timeout=0) print(f"Done sending {4 * NUM_MESSAGES_PER_BUS} messages!", time.monotonic()) print(panda.health()) @@ -175,7 +175,7 @@ def flood_tx(panda): raise Exception("Did not receive all messages!") def test_message_integrity(p): - p.set_safety_mode(Panda.SAFETY_ALLOUTPUT) + p.set_safety_mode(Safety.SAFETY_ALLOUTPUT) p.set_can_loopback(True) for i in range(250): sent_msgs = defaultdict(set) diff --git a/tests/hitl/6_safety.py b/tests/hitl/6_safety.py index 67c646166e..5745561e26 100644 --- a/tests/hitl/6_safety.py +++ b/tests/hitl/6_safety.py @@ -1,10 +1,11 @@ import time +from opendbc.safety import Safety from panda import Panda def test_safety_nooutput(p): - p.set_safety_mode(Panda.SAFETY_SILENT) + p.set_safety_mode(Safety.SAFETY_SILENT) p.set_can_loopback(True) # send a message on bus 0 @@ -20,10 +21,10 @@ def test_safety_nooutput(p): def test_canfd_safety_modes(p): # works on all pandas - p.set_safety_mode(Panda.SAFETY_TOYOTA) - assert p.health()['safety_mode'] == Panda.SAFETY_TOYOTA + p.set_safety_mode(Safety.SAFETY_TOYOTA) + assert p.health()['safety_mode'] == Safety.SAFETY_TOYOTA # shouldn't be able to set a CAN-FD safety mode on non CAN-FD panda - p.set_safety_mode(Panda.SAFETY_HYUNDAI_CANFD) - expected_mode = Panda.SAFETY_HYUNDAI_CANFD if p.get_type() in Panda.H7_DEVICES else Panda.SAFETY_SILENT + p.set_safety_mode(Safety.SAFETY_HYUNDAI_CANFD) + expected_mode = Safety.SAFETY_HYUNDAI_CANFD if p.get_type() in Panda.H7_DEVICES else Safety.SAFETY_SILENT assert p.health()['safety_mode'] == expected_mode diff --git a/tests/hitl/9_harness.py b/tests/hitl/9_harness.py index b3544899be..42af7e59dc 100644 --- a/tests/hitl/9_harness.py +++ b/tests/hitl/9_harness.py @@ -2,6 +2,7 @@ import pytest import itertools +from opendbc.safety import Safety from panda import Panda from panda.tests.hitl.conftest import PandaGroup @@ -19,7 +20,7 @@ def test_harness_status(p, panda_jungle): # between the tests. for ignition, orientation in itertools.product([True, False], [Panda.HARNESS_STATUS_NC, Panda.HARNESS_STATUS_NORMAL, Panda.HARNESS_STATUS_FLIPPED]): print() - p.set_safety_mode(Panda.SAFETY_ELM327) + p.set_safety_mode(Safety.SAFETY_ELM327) panda_jungle.set_harness_orientation(orientation) panda_jungle.set_ignition(ignition) diff --git a/tests/loopback_test.py b/tests/loopback_test.py index 2b6eb53085..4c45379986 100755 --- a/tests/loopback_test.py +++ b/tests/loopback_test.py @@ -6,6 +6,7 @@ import argparse from itertools import permutations +from opendbc.safety import Safety from panda import Panda def get_test_string(): @@ -25,7 +26,7 @@ def run_test_w_pandas(pandas, sleep_duration): print("H", h) for hh in h: - hh.set_safety_mode(Panda.SAFETY_ALLOUTPUT) + hh.set_safety_mode(Safety.SAFETY_ALLOUTPUT) # test both directions for ho in permutations(list(range(len(h))), r=2): diff --git a/tests/message_drop_test.py b/tests/message_drop_test.py index a131a9c914..5aef3563c0 100755 --- a/tests/message_drop_test.py +++ b/tests/message_drop_test.py @@ -7,6 +7,7 @@ import threading from typing import Any +from opendbc.safety import Safety from panda import Panda JUNGLE = "JUNGLE" in os.environ @@ -44,9 +45,9 @@ def flood_tx(panda): raise Exception("Connect two pandas to perform this test!") sender = Panda(serials[0]) receiver = Panda(serials[1]) - receiver.set_safety_mode(Panda.SAFETY_ALLOUTPUT) + receiver.set_safety_mode(Safety.SAFETY_ALLOUTPUT) - sender.set_safety_mode(Panda.SAFETY_ALLOUTPUT) + sender.set_safety_mode(Safety.SAFETY_ALLOUTPUT) # Start transmisson threading.Thread(target=flood_tx, args=(sender,)).start() diff --git a/tests/relay_test.py b/tests/relay_test.py index 68789b17c8..60f96ea2b5 100755 --- a/tests/relay_test.py +++ b/tests/relay_test.py @@ -1,15 +1,16 @@ #!/usr/bin/env python import time +from opendbc.safety import Safety from panda import Panda p = Panda() while True: - p.set_safety_mode(Panda.SAFETY_TOYOTA) + p.set_safety_mode(Safety.SAFETY_TOYOTA) p.send_heartbeat() print("ON") time.sleep(1) - p.set_safety_mode(Panda.SAFETY_NOOUTPUT) + p.set_safety_mode(Safety.SAFETY_NOOUTPUT) p.send_heartbeat() print("OFF") time.sleep(1) diff --git a/tests/safety/common.py b/tests/safety/common.py index 4d94aa5635..24eae52475 100644 --- a/tests/safety/common.py +++ b/tests/safety/common.py @@ -6,7 +6,7 @@ from collections.abc import Callable from opendbc.can.packer import CANPacker # pylint: disable=import-error -from panda import ALTERNATIVE_EXPERIENCE +from opendbc.safety import ALTERNATIVE_EXPERIENCE from panda.tests.libpanda import libpanda_py from panda.tests.safety.mads_common import MadsCommonBase diff --git a/tests/safety/test_body.py b/tests/safety/test_body.py index d23c09f98c..cc94e37fca 100755 --- a/tests/safety/test_body.py +++ b/tests/safety/test_body.py @@ -3,7 +3,7 @@ import panda.tests.safety.common as common -from panda import Panda +from opendbc.safety import Safety from panda.tests.libpanda import libpanda_py from panda.tests.safety.common import CANPackerPanda @@ -15,7 +15,7 @@ class TestBody(common.PandaSafetyTest): def setUp(self): self.packer = CANPackerPanda("comma_body") self.safety = libpanda_py.libpanda - self.safety.set_safety_hooks(Panda.SAFETY_BODY, 0) + self.safety.set_safety_hooks(Safety.SAFETY_BODY, 0) self.safety.init_tests() def _motors_data_msg(self, speed_l, speed_r): diff --git a/tests/safety/test_chrysler.py b/tests/safety/test_chrysler.py index 1a00ed9dc0..45b226e540 100755 --- a/tests/safety/test_chrysler.py +++ b/tests/safety/test_chrysler.py @@ -2,7 +2,7 @@ import unittest from opendbc.car.chrysler.values import ChryslerSafetyFlags -from panda import Panda +from opendbc.safety import Safety from panda.tests.libpanda import libpanda_py import panda.tests.safety.common as common from panda.tests.safety.common import CANPackerPanda @@ -29,7 +29,7 @@ class TestChryslerSafety(common.PandaCarSafetyTest, common.MotorTorqueSteeringSa def setUp(self): self.packer = CANPackerPanda("chrysler_pacifica_2017_hybrid_generated") self.safety = libpanda_py.libpanda - self.safety.set_safety_hooks(Panda.SAFETY_CHRYSLER, 0) + self.safety.set_safety_hooks(Safety.SAFETY_CHRYSLER, 0) self.safety.init_tests() def _button_msg(self, cancel=False, resume=False): @@ -99,7 +99,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, ChryslerSafetyFlags.FLAG_CHRYSLER_RAM_DT) + self.safety.set_safety_hooks(Safety.SAFETY_CHRYSLER, ChryslerSafetyFlags.FLAG_CHRYSLER_RAM_DT) self.safety.init_tests() def _speed_msg(self, speed): @@ -127,7 +127,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, ChryslerSafetyFlags.FLAG_CHRYSLER_RAM_HD) + self.safety.set_safety_hooks(Safety.SAFETY_CHRYSLER, ChryslerSafetyFlags.FLAG_CHRYSLER_RAM_HD) self.safety.init_tests() def _speed_msg(self, speed): diff --git a/tests/safety/test_defaults.py b/tests/safety/test_defaults.py index 81bafeefcd..10444b496f 100755 --- a/tests/safety/test_defaults.py +++ b/tests/safety/test_defaults.py @@ -3,7 +3,7 @@ import panda.tests.safety.common as common -from panda import Panda +from opendbc.safety import Safety from panda.tests.libpanda import libpanda_py @@ -20,7 +20,7 @@ class TestNoOutput(TestDefaultRxHookBase): def setUp(self): self.safety = libpanda_py.libpanda - self.safety.set_safety_hooks(Panda.SAFETY_NOOUTPUT, 0) + self.safety.set_safety_hooks(Safety.SAFETY_NOOUTPUT, 0) self.safety.init_tests() @@ -29,7 +29,7 @@ class TestSilent(TestNoOutput): def setUp(self): self.safety = libpanda_py.libpanda - self.safety.set_safety_hooks(Panda.SAFETY_SILENT, 0) + self.safety.set_safety_hooks(Safety.SAFETY_SILENT, 0) self.safety.init_tests() @@ -40,7 +40,7 @@ class TestAllOutput(TestDefaultRxHookBase): def setUp(self): self.safety = libpanda_py.libpanda - self.safety.set_safety_hooks(Panda.SAFETY_ALLOUTPUT, 0) + self.safety.set_safety_hooks(Safety.SAFETY_ALLOUTPUT, 0) self.safety.init_tests() def test_spam_can_buses(self): @@ -65,7 +65,7 @@ class TestAllOutputPassthrough(TestAllOutput): def setUp(self): self.safety = libpanda_py.libpanda - self.safety.set_safety_hooks(Panda.SAFETY_ALLOUTPUT, 1) + self.safety.set_safety_hooks(Safety.SAFETY_ALLOUTPUT, 1) self.safety.init_tests() diff --git a/tests/safety/test_elm327.py b/tests/safety/test_elm327.py index f133b2ead9..ce2b77d0a1 100755 --- a/tests/safety/test_elm327.py +++ b/tests/safety/test_elm327.py @@ -3,7 +3,8 @@ import panda.tests.safety.common as common -from panda import DLC_TO_LEN, Panda +from opendbc.safety import Safety +from panda import DLC_TO_LEN from panda.tests.libpanda import libpanda_py from panda.tests.safety.test_defaults import TestDefaultRxHookBase @@ -18,7 +19,7 @@ class TestElm327(TestDefaultRxHookBase): def setUp(self): self.safety = libpanda_py.libpanda - self.safety.set_safety_hooks(Panda.SAFETY_ELM327, 0) + self.safety.set_safety_hooks(Safety.SAFETY_ELM327, 0) self.safety.init_tests() def test_tx_hook(self): diff --git a/tests/safety/test_ford.py b/tests/safety/test_ford.py index fd8c152f07..cc1eb125d3 100755 --- a/tests/safety/test_ford.py +++ b/tests/safety/test_ford.py @@ -6,7 +6,7 @@ import panda.tests.safety.common as common from opendbc.car.ford.values import FordSafetyFlags -from panda import Panda +from opendbc.safety import Safety from panda.tests.libpanda import libpanda_py from panda.tests.safety.common import CANPackerPanda @@ -379,7 +379,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, FordSafetyFlags.FLAG_FORD_CANFD) + self.safety.set_safety_hooks(Safety.SAFETY_FORD, FordSafetyFlags.FLAG_FORD_CANFD) self.safety.init_tests() @@ -456,7 +456,7 @@ def setUp(self): self.packer = CANPackerPanda("ford_lincoln_base_pt") self.safety = libpanda_py.libpanda # Make sure we enforce long safety even without long flag for CAN - self.safety.set_safety_hooks(Panda.SAFETY_FORD, 0) + self.safety.set_safety_hooks(Safety.SAFETY_FORD, 0) self.safety.init_tests() @@ -471,7 +471,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, FordSafetyFlags.FLAG_FORD_LONG_CONTROL | FordSafetyFlags.FLAG_FORD_CANFD) + self.safety.set_safety_hooks(Safety.SAFETY_FORD, FordSafetyFlags.FLAG_FORD_LONG_CONTROL | FordSafetyFlags.FLAG_FORD_CANFD) self.safety.init_tests() diff --git a/tests/safety/test_gm.py b/tests/safety/test_gm.py index 44c175bbaa..adb771d0e3 100755 --- a/tests/safety/test_gm.py +++ b/tests/safety/test_gm.py @@ -2,7 +2,7 @@ import unittest from opendbc.car.gm.values import GMSafetyFlags -from panda import Panda +from opendbc.safety import Safety from panda.tests.libpanda import libpanda_py import panda.tests.safety.common as common from panda.tests.safety.common import CANPackerPanda @@ -99,7 +99,7 @@ def setUp(self): 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, 0) + self.safety.set_safety_hooks(Safety.SAFETY_GM, 0) self.safety.init_tests() def _pcm_status_msg(self, enable): @@ -159,7 +159,7 @@ def setUp(self): 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, 0) + self.safety.set_safety_hooks(Safety.SAFETY_GM, 0) self.safety.init_tests() @@ -189,7 +189,7 @@ def setUp(self): 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, GMSafetyFlags.FLAG_GM_HW_CAM) + self.safety.set_safety_hooks(Safety.SAFETY_GM, GMSafetyFlags.FLAG_GM_HW_CAM) self.safety.init_tests() def test_buttons(self): @@ -221,7 +221,7 @@ def setUp(self): 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, GMSafetyFlags.FLAG_GM_HW_CAM | GMSafetyFlags.FLAG_GM_HW_CAM_LONG) + self.safety.set_safety_hooks(Safety.SAFETY_GM, GMSafetyFlags.FLAG_GM_HW_CAM | GMSafetyFlags.FLAG_GM_HW_CAM_LONG) self.safety.init_tests() diff --git a/tests/safety/test_honda.py b/tests/safety/test_honda.py index 7e9eed8918..9b7018ebf2 100755 --- a/tests/safety/test_honda.py +++ b/tests/safety/test_honda.py @@ -3,7 +3,7 @@ import numpy as np from opendbc.car.honda.values import HondaSafetyFlags -from panda import Panda +from opendbc.safety import Safety from panda.tests.libpanda import libpanda_py import panda.tests.safety.common as common from panda.tests.safety.common import CANPackerPanda, MAX_WRONG_COUNTERS @@ -311,7 +311,7 @@ class TestHondaNidecSafetyBase(HondaBase): def setUp(self): self.packer = CANPackerPanda("honda_civic_touring_2016_can_generated") self.safety = libpanda_py.libpanda - self.safety.set_safety_hooks(Panda.SAFETY_HONDA_NIDEC, 0) + self.safety.set_safety_hooks(Safety.SAFETY_HONDA_NIDEC, 0) self.safety.init_tests() def _send_brake_msg(self, brake, aeb_req=0, bus=0): @@ -401,7 +401,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, HondaSafetyFlags.FLAG_HONDA_NIDEC_ALT) + self.safety.set_safety_hooks(Safety.SAFETY_HONDA_NIDEC, HondaSafetyFlags.FLAG_HONDA_NIDEC_ALT) self.safety.init_tests() def _acc_state_msg(self, main_on): @@ -466,7 +466,7 @@ class TestHondaBoschAltBrakeSafetyBase(TestHondaBoschSafetyBase): """ def setUp(self): super().setUp() - self.safety.set_safety_hooks(Panda.SAFETY_HONDA_BOSCH, HondaSafetyFlags.FLAG_HONDA_ALT_BRAKE) + self.safety.set_safety_hooks(Safety.SAFETY_HONDA_BOSCH, HondaSafetyFlags.FLAG_HONDA_ALT_BRAKE) self.safety.init_tests() def _user_brake_msg(self, brake): @@ -488,7 +488,7 @@ class TestHondaBoschSafety(HondaPcmEnableBase, TestHondaBoschSafetyBase): """ def setUp(self): super().setUp() - self.safety.set_safety_hooks(Panda.SAFETY_HONDA_BOSCH, 0) + self.safety.set_safety_hooks(Safety.SAFETY_HONDA_BOSCH, 0) self.safety.init_tests() @@ -515,7 +515,7 @@ class TestHondaBoschLongSafety(HondaButtonEnableBase, TestHondaBoschSafetyBase): def setUp(self): super().setUp() - self.safety.set_safety_hooks(Panda.SAFETY_HONDA_BOSCH, HondaSafetyFlags.FLAG_HONDA_BOSCH_LONG) + self.safety.set_safety_hooks(Safety.SAFETY_HONDA_BOSCH, HondaSafetyFlags.FLAG_HONDA_BOSCH_LONG) self.safety.init_tests() def _send_gas_brake_msg(self, gas, accel): @@ -575,7 +575,7 @@ class TestHondaBoschRadarlessSafety(HondaPcmEnableBase, TestHondaBoschRadarlessS def setUp(self): super().setUp() - self.safety.set_safety_hooks(Panda.SAFETY_HONDA_BOSCH, HondaSafetyFlags.FLAG_HONDA_RADARLESS) + self.safety.set_safety_hooks(Safety.SAFETY_HONDA_BOSCH, HondaSafetyFlags.FLAG_HONDA_RADARLESS) self.safety.init_tests() @@ -586,7 +586,7 @@ class TestHondaBoschRadarlessAltBrakeSafety(HondaPcmEnableBase, TestHondaBoschRa def setUp(self): super().setUp() - self.safety.set_safety_hooks(Panda.SAFETY_HONDA_BOSCH, HondaSafetyFlags.FLAG_HONDA_RADARLESS | HondaSafetyFlags.FLAG_HONDA_ALT_BRAKE) + self.safety.set_safety_hooks(Safety.SAFETY_HONDA_BOSCH, HondaSafetyFlags.FLAG_HONDA_RADARLESS | HondaSafetyFlags.FLAG_HONDA_ALT_BRAKE) self.safety.init_tests() @@ -600,7 +600,7 @@ class TestHondaBoschRadarlessLongSafety(common.LongitudinalAccelSafetyTest, Hond def setUp(self): super().setUp() - self.safety.set_safety_hooks(Panda.SAFETY_HONDA_BOSCH, HondaSafetyFlags.FLAG_HONDA_RADARLESS | HondaSafetyFlags.FLAG_HONDA_BOSCH_LONG) + self.safety.set_safety_hooks(Safety.SAFETY_HONDA_BOSCH, HondaSafetyFlags.FLAG_HONDA_RADARLESS | HondaSafetyFlags.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 d0c9e67ea2..30785ee767 100755 --- a/tests/safety/test_hyundai.py +++ b/tests/safety/test_hyundai.py @@ -3,7 +3,7 @@ import unittest from opendbc.car.hyundai.values import HyundaiSafetyFlags -from panda import Panda +from opendbc.safety import Safety from panda.tests.libpanda import libpanda_py import panda.tests.safety.common as common from panda.tests.safety.common import CANPackerPanda @@ -74,7 +74,7 @@ class TestHyundaiSafety(HyundaiButtonBase, common.PandaCarSafetyTest, common.Dri def setUp(self): self.packer = CANPackerPanda("hyundai_kia_generic") self.safety = libpanda_py.libpanda - self.safety.set_safety_hooks(Panda.SAFETY_HYUNDAI, 0) + self.safety.set_safety_hooks(Safety.SAFETY_HYUNDAI, 0) self.safety.init_tests() def _button_msg(self, buttons, main_button=0, bus=0): @@ -150,7 +150,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, HyundaiSafetyFlags.FLAG_HYUNDAI_ALT_LIMITS) + self.safety.set_safety_hooks(Safety.SAFETY_HYUNDAI, HyundaiSafetyFlags.FLAG_HYUNDAI_ALT_LIMITS) self.safety.init_tests() @@ -161,7 +161,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, HyundaiSafetyFlags.FLAG_HYUNDAI_CAMERA_SCC) + self.safety.set_safety_hooks(Safety.SAFETY_HYUNDAI, HyundaiSafetyFlags.FLAG_HYUNDAI_CAMERA_SCC) self.safety.init_tests() def test_pcm_main_cruise_state_availability(self): @@ -180,7 +180,7 @@ class TestHyundaiLegacySafety(TestHyundaiSafety): def setUp(self): self.packer = CANPackerPanda("hyundai_kia_generic") self.safety = libpanda_py.libpanda - self.safety.set_safety_hooks(Panda.SAFETY_HYUNDAI_LEGACY, 0) + self.safety.set_safety_hooks(Safety.SAFETY_HYUNDAI_LEGACY, 0) self.safety.init_tests() @@ -188,7 +188,7 @@ class TestHyundaiLegacySafetyEV(TestHyundaiSafety): def setUp(self): self.packer = CANPackerPanda("hyundai_kia_generic") self.safety = libpanda_py.libpanda - self.safety.set_safety_hooks(Panda.SAFETY_HYUNDAI_LEGACY, 1) + self.safety.set_safety_hooks(Safety.SAFETY_HYUNDAI_LEGACY, 1) self.safety.init_tests() def _user_gas_msg(self, gas): @@ -200,7 +200,7 @@ class TestHyundaiLegacySafetyHEV(TestHyundaiSafety): def setUp(self): self.packer = CANPackerPanda("hyundai_kia_generic") self.safety = libpanda_py.libpanda - self.safety.set_safety_hooks(Panda.SAFETY_HYUNDAI_LEGACY, 2) + self.safety.set_safety_hooks(Safety.SAFETY_HYUNDAI_LEGACY, 2) self.safety.init_tests() def _user_gas_msg(self, gas): @@ -218,7 +218,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, HyundaiSafetyFlags.FLAG_HYUNDAI_LONG) + self.safety.set_safety_hooks(Safety.SAFETY_HYUNDAI, HyundaiSafetyFlags.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 80c8ae54f6..7871bdbf72 100755 --- a/tests/safety/test_hyundai_canfd.py +++ b/tests/safety/test_hyundai_canfd.py @@ -3,7 +3,7 @@ import unittest from opendbc.car.hyundai.values import HyundaiSafetyFlags -from panda import Panda +from opendbc.safety import Safety from panda.tests.libpanda import libpanda_py import panda.tests.safety.common as common from panda.tests.safety.common import CANPackerPanda @@ -114,7 +114,7 @@ def setUpClass(cls): def setUp(self): self.packer = CANPackerPanda("hyundai_canfd") self.safety = libpanda_py.libpanda - self.safety.set_safety_hooks(Panda.SAFETY_HYUNDAI_CANFD, self.SAFETY_PARAM) + self.safety.set_safety_hooks(Safety.SAFETY_HYUNDAI_CANFD, self.SAFETY_PARAM) self.safety.init_tests() @@ -157,7 +157,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, HyundaiSafetyFlags.FLAG_HYUNDAI_CANFD_ALT_BUTTONS | self.SAFETY_PARAM) + self.safety.set_safety_hooks(Safety.SAFETY_HYUNDAI_CANFD, HyundaiSafetyFlags.FLAG_HYUNDAI_CANFD_ALT_BUTTONS | self.SAFETY_PARAM) self.safety.init_tests() def _button_msg(self, buttons, main_button=0, bus=1): @@ -196,7 +196,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, HyundaiSafetyFlags.FLAG_HYUNDAI_CANFD_HDA2 | HyundaiSafetyFlags.FLAG_HYUNDAI_EV_GAS) + self.safety.set_safety_hooks(Safety.SAFETY_HYUNDAI_CANFD, HyundaiSafetyFlags.FLAG_HYUNDAI_CANFD_HDA2 | HyundaiSafetyFlags.FLAG_HYUNDAI_EV_GAS) self.safety.init_tests() @@ -216,7 +216,7 @@ 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, HyundaiSafetyFlags.FLAG_HYUNDAI_CANFD_HDA2 | HyundaiSafetyFlags.FLAG_HYUNDAI_EV_GAS | + self.safety.set_safety_hooks(Safety.SAFETY_HYUNDAI_CANFD, HyundaiSafetyFlags.FLAG_HYUNDAI_CANFD_HDA2 | HyundaiSafetyFlags.FLAG_HYUNDAI_EV_GAS | HyundaiSafetyFlags.FLAG_HYUNDAI_CANFD_HDA2_ALT_STEERING) self.safety.init_tests() @@ -238,7 +238,7 @@ 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, HyundaiSafetyFlags.FLAG_HYUNDAI_CANFD_HDA2 | + self.safety.set_safety_hooks(Safety.SAFETY_HYUNDAI_CANFD, HyundaiSafetyFlags.FLAG_HYUNDAI_CANFD_HDA2 | HyundaiSafetyFlags.FLAG_HYUNDAI_LONG | HyundaiSafetyFlags.FLAG_HYUNDAI_EV_GAS) self.safety.init_tests() @@ -283,7 +283,7 @@ def setUpClass(cls): def setUp(self): self.packer = CANPackerPanda("hyundai_canfd") self.safety = libpanda_py.libpanda - self.safety.set_safety_hooks(Panda.SAFETY_HYUNDAI_CANFD, HyundaiSafetyFlags.FLAG_HYUNDAI_CAMERA_SCC | self.SAFETY_PARAM) + self.safety.set_safety_hooks(Safety.SAFETY_HYUNDAI_CANFD, HyundaiSafetyFlags.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_mazda.py b/tests/safety/test_mazda.py index 9d2fb89885..f6798b911f 100755 --- a/tests/safety/test_mazda.py +++ b/tests/safety/test_mazda.py @@ -1,6 +1,6 @@ #!/usr/bin/env python3 import unittest -from panda import Panda +from opendbc.safety import Safety from panda.tests.libpanda import libpanda_py import panda.tests.safety.common as common from panda.tests.safety.common import CANPackerPanda @@ -30,7 +30,7 @@ class TestMazdaSafety(common.PandaCarSafetyTest, common.DriverTorqueSteeringSafe def setUp(self): self.packer = CANPackerPanda("mazda_2017") self.safety = libpanda_py.libpanda - self.safety.set_safety_hooks(Panda.SAFETY_MAZDA, 0) + self.safety.set_safety_hooks(Safety.SAFETY_MAZDA, 0) self.safety.init_tests() def _torque_meas_msg(self, torque): diff --git a/tests/safety/test_nissan.py b/tests/safety/test_nissan.py index 89431abba2..8398995d8f 100755 --- a/tests/safety/test_nissan.py +++ b/tests/safety/test_nissan.py @@ -2,7 +2,7 @@ import unittest from opendbc.car.nissan.values import NissanSafetyFlags -from panda import Panda +from opendbc.safety import Safety from panda.tests.libpanda import libpanda_py import panda.tests.safety.common as common from panda.tests.safety.common import CANPackerPanda @@ -31,7 +31,7 @@ class TestNissanSafety(common.PandaCarSafetyTest, common.AngleSteeringSafetyTest def setUp(self): self.packer = CANPackerPanda("nissan_x_trail_2017_generated") self.safety = libpanda_py.libpanda - self.safety.set_safety_hooks(Panda.SAFETY_NISSAN, 0) + self.safety.set_safety_hooks(Safety.SAFETY_NISSAN, 0) self.safety.init_tests() def _angle_cmd_msg(self, angle: float, enabled: bool): @@ -96,7 +96,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, NissanSafetyFlags.FLAG_NISSAN_ALT_EPS_BUS) + self.safety.set_safety_hooks(Safety.SAFETY_NISSAN, NissanSafetyFlags.FLAG_NISSAN_ALT_EPS_BUS) self.safety.init_tests() def _acc_state_msg(self, main_on): @@ -109,7 +109,7 @@ class TestNissanLeafSafety(TestNissanSafety): def setUp(self): self.packer = CANPackerPanda("nissan_leaf_2018_generated") self.safety = libpanda_py.libpanda - self.safety.set_safety_hooks(Panda.SAFETY_NISSAN, Panda.FLAG_NISSAN_LEAF) + self.safety.set_safety_hooks(Safety.SAFETY_NISSAN, 0) self.safety.init_tests() def _user_brake_msg(self, brake): diff --git a/tests/safety/test_subaru.py b/tests/safety/test_subaru.py index a7935ff64e..d09eb49da7 100755 --- a/tests/safety/test_subaru.py +++ b/tests/safety/test_subaru.py @@ -3,7 +3,7 @@ import unittest from opendbc.car.subaru.values import SubaruSafetyFlags -from panda import Panda +from opendbc.safety import Safety from panda.tests.libpanda import libpanda_py import panda.tests.safety.common as common from panda.tests.safety.common import CANPackerPanda @@ -77,7 +77,7 @@ class TestSubaruSafetyBase(common.PandaCarSafetyTest): def setUp(self): self.packer = CANPackerPanda("subaru_global_2017_generated") self.safety = libpanda_py.libpanda - self.safety.set_safety_hooks(Panda.SAFETY_SUBARU, self.FLAGS) + self.safety.set_safety_hooks(Safety.SAFETY_SUBARU, self.FLAGS) self.safety.init_tests() def _set_prev_torque(self, t): diff --git a/tests/safety/test_subaru_preglobal.py b/tests/safety/test_subaru_preglobal.py index 5670646010..16050c5461 100755 --- a/tests/safety/test_subaru_preglobal.py +++ b/tests/safety/test_subaru_preglobal.py @@ -2,7 +2,7 @@ import unittest from opendbc.car.subaru.values import SubaruSafetyFlags -from panda import Panda +from opendbc.safety import Safety from panda.tests.libpanda import libpanda_py import panda.tests.safety.common as common from panda.tests.safety.common import CANPackerPanda @@ -30,7 +30,7 @@ class TestSubaruPreglobalSafety(common.PandaCarSafetyTest, common.DriverTorqueSt def setUp(self): self.packer = CANPackerPanda(self.DBC) self.safety = libpanda_py.libpanda - self.safety.set_safety_hooks(Panda.SAFETY_SUBARU_PREGLOBAL, self.FLAGS) + self.safety.set_safety_hooks(Safety.SAFETY_SUBARU_PREGLOBAL, self.FLAGS) self.safety.init_tests() def _set_prev_torque(self, t): diff --git a/tests/safety/test_tesla.py b/tests/safety/test_tesla.py index 31f12d42b4..da9b076c36 100755 --- a/tests/safety/test_tesla.py +++ b/tests/safety/test_tesla.py @@ -3,7 +3,7 @@ import numpy as np from opendbc.car.tesla.values import TeslaSafetyFlags -from panda import Panda +from opendbc.safety import Safety import panda.tests.safety.common as common from panda.tests.libpanda import libpanda_py from panda.tests.safety.common import CANPackerPanda @@ -79,7 +79,7 @@ class TestTeslaSteeringSafety(TestTeslaSafety, common.AngleSteeringSafetyTest): def setUp(self): self.packer = CANPackerPanda("tesla_can") self.safety = libpanda_py.libpanda - self.safety.set_safety_hooks(Panda.SAFETY_TESLA, 0) + self.safety.set_safety_hooks(Safety.SAFETY_TESLA, 0) self.safety.init_tests() def _angle_cmd_msg(self, angle: float, enabled: bool): @@ -114,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, TeslaSafetyFlags.FLAG_TESLA_RAVEN) + self.safety.set_safety_hooks(Safety.SAFETY_TESLA, TeslaSafetyFlags.FLAG_TESLA_RAVEN) self.safety.init_tests() def _angle_meas_msg(self, angle: float): @@ -167,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, TeslaSafetyFlags.FLAG_TESLA_LONG_CONTROL) + self.safety.set_safety_hooks(Safety.SAFETY_TESLA, TeslaSafetyFlags.FLAG_TESLA_LONG_CONTROL) self.safety.init_tests() @@ -179,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, TeslaSafetyFlags.FLAG_TESLA_LONG_CONTROL | TeslaSafetyFlags.FLAG_TESLA_POWERTRAIN) + self.safety.set_safety_hooks(Safety.SAFETY_TESLA, TeslaSafetyFlags.FLAG_TESLA_LONG_CONTROL | TeslaSafetyFlags.FLAG_TESLA_POWERTRAIN) self.safety.init_tests() diff --git a/tests/safety/test_toyota.py b/tests/safety/test_toyota.py index b628bee8d6..8729ef2c99 100755 --- a/tests/safety/test_toyota.py +++ b/tests/safety/test_toyota.py @@ -5,7 +5,7 @@ import itertools from opendbc.car.toyota.values import ToyotaSafetyFlags -from panda import Panda +from opendbc.safety import Safety from panda.tests.libpanda import libpanda_py import panda.tests.safety.common as common from panda.tests.safety.common import CANPackerPanda @@ -146,7 +146,7 @@ class TestToyotaSafetyTorque(TestToyotaSafetyBase, common.MotorTorqueSteeringSaf 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) + self.safety.set_safety_hooks(Safety.SAFETY_TOYOTA, self.EPS_SCALE) self.safety.init_tests() @@ -166,7 +166,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 | ToyotaSafetyFlags.FLAG_TOYOTA_LTA) + self.safety.set_safety_hooks(Safety.SAFETY_TOYOTA, self.EPS_SCALE | ToyotaSafetyFlags.FLAG_TOYOTA_LTA) self.safety.init_tests() # Only allow LKA msgs with no actuation @@ -268,7 +268,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 | ToyotaSafetyFlags.FLAG_TOYOTA_ALT_BRAKE) + self.safety.set_safety_hooks(Safety.SAFETY_TOYOTA, self.EPS_SCALE | ToyotaSafetyFlags.FLAG_TOYOTA_ALT_BRAKE) self.safety.init_tests() def _user_brake_msg(self, brake): @@ -313,7 +313,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 | ToyotaSafetyFlags.FLAG_TOYOTA_STOCK_LONGITUDINAL) + self.safety.set_safety_hooks(Safety.SAFETY_TOYOTA, self.EPS_SCALE | ToyotaSafetyFlags.FLAG_TOYOTA_STOCK_LONGITUDINAL) self.safety.init_tests() @@ -322,7 +322,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 | ToyotaSafetyFlags.FLAG_TOYOTA_STOCK_LONGITUDINAL | ToyotaSafetyFlags.FLAG_TOYOTA_LTA) + self.safety.set_safety_hooks(Safety.SAFETY_TOYOTA, self.EPS_SCALE | ToyotaSafetyFlags.FLAG_TOYOTA_STOCK_LONGITUDINAL | ToyotaSafetyFlags.FLAG_TOYOTA_LTA) self.safety.init_tests() @@ -335,7 +335,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 | ToyotaSafetyFlags.FLAG_TOYOTA_STOCK_LONGITUDINAL | ToyotaSafetyFlags.FLAG_TOYOTA_SECOC) + self.safety.set_safety_hooks(Safety.SAFETY_TOYOTA, self.EPS_SCALE | ToyotaSafetyFlags.FLAG_TOYOTA_STOCK_LONGITUDINAL | ToyotaSafetyFlags.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 b774fae2ce..816525881e 100755 --- a/tests/safety/test_volkswagen_mqb.py +++ b/tests/safety/test_volkswagen_mqb.py @@ -1,7 +1,7 @@ #!/usr/bin/env python3 import unittest import numpy as np -from panda import Panda +from opendbc.safety import Safety from panda.tests.libpanda import libpanda_py import panda.tests.safety.common as common from panda.tests.safety.common import CANPackerPanda @@ -144,7 +144,7 @@ class TestVolkswagenMqbStockSafety(TestVolkswagenMqbSafety): def setUp(self): self.packer = CANPackerPanda("vw_mqb_2010") self.safety = libpanda_py.libpanda - self.safety.set_safety_hooks(Panda.SAFETY_VOLKSWAGEN_MQB, 0) + self.safety.set_safety_hooks(Safety.SAFETY_VOLKSWAGEN_MQB, 0) self.safety.init_tests() def test_spam_cancel_safety_check(self): @@ -166,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, VolkswagenSafetyFlags.FLAG_VOLKSWAGEN_LONG_CONTROL) + self.safety.set_safety_hooks(Safety.SAFETY_VOLKSWAGEN_MQB, VolkswagenSafetyFlags.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 5f5a536fc3..b497207f6a 100755 --- a/tests/safety/test_volkswagen_pq.py +++ b/tests/safety/test_volkswagen_pq.py @@ -2,7 +2,7 @@ import unittest from opendbc.car.volkswagen.values import VolkswagenSafetyFlags -from panda import Panda +from opendbc.safety import Safety from panda.tests.libpanda import libpanda_py import panda.tests.safety.common as common from panda.tests.safety.common import CANPackerPanda @@ -127,7 +127,7 @@ class TestVolkswagenPqStockSafety(TestVolkswagenPqSafety): def setUp(self): self.packer = CANPackerPanda("vw_golf_mk4") self.safety = libpanda_py.libpanda - self.safety.set_safety_hooks(Panda.SAFETY_VOLKSWAGEN_PQ, 0) + self.safety.set_safety_hooks(Safety.SAFETY_VOLKSWAGEN_PQ, 0) self.safety.init_tests() def test_spam_cancel_safety_check(self): @@ -149,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, VolkswagenSafetyFlags.FLAG_VOLKSWAGEN_LONG_CONTROL) + self.safety.set_safety_hooks(Safety.SAFETY_VOLKSWAGEN_PQ, VolkswagenSafetyFlags.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 710e164146..41237b61f3 100644 --- a/tests/safety_replay/helpers.py +++ b/tests/safety_replay/helpers.py @@ -1,6 +1,6 @@ from opendbc.car.toyota.values import ToyotaSafetyFlags +from opendbc.safety import Safety import panda.tests.libpanda.libpanda_py as libpanda_py -from panda import Panda def to_signed(d, bits): ret = d @@ -10,49 +10,49 @@ def to_signed(d, bits): def is_steering_msg(mode, param, addr): ret = False - if mode in (Panda.SAFETY_HONDA_NIDEC, Panda.SAFETY_HONDA_BOSCH): + if mode in (Safety.SAFETY_HONDA_NIDEC, Safety.SAFETY_HONDA_BOSCH): ret = (addr == 0xE4) or (addr == 0x194) or (addr == 0x33D) or (addr == 0x33DA) or (addr == 0x33DB) - elif mode == Panda.SAFETY_TOYOTA: + elif mode == Safety.SAFETY_TOYOTA: ret = addr == (0x191 if param & ToyotaSafetyFlags.FLAG_TOYOTA_LTA else 0x2E4) - elif mode == Panda.SAFETY_GM: + elif mode == Safety.SAFETY_GM: ret = addr == 384 - elif mode == Panda.SAFETY_HYUNDAI: + elif mode == Safety.SAFETY_HYUNDAI: ret = addr == 832 - elif mode == Panda.SAFETY_CHRYSLER: + elif mode == Safety.SAFETY_CHRYSLER: ret = addr == 0x292 - elif mode == Panda.SAFETY_SUBARU: + elif mode == Safety.SAFETY_SUBARU: ret = addr == 0x122 - elif mode == Panda.SAFETY_FORD: + elif mode == Safety.SAFETY_FORD: ret = addr == 0x3d3 - elif mode == Panda.SAFETY_NISSAN: + elif mode == Safety.SAFETY_NISSAN: ret = addr == 0x169 return ret def get_steer_value(mode, param, to_send): torque, angle = 0, 0 - if mode in (Panda.SAFETY_HONDA_NIDEC, Panda.SAFETY_HONDA_BOSCH): + if mode in (Safety.SAFETY_HONDA_NIDEC, Safety.SAFETY_HONDA_BOSCH): torque = (to_send.data[0] << 8) | to_send.data[1] torque = to_signed(torque, 16) - elif mode == Panda.SAFETY_TOYOTA: + elif mode == Safety.SAFETY_TOYOTA: if param & ToyotaSafetyFlags.FLAG_TOYOTA_LTA: angle = (to_send.data[1] << 8) | to_send.data[2] angle = to_signed(angle, 16) else: torque = (to_send.data[1] << 8) | (to_send.data[2]) torque = to_signed(torque, 16) - elif mode == Panda.SAFETY_GM: + elif mode == Safety.SAFETY_GM: torque = ((to_send.data[0] & 0x7) << 8) | to_send.data[1] torque = to_signed(torque, 11) - elif mode == Panda.SAFETY_HYUNDAI: + elif mode == Safety.SAFETY_HYUNDAI: torque = (((to_send.data[3] & 0x7) << 8) | to_send.data[2]) - 1024 - elif mode == Panda.SAFETY_CHRYSLER: + elif mode == Safety.SAFETY_CHRYSLER: torque = (((to_send.data[0] & 0x7) << 8) | to_send.data[1]) - 1024 - elif mode == Panda.SAFETY_SUBARU: + elif mode == Safety.SAFETY_SUBARU: torque = ((to_send.data[3] & 0x1F) << 8) | to_send.data[2] torque = -to_signed(torque, 13) - elif mode == Panda.SAFETY_FORD: + elif mode == Safety.SAFETY_FORD: angle = ((to_send.data[0] << 3) | (to_send.data[1] >> 5)) - 1000 - elif mode == Panda.SAFETY_NISSAN: + elif mode == Safety.SAFETY_NISSAN: angle = (to_send.data[0] << 10) | (to_send.data[1] << 2) | (to_send.data[2] >> 6) angle = -angle + (1310 * 100) return torque, angle diff --git a/tests/som/on-device.py b/tests/som/on-device.py index 421271d6a8..385aa1fd49 100755 --- a/tests/som/on-device.py +++ b/tests/som/on-device.py @@ -2,6 +2,7 @@ import os import time +from opendbc.safety import Safety from panda import Panda @@ -12,7 +13,7 @@ with Panda(disable_checks=False) as p: if not flag_set: p.set_heartbeat_disabled() - p.set_safety_mode(Panda.SAFETY_ELM327, 30) + p.set_safety_mode(Safety.SAFETY_ELM327, 30) flag_set = True # shutdown when told diff --git a/tests/som/test_bootkick.py b/tests/som/test_bootkick.py index 324d249293..d32e697fdb 100644 --- a/tests/som/test_bootkick.py +++ b/tests/som/test_bootkick.py @@ -1,6 +1,7 @@ import time import pytest +from opendbc.safety import Safety from panda import Panda, PandaJungle PANDA_SERIAL = "28002d000451323431333839" @@ -48,7 +49,7 @@ def setup_state(panda, jungle, state): jungle.set_panda_individual_power(OBDC_PORT, 1) wait_for_boot(panda, jungle) set_som_shutdown_flag(panda) - panda.set_safety_mode(Panda.SAFETY_SILENT) + panda.set_safety_mode(Safety.SAFETY_SILENT) panda.send_heartbeat() wait_for_som_shutdown(panda, jungle) else: @@ -82,7 +83,7 @@ def wait_for_full_poweroff(jungle, timeout=30): def check_som_boot_flag(panda): h = panda.health() - return h['safety_mode'] == Panda.SAFETY_ELM327 and h['safety_param'] == 30 + return h['safety_mode'] == Safety.SAFETY_ELM327 and h['safety_param'] == 30 def set_som_shutdown_flag(panda): panda.set_can_data_speed_kbps(0, 1000) diff --git a/tests/spam_can.py b/tests/spam_can.py index 3154cc0463..c38ffd4971 100755 --- a/tests/spam_can.py +++ b/tests/spam_can.py @@ -2,6 +2,7 @@ import os import random +from opendbc.safety import Safety from panda import Panda def get_test_string(): @@ -9,7 +10,7 @@ def get_test_string(): if __name__ == "__main__": p = Panda() - p.set_safety_mode(Panda.SAFETY_ALLOUTPUT) + p.set_safety_mode(Safety.SAFETY_ALLOUTPUT) print("Spamming all buses...") while True: diff --git a/tests/standalone_test.py b/tests/standalone_test.py index 7ec5559697..8c6ebaa978 100755 --- a/tests/standalone_test.py +++ b/tests/standalone_test.py @@ -2,6 +2,7 @@ import struct import time +from opendbc.safety import Safety from panda import Panda if __name__ == "__main__": @@ -15,7 +16,7 @@ t2 = time.time() print("100 requests took %.2f ms" % ((t2 - t1) * 1000)) - p.set_safety_mode(Panda.SAFETY_ALLOUTPUT) + p.set_safety_mode(Safety.SAFETY_ALLOUTPUT) a = 0 while True: diff --git a/tests/usbprotocol/test_comms.py b/tests/usbprotocol/test_comms.py index e649bdaeab..24373ebcfc 100755 --- a/tests/usbprotocol/test_comms.py +++ b/tests/usbprotocol/test_comms.py @@ -2,7 +2,8 @@ import random import unittest -from panda import Panda, DLC_TO_LEN, USBPACKET_MAX_SIZE, pack_can_buffer, unpack_can_buffer +from opendbc.safety import Safety +from panda import DLC_TO_LEN, USBPACKET_MAX_SIZE, pack_can_buffer, unpack_can_buffer from panda.tests.libpanda import libpanda_py lpp = libpanda_py.libpanda @@ -101,7 +102,7 @@ def test_comms_reset_tx(self): def test_can_send_usb(self): - lpp.set_safety_hooks(Panda.SAFETY_ALLOUTPUT, 0) + lpp.set_safety_hooks(Safety.SAFETY_ALLOUTPUT, 0) for bus in range(3): with self.subTest(bus=bus):