Skip to content

Commit 0401f64

Browse files
committed
Add tests for ALT_BUTTONS w/ HDA2.
1 parent d0eb7b6 commit 0401f64

File tree

1 file changed

+57
-70
lines changed

1 file changed

+57
-70
lines changed

tests/safety/test_hyundai_canfd.py

Lines changed: 57 additions & 70 deletions
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,7 @@
99

1010

1111
class TestHyundaiCanfdBase(HyundaiButtonBase, common.PandaCarSafetyTest, common.DriverTorqueSteeringSafetyTest, common.SteerRequestCutSafetyTest):
12-
12+
SAFETY_PARAM = 0
1313
TX_MSGS = [[0x50, 0], [0x1CF, 1], [0x2A4, 0]]
1414
STANDSTILL_THRESHOLD = 12 # 0.375 kph
1515
FWD_BLACKLISTED_ADDRS = {2: [0x50, 0x2a4]}
@@ -45,6 +45,12 @@ def setUpClass(cls):
4545
cls.safety = None
4646
raise unittest.SkipTest
4747

48+
def setUp(self):
49+
self.packer = CANPackerPanda("hyundai_canfd")
50+
self.safety = libpanda_py.libpanda
51+
self.safety.set_safety_hooks(Panda.SAFETY_HYUNDAI_CANFD, self.SAFETY_PARAM)
52+
self.safety.init_tests()
53+
4854
def _torque_driver_msg(self, torque):
4955
values = {"STEERING_COL_TORQUE": torque}
5056
return self.packer.make_can_msg_panda("MDPS", self.PT_BUS, values)
@@ -79,6 +85,29 @@ def _button_msg(self, buttons, main_button=0, bus=None):
7985
return self.packer.make_can_msg_panda("CRUISE_BUTTONS", bus, values)
8086

8187

88+
class HyundaiCanfdAltButtonsMixin:
89+
@classmethod
90+
def setUpClass(cls):
91+
super().setUpClass()
92+
cls.SAFETY_PARAM |= Panda.FLAG_HYUNDAI_CANFD_ALT_BUTTONS
93+
94+
def _button_msg(self, buttons, main_button=0, bus=1):
95+
values = {
96+
"CRUISE_BUTTONS": buttons,
97+
"ADAPTIVE_CRUISE_MAIN_BTN": main_button,
98+
}
99+
return self.packer.make_can_msg_panda("CRUISE_BUTTONS_ALT", self.PT_BUS, values)
100+
101+
def test_button_sends(self):
102+
"""
103+
No button send allowed with alt buttons.
104+
"""
105+
for enabled in (True, False):
106+
for btn in range(8):
107+
self.safety.set_controls_allowed(enabled)
108+
self.assertFalse(self._tx(self._button_msg(btn)))
109+
110+
82111
class TestHyundaiCanfdHDA1Base(TestHyundaiCanfdBase):
83112

84113
TX_MSGS = [[0x12A, 0], [0x1A0, 1], [0x1CF, 0], [0x1E0, 0]]
@@ -88,7 +117,6 @@ class TestHyundaiCanfdHDA1Base(TestHyundaiCanfdBase):
88117

89118
STEER_MSG = "LFA"
90119
BUTTONS_TX_BUS = 2
91-
SAFETY_PARAM: int
92120

93121
@classmethod
94122
def setUpClass(cls):
@@ -98,12 +126,6 @@ def setUpClass(cls):
98126
cls.safety = None
99127
raise unittest.SkipTest
100128

101-
def setUp(self):
102-
self.packer = CANPackerPanda("hyundai_canfd")
103-
self.safety = libpanda_py.libpanda
104-
self.safety.set_safety_hooks(Panda.SAFETY_HYUNDAI_CANFD, self.SAFETY_PARAM)
105-
self.safety.init_tests()
106-
107129

108130
@parameterized_class([
109131
# Radar SCC, test with long flag to ensure flag is not respected until it is supported
@@ -129,71 +151,45 @@ class TestHyundaiCanfdHDA1(TestHyundaiCanfdHDA1Base):
129151
{"GAS_MSG": ("ACCELERATOR", "ACCELERATOR_PEDAL"), "SCC_BUS": 2, "SAFETY_PARAM": Panda.FLAG_HYUNDAI_EV_GAS | Panda.FLAG_HYUNDAI_CAMERA_SCC},
130152
{"GAS_MSG": ("ACCELERATOR_ALT", "ACCELERATOR_PEDAL"), "SCC_BUS": 2, "SAFETY_PARAM": Panda.FLAG_HYUNDAI_HYBRID_GAS | Panda.FLAG_HYUNDAI_CAMERA_SCC},
131153
])
132-
class TestHyundaiCanfdHDA1AltButtons(TestHyundaiCanfdHDA1Base):
133-
134-
SAFETY_PARAM: int
135-
136-
def setUp(self):
137-
self.packer = CANPackerPanda("hyundai_canfd")
138-
self.safety = libpanda_py.libpanda
139-
self.safety.set_safety_hooks(Panda.SAFETY_HYUNDAI_CANFD, Panda.FLAG_HYUNDAI_CANFD_ALT_BUTTONS | self.SAFETY_PARAM)
140-
self.safety.init_tests()
141-
142-
def _button_msg(self, buttons, main_button=0, bus=1):
143-
values = {
144-
"CRUISE_BUTTONS": buttons,
145-
"ADAPTIVE_CRUISE_MAIN_BTN": main_button,
146-
}
147-
return self.packer.make_can_msg_panda("CRUISE_BUTTONS_ALT", self.PT_BUS, values)
148-
149-
def test_button_sends(self):
150-
"""
151-
No button send allowed with alt buttons.
152-
"""
153-
for enabled in (True, False):
154-
for btn in range(8):
155-
self.safety.set_controls_allowed(enabled)
156-
self.assertFalse(self._tx(self._button_msg(btn)))
154+
class TestHyundaiCanfdHDA1AltButtons(HyundaiCanfdAltButtonsMixin, TestHyundaiCanfdHDA1Base):
155+
pass
157156

158157

159-
class TestHyundaiCanfdHDA2EV(TestHyundaiCanfdBase):
158+
# ********************* HDA2 **********************
160159

161-
TX_MSGS = [[0x50, 0], [0x1CF, 1], [0x2A4, 0]]
162-
RELAY_MALFUNCTION_ADDRS = {0: (0x50,)} # LKAS
163-
FWD_BLACKLISTED_ADDRS = {2: [0x50, 0x2a4]}
164-
FWD_BUS_LOOKUP = {0: 2, 2: 0}
165160

161+
# TODO: Handle ICE and HEV configurations.
162+
class TestHyundaiCanfdHDA2EVBase(TestHyundaiCanfdBase):
166163
PT_BUS = 1
167164
SCC_BUS = 1
168-
STEER_MSG = "LKAS"
169165
GAS_MSG = ("ACCELERATOR", "ACCELERATOR_PEDAL")
166+
FWD_BUS_LOOKUP = {0: 2, 2: 0}
170167

171-
def setUp(self):
172-
self.packer = CANPackerPanda("hyundai_canfd")
173-
self.safety = libpanda_py.libpanda
174-
self.safety.set_safety_hooks(Panda.SAFETY_HYUNDAI_CANFD, Panda.FLAG_HYUNDAI_CANFD_HDA2 | Panda.FLAG_HYUNDAI_EV_GAS)
175-
self.safety.init_tests()
176168

169+
class TestHyundaiCanfdHDA2EV(TestHyundaiCanfdHDA2EVBase):
170+
TX_MSGS = [[0x50, 0], [0x1CF, 1], [0x2A4, 0]]
171+
RELAY_MALFUNCTION_ADDRS = {0: (0x50,)}
172+
FWD_BLACKLISTED_ADDRS = {2: [0x50, 0x2a4]}
173+
STEER_MSG = "LKAS"
174+
SAFETY_PARAM = Panda.FLAG_HYUNDAI_CANFD_HDA2 | Panda.FLAG_HYUNDAI_EV_GAS
177175

178-
# TODO: Handle ICE and HEV configurations once we see cars that use the new messages
179-
class TestHyundaiCanfdHDA2EVAltSteering(TestHyundaiCanfdBase):
180176

177+
class TestHyundaiCanfdHDA2EVAltSteering(TestHyundaiCanfdHDA2EVBase):
181178
TX_MSGS = [[0x110, 0], [0x1CF, 1], [0x362, 0]]
182-
RELAY_MALFUNCTION_ADDRS = {0: (0x110,)} # LKAS_ALT
179+
RELAY_MALFUNCTION_ADDRS = {0: (0x110,)}
183180
FWD_BLACKLISTED_ADDRS = {2: [0x110, 0x362]}
184-
FWD_BUS_LOOKUP = {0: 2, 2: 0}
185-
186-
PT_BUS = 1
187-
SCC_BUS = 1
188181
STEER_MSG = "LKAS_ALT"
189-
GAS_MSG = ("ACCELERATOR", "ACCELERATOR_PEDAL")
182+
SAFETY_PARAM = Panda.FLAG_HYUNDAI_CANFD_HDA2 | Panda.FLAG_HYUNDAI_EV_GAS | Panda.FLAG_HYUNDAI_CANFD_HDA2_ALT_STEERING
190183

191-
def setUp(self):
192-
self.packer = CANPackerPanda("hyundai_canfd")
193-
self.safety = libpanda_py.libpanda
194-
self.safety.set_safety_hooks(Panda.SAFETY_HYUNDAI_CANFD, Panda.FLAG_HYUNDAI_CANFD_HDA2 | Panda.FLAG_HYUNDAI_EV_GAS |
195-
Panda.FLAG_HYUNDAI_CANFD_HDA2_ALT_STEERING)
196-
self.safety.init_tests()
184+
185+
class TestHyundaiCanfdHDA2EVAltButtons(HyundaiCanfdAltButtonsMixin, TestHyundaiCanfdHDA2EV):
186+
pass
187+
188+
class TestHyundaiCanfdHDA2EVAltSteeringAltButtons(HyundaiCanfdAltButtonsMixin, TestHyundaiCanfdHDA2EVAltSteering):
189+
pass
190+
191+
192+
# ********************* LONG **********************
197193

198194

199195
class TestHyundaiCanfdHDA2LongEV(HyundaiLongitudinalBase, TestHyundaiCanfdHDA2EV):
@@ -209,12 +205,7 @@ class TestHyundaiCanfdHDA2LongEV(HyundaiLongitudinalBase, TestHyundaiCanfdHDA2EV
209205
STEER_MSG = "LFA"
210206
GAS_MSG = ("ACCELERATOR", "ACCELERATOR_PEDAL")
211207
STEER_BUS = 1
212-
213-
def setUp(self):
214-
self.packer = CANPackerPanda("hyundai_canfd")
215-
self.safety = libpanda_py.libpanda
216-
self.safety.set_safety_hooks(Panda.SAFETY_HYUNDAI_CANFD, Panda.FLAG_HYUNDAI_CANFD_HDA2 | Panda.FLAG_HYUNDAI_LONG | Panda.FLAG_HYUNDAI_EV_GAS)
217-
self.safety.init_tests()
208+
SAFETY_PARAM = Panda.FLAG_HYUNDAI_CANFD_HDA2 | Panda.FLAG_HYUNDAI_LONG | Panda.FLAG_HYUNDAI_EV_GAS
218209

219210
def _accel_msg(self, accel, aeb_req=False, aeb_decel=0):
220211
values = {
@@ -246,16 +237,12 @@ class TestHyundaiCanfdHDA1Long(HyundaiLongitudinalBase, TestHyundaiCanfdHDA1Base
246237

247238
@classmethod
248239
def setUpClass(cls):
240+
super().setUpClass()
241+
cls.SAFETY_PARAM |= Panda.FLAG_HYUNDAI_CAMERA_SCC
249242
if cls.__name__ == "TestHyundaiCanfdHDA1Long":
250243
cls.safety = None
251244
raise unittest.SkipTest
252245

253-
def setUp(self):
254-
self.packer = CANPackerPanda("hyundai_canfd")
255-
self.safety = libpanda_py.libpanda
256-
self.safety.set_safety_hooks(Panda.SAFETY_HYUNDAI_CANFD, Panda.FLAG_HYUNDAI_CAMERA_SCC | self.SAFETY_PARAM)
257-
self.safety.init_tests()
258-
259246
def _accel_msg(self, accel, aeb_req=False, aeb_decel=0):
260247
values = {
261248
"aReqRaw": accel,

0 commit comments

Comments
 (0)