From c0119c6bf7cae0c33853cf196983544291b33629 Mon Sep 17 00:00:00 2001 From: Rick Lan Date: Tue, 1 Apr 2025 12:18:17 +0800 Subject: [PATCH] Toyota Stock Lon Mode - init --- common/params_keys.h | 1 + opendbc_repo/opendbc/car/structs.py | 1 + opendbc_repo/opendbc/car/toyota/interface.py | 4 ++++ selfdrive/car/card.py | 3 +++ selfdrive/ui/qt/offroad/dp_panel.cc | 5 +++++ system/manager/manager.py | 1 + 6 files changed, 15 insertions(+) diff --git a/common/params_keys.h b/common/params_keys.h index 6b11bfea0..baedb97e1 100644 --- a/common/params_keys.h +++ b/common/params_keys.h @@ -140,4 +140,5 @@ inline static std::unordered_map keys = { {"dp_lon_no_gas_gating", PERSISTENT}, {"dp_device_auto_shutdown_in", PERSISTENT}, {"dp_ui_radar_tracks", PERSISTENT}, + {"dp_toyota_stock_lon", PERSISTENT}, }; diff --git a/opendbc_repo/opendbc/car/structs.py b/opendbc_repo/opendbc/car/structs.py index 7389cec8b..f2d11f8d6 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 + ToyotaStockLon = 2 ** 2 pass diff --git a/opendbc_repo/opendbc/car/toyota/interface.py b/opendbc_repo/opendbc/car/toyota/interface.py index b0f75ef7d..528aad89e 100644 --- a/opendbc_repo/opendbc/car/toyota/interface.py +++ b/opendbc_repo/opendbc/car/toyota/interface.py @@ -131,6 +131,10 @@ class CarInterface(CarInterfaceBase): candidate in (TSS2_CAR - RADAR_ACC_CAR) or \ bool(ret.flags & ToyotaFlags.DISABLE_RADAR.value) + if dp_params & structs.DPFlags.ToyotaStockLon: + ret.openpilotLongitudinalControl = False + ret.experimentalLongitudinalAvailable = False + ret.autoResumeSng = ret.openpilotLongitudinalControl and candidate in NO_STOP_TIMER_CAR if not ret.openpilotLongitudinalControl: diff --git a/selfdrive/car/card.py b/selfdrive/car/card.py index 067108352..d55840b36 100755 --- a/selfdrive/car/card.py +++ b/selfdrive/car/card.py @@ -102,6 +102,9 @@ class Car: if self.params.get_bool("dp_lat_alka"): dp_params |= structs.DPFlags.LateralALKA + if self.params.get_bool("dp_toyota_stock_lon"): + dp_params |= structs.DPFlags.ToyotaStockLon + 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 8868a6033..5f17f67b0 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_stock_lon", + tr("Use Stock Longitudinal Control"), + "", + }, }; QWidget *label = nullptr; diff --git a/system/manager/manager.py b/system/manager/manager.py index da9ed9e2d..ff12b8718 100755 --- a/system/manager/manager.py +++ b/system/manager/manager.py @@ -62,6 +62,7 @@ def manager_init() -> None: ("dp_lon_no_gas_gating", "0"), ("dp_device_auto_shutdown_in", "-5"), ("dp_ui_radar_tracks", "0"), + ("dp_toyota_stock_lon", "0"), ] if params.get_bool("RecordFrontLock"):