3
3
import numpy as np
4
4
from panda import Panda
5
5
from panda .tests .safety import libpandasafety_py
6
- from panda .tests .safety .common import StdTest , make_msg , interceptor_msg , \
7
- MAX_WRONG_COUNTERS , UNSAFE_MODE
6
+ from panda .tests .safety .common import StdTest , make_msg , MAX_WRONG_COUNTERS , UNSAFE_MODE
8
7
9
8
MAX_BRAKE = 255
10
9
11
- INTERCEPTOR_THRESHOLD = 328
10
+ INTERCEPTOR_THRESHOLD = 344
12
11
N_TX_MSGS = [[0xE4 , 0 ], [0x194 , 0 ], [0x1FA , 0 ], [0x200 , 0 ], [0x30C , 0 ], [0x33D , 0 ]]
13
12
BH_TX_MSGS = [[0xE4 , 0 ], [0x296 , 1 ], [0x33D , 0 ]] # Bosch Harness
14
13
BG_TX_MSGS = [[0xE4 , 2 ], [0x296 , 0 ], [0x33D , 2 ]] # Bosch Giraffe
18
17
HONDA_BG_HW = 1
19
18
HONDA_BH_HW = 2
20
19
20
+ # Honda gas gains are the different
21
+ def honda_interceptor_msg (gas , addr ):
22
+ to_send = make_msg (0 , addr , 6 )
23
+ gas2 = gas * 2
24
+ to_send [0 ].RDLR = ((gas & 0xff ) << 8 ) | ((gas & 0xff00 ) >> 8 ) | \
25
+ ((gas2 & 0xff ) << 24 ) | ((gas2 & 0xff00 ) << 8 )
26
+ return to_send
27
+
21
28
def honda_checksum (msg , addr , len_msg ):
22
29
checksum = 0
23
30
while addr > 0 :
@@ -170,11 +177,11 @@ def test_prev_gas(self):
170
177
self .assertTrue (self .safety .get_gas_pressed_prev ())
171
178
172
179
def test_prev_gas_interceptor (self ):
173
- self .safety .safety_rx_hook (interceptor_msg (0x0 , 0x201 ))
180
+ self .safety .safety_rx_hook (honda_interceptor_msg (0x0 , 0x201 ))
174
181
self .assertFalse (self .safety .get_gas_interceptor_prev ())
175
- self .safety .safety_rx_hook (interceptor_msg (0x1000 , 0x201 ))
182
+ self .safety .safety_rx_hook (honda_interceptor_msg (0x1000 , 0x201 ))
176
183
self .assertTrue (self .safety .get_gas_interceptor_prev ())
177
- self .safety .safety_rx_hook (interceptor_msg (0x0 , 0x201 ))
184
+ self .safety .safety_rx_hook (honda_interceptor_msg (0x0 , 0x201 ))
178
185
self .safety .set_gas_interceptor_detected (False )
179
186
180
187
def test_disengage_on_gas (self ):
@@ -199,31 +206,31 @@ def test_allow_engage_with_gas_pressed(self):
199
206
200
207
def test_disengage_on_gas_interceptor (self ):
201
208
for g in range (0 , 0x1000 ):
202
- self .safety .safety_rx_hook (interceptor_msg (0 , 0x201 ))
209
+ self .safety .safety_rx_hook (honda_interceptor_msg (0 , 0x201 ))
203
210
self .safety .set_controls_allowed (True )
204
- self .safety .safety_rx_hook (interceptor_msg (g , 0x201 ))
211
+ self .safety .safety_rx_hook (honda_interceptor_msg (g , 0x201 ))
205
212
remain_enabled = g <= INTERCEPTOR_THRESHOLD
206
213
self .assertEqual (remain_enabled , self .safety .get_controls_allowed ())
207
- self .safety .safety_rx_hook (interceptor_msg (0 , 0x201 ))
214
+ self .safety .safety_rx_hook (honda_interceptor_msg (0 , 0x201 ))
208
215
self .safety .set_gas_interceptor_detected (False )
209
216
210
217
def test_unsafe_mode_no_disengage_on_gas_interceptor (self ):
211
218
self .safety .set_controls_allowed (True )
212
219
self .safety .set_unsafe_mode (UNSAFE_MODE .DISABLE_DISENGAGE_ON_GAS )
213
220
for g in range (0 , 0x1000 ):
214
- self .safety .safety_rx_hook (interceptor_msg (g , 0x201 ))
221
+ self .safety .safety_rx_hook (honda_interceptor_msg (g , 0x201 ))
215
222
self .assertTrue (self .safety .get_controls_allowed ())
216
- self .safety .safety_rx_hook (interceptor_msg (0 , 0x201 ))
223
+ self .safety .safety_rx_hook (honda_interceptor_msg (0 , 0x201 ))
217
224
self .safety .set_gas_interceptor_detected (False )
218
225
self .safety .set_unsafe_mode (UNSAFE_MODE .DEFAULT )
219
226
self .safety .set_controls_allowed (False )
220
227
221
228
def test_allow_engage_with_gas_interceptor_pressed (self ):
222
- self .safety .safety_rx_hook (interceptor_msg (0x1000 , 0x201 ))
229
+ self .safety .safety_rx_hook (honda_interceptor_msg (0x1000 , 0x201 ))
223
230
self .safety .set_controls_allowed (1 )
224
- self .safety .safety_rx_hook (interceptor_msg (0x1000 , 0x201 ))
231
+ self .safety .safety_rx_hook (honda_interceptor_msg (0x1000 , 0x201 ))
225
232
self .assertTrue (self .safety .get_controls_allowed ())
226
- self .safety .safety_rx_hook (interceptor_msg (0 , 0x201 ))
233
+ self .safety .safety_rx_hook (honda_interceptor_msg (0 , 0x201 ))
227
234
self .safety .set_gas_interceptor_detected (False )
228
235
229
236
def test_brake_safety_check (self ):
@@ -252,7 +259,7 @@ def test_gas_interceptor_safety_check(self):
252
259
send = True
253
260
else :
254
261
send = gas == 0
255
- self .assertEqual (send , self .safety .safety_tx_hook (interceptor_msg (gas , 0x200 )))
262
+ self .assertEqual (send , self .safety .safety_tx_hook (honda_interceptor_msg (gas , 0x200 )))
256
263
257
264
def test_steer_safety_check (self ):
258
265
self .safety .set_controls_allowed (0 )
@@ -359,22 +366,22 @@ def test_tx_hook_on_pedal_pressed(self):
359
366
self .safety .safety_rx_hook (self ._gas_msg (1 ))
360
367
elif pedal == 'interceptor' :
361
368
# gas_interceptor_prev > INTERCEPTOR_THRESHOLD
362
- self .safety .safety_rx_hook (interceptor_msg (INTERCEPTOR_THRESHOLD + 1 , 0x201 ))
363
- self .safety .safety_rx_hook (interceptor_msg (INTERCEPTOR_THRESHOLD + 1 , 0x201 ))
369
+ self .safety .safety_rx_hook (honda_interceptor_msg (INTERCEPTOR_THRESHOLD + 1 , 0x201 ))
370
+ self .safety .safety_rx_hook (honda_interceptor_msg (INTERCEPTOR_THRESHOLD + 1 , 0x201 ))
364
371
365
372
self .safety .set_controls_allowed (1 )
366
373
hw = self .safety .get_honda_hw ()
367
374
if hw == HONDA_N_HW :
368
375
self .safety .set_honda_fwd_brake (False )
369
376
self .assertFalse (self .safety .safety_tx_hook (self ._send_brake_msg (MAX_BRAKE )))
370
- self .assertFalse (self .safety .safety_tx_hook (interceptor_msg (INTERCEPTOR_THRESHOLD , 0x200 )))
377
+ self .assertFalse (self .safety .safety_tx_hook (honda_interceptor_msg (INTERCEPTOR_THRESHOLD , 0x200 )))
371
378
self .assertFalse (self .safety .safety_tx_hook (self ._send_steer_msg (0x1000 )))
372
379
373
380
# reset status
374
381
self .safety .set_controls_allowed (0 )
375
382
self .safety .safety_tx_hook (self ._send_brake_msg (0 ))
376
383
self .safety .safety_tx_hook (self ._send_steer_msg (0 ))
377
- self .safety .safety_tx_hook (interceptor_msg (0 , 0x200 ))
384
+ self .safety .safety_tx_hook (honda_interceptor_msg (0 , 0x200 ))
378
385
if pedal == 'brake' :
379
386
self .safety .safety_rx_hook (self ._speed_msg (0 ))
380
387
self .safety .safety_rx_hook (self ._brake_msg (0 ))
@@ -397,23 +404,23 @@ def test_tx_hook_on_pedal_pressed_on_unsafe_gas_mode(self):
397
404
allow_ctrl = True
398
405
elif pedal == 'interceptor' :
399
406
# gas_interceptor_prev > INTERCEPTOR_THRESHOLD
400
- self .safety .safety_rx_hook (interceptor_msg (INTERCEPTOR_THRESHOLD + 1 , 0x201 ))
401
- self .safety .safety_rx_hook (interceptor_msg (INTERCEPTOR_THRESHOLD + 1 , 0x201 ))
407
+ self .safety .safety_rx_hook (honda_interceptor_msg (INTERCEPTOR_THRESHOLD + 1 , 0x201 ))
408
+ self .safety .safety_rx_hook (honda_interceptor_msg (INTERCEPTOR_THRESHOLD + 1 , 0x201 ))
402
409
allow_ctrl = True
403
410
404
411
self .safety .set_controls_allowed (1 )
405
412
hw = self .safety .get_honda_hw ()
406
413
if hw == HONDA_N_HW :
407
414
self .safety .set_honda_fwd_brake (False )
408
415
self .assertEqual (allow_ctrl , self .safety .safety_tx_hook (self ._send_brake_msg (MAX_BRAKE )))
409
- self .assertEqual (allow_ctrl , self .safety .safety_tx_hook (interceptor_msg (INTERCEPTOR_THRESHOLD , 0x200 )))
416
+ self .assertEqual (allow_ctrl , self .safety .safety_tx_hook (honda_interceptor_msg (INTERCEPTOR_THRESHOLD , 0x200 )))
410
417
self .assertEqual (allow_ctrl , self .safety .safety_tx_hook (self ._send_steer_msg (0x1000 )))
411
418
# reset status
412
419
self .safety .set_controls_allowed (0 )
413
420
self .safety .set_unsafe_mode (UNSAFE_MODE .DEFAULT )
414
421
self .safety .safety_tx_hook (self ._send_brake_msg (0 ))
415
422
self .safety .safety_tx_hook (self ._send_steer_msg (0 ))
416
- self .safety .safety_tx_hook (interceptor_msg (0 , 0x200 ))
423
+ self .safety .safety_tx_hook (honda_interceptor_msg (0 , 0x200 ))
417
424
if pedal == 'brake' :
418
425
self .safety .safety_rx_hook (self ._speed_msg (0 ))
419
426
self .safety .safety_rx_hook (self ._brake_msg (0 ))
0 commit comments