mirror of
https://github.com/sunnypilot/sunnypilot.git
synced 2026-08-24 06:33:48 +08:00
Use spFlags for sunnypilot specific features (#171)
This commit is contained in:
@@ -2,7 +2,7 @@
|
||||
from cereal import car
|
||||
from panda import Panda
|
||||
from selfdrive.car import STD_CARGO_KG, get_safety_config, create_mads_event
|
||||
from selfdrive.car.chrysler.values import CAR, RAM_HD, RAM_DT, RAM_CARS, ChryslerFlags, BUTTON_STATES
|
||||
from selfdrive.car.chrysler.values import CAR, RAM_HD, RAM_DT, RAM_CARS, ChryslerFlags, ChryslerFlagsSP, BUTTON_STATES
|
||||
from selfdrive.car.interfaces import CarInterfaceBase
|
||||
|
||||
ButtonType = car.CarState.ButtonEvent.Type
|
||||
@@ -82,7 +82,7 @@ class CarInterface(CarInterfaceBase):
|
||||
ret.mass = 3405. + STD_CARGO_KG
|
||||
ret.minSteerSpeed = 16
|
||||
CarInterfaceBase.configure_torque_tune(candidate, ret.lateralTuning, 1.0, False)
|
||||
ret.flags |= ChryslerFlags.SP_RAM_HD_PARAMSD_IGNORE.value
|
||||
ret.spFlags |= ChryslerFlagsSP.SP_RAM_HD_PARAMSD_IGNORE.value
|
||||
|
||||
else:
|
||||
raise ValueError(f"Unsupported car: {candidate}")
|
||||
|
||||
@@ -14,7 +14,10 @@ Ecu = car.CarParams.Ecu
|
||||
class ChryslerFlags(IntFlag):
|
||||
HIGHER_MIN_STEERING_SPEED = 1
|
||||
|
||||
SP_RAM_HD_PARAMSD_IGNORE = 2
|
||||
|
||||
class ChryslerFlagsSP(IntFlag):
|
||||
SP_RAM_HD_PARAMSD_IGNORE = 1
|
||||
|
||||
|
||||
class CAR:
|
||||
# Chrysler
|
||||
|
||||
@@ -8,7 +8,7 @@ from opendbc.can.packer import CANPacker
|
||||
from selfdrive.car import apply_driver_steer_torque_limits
|
||||
from selfdrive.car.hyundai import hyundaicanfd, hyundaican
|
||||
from selfdrive.car.hyundai.hyundaicanfd import CanBus
|
||||
from selfdrive.car.hyundai.values import HyundaiFlags, Buttons, CarControllerParams, CANFD_CAR, CAR, CAMERA_SCC_CAR
|
||||
from selfdrive.car.hyundai.values import HyundaiFlags, HyundaiFlagsSP, Buttons, CarControllerParams, CANFD_CAR, CAR, CAMERA_SCC_CAR
|
||||
from selfdrive.controls.lib.drive_helpers import HYUNDAI_V_CRUISE_MIN
|
||||
|
||||
VisualAlert = car.CarControl.HUDControl.VisualAlert
|
||||
@@ -161,7 +161,7 @@ class CarController:
|
||||
|
||||
self.lat_active_last = CC.latActive
|
||||
|
||||
escc = self.CP.flags & HyundaiFlags.SP_ENHANCED_SCC.value
|
||||
escc = self.CP.spFlags & HyundaiFlagsSP.SP_ENHANCED_SCC.value
|
||||
|
||||
can_sends = []
|
||||
|
||||
|
||||
@@ -7,7 +7,7 @@ from common.conversions import Conversions as CV
|
||||
from opendbc.can.parser import CANParser
|
||||
from opendbc.can.can_define import CANDefine
|
||||
from selfdrive.car.hyundai.hyundaicanfd import CanBus
|
||||
from selfdrive.car.hyundai.values import HyundaiFlags, CAR, DBC, CAN_GEARS, CAMERA_SCC_CAR, CANFD_CAR, EV_CAR, HYBRID_CAR, NON_SCC_CAR, NON_SCC_NO_FCA_CAR, NON_SCC_RADAR_FCA_CAR, Buttons, CarControllerParams
|
||||
from selfdrive.car.hyundai.values import HyundaiFlags, HyundaiFlagsSP, CAR, DBC, CAN_GEARS, CAMERA_SCC_CAR, CANFD_CAR, EV_CAR, HYBRID_CAR, NON_SCC_CAR, NON_SCC_NO_FCA_CAR, NON_SCC_RADAR_FCA_CAR, Buttons, CarControllerParams
|
||||
from selfdrive.car.interfaces import CarStateBase
|
||||
|
||||
PREV_BUTTON_SAMPLES = 8
|
||||
@@ -156,7 +156,7 @@ class CarState(CarStateBase):
|
||||
aeb_braking = cp_cruise.vl[aeb_src]["CF_VSM_DecCmdAct"] != 0 or cp_cruise.vl[aeb_src][aeb_sig] != 0
|
||||
ret.stockFcw = aeb_warning and not aeb_braking
|
||||
ret.stockAeb = aeb_warning and aeb_braking
|
||||
elif self.CP.flags & HyundaiFlags.SP_ENHANCED_SCC:
|
||||
elif self.CP.spFlags & HyundaiFlagsSP.SP_ENHANCED_SCC:
|
||||
aeb_src = "ESCC"
|
||||
aeb_sig = "FCA_CmdAct" if self.CP.flags & HyundaiFlags.USE_FCA.value else "AEB_CmdAct"
|
||||
aeb_warning_sig = "CF_VSM_Warn_FCA11" if self.CP.flags & HyundaiFlags.USE_FCA.value else "CF_VSM_Warn_SCC12"
|
||||
@@ -194,12 +194,12 @@ class CarState(CarStateBase):
|
||||
ret.cruiseState.available = ret.cruiseState.available and self.mainEnabled
|
||||
self.prev_mads_enabled = self.mads_enabled
|
||||
self.prev_lfa_enabled = self.lfa_enabled
|
||||
if self.CP.flags & HyundaiFlags.SP_CAN_LFA_BTN:
|
||||
if self.CP.spFlags & HyundaiFlagsSP.SP_CAN_LFA_BTN:
|
||||
self.lfa_enabled = cp.vl["BCM_PO_11"]["LFA_Pressed"]
|
||||
|
||||
self.mads_enabled = False if not self.control_initialized else ret.cruiseState.available
|
||||
|
||||
if self.CP.flags & HyundaiFlags.SP_NAV_MSG:
|
||||
if self.CP.spFlags & HyundaiFlagsSP.SP_NAV_MSG:
|
||||
self._update_traffic_signals(self.CP, cp, cp_cam)
|
||||
ret.cruiseState.speedLimit = self._calculate_speed_limit() * speed_conv
|
||||
|
||||
@@ -280,7 +280,7 @@ class CarState(CarStateBase):
|
||||
if self.CP.flags & HyundaiFlags.CANFD_HDA2:
|
||||
self.cam_0x2a4 = copy.copy(cp_cam.vl["CAM_0x2a4"])
|
||||
|
||||
if self.CP.flags & HyundaiFlags.SP_NAV_MSG:
|
||||
if self.CP.spFlags & HyundaiFlagsSP.SP_NAV_MSG:
|
||||
self._update_traffic_signals(self.CP, cp, cp_cam)
|
||||
ret.cruiseState.speedLimit = self._calculate_speed_limit() * speed_factor
|
||||
|
||||
@@ -439,11 +439,11 @@ class CarState(CarStateBase):
|
||||
signals.append(("CF_Lvr_Gear", "LVR12"))
|
||||
checks.append(("LVR12", 100))
|
||||
|
||||
if CP.flags & HyundaiFlags.SP_CAN_LFA_BTN:
|
||||
if CP.spFlags & HyundaiFlagsSP.SP_CAN_LFA_BTN:
|
||||
signals.append(("LFA_Pressed", "BCM_PO_11"))
|
||||
checks.append(("BCM_PO_11", 50))
|
||||
|
||||
if CP.flags & HyundaiFlags.SP_ENHANCED_SCC.value:
|
||||
if CP.spFlags & HyundaiFlagsSP.SP_ENHANCED_SCC.value:
|
||||
if CP.flags & HyundaiFlags.USE_FCA.value:
|
||||
signals += [
|
||||
("FCA_CmdAct", "ESCC"),
|
||||
@@ -460,7 +460,7 @@ class CarState(CarStateBase):
|
||||
]
|
||||
checks.append(("ESCC", 50))
|
||||
|
||||
if CP.flags & HyundaiFlags.SP_NAV_MSG:
|
||||
if CP.spFlags & HyundaiFlagsSP.SP_NAV_MSG:
|
||||
signals.append(("SpeedLim_Nav_Clu", "Navi_HU"))
|
||||
checks.append(("Navi_HU", 5))
|
||||
|
||||
@@ -646,7 +646,7 @@ class CarState(CarStateBase):
|
||||
("ACCELERATOR_BRAKE_ALT", 100),
|
||||
]
|
||||
|
||||
if CP.flags & HyundaiFlags.CANFD_HDA2 and CP.flags & HyundaiFlags.SP_NAV_MSG:
|
||||
if CP.flags & HyundaiFlags.CANFD_HDA2 and CP.spFlags & HyundaiFlagsSP.SP_NAV_MSG:
|
||||
signals.append(("SPEED_LIMIT_1", "CLUSTER_SPEED_LIMIT"))
|
||||
checks.append(("CLUSTER_SPEED_LIMIT", 10))
|
||||
|
||||
@@ -678,7 +678,7 @@ class CarState(CarStateBase):
|
||||
("SCC_CONTROL", 50),
|
||||
]
|
||||
|
||||
if not (CP.flags & HyundaiFlags.CANFD_HDA2) and CP.flags & HyundaiFlags.SP_NAV_MSG:
|
||||
if not (CP.flags & HyundaiFlags.CANFD_HDA2) and CP.spFlags & HyundaiFlagsSP.SP_NAV_MSG:
|
||||
signals.append(("SPEED_LIMIT_1", "CLUSTER_SPEED_LIMIT"))
|
||||
checks.append(("CLUSTER_SPEED_LIMIT", 10))
|
||||
|
||||
|
||||
@@ -4,7 +4,7 @@ from panda import Panda
|
||||
from common.conversions import Conversions as CV
|
||||
from common.params import Params
|
||||
from selfdrive.car.hyundai.hyundaicanfd import CanBus
|
||||
from selfdrive.car.hyundai.values import HyundaiFlags, CAR, DBC, CANFD_CAR, CAMERA_SCC_CAR, CANFD_RADAR_SCC_CAR, EV_CAR, HYBRID_CAR, LEGACY_SAFETY_MODE_CAR, NON_SCC_CAR, Buttons
|
||||
from selfdrive.car.hyundai.values import HyundaiFlags, HyundaiFlagsSP, CAR, DBC, CANFD_CAR, CAMERA_SCC_CAR, CANFD_RADAR_SCC_CAR, EV_CAR, HYBRID_CAR, LEGACY_SAFETY_MODE_CAR, NON_SCC_CAR, Buttons
|
||||
from selfdrive.car.hyundai.radar_interface import RADAR_START_ADDR
|
||||
from selfdrive.car import STD_CARGO_KG, create_button_event, scale_tire_stiffness, get_safety_config, create_mads_event
|
||||
from selfdrive.car.interfaces import CarInterfaceBase
|
||||
@@ -60,7 +60,7 @@ class CarInterface(CarInterfaceBase):
|
||||
ret.flags |= HyundaiFlags.USE_FCA.value
|
||||
|
||||
if 0x2AB in fingerprint[0]:
|
||||
ret.flags |= HyundaiFlags.SP_ENHANCED_SCC.value
|
||||
ret.spFlags |= HyundaiFlagsSP.SP_ENHANCED_SCC.value
|
||||
|
||||
ret.steerActuatorDelay = 0.1 # Default delay
|
||||
ret.steerLimitTimer = 0.4
|
||||
@@ -265,12 +265,12 @@ class CarInterface(CarInterfaceBase):
|
||||
ret.enableBsm = 0x1e5 in fingerprint[CAN.ECAN]
|
||||
|
||||
if 0x1fa in fingerprint[CAN.ECAN]:
|
||||
ret.flags |= HyundaiFlags.SP_NAV_MSG.value
|
||||
ret.spFlags |= HyundaiFlagsSP.SP_NAV_MSG.value
|
||||
else:
|
||||
ret.enableBsm = 0x58b in fingerprint[0]
|
||||
|
||||
if 0x544 in fingerprint[0]:
|
||||
ret.flags |= HyundaiFlags.SP_NAV_MSG.value
|
||||
ret.spFlags |= HyundaiFlagsSP.SP_NAV_MSG.value
|
||||
|
||||
# *** panda safety config ***
|
||||
if candidate in CANFD_CAR:
|
||||
@@ -296,10 +296,10 @@ class CarInterface(CarInterfaceBase):
|
||||
ret.safetyConfigs[0].safetyParam |= Panda.FLAG_HYUNDAI_CAMERA_SCC
|
||||
|
||||
if 0x391 in fingerprint[0]:
|
||||
ret.flags |= HyundaiFlags.SP_CAN_LFA_BTN.value
|
||||
ret.spFlags |= HyundaiFlagsSP.SP_CAN_LFA_BTN.value
|
||||
ret.safetyConfigs[0].safetyParam |= Panda.FLAG_HYUNDAI_LFA_BTN
|
||||
|
||||
if ret.flags & HyundaiFlags.SP_ENHANCED_SCC:
|
||||
if ret.spFlags & HyundaiFlagsSP.SP_ENHANCED_SCC:
|
||||
ret.safetyConfigs[0].safetyParam |= Panda.FLAG_HYUNDAI_ESCC
|
||||
|
||||
if candidate in NON_SCC_CAR:
|
||||
@@ -334,7 +334,7 @@ class CarInterface(CarInterfaceBase):
|
||||
|
||||
@staticmethod
|
||||
def init(CP, logcan, sendcan):
|
||||
if CP.openpilotLongitudinalControl and not ((CP.flags & HyundaiFlags.CANFD_CAMERA_SCC.value) or (CP.flags & HyundaiFlags.SP_ENHANCED_SCC)) and \
|
||||
if CP.openpilotLongitudinalControl and not ((CP.flags & HyundaiFlags.CANFD_CAMERA_SCC.value) or (CP.spFlags & HyundaiFlagsSP.SP_ENHANCED_SCC)) and \
|
||||
CP.carFingerprint not in CAMERA_SCC_CAR:
|
||||
addr, bus = 0x7d0, 0
|
||||
if CP.flags & HyundaiFlags.CANFD_HDA2.value:
|
||||
|
||||
@@ -4,14 +4,14 @@ import math
|
||||
from cereal import car
|
||||
from opendbc.can.parser import CANParser
|
||||
from selfdrive.car.interfaces import RadarInterfaceBase
|
||||
from selfdrive.car.hyundai.values import DBC, HyundaiFlags
|
||||
from selfdrive.car.hyundai.values import DBC, HyundaiFlagsSP
|
||||
|
||||
RADAR_START_ADDR = 0x500
|
||||
RADAR_MSG_COUNT = 32
|
||||
|
||||
|
||||
def get_radar_can_parser(CP):
|
||||
if (CP.flags & HyundaiFlags.SP_ENHANCED_SCC) and DBC[CP.carFingerprint]['radar'] is None:
|
||||
if (CP.spFlags & HyundaiFlagsSP.SP_ENHANCED_SCC) and DBC[CP.carFingerprint]['radar'] is None:
|
||||
msg = "ESCC"
|
||||
signals = [
|
||||
("ObjValid", msg),
|
||||
@@ -47,7 +47,7 @@ def get_radar_can_parser(CP):
|
||||
class RadarInterface(RadarInterfaceBase):
|
||||
def __init__(self, CP):
|
||||
super().__init__(CP)
|
||||
self.enhanced_scc = (CP.flags & HyundaiFlags.SP_ENHANCED_SCC) and DBC[CP.carFingerprint]['radar'] is None
|
||||
self.enhanced_scc = (CP.spFlags & HyundaiFlagsSP.SP_ENHANCED_SCC) and DBC[CP.carFingerprint]['radar'] is None
|
||||
self.updated_messages = set()
|
||||
self.trigger_msg = 0x2AB if self.enhanced_scc else RADAR_START_ADDR + RADAR_MSG_COUNT - 1
|
||||
self.track_id = 0
|
||||
|
||||
@@ -63,9 +63,12 @@ class HyundaiFlags(IntFlag):
|
||||
CANFD_ALT_GEARS_2 = 64
|
||||
SEND_LFA = 128
|
||||
USE_FCA = 256
|
||||
SP_ENHANCED_SCC = 512
|
||||
SP_CAN_LFA_BTN = 1024
|
||||
SP_NAV_MSG = 2048
|
||||
|
||||
|
||||
class HyundaiFlagsSP(IntFlag):
|
||||
SP_ENHANCED_SCC = 1
|
||||
SP_CAN_LFA_BTN = 2
|
||||
SP_NAV_MSG = 4
|
||||
|
||||
|
||||
class CAR:
|
||||
|
||||
@@ -8,7 +8,7 @@ from cereal import car
|
||||
from common.params import Params, put_nonblocking
|
||||
from common.realtime import config_realtime_process, DT_MDL
|
||||
from common.numpy_fast import clip
|
||||
from selfdrive.car.chrysler.values import ChryslerFlags
|
||||
from selfdrive.car.chrysler.values import ChryslerFlagsSP
|
||||
from selfdrive.locationd.models.car_kf import CarKalman, ObservationKind, States
|
||||
from selfdrive.locationd.models.constants import GENERATED_DIR
|
||||
from system.swaglog import cloudlog
|
||||
@@ -215,7 +215,7 @@ def main(sm=None, pm=None):
|
||||
0.2 <= liveParameters.stiffnessFactor <= 5.0,
|
||||
min_sr <= liveParameters.steerRatio <= max_sr,
|
||||
))
|
||||
if CP.carName == "chrysler" and CP.flags & ChryslerFlags.SP_RAM_HD_PARAMSD_IGNORE:
|
||||
if CP.carName == "chrysler" and CP.spFlags & ChryslerFlagsSP.SP_RAM_HD_PARAMSD_IGNORE:
|
||||
liveParameters.valid = True
|
||||
liveParameters.steerRatioStd = float(P[States.STEER_RATIO])
|
||||
liveParameters.stiffnessFactorStd = float(P[States.STIFFNESS])
|
||||
|
||||
Reference in New Issue
Block a user