|
|
|
@ -48,6 +48,7 @@ Desire = log.LateralPlan.Desire |
|
|
|
|
LaneChangeState = log.LateralPlan.LaneChangeState |
|
|
|
|
LaneChangeDirection = log.LateralPlan.LaneChangeDirection |
|
|
|
|
EventName = car.CarEvent.EventName |
|
|
|
|
ButtonEvent = car.CarState.ButtonEvent |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
class Controls: |
|
|
|
@ -149,6 +150,7 @@ class Controls: |
|
|
|
|
self.events_prev = [] |
|
|
|
|
self.current_alert_types = [ET.PERMANENT] |
|
|
|
|
self.logged_comm_issue = False |
|
|
|
|
self.button_timers = {ButtonEvent.Type.decelCruise: 0, ButtonEvent.Type.accelCruise: 0} |
|
|
|
|
|
|
|
|
|
# TODO: no longer necessary, aside from process replay |
|
|
|
|
self.sm['liveParameters'].valid = True |
|
|
|
@ -367,7 +369,7 @@ class Controls: |
|
|
|
|
|
|
|
|
|
# if stock cruise is completely disabled, then we can use our own set speed logic |
|
|
|
|
if not self.CP.pcmCruise: |
|
|
|
|
self.v_cruise_kph = update_v_cruise(self.v_cruise_kph, CS.buttonEvents, self.enabled) |
|
|
|
|
self.v_cruise_kph = update_v_cruise(self.v_cruise_kph, CS.buttonEvents, self.button_timers, self.enabled) |
|
|
|
|
elif self.CP.pcmCruise and CS.cruiseState.enabled: |
|
|
|
|
self.v_cruise_kph = CS.cruiseState.speed * CV.MS_TO_KPH |
|
|
|
|
|
|
|
|
@ -520,6 +522,16 @@ class Controls: |
|
|
|
|
|
|
|
|
|
return actuators, lac_log |
|
|
|
|
|
|
|
|
|
def update_button_timers(self, buttonEvents): |
|
|
|
|
# increment timer for buttons still pressed |
|
|
|
|
for k in self.button_timers.keys(): |
|
|
|
|
if self.button_timers[k] > 0: |
|
|
|
|
self.button_timers[k] += 1 |
|
|
|
|
|
|
|
|
|
for b in buttonEvents: |
|
|
|
|
if b.type.raw in self.button_timers: |
|
|
|
|
self.button_timers[b.type.raw] = 1 if b.pressed else 0 |
|
|
|
|
|
|
|
|
|
def publish_logs(self, CS, start_time, actuators, lac_log): |
|
|
|
|
"""Send actuators and hud commands to the car, send controlsstate and MPC logging""" |
|
|
|
|
|
|
|
|
@ -673,6 +685,8 @@ class Controls: |
|
|
|
|
self.publish_logs(CS, start_time, actuators, lac_log) |
|
|
|
|
self.prof.checkpoint("Sent") |
|
|
|
|
|
|
|
|
|
self.update_button_timers(CS.buttonEvents) |
|
|
|
|
|
|
|
|
|
def controlsd_thread(self): |
|
|
|
|
while True: |
|
|
|
|
self.step() |
|
|
|
|