diff --git a/selfdrive/controls/controlsd.py b/selfdrive/controls/controlsd.py index 4546c267e9..1ac6b2679f 100755 --- a/selfdrive/controls/controlsd.py +++ b/selfdrive/controls/controlsd.py @@ -140,7 +140,6 @@ class Controls: self.enabled = False self.active = False self.can_rcv_error = False - self.brake_pressed_prev = False self.soft_disable_timer = 0 self.v_cruise_kph = 255 self.v_cruise_kph_last = 0 @@ -155,6 +154,7 @@ class Controls: self.logged_comm_issue = False self.button_timers = {ButtonEvent.Type.decelCruise: 0, ButtonEvent.Type.accelCruise: 0} self.last_actuators = car.CarControl.Actuators.new_message() + self.CS_prev = car.CarState() # TODO: no longer necessary, aside from process replay self.sm['liveParameters'].valid = True @@ -195,9 +195,9 @@ class Controls: return # Disable on rising edge of gas or brake. Also disable on brake when speed > 0 - if (CS.gasPressed and self.active) or (CS.brakePressed and (not self.brake_pressed_prev or not CS.standstill)): + if (CS.gasPressed and not self.CS_prev.gasPressed) or \ + (CS.brakePressed and (not self.CS_prev.brakePressed or not CS.standstill)): self.events.add(EventName.pedalPressed) - self.brake_pressed_prev = CS.brakePressed self.events.add_from_msg(CS.events) self.events.add_from_msg(self.sm['driverMonitoringState'].events) @@ -735,6 +735,7 @@ class Controls: self.prof.checkpoint("Sent") self.update_button_timers(CS.buttonEvents) + self.CS_prev = CS.copy() def controlsd_thread(self): while True: