Skip to content
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.

Commit f0ccd51

Browse files
committedSep 13, 2024·
Merge Gen2 and Angle together for LKAS Angle test
1 parent 0278357 commit f0ccd51

File tree

2 files changed

+24
-15
lines changed

2 files changed

+24
-15
lines changed
 

‎board/safety/safety_subaru.h

Lines changed: 15 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -105,7 +105,8 @@ const CanMsg SUBARU_GEN2_TX_MSGS[] = {
105105
};
106106

107107
const CanMsg SUBARU_LKAS_ANGLE_TX_MSGS[] = {
108-
SUBARU_COMMON_TX_MSGS(SUBARU_MAIN_BUS, MSG_SUBARU_ES_LKAS_ANGLE)
108+
SUBARU_COMMON_TX_MSGS(SUBARU_ALT_BUS, MSG_SUBARU_ES_LKAS_ANGLE)
109+
SUBARU_COMMON_TX_MSGS(SUBARU_ALT_BUS, MSG_SUBARU_ES_LKAS)
109110
};
110111

111112
const CanMsg SUBARU_GEN2_LONG_TX_MSGS[] = {
@@ -152,7 +153,7 @@ static uint32_t subaru_compute_checksum(const CANPacket_t *to_push) {
152153

153154
static void subaru_rx_hook(const CANPacket_t *to_push) {
154155
const int bus = GET_BUS(to_push);
155-
const int alt_main_bus = subaru_gen2 ? SUBARU_ALT_BUS : SUBARU_MAIN_BUS;
156+
const int alt_main_bus = (subaru_gen2 || subaru_lkas_angle) ? SUBARU_ALT_BUS : SUBARU_MAIN_BUS;
156157
const int stock_lkas_msg = subaru_lkas_angle ? MSG_SUBARU_ES_LKAS_ANGLE : MSG_SUBARU_ES_LKAS;
157158

158159
int addr = GET_ADDR(to_push);
@@ -169,15 +170,18 @@ static void subaru_rx_hook(const CANPacket_t *to_push) {
169170
}
170171

171172
// enter controls on rising edge of ACC, exit controls on ACC off
172-
if ((addr == MSG_SUBARU_CruiseControl) && (bus == alt_main_bus)) {
173-
bool cruise_engaged = GET_BIT(to_push, 41U);
174-
pcm_cruise_check(cruise_engaged);
175-
176-
}
177-
else if (subaru_lkas_angle && (addr == MSG_SUBARU_ES_DashStatus) && (bus == SUBARU_CAM_BUS)) {
173+
if (subaru_lkas_angle) {
178174
// LKAS Angle cars use different message
179-
bool cruise_engaged = GET_BIT(to_push, 36U);
180-
pcm_cruise_check(cruise_engaged);
175+
if ((addr == MSG_SUBARU_ES_DashStatus) && (bus == SUBARU_CAM_BUS)) {
176+
bool cruise_engaged = GET_BIT(to_push, 36U);
177+
pcm_cruise_check(cruise_engaged);
178+
}
179+
} else {
180+
if ((addr == MSG_SUBARU_CruiseControl) && (bus == alt_main_bus)) {
181+
bool cruise_engaged = GET_BIT(to_push, 41U);
182+
pcm_cruise_check(cruise_engaged);
183+
184+
}
181185
}
182186

183187
// update vehicle moving with any non-zero wheel speed
@@ -310,7 +314,7 @@ static safety_config subaru_init(uint16_t param) {
310314

311315
safety_config ret;
312316
if (subaru_lkas_angle) {
313-
ret = BUILD_SAFETY_CFG(subaru_rx_checks, SUBARU_LKAS_ANGLE_TX_MSGS);
317+
ret = BUILD_SAFETY_CFG(subaru_gen2_rx_checks, SUBARU_LKAS_ANGLE_TX_MSGS);
314318
}
315319
else if (subaru_gen2) {
316320
ret = subaru_longitudinal ? BUILD_SAFETY_CFG(subaru_gen2_rx_checks, SUBARU_GEN2_LONG_TX_MSGS) : \

‎tests/safety/test_subaru.py

Lines changed: 9 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -168,6 +168,8 @@ def _torque_cmd_msg(self, torque, steer_req=1):
168168

169169

170170
class TestSubaruAngleSafetyBase(TestSubaruSafetyBase, common.AngleSteeringSafetyTest):
171+
ALT_MAIN_BUS = SUBARU_ALT_BUS
172+
171173
TX_MSGS = lkas_tx_msgs(SUBARU_MAIN_BUS, SubaruMsg.ES_LKAS_ANGLE)
172174
RELAY_MALFUNCTION_ADDRS = {SUBARU_MAIN_BUS: (SubaruMsg.ES_LKAS_ANGLE, SubaruMsg.ES_LKAS,)}
173175
FWD_BLACKLISTED_ADDRS = fwd_blacklisted_addr(SubaruMsg.ES_LKAS_ANGLE)
@@ -206,15 +208,18 @@ class TestSubaruGen2TorqueSafetyBase(TestSubaruTorqueSafetyBase):
206208
MAX_TORQUE = 1000
207209

208210

209-
class TestSubaruAngleSafety(TestSubaruStockLongitudinalSafetyBase, TestSubaruAngleSafetyBase):
210-
FLAGS = Panda.FLAG_SUBARU_LKAS_ANGLE
211-
212-
213211
class TestSubaruGen2TorqueStockLongitudinalSafety(TestSubaruStockLongitudinalSafetyBase, TestSubaruGen2TorqueSafetyBase):
214212
FLAGS = Panda.FLAG_SUBARU_GEN2
215213
TX_MSGS = lkas_tx_msgs(SUBARU_ALT_BUS)
216214

217215

216+
class TestSubaruGen2AngleStockLongitudinalSafety(TestSubaruStockLongitudinalSafetyBase, TestSubaruAngleSafetyBase):
217+
ALT_MAIN_BUS = SUBARU_ALT_BUS
218+
219+
FLAGS = Panda.FLAG_SUBARU_GEN2 | Panda.FLAG_SUBARU_LKAS_ANGLE
220+
TX_MSGS = lkas_tx_msgs(SUBARU_ALT_BUS) + lkas_tx_msgs(SUBARU_MAIN_BUS, SubaruMsg.ES_LKAS_ANGLE)
221+
222+
218223
class TestSubaruGen1LongitudinalSafety(TestSubaruLongitudinalSafetyBase, TestSubaruTorqueSafetyBase):
219224
FLAGS = Panda.FLAG_SUBARU_LONG
220225
TX_MSGS = lkas_tx_msgs(SUBARU_MAIN_BUS) + long_tx_msgs(SUBARU_MAIN_BUS)

0 commit comments

Comments
 (0)
Please sign in to comment.