@ -8,6 +8,7 @@ class CarController():
self . apply_steer_last = 0
self . apply_steer_last = 0
self . packer = CANPacker ( dbc_name )
self . packer = CANPacker ( dbc_name )
self . steer_rate_limited = False
self . steer_rate_limited = False
self . brake_counter = 0
def update ( self , enabled , CS , frame , actuators ) :
def update ( self , enabled , CS , frame , actuators ) :
""" Controls thread """
""" Controls thread """
@ -31,10 +32,17 @@ class CarController():
else :
else :
apply_steer = 0
apply_steer = 0
self . steer_rate_limited = False
self . steer_rate_limited = False
if CS . out . cruiseState . enabled and frame % 20 == 0 :
if CS . out . cruiseState . enabled :
# if brake is pressed, let us wait >20ms before trying to disable crz to avoid
# a race condition with the stock system, where the second cancel from openpilot
# will disable the crz 'main on'
self . brake_counter = self . brake_counter + 1
if frame % 20 == 0 and not ( CS . out . brakePressed and self . brake_counter < 3 ) :
# Cancel Stock ACC if it's enabled while OP is disengaged
# Cancel Stock ACC if it's enabled while OP is disengaged
# Send at a rate of 5hz until we sync with stock ACC state
# Send at a rate of 5hz until we sync with stock ACC state
can_sends . append ( mazdacan . create_button_cmd ( self . packer , CS . CP . carFingerprint , Buttons . CANCEL ) )
can_sends . append ( mazdacan . create_button_cmd ( self . packer , CS . CP . carFingerprint , Buttons . CANCEL ) )
else :
self . brake_counter = 0
self . apply_steer_last = apply_steer
self . apply_steer_last = apply_steer