From 75497796b9231574eecad5cd305477e6988c8750 Mon Sep 17 00:00:00 2001 From: Jason Wen Date: Mon, 5 Aug 2024 17:15:53 -0400 Subject: [PATCH 1/9] deprecated --- cereal/car.capnp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/cereal/car.capnp b/cereal/car.capnp index e77e8c2943..1807ea63ea 100644 --- a/cereal/car.capnp +++ b/cereal/car.capnp @@ -250,7 +250,7 @@ struct CarState { struct CustomStockLong { cruiseButton @0 :Int16; finalSpeedKph @1 :Float32; - vCruiseKphPrev @2 :Float32; + vCruiseKphPrevDEPRECATED @2 :Float32; targetSpeed @3 :Float32; vSetDis @4 :Float32; speedDiff @5 :Float32; From d321805ca4a342f26b1928260e20a2eb8deb0133 Mon Sep 17 00:00:00 2001 From: Jason Wen Date: Mon, 5 Aug 2024 17:16:03 -0400 Subject: [PATCH 2/9] cruise main state --- selfdrive/car/chrysler/interface.py | 2 +- selfdrive/car/ford/interface.py | 2 +- selfdrive/car/gm/interface.py | 2 +- selfdrive/car/honda/interface.py | 2 +- selfdrive/car/hyundai/interface.py | 2 +- selfdrive/car/interfaces.py | 4 ++-- selfdrive/car/mazda/interface.py | 2 +- selfdrive/car/nissan/interface.py | 2 +- selfdrive/car/subaru/interface.py | 2 +- selfdrive/car/toyota/interface.py | 2 +- selfdrive/car/volkswagen/interface.py | 2 +- 11 files changed, 12 insertions(+), 12 deletions(-) diff --git a/selfdrive/car/chrysler/interface.py b/selfdrive/car/chrysler/interface.py index ec1587e4e4..f7d8b7c1d5 100755 --- a/selfdrive/car/chrysler/interface.py +++ b/selfdrive/car/chrysler/interface.py @@ -98,7 +98,7 @@ class CarInterface(CarInterfaceBase): *create_button_events(self.CS.lkas_enabled, self.CS.prev_lkas_enabled, {1: ButtonType.altButton1}), ] - self.CS.mads_enabled = self.get_sp_cruise_main_state(ret, self.CS) + self.CS.mads_enabled = self.get_sp_cruise_main_state(ret) self.CS.accEnabled = self.get_sp_v_cruise_non_pcm_state(ret, self.CS.accEnabled, self.CS.button_events, c.vCruise, diff --git a/selfdrive/car/ford/interface.py b/selfdrive/car/ford/interface.py index a3bbd7ecf5..bc8c8351c8 100644 --- a/selfdrive/car/ford/interface.py +++ b/selfdrive/car/ford/interface.py @@ -79,7 +79,7 @@ class CarInterface(CarInterfaceBase): *create_button_events(self.CS.lkas_enabled, self.CS.prev_lkas_enabled, {1: ButtonType.altButton1}), ] - self.CS.mads_enabled = self.get_sp_cruise_main_state(ret, self.CS) + self.CS.mads_enabled = self.get_sp_cruise_main_state(ret) self.CS.accEnabled = self.get_sp_v_cruise_non_pcm_state(ret, self.CS.accEnabled, self.CS.button_events, c.vCruise) diff --git a/selfdrive/car/gm/interface.py b/selfdrive/car/gm/interface.py index 6ca796755e..555a0ee24c 100755 --- a/selfdrive/car/gm/interface.py +++ b/selfdrive/car/gm/interface.py @@ -221,7 +221,7 @@ class CarInterface(CarInterfaceBase): *create_button_events(self.CS.lkas_enabled, self.CS.prev_lkas_enabled, {1: ButtonType.altButton1}), ] - self.CS.mads_enabled = self.get_sp_cruise_main_state(ret, self.CS) + self.CS.mads_enabled = self.get_sp_cruise_main_state(ret) if not self.CP.pcmCruise: if any(b.type == ButtonType.accelCruise and b.pressed for b in self.CS.button_events): diff --git a/selfdrive/car/honda/interface.py b/selfdrive/car/honda/interface.py index 1459b301a2..34b69fb137 100755 --- a/selfdrive/car/honda/interface.py +++ b/selfdrive/car/honda/interface.py @@ -267,7 +267,7 @@ class CarInterface(CarInterfaceBase): *create_button_events(self.CS.cruise_setting, self.CS.prev_cruise_setting, SETTINGS_BUTTONS_DICT), ] - self.CS.mads_enabled = self.get_sp_cruise_main_state(ret, self.CS) + self.CS.mads_enabled = self.get_sp_cruise_main_state(ret) self.CS.accEnabled = self.get_sp_v_cruise_non_pcm_state(ret, self.CS.accEnabled, self.CS.button_events, c.vCruise) diff --git a/selfdrive/car/hyundai/interface.py b/selfdrive/car/hyundai/interface.py index c2140d2925..a04bfc3699 100644 --- a/selfdrive/car/hyundai/interface.py +++ b/selfdrive/car/hyundai/interface.py @@ -210,7 +210,7 @@ class CarInterface(CarInterfaceBase): *create_button_events(self.CS.main_buttons[-1], self.CS.prev_main_buttons, {1: ButtonType.altButton3}), ] - self.CS.mads_enabled = self.get_sp_cruise_main_state(ret, self.CS) + self.CS.mads_enabled = self.get_sp_cruise_main_state(ret) self.CS.accEnabled = self.get_sp_v_cruise_non_pcm_state(ret, self.CS.accEnabled, self.CS.button_events, c.vCruise) diff --git a/selfdrive/car/interfaces.py b/selfdrive/car/interfaces.py index 25e8b40a72..9d66b62abc 100644 --- a/selfdrive/car/interfaces.py +++ b/selfdrive/car/interfaces.py @@ -588,8 +588,8 @@ class CarInterfaceBase(ABC): regen = cs_out.regenBraking and (not self.CS.out.regenBraking or not cs_out.standstill) return accel_pedal or brake or regen - def get_sp_cruise_main_state(self, cs_out, CS): - if not CS.control_initialized: + def get_sp_cruise_main_state(self, cs_out): + if not self.CS.control_initialized: mads_enabled = False elif not self.CS.params_list.mads_main_toggle: mads_enabled = False diff --git a/selfdrive/car/mazda/interface.py b/selfdrive/car/mazda/interface.py index 4c26a18a57..78b7d3c589 100755 --- a/selfdrive/car/mazda/interface.py +++ b/selfdrive/car/mazda/interface.py @@ -45,7 +45,7 @@ class CarInterface(CarInterfaceBase): *create_button_events(self.CS.lkas_enabled, self.CS.prev_lkas_enabled, {1: ButtonType.altButton1}), ] - self.CS.mads_enabled = self.get_sp_cruise_main_state(ret, self.CS) + self.CS.mads_enabled = self.get_sp_cruise_main_state(ret) self.CS.accEnabled = self.get_sp_v_cruise_non_pcm_state(ret, self.CS.accEnabled, self.CS.button_events, c.vCruise) diff --git a/selfdrive/car/nissan/interface.py b/selfdrive/car/nissan/interface.py index 661ac668a5..ce339430cb 100644 --- a/selfdrive/car/nissan/interface.py +++ b/selfdrive/car/nissan/interface.py @@ -35,7 +35,7 @@ class CarInterface(CarInterfaceBase): self.CS.button_events = create_button_events(self.CS.distance_button, self.CS.prev_distance_button, {1: ButtonType.gapAdjustCruise}) - self.CS.mads_enabled = self.get_sp_cruise_main_state(ret, self.CS) + self.CS.mads_enabled = self.get_sp_cruise_main_state(ret) if ret.cruiseState.available: if self.enable_mads: diff --git a/selfdrive/car/subaru/interface.py b/selfdrive/car/subaru/interface.py index 185ee8e54d..09598cb93a 100644 --- a/selfdrive/car/subaru/interface.py +++ b/selfdrive/car/subaru/interface.py @@ -117,7 +117,7 @@ class CarInterface(CarInterfaceBase): ret = self.CS.update(self.cp, self.cp_cam, self.cp_body) - self.CS.mads_enabled = self.get_sp_cruise_main_state(ret, self.CS) + self.CS.mads_enabled = self.get_sp_cruise_main_state(ret) if ret.cruiseState.available: if self.enable_mads: diff --git a/selfdrive/car/toyota/interface.py b/selfdrive/car/toyota/interface.py index 527964cead..9ad5eb2f6c 100644 --- a/selfdrive/car/toyota/interface.py +++ b/selfdrive/car/toyota/interface.py @@ -214,7 +214,7 @@ class CarInterface(CarInterfaceBase): self.CS.button_events = create_button_events(self.CS.distance_button, self.CS.prev_distance_button, {1: ButtonType.gapAdjustCruise}) distance_button = self.CS.distance_button - self.CS.mads_enabled = self.get_sp_cruise_main_state(ret, self.CS) + self.CS.mads_enabled = self.get_sp_cruise_main_state(ret) if ret.cruiseState.available: if self.enable_mads: diff --git a/selfdrive/car/volkswagen/interface.py b/selfdrive/car/volkswagen/interface.py index 0d57539a1b..a9ad59ef39 100644 --- a/selfdrive/car/volkswagen/interface.py +++ b/selfdrive/car/volkswagen/interface.py @@ -114,7 +114,7 @@ class CarInterface(CarInterfaceBase): def _update(self, c): ret = self.CS.update(self.cp, self.cp_cam, self.cp_ext, self.CP.transmissionType) - self.CS.mads_enabled = self.get_sp_cruise_main_state(ret, self.CS) + self.CS.mads_enabled = self.get_sp_cruise_main_state(ret) self.CS.accEnabled = self.get_sp_v_cruise_non_pcm_state(ret, self.CS.accEnabled, self.CS.button_events, c.vCruise, From 5ac2ec83aa4bc49f0ac9c8c7e6f0a58b680d1ec3 Mon Sep 17 00:00:00 2001 From: Jason Wen Date: Mon, 5 Aug 2024 17:20:22 -0400 Subject: [PATCH 3/9] v cruise non pcm state --- selfdrive/car/chrysler/interface.py | 3 +-- selfdrive/car/ford/interface.py | 3 +-- selfdrive/car/gm/interface.py | 3 +-- selfdrive/car/honda/interface.py | 3 +-- selfdrive/car/hyundai/interface.py | 3 +-- selfdrive/car/interfaces.py | 5 +++-- selfdrive/car/mazda/interface.py | 3 +-- selfdrive/car/volkswagen/interface.py | 3 +-- 8 files changed, 10 insertions(+), 16 deletions(-) diff --git a/selfdrive/car/chrysler/interface.py b/selfdrive/car/chrysler/interface.py index f7d8b7c1d5..00aea4b557 100755 --- a/selfdrive/car/chrysler/interface.py +++ b/selfdrive/car/chrysler/interface.py @@ -100,8 +100,7 @@ class CarInterface(CarInterfaceBase): self.CS.mads_enabled = self.get_sp_cruise_main_state(ret) - self.CS.accEnabled = self.get_sp_v_cruise_non_pcm_state(ret, self.CS.accEnabled, - self.CS.button_events, c.vCruise, + self.CS.accEnabled = self.get_sp_v_cruise_non_pcm_state(ret, c.vCruise, enable_buttons=(ButtonType.accelCruise, ButtonType.decelCruise, ButtonType.resumeCruise) if not self.CP.pcmCruiseSpeed else (ButtonType.accelCruise, ButtonType.decelCruise), resume_button=(ButtonType.resumeCruise,) if not self.CP.pcmCruiseSpeed else diff --git a/selfdrive/car/ford/interface.py b/selfdrive/car/ford/interface.py index bc8c8351c8..a519e5b20c 100644 --- a/selfdrive/car/ford/interface.py +++ b/selfdrive/car/ford/interface.py @@ -81,8 +81,7 @@ class CarInterface(CarInterfaceBase): self.CS.mads_enabled = self.get_sp_cruise_main_state(ret) - self.CS.accEnabled = self.get_sp_v_cruise_non_pcm_state(ret, self.CS.accEnabled, - self.CS.button_events, c.vCruise) + self.CS.accEnabled = self.get_sp_v_cruise_non_pcm_state(ret, c.vCruise) if ret.cruiseState.available: if self.enable_mads: diff --git a/selfdrive/car/gm/interface.py b/selfdrive/car/gm/interface.py index 555a0ee24c..136457a5b7 100755 --- a/selfdrive/car/gm/interface.py +++ b/selfdrive/car/gm/interface.py @@ -227,8 +227,7 @@ class CarInterface(CarInterfaceBase): if any(b.type == ButtonType.accelCruise and b.pressed for b in self.CS.button_events): self.CS.accEnabled = True - self.CS.accEnabled = self.get_sp_v_cruise_non_pcm_state(ret, self.CS.accEnabled, - self.CS.button_events, c.vCruise) + self.CS.accEnabled = self.get_sp_v_cruise_non_pcm_state(ret, c.vCruise) if ret.cruiseState.available: if self.enable_mads: diff --git a/selfdrive/car/honda/interface.py b/selfdrive/car/honda/interface.py index 34b69fb137..f9d4636bbd 100755 --- a/selfdrive/car/honda/interface.py +++ b/selfdrive/car/honda/interface.py @@ -269,8 +269,7 @@ class CarInterface(CarInterfaceBase): self.CS.mads_enabled = self.get_sp_cruise_main_state(ret) - self.CS.accEnabled = self.get_sp_v_cruise_non_pcm_state(ret, self.CS.accEnabled, - self.CS.button_events, c.vCruise) + self.CS.accEnabled = self.get_sp_v_cruise_non_pcm_state(ret, c.vCruise) if ret.cruiseState.available: if self.enable_mads: diff --git a/selfdrive/car/hyundai/interface.py b/selfdrive/car/hyundai/interface.py index a04bfc3699..67696df448 100644 --- a/selfdrive/car/hyundai/interface.py +++ b/selfdrive/car/hyundai/interface.py @@ -212,8 +212,7 @@ class CarInterface(CarInterfaceBase): self.CS.mads_enabled = self.get_sp_cruise_main_state(ret) - self.CS.accEnabled = self.get_sp_v_cruise_non_pcm_state(ret, self.CS.accEnabled, - self.CS.button_events, c.vCruise) + self.CS.accEnabled = self.get_sp_v_cruise_non_pcm_state(ret, c.vCruise) if ret.cruiseState.available: if not self.CP.pcmCruiseSpeed: diff --git a/selfdrive/car/interfaces.py b/selfdrive/car/interfaces.py index 9d66b62abc..098f81f816 100644 --- a/selfdrive/car/interfaces.py +++ b/selfdrive/car/interfaces.py @@ -558,12 +558,13 @@ class CarInterfaceBase(ABC): return mads_enabled - def get_sp_v_cruise_non_pcm_state(self, cs_out, acc_enabled, button_events, vCruise, + def get_sp_v_cruise_non_pcm_state(self, cs_out, vCruise, enable_buttons=(ButtonType.accelCruise, ButtonType.decelCruise), resume_button=(ButtonType.accelCruise, ButtonType.resumeCruise)): + acc_enabled = self.CS.accEnabled if cs_out.cruiseState.available: - for b in button_events: + for b in self.CS.button_events: if not self.CP.pcmCruise or not self.CP.pcmCruiseSpeed: if b.type in enable_buttons and not b.pressed: acc_enabled = True diff --git a/selfdrive/car/mazda/interface.py b/selfdrive/car/mazda/interface.py index 78b7d3c589..d2317af213 100755 --- a/selfdrive/car/mazda/interface.py +++ b/selfdrive/car/mazda/interface.py @@ -47,8 +47,7 @@ class CarInterface(CarInterfaceBase): self.CS.mads_enabled = self.get_sp_cruise_main_state(ret) - self.CS.accEnabled = self.get_sp_v_cruise_non_pcm_state(ret, self.CS.accEnabled, - self.CS.button_events, c.vCruise) + self.CS.accEnabled = self.get_sp_v_cruise_non_pcm_state(ret, c.vCruise) if ret.cruiseState.available: if self.enable_mads: diff --git a/selfdrive/car/volkswagen/interface.py b/selfdrive/car/volkswagen/interface.py index a9ad59ef39..386f6dcd4c 100644 --- a/selfdrive/car/volkswagen/interface.py +++ b/selfdrive/car/volkswagen/interface.py @@ -116,8 +116,7 @@ class CarInterface(CarInterfaceBase): self.CS.mads_enabled = self.get_sp_cruise_main_state(ret) - self.CS.accEnabled = self.get_sp_v_cruise_non_pcm_state(ret, self.CS.accEnabled, - self.CS.button_events, c.vCruise, + self.CS.accEnabled = self.get_sp_v_cruise_non_pcm_state(ret, c.vCruise, enable_buttons=(ButtonType.setCruise, ButtonType.resumeCruise)) if ret.cruiseState.available: From c2c80a0c1abed7791efb7cdac0fc17393fb2fdd5 Mon Sep 17 00:00:00 2001 From: Jason Wen Date: Mon, 5 Aug 2024 17:24:06 -0400 Subject: [PATCH 4/9] acc mads combo --- selfdrive/car/chrysler/interface.py | 2 +- selfdrive/car/ford/interface.py | 2 +- selfdrive/car/gm/interface.py | 2 +- selfdrive/car/honda/interface.py | 2 +- selfdrive/car/hyundai/interface.py | 2 +- selfdrive/car/interfaces.py | 8 +++++--- selfdrive/car/mazda/interface.py | 2 +- selfdrive/car/nissan/interface.py | 2 +- selfdrive/car/subaru/interface.py | 2 +- selfdrive/car/toyota/interface.py | 2 +- selfdrive/car/volkswagen/interface.py | 2 +- 11 files changed, 15 insertions(+), 13 deletions(-) diff --git a/selfdrive/car/chrysler/interface.py b/selfdrive/car/chrysler/interface.py index 00aea4b557..c331e0e580 100755 --- a/selfdrive/car/chrysler/interface.py +++ b/selfdrive/car/chrysler/interface.py @@ -113,7 +113,7 @@ class CarInterface(CarInterfaceBase): if any(b.type == ButtonType.altButton1 and b.pressed for b in self.CS.button_events): self.CS.madsEnabled = not self.CS.madsEnabled self.CS.lkas_disabled = not self.CS.lkas_disabled - self.CS.madsEnabled = self.get_acc_mads(ret.cruiseState.enabled, self.CS.accEnabled, self.CS.madsEnabled) + self.CS.madsEnabled = self.get_acc_mads(ret) else: self.CS.madsEnabled = False self.CS.madsEnabled = self.get_sp_started_mads(ret, self.CS) diff --git a/selfdrive/car/ford/interface.py b/selfdrive/car/ford/interface.py index a519e5b20c..d278ded357 100644 --- a/selfdrive/car/ford/interface.py +++ b/selfdrive/car/ford/interface.py @@ -89,7 +89,7 @@ class CarInterface(CarInterfaceBase): self.CS.madsEnabled = True if any(b.type == ButtonType.altButton1 and b.pressed for b in self.CS.button_events): self.CS.madsEnabled = not self.CS.madsEnabled - self.CS.madsEnabled = self.get_acc_mads(ret.cruiseState.enabled, self.CS.accEnabled, self.CS.madsEnabled) + self.CS.madsEnabled = self.get_acc_mads(ret) else: self.CS.madsEnabled = False diff --git a/selfdrive/car/gm/interface.py b/selfdrive/car/gm/interface.py index 136457a5b7..8c04a7e5ab 100755 --- a/selfdrive/car/gm/interface.py +++ b/selfdrive/car/gm/interface.py @@ -235,7 +235,7 @@ class CarInterface(CarInterfaceBase): self.CS.madsEnabled = True if any(b.type == ButtonType.altButton1 and b.pressed for b in self.CS.button_events): self.CS.madsEnabled = not self.CS.madsEnabled - self.CS.madsEnabled = self.get_acc_mads(ret.cruiseState.enabled, self.CS.accEnabled, self.CS.madsEnabled) + self.CS.madsEnabled = self.get_acc_mads(ret) else: self.CS.madsEnabled = False diff --git a/selfdrive/car/honda/interface.py b/selfdrive/car/honda/interface.py index f9d4636bbd..1ffdcc19a3 100755 --- a/selfdrive/car/honda/interface.py +++ b/selfdrive/car/honda/interface.py @@ -277,7 +277,7 @@ class CarInterface(CarInterfaceBase): self.CS.madsEnabled = True if any(b.type == ButtonType.altButton1 and b.pressed for b in self.CS.button_events): self.CS.madsEnabled = not self.CS.madsEnabled - self.CS.madsEnabled = self.get_acc_mads(ret.cruiseState.enabled, self.CS.accEnabled, self.CS.madsEnabled) + self.CS.madsEnabled = self.get_acc_mads(ret) else: self.CS.madsEnabled = False diff --git a/selfdrive/car/hyundai/interface.py b/selfdrive/car/hyundai/interface.py index 67696df448..214e0f5a3a 100644 --- a/selfdrive/car/hyundai/interface.py +++ b/selfdrive/car/hyundai/interface.py @@ -225,7 +225,7 @@ class CarInterface(CarInterfaceBase): self.CS.madsEnabled = True if any(b.type == ButtonType.altButton1 and b.pressed for b in self.CS.button_events): self.CS.madsEnabled = not self.CS.madsEnabled - self.CS.madsEnabled = self.get_acc_mads(ret.cruiseState.enabled, self.CS.accEnabled, self.CS.madsEnabled) + self.CS.madsEnabled = self.get_acc_mads(ret) if not ret.cruiseState.available and self.CS.out.cruiseState.available: self.CS.madsEnabled = False diff --git a/selfdrive/car/interfaces.py b/selfdrive/car/interfaces.py index 098f81f816..e177baf9ca 100644 --- a/selfdrive/car/interfaces.py +++ b/selfdrive/car/interfaces.py @@ -550,11 +550,13 @@ class CarInterfaceBase(ABC): def sp_v_cruise_initialized(v_cruise): return v_cruise != V_CRUISE_UNSET - def get_acc_mads(self, cruiseState_enabled, acc_enabled, mads_enabled): + def get_acc_mads(self, cs_out): + mads_enabled = self.CS.madsEnabled + if self.CS.params_list.acc_mads_combo: - if not self.prev_acc_mads_combo and (cruiseState_enabled or acc_enabled): + if not self.prev_acc_mads_combo and (cs_out.cruiseState.enabled or self.CS.accEnabled): mads_enabled = True - self.prev_acc_mads_combo = (cruiseState_enabled or acc_enabled) + self.prev_acc_mads_combo = (cs_out.cruiseState.enabled or self.CS.accEnabled) return mads_enabled diff --git a/selfdrive/car/mazda/interface.py b/selfdrive/car/mazda/interface.py index d2317af213..3d6f49430a 100755 --- a/selfdrive/car/mazda/interface.py +++ b/selfdrive/car/mazda/interface.py @@ -55,7 +55,7 @@ class CarInterface(CarInterfaceBase): self.CS.madsEnabled = True if any(b.type == ButtonType.altButton1 and b.pressed for b in self.CS.button_events): self.CS.madsEnabled = not self.CS.madsEnabled - self.CS.madsEnabled = self.get_acc_mads(ret.cruiseState.enabled, self.CS.accEnabled, self.CS.madsEnabled) + self.CS.madsEnabled = self.get_acc_mads(ret) else: self.CS.madsEnabled = False diff --git a/selfdrive/car/nissan/interface.py b/selfdrive/car/nissan/interface.py index ce339430cb..e6513b47af 100644 --- a/selfdrive/car/nissan/interface.py +++ b/selfdrive/car/nissan/interface.py @@ -41,7 +41,7 @@ class CarInterface(CarInterfaceBase): if self.enable_mads: if not self.CS.prev_mads_enabled and self.CS.mads_enabled: self.CS.madsEnabled = True - self.CS.madsEnabled = self.get_acc_mads(ret.cruiseState.enabled, self.CS.accEnabled, self.CS.madsEnabled) + self.CS.madsEnabled = self.get_acc_mads(ret) else: self.CS.madsEnabled = False diff --git a/selfdrive/car/subaru/interface.py b/selfdrive/car/subaru/interface.py index 09598cb93a..441c860ba5 100644 --- a/selfdrive/car/subaru/interface.py +++ b/selfdrive/car/subaru/interface.py @@ -128,7 +128,7 @@ class CarInterface(CarInterfaceBase): self.CS.madsEnabled = not self.CS.madsEnabled elif self.CS.prev_lkas_enabled != self.CS.lkas_enabled and self.CS.prev_lkas_enabled == 2 and self.CS.lkas_enabled != 1: self.CS.madsEnabled = not self.CS.madsEnabled - self.CS.madsEnabled = self.get_acc_mads(ret.cruiseState.enabled, self.CS.accEnabled, self.CS.madsEnabled) + self.CS.madsEnabled = self.get_acc_mads(ret) else: self.CS.madsEnabled = False diff --git a/selfdrive/car/toyota/interface.py b/selfdrive/car/toyota/interface.py index 9ad5eb2f6c..1f2feb6c2d 100644 --- a/selfdrive/car/toyota/interface.py +++ b/selfdrive/car/toyota/interface.py @@ -229,7 +229,7 @@ class CarInterface(CarInterfaceBase): if (not self.CS.prev_lkas_enabled and self.CS.lkas_enabled) or \ (self.CS.prev_lkas_enabled == 1 and not self.CS.lkas_enabled): self.CS.madsEnabled = not self.CS.madsEnabled - self.CS.madsEnabled = self.get_acc_mads(ret.cruiseState.enabled, self.CS.accEnabled, self.CS.madsEnabled) + self.CS.madsEnabled = self.get_acc_mads(ret) else: self.CS.madsEnabled = False diff --git a/selfdrive/car/volkswagen/interface.py b/selfdrive/car/volkswagen/interface.py index 386f6dcd4c..6efca50280 100644 --- a/selfdrive/car/volkswagen/interface.py +++ b/selfdrive/car/volkswagen/interface.py @@ -123,7 +123,7 @@ class CarInterface(CarInterfaceBase): if self.enable_mads: if not self.CS.prev_mads_enabled and self.CS.mads_enabled: self.CS.madsEnabled = True - self.CS.madsEnabled = self.get_acc_mads(ret.cruiseState.enabled, self.CS.accEnabled, self.CS.madsEnabled) + self.CS.madsEnabled = self.get_acc_mads(ret) else: self.CS.madsEnabled = False self.CS.madsEnabled = self.get_sp_started_mads(ret, self.CS) From 6dc9f288bde45167e0edd025d0f5f0ee27e6616a Mon Sep 17 00:00:00 2001 From: Jason Wen Date: Mon, 5 Aug 2024 17:26:46 -0400 Subject: [PATCH 5/9] cancel cruise state --- selfdrive/car/chrysler/interface.py | 4 ++-- selfdrive/car/ford/interface.py | 4 ++-- selfdrive/car/gm/interface.py | 4 ++-- selfdrive/car/honda/interface.py | 4 ++-- selfdrive/car/hyundai/interface.py | 6 +++--- selfdrive/car/interfaces.py | 6 +++--- selfdrive/car/mazda/interface.py | 4 ++-- selfdrive/car/nissan/interface.py | 2 +- selfdrive/car/subaru/interface.py | 2 +- selfdrive/car/toyota/interface.py | 2 +- selfdrive/car/volkswagen/interface.py | 4 ++-- 11 files changed, 21 insertions(+), 21 deletions(-) diff --git a/selfdrive/car/chrysler/interface.py b/selfdrive/car/chrysler/interface.py index c331e0e580..0b52ccbcba 100755 --- a/selfdrive/car/chrysler/interface.py +++ b/selfdrive/car/chrysler/interface.py @@ -120,9 +120,9 @@ class CarInterface(CarInterfaceBase): if not self.CP.pcmCruise or (self.CP.pcmCruise and self.CP.minEnableSpeed > 0) or not self.CP.pcmCruiseSpeed: if any(b.type == ButtonType.cancel for b in self.CS.button_events): - self.CS.madsEnabled, self.CS.accEnabled = self.get_sp_cancel_cruise_state(self.CS.madsEnabled) + self.get_sp_cancel_cruise_state() if self.get_sp_pedal_disengage(ret): - self.CS.madsEnabled, self.CS.accEnabled = self.get_sp_cancel_cruise_state(self.CS.madsEnabled) + self.get_sp_cancel_cruise_state() ret.cruiseState.enabled = ret.cruiseState.enabled if not self.enable_mads else False if self.CP.pcmCruise else self.CS.accEnabled if self.CP.pcmCruise and self.CP.minEnableSpeed > 0 and self.CP.pcmCruiseSpeed: diff --git a/selfdrive/car/ford/interface.py b/selfdrive/car/ford/interface.py index d278ded357..b5d1197894 100644 --- a/selfdrive/car/ford/interface.py +++ b/selfdrive/car/ford/interface.py @@ -95,9 +95,9 @@ class CarInterface(CarInterfaceBase): if not self.CP.pcmCruise or (self.CP.pcmCruise and self.CP.minEnableSpeed > 0): if any(b.type == ButtonType.cancel for b in self.CS.button_events): - self.CS.madsEnabled, self.CS.accEnabled = self.get_sp_cancel_cruise_state(self.CS.madsEnabled) + self.get_sp_cancel_cruise_state() if self.get_sp_pedal_disengage(ret): - self.CS.madsEnabled, self.CS.accEnabled = self.get_sp_cancel_cruise_state(self.CS.madsEnabled) + self.get_sp_cancel_cruise_state() ret.cruiseState.enabled = ret.cruiseState.enabled if not self.enable_mads else False if self.CP.pcmCruise else self.CS.accEnabled if self.CP.pcmCruise and self.CP.minEnableSpeed > 0 and self.CP.pcmCruiseSpeed: diff --git a/selfdrive/car/gm/interface.py b/selfdrive/car/gm/interface.py index 8c04a7e5ab..2a1dade4f7 100755 --- a/selfdrive/car/gm/interface.py +++ b/selfdrive/car/gm/interface.py @@ -241,9 +241,9 @@ class CarInterface(CarInterfaceBase): if not self.CP.pcmCruise or (self.CP.pcmCruise and self.CP.minEnableSpeed > 0): if any(b.type == ButtonType.cancel for b in self.CS.button_events): - self.CS.madsEnabled, self.CS.accEnabled = self.get_sp_cancel_cruise_state(self.CS.madsEnabled) + self.get_sp_cancel_cruise_state() if self.get_sp_pedal_disengage(ret): - self.CS.madsEnabled, self.CS.accEnabled = self.get_sp_cancel_cruise_state(self.CS.madsEnabled) + self.get_sp_cancel_cruise_state() ret.cruiseState.enabled = ret.cruiseState.enabled if not self.enable_mads else False if self.CP.pcmCruise else self.CS.accEnabled if self.CP.pcmCruise and self.CP.minEnableSpeed > 0 and self.CP.pcmCruiseSpeed: diff --git a/selfdrive/car/honda/interface.py b/selfdrive/car/honda/interface.py index 1ffdcc19a3..1f1134c151 100755 --- a/selfdrive/car/honda/interface.py +++ b/selfdrive/car/honda/interface.py @@ -285,9 +285,9 @@ class CarInterface(CarInterfaceBase): if not self.CP.pcmCruise or min_enable_speed_pcm or not self.CP.pcmCruiseSpeed: if any(b.type == ButtonType.cancel for b in self.CS.button_events): - self.CS.madsEnabled, self.CS.accEnabled = self.get_sp_cancel_cruise_state(self.CS.madsEnabled) + self.get_sp_cancel_cruise_state() if self.get_sp_pedal_disengage(ret): - self.CS.madsEnabled, self.CS.accEnabled = self.get_sp_cancel_cruise_state(self.CS.madsEnabled) + self.get_sp_cancel_cruise_state() ret.cruiseState.enabled = ret.cruiseState.enabled if not self.enable_mads or min_enable_speed_pcm \ else False if self.CP.pcmCruise \ else self.CS.accEnabled diff --git a/selfdrive/car/hyundai/interface.py b/selfdrive/car/hyundai/interface.py index 214e0f5a3a..a73adac27a 100644 --- a/selfdrive/car/hyundai/interface.py +++ b/selfdrive/car/hyundai/interface.py @@ -233,12 +233,12 @@ class CarInterface(CarInterfaceBase): if not self.CP.pcmCruise or not self.CP.pcmCruiseSpeed: if not self.CP.pcmCruise: if any(b.type == ButtonType.cancel for b in self.CS.button_events): - self.CS.madsEnabled, self.CS.accEnabled = self.get_sp_cancel_cruise_state(self.CS.madsEnabled) + self.get_sp_cancel_cruise_state() if not self.CP.pcmCruiseSpeed: if not ret.cruiseState.enabled: - self.CS.madsEnabled, self.CS.accEnabled = self.get_sp_cancel_cruise_state(self.CS.madsEnabled) + self.get_sp_cancel_cruise_state() if self.get_sp_pedal_disengage(ret): - self.CS.madsEnabled, self.CS.accEnabled = self.get_sp_cancel_cruise_state(self.CS.madsEnabled) + self.get_sp_cancel_cruise_state() ret.cruiseState.enabled = ret.cruiseState.enabled if not self.enable_mads else False if self.CP.pcmCruise else self.CS.accEnabled ret, self.CS = self.get_sp_common_state(ret, self.CS, gap_button=(self.CS.cruise_buttons[-1] == 3)) diff --git a/selfdrive/car/interfaces.py b/selfdrive/car/interfaces.py index e177baf9ca..b3085b2ed6 100644 --- a/selfdrive/car/interfaces.py +++ b/selfdrive/car/interfaces.py @@ -581,9 +581,9 @@ class CarInterfaceBase(ABC): return acc_enabled - def get_sp_cancel_cruise_state(self, mads_enabled, acc_enabled=False): - mads_enabled = False if not self.enable_mads or self.disengage_on_accelerator else mads_enabled - return mads_enabled, acc_enabled + def get_sp_cancel_cruise_state(self): + self.CS.madsEnabled = False if not self.enable_mads or self.disengage_on_accelerator else self.CS.madsEnabled + self.CS.accEnabled = False def get_sp_pedal_disengage(self, cs_out): accel_pedal = cs_out.gasPressed and not self.CS.out.gasPressed and self.disengage_on_accelerator diff --git a/selfdrive/car/mazda/interface.py b/selfdrive/car/mazda/interface.py index 3d6f49430a..1a62a190de 100755 --- a/selfdrive/car/mazda/interface.py +++ b/selfdrive/car/mazda/interface.py @@ -61,9 +61,9 @@ class CarInterface(CarInterfaceBase): if not self.CP.pcmCruise or (self.CP.pcmCruise and self.CP.minEnableSpeed > 0) or not self.CP.pcmCruiseSpeed: if any(b.type == ButtonType.cancel for b in self.CS.button_events): - self.CS.madsEnabled, self.CS.accEnabled = self.get_sp_cancel_cruise_state(self.CS.madsEnabled) + self.get_sp_cancel_cruise_state() if self.get_sp_pedal_disengage(ret): - self.CS.madsEnabled, self.CS.accEnabled = self.get_sp_cancel_cruise_state(self.CS.madsEnabled) + self.get_sp_cancel_cruise_state() ret.cruiseState.enabled = ret.cruiseState.enabled if not self.enable_mads else False if self.CP.pcmCruise else self.CS.accEnabled if self.CP.pcmCruise and self.CP.minEnableSpeed > 0 and self.CP.pcmCruiseSpeed: diff --git a/selfdrive/car/nissan/interface.py b/selfdrive/car/nissan/interface.py index e6513b47af..64c2511c14 100644 --- a/selfdrive/car/nissan/interface.py +++ b/selfdrive/car/nissan/interface.py @@ -47,7 +47,7 @@ class CarInterface(CarInterfaceBase): if (not ret.cruiseState.enabled and self.CS.out.cruiseState.enabled) or \ self.get_sp_pedal_disengage(ret): - self.CS.madsEnabled, self.CS.accEnabled = self.get_sp_cancel_cruise_state(self.CS.madsEnabled) + self.get_sp_cancel_cruise_state() ret.cruiseState.enabled = ret.cruiseState.enabled if not self.enable_mads else False if self.CP.pcmCruise else self.CS.accEnabled ret, self.CS = self.get_sp_common_state(ret, self.CS, gap_button=bool(self.CS.distance_button)) diff --git a/selfdrive/car/subaru/interface.py b/selfdrive/car/subaru/interface.py index 441c860ba5..bc31910ad8 100644 --- a/selfdrive/car/subaru/interface.py +++ b/selfdrive/car/subaru/interface.py @@ -137,7 +137,7 @@ class CarInterface(CarInterfaceBase): if not self.enable_mads: self.CS.madsEnabled = False if self.get_sp_pedal_disengage(ret): - self.CS.madsEnabled, self.CS.accEnabled = self.get_sp_cancel_cruise_state(self.CS.madsEnabled) + self.get_sp_cancel_cruise_state() ret.cruiseState.enabled = ret.cruiseState.enabled if not self.enable_mads else False if self.CP.pcmCruise else self.CS.accEnabled ret, self.CS = self.get_sp_common_state(ret, self.CS) diff --git a/selfdrive/car/toyota/interface.py b/selfdrive/car/toyota/interface.py index 1f2feb6c2d..adce752408 100644 --- a/selfdrive/car/toyota/interface.py +++ b/selfdrive/car/toyota/interface.py @@ -234,7 +234,7 @@ class CarInterface(CarInterfaceBase): self.CS.madsEnabled = False if self.get_sp_pedal_disengage(ret): - self.CS.madsEnabled, self.CS.accEnabled = self.get_sp_cancel_cruise_state(self.CS.madsEnabled) + self.get_sp_cancel_cruise_state() if not self.CP.pcmCruise: ret.cruiseState.enabled = self.CS.accEnabled diff --git a/selfdrive/car/volkswagen/interface.py b/selfdrive/car/volkswagen/interface.py index 6efca50280..75d3b44a4c 100644 --- a/selfdrive/car/volkswagen/interface.py +++ b/selfdrive/car/volkswagen/interface.py @@ -130,9 +130,9 @@ class CarInterface(CarInterfaceBase): if not self.CP.pcmCruise or (self.CP.pcmCruise and self.CP.minEnableSpeed > 0) or not self.CP.pcmCruiseSpeed: if any(b.type == ButtonType.cancel for b in self.CS.button_events): - self.CS.madsEnabled, self.CS.accEnabled = self.get_sp_cancel_cruise_state(self.CS.madsEnabled) + self.get_sp_cancel_cruise_state() if self.get_sp_pedal_disengage(ret): - self.CS.madsEnabled, self.CS.accEnabled = self.get_sp_cancel_cruise_state(self.CS.madsEnabled) + self.get_sp_cancel_cruise_state() ret.cruiseState.enabled = ret.cruiseState.enabled if not self.enable_mads else False if self.CP.pcmCruise else self.CS.accEnabled if self.CP.pcmCruise and self.CP.minEnableSpeed > 0 and self.CP.pcmCruiseSpeed: From 5cf9cd788890410d7ed004853cd74bb8743ffe8d Mon Sep 17 00:00:00 2001 From: Jason Wen Date: Mon, 5 Aug 2024 17:30:43 -0400 Subject: [PATCH 6/9] sp common state --- selfdrive/car/chrysler/interface.py | 2 +- selfdrive/car/ford/interface.py | 2 +- selfdrive/car/gm/interface.py | 2 +- selfdrive/car/honda/interface.py | 2 +- selfdrive/car/hyundai/interface.py | 2 +- selfdrive/car/interfaces.py | 30 +++++++++++++-------------- selfdrive/car/mazda/interface.py | 2 +- selfdrive/car/nissan/interface.py | 2 +- selfdrive/car/subaru/interface.py | 2 +- selfdrive/car/toyota/interface.py | 2 +- selfdrive/car/volkswagen/interface.py | 3 +-- 11 files changed, 25 insertions(+), 26 deletions(-) diff --git a/selfdrive/car/chrysler/interface.py b/selfdrive/car/chrysler/interface.py index 0b52ccbcba..c7928d6271 100755 --- a/selfdrive/car/chrysler/interface.py +++ b/selfdrive/car/chrysler/interface.py @@ -135,7 +135,7 @@ class CarInterface(CarInterfaceBase): self.CS.accEnabled = False self.CS.accEnabled = ret.cruiseState.enabled or self.CS.accEnabled - ret, self.CS = self.get_sp_common_state(ret, self.CS, gap_button=bool(self.CS.distance_button)) + ret = self.get_sp_common_state(ret, gap_button=bool(self.CS.distance_button)) ret.buttonEvents = [ *self.CS.button_events, diff --git a/selfdrive/car/ford/interface.py b/selfdrive/car/ford/interface.py index b5d1197894..8b55db3ee0 100644 --- a/selfdrive/car/ford/interface.py +++ b/selfdrive/car/ford/interface.py @@ -105,7 +105,7 @@ class CarInterface(CarInterfaceBase): self.CS.accEnabled = False self.CS.accEnabled = ret.cruiseState.enabled or self.CS.accEnabled - ret, self.CS = self.get_sp_common_state(ret, self.CS, gap_button=bool(self.CS.distance_button)) + ret = self.get_sp_common_state(ret, gap_button=bool(self.CS.distance_button)) ret.buttonEvents = [ *self.CS.button_events, diff --git a/selfdrive/car/gm/interface.py b/selfdrive/car/gm/interface.py index 2a1dade4f7..7e58baec08 100755 --- a/selfdrive/car/gm/interface.py +++ b/selfdrive/car/gm/interface.py @@ -251,7 +251,7 @@ class CarInterface(CarInterfaceBase): self.CS.accEnabled = False self.CS.accEnabled = ret.cruiseState.enabled or self.CS.accEnabled - ret, self.CS = self.get_sp_common_state(ret, self.CS, gap_button=bool(distance_button)) + ret = self.get_sp_common_state(ret, gap_button=bool(distance_button)) ret.buttonEvents = [ *self.CS.button_events, diff --git a/selfdrive/car/honda/interface.py b/selfdrive/car/honda/interface.py index 1f1134c151..f560d8323d 100755 --- a/selfdrive/car/honda/interface.py +++ b/selfdrive/car/honda/interface.py @@ -300,7 +300,7 @@ class CarInterface(CarInterfaceBase): elif not ret.cruiseState.enabled: self.CS.accEnabled = False - ret, self.CS = self.get_sp_common_state(ret, self.CS, gap_button=(self.CS.cruise_setting == 3)) + ret = self.get_sp_common_state(ret, gap_button=(self.CS.cruise_setting == 3)) ret.buttonEvents = [ *self.CS.button_events, diff --git a/selfdrive/car/hyundai/interface.py b/selfdrive/car/hyundai/interface.py index a73adac27a..e7c0071f5e 100644 --- a/selfdrive/car/hyundai/interface.py +++ b/selfdrive/car/hyundai/interface.py @@ -241,7 +241,7 @@ class CarInterface(CarInterfaceBase): self.get_sp_cancel_cruise_state() ret.cruiseState.enabled = ret.cruiseState.enabled if not self.enable_mads else False if self.CP.pcmCruise else self.CS.accEnabled - ret, self.CS = self.get_sp_common_state(ret, self.CS, gap_button=(self.CS.cruise_buttons[-1] == 3)) + ret = self.get_sp_common_state(ret, gap_button=(self.CS.cruise_buttons[-1] == 3)) ret.buttonEvents = [ *self.CS.button_events, diff --git a/selfdrive/car/interfaces.py b/selfdrive/car/interfaces.py index b3085b2ed6..cd9e161e60 100644 --- a/selfdrive/car/interfaces.py +++ b/selfdrive/car/interfaces.py @@ -621,17 +621,17 @@ class CarInterfaceBase(ABC): else: return CS.madsEnabled - def get_sp_common_state(self, cs_out, CS, gear_allowed=True, gap_button=False): - cs_out.cruiseState.enabled = CS.accEnabled if not self.CP.pcmCruise or not self.CP.pcmCruiseSpeed else cs_out.cruiseState.enabled + def get_sp_common_state(self, cs_out, gear_allowed=True, gap_button=False): + cs_out.cruiseState.enabled = self.CS.accEnabled if not self.CP.pcmCruise or not self.CP.pcmCruiseSpeed else cs_out.cruiseState.enabled if not self.enable_mads: - if cs_out.cruiseState.enabled and not CS.out.cruiseState.enabled: - CS.madsEnabled = True - elif not cs_out.cruiseState.enabled and CS.out.cruiseState.enabled: - CS.madsEnabled = False + if cs_out.cruiseState.enabled and not self.CS.out.cruiseState.enabled: + self.CS.madsEnabled = True + elif not cs_out.cruiseState.enabled and self.CS.out.cruiseState.enabled: + self.CS.madsEnabled = False if self.CP.openpilotLongitudinalControl: - self.toggle_exp_mode(gap_button) + self.toggle_exp_mode(gap_button) # TODO-SP: use buttonEvents to handle this, then remove gap_button lane_change_speed_min = get_min_lateral_speed(self.CS.params_list.pause_lateral_speed, self.CS.params_list.is_metric) @@ -643,22 +643,22 @@ class CarInterfaceBase(ABC): cs_out.latActive = gear_allowed - if not CS.control_initialized: - CS.control_initialized = True + if not self.CS.control_initialized: + self.CS.control_initialized = True # Disable on rising edge of gas or brake. Also disable on brake when speed > 0. if (cs_out.gasPressed and not self.CS.out.gasPressed and self.disengage_on_accelerator) or \ (cs_out.brakePressed and (not self.CS.out.brakePressed or not cs_out.standstill)) or \ (cs_out.regenBraking and (not self.CS.out.regenBraking or not cs_out.standstill)): - if CS.madsEnabled: - CS.disengageByBrake = True + if self.CS.madsEnabled: + self.CS.disengageByBrake = True - cs_out.madsEnabled = CS.madsEnabled - cs_out.accEnabled = CS.accEnabled - cs_out.disengageByBrake = CS.disengageByBrake + cs_out.madsEnabled = self.CS.madsEnabled + cs_out.accEnabled = self.CS.accEnabled + cs_out.disengageByBrake = self.CS.disengageByBrake cs_out.brakeLightsDEPRECATED |= cs_out.brakePressed or cs_out.brakeHoldActive or cs_out.parkingBrake or cs_out.regenBraking - return cs_out, CS + return cs_out # TODO: SP: use upstream's buttonEvents counter checks from controlsd def toggle_exp_mode(self, gap_pressed): diff --git a/selfdrive/car/mazda/interface.py b/selfdrive/car/mazda/interface.py index 1a62a190de..74705d6ab7 100755 --- a/selfdrive/car/mazda/interface.py +++ b/selfdrive/car/mazda/interface.py @@ -71,7 +71,7 @@ class CarInterface(CarInterfaceBase): self.CS.accEnabled = False self.CS.accEnabled = ret.cruiseState.enabled or self.CS.accEnabled - ret, self.CS = self.get_sp_common_state(ret, self.CS, gap_button=bool(self.CS.distance_button)) + ret = self.get_sp_common_state(ret, gap_button=bool(self.CS.distance_button)) ret.buttonEvents = [ *self.CS.button_events, diff --git a/selfdrive/car/nissan/interface.py b/selfdrive/car/nissan/interface.py index 64c2511c14..ee7f5c9c15 100644 --- a/selfdrive/car/nissan/interface.py +++ b/selfdrive/car/nissan/interface.py @@ -50,7 +50,7 @@ class CarInterface(CarInterfaceBase): self.get_sp_cancel_cruise_state() ret.cruiseState.enabled = ret.cruiseState.enabled if not self.enable_mads else False if self.CP.pcmCruise else self.CS.accEnabled - ret, self.CS = self.get_sp_common_state(ret, self.CS, gap_button=bool(self.CS.distance_button)) + ret = self.get_sp_common_state(ret, gap_button=bool(self.CS.distance_button)) ret.buttonEvents = [ *self.CS.button_events, diff --git a/selfdrive/car/subaru/interface.py b/selfdrive/car/subaru/interface.py index bc31910ad8..b983394bff 100644 --- a/selfdrive/car/subaru/interface.py +++ b/selfdrive/car/subaru/interface.py @@ -140,7 +140,7 @@ class CarInterface(CarInterfaceBase): self.get_sp_cancel_cruise_state() ret.cruiseState.enabled = ret.cruiseState.enabled if not self.enable_mads else False if self.CP.pcmCruise else self.CS.accEnabled - ret, self.CS = self.get_sp_common_state(ret, self.CS) + ret = self.get_sp_common_state(ret) ret.buttonEvents = [ *self.CS.button_events, diff --git a/selfdrive/car/toyota/interface.py b/selfdrive/car/toyota/interface.py index adce752408..fb29c9ccf3 100644 --- a/selfdrive/car/toyota/interface.py +++ b/selfdrive/car/toyota/interface.py @@ -238,7 +238,7 @@ class CarInterface(CarInterfaceBase): if not self.CP.pcmCruise: ret.cruiseState.enabled = self.CS.accEnabled - ret, self.CS = self.get_sp_common_state(ret, self.CS, gap_button=bool(distance_button)) + ret = self.get_sp_common_state(ret, gap_button=bool(distance_button)) ret.buttonEvents = [ *self.CS.button_events, diff --git a/selfdrive/car/volkswagen/interface.py b/selfdrive/car/volkswagen/interface.py index 75d3b44a4c..6cb7f71f6a 100644 --- a/selfdrive/car/volkswagen/interface.py +++ b/selfdrive/car/volkswagen/interface.py @@ -140,8 +140,7 @@ class CarInterface(CarInterfaceBase): self.CS.accEnabled = False self.CS.accEnabled = ret.cruiseState.enabled or self.CS.accEnabled - ret, self.CS = self.get_sp_common_state(ret, self.CS, - gap_button=any(b.type == ButtonType.gapAdjustCruise and b.pressed for b in self.CS.button_events)) + ret = self.get_sp_common_state(ret, gap_button=any(b.type == ButtonType.gapAdjustCruise and b.pressed for b in self.CS.button_events)) ret.buttonEvents = [ *self.CS.button_events, From 7408ea04d4b1179b2b39f58f3b44b0bfc1018984 Mon Sep 17 00:00:00 2001 From: Jason Wen Date: Mon, 5 Aug 2024 17:38:27 -0400 Subject: [PATCH 7/9] sp event --- selfdrive/car/chrysler/interface.py | 2 +- selfdrive/car/ford/interface.py | 2 +- selfdrive/car/gm/interface.py | 2 +- selfdrive/car/honda/interface.py | 2 +- selfdrive/car/hyundai/interface.py | 2 +- selfdrive/car/interfaces.py | 8 ++++---- selfdrive/car/mazda/interface.py | 2 +- selfdrive/car/nissan/interface.py | 2 +- selfdrive/car/subaru/interface.py | 2 +- selfdrive/car/toyota/interface.py | 2 +- selfdrive/car/volkswagen/interface.py | 2 +- 11 files changed, 14 insertions(+), 14 deletions(-) diff --git a/selfdrive/car/chrysler/interface.py b/selfdrive/car/chrysler/interface.py index c7928d6271..46478742d1 100755 --- a/selfdrive/car/chrysler/interface.py +++ b/selfdrive/car/chrysler/interface.py @@ -145,7 +145,7 @@ class CarInterface(CarInterfaceBase): # events events = self.create_common_events(ret, c, extra_gears=[car.CarState.GearShifter.low], pcm_enable=False) - events, ret = self.create_sp_events(self.CS, ret, events) + events, ret = self.create_sp_events(ret, events) # Low speed steer alert hysteresis logic if self.CP.carFingerprint in RAM_DT: diff --git a/selfdrive/car/ford/interface.py b/selfdrive/car/ford/interface.py index 8b55db3ee0..c69d31a40c 100644 --- a/selfdrive/car/ford/interface.py +++ b/selfdrive/car/ford/interface.py @@ -114,7 +114,7 @@ class CarInterface(CarInterfaceBase): events = self.create_common_events(ret, c, extra_gears=[GearShifter.manumatic], pcm_enable=False) - events, ret = self.create_sp_events(self.CS, ret, events) + events, ret = self.create_sp_events(ret, events) if not self.CS.vehicle_sensors_valid: events.add(car.CarEvent.EventName.vehicleSensorsInvalid) diff --git a/selfdrive/car/gm/interface.py b/selfdrive/car/gm/interface.py index 7e58baec08..fd2b88e2e5 100755 --- a/selfdrive/car/gm/interface.py +++ b/selfdrive/car/gm/interface.py @@ -266,7 +266,7 @@ class CarInterface(CarInterfaceBase): # if any(b.type == ButtonType.accelCruise and b.pressed for b in ret.buttonEvents): # events.add(EventName.buttonEnable) - events, ret = self.create_sp_events(self.CS, ret, events, enable_pressed=self.CS.accEnabled, + events, ret = self.create_sp_events(ret, events, enable_pressed=self.CS.accEnabled, enable_buttons=(ButtonType.decelCruise,)) # Enabling at a standstill with brake is allowed diff --git a/selfdrive/car/honda/interface.py b/selfdrive/car/honda/interface.py index f560d8323d..a15a0b4065 100755 --- a/selfdrive/car/honda/interface.py +++ b/selfdrive/car/honda/interface.py @@ -312,7 +312,7 @@ class CarInterface(CarInterfaceBase): if self.CP.pcmCruise and ret.vEgo < self.CP.minEnableSpeed and not self.CS.madsEnabled: events.add(EventName.belowEngageSpeed) - events, ret = self.create_sp_events(self.CS, ret, events) + events, ret = self.create_sp_events(ret, events) #if self.CP.pcmCruise: # # we engage when pcm is active (rising edge) diff --git a/selfdrive/car/hyundai/interface.py b/selfdrive/car/hyundai/interface.py index e7c0071f5e..9af4a0f033 100644 --- a/selfdrive/car/hyundai/interface.py +++ b/selfdrive/car/hyundai/interface.py @@ -255,7 +255,7 @@ class CarInterface(CarInterfaceBase): events = self.create_common_events(ret, c, extra_gears=[GearShifter.sport, GearShifter.low, GearShifter.manumatic], pcm_enable=False, allow_enable=allow_enable) - events, ret = self.create_sp_events(self.CS, ret, events, main_enabled=True, allow_enable=allow_enable) + events, ret = self.create_sp_events(ret, events, main_enabled=True, allow_enable=allow_enable) # low speed steer alert hysteresis logic (only for cars with steer cut off above 10 m/s) if ret.vEgo < (self.CP.minSteerSpeed + 2.) and self.CP.minSteerSpeed > 10.: diff --git a/selfdrive/car/interfaces.py b/selfdrive/car/interfaces.py index cd9e161e60..4a951e387e 100644 --- a/selfdrive/car/interfaces.py +++ b/selfdrive/car/interfaces.py @@ -673,7 +673,7 @@ class CarInterfaceBase(ABC): self.gap_button_counter = 0 self.experimental_mode_hold = False - def create_sp_events(self, CS, cs_out, events, main_enabled=False, allow_enable=True, enable_pressed=False, + def create_sp_events(self, cs_out, events, main_enabled=False, allow_enable=True, enable_pressed=False, enable_from_brake=False, enable_pressed_long=False, enable_buttons=(ButtonType.accelCruise, ButtonType.decelCruise)): @@ -681,7 +681,7 @@ class CarInterfaceBase(ABC): if cs_out.disengageByBrake and cs_out.madsEnabled: enable_pressed = True enable_from_brake = True - CS.disengageByBrake = False + self.CS.disengageByBrake = False cs_out.disengageByBrake = False for b in cs_out.buttonEvents: @@ -710,11 +710,11 @@ class CarInterfaceBase(ABC): if self.CP.pcmCruise: # do disable on button down if main_enabled: - if any(CS.main_buttons) and not cs_out.cruiseState.enabled: + if any(self.CS.main_buttons) and not cs_out.cruiseState.enabled: if not cs_out.madsEnabled: events.add(EventName.buttonCancel) # do enable on both accel and decel buttons - if cs_out.cruiseState.enabled and not CS.out.cruiseState.enabled and allow_enable: + if cs_out.cruiseState.enabled and not self.CS.out.cruiseState.enabled and allow_enable: enable_pressed = True enable_pressed_long = True elif not cs_out.cruiseState.enabled: diff --git a/selfdrive/car/mazda/interface.py b/selfdrive/car/mazda/interface.py index 74705d6ab7..7186870bed 100755 --- a/selfdrive/car/mazda/interface.py +++ b/selfdrive/car/mazda/interface.py @@ -82,7 +82,7 @@ class CarInterface(CarInterfaceBase): events = self.create_common_events(ret, c, extra_gears=[GearShifter.sport, GearShifter.low, GearShifter.brake], pcm_enable=False) - events, ret = self.create_sp_events(self.CS, ret, events) + events, ret = self.create_sp_events(ret, events) #if self.CS.lkas_disabled: # events.add(EventName.lkasDisabled) diff --git a/selfdrive/car/nissan/interface.py b/selfdrive/car/nissan/interface.py index ee7f5c9c15..92b03c716e 100644 --- a/selfdrive/car/nissan/interface.py +++ b/selfdrive/car/nissan/interface.py @@ -61,7 +61,7 @@ class CarInterface(CarInterfaceBase): events = self.create_common_events(ret, c, extra_gears=[GearShifter.sport, GearShifter.low, GearShifter.brake], pcm_enable=False) - events, ret = self.create_sp_events(self.CS, ret, events) + events, ret = self.create_sp_events(ret, events) if self.CS.lkas_enabled: events.add(car.CarEvent.EventName.invalidLkasSetting) diff --git a/selfdrive/car/subaru/interface.py b/selfdrive/car/subaru/interface.py index b983394bff..cba5a27461 100644 --- a/selfdrive/car/subaru/interface.py +++ b/selfdrive/car/subaru/interface.py @@ -150,7 +150,7 @@ class CarInterface(CarInterfaceBase): events = self.create_common_events(ret, c, extra_gears=[GearShifter.sport, GearShifter.low], pcm_enable=False) - events, ret = self.create_sp_events(self.CS, ret, events) + events, ret = self.create_sp_events(ret, events) ret.events = events.to_msg() diff --git a/selfdrive/car/toyota/interface.py b/selfdrive/car/toyota/interface.py index fb29c9ccf3..f9c98478d7 100644 --- a/selfdrive/car/toyota/interface.py +++ b/selfdrive/car/toyota/interface.py @@ -250,7 +250,7 @@ class CarInterface(CarInterfaceBase): events = self.create_common_events(ret, c, extra_gears=[GearShifter.sport, GearShifter.low, GearShifter.brake], pcm_enable=False) - events, ret = self.create_sp_events(self.CS, ret, events) + events, ret = self.create_sp_events(ret, events) # Lane Tracing Assist control is unavailable (EPS_STATUS->LTA_STATE=0) until # the more accurate angle sensor signal is initialized diff --git a/selfdrive/car/volkswagen/interface.py b/selfdrive/car/volkswagen/interface.py index 6cb7f71f6a..f102ea38ec 100644 --- a/selfdrive/car/volkswagen/interface.py +++ b/selfdrive/car/volkswagen/interface.py @@ -151,7 +151,7 @@ class CarInterface(CarInterfaceBase): pcm_enable=False, enable_buttons=(ButtonType.setCruise, ButtonType.resumeCruise)) - events, ret = self.create_sp_events(self.CS, ret, events, + events, ret = self.create_sp_events(ret, events, enable_buttons=(ButtonType.setCruise, ButtonType.resumeCruise)) # Low speed steer alert hysteresis logic From c607d8aa041b974189dffcbdc83c3ffbb1ff6f61 Mon Sep 17 00:00:00 2001 From: Jason Wen Date: Mon, 5 Aug 2024 17:44:53 -0400 Subject: [PATCH 8/9] custom stock long --- selfdrive/car/chrysler/interface.py | 4 +--- selfdrive/car/honda/interface.py | 4 +--- selfdrive/car/hyundai/interface.py | 4 +--- selfdrive/car/interfaces.py | 27 +++++++++++++++++---------- selfdrive/car/mazda/interface.py | 4 +--- selfdrive/car/volkswagen/interface.py | 4 +--- 6 files changed, 22 insertions(+), 25 deletions(-) diff --git a/selfdrive/car/chrysler/interface.py b/selfdrive/car/chrysler/interface.py index 46478742d1..cb2bbccf62 100755 --- a/selfdrive/car/chrysler/interface.py +++ b/selfdrive/car/chrysler/interface.py @@ -161,9 +161,7 @@ class CarInterface(CarInterfaceBase): if self.low_speed_alert: events.add(car.CarEvent.EventName.belowSteerSpeed) - ret.customStockLong = self.CS.update_custom_stock_long(self.CC.cruise_button, self.CC.final_speed_kph, - self.CC.target_speed, self.CC.v_set_dis, - self.CC.speed_diff, self.CC.button_type) + ret.customStockLong = self.update_custom_stock_long() ret.events = events.to_msg() diff --git a/selfdrive/car/honda/interface.py b/selfdrive/car/honda/interface.py index a15a0b4065..3d80470a23 100755 --- a/selfdrive/car/honda/interface.py +++ b/selfdrive/car/honda/interface.py @@ -329,9 +329,7 @@ class CarInterface(CarInterfaceBase): if self.CS.CP.minEnableSpeed > 0 and ret.vEgo < 0.001: events.add(EventName.manualRestart) - ret.customStockLong = self.CS.update_custom_stock_long(self.CC.cruise_button, self.CC.final_speed_kph, - self.CC.target_speed, self.CC.v_set_dis, - self.CC.speed_diff, self.CC.button_type) + ret.customStockLong = self.update_custom_stock_long() ret.events = events.to_msg() diff --git a/selfdrive/car/hyundai/interface.py b/selfdrive/car/hyundai/interface.py index 9af4a0f033..d9aa77c8c1 100644 --- a/selfdrive/car/hyundai/interface.py +++ b/selfdrive/car/hyundai/interface.py @@ -265,9 +265,7 @@ class CarInterface(CarInterfaceBase): if self.low_speed_alert and self.CS.madsEnabled: events.add(car.CarEvent.EventName.belowSteerSpeed) - ret.customStockLong = self.CS.update_custom_stock_long(self.CC.cruise_button, self.CC.final_speed_kph, - self.CC.target_speed, self.CC.v_set_dis, - self.CC.speed_diff, self.CC.button_type) + ret.customStockLong = self.update_custom_stock_long() ret.events = events.to_msg() diff --git a/selfdrive/car/interfaces.py b/selfdrive/car/interfaces.py index 4a951e387e..b1a92aa790 100644 --- a/selfdrive/car/interfaces.py +++ b/selfdrive/car/interfaces.py @@ -734,6 +734,16 @@ class CarInterfaceBase(ABC): return events, cs_out + def update_custom_stock_long(self): + customStockLong = car.CarState.CustomStockLong.new_message() + customStockLong.cruiseButton = 0 if self.CC.cruise_button is None else int(self.CC.cruise_button) + customStockLong.finalSpeedKph = float(self.CC.final_speed_kph) + customStockLong.targetSpeed = float(self.CC.target_speed) + customStockLong.vSetDis = float(self.CC.v_set_dis) + customStockLong.speedDiff = float(self.CC.speed_diff) + customStockLong.buttonType = int(self.CC.button_type) + return customStockLong + class RadarInterfaceBase(ABC): def __init__(self, CP): self.CP = CP @@ -837,16 +847,6 @@ class CarStateBase(ABC): return bool(left_blinker_stalk or self.left_blinker_cnt > 0), bool(right_blinker_stalk or self.right_blinker_cnt > 0) - def update_custom_stock_long(self, cruise_button, final_speed_kph, target_speed, v_set_dis, speed_diff, button_type): - customStockLong = car.CarState.CustomStockLong.new_message() - customStockLong.cruiseButton = 0 if cruise_button is None else cruise_button - customStockLong.finalSpeedKph = final_speed_kph - customStockLong.targetSpeed = target_speed - customStockLong.vSetDis = v_set_dis - customStockLong.speedDiff = speed_diff - customStockLong.buttonType = button_type - return customStockLong - @staticmethod def parse_gear_shifter(gear: str | None) -> car.CarState.GearShifter: if gear is None: @@ -879,6 +879,13 @@ class CarControllerBase(ABC): self.CP = CP self.frame = 0 + self.cruise_button = 0 + self.final_speed_kph = 0.0 + self.target_speed = 0.0 + self.v_set_dis = 0.0 + self.speed_diff = 0.0 + self.button_type = 0 + @abstractmethod def update(self, CC: car.CarControl.Actuators, CS: car.CarState, now_nanos: int) -> tuple[car.CarControl.Actuators, list[SendCan]]: pass diff --git a/selfdrive/car/mazda/interface.py b/selfdrive/car/mazda/interface.py index 7186870bed..5e782f7344 100755 --- a/selfdrive/car/mazda/interface.py +++ b/selfdrive/car/mazda/interface.py @@ -89,9 +89,7 @@ class CarInterface(CarInterfaceBase): if self.CS.low_speed_alert: events.add(EventName.belowSteerSpeed) - ret.customStockLong = self.CS.update_custom_stock_long(self.CC.cruise_button, self.CC.final_speed_kph, - self.CC.target_speed, self.CC.v_set_dis, - self.CC.speed_diff, self.CC.button_type) + ret.customStockLong = self.update_custom_stock_long() ret.events = events.to_msg() diff --git a/selfdrive/car/volkswagen/interface.py b/selfdrive/car/volkswagen/interface.py index f102ea38ec..aa34744fca 100644 --- a/selfdrive/car/volkswagen/interface.py +++ b/selfdrive/car/volkswagen/interface.py @@ -171,9 +171,7 @@ class CarInterface(CarInterfaceBase): if self.CC.eps_timer_soft_disable_alert: events.add(EventName.steerTimeLimit) - ret.customStockLong = self.CS.update_custom_stock_long(self.CC.cruise_button, self.CC.final_speed_kph, - self.CC.target_speed, self.CC.v_set_dis, - self.CC.speed_diff, self.CC.button_type) + ret.customStockLong = self.update_custom_stock_long() ret.events = events.to_msg() From b3543efcb342e478c7e6d1aacca3ca3a31d432a2 Mon Sep 17 00:00:00 2001 From: Jason Wen Date: Mon, 5 Aug 2024 17:58:52 -0400 Subject: [PATCH 9/9] started mads --- selfdrive/car/chrysler/interface.py | 2 +- selfdrive/car/interfaces.py | 35 ++++++++++++--------------- selfdrive/car/volkswagen/interface.py | 2 +- 3 files changed, 17 insertions(+), 22 deletions(-) diff --git a/selfdrive/car/chrysler/interface.py b/selfdrive/car/chrysler/interface.py index cb2bbccf62..0c3e6f09e4 100755 --- a/selfdrive/car/chrysler/interface.py +++ b/selfdrive/car/chrysler/interface.py @@ -116,7 +116,7 @@ class CarInterface(CarInterfaceBase): self.CS.madsEnabled = self.get_acc_mads(ret) else: self.CS.madsEnabled = False - self.CS.madsEnabled = self.get_sp_started_mads(ret, self.CS) + self.CS.madsEnabled = self.get_sp_started_mads(ret) if not self.CP.pcmCruise or (self.CP.pcmCruise and self.CP.minEnableSpeed > 0) or not self.CP.pcmCruiseSpeed: if any(b.type == ButtonType.cancel for b in self.CS.button_events): diff --git a/selfdrive/car/interfaces.py b/selfdrive/car/interfaces.py index b1a92aa790..c14ef6794f 100644 --- a/selfdrive/car/interfaces.py +++ b/selfdrive/car/interfaces.py @@ -551,35 +551,32 @@ class CarInterfaceBase(ABC): return v_cruise != V_CRUISE_UNSET def get_acc_mads(self, cs_out): - mads_enabled = self.CS.madsEnabled - if self.CS.params_list.acc_mads_combo: if not self.prev_acc_mads_combo and (cs_out.cruiseState.enabled or self.CS.accEnabled): - mads_enabled = True + self.CS.madsEnabled = True self.prev_acc_mads_combo = (cs_out.cruiseState.enabled or self.CS.accEnabled) - return mads_enabled + return self.CS.madsEnabled def get_sp_v_cruise_non_pcm_state(self, cs_out, vCruise, enable_buttons=(ButtonType.accelCruise, ButtonType.decelCruise), resume_button=(ButtonType.accelCruise, ButtonType.resumeCruise)): - acc_enabled = self.CS.accEnabled if cs_out.cruiseState.available: for b in self.CS.button_events: if not self.CP.pcmCruise or not self.CP.pcmCruiseSpeed: if b.type in enable_buttons and not b.pressed: - acc_enabled = True + self.CS.accEnabled = True if not self.CP.pcmCruise: if b.type in resume_button and not self.sp_v_cruise_initialized(vCruise): - acc_enabled = False + self.CS.accEnabled = False if not self.CP.pcmCruiseSpeed: if b.type == ButtonType.accelCruise and not cs_out.cruiseState.enabled: - acc_enabled = False + self.CS.accEnabled = False else: - acc_enabled = False + self.CS.accEnabled = False - return acc_enabled + return self.CS.accEnabled def get_sp_cancel_cruise_state(self): self.CS.madsEnabled = False if not self.enable_mads or self.disengage_on_accelerator else self.CS.madsEnabled @@ -593,22 +590,20 @@ class CarInterfaceBase(ABC): def get_sp_cruise_main_state(self, cs_out): if not self.CS.control_initialized: - mads_enabled = False + return False elif not self.CS.params_list.mads_main_toggle: - mads_enabled = False + return False else: - mads_enabled = cs_out.cruiseState.available + return cs_out.cruiseState.available - return mads_enabled - - def get_sp_started_mads(self, cs_out, CS): - if not cs_out.cruiseState.available and CS.out.cruiseState.available: + def get_sp_started_mads(self, cs_out): + if not cs_out.cruiseState.available and self.CS.out.cruiseState.available: self.madsEnabledInit = False self.madsEnabledInitPrev = False return False if not self.CS.params_list.mads_main_toggle or self.prev_acc_mads_combo: - return CS.madsEnabled - if not self.madsEnabledInit and CS.madsEnabled: + return self.CS.madsEnabled + if not self.madsEnabledInit and self.CS.madsEnabled: self.madsEnabledInit = True self.last_mads_init = time.monotonic() if cs_out.gearShifter not in FORWARD_GEARS: @@ -619,7 +614,7 @@ class CarInterfaceBase(ABC): self.madsEnabledInitPrev = True return cs_out.cruiseState.available else: - return CS.madsEnabled + return self.CS.madsEnabled def get_sp_common_state(self, cs_out, gear_allowed=True, gap_button=False): cs_out.cruiseState.enabled = self.CS.accEnabled if not self.CP.pcmCruise or not self.CP.pcmCruiseSpeed else cs_out.cruiseState.enabled diff --git a/selfdrive/car/volkswagen/interface.py b/selfdrive/car/volkswagen/interface.py index aa34744fca..aeccba278d 100644 --- a/selfdrive/car/volkswagen/interface.py +++ b/selfdrive/car/volkswagen/interface.py @@ -126,7 +126,7 @@ class CarInterface(CarInterfaceBase): self.CS.madsEnabled = self.get_acc_mads(ret) else: self.CS.madsEnabled = False - self.CS.madsEnabled = self.get_sp_started_mads(ret, self.CS) + self.CS.madsEnabled = self.get_sp_started_mads(ret) if not self.CP.pcmCruise or (self.CP.pcmCruise and self.CP.minEnableSpeed > 0) or not self.CP.pcmCruiseSpeed: if any(b.type == ButtonType.cancel for b in self.CS.button_events):