|
|
@ -7,24 +7,19 @@ from selfdrive.car.honda.values import HONDA_BOSCH |
|
|
|
# 2 = ACC-CAN - camera side |
|
|
|
# 2 = ACC-CAN - camera side |
|
|
|
# 3 = F-CAN A - OBDII port |
|
|
|
# 3 = F-CAN A - OBDII port |
|
|
|
|
|
|
|
|
|
|
|
# CAN bus layout with giraffe |
|
|
|
def get_pt_bus(car_fingerprint): |
|
|
|
# 0 = F-CAN B - powertrain |
|
|
|
return 1 if car_fingerprint in HONDA_BOSCH else 0 |
|
|
|
# 1 = ACC-CAN - camera side |
|
|
|
|
|
|
|
# 2 = ACC-CAN - radar side |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
def get_pt_bus(car_fingerprint, has_relay): |
|
|
|
|
|
|
|
return 1 if car_fingerprint in HONDA_BOSCH and has_relay else 0 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
def get_lkas_cmd_bus(car_fingerprint, radar_disabled=False): |
|
|
|
def get_lkas_cmd_bus(car_fingerprint, has_relay, radar_disabled=False): |
|
|
|
|
|
|
|
if radar_disabled: |
|
|
|
if radar_disabled: |
|
|
|
# when radar is disabled, steering commands are sent directly to powertrain bus |
|
|
|
# when radar is disabled, steering commands are sent directly to powertrain bus |
|
|
|
return get_pt_bus(car_fingerprint, has_relay) |
|
|
|
return get_pt_bus(car_fingerprint) |
|
|
|
# normally steering commands are sent to radar, which forwards them to powertrain bus |
|
|
|
# normally steering commands are sent to radar, which forwards them to powertrain bus |
|
|
|
return 2 if car_fingerprint in HONDA_BOSCH and not has_relay else 0 |
|
|
|
return 0 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
def create_brake_command(packer, apply_brake, pump_on, pcm_override, pcm_cancel_cmd, fcw, idx, car_fingerprint, has_relay, stock_brake): |
|
|
|
def create_brake_command(packer, apply_brake, pump_on, pcm_override, pcm_cancel_cmd, fcw, idx, car_fingerprint, stock_brake): |
|
|
|
# TODO: do we loose pressure if we keep pump off for long? |
|
|
|
# TODO: do we loose pressure if we keep pump off for long? |
|
|
|
brakelights = apply_brake > 0 |
|
|
|
brakelights = apply_brake > 0 |
|
|
|
brake_rq = apply_brake > 0 |
|
|
|
brake_rq = apply_brake > 0 |
|
|
@ -45,13 +40,13 @@ def create_brake_command(packer, apply_brake, pump_on, pcm_override, pcm_cancel_ |
|
|
|
"AEB_REQ_2": 0, |
|
|
|
"AEB_REQ_2": 0, |
|
|
|
"AEB_STATUS": 0, |
|
|
|
"AEB_STATUS": 0, |
|
|
|
} |
|
|
|
} |
|
|
|
bus = get_pt_bus(car_fingerprint, has_relay) |
|
|
|
bus = get_pt_bus(car_fingerprint) |
|
|
|
return packer.make_can_msg("BRAKE_COMMAND", bus, values, idx) |
|
|
|
return packer.make_can_msg("BRAKE_COMMAND", bus, values, idx) |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
def create_acc_commands(packer, enabled, accel, gas, idx, stopping, starting, car_fingerprint, has_relay): |
|
|
|
def create_acc_commands(packer, enabled, accel, gas, idx, stopping, starting, car_fingerprint): |
|
|
|
commands = [] |
|
|
|
commands = [] |
|
|
|
bus = get_pt_bus(car_fingerprint, has_relay) |
|
|
|
bus = get_pt_bus(car_fingerprint) |
|
|
|
|
|
|
|
|
|
|
|
control_on = 5 if enabled else 0 |
|
|
|
control_on = 5 if enabled else 0 |
|
|
|
# no gas = -30000 |
|
|
|
# no gas = -30000 |
|
|
@ -84,31 +79,31 @@ def create_acc_commands(packer, enabled, accel, gas, idx, stopping, starting, ca |
|
|
|
|
|
|
|
|
|
|
|
return commands |
|
|
|
return commands |
|
|
|
|
|
|
|
|
|
|
|
def create_steering_control(packer, apply_steer, lkas_active, car_fingerprint, idx, has_relay, radar_disabled): |
|
|
|
def create_steering_control(packer, apply_steer, lkas_active, car_fingerprint, idx, radar_disabled): |
|
|
|
values = { |
|
|
|
values = { |
|
|
|
"STEER_TORQUE": apply_steer if lkas_active else 0, |
|
|
|
"STEER_TORQUE": apply_steer if lkas_active else 0, |
|
|
|
"STEER_TORQUE_REQUEST": lkas_active, |
|
|
|
"STEER_TORQUE_REQUEST": lkas_active, |
|
|
|
} |
|
|
|
} |
|
|
|
bus = get_lkas_cmd_bus(car_fingerprint, has_relay, radar_disabled) |
|
|
|
bus = get_lkas_cmd_bus(car_fingerprint, radar_disabled) |
|
|
|
return packer.make_can_msg("STEERING_CONTROL", bus, values, idx) |
|
|
|
return packer.make_can_msg("STEERING_CONTROL", bus, values, idx) |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
def create_bosch_supplemental_1(packer, car_fingerprint, idx, has_relay): |
|
|
|
def create_bosch_supplemental_1(packer, car_fingerprint, idx): |
|
|
|
# non-active params |
|
|
|
# non-active params |
|
|
|
values = { |
|
|
|
values = { |
|
|
|
"SET_ME_X04": 0x04, |
|
|
|
"SET_ME_X04": 0x04, |
|
|
|
"SET_ME_X80": 0x80, |
|
|
|
"SET_ME_X80": 0x80, |
|
|
|
"SET_ME_X10": 0x10, |
|
|
|
"SET_ME_X10": 0x10, |
|
|
|
} |
|
|
|
} |
|
|
|
bus = get_lkas_cmd_bus(car_fingerprint, has_relay) |
|
|
|
bus = get_lkas_cmd_bus(car_fingerprint) |
|
|
|
return packer.make_can_msg("BOSCH_SUPPLEMENTAL_1", bus, values, idx) |
|
|
|
return packer.make_can_msg("BOSCH_SUPPLEMENTAL_1", bus, values, idx) |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
def create_ui_commands(packer, pcm_speed, hud, car_fingerprint, is_metric, idx, has_relay, openpilot_longitudinal_control, stock_hud): |
|
|
|
def create_ui_commands(packer, pcm_speed, hud, car_fingerprint, is_metric, idx, openpilot_longitudinal_control, stock_hud): |
|
|
|
commands = [] |
|
|
|
commands = [] |
|
|
|
bus_pt = get_pt_bus(car_fingerprint, has_relay) |
|
|
|
bus_pt = get_pt_bus(car_fingerprint) |
|
|
|
radar_disabled = car_fingerprint in HONDA_BOSCH and openpilot_longitudinal_control |
|
|
|
radar_disabled = car_fingerprint in HONDA_BOSCH and openpilot_longitudinal_control |
|
|
|
bus_lkas = get_lkas_cmd_bus(car_fingerprint, has_relay, radar_disabled) |
|
|
|
bus_lkas = get_lkas_cmd_bus(car_fingerprint, radar_disabled) |
|
|
|
|
|
|
|
|
|
|
|
if openpilot_longitudinal_control: |
|
|
|
if openpilot_longitudinal_control: |
|
|
|
if car_fingerprint in HONDA_BOSCH: |
|
|
|
if car_fingerprint in HONDA_BOSCH: |
|
|
@ -158,10 +153,10 @@ def create_ui_commands(packer, pcm_speed, hud, car_fingerprint, is_metric, idx, |
|
|
|
return commands |
|
|
|
return commands |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
def spam_buttons_command(packer, button_val, idx, car_fingerprint, has_relay): |
|
|
|
def spam_buttons_command(packer, button_val, idx, car_fingerprint): |
|
|
|
values = { |
|
|
|
values = { |
|
|
|
'CRUISE_BUTTONS': button_val, |
|
|
|
'CRUISE_BUTTONS': button_val, |
|
|
|
'CRUISE_SETTING': 0, |
|
|
|
'CRUISE_SETTING': 0, |
|
|
|
} |
|
|
|
} |
|
|
|
bus = get_pt_bus(car_fingerprint, has_relay) |
|
|
|
bus = get_pt_bus(car_fingerprint) |
|
|
|
return packer.make_can_msg("SCM_BUTTONS", bus, values, idx) |
|
|
|
return packer.make_can_msg("SCM_BUTTONS", bus, values, idx) |
|
|
|