mirror of
https://github.com/MoreTore/openpilot.git
synced 2026-08-07 01:06:01 +08:00
test
This commit is contained in:
@@ -216,12 +216,8 @@ class CarController(CarControllerBase):
|
||||
|
||||
# prevent LFA from activating on LKA steering cars by sending "no lane lines detected" to ADAS ECU
|
||||
if self.frame % 5 == 0 and lka_steering:
|
||||
show_ioniq_6_lane_change_ui = self.CP.carFingerprint == CAR.HYUNDAI_IONIQ_6 and \
|
||||
bool(self.CP.flags & HyundaiFlags.CANFD_LKA_STEERING_ALT) and CC.enabled
|
||||
can_sends.append(hyundaicanfd.create_suppress_lfa(self.packer, self.CAN, CS.lfa_block_msg,
|
||||
self.CP.flags & HyundaiFlags.CANFD_LKA_STEERING_ALT,
|
||||
left_lane_change=show_ioniq_6_lane_change_ui and CC.leftBlinker and not CC.rightBlinker,
|
||||
right_lane_change=show_ioniq_6_lane_change_ui and CC.rightBlinker and not CC.leftBlinker))
|
||||
self.CP.flags & HyundaiFlags.CANFD_LKA_STEERING_ALT))
|
||||
|
||||
# LFA and HDA icons
|
||||
if self.frame % 5 == 0 and (not lka_steering or lka_steering_long):
|
||||
|
||||
@@ -4,23 +4,6 @@ from opendbc.car import CanBusBase
|
||||
from opendbc.car.crc import CRC16_XMODEM
|
||||
from opendbc.car.hyundai.values import HyundaiFlags
|
||||
|
||||
IONIQ_6_LANE_CHANGE_CAM_0X362 = {
|
||||
"left": {
|
||||
"LEFT_LANE_LINE": 3,
|
||||
"RIGHT_LANE_LINE": 3,
|
||||
"BYTE5": 0,
|
||||
"BYTE6": 17,
|
||||
"BYTE8": 17,
|
||||
},
|
||||
"right": {
|
||||
"LEFT_LANE_LINE": 3,
|
||||
"RIGHT_LANE_LINE": 3,
|
||||
"BYTE5": 1,
|
||||
"BYTE6": 18,
|
||||
"BYTE8": 8,
|
||||
},
|
||||
}
|
||||
|
||||
|
||||
def _set_value(msg: bytearray, sig, ival: int) -> None:
|
||||
i = sig.lsb // 8
|
||||
@@ -150,7 +133,7 @@ def create_steering_messages(packer, CP, CAN, enabled, lat_active, apply_torque,
|
||||
return ret
|
||||
|
||||
|
||||
def create_suppress_lfa(packer, CAN, lfa_block_msg, lka_steering_alt, left_lane_change=False, right_lane_change=False):
|
||||
def create_suppress_lfa(packer, CAN, lfa_block_msg, lka_steering_alt):
|
||||
suppress_msg = "CAM_0x362" if lka_steering_alt else "CAM_0x2a4"
|
||||
msg_bytes = 32 if lka_steering_alt else 24
|
||||
|
||||
@@ -160,10 +143,6 @@ def create_suppress_lfa(packer, CAN, lfa_block_msg, lka_steering_alt, left_lane_
|
||||
values["SET_ME_0_2"] = 0
|
||||
values["LEFT_LANE_LINE"] = 0
|
||||
values["RIGHT_LANE_LINE"] = 0
|
||||
if lka_steering_alt and left_lane_change ^ right_lane_change:
|
||||
direction = "left" if left_lane_change else "right"
|
||||
# These fields are the stable stock lane-change markers from the Ioniq 6 camera message.
|
||||
values.update(IONIQ_6_LANE_CHANGE_CAM_0X362[direction])
|
||||
return packer.make_can_msg(suppress_msg, CAN.ACAN, values)
|
||||
|
||||
|
||||
|
||||
@@ -3,7 +3,8 @@ import math
|
||||
from opendbc.can import CANParser
|
||||
from opendbc.car import Bus, structs
|
||||
from opendbc.car.interfaces import RadarInterfaceBase
|
||||
from opendbc.car.hyundai.values import DBC
|
||||
from opendbc.car.hyundai.values import CAR, DBC
|
||||
from openpilot.common.swaglog import cloudlog
|
||||
|
||||
RADAR_START_ADDR = 0x500
|
||||
RADAR_MSG_COUNT = 32
|
||||
@@ -27,9 +28,29 @@ class RadarInterface(RadarInterfaceBase):
|
||||
self.track_id = 0
|
||||
|
||||
self.radar_off_can = CP.radarUnavailable
|
||||
# Probe whether radar tracks still exist on the Ioniq 6 while OP long is active,
|
||||
# without changing planner behavior yet.
|
||||
self.ioniq_6_radar_probe = CP.carFingerprint == CAR.HYUNDAI_IONIQ_6 and CP.openpilotLongitudinalControl and self.radar_off_can
|
||||
self.ioniq_6_radar_probe_logged = False
|
||||
self.ioniq_6_radar_probe_updates = 0
|
||||
self.rcp = get_radar_can_parser(CP)
|
||||
|
||||
def update(self, can_strings):
|
||||
if self.ioniq_6_radar_probe and self.rcp is not None and not self.ioniq_6_radar_probe_logged:
|
||||
vls = self.rcp.update(can_strings)
|
||||
self.updated_messages.update(vls)
|
||||
self.ioniq_6_radar_probe_updates += 1
|
||||
|
||||
if self.trigger_msg in self.updated_messages:
|
||||
rr = self._update(self.updated_messages)
|
||||
cloudlog.warning(f"Ioniq 6 radar probe: saw {len(rr.points)} radar tracks with radarUnavailable forced on")
|
||||
self.updated_messages.clear()
|
||||
self.ioniq_6_radar_probe_logged = True
|
||||
elif self.ioniq_6_radar_probe_updates >= 500:
|
||||
cloudlog.warning("Ioniq 6 radar probe: no radar track frames observed after startup")
|
||||
self.ioniq_6_radar_probe_logged = True
|
||||
self.updated_messages.clear()
|
||||
|
||||
if self.radar_off_can or (self.rcp is None):
|
||||
return super().update(None)
|
||||
|
||||
|
||||
@@ -286,43 +286,6 @@ class TestHyundaiFingerprint:
|
||||
assert decode_ioniq_6_blindspot_radar_state(0x1A) == (True, True)
|
||||
assert decode_ioniq_6_blindspot_radar_state(10.0) == (False, True)
|
||||
|
||||
def test_ioniq_6_lane_change_suppress_lfa_uses_stock_camera_markers(self):
|
||||
CP = CarParams.new_message()
|
||||
CP.carFingerprint = CAR.HYUNDAI_IONIQ_6
|
||||
CP.flags = int(HyundaiFlags.CANFD | HyundaiFlags.CANFD_LKA_STEERING | HyundaiFlags.CANFD_LKA_STEERING_ALT)
|
||||
|
||||
packer = CANPacker(DBC[CP.carFingerprint][Bus.pt])
|
||||
can_bus = CanBus(CP)
|
||||
parser = CANParser(DBC[CP.carFingerprint][Bus.pt], [("CAM_0x362", 0)], can_bus.ACAN)
|
||||
|
||||
lfa_block_msg = {
|
||||
"COUNTER": 9,
|
||||
**{f"BYTE{i}": i for i in range(3, 32) if i != 7},
|
||||
}
|
||||
|
||||
parser.update([(1, [hyundaicanfd.create_suppress_lfa(packer, can_bus, lfa_block_msg, True)])])
|
||||
assert parser.vl["CAM_0x362"]["LEFT_LANE_LINE"] == 0
|
||||
assert parser.vl["CAM_0x362"]["RIGHT_LANE_LINE"] == 0
|
||||
assert parser.vl["CAM_0x362"]["BYTE5"] == 5
|
||||
assert parser.vl["CAM_0x362"]["BYTE6"] == 6
|
||||
assert parser.vl["CAM_0x362"]["BYTE8"] == 8
|
||||
|
||||
parser.update([(2, [hyundaicanfd.create_suppress_lfa(packer, can_bus, lfa_block_msg, True, right_lane_change=True)])])
|
||||
assert parser.vl["CAM_0x362"]["LEFT_LANE_LINE"] == 3
|
||||
assert parser.vl["CAM_0x362"]["RIGHT_LANE_LINE"] == 3
|
||||
assert parser.vl["CAM_0x362"]["BYTE5"] == 1
|
||||
assert parser.vl["CAM_0x362"]["BYTE6"] == 18
|
||||
assert parser.vl["CAM_0x362"]["BYTE8"] == 8
|
||||
assert parser.vl["CAM_0x362"]["BYTE10"] == 10
|
||||
|
||||
parser.update([(3, [hyundaicanfd.create_suppress_lfa(packer, can_bus, lfa_block_msg, True, left_lane_change=True)])])
|
||||
assert parser.vl["CAM_0x362"]["LEFT_LANE_LINE"] == 3
|
||||
assert parser.vl["CAM_0x362"]["RIGHT_LANE_LINE"] == 3
|
||||
assert parser.vl["CAM_0x362"]["BYTE5"] == 0
|
||||
assert parser.vl["CAM_0x362"]["BYTE6"] == 17
|
||||
assert parser.vl["CAM_0x362"]["BYTE8"] == 17
|
||||
assert parser.vl["CAM_0x362"]["BYTE10"] == 10
|
||||
|
||||
def test_sportage_angle_jerk_override_is_scoped(self):
|
||||
sportage = CarParams.new_message()
|
||||
sportage.carFingerprint = CAR.KIA_SPORTAGE_HEV_2026
|
||||
|
||||
Reference in New Issue
Block a user