From 5b105facaee86fcd1eb58bccfa1d7d7d9f02a6df Mon Sep 17 00:00:00 2001 From: Shane Smiskol Date: Mon, 2 May 2022 18:05:00 -0700 Subject: [PATCH] Add ACC faulted status to carState (#24399) * add accFaulted bool to carState * same for VW * remove import * bump * move to common * bump cereal to master --- cereal | 2 +- selfdrive/car/gm/carstate.py | 6 +++--- selfdrive/car/gm/interface.py | 5 +---- selfdrive/car/interfaces.py | 2 ++ selfdrive/car/volkswagen/carstate.py | 6 +++--- selfdrive/car/volkswagen/interface.py | 4 ---- 6 files changed, 10 insertions(+), 15 deletions(-) diff --git a/cereal b/cereal index c9cdd7e398..39cbdbfecf 160000 --- a/cereal +++ b/cereal @@ -1 +1 @@ -Subproject commit c9cdd7e398768252891de2f740ee4f65db9c39da +Subproject commit 39cbdbfecf542104f71ecb16d2d1dfd7375dbf5b diff --git a/selfdrive/car/gm/carstate.py b/selfdrive/car/gm/carstate.py index b94fd0f2ab..65ce2e3421 100644 --- a/selfdrive/car/gm/carstate.py +++ b/selfdrive/car/gm/carstate.py @@ -62,14 +62,14 @@ class CarState(CarStateBase): ret.parkingBrake = pt_cp.vl["EPBStatus"]["EPBClosed"] == 1 ret.cruiseState.available = pt_cp.vl["ECMEngineStatus"]["CruiseMainOn"] != 0 ret.espDisabled = pt_cp.vl["ESPStatus"]["TractionControlOn"] != 1 - self.pcm_acc_status = pt_cp.vl["AcceleratorPedal2"]["CruiseState"] + ret.accFaulted = pt_cp.vl["AcceleratorPedal2"]["CruiseState"] == AccState.FAULTED # Regen braking is braking if self.car_fingerprint == CAR.VOLT: ret.brakePressed = ret.brakePressed or pt_cp.vl["EBCMRegenPaddle"]["RegenPaddle"] != 0 - ret.cruiseState.enabled = self.pcm_acc_status != AccState.OFF - ret.cruiseState.standstill = self.pcm_acc_status == AccState.STANDSTILL + ret.cruiseState.enabled = pt_cp.vl["AcceleratorPedal2"]["CruiseState"] != AccState.OFF + ret.cruiseState.standstill = pt_cp.vl["AcceleratorPedal2"]["CruiseState"] == AccState.STANDSTILL return ret diff --git a/selfdrive/car/gm/interface.py b/selfdrive/car/gm/interface.py index 64ec9d4242..d00708c336 100755 --- a/selfdrive/car/gm/interface.py +++ b/selfdrive/car/gm/interface.py @@ -4,8 +4,7 @@ from math import fabs from common.conversions import Conversions as CV from selfdrive.car import STD_CARGO_KG, scale_rot_inertia, scale_tire_stiffness, gen_empty_fingerprint, get_safety_config -from selfdrive.car.gm.values import CAR, CruiseButtons, \ - AccState, CarControllerParams +from selfdrive.car.gm.values import CAR, CruiseButtons, CarControllerParams from selfdrive.car.interfaces import CarInterfaceBase ButtonType = car.CarState.ButtonEvent.Type @@ -190,8 +189,6 @@ class CarInterface(CarInterfaceBase): events.add(EventName.belowEngageSpeed) if ret.cruiseState.standstill: events.add(EventName.resumeRequired) - if self.CS.pcm_acc_status == AccState.FAULTED: - events.add(EventName.accFaulted) if ret.vEgo < self.CP.minSteerSpeed: events.add(car.CarEvent.EventName.belowSteerSpeed) diff --git a/selfdrive/car/interfaces.py b/selfdrive/car/interfaces.py index 23822fe454..1ee237fe36 100644 --- a/selfdrive/car/interfaces.py +++ b/selfdrive/car/interfaces.py @@ -159,6 +159,8 @@ class CarInterfaceBase(ABC): events.add(EventName.brakeHold) if cs_out.parkingBrake: events.add(EventName.parkBrake) + if cs_out.accFaulted: + events.add(EventName.accFaulted) # Handle permanent and temporary steering faults self.steering_unpressed = 0 if cs_out.steeringPressed else self.steering_unpressed + 1 diff --git a/selfdrive/car/volkswagen/carstate.py b/selfdrive/car/volkswagen/carstate.py index dfd6a0031f..4193030d87 100644 --- a/selfdrive/car/volkswagen/carstate.py +++ b/selfdrive/car/volkswagen/carstate.py @@ -93,12 +93,11 @@ class CarState(CarStateBase): ret.stockAeb = bool(ext_cp.vl["ACC_10"]["ANB_Teilbremsung_Freigabe"]) or bool(ext_cp.vl["ACC_10"]["ANB_Zielbremsung_Freigabe"]) # Update ACC radar status. - self.tsk_status = pt_cp.vl["TSK_06"]["TSK_Status"] - if self.tsk_status == 2: + if pt_cp.vl["TSK_06"]["TSK_Status"] == 2: # ACC okay and enabled, but not currently engaged ret.cruiseState.available = True ret.cruiseState.enabled = False - elif self.tsk_status in (3, 4, 5): + elif pt_cp.vl["TSK_06"]["TSK_Status"] in (3, 4, 5): # ACC okay and enabled, currently regulating speed (3) or driver accel override (4) or overrun coast-down (5) ret.cruiseState.available = True ret.cruiseState.enabled = True @@ -106,6 +105,7 @@ class CarState(CarStateBase): # ACC okay but disabled (1), or a radar visibility or other fault/disruption (6 or 7) ret.cruiseState.available = False ret.cruiseState.enabled = False + ret.accFaulted = pt_cp.vl["TSK_06"]["TSK_Status"] in (6, 7) # Update ACC setpoint. When the setpoint is zero or there's an error, the # radar sends a set-speed of ~90.69 m/s / 203mph. diff --git a/selfdrive/car/volkswagen/interface.py b/selfdrive/car/volkswagen/interface.py index f849d912a0..3a0d7c8ce8 100644 --- a/selfdrive/car/volkswagen/interface.py +++ b/selfdrive/car/volkswagen/interface.py @@ -177,10 +177,6 @@ class CarInterface(CarInterfaceBase): events = self.create_common_events(ret, extra_gears=[GearShifter.eco, GearShifter.sport, GearShifter.manumatic]) - # Vehicle health and operation safety checks - if self.CS.tsk_status in (6, 7): - events.add(EventName.accFaulted) - # Low speed steer alert hysteresis logic if self.CP.minSteerSpeed > 0. and ret.vEgo < (self.CP.minSteerSpeed + 1.): self.low_speed_alert = True