99
1010
1111class 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+
82111class 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
199195class 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