Hyundai Longitudinal: Enable radar tracks based on availability

This commit is contained in:
Jason Wen
2024-08-10 10:47:30 -04:00
parent c70db1030c
commit 490787f6b9
5 changed files with 28 additions and 1 deletions
+1
View File
@@ -137,6 +137,7 @@ struct CarEvent @0x9b1657f34caf3ad3 {
speedLimitPreActive @139;
speedLimitConfirmed @140;
torqueNNLoad @141;
hyundaiRadarTracksAvailable @142;
radarCanErrorDEPRECATED @15;
communityFeatureDisallowedDEPRECATED @62;
+1
View File
@@ -264,6 +264,7 @@ std::unordered_map<std::string, uint32_t> keys = {
{"HkgSmoothStop", PERSISTENT | BACKUP},
{"HotspotOnBoot", PERSISTENT},
{"HotspotOnBootConfirmed", PERSISTENT},
{"HyundaiRadarTracksAvailable", PERSISTENT | BACKUP},
{"LastCarModel", PERSISTENT | BACKUP},
{"LastSpeedLimitSignTap", PERSISTENT},
{"LastSunnylinkPingTime", CLEAR_ON_MANAGER_START},
+19 -1
View File
@@ -1,6 +1,7 @@
from cereal import car
from panda import Panda
from openpilot.common.params import Params
from openpilot.selfdrive.car.car_helpers import can_fingerprint, get_one_can
from openpilot.selfdrive.car.hyundai.enable_radar_tracks import enable_radar_tracks
from openpilot.selfdrive.car.hyundai.hyundaicanfd import CanBus
from openpilot.selfdrive.car.hyundai.values import HyundaiFlags, HyundaiFlagsSP, CAR, DBC, CANFD_CAR, CAMERA_SCC_CAR, CANFD_RADAR_SCC_CAR, \
@@ -125,7 +126,8 @@ class CarInterface(CarInterfaceBase):
if ret.flags & HyundaiFlags.MANDO_RADAR and ret.radarUnavailable:
ret.spFlags |= HyundaiFlagsSP.SP_RADAR_TRACKS.value
ret.radarUnavailable = False
if Params().get_bool("HyundaiRadarTracksAvailable"):
ret.radarUnavailable = False
# *** panda safety config ***
if candidate in CANFD_CAR:
@@ -199,7 +201,20 @@ class CarInterface(CarInterfaceBase):
# some CAN platforms are able to enable radar tracks config at the radar ECU,
# but the config is reset after ignition cycle
if CP.spFlags & HyundaiFlagsSP.SP_RADAR_TRACKS:
params = Params()
enable_radar_tracks(logcan, sendcan, bus=0, addr=0x7d0, config_data_id=b'\x01\x42')
rt_avail = params.get_bool("HyundaiRadarTracksAvailable")
rt_avail_cache = params.get_bool("HyundaiRadarTracksAvailableCache")
if rt_avail and rt_avail_cache:
pass
elif rt_avail != rt_avail_cache:
params.put_bool_nonblocking("HyundaiRadarTracksAvailableCache", rt_avail)
else:
_, fingerprint = can_fingerprint(lambda: get_one_can(logcan))
if RADAR_START_ADDR in fingerprint[1] and DBC[CP.carFingerprint]["radar"] is not None:
params.put_bool_nonblocking("HyundaiRadarTracksAvailable", True)
elif RADAR_START_ADDR not in fingerprint[1] or DBC[CP.carFingerprint]["radar"] is None:
params.put_bool_nonblocking("HyundaiRadarTracksAvailable", False)
def _update(self, c):
ret = self.CS.update(self.cp, self.cp_cam)
@@ -266,6 +281,9 @@ class CarInterface(CarInterfaceBase):
if self.low_speed_alert and self.CS.madsEnabled:
events.add(car.CarEvent.EventName.belowSteerSpeed)
if self.CS.params_list.hyundai_radar_tracks_available and not self.CS.params_list.hyundai_radar_tracks_available_cache:
events.add(car.CarEvent.EventName.hyundaiRadarTracksAvailable)
ret.customStockLong = self.CS.update_custom_stock_long(self.CC.cruise_button, self.CC.final_speed_kph,
self.CC.target_speed, self.CC.v_set_dis,
self.CC.speed_diff, self.CC.button_type)
+4
View File
@@ -9,6 +9,8 @@ class ParamManager:
"acc_mads_combo": False,
"below_speed_pause": False,
"experimental_mode": False,
"hyundai_radar_tracks_available": False,
"hyundai_radar_tracks_available_cache": False,
"is_metric": False,
"last_speed_limit_sign_tap": False,
"mads_main_toggle": False,
@@ -35,6 +37,8 @@ class ParamManager:
"acc_mads_combo": params.get_bool("AccMadsCombo"),
"below_speed_pause": params.get_bool("BelowSpeedPause"),
"experimental_mode": params.get_bool("ExperimentalMode"),
"hyundai_radar_tracks_available": params.get_bool("HyundaiRadarTracksAvailable"),
"hyundai_radar_tracks_available_cache": params.get_bool("HyundaiRadarTracksAvailableCache"),
"is_metric": params.get_bool("IsMetric"),
"last_speed_limit_sign_tap": params.get_bool("LastSpeedLimitSignTap"),
"mads_main_toggle": params.get_bool("MadsCruiseMain"),
+3
View File
@@ -1141,6 +1141,9 @@ EVENTS: dict[int, dict[str, Alert | AlertCallbackType]] = {
ET.PERMANENT: torque_nn_load_alert,
},
EventName.hyundaiRadarTracksAvailable: {
ET.PERMANENT: NormalPermanentAlert("Radar tracks available. Restart the car to initialize")
}
}