diff --git a/selfdrive/car/honda/hondacan.py b/selfdrive/car/honda/hondacan.py index a48c199d9f..245d2511f1 100644 --- a/selfdrive/car/honda/hondacan.py +++ b/selfdrive/car/honda/hondacan.py @@ -2,7 +2,7 @@ import struct import common.numpy_fast as np from selfdrive.config import Conversions as CV -from selfdrive.car.honda.values import CAR, HONDA_BOSCH +from selfdrive.car.honda.values import CAR, HONDA_BOSCH, VEHICLE_STATE_MSG # *** Honda specific *** def can_cksum(mm): @@ -126,28 +126,14 @@ def create_radar_commands(v_ego, car_fingerprint, new_radar_config, idx): msg_0x300 = ("\xf9" + speed + "\x8a\xd0" + ("\x20" if idx == 0 or idx == 3 else "\x00") + "\x00\x00") + msg_0x301 = VEHICLE_STATE_MSG[car_fingerprint] + idx_0x300 = idx if car_fingerprint == CAR.CIVIC: - msg_0x301 = "\x02\x38\x44\x32\x4f\x00\x00" idx_offset = 0xc if new_radar_config else 0x8 # radar in civic 2018 requires 0xc - commands.append(make_can_msg(0x300, msg_0x300, idx + idx_offset, 1)) - else: - if car_fingerprint == CAR.CRV: - msg_0x301 = "\x00\x00\x50\x02\x51\x00\x00" - elif car_fingerprint == CAR.ACURA_RDX: - msg_0x301 = "\x0f\x57\x4f\x02\x5a\x00\x00" - elif car_fingerprint == CAR.ODYSSEY: - msg_0x301 = "\x00\x00\x56\x02\x55\x00\x00" - elif car_fingerprint == CAR.ACURA_ILX: - msg_0x301 = "\x0f\x18\x51\x02\x5a\x00\x00" - elif car_fingerprint == CAR.PILOT: - msg_0x301 = "\x00\x00\x56\x02\x58\x00\x00" - elif car_fingerprint == CAR.PILOT_2019: - msg_0x301 = "\x00\x00\x58\x02\x5c\x00\x00" - elif car_fingerprint == CAR.RIDGELINE: - msg_0x301 = "\x00\x00\x56\x02\x57\x00\x00" - commands.append(make_can_msg(0x300, msg_0x300, idx, 1)) + idx_0x300 += idx_offset + commands.append(make_can_msg(0x300, msg_0x300, idx_0x300, 1)) commands.append(make_can_msg(0x301, msg_0x301, idx, 1)) return commands diff --git a/selfdrive/car/honda/values.py b/selfdrive/car/honda/values.py index 243849431c..c2bb9cc6af 100644 --- a/selfdrive/car/honda/values.py +++ b/selfdrive/car/honda/values.py @@ -145,5 +145,18 @@ SPEED_FACTOR = { CAR.RIDGELINE: 1., } +# This message sends car info to the radar that is specific to the model. You +# can determine this message by monitoring the OEM system. +VEHICLE_STATE_MSG = { + CAR.ACURA_ILX: "\x0f\x18\x51\x02\x5a\x00\x00", + CAR.ACURA_RDX: "\x0f\x57\x4f\x02\x5a\x00\x00", + CAR.CIVIC: "\x02\x38\x44\x32\x4f\x00\x00", + CAR.CRV: "\x00\x00\x50\x02\x51\x00\x00", + CAR.ODYSSEY: "\x00\x00\x56\x02\x55\x00\x00", + CAR.PILOT: "\x00\x00\x56\x02\x58\x00\x00", + CAR.PILOT_2019: "\x00\x00\x58\x02\x5c\x00\x00", + CAR.RIDGELINE: "\x00\x00\x56\x02\x57\x00\x00", +} + # TODO: get these from dbc file HONDA_BOSCH = [CAR.ACCORD, CAR.ACCORD_15, CAR.CIVIC_HATCH, CAR.CRV_5G]