mirror of https://github.com/commaai/panda.git
use class inheritance to define test specific safety variables
This commit is contained in:
parent
97e25284ee
commit
734efd96f3
|
@ -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,11 @@ def package_can_msg(msg):
|
|||
|
||||
return ret
|
||||
|
||||
|
||||
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,13 +41,26 @@ class CANPackerPanda(CANPacker):
|
|||
msg = fix_checksum(msg)
|
||||
return package_can_msg(msg)
|
||||
|
||||
|
||||
class PandaSafetyTestBase(unittest.TestCase):
|
||||
|
||||
SAFETY_PARAM = 0
|
||||
|
||||
@classmethod
|
||||
def setUpClass(cls):
|
||||
if cls.__name__ == "PandaSafetyTestBase":
|
||||
cls.safety = None
|
||||
raise unittest.SkipTest
|
||||
|
||||
def setUp(self):
|
||||
self.packer = CANPackerPanda(self.DBC)
|
||||
self.safety = libpandasafety_py.libpandasafety
|
||||
self.safety.set_safety_hooks(self.SAFETY_MODE, self.SAFETY_PARAM)
|
||||
if 'Honda' in self.__class__.__name__:
|
||||
self.safety._init_tests_honda()
|
||||
else:
|
||||
self.safety.init_tests()
|
||||
|
||||
def _rx(self, msg):
|
||||
return self.safety.safety_rx_hook(msg)
|
||||
|
||||
|
|
|
@ -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();
|
||||
|
|
|
@ -288,18 +288,15 @@ class TestHondaNidecSafetyBase(HondaBase):
|
|||
|
||||
INTERCEPTOR_THRESHOLD = 344
|
||||
|
||||
DBC = "honda_civic_touring_2016_can_generated"
|
||||
SAFETY_MODE = Panda.SAFETY_HONDA_NIDEC
|
||||
|
||||
@classmethod
|
||||
def setUpClass(cls):
|
||||
if cls.__name__ == "TestHondaNidecSafetyBase":
|
||||
cls.safety = None
|
||||
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)
|
||||
self.safety.init_tests_honda()
|
||||
|
||||
# Honda gas gains are the different
|
||||
def _interceptor_msg(self, gas, addr):
|
||||
to_send = make_msg(0, addr, 6)
|
||||
|
@ -398,11 +395,9 @@ 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)
|
||||
self.safety.init_tests_honda()
|
||||
|
||||
DBC = "acura_ilx_2016_can_generated"
|
||||
SAFETY_PARAM = Panda.FLAG_HONDA_NIDEC_ALT
|
||||
|
||||
def _acc_state_msg(self, main_on):
|
||||
values = {"MAIN_ON": main_on, "COUNTER": self.cnt_acc_state % 4}
|
||||
|
@ -419,11 +414,6 @@ 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)
|
||||
self.safety.init_tests_honda()
|
||||
|
||||
def _acc_state_msg(self, main_on):
|
||||
values = {"MAIN_ON": main_on, "COUNTER": self.cnt_acc_state % 4}
|
||||
|
@ -447,6 +437,9 @@ class TestHondaBoschSafetyBase(HondaBase):
|
|||
TX_MSGS = [[0xE4, 0], [0xE5, 0], [0x296, 1], [0x33D, 0], [0x33DA, 0], [0x33DB, 0]]
|
||||
FWD_BLACKLISTED_ADDRS = {2: [0xE4, 0xE5, 0x33D, 0x33DA, 0x33DB]}
|
||||
|
||||
DBC = "honda_accord_2018_can_generated"
|
||||
SAFETY_MODE = Panda.SAFETY_HONDA_BOSCH
|
||||
|
||||
@classmethod
|
||||
def setUpClass(cls):
|
||||
if cls.__name__ == "TestHondaBoschSafetyBase":
|
||||
|
@ -454,10 +447,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
|
||||
|
@ -491,10 +480,6 @@ 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)
|
||||
self.safety.init_tests_honda()
|
||||
|
||||
def test_spam_cancel_safety_check(self):
|
||||
self.safety.set_controls_allowed(0)
|
||||
|
@ -518,10 +503,7 @@ class TestHondaBoschLongSafety(HondaButtonEnableBase, TestHondaBoschSafetyBase):
|
|||
TX_MSGS = [[0xE4, 1], [0x1DF, 1], [0x1EF, 1], [0x1FA, 1], [0x30C, 1], [0x33D, 1], [0x33DA, 1], [0x33DB, 1], [0x39F, 1], [0x18DAB0F1, 1]]
|
||||
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()
|
||||
SAFETY_PARAM = Panda.FLAG_HONDA_BOSCH_LONG
|
||||
|
||||
def _send_gas_brake_msg(self, gas, accel):
|
||||
values = {
|
||||
|
|
|
@ -33,11 +33,9 @@ class TestToyotaSafety(common.PandaSafetyTest, common.InterceptorSafetyTest,
|
|||
TORQUE_MEAS_TOLERANCE = 1 # toyota safety adds one to be conversative for rounding
|
||||
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()
|
||||
DBC = 'toyota_nodsu_pt_generated'
|
||||
SAFETY_MODE = Panda.SAFETY_TOYOTA
|
||||
SAFETY_PARAM = 73
|
||||
|
||||
def _torque_meas_msg(self, torque):
|
||||
values = {"STEER_TORQUE_EPS": (torque/self.EPS_SCALE)}
|
||||
|
|
Loading…
Reference in New Issue