diff --git a/cereal/car.capnp b/cereal/car.capnp index 7f3f64c911eddba..397ae802af4f02a 100644 --- a/cereal/car.capnp +++ b/cereal/car.capnp @@ -116,6 +116,7 @@ struct CarEvent @0x9b1657f34caf3ad3 { paramsdTemporaryError @50; paramsdPermanentError @119; actuatorsApiUnavailable @120; + espActive @121; radarCanErrorDEPRECATED @15; communityFeatureDisallowedDEPRECATED @62; @@ -194,6 +195,7 @@ struct CarState { espDisabled @32 :Bool; accFaulted @42 :Bool; carFaultedNonCritical @47 :Bool; # some ECU is faulted, but car remains controllable + espActive @44 :Bool; # cruise state cruiseState @10 :CruiseState; diff --git a/selfdrive/car/hyundai/carstate.py b/selfdrive/car/hyundai/carstate.py index 9f8a278a7b91415..18cdee9a24c0fbc 100644 --- a/selfdrive/car/hyundai/carstate.py +++ b/selfdrive/car/hyundai/carstate.py @@ -119,9 +119,8 @@ def update(self, cp, cp_cam): ret.brakeHoldActive = cp.vl["TCS15"]["AVH_LAMP"] == 2 # 0 OFF, 1 ERROR, 2 ACTIVE, 3 READY ret.parkingBrake = cp.vl["TCS13"]["PBRAKE_ACT"] == 1 ret.espDisabled = cp.vl["TCS11"]["TCS_PAS"] == 1 - # TCS13|ACCEnable: 0 ACC CONTROL ENABLED, 1-3 ACC CONTROL DISABLED - # TCS11|ABS_ACT: 1 ABS ACTIVE - ret.accFaulted = cp.vl["TCS13"]["ACCEnable"] != 0 or cp.vl["TCS11"]["ABS_ACT"] != 0 + ret.accFaulted = cp.vl["TCS13"]["ACCEnable"] != 0 # 0 ACC CONTROL ENABLED, 1-3 ACC CONTROL DISABLED + ret.espActive = cp.vl["TCS11"]["ABS_ACT"] != 0 # 1 ESP ACTIVE if self.CP.flags & (HyundaiFlags.HYBRID | HyundaiFlags.EV): if self.CP.flags & HyundaiFlags.HYBRID: diff --git a/selfdrive/car/interfaces.py b/selfdrive/car/interfaces.py index 5eac6062aa53cf8..3de9b9a38708bf3 100644 --- a/selfdrive/car/interfaces.py +++ b/selfdrive/car/interfaces.py @@ -282,6 +282,8 @@ def create_common_events(self, cs_out, extra_gears=None, pcm_enable=True, allow_ events.add(EventName.wrongCarMode) if cs_out.espDisabled: events.add(EventName.espDisabled) + if cs_out.espActive: + events.add(EventName.espActive) if cs_out.stockFcw: events.add(EventName.stockFcw) if cs_out.stockAeb: diff --git a/selfdrive/controls/lib/events.py b/selfdrive/controls/lib/events.py index b01818d704bf228..25833da741879c6 100755 --- a/selfdrive/controls/lib/events.py +++ b/selfdrive/controls/lib/events.py @@ -831,6 +831,11 @@ def joystick_alert(CP: car.CarParams, CS: car.CarState, sm: messaging.SubMaster, ET.NO_ENTRY: NoEntryAlert("Cruise Fault: Restart the Car"), }, + EventName.espActive: { + ET.IMMEDIATE_DISABLE: ImmediateDisableAlert("Electronic Stability Control Active"), + ET.NO_ENTRY: NoEntryAlert("Electronic Stability Control Active"), + }, + EventName.controlsMismatch: { ET.IMMEDIATE_DISABLE: ImmediateDisableAlert("Controls Mismatch"), ET.NO_ENTRY: NoEntryAlert("Controls Mismatch"),