  VisualAlert = car.CarControl.HUDControl.VisualAlert
  
  
  class CarControllerParams():
    def __init__(self, car_fingerprint):
      if car_fingerprint in SUPERCRUISE_CARS:
        self.STEER_MAX = 150
        self.STEER_STEP = 1              # how often we update the steer cmd
        self.STEER_DELTA_UP = 2          # 0.75s time to peak torque
        self.STEER_DELTA_DOWN = 5        # 0.3s from peak torque to zero
        self.MIN_STEER_SPEED = -1.       # can steer down to zero
      else:
        self.STEER_MAX = 300
        self.STEER_STEP = 2              # how often we update the steer cmd
        self.STEER_DELTA_UP = 7          # ~0.75s time to peak torque (255/50hz/0.75s)
        self.STEER_DELTA_DOWN = 17       # ~0.3s from peak torque to zero
        self.MIN_STEER_SPEED = 3.
  
      self.STEER_DRIVER_ALLOWANCE = 50   # allowed driver torque before start limiting
      self.STEER_DRIVER_MULTIPLIER = 4   # weight driver torque heavily
      self.STEER_DRIVER_FACTOR = 100     # from dbc
      self.NEAR_STOP_BRAKE_PHASE = 0.5 # m/s, more aggressive braking near full stop
  
 
</s> remove def process_hud_alert(hud_alert):
  # initialize to no alert
  steer = 0
  if hud_alert == VisualAlert.steerRequired:
    steer = 1
  return steer

 </s> add  </s> remove     supercruise = self.CS.car_fingerprint in SUPERCRUISE_CARS
    events = self.create_common_events(ret, pcm_enable=supercruise)

    if not supercruise:
      # TODO: why is this only not supercruise? ignore supercruise?
      if ret.vEgo < self.CP.minEnableSpeed:
        events.append(create_event('speedTooLow', [ET.NO_ENTRY]))
      if self.CS.park_brake:
        events.append(create_event('parkBrake', [ET.NO_ENTRY, ET.USER_DISABLE]))
      if ret.cruiseState.standstill:
        events.append(create_event('resumeRequired', [ET.WARNING]))
      if self.CS.pcm_acc_status == AccState.FAULTED:
        events.append(create_event('controlsFailed', [ET.NO_ENTRY, ET.IMMEDIATE_DISABLE]))

      # handle button presses
      for b in ret.buttonEvents:
        # do enable on both accel and decel buttons
        if b.type in [ButtonType.accelCruise, ButtonType.decelCruise] and not b.pressed:
          events.append(create_event('buttonEnable', [ET.ENABLE]))
        # do disable on button down
        if b.type == ButtonType.cancel and b.pressed:
          events.append(create_event('buttonCancel', [ET.USER_DISABLE]))
 </s> add     events = self.create_common_events(ret, pcm_enable=False)

    if ret.vEgo < self.CP.minEnableSpeed:
      events.append(create_event('speedTooLow', [ET.NO_ENTRY]))
    if self.CS.park_brake:
      events.append(create_event('parkBrake', [ET.NO_ENTRY, ET.USER_DISABLE]))
    if ret.cruiseState.standstill:
      events.append(create_event('resumeRequired', [ET.WARNING]))
    if self.CS.pcm_acc_status == AccState.FAULTED:
      events.append(create_event('controlsFailed', [ET.NO_ENTRY, ET.IMMEDIATE_DISABLE]))

    # handle button presses
    for b in ret.buttonEvents:
      # do enable on both accel and decel buttons
      if b.type in [ButtonType.accelCruise, ButtonType.decelCruise] and not b.pressed:
        events.append(create_event('buttonEnable', [ET.ENABLE]))
      # do disable on button down
      if b.type == ButtonType.cancel and b.pressed:
        events.append(create_event('buttonCancel', [ET.USER_DISABLE])) </s> remove     alert_out = process_hud_alert(hud_alert)
    steer = alert_out

 </s> add  </s> remove     if self.car_fingerprint not in SUPERCRUISE_CARS:
      # no output if not enabled, but keep sending keepalive messages
      # treat pedals as one
      final_pedal = actuators.gas - actuators.brake
 </s> add     # no output if not enabled, but keep sending keepalive messages
    # treat pedals as one
    final_pedal = actuators.gas - actuators.brake </s> remove       if self.car_fingerprint in SUPERCRUISE_CARS:
        can_sends += gmcan.create_steering_control_ct6(self.packer_pt,
          CanBus, apply_steer, CS.out.vEgo, idx, lkas_enabled)
      else:
        can_sends.append(gmcan.create_steering_control(self.packer_pt,
          CanBus.POWERTRAIN, apply_steer, idx, lkas_enabled))
 </s> add       can_sends.append(gmcan.create_steering_control(self.packer_pt,
        CanBus.POWERTRAIN, apply_steer, idx, lkas_enabled))
  def __init__(self):
    self.STEER_MAX = 300
    self.STEER_STEP = 2              # how often we update the steer cmd
    self.STEER_DELTA_UP = 7          # ~0.75s time to peak torque (255/50hz/0.75s)
    self.STEER_DELTA_DOWN = 17       # ~0.3s from peak torque to zero
    self.MIN_STEER_SPEED = 3.
  VisualAlert = car.CarControl.HUDControl.VisualAlert
  
  
  class CarControllerParams():
  def __init__(self):
    self.STEER_MAX = 300
    self.STEER_STEP = 2              # how often we update the steer cmd
    self.STEER_DELTA_UP = 7          # ~0.75s time to peak torque (255/50hz/0.75s)
    self.STEER_DELTA_DOWN = 17       # ~0.3s from peak torque to zero
    self.MIN_STEER_SPEED = 3.
  def __init__(self):
    self.STEER_MAX = 300
    self.STEER_STEP = 2              # how often we update the steer cmd
    self.STEER_DELTA_UP = 7          # ~0.75s time to peak torque (255/50hz/0.75s)
    self.STEER_DELTA_DOWN = 17       # ~0.3s from peak torque to zero
    self.MIN_STEER_SPEED = 3.
  def __init__(self):
    self.STEER_MAX = 300
    self.STEER_STEP = 2              # how often we update the steer cmd
    self.STEER_DELTA_UP = 7          # ~0.75s time to peak torque (255/50hz/0.75s)
    self.STEER_DELTA_DOWN = 17       # ~0.3s from peak torque to zero
    self.MIN_STEER_SPEED = 3.
  def __init__(self):
    self.STEER_MAX = 300
    self.STEER_STEP = 2              # how often we update the steer cmd
    self.STEER_DELTA_UP = 7          # ~0.75s time to peak torque (255/50hz/0.75s)
    self.STEER_DELTA_DOWN = 17       # ~0.3s from peak torque to zero
    self.MIN_STEER_SPEED = 3.
  def __init__(self):
    self.STEER_MAX = 300
    self.STEER_STEP = 2              # how often we update the steer cmd
    self.STEER_DELTA_UP = 7          # ~0.75s time to peak torque (255/50hz/0.75s)
    self.STEER_DELTA_DOWN = 17       # ~0.3s from peak torque to zero
    self.MIN_STEER_SPEED = 3.
  def __init__(self):
    self.STEER_MAX = 300
    self.STEER_STEP = 2              # how often we update the steer cmd
    self.STEER_DELTA_UP = 7          # ~0.75s time to peak torque (255/50hz/0.75s)
    self.STEER_DELTA_DOWN = 17       # ~0.3s from peak torque to zero
    self.MIN_STEER_SPEED = 3.
  def __init__(self):
    self.STEER_MAX = 300
    self.STEER_STEP = 2              # how often we update the steer cmd
    self.STEER_DELTA_UP = 7          # ~0.75s time to peak torque (255/50hz/0.75s)
    self.STEER_DELTA_DOWN = 17       # ~0.3s from peak torque to zero
    self.MIN_STEER_SPEED = 3.
  def __init__(self):
    self.STEER_MAX = 300
    self.STEER_STEP = 2              # how often we update the steer cmd
    self.STEER_DELTA_UP = 7          # ~0.75s time to peak torque (255/50hz/0.75s)
    self.STEER_DELTA_DOWN = 17       # ~0.3s from peak torque to zero
    self.MIN_STEER_SPEED = 3.
  def __init__(self):
    self.STEER_MAX = 300
    self.STEER_STEP = 2              # how often we update the steer cmd
    self.STEER_DELTA_UP = 7          # ~0.75s time to peak torque (255/50hz/0.75s)
    self.STEER_DELTA_DOWN = 17       # ~0.3s from peak torque to zero
    self.MIN_STEER_SPEED = 3.
  def __init__(self):
    self.STEER_MAX = 300
    self.STEER_STEP = 2              # how often we update the steer cmd
    self.STEER_DELTA_UP = 7          # ~0.75s time to peak torque (255/50hz/0.75s)
    self.STEER_DELTA_DOWN = 17       # ~0.3s from peak torque to zero
    self.MIN_STEER_SPEED = 3.
  def __init__(self):
    self.STEER_MAX = 300
    self.STEER_STEP = 2              # how often we update the steer cmd
    self.STEER_DELTA_UP = 7          # ~0.75s time to peak torque (255/50hz/0.75s)
    self.STEER_DELTA_DOWN = 17       # ~0.3s from peak torque to zero
    self.MIN_STEER_SPEED = 3.
  def __init__(self):
    self.STEER_MAX = 300
    self.STEER_STEP = 2              # how often we update the steer cmd
    self.STEER_DELTA_UP = 7          # ~0.75s time to peak torque (255/50hz/0.75s)
    self.STEER_DELTA_DOWN = 17       # ~0.3s from peak torque to zero
    self.MIN_STEER_SPEED = 3.
  def __init__(self):
    self.STEER_MAX = 300
    self.STEER_STEP = 2              # how often we update the steer cmd
    self.STEER_DELTA_UP = 7          # ~0.75s time to peak torque (255/50hz/0.75s)
    self.STEER_DELTA_DOWN = 17       # ~0.3s from peak torque to zero
    self.MIN_STEER_SPEED = 3.
  def __init__(self):
    self.STEER_MAX = 300
    self.STEER_STEP = 2              # how often we update the steer cmd
    self.STEER_DELTA_UP = 7          # ~0.75s time to peak torque (255/50hz/0.75s)
    self.STEER_DELTA_DOWN = 17       # ~0.3s from peak torque to zero
    self.MIN_STEER_SPEED = 3.
      self.STEER_DRIVER_ALLOWANCE = 50   # allowed driver torque before start limiting
      self.STEER_DRIVER_MULTIPLIER = 4   # weight driver torque heavily
      self.STEER_DRIVER_FACTOR = 100     # from dbc
      self.NEAR_STOP_BRAKE_PHASE = 0.5 # m/s, more aggressive braking near full stop
  
keep keep keep keep replace replace replace replace replace replace replace replace replace replace replace replace replace replace keep keep keep keep keep
 Remove Cadillac CT6 port (#1359)

* remove CT6 port

* dont need this route

* extra char

* fix carcontroller params 
selfdrive/car/gm/carcontroller.py