diff --git a/common/params_keys.h b/common/params_keys.h index 4777ad1c7..98e48855e 100644 --- a/common/params_keys.h +++ b/common/params_keys.h @@ -141,4 +141,5 @@ inline static std::unordered_map keys = { {"dp_device_auto_shutdown_in", PERSISTENT}, {"dp_ui_radar_tracks", PERSISTENT}, {"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 a4e24cc07..d38db5bac 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 5ae1c6731..4865bec5d 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 361963069..1f0d73d34 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 976e5c641..6b401ffb8 100755 --- a/selfdrive/car/card.py +++ b/selfdrive/car/card.py @@ -105,6 +105,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), experimental_long_allowed, 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 e5a05e0a8..2bd537164 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 7d8dac074..35a62f62b 100755 --- a/system/manager/manager.py +++ b/system/manager/manager.py @@ -63,6 +63,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"):