mirror of
https://github.com/sunnypilot/sunnypilot.git
synced 2026-07-23 23:02:04 +08:00
Hyundai CAN Longitudinal: Lenient parsing for auto-enabled radar configs
This commit is contained in:
@@ -78,7 +78,6 @@ class CarInterface(CarInterfaceBase):
|
||||
|
||||
if 0x2AB in fingerprint[0]:
|
||||
ret.spFlags |= HyundaiFlagsSP.SP_ENHANCED_SCC.value
|
||||
ret.radarUnavailable = False
|
||||
|
||||
if 0x53E in fingerprint[2]:
|
||||
ret.spFlags |= HyundaiFlagsSP.SP_LKAS12.value
|
||||
@@ -94,14 +93,12 @@ class CarInterface(CarInterfaceBase):
|
||||
ret.experimentalLongitudinalAvailable = candidate not in (CANFD_UNSUPPORTED_LONGITUDINAL_CAR | CANFD_RADAR_SCC_CAR | NON_SCC_CAR)
|
||||
if ret.flags & HyundaiFlags.CANFD_CAMERA_SCC and not hda2:
|
||||
ret.spFlags |= HyundaiFlagsSP.SP_CAMERA_SCC_LEAD.value
|
||||
ret.radarUnavailable = False
|
||||
else:
|
||||
ret.longitudinalTuning.kpV = [0.5]
|
||||
ret.longitudinalTuning.kiV = [0.0]
|
||||
ret.experimentalLongitudinalAvailable = candidate not in (UNSUPPORTED_LONGITUDINAL_CAR | NON_SCC_CAR)
|
||||
if candidate in CAMERA_SCC_CAR:
|
||||
ret.spFlags |= HyundaiFlagsSP.SP_CAMERA_SCC_LEAD.value
|
||||
ret.radarUnavailable = False
|
||||
ret.openpilotLongitudinalControl = experimental_long and ret.experimentalLongitudinalAvailable
|
||||
ret.pcmCruise = not ret.openpilotLongitudinalControl
|
||||
|
||||
@@ -112,6 +109,10 @@ class CarInterface(CarInterfaceBase):
|
||||
ret.longitudinalActuatorDelayLowerBound = 0.5
|
||||
ret.longitudinalActuatorDelayUpperBound = 0.5
|
||||
|
||||
if DBC[ret.carFingerprint]["radar"] is None:
|
||||
if ret.spFlags & (HyundaiFlagsSP.SP_ENHANCED_SCC | HyundaiFlagsSP.SP_CAMERA_SCC_LEAD):
|
||||
ret.radarUnavailable = False
|
||||
|
||||
# *** feature detection ***
|
||||
if candidate in CANFD_CAR:
|
||||
ret.enableBsm = 0x1e5 in fingerprint[CAN.ECAN]
|
||||
|
||||
@@ -48,6 +48,8 @@ class RadarInterface(RadarInterfaceBase):
|
||||
self.radar_off_can = CP.radarUnavailable
|
||||
self.rcp = get_radar_can_parser(CP)
|
||||
|
||||
self.sp_radar_tracks = CP.spFlags & HyundaiFlagsSP.SP_RADAR_TRACKS
|
||||
|
||||
def update(self, can_strings):
|
||||
if self.radar_off_can or (self.rcp is None):
|
||||
return super().update(None)
|
||||
@@ -61,6 +63,12 @@ class RadarInterface(RadarInterfaceBase):
|
||||
rr = self._update(self.updated_messages)
|
||||
self.updated_messages.clear()
|
||||
|
||||
radar_error = []
|
||||
if rr is not None:
|
||||
radar_error = rr.errors
|
||||
if list(radar_error) and self.sp_radar_tracks:
|
||||
return super().update(None)
|
||||
|
||||
return rr
|
||||
|
||||
def _update(self, updated_messages):
|
||||
|
||||
Reference in New Issue
Block a user