|
|
|
@ -3,6 +3,7 @@ from cereal import car |
|
|
|
|
|
|
|
|
|
VisualAlert = car.CarControl.HUDControl.VisualAlert |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
def create_steering_control(packer, apply_steer): |
|
|
|
|
values = { |
|
|
|
|
"LKAS_Output": apply_steer, |
|
|
|
@ -11,9 +12,11 @@ def create_steering_control(packer, apply_steer): |
|
|
|
|
} |
|
|
|
|
return packer.make_can_msg("ES_LKAS", 0, values) |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
def create_steering_status(packer): |
|
|
|
|
return packer.make_can_msg("ES_LKAS_State", 0, {}) |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
def create_es_distance(packer, es_distance_msg, bus, pcm_cancel_cmd): |
|
|
|
|
values = copy.copy(es_distance_msg) |
|
|
|
|
values["COUNTER"] = (values["COUNTER"] + 1) % 0x10 |
|
|
|
@ -21,8 +24,8 @@ def create_es_distance(packer, es_distance_msg, bus, pcm_cancel_cmd): |
|
|
|
|
values["Cruise_Cancel"] = 1 |
|
|
|
|
return packer.make_can_msg("ES_Distance", bus, values) |
|
|
|
|
|
|
|
|
|
def create_es_lkas_state(packer, es_lkas_state_msg, enabled, visual_alert, left_line, right_line, left_lane_depart, right_lane_depart): |
|
|
|
|
|
|
|
|
|
def create_es_lkas_state(packer, es_lkas_state_msg, enabled, visual_alert, left_line, right_line, left_lane_depart, right_lane_depart): |
|
|
|
|
values = copy.copy(es_lkas_state_msg) |
|
|
|
|
|
|
|
|
|
# Filter the stock LKAS "Keep hands on wheel" alert |
|
|
|
@ -52,18 +55,19 @@ def create_es_lkas_state(packer, es_lkas_state_msg, enabled, visual_alert, left_ |
|
|
|
|
# Ensure we don't overwrite potentially more important alerts from stock (e.g. FCW) |
|
|
|
|
if visual_alert == VisualAlert.ldw and values["LKAS_Alert"] == 0: |
|
|
|
|
if left_lane_depart: |
|
|
|
|
values["LKAS_Alert"] = 12 # Left lane departure dash alert |
|
|
|
|
values["LKAS_Alert"] = 12 # Left lane departure dash alert |
|
|
|
|
elif right_lane_depart: |
|
|
|
|
values["LKAS_Alert"] = 11 # Right lane departure dash alert |
|
|
|
|
values["LKAS_Alert"] = 11 # Right lane departure dash alert |
|
|
|
|
|
|
|
|
|
values["LKAS_ACTIVE"] = 1 # Show LKAS lane lines |
|
|
|
|
values["LKAS_Dash_State"] = 2 if enabled else 0 # Green enabled indicator |
|
|
|
|
values["LKAS_ACTIVE"] = 1 # Show LKAS lane lines |
|
|
|
|
values["LKAS_Dash_State"] = 2 if enabled else 0 # Green enabled indicator |
|
|
|
|
|
|
|
|
|
values["LKAS_Left_Line_Visible"] = int(left_line) |
|
|
|
|
values["LKAS_Right_Line_Visible"] = int(right_line) |
|
|
|
|
|
|
|
|
|
return packer.make_can_msg("ES_LKAS_State", 0, values) |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
def create_es_dashstatus(packer, dashstatus_msg): |
|
|
|
|
values = copy.copy(dashstatus_msg) |
|
|
|
|
|
|
|
|
@ -73,6 +77,7 @@ def create_es_dashstatus(packer, dashstatus_msg): |
|
|
|
|
|
|
|
|
|
return packer.make_can_msg("ES_DashStatus", 0, values) |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
def create_infotainmentstatus(packer, infotainmentstatus_msg, visual_alert): |
|
|
|
|
# Filter stock LKAS disabled and Keep hands on steering wheel OFF alerts |
|
|
|
|
if infotainmentstatus_msg["LKAS_State_Infotainment"] in (3, 4): |
|
|
|
@ -88,12 +93,14 @@ def create_infotainmentstatus(packer, infotainmentstatus_msg, visual_alert): |
|
|
|
|
|
|
|
|
|
return packer.make_can_msg("INFOTAINMENT_STATUS", 0, infotainmentstatus_msg) |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
# *** Subaru Pre-global *** |
|
|
|
|
|
|
|
|
|
def subaru_preglobal_checksum(packer, values, addr): |
|
|
|
|
dat = packer.make_can_msg(addr, 0, values)[2] |
|
|
|
|
return (sum(dat[:7])) % 256 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
def create_preglobal_steering_control(packer, apply_steer): |
|
|
|
|
values = { |
|
|
|
|
"LKAS_Command": apply_steer, |
|
|
|
@ -103,8 +110,8 @@ def create_preglobal_steering_control(packer, apply_steer): |
|
|
|
|
|
|
|
|
|
return packer.make_can_msg("ES_LKAS", 0, values) |
|
|
|
|
|
|
|
|
|
def create_preglobal_es_distance(packer, cruise_button, es_distance_msg): |
|
|
|
|
|
|
|
|
|
def create_preglobal_es_distance(packer, cruise_button, es_distance_msg): |
|
|
|
|
values = copy.copy(es_distance_msg) |
|
|
|
|
values["Cruise_Button"] = cruise_button |
|
|
|
|
|
|
|
|
|