From 1101462fc74b8205eda8f3a9721f19d7425adaae Mon Sep 17 00:00:00 2001 From: Shane Smiskol Date: Fri, 19 Aug 2022 12:04:12 -0700 Subject: [PATCH] GM pcmCruise: cancel more reliably (#25454) * Cancel more reliably * Apply suggestions from code review * Try sending multiple * Apply suggestions from code review * Apply suggestions from code review * Update selfdrive/car/gm/carcontroller.py * lower rate a bit * try this * Update selfdrive/car/gm/carcontroller.py old-commit-hash: fe509e0354466a301dd403d29b5b2c82aea8aad1 --- selfdrive/car/gm/carcontroller.py | 4 ++-- selfdrive/car/gm/carstate.py | 3 +++ selfdrive/car/gm/gmcan.py | 7 +++++-- 3 files changed, 10 insertions(+), 4 deletions(-) diff --git a/selfdrive/car/gm/carcontroller.py b/selfdrive/car/gm/carcontroller.py index 10e6027973..977d20c5b3 100644 --- a/selfdrive/car/gm/carcontroller.py +++ b/selfdrive/car/gm/carcontroller.py @@ -109,10 +109,10 @@ class CarController: else: # Stock longitudinal, integrated at camera - if (self.frame - self.last_button_frame) * DT_CTRL > 0.1: + if (self.frame - self.last_button_frame) * DT_CTRL > 0.04: if CC.cruiseControl.cancel: self.last_button_frame = self.frame - can_sends.append(gmcan.create_buttons(self.packer_pt, CanBus.CAMERA, CruiseButtons.CANCEL)) + can_sends.append(gmcan.create_buttons(self.packer_pt, CanBus.CAMERA, CS.buttons_counter, CruiseButtons.CANCEL)) # Show green icon when LKA torque is applied, and # alarming orange icon when approaching torque limit. diff --git a/selfdrive/car/gm/carstate.py b/selfdrive/car/gm/carstate.py index 0bda7edad9..0bba1d29b8 100644 --- a/selfdrive/car/gm/carstate.py +++ b/selfdrive/car/gm/carstate.py @@ -16,12 +16,14 @@ class CarState(CarStateBase): can_define = CANDefine(DBC[CP.carFingerprint]["pt"]) self.shifter_values = can_define.dv["ECMPRDNL2"]["PRNDL2"] self.lka_steering_cmd_counter = 0 + self.buttons_counter = 0 def update(self, pt_cp, cam_cp, loopback_cp): ret = car.CarState.new_message() self.prev_cruise_buttons = self.cruise_buttons self.cruise_buttons = pt_cp.vl["ASCMSteeringButton"]["ACCButtons"] + self.buttons_counter = pt_cp.vl["ASCMSteeringButton"]["RollingCounter"] ret.wheelSpeeds = self.get_wheel_speeds( pt_cp.vl["EBCMWheelSpdFront"]["FLWheelSpd"], @@ -109,6 +111,7 @@ class CarState(CarStateBase): ("AcceleratorPedal2", "AcceleratorPedal2"), ("CruiseState", "AcceleratorPedal2"), ("ACCButtons", "ASCMSteeringButton"), + ("RollingCounter", "ASCMSteeringButton"), ("SteeringWheelAngle", "PSCMSteeringAngle"), ("SteeringWheelRate", "PSCMSteeringAngle"), ("FLWheelSpd", "EBCMWheelSpdFront"), diff --git a/selfdrive/car/gm/gmcan.py b/selfdrive/car/gm/gmcan.py index 3a10c4d9da..20e4c4ab6e 100644 --- a/selfdrive/car/gm/gmcan.py +++ b/selfdrive/car/gm/gmcan.py @@ -1,7 +1,10 @@ from selfdrive.car import make_can_msg -def create_buttons(packer, bus, button): - values = {"ACCButtons": button} +def create_buttons(packer, bus, idx, button): + values = { + "ACCButtons": button, + "RollingCounter": idx, + } return packer.make_can_msg("ASCMSteeringButton", bus, values) def create_steering_control(packer, bus, apply_steer, idx, lkas_active):