diff --git a/cereal b/cereal index 3eca747334..5766e645f2 160000 --- a/cereal +++ b/cereal @@ -1 +1 @@ -Subproject commit 3eca747334ca2138bf35d70399d58d0706a3cbd2 +Subproject commit 5766e645f2ee2a131b145fb1ea9e3b7c55a4a740 diff --git a/selfdrive/car/gm/interface.py b/selfdrive/car/gm/interface.py index 22ea83759a..248828e757 100755 --- a/selfdrive/car/gm/interface.py +++ b/selfdrive/car/gm/interface.py @@ -212,7 +212,13 @@ class CarInterface(CarInterfaceBase): if ret.cruiseState.standstill: events.add(EventName.resumeRequired) if ret.vEgo < self.CP.minSteerSpeed: - events.add(car.CarEvent.EventName.belowSteerSpeed) + events.add(EventName.belowSteerSpeed) + + if self.CP.networkLocation == NetworkLocation.fwdCamera and self.CP.pcmCruise: + # The ECM has a higher brake pressed threshold than the camera, causing an + # ACC fault when you engage at a stop with your foot partially on the brake + if ret.vEgoRaw < 0.1 and ret.brake < 20: + events.add(EventName.gmAccFaultedTemp) ret.events = events.to_msg() diff --git a/selfdrive/controls/lib/events.py b/selfdrive/controls/lib/events.py index 91f1748ecb..5bfe89b31c 100644 --- a/selfdrive/controls/lib/events.py +++ b/selfdrive/controls/lib/events.py @@ -811,6 +811,10 @@ EVENTS: Dict[int, Dict[str, Union[Alert, AlertCallbackType]]] = { ET.NO_ENTRY: NoEntryAlert("Cruise Faulted"), }, + EventName.gmAccFaultedTemp: { + ET.NO_ENTRY: NoEntryAlert("Cruise Temporarily Faulted"), + }, + EventName.controlsMismatch: { ET.IMMEDIATE_DISABLE: ImmediateDisableAlert("Controls Mismatch"), ET.NO_ENTRY: NoEntryAlert("Controls Mismatch"),