diff --git a/selfdrive/car/gm/carstate.py b/selfdrive/car/gm/carstate.py index 393fad256..aad6eec20 100644 --- a/selfdrive/car/gm/carstate.py +++ b/selfdrive/car/gm/carstate.py @@ -42,7 +42,6 @@ class CarState(CarStateBase): kaofui_state_cars = volt_like | SDGM_CAR | ASCM_INT | { CAR.CHEVROLET_BLAZER, CAR.CHEVROLET_MALIBU_SDGM, - CAR.CHEVROLET_MALIBU_CC, CAR.CHEVROLET_MALIBU_HYBRID_CC, } sdgm_non_volt = self.CP.carFingerprint in SDGM_CAR and \ @@ -111,6 +110,9 @@ class CarState(CarStateBase): if self.CP.carFingerprint == CAR.CHEVROLET_BLAZER: # Blazer can miss light taps on analog threshold; include digital brake switch. ret.brakePressed = (pt_cp.vl["ECMEngineStatus"]["BrakePressed"] != 0) or (ret.brake >= 0.7) + elif self.CP.carFingerprint == CAR.CHEVROLET_MALIBU_CC: + # Malibu CC: keep strict opgm behavior using BrakePedalPos >= 8. + ret.brakePressed = ret.brake >= 8 elif (self.CP.flags & GMFlags.FORCE_BRAKE_C9.value) or (self.CP.networkLocation == NetworkLocation.fwdCamera): ret.brakePressed = pt_cp.vl["ECMEngineStatus"]["BrakePressed"] != 0 else: @@ -235,7 +237,6 @@ class CarState(CarStateBase): kaofui_state_cars = volt_like | SDGM_CAR | ASCM_INT | { CAR.CHEVROLET_BLAZER, CAR.CHEVROLET_MALIBU_SDGM, - CAR.CHEVROLET_MALIBU_CC, CAR.CHEVROLET_MALIBU_HYBRID_CC, } sdgm_non_volt = CP.carFingerprint in SDGM_CAR and \ @@ -280,7 +281,6 @@ class CarState(CarStateBase): kaofui_state_cars = volt_like | SDGM_CAR | ASCM_INT | { CAR.CHEVROLET_BLAZER, CAR.CHEVROLET_MALIBU_SDGM, - CAR.CHEVROLET_MALIBU_CC, CAR.CHEVROLET_MALIBU_HYBRID_CC, } prndl2_rate = 10 if CP.carFingerprint in kaofui_state_cars else 40 diff --git a/selfdrive/car/gm/interface.py b/selfdrive/car/gm/interface.py index a5401d000..b4858a301 100644 --- a/selfdrive/car/gm/interface.py +++ b/selfdrive/car/gm/interface.py @@ -178,7 +178,7 @@ class CarInterface(CarInterfaceBase): else: ret.transmissionType = TransmissionType.automatic - kaofui_cars = SDGM_CAR | ASCM_INT | VOLT_LIKE_CARS | {CAR.CHEVROLET_MALIBU_CC, CAR.CHEVROLET_MALIBU_HYBRID_CC} + kaofui_cars = SDGM_CAR | ASCM_INT | VOLT_LIKE_CARS | {CAR.CHEVROLET_MALIBU_HYBRID_CC} ret.longitudinalTuning.kiBP = [5., 35.] if candidate in kaofui_cars else [5., 35., 60.] is_bolt_2022_2023_pedal = candidate == CAR.CHEVROLET_BOLT_ACC_2022_2023_PEDAL and ret.enableGasInterceptor @@ -186,7 +186,6 @@ class CarInterface(CarInterfaceBase): kaofui_camera_cars = { CAR.CHEVROLET_VOLT_CAMERA, CAR.CHEVROLET_VOLT_CC, - CAR.CHEVROLET_MALIBU_CC, CAR.CHEVROLET_MALIBU_HYBRID_CC, } bolt_cc_camera_cars = { @@ -251,8 +250,9 @@ class CarInterface(CarInterfaceBase): ret.minEnableSpeed = -1. # engage speed is decided by pcm ret.minSteerSpeed = 7 * CV.MPH_TO_MS gm_safety_cfg.safetyParam |= Panda.FLAG_GM_HW_SDGM - # Use C9 brake bit only on SDGM variants that lack 0xBE (ECMAcceleratorPos) - if ACCELERATOR_POS_MSG not in fingerprint.get(CanBus.POWERTRAIN, {}): + # Use C9 brake bit on Blazer and SDGM variants that lack 0xBE (ECMAcceleratorPos), + # so panda brake_pressed source matches carstate on light taps. + if candidate == CAR.CHEVROLET_BLAZER or ACCELERATOR_POS_MSG not in fingerprint.get(CanBus.POWERTRAIN, {}): gm_safety_cfg.safetyParam |= Panda.FLAG_GM_FORCE_BRAKE_C9 ret.flags |= GMFlags.FORCE_BRAKE_C9.value