From fd4c6d6069bb8412dc438c76080993fef1ad5ce9 Mon Sep 17 00:00:00 2001 From: Rick Lan Date: Mon, 31 Mar 2025 13:37:45 +0800 Subject: [PATCH] Toyota TSS1 SnG - init --- common/params_keys.h | 1 + opendbc_repo/opendbc/car/structs.py | 1 + opendbc_repo/opendbc/car/toyota/carcontroller.py | 3 +++ opendbc_repo/opendbc/car/toyota/interface.py | 3 +++ opendbc_repo/opendbc/car/toyota/values.py | 1 + selfdrive/car/card.py | 3 +++ selfdrive/ui/qt/offroad/dp_panel.cc | 5 +++++ system/manager/manager.py | 1 + 8 files changed, 18 insertions(+) diff --git a/common/params_keys.h b/common/params_keys.h index 2ddeff6fe..70df26360 100644 --- a/common/params_keys.h +++ b/common/params_keys.h @@ -144,4 +144,5 @@ inline static std::unordered_map keys = { {"dp_device_auto_shutdown_in", PERSISTENT}, {"dp_ui_radar_tracks", PERSISTENT}, {"dp_device_ip", CLEAR_ON_MANAGER_START}, + {"dp_toyota_tss1_sng", PERSISTENT}, }; diff --git a/opendbc_repo/opendbc/car/structs.py b/opendbc_repo/opendbc/car/structs.py index 7389cec8b..cda8e5836 100644 --- a/opendbc_repo/opendbc/car/structs.py +++ b/opendbc_repo/opendbc/car/structs.py @@ -22,4 +22,5 @@ CarParamsT = capnp.lib.capnp._StructModule class DPFlags: LateralALKA = 1 ExtRadar = 2 + ToyotaTSS1SnG = 2 ** 2 pass diff --git a/opendbc_repo/opendbc/car/toyota/carcontroller.py b/opendbc_repo/opendbc/car/toyota/carcontroller.py index f7e81adab..f97663d3d 100644 --- a/opendbc_repo/opendbc/car/toyota/carcontroller.py +++ b/opendbc_repo/opendbc/car/toyota/carcontroller.py @@ -172,6 +172,9 @@ class CarController(CarControllerBase): # pcm entered standstill or it's disabled self.standstill_req = False + if (self.CP.flags & ToyotaFlags.TSS1_SNG.value) and CS.out.standstill and not self.last_standstill: + self.standstill_req = False + self.last_standstill = CS.out.standstill # handle UI messages diff --git a/opendbc_repo/opendbc/car/toyota/interface.py b/opendbc_repo/opendbc/car/toyota/interface.py index 87d523611..e5102fec2 100644 --- a/opendbc_repo/opendbc/car/toyota/interface.py +++ b/opendbc_repo/opendbc/car/toyota/interface.py @@ -151,6 +151,9 @@ class CarInterface(CarInterfaceBase): if ret.flags & ToyotaFlags.HYBRID.value: ret.longitudinalActuatorDelay = 0.05 + if dp_params & structs.DPFlags.ToyotaTSS1SnG: + ret.flags |= ToyotaFlags.TSS1_SNG.value + return ret @staticmethod diff --git a/opendbc_repo/opendbc/car/toyota/values.py b/opendbc_repo/opendbc/car/toyota/values.py index f10f7d0ce..8908aec7d 100644 --- a/opendbc_repo/opendbc/car/toyota/values.py +++ b/opendbc_repo/opendbc/car/toyota/values.py @@ -77,6 +77,7 @@ class ToyotaFlags(IntFlag): SECOC = 2048 ALKA = 2 ** 12 + TSS1_SNG = 2 ** 13 class Footnote(Enum): CAMRY = CarFootnote( diff --git a/selfdrive/car/card.py b/selfdrive/car/card.py index fda553b24..b3f474a55 100755 --- a/selfdrive/car/card.py +++ b/selfdrive/car/card.py @@ -105,6 +105,9 @@ class Car: if self.params.get_bool("dp_lat_alka"): dp_params |= structs.DPFlags.LateralALKA + if self.params.get_bool("dp_toyota_tss1_sng"): + dp_params |= structs.DPFlags.ToyotaTSS1SnG + self.CI = get_car(*self.can_callbacks, obd_callback(self.params), alpha_long_allowed, is_release, num_pandas, dp_params, cached_params) self.RI = interfaces[self.CI.CP.carFingerprint].RadarInterface(self.CI.CP) self.CP = self.CI.CP diff --git a/selfdrive/ui/qt/offroad/dp_panel.cc b/selfdrive/ui/qt/offroad/dp_panel.cc index f9d2b8b72..e39d44ce9 100644 --- a/selfdrive/ui/qt/offroad/dp_panel.cc +++ b/selfdrive/ui/qt/offroad/dp_panel.cc @@ -7,6 +7,11 @@ void DPPanel::add_toyota_toggles() { QString::fromUtf8("🐉 ") + tr("Toyota / Lexus"), "", }, + { + "dp_toyota_tss1_sng", + tr("Enable TSS1 SnG Mod"), + "", + }, }; QWidget *label = nullptr; diff --git a/system/manager/manager.py b/system/manager/manager.py index 2cf6debc6..4fe00659d 100755 --- a/system/manager/manager.py +++ b/system/manager/manager.py @@ -61,6 +61,7 @@ def manager_init() -> None: ("dp_lon_no_gas_gating", "0"), ("dp_device_auto_shutdown_in", "-5"), ("dp_ui_radar_tracks", "0"), + ("dp_toyota_tss1_sng", "0"), ] if params.get_bool("RecordFrontLock"):