From c31d6131113d3724251661995cb87b059ddc0a50 Mon Sep 17 00:00:00 2001 From: 1okko <15377594951@189.cn> Date: Wed, 21 Oct 2026 08:43:05 +0800 Subject: [PATCH] test: sync opendbc sunnypilot interfaces has_bsm (stage 3f) --- .../opendbc/sunnypilot/car/interfaces.py | 28 +++++++++++++++++++ 1 file changed, 28 insertions(+) diff --git a/opendbc_repo/opendbc/sunnypilot/car/interfaces.py b/opendbc_repo/opendbc/sunnypilot/car/interfaces.py index 75bfe6cd8..94a1198e3 100644 --- a/opendbc_repo/opendbc/sunnypilot/car/interfaces.py +++ b/opendbc_repo/opendbc/sunnypilot/car/interfaces.py @@ -12,12 +12,19 @@ from collections.abc import Callable from opendbc.car import structs from opendbc.car.can_definitions import CanRecvCallable, CanSendCallable +from opendbc.car.chrysler.values import ChryslerFlags +from opendbc.car.ford.values import FordFlags +from opendbc.car.gm.values import GMFlags +from opendbc.car.honda.values import HondaFlags from opendbc.car.hyundai.values import HyundaiFlags from opendbc.car.subaru.values import SubaruFlags +from opendbc.car.toyota.values import ToyotaFlags +from opendbc.car.volkswagen.values import VolkswagenFlags from opendbc.car.toyota.values import ToyotaSafetyFlags from opendbc.sunnypilot.car.hyundai.enable_radar_tracks import enable_radar_tracks as hyundai_enable_radar_tracks from opendbc.sunnypilot.car.hyundai.longitudinal.helpers import LongitudinalTuningType from opendbc.sunnypilot.car.hyundai.values import HyundaiFlagsSP +from opendbc.sunnypilot.car.rivian.values import RivianFlagsSP from opendbc.sunnypilot.car.subaru.values_ext import SubaruFlagsSP, SubaruSafetyFlagsSP from opendbc.sunnypilot.car.tesla.values import MadsScreenButtonType, TeslaFlagsSP, TeslaSafetyFlagsSP from opendbc.sunnypilot.car.toyota.values import ToyotaFlagsSP @@ -77,6 +84,27 @@ class NanoFFModel: return pred +# upstream detects BSM per brand into each brand's HAS_BSM flag +BSM_FLAGS = { + "chrysler": ChryslerFlags.HAS_BSM, + "ford": FordFlags.HAS_BSM, + "gm": GMFlags.HAS_BSM, + "honda": HondaFlags.HAS_BSM, + "hyundai": HyundaiFlags.HAS_BSM, + "subaru": SubaruFlags.HAS_BSM, + "toyota": ToyotaFlags.HAS_BSM, + "volkswagen": VolkswagenFlags.HAS_BSM, +} + + +def has_bsm(CP: structs.CarParams, CP_SP: structs.CarParamsSP | None) -> bool: + if CP.brand == "tesla": + return True + if CP.brand == "rivian": + return CP_SP is not None and bool(CP_SP.flags & RivianFlagsSP.LONGITUDINAL_HARNESS_UPGRADE) + return CP.brand in BSM_FLAGS and bool(CP.flags & BSM_FLAGS[CP.brand]) + + def setup_interfaces(CI, CP: structs.CarParams, CP_SP: structs.CarParamsSP, params_list: list[dict[str, str]] | None = None, can_recv: CanRecvCallable | None = None, can_send: CanSendCallable | None = None) -> None: