test: sync opendbc sunnypilot interfaces has_bsm (stage 3f)

This commit is contained in:
1okko
2026-10-21 08:43:05 +08:00
parent 3b6b75e5a1
commit c31d613111
@@ -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: