|
|
|
@ -57,6 +57,8 @@ def get_can_signals(CP): |
|
|
|
|
("CRUISE", 10), |
|
|
|
|
("POWERTRAIN_DATA", 100), |
|
|
|
|
("VSA_STATUS", 50), |
|
|
|
|
("STEER_STATUS", 100), |
|
|
|
|
("STEER_MOTOR_TORQUE", 0), # TODO: not on every car |
|
|
|
|
] |
|
|
|
|
|
|
|
|
|
if CP.carFingerprint == CAR.ODYSSEY_CHN: |
|
|
|
@ -84,12 +86,19 @@ def get_can_signals(CP): |
|
|
|
|
if CP.carFingerprint not in (CAR.ACCORDH, CAR.CIVIC_BOSCH, CAR.CIVIC_BOSCH_DIESEL, CAR.CRV_HYBRID, CAR.INSIGHT): |
|
|
|
|
signals += [("BRAKE_PRESSED", "BRAKE_MODULE", 0)] |
|
|
|
|
checks += [("BRAKE_MODULE", 50)] |
|
|
|
|
signals += [("CAR_GAS", "GAS_PEDAL_2", 0), |
|
|
|
|
|
|
|
|
|
signals += [ |
|
|
|
|
("CAR_GAS", "GAS_PEDAL_2", 0), |
|
|
|
|
("MAIN_ON", "SCM_FEEDBACK", 0), |
|
|
|
|
("CRUISE_CONTROL_LABEL", "ACC_HUD", 0), |
|
|
|
|
("EPB_STATE", "EPB_STATUS", 0), |
|
|
|
|
("CRUISE_SPEED", "ACC_HUD", 0)] |
|
|
|
|
checks += [("GAS_PEDAL_2", 100)] |
|
|
|
|
("CRUISE_SPEED", "ACC_HUD", 0) |
|
|
|
|
] |
|
|
|
|
checks += [ |
|
|
|
|
("ACC_HUD", 10), |
|
|
|
|
("EPB_STATUS", 50), |
|
|
|
|
("GAS_PEDAL_2", 100), |
|
|
|
|
] |
|
|
|
|
if CP.openpilotLongitudinalControl: |
|
|
|
|
signals += [("BRAKE_ERROR_1", "STANDSTILL", 1), |
|
|
|
|
("BRAKE_ERROR_2", "STANDSTILL", 1)] |
|
|
|
@ -119,27 +128,43 @@ def get_can_signals(CP): |
|
|
|
|
("DOOR_OPEN_RL", "DOORS_STATUS", 1), |
|
|
|
|
("DOOR_OPEN_RR", "DOORS_STATUS", 1), |
|
|
|
|
("WHEELS_MOVING", "STANDSTILL", 1)] |
|
|
|
|
checks += [("DOORS_STATUS", 3)] |
|
|
|
|
checks += [ |
|
|
|
|
("DOORS_STATUS", 3), |
|
|
|
|
("STANDSTILL", 50), |
|
|
|
|
] |
|
|
|
|
|
|
|
|
|
if CP.carFingerprint == CAR.CIVIC: |
|
|
|
|
signals += [("CAR_GAS", "GAS_PEDAL_2", 0), |
|
|
|
|
("MAIN_ON", "SCM_FEEDBACK", 0), |
|
|
|
|
("IMPERIAL_UNIT", "HUD_SETTING", 0), |
|
|
|
|
("EPB_STATE", "EPB_STATUS", 0)] |
|
|
|
|
checks += [ |
|
|
|
|
("HUD_SETTING", 50), |
|
|
|
|
("EPB_STATUS", 50), |
|
|
|
|
("GAS_PEDAL_2", 100), |
|
|
|
|
] |
|
|
|
|
elif CP.carFingerprint == CAR.ACURA_ILX: |
|
|
|
|
signals += [("CAR_GAS", "GAS_PEDAL_2", 0), |
|
|
|
|
("MAIN_ON", "SCM_BUTTONS", 0)] |
|
|
|
|
checks += [ |
|
|
|
|
("GAS_PEDAL_2", 100), |
|
|
|
|
] |
|
|
|
|
elif CP.carFingerprint in (CAR.CRV, CAR.CRV_EU, CAR.ACURA_RDX, CAR.PILOT_2019, CAR.RIDGELINE): |
|
|
|
|
signals += [("MAIN_ON", "SCM_BUTTONS", 0)] |
|
|
|
|
elif CP.carFingerprint == CAR.FIT: |
|
|
|
|
signals += [("CAR_GAS", "GAS_PEDAL_2", 0), |
|
|
|
|
("MAIN_ON", "SCM_BUTTONS", 0), |
|
|
|
|
("BRAKE_HOLD_ACTIVE", "VSA_STATUS", 0)] |
|
|
|
|
checks += [ |
|
|
|
|
("GAS_PEDAL_2", 100), |
|
|
|
|
] |
|
|
|
|
elif CP.carFingerprint == CAR.HRV: |
|
|
|
|
signals += [("CAR_GAS", "GAS_PEDAL", 0), |
|
|
|
|
("MAIN_ON", "SCM_BUTTONS", 0), |
|
|
|
|
("BRAKE_HOLD_ACTIVE", "VSA_STATUS", 0)] |
|
|
|
|
|
|
|
|
|
checks += [ |
|
|
|
|
("GAS_PEDAL", 100), |
|
|
|
|
] |
|
|
|
|
elif CP.carFingerprint == CAR.ODYSSEY: |
|
|
|
|
signals += [("MAIN_ON", "SCM_FEEDBACK", 0), |
|
|
|
|
("EPB_STATE", "EPB_STATUS", 0)] |
|
|
|
@ -147,6 +172,9 @@ def get_can_signals(CP): |
|
|
|
|
elif CP.carFingerprint == CAR.PILOT: |
|
|
|
|
signals += [("MAIN_ON", "SCM_BUTTONS", 0), |
|
|
|
|
("CAR_GAS", "GAS_PEDAL_2", 0)] |
|
|
|
|
checks += [ |
|
|
|
|
("GAS_PEDAL_2", 0), # TODO: fix this freq, seems this signal isn't present at all on some models |
|
|
|
|
] |
|
|
|
|
elif CP.carFingerprint == CAR.ODYSSEY_CHN: |
|
|
|
|
signals += [("MAIN_ON", "SCM_BUTTONS", 0), |
|
|
|
|
("EPB_STATE", "EPB_STATUS", 0)] |
|
|
|
@ -325,7 +353,7 @@ class CarState(CarStateBase): |
|
|
|
|
self.stock_hud = cp_cam.vl["ACC_HUD"] |
|
|
|
|
self.stock_brake = cp_cam.vl["BRAKE_COMMAND"] |
|
|
|
|
|
|
|
|
|
if self.CP.carFingerprint in (CAR.CRV_5G, ): |
|
|
|
|
if self.CP.enableBsm and self.CP.carFingerprint in (CAR.CRV_5G, ): |
|
|
|
|
# BSM messages are on B-CAN, requires a panda forwarding B-CAN messages to CAN 0 |
|
|
|
|
# more info here: https://github.com/commaai/openpilot/pull/1867 |
|
|
|
|
ret.leftBlindspot = cp_body.vl["BSM_STATUS_LEFT"]['BSM_ALERT'] == 1 |
|
|
|
@ -343,9 +371,17 @@ class CarState(CarStateBase): |
|
|
|
|
def get_cam_can_parser(CP): |
|
|
|
|
signals = [] |
|
|
|
|
|
|
|
|
|
# all hondas except CRV, RDX and 2019 Odyssey@China use 0xe4 for steering |
|
|
|
|
checks = [(0xe4, 100)] |
|
|
|
|
if CP.carFingerprint in [CAR.CRV, CAR.CRV_EU, CAR.ACURA_RDX, CAR.ODYSSEY_CHN]: |
|
|
|
|
checks = [(0x194, 100)] |
|
|
|
|
|
|
|
|
|
if CP.carFingerprint in HONDA_BOSCH: |
|
|
|
|
signals += [("ACCEL_COMMAND", "ACC_CONTROL", 0), |
|
|
|
|
("AEB_STATUS", "ACC_CONTROL", 0)] |
|
|
|
|
checks += [ |
|
|
|
|
("ACC_CONTROL", 0), # TODO: fix freq, this seems to be on the wrong bus |
|
|
|
|
] |
|
|
|
|
else: |
|
|
|
|
signals += [("COMPUTER_BRAKE", "BRAKE_COMMAND", 0), |
|
|
|
|
("AEB_REQ_1", "BRAKE_COMMAND", 0), |
|
|
|
@ -355,24 +391,24 @@ class CarState(CarStateBase): |
|
|
|
|
("FCM_OFF_2", "ACC_HUD", 0), |
|
|
|
|
("FCM_PROBLEM", "ACC_HUD", 0), |
|
|
|
|
("ICONS", "ACC_HUD", 0)] |
|
|
|
|
|
|
|
|
|
# all hondas except CRV, RDX and 2019 Odyssey@China use 0xe4 for steering |
|
|
|
|
checks = [(0xe4, 100)] |
|
|
|
|
if CP.carFingerprint in [CAR.CRV, CAR.CRV_EU, CAR.ACURA_RDX, CAR.ODYSSEY_CHN]: |
|
|
|
|
checks = [(0x194, 100)] |
|
|
|
|
checks += [ |
|
|
|
|
("ACC_HUD", 10), |
|
|
|
|
("BRAKE_COMMAND", 50), |
|
|
|
|
] |
|
|
|
|
|
|
|
|
|
return CANParser(DBC[CP.carFingerprint]['pt'], signals, checks, 2) |
|
|
|
|
|
|
|
|
|
@staticmethod |
|
|
|
|
def get_body_can_parser(CP): |
|
|
|
|
signals = [] |
|
|
|
|
checks = [] |
|
|
|
|
|
|
|
|
|
if CP.carFingerprint == CAR.CRV_5G: |
|
|
|
|
signals += [("BSM_ALERT", "BSM_STATUS_RIGHT", 0), |
|
|
|
|
if CP.enableBsm and CP.carFingerprint == CAR.CRV_5G: |
|
|
|
|
signals = [("BSM_ALERT", "BSM_STATUS_RIGHT", 0), |
|
|
|
|
("BSM_ALERT", "BSM_STATUS_LEFT", 0)] |
|
|
|
|
|
|
|
|
|
# TODO: get freqs |
|
|
|
|
checks = [ |
|
|
|
|
("BSM_STATUS_LEFT", 0), |
|
|
|
|
("BSM_STATUS_RIGHT", 0), |
|
|
|
|
] |
|
|
|
|
bus_body = 0 # B-CAN is forwarded to ACC-CAN radar side (CAN 0 on fake ethernet port) |
|
|
|
|
return CANParser(DBC[CP.carFingerprint]['body'], signals, checks, bus_body) |
|
|
|
|
|
|
|
|
|
return None |
|
|
|
|