mirror of
https://github.com/commaai/panda.git
synced 2026-06-12 23:27:23 +08:00
common function to set up each test
fix honda
This commit is contained in:
@@ -10,12 +10,14 @@ from panda.tests.safety import libpandasafety_py
|
||||
|
||||
MAX_WRONG_COUNTERS = 5
|
||||
|
||||
|
||||
class ALTERNATIVE_EXPERIENCE:
|
||||
DEFAULT = 0
|
||||
DISABLE_DISENGAGE_ON_GAS = 1
|
||||
DISABLE_STOCK_AEB = 2
|
||||
RAISE_LONGITUDINAL_LIMITS_TO_ISO_MAX = 8
|
||||
|
||||
|
||||
def package_can_msg(msg):
|
||||
addr, _, dat, bus = msg
|
||||
ret = libpandasafety_py.ffi.new('CANPacket_t *')
|
||||
@@ -27,9 +29,18 @@ def package_can_msg(msg):
|
||||
|
||||
return ret
|
||||
|
||||
|
||||
def set_up_test(cls, dbc, safety_mode, safety_param):
|
||||
cls.packer = CANPackerPanda(dbc)
|
||||
cls.safety = libpandasafety_py.libpandasafety
|
||||
cls.safety.set_safety_hooks(safety_mode, safety_param)
|
||||
cls.safety.init_tests_honda()
|
||||
|
||||
|
||||
def make_msg(bus, addr, length=8):
|
||||
return package_can_msg([addr, 0, b'\x00' * length, bus])
|
||||
|
||||
|
||||
class CANPackerPanda(CANPacker):
|
||||
def make_can_msg_panda(self, name_or_addr, bus, values, counter=-1, fix_checksum=None):
|
||||
msg = self.make_can_msg(name_or_addr, bus, values, counter=-1)
|
||||
@@ -37,6 +48,7 @@ class CANPackerPanda(CANPacker):
|
||||
msg = fix_checksum(msg)
|
||||
return package_can_msg(msg)
|
||||
|
||||
|
||||
class PandaSafetyTestBase(unittest.TestCase):
|
||||
@classmethod
|
||||
def setUpClass(cls):
|
||||
|
||||
@@ -56,7 +56,7 @@ void set_timer(uint32_t t);
|
||||
int safety_rx_hook(CANPacket_t *to_send);
|
||||
int safety_tx_hook(CANPacket_t *to_push);
|
||||
int safety_fwd_hook(int bus_num, CANPacket_t *to_fwd);
|
||||
int set_safety_hooks(uint16_t mode, int16_t param);
|
||||
int set_safety_hooks(uint16_t mode, int16_t param);
|
||||
|
||||
void safety_tick_current_rx_checks();
|
||||
bool addr_checks_valid();
|
||||
|
||||
@@ -1,9 +1,9 @@
|
||||
#!/usr/bin/env python3
|
||||
import unittest
|
||||
from panda import Panda
|
||||
from panda.tests.safety import libpandasafety_py
|
||||
import panda.tests.safety.common as common
|
||||
from panda.tests.safety.common import CANPackerPanda
|
||||
from panda.tests.safety.common import set_up_test
|
||||
|
||||
|
||||
class TestChryslerSafety(common.PandaSafetyTest, common.TorqueSteeringSafetyTest):
|
||||
TX_MSGS = [[571, 0], [658, 0], [678, 0]]
|
||||
@@ -26,10 +26,7 @@ class TestChryslerSafety(common.PandaSafetyTest, common.TorqueSteeringSafetyTest
|
||||
cnt_brake = 0
|
||||
|
||||
def setUp(self):
|
||||
self.packer = CANPackerPanda("chrysler_pacifica_2017_hybrid")
|
||||
self.safety = libpandasafety_py.libpandasafety
|
||||
self.safety.set_safety_hooks(Panda.SAFETY_CHRYSLER, 0)
|
||||
self.safety.init_tests()
|
||||
set_up_test(self, "chrysler_pacifica_2017_hybrid", Panda.SAFETY_CHRYSLER, 0)
|
||||
|
||||
def _button_msg(self, cancel):
|
||||
values = {"ACC_CANCEL": cancel}
|
||||
|
||||
@@ -3,9 +3,8 @@ import unittest
|
||||
from typing import Dict, List
|
||||
import numpy as np
|
||||
from panda import Panda
|
||||
from panda.tests.safety import libpandasafety_py
|
||||
import panda.tests.safety.common as common
|
||||
from panda.tests.safety.common import CANPackerPanda, ALTERNATIVE_EXPERIENCE
|
||||
from panda.tests.safety.common import CANPackerPanda, ALTERNATIVE_EXPERIENCE, set_up_test
|
||||
|
||||
MAX_RATE_UP = 7
|
||||
MAX_RATE_DOWN = 17
|
||||
@@ -38,11 +37,8 @@ class TestGmSafety(common.PandaSafetyTest):
|
||||
FWD_BUS_LOOKUP: Dict[int, int] = {}
|
||||
|
||||
def setUp(self):
|
||||
self.packer = CANPackerPanda("gm_global_a_powertrain_generated")
|
||||
set_up_test(self, "gm_global_a_powertrain_generated", Panda.SAFETY_GM, 0)
|
||||
self.packer_chassis = CANPackerPanda("gm_global_a_chassis")
|
||||
self.safety = libpandasafety_py.libpandasafety
|
||||
self.safety.set_safety_hooks(Panda.SAFETY_GM, 0)
|
||||
self.safety.init_tests()
|
||||
|
||||
# override these tests from PandaSafetyTest, GM uses button enable
|
||||
def test_disable_control_allowed_from_cruise(self):
|
||||
|
||||
@@ -4,9 +4,8 @@ import numpy as np
|
||||
from typing import Optional
|
||||
|
||||
from panda import Panda
|
||||
from panda.tests.safety import libpandasafety_py
|
||||
import panda.tests.safety.common as common
|
||||
from panda.tests.safety.common import CANPackerPanda, make_msg, MAX_WRONG_COUNTERS, ALTERNATIVE_EXPERIENCE
|
||||
from panda.tests.safety.common import make_msg, set_up_test, MAX_WRONG_COUNTERS, ALTERNATIVE_EXPERIENCE
|
||||
|
||||
class Btn:
|
||||
NONE = 0
|
||||
@@ -295,9 +294,7 @@ class TestHondaNidecSafetyBase(HondaBase):
|
||||
raise unittest.SkipTest
|
||||
|
||||
def setUp(self):
|
||||
self.packer = CANPackerPanda("honda_civic_touring_2016_can_generated")
|
||||
self.safety = libpandasafety_py.libpandasafety
|
||||
self.safety.set_safety_hooks(Panda.SAFETY_HONDA_NIDEC, 0)
|
||||
set_up_test(self, "honda_civic_touring_2016_can_generated", Panda.SAFETY_HONDA_NIDEC, 0)
|
||||
self.safety.init_tests_honda()
|
||||
|
||||
# Honda gas gains are the different
|
||||
@@ -399,9 +396,7 @@ class TestHondaNidecAltSafety(TestHondaNidecSafety):
|
||||
Covers the Honda Nidec safety mode with alt SCM messages
|
||||
"""
|
||||
def setUp(self):
|
||||
self.packer = CANPackerPanda("acura_ilx_2016_can_generated")
|
||||
self.safety = libpandasafety_py.libpandasafety
|
||||
self.safety.set_safety_hooks(Panda.SAFETY_HONDA_NIDEC, Panda.FLAG_HONDA_NIDEC_ALT)
|
||||
set_up_test(self, "acura_ilx_2016_can_generated", Panda.SAFETY_HONDA_NIDEC, Panda.SAFETY_HONDA_NIDEC)
|
||||
self.safety.init_tests_honda()
|
||||
|
||||
def _acc_state_msg(self, main_on):
|
||||
@@ -420,9 +415,7 @@ class TestHondaNidecAltInterceptorSafety(TestHondaNidecSafety, common.Intercepto
|
||||
Covers the Honda Nidec safety mode with alt SCM messages and gas interceptor
|
||||
"""
|
||||
def setUp(self):
|
||||
self.packer = CANPackerPanda("acura_ilx_2016_can_generated")
|
||||
self.safety = libpandasafety_py.libpandasafety
|
||||
self.safety.set_safety_hooks(Panda.SAFETY_HONDA_NIDEC, Panda.FLAG_HONDA_NIDEC_ALT)
|
||||
set_up_test(self, "acura_ilx_2016_can_generated", Panda.SAFETY_HONDA_NIDEC, Panda.FLAG_HONDA_NIDEC_ALT)
|
||||
self.safety.init_tests_honda()
|
||||
|
||||
def _acc_state_msg(self, main_on):
|
||||
@@ -436,7 +429,6 @@ class TestHondaNidecAltInterceptorSafety(TestHondaNidecSafety, common.Intercepto
|
||||
return self.packer.make_can_msg_panda("SCM_BUTTONS", self.PT_BUS, values)
|
||||
|
||||
|
||||
|
||||
# ********************* Honda Bosch **********************
|
||||
|
||||
|
||||
@@ -454,10 +446,6 @@ class TestHondaBoschSafetyBase(HondaBase):
|
||||
cls.safety = None
|
||||
raise unittest.SkipTest
|
||||
|
||||
def setUp(self):
|
||||
self.packer = CANPackerPanda("honda_accord_2018_can_generated")
|
||||
self.safety = libpandasafety_py.libpandasafety
|
||||
|
||||
def _alt_brake_msg(self, brake):
|
||||
values = {"BRAKE_PRESSED": brake, "COUNTER": self.cnt_brake % 4}
|
||||
self.__class__.cnt_brake += 1
|
||||
@@ -492,8 +480,7 @@ class TestHondaBoschSafety(HondaPcmEnableBase, TestHondaBoschSafetyBase):
|
||||
Covers the Honda Bosch safety mode with stock longitudinal
|
||||
"""
|
||||
def setUp(self):
|
||||
super().setUp()
|
||||
self.safety.set_safety_hooks(Panda.SAFETY_HONDA_BOSCH, 0)
|
||||
set_up_test(self, "honda_accord_2018_can_generated", Panda.SAFETY_HONDA_BOSCH, 0)
|
||||
self.safety.init_tests_honda()
|
||||
|
||||
def test_spam_cancel_safety_check(self):
|
||||
@@ -519,9 +506,7 @@ class TestHondaBoschLongSafety(HondaButtonEnableBase, TestHondaBoschSafetyBase):
|
||||
FWD_BLACKLISTED_ADDRS = {2: [0xE4, 0xE5, 0x33D, 0x33DA, 0x33DB]}
|
||||
|
||||
def setUp(self):
|
||||
super().setUp()
|
||||
self.safety.set_safety_hooks(Panda.SAFETY_HONDA_BOSCH, Panda.FLAG_HONDA_BOSCH_LONG)
|
||||
self.safety.init_tests_honda()
|
||||
set_up_test(self, "honda_accord_2018_can_generated", Panda.SAFETY_HONDA_BOSCH, Panda.FLAG_HONDA_BOSCH_LONG)
|
||||
|
||||
def _send_gas_brake_msg(self, gas, accel):
|
||||
values = {
|
||||
|
||||
@@ -2,9 +2,8 @@
|
||||
import unittest
|
||||
import numpy as np
|
||||
from panda import Panda
|
||||
from panda.tests.safety import libpandasafety_py
|
||||
import panda.tests.safety.common as common
|
||||
from panda.tests.safety.common import CANPackerPanda, make_msg
|
||||
from panda.tests.safety.common import make_msg, set_up_test
|
||||
|
||||
MAX_RATE_UP = 3
|
||||
MAX_RATE_DOWN = 7
|
||||
@@ -19,12 +18,14 @@ DRIVER_TORQUE_FACTOR = 2
|
||||
MAX_ACCEL = 2.0
|
||||
MIN_ACCEL = -3.5
|
||||
|
||||
|
||||
class Buttons:
|
||||
NONE = 0
|
||||
RESUME = 1
|
||||
SET = 2
|
||||
CANCEL = 4
|
||||
|
||||
|
||||
# 4 bit checkusm used in some hyundai messages
|
||||
# lives outside the can packer because we never send this msg
|
||||
def checksum(msg):
|
||||
@@ -73,10 +74,7 @@ class TestHyundaiSafety(common.PandaSafetyTest):
|
||||
cnt_cruise = 0
|
||||
|
||||
def setUp(self):
|
||||
self.packer = CANPackerPanda("hyundai_kia_generic")
|
||||
self.safety = libpandasafety_py.libpandasafety
|
||||
self.safety.set_safety_hooks(Panda.SAFETY_HYUNDAI, 0)
|
||||
self.safety.init_tests()
|
||||
set_up_test(self, "hyundai_kia_generic", Panda.SAFETY_HYUNDAI, 0)
|
||||
|
||||
def _button_msg(self, buttons):
|
||||
values = {"CF_Clu_CruiseSwState": buttons}
|
||||
@@ -225,18 +223,12 @@ class TestHyundaiSafety(common.PandaSafetyTest):
|
||||
|
||||
class TestHyundaiLegacySafety(TestHyundaiSafety):
|
||||
def setUp(self):
|
||||
self.packer = CANPackerPanda("hyundai_kia_generic")
|
||||
self.safety = libpandasafety_py.libpandasafety
|
||||
self.safety.set_safety_hooks(Panda.SAFETY_HYUNDAI_LEGACY, 0)
|
||||
self.safety.init_tests()
|
||||
set_up_test(self, "hyundai_kia_generic", Panda.SAFETY_HYUNDAI_LEGACY, 0)
|
||||
|
||||
|
||||
class TestHyundaiLegacySafetyEV(TestHyundaiSafety):
|
||||
def setUp(self):
|
||||
self.packer = CANPackerPanda("hyundai_kia_generic")
|
||||
self.safety = libpandasafety_py.libpandasafety
|
||||
self.safety.set_safety_hooks(Panda.SAFETY_HYUNDAI_LEGACY, 1)
|
||||
self.safety.init_tests()
|
||||
set_up_test(self, "hyundai_kia_generic", Panda.SAFETY_HYUNDAI_LEGACY, 1)
|
||||
|
||||
def _user_gas_msg(self, gas):
|
||||
values = {"Accel_Pedal_Pos": gas}
|
||||
@@ -245,24 +237,19 @@ class TestHyundaiLegacySafetyEV(TestHyundaiSafety):
|
||||
|
||||
class TestHyundaiLegacySafetyHEV(TestHyundaiSafety):
|
||||
def setUp(self):
|
||||
self.packer = CANPackerPanda("hyundai_kia_generic")
|
||||
self.safety = libpandasafety_py.libpandasafety
|
||||
self.safety.set_safety_hooks(Panda.SAFETY_HYUNDAI_LEGACY, 2)
|
||||
self.safety.init_tests()
|
||||
set_up_test(self, "hyundai_kia_generic", Panda.SAFETY_HYUNDAI_LEGACY, 2)
|
||||
|
||||
def _user_gas_msg(self, gas):
|
||||
values = {"CR_Vcu_AccPedDep_Pos": gas}
|
||||
return self.packer.make_can_msg_panda("E_EMS11", 0, values, fix_checksum=checksum)
|
||||
|
||||
|
||||
class TestHyundaiLongitudinalSafety(TestHyundaiSafety):
|
||||
TX_MSGS = [[832, 0], [1265, 0], [1157, 0], [1056, 0], [1057, 0], [1290, 0], [905, 0], [1186, 0], [909, 0], [1155, 0], [2000, 0]]
|
||||
cnt_button = 0
|
||||
|
||||
def setUp(self):
|
||||
self.packer = CANPackerPanda("hyundai_kia_generic")
|
||||
self.safety = libpandasafety_py.libpandasafety
|
||||
self.safety.set_safety_hooks(Panda.SAFETY_HYUNDAI, Panda.FLAG_HYUNDAI_LONG)
|
||||
self.safety.init_tests()
|
||||
set_up_test(self, "hyundai_kia_generic", Panda.SAFETY_HYUNDAI, Panda.FLAG_HYUNDAI_LONG)
|
||||
|
||||
# override these tests from PandaSafetyTest, hyundai longitudinal uses button enable
|
||||
def test_disable_control_allowed_from_cruise(self):
|
||||
@@ -357,6 +344,5 @@ class TestHyundaiLongitudinalSafety(TestHyundaiSafety):
|
||||
self.assertTrue(self.safety.get_relay_malfunction())
|
||||
|
||||
|
||||
|
||||
if __name__ == "__main__":
|
||||
unittest.main()
|
||||
|
||||
@@ -1,9 +1,8 @@
|
||||
#!/usr/bin/env python3
|
||||
import unittest
|
||||
from panda import Panda
|
||||
from panda.tests.safety import libpandasafety_py
|
||||
import panda.tests.safety.common as common
|
||||
from panda.tests.safety.common import CANPackerPanda
|
||||
from panda.tests.safety.common import set_up_test
|
||||
|
||||
MAX_RATE_UP = 10
|
||||
MAX_RATE_DOWN = 25
|
||||
@@ -26,10 +25,7 @@ class TestMazdaSafety(common.PandaSafetyTest):
|
||||
FWD_BUS_LOOKUP = {0: 2, 2: 0}
|
||||
|
||||
def setUp(self):
|
||||
self.packer = CANPackerPanda("mazda_2017")
|
||||
self.safety = libpandasafety_py.libpandasafety
|
||||
self.safety.set_safety_hooks(Panda.SAFETY_MAZDA, 0)
|
||||
self.safety.init_tests()
|
||||
set_up_test(self, "mazda_2017", Panda.SAFETY_MAZDA, 0)
|
||||
|
||||
def _torque_meas_msg(self, torque):
|
||||
values = {"STEER_TORQUE_MOTOR": torque}
|
||||
|
||||
@@ -2,9 +2,8 @@
|
||||
import unittest
|
||||
import numpy as np
|
||||
from panda import Panda
|
||||
from panda.tests.safety import libpandasafety_py
|
||||
import panda.tests.safety.common as common
|
||||
from panda.tests.safety.common import CANPackerPanda
|
||||
from panda.tests.safety.common import set_up_test
|
||||
|
||||
ANGLE_DELTA_BP = [0., 5., 15.]
|
||||
ANGLE_DELTA_V = [5., .8, .15] # windup limit
|
||||
@@ -26,10 +25,7 @@ class TestNissanSafety(common.PandaSafetyTest):
|
||||
FWD_BUS_LOOKUP = {0: 2, 2: 0}
|
||||
|
||||
def setUp(self):
|
||||
self.packer = CANPackerPanda("nissan_x_trail_2017")
|
||||
self.safety = libpandasafety_py.libpandasafety
|
||||
self.safety.set_safety_hooks(Panda.SAFETY_NISSAN, 0)
|
||||
self.safety.init_tests()
|
||||
set_up_test(self, "nissan_x_trail_2017", Panda.SAFETY_NISSAN, 0)
|
||||
|
||||
def _angle_meas_msg(self, angle):
|
||||
values = {"STEER_ANGLE": angle}
|
||||
@@ -141,13 +137,11 @@ class TestNissanSafety(common.PandaSafetyTest):
|
||||
tx = self._tx(self._acc_button_cmd(**args))
|
||||
self.assertEqual(tx, should_tx)
|
||||
|
||||
|
||||
class TestNissanLeafSafety(TestNissanSafety):
|
||||
|
||||
def setUp(self):
|
||||
self.packer = CANPackerPanda("nissan_leaf_2018")
|
||||
self.safety = libpandasafety_py.libpandasafety
|
||||
self.safety.set_safety_hooks(Panda.SAFETY_NISSAN, 0)
|
||||
self.safety.init_tests()
|
||||
set_up_test(self, "nissan_leaf_2018", Panda.SAFETY_NISSAN, 0)
|
||||
|
||||
def _user_brake_msg(self, brake):
|
||||
values = {"USER_BRAKE_PRESSED": brake}
|
||||
|
||||
@@ -2,9 +2,8 @@
|
||||
import unittest
|
||||
import numpy as np
|
||||
from panda import Panda
|
||||
from panda.tests.safety import libpandasafety_py
|
||||
import panda.tests.safety.common as common
|
||||
from panda.tests.safety.common import CANPackerPanda
|
||||
from panda.tests.safety.common import set_up_test
|
||||
|
||||
MAX_RATE_UP = 50
|
||||
MAX_RATE_DOWN = 70
|
||||
@@ -32,10 +31,7 @@ class TestSubaruSafety(common.PandaSafetyTest):
|
||||
FWD_BUS_LOOKUP = {0: 2, 2: 0}
|
||||
|
||||
def setUp(self):
|
||||
self.packer = CANPackerPanda("subaru_global_2017_generated")
|
||||
self.safety = libpandasafety_py.libpandasafety
|
||||
self.safety.set_safety_hooks(Panda.SAFETY_SUBARU, 0)
|
||||
self.safety.init_tests()
|
||||
set_up_test(self, "subaru_global_2017_generated", Panda.SAFETY_SUBARU, 0)
|
||||
|
||||
def _set_prev_torque(self, t):
|
||||
self.safety.set_desired_torque_last(t)
|
||||
|
||||
@@ -2,9 +2,8 @@
|
||||
import unittest
|
||||
import numpy as np
|
||||
from panda import Panda
|
||||
from panda.tests.safety import libpandasafety_py
|
||||
import panda.tests.safety.common as common
|
||||
from panda.tests.safety.common import CANPackerPanda
|
||||
from panda.tests.safety.common import set_up_test
|
||||
|
||||
MAX_RATE_UP = 50
|
||||
MAX_RATE_DOWN = 70
|
||||
@@ -28,10 +27,7 @@ class TestSubaruLegacySafety(common.PandaSafetyTest):
|
||||
FWD_BUS_LOOKUP = {0: 2, 2: 0}
|
||||
|
||||
def setUp(self):
|
||||
self.packer = CANPackerPanda("subaru_outback_2015_generated")
|
||||
self.safety = libpandasafety_py.libpandasafety
|
||||
self.safety.set_safety_hooks(Panda.SAFETY_SUBARU_LEGACY, 0)
|
||||
self.safety.init_tests()
|
||||
set_up_test(self, "subaru_outback_2015_generated", Panda.SAFETY_SUBARU_LEGACY, 0)
|
||||
|
||||
def _set_prev_torque(self, t):
|
||||
self.safety.set_desired_torque_last(t)
|
||||
|
||||
@@ -3,8 +3,7 @@ import unittest
|
||||
import numpy as np
|
||||
from panda import Panda
|
||||
import panda.tests.safety.common as common
|
||||
from panda.tests.safety import libpandasafety_py
|
||||
from panda.tests.safety.common import CANPackerPanda
|
||||
from panda.tests.safety.common import set_up_test
|
||||
|
||||
ANGLE_DELTA_BP = [0., 5., 15.]
|
||||
ANGLE_DELTA_V = [5., .8, .15] # windup limit
|
||||
@@ -13,6 +12,7 @@ ANGLE_DELTA_VU = [5., 3.5, 0.4] # unwind limit
|
||||
MAX_ACCEL = 2.0
|
||||
MIN_ACCEL = -3.5
|
||||
|
||||
|
||||
class CONTROL_LEVER_STATE:
|
||||
DN_1ST = 32
|
||||
UP_1ST = 16
|
||||
@@ -22,9 +22,11 @@ class CONTROL_LEVER_STATE:
|
||||
FWD = 1
|
||||
IDLE = 0
|
||||
|
||||
|
||||
def sign(a):
|
||||
return 1 if a > 0 else -1
|
||||
|
||||
|
||||
class TestTeslaSafety(common.PandaSafetyTest):
|
||||
STANDSTILL_THRESHOLD = 0
|
||||
GAS_PRESSED_THRESHOLD = 3
|
||||
@@ -32,7 +34,6 @@ class TestTeslaSafety(common.PandaSafetyTest):
|
||||
FWD_BUS_LOOKUP = {0: 2, 2: 0}
|
||||
|
||||
def setUp(self):
|
||||
self.packer = None
|
||||
raise unittest.SkipTest
|
||||
|
||||
def _angle_meas_msg(self, angle):
|
||||
@@ -89,10 +90,7 @@ class TestTeslaSteeringSafety(TestTeslaSafety):
|
||||
FWD_BLACKLISTED_ADDRS = {2: [0x488]}
|
||||
|
||||
def setUp(self):
|
||||
self.packer = CANPackerPanda("tesla_can")
|
||||
self.safety = libpandasafety_py.libpandasafety
|
||||
self.safety.set_safety_hooks(Panda.SAFETY_TESLA, 0)
|
||||
self.safety.init_tests()
|
||||
set_up_test(self, "tesla_can", Panda.SAFETY_TESLA, 0)
|
||||
|
||||
def test_angle_cmd_when_enabled(self):
|
||||
# when controls are allowed, angle cmd rate limit is enforced
|
||||
@@ -187,16 +185,15 @@ class TestTeslaLongitudinalSafety(TestTeslaSafety):
|
||||
send = (MIN_ACCEL <= min_accel <= MAX_ACCEL) and (MIN_ACCEL <= max_accel <= MAX_ACCEL)
|
||||
self.assertEqual(self._tx(self._long_control_msg(10, acc_val=4, accel_limits=[min_accel, max_accel])), send)
|
||||
|
||||
|
||||
class TestTeslaChassisLongitudinalSafety(TestTeslaLongitudinalSafety):
|
||||
TX_MSGS = [[0x488, 0], [0x45, 0], [0x45, 2], [0x2B9, 0]]
|
||||
RELAY_MALFUNCTION_ADDR = 0x488
|
||||
FWD_BLACKLISTED_ADDRS = {2: [0x2B9, 0x488]}
|
||||
|
||||
def setUp(self):
|
||||
self.packer = CANPackerPanda("tesla_can")
|
||||
self.safety = libpandasafety_py.libpandasafety
|
||||
self.safety.set_safety_hooks(Panda.SAFETY_TESLA, Panda.FLAG_TESLA_LONG_CONTROL)
|
||||
self.safety.init_tests()
|
||||
set_up_test(self, "tesla_can", Panda.SAFETY_TESLA, Panda.FLAG_TESLA_LONG_CONTROL)
|
||||
|
||||
|
||||
class TestTeslaPTLongitudinalSafety(TestTeslaLongitudinalSafety):
|
||||
TX_MSGS = [[0x2BF, 0]]
|
||||
@@ -204,10 +201,8 @@ class TestTeslaPTLongitudinalSafety(TestTeslaLongitudinalSafety):
|
||||
FWD_BLACKLISTED_ADDRS = {2: [0x2BF]}
|
||||
|
||||
def setUp(self):
|
||||
self.packer = CANPackerPanda("tesla_powertrain")
|
||||
self.safety = libpandasafety_py.libpandasafety
|
||||
self.safety.set_safety_hooks(Panda.SAFETY_TESLA, Panda.FLAG_TESLA_LONG_CONTROL | Panda.FLAG_TESLA_POWERTRAIN)
|
||||
self.safety.init_tests()
|
||||
set_up_test(self, "tesla_powertrain", Panda.SAFETY_TESLA, Panda.FLAG_TESLA_LONG_CONTROL | Panda.FLAG_TESLA_POWERTRAIN)
|
||||
|
||||
|
||||
if __name__ == "__main__":
|
||||
unittest.main()
|
||||
|
||||
@@ -3,13 +3,13 @@ import unittest
|
||||
import numpy as np
|
||||
import random
|
||||
from panda import Panda
|
||||
from panda.tests.safety import libpandasafety_py
|
||||
import panda.tests.safety.common as common
|
||||
from panda.tests.safety.common import CANPackerPanda, make_msg, ALTERNATIVE_EXPERIENCE
|
||||
from panda.tests.safety.common import make_msg, set_up_test, ALTERNATIVE_EXPERIENCE
|
||||
|
||||
MAX_ACCEL = 2.0
|
||||
MIN_ACCEL = -3.5
|
||||
|
||||
|
||||
class TestToyotaSafety(common.PandaSafetyTest, common.InterceptorSafetyTest,
|
||||
common.TorqueSteeringSafetyTest):
|
||||
|
||||
@@ -34,10 +34,7 @@ class TestToyotaSafety(common.PandaSafetyTest, common.InterceptorSafetyTest,
|
||||
EPS_SCALE = 0.73
|
||||
|
||||
def setUp(self):
|
||||
self.packer = CANPackerPanda("toyota_nodsu_pt_generated")
|
||||
self.safety = libpandasafety_py.libpandasafety
|
||||
self.safety.set_safety_hooks(Panda.SAFETY_TOYOTA, 73)
|
||||
self.safety.init_tests()
|
||||
set_up_test(self, "toyota_nodsu_pt_generated", Panda.SAFETY_TOYOTA, 73)
|
||||
|
||||
def _torque_meas_msg(self, torque):
|
||||
values = {"STEER_TORQUE_EPS": (torque/self.EPS_SCALE)}
|
||||
|
||||
@@ -2,9 +2,8 @@
|
||||
import unittest
|
||||
import numpy as np
|
||||
from panda import Panda
|
||||
from panda.tests.safety import libpandasafety_py
|
||||
import panda.tests.safety.common as common
|
||||
from panda.tests.safety.common import CANPackerPanda, MAX_WRONG_COUNTERS
|
||||
from panda.tests.safety.common import MAX_WRONG_COUNTERS, set_up_test
|
||||
|
||||
MAX_RATE_UP = 4
|
||||
MAX_RATE_DOWN = 10
|
||||
@@ -253,10 +252,7 @@ class TestVolkswagenMqbStockSafety(TestVolkswagenMqbSafety):
|
||||
FWD_BUS_LOOKUP = {0: 2, 2: 0}
|
||||
|
||||
def setUp(self):
|
||||
self.packer = CANPackerPanda("vw_mqb_2010")
|
||||
self.safety = libpandasafety_py.libpandasafety
|
||||
self.safety.set_safety_hooks(Panda.SAFETY_VOLKSWAGEN_MQB, 0)
|
||||
self.safety.init_tests()
|
||||
set_up_test(self, "vw_mqb_2010", Panda.SAFETY_VOLKSWAGEN_MQB, 0)
|
||||
|
||||
def test_spam_cancel_safety_check(self):
|
||||
self.safety.set_controls_allowed(0)
|
||||
|
||||
@@ -2,9 +2,8 @@
|
||||
import unittest
|
||||
import numpy as np
|
||||
from panda import Panda
|
||||
from panda.tests.safety import libpandasafety_py
|
||||
import panda.tests.safety.common as common
|
||||
from panda.tests.safety.common import CANPackerPanda, MAX_WRONG_COUNTERS
|
||||
from panda.tests.safety.common import MAX_WRONG_COUNTERS, set_up_test
|
||||
|
||||
MAX_RATE_UP = 4
|
||||
MAX_RATE_DOWN = 10
|
||||
@@ -48,10 +47,7 @@ class TestVolkswagenPqSafety(common.PandaSafetyTest):
|
||||
FWD_BUS_LOOKUP = {0: 2, 2: 0}
|
||||
|
||||
def setUp(self):
|
||||
self.packer = CANPackerPanda("vw_golf_mk4")
|
||||
self.safety = libpandasafety_py.libpandasafety
|
||||
self.safety.set_safety_hooks(Panda.SAFETY_VOLKSWAGEN_PQ, 0)
|
||||
self.safety.init_tests()
|
||||
set_up_test(self, "vw_golf_mk4", Panda.SAFETY_VOLKSWAGEN_PQ, 0)
|
||||
|
||||
def _set_prev_torque(self, t):
|
||||
self.safety.set_desired_torque_last(t)
|
||||
|
||||
Reference in New Issue
Block a user