From 91e7bf83b8cf3819e049b140d1cbde3f75b4467a Mon Sep 17 00:00:00 2001 From: martinl Date: Sat, 17 Jun 2023 08:48:09 +0300 Subject: [PATCH] Subaru: log stock AEB (#28052) * Subaru: log stock AEB * Remove stockFcw from stockAeb * Subaru: Add FCW_Cont_Beep to stockFcw signals * add ES_Brake * use actuation bit * bump opendbc * remove aeb from UI fix * Update selfdrive/car/subaru/carstate.py --------- Co-authored-by: Shane Smiskol old-commit-hash: 5cb9360fa0061222bcef18882f829ec8b9fcece4 --- opendbc | 2 +- selfdrive/car/subaru/carstate.py | 24 ++++++++++++++++++++++-- 2 files changed, 23 insertions(+), 3 deletions(-) diff --git a/opendbc b/opendbc index d03ae519e9..e808a1ec3d 160000 --- a/opendbc +++ b/opendbc @@ -1 +1 @@ -Subproject commit d03ae519e9bcc516e127593a4274b4212c70b732 +Subproject commit e808a1ec3dc33bdbd6d4ef868bbc84d3916de765 diff --git a/selfdrive/car/subaru/carstate.py b/selfdrive/car/subaru/carstate.py index 8ce31b1842..7046963a9a 100644 --- a/selfdrive/car/subaru/carstate.py +++ b/selfdrive/car/subaru/carstate.py @@ -69,6 +69,7 @@ class CarState(CarStateBase): cp.vl["BodyInfo"]["DOOR_OPEN_FL"]]) ret.steerFaultPermanent = cp.vl["Steering_Torque"]["Steer_Error_1"] == 1 + cp_es_distance = cp_body if self.car_fingerprint in GLOBAL_GEN2 else cp_cam if self.car_fingerprint in PREGLOBAL_CARS: self.cruise_button = cp_cam.vl["ES_Distance"]["Cruise_Button"] self.ready = not cp_cam.vl["ES_DashStatus"]["Not_Ready_Startup"] @@ -76,10 +77,13 @@ class CarState(CarStateBase): ret.steerFaultTemporary = cp.vl["Steering_Torque"]["Steer_Warning"] == 1 ret.cruiseState.nonAdaptive = cp_cam.vl["ES_DashStatus"]["Conventional_Cruise"] == 1 ret.cruiseState.standstill = cp_cam.vl["ES_DashStatus"]["Cruise_State"] == 3 - ret.stockFcw = cp_cam.vl["ES_LKAS_State"]["LKAS_Alert"] == 2 + ret.stockFcw = (cp_cam.vl["ES_LKAS_State"]["LKAS_Alert"] == 1) or \ + (cp_cam.vl["ES_LKAS_State"]["LKAS_Alert"] == 2) + # 8 is known AEB, there are a few other values related to AEB we ignore + ret.stockAeb = (cp_es_distance.vl["ES_Brake"]["AEB_Status"] == 8) and \ + (cp_es_distance.vl["ES_Brake"]["Brake_Pressure"] != 0) self.es_lkas_state_msg = copy.copy(cp_cam.vl["ES_LKAS_State"]) - cp_es_distance = cp_body if self.car_fingerprint in GLOBAL_GEN2 else cp_cam self.es_distance_msg = copy.copy(cp_es_distance.vl["ES_Distance"]) self.es_dashstatus_msg = copy.copy(cp_cam.vl["ES_DashStatus"]) if self.CP.flags & SubaruFlags.SEND_INFOTAINMENT: @@ -106,6 +110,18 @@ class CarState(CarStateBase): return signals, checks + @staticmethod + def get_global_es_brake_signals(): + signals = [ + ("AEB_Status", "ES_Brake"), + ("Brake_Pressure", "ES_Brake"), + ] + checks = [ + ("ES_Brake", 20), + ] + + return signals, checks + @staticmethod def get_global_es_distance_signals(): signals = [ @@ -304,7 +320,9 @@ class CarState(CarStateBase): if CP.carFingerprint not in GLOBAL_GEN2: signals += CarState.get_global_es_distance_signals()[0] + signals += CarState.get_global_es_brake_signals()[0] checks += CarState.get_global_es_distance_signals()[1] + checks += CarState.get_global_es_brake_signals()[1] if CP.flags & SubaruFlags.SEND_INFOTAINMENT: signals += [ @@ -324,7 +342,9 @@ class CarState(CarStateBase): if CP.carFingerprint in GLOBAL_GEN2: signals, checks = CarState.get_common_global_signals() signals += CarState.get_global_es_distance_signals()[0] + signals += CarState.get_global_es_brake_signals()[0] checks += CarState.get_global_es_distance_signals()[1] + checks += CarState.get_global_es_brake_signals()[1] return CANParser(DBC[CP.carFingerprint]["pt"], signals, checks, 1) return None