diff --git a/common/params_keys.h b/common/params_keys.h index cd374fbc9..95ad3847e 100644 --- a/common/params_keys.h +++ b/common/params_keys.h @@ -145,4 +145,5 @@ inline static std::unordered_map keys = { {"dp_ui_radar_tracks", PERSISTENT}, {"dp_device_ip", CLEAR_ON_MANAGER_START}, {"dp_toyota_door_auto_lock_unlock", PERSISTENT}, + {"dp_toyota_tss1_sng", PERSISTENT}, }; diff --git a/opendbc_repo/opendbc/car/structs.py b/opendbc_repo/opendbc/car/structs.py index 58e8dd50c..b6dbefed0 100644 --- a/opendbc_repo/opendbc/car/structs.py +++ b/opendbc_repo/opendbc/car/structs.py @@ -23,4 +23,5 @@ class DPFlags: LateralALKA = 1 ExtRadar = 2 ToyotaDoorAutoLockUnlock = 2 ** 2 + ToyotaTSS1SnG = 2 ** 3 pass diff --git a/opendbc_repo/opendbc/car/toyota/carcontroller.py b/opendbc_repo/opendbc/car/toyota/carcontroller.py index 7b4bb9607..262972e71 100644 --- a/opendbc_repo/opendbc/car/toyota/carcontroller.py +++ b/opendbc_repo/opendbc/car/toyota/carcontroller.py @@ -185,6 +185,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 6db63bfb1..b72ffef84 100644 --- a/opendbc_repo/opendbc/car/toyota/interface.py +++ b/opendbc_repo/opendbc/car/toyota/interface.py @@ -154,6 +154,9 @@ class CarInterface(CarInterfaceBase): if dp_params & structs.DPFlags.ToyotaDoorAutoLockUnlock: ret.flags |= ToyotaFlags.DOOR_AUTO_LOCK_UNLOCK.value + 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 00f6b5861..6154813aa 100644 --- a/opendbc_repo/opendbc/car/toyota/values.py +++ b/opendbc_repo/opendbc/car/toyota/values.py @@ -78,6 +78,7 @@ class ToyotaFlags(IntFlag): ALKA = 2 ** 12 DOOR_AUTO_LOCK_UNLOCK = 2 ** 13 + TSS1_SNG = 2 ** 14 class Footnote(Enum): CAMRY = CarFootnote( diff --git a/selfdrive/car/card.py b/selfdrive/car/card.py index e657ecedf..a1872c9a5 100755 --- a/selfdrive/car/card.py +++ b/selfdrive/car/card.py @@ -108,6 +108,9 @@ class Car: if self.params.get_bool("dp_toyota_door_auto_lock_unlock"): dp_params |= structs.DPFlags.ToyotaDoorAutoLockUnlock + 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 b67ca3725..22820b80f 100644 --- a/selfdrive/ui/qt/offroad/dp_panel.cc +++ b/selfdrive/ui/qt/offroad/dp_panel.cc @@ -12,6 +12,11 @@ void DPPanel::add_toyota_toggles() { tr("Enable Door Auto Lock/Unlock"), "", }, + { + "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 454ff6391..f03400f73 100755 --- a/system/manager/manager.py +++ b/system/manager/manager.py @@ -62,6 +62,7 @@ def manager_init() -> None: ("dp_device_auto_shutdown_in", "-5"), ("dp_ui_radar_tracks", "0"), ("dp_toyota_door_auto_lock_unlock", "0"), + ("dp_toyota_tss1_sng", "0"), ] if params.get_bool("RecordFrontLock"):