@@ -48,7 +48,8 @@ def _torque_driver_msg(self, torque):
48
48
to_send [0 ].RDLR = ((t & 0x7FF ) << 16 )
49
49
else :
50
50
to_send = make_msg (0 , 0x371 )
51
- to_send [0 ].RDLR = ((t & 0x7FF ) << 29 )
51
+ to_send [0 ].RDLR = (t & 0x7 ) << 29
52
+ to_send [0 ].RDHR = (t >> 3 ) & 0xFF
52
53
return to_send
53
54
54
55
def _torque_msg (self , torque ):
@@ -79,6 +80,11 @@ def _cruise_msg(self, cruise):
79
80
to_send [0 ].RDHR = cruise << 17
80
81
return to_send
81
82
83
+ def _set_torque_driver (self , min_t , max_t ):
84
+ for i in range (0 , 5 ):
85
+ self .safety .safety_rx_hook (self ._torque_driver_msg (min_t ))
86
+ self .safety .safety_rx_hook (self ._torque_driver_msg (max_t ))
87
+
82
88
def test_spam_can_buses (self ):
83
89
test_spam_can_buses (self , TX_MSGS if self .safety .get_subaru_global () else TX_L_MSGS )
84
90
@@ -118,7 +124,7 @@ def test_manually_enable_controls_allowed(self):
118
124
test_manually_enable_controls_allowed (self )
119
125
120
126
def test_non_realtime_limit_up (self ):
121
- self .safety . set_subaru_torque_driver (0 , 0 )
127
+ self ._set_torque_driver (0 , 0 )
122
128
self .safety .set_controls_allowed (True )
123
129
124
130
self ._set_prev_torque (0 )
@@ -133,7 +139,7 @@ def test_non_realtime_limit_up(self):
133
139
self .assertFalse (self .safety .safety_tx_hook (self ._torque_msg (- MAX_RATE_UP - 1 )))
134
140
135
141
def test_non_realtime_limit_down (self ):
136
- self .safety . set_subaru_torque_driver (0 , 0 )
142
+ self ._set_torque_driver (0 , 0 )
137
143
self .safety .set_controls_allowed (True )
138
144
139
145
def test_against_torque_driver (self ):
@@ -142,33 +148,36 @@ def test_against_torque_driver(self):
142
148
for sign in [- 1 , 1 ]:
143
149
for t in np .arange (0 , DRIVER_TORQUE_ALLOWANCE + 1 , 1 ):
144
150
t *= - sign
145
- self .safety . set_subaru_torque_driver (t , t )
151
+ self ._set_torque_driver (t , t )
146
152
self ._set_prev_torque (MAX_STEER * sign )
147
153
self .assertTrue (self .safety .safety_tx_hook (self ._torque_msg (MAX_STEER * sign )))
148
154
149
- self .safety . set_subaru_torque_driver (DRIVER_TORQUE_ALLOWANCE + 1 , DRIVER_TORQUE_ALLOWANCE + 1 )
155
+ self ._set_torque_driver (DRIVER_TORQUE_ALLOWANCE + 1 , DRIVER_TORQUE_ALLOWANCE + 1 )
150
156
self .assertFalse (self .safety .safety_tx_hook (self ._torque_msg (- MAX_STEER )))
151
157
158
+ # arbitrary high driver torque to ensure max steer torque is allowed
159
+ max_driver_torque = int (MAX_STEER / DRIVER_TORQUE_FACTOR + DRIVER_TORQUE_ALLOWANCE + 1 )
160
+
152
161
# spot check some individual cases
153
162
for sign in [- 1 , 1 ]:
154
163
driver_torque = (DRIVER_TORQUE_ALLOWANCE + 10 ) * sign
155
164
torque_desired = (MAX_STEER - 10 * DRIVER_TORQUE_FACTOR ) * sign
156
165
delta = 1 * sign
157
166
self ._set_prev_torque (torque_desired )
158
- self .safety . set_subaru_torque_driver (- driver_torque , - driver_torque )
167
+ self ._set_torque_driver (- driver_torque , - driver_torque )
159
168
self .assertTrue (self .safety .safety_tx_hook (self ._torque_msg (torque_desired )))
160
169
self ._set_prev_torque (torque_desired + delta )
161
- self .safety . set_subaru_torque_driver (- driver_torque , - driver_torque )
170
+ self ._set_torque_driver (- driver_torque , - driver_torque )
162
171
self .assertFalse (self .safety .safety_tx_hook (self ._torque_msg (torque_desired + delta )))
163
172
164
173
self ._set_prev_torque (MAX_STEER * sign )
165
- self .safety . set_subaru_torque_driver ( - MAX_STEER * sign , - MAX_STEER * sign )
174
+ self ._set_torque_driver ( - max_driver_torque * sign , - max_driver_torque * sign )
166
175
self .assertTrue (self .safety .safety_tx_hook (self ._torque_msg ((MAX_STEER - MAX_RATE_DOWN ) * sign )))
167
176
self ._set_prev_torque (MAX_STEER * sign )
168
- self .safety . set_subaru_torque_driver ( - MAX_STEER * sign , - MAX_STEER * sign )
177
+ self ._set_torque_driver ( - max_driver_torque * sign , - max_driver_torque * sign )
169
178
self .assertTrue (self .safety .safety_tx_hook (self ._torque_msg (0 )))
170
179
self ._set_prev_torque (MAX_STEER * sign )
171
- self .safety . set_subaru_torque_driver ( - MAX_STEER * sign , - MAX_STEER * sign )
180
+ self ._set_torque_driver ( - max_driver_torque * sign , - max_driver_torque * sign )
172
181
self .assertFalse (self .safety .safety_tx_hook (self ._torque_msg ((MAX_STEER - MAX_RATE_DOWN + 1 ) * sign )))
173
182
174
183
@@ -178,7 +187,7 @@ def test_realtime_limits(self):
178
187
for sign in [- 1 , 1 ]:
179
188
self .safety .init_tests_subaru ()
180
189
self ._set_prev_torque (0 )
181
- self .safety . set_subaru_torque_driver (0 , 0 )
190
+ self ._set_torque_driver (0 , 0 )
182
191
for t in np .arange (0 , MAX_RT_DELTA , 1 ):
183
192
t *= sign
184
193
self .assertTrue (self .safety .safety_tx_hook (self ._torque_msg (t )))
0 commit comments