From 013f8579d770f98605636087ff3dbca2beb20f0b Mon Sep 17 00:00:00 2001 From: firestar5683 <168790843+firestar5683@users.noreply.github.com> Date: Sun, 23 Aug 2026 09:19:58 -0500 Subject: [PATCH] squeak squeak --- .../tests/test_conditional_chill_mode.py | 24 +++++++++++++++-- .../controls/lib/conditional_chill_mode.py | 26 ++++++++++++------- 2 files changed, 39 insertions(+), 11 deletions(-) diff --git a/selfdrive/controls/tests/test_conditional_chill_mode.py b/selfdrive/controls/tests/test_conditional_chill_mode.py index a4635d3d6..bb8506466 100644 --- a/selfdrive/controls/tests/test_conditional_chill_mode.py +++ b/selfdrive/controls/tests/test_conditional_chill_mode.py @@ -29,11 +29,14 @@ class FakeDetector: self.slow_lead_detected = False self.stop_light_detected = False self.stop_light_model_detected = False + self.toggle_objects = [] - def curve_detection(self, *_args, **_kwargs): + def curve_detection(self, _v_ego, toggles): + self.toggle_objects.append(toggles) return None - def slow_lead(self, *_args, **_kwargs): + def slow_lead(self, toggles, _v_ego): + self.toggle_objects.append(toggles) return None def stop_sign_and_light(self, *_args, **_kwargs): @@ -114,6 +117,23 @@ def test_ccm_stays_experimental_when_no_chill_condition_matches(monkeypatch): assert ccm.status_value == CCStatus["OFF"] +def test_ccm_reuses_detector_toggles(monkeypatch): + _planner, detector, ccm = make_ccm() + sm = make_sm() + toggles = make_toggles() + monkeypatch.setattr("openpilot.starpilot.controls.lib.conditional_chill_mode.time.monotonic", lambda: 1.0) + + ccm.update(20 * CV.MPH_TO_MS, 21 * CV.MPH_TO_MS, sm, toggles) + first_curve_toggles, first_slow_lead_toggles = detector.toggle_objects + detector.toggle_objects.clear() + ccm.update(20 * CV.MPH_TO_MS, 21 * CV.MPH_TO_MS, sm, toggles) + second_curve_toggles, second_slow_lead_toggles = detector.toggle_objects + + assert first_curve_toggles is first_slow_lead_toggles + assert second_curve_toggles is second_slow_lead_toggles + assert first_curve_toggles is second_curve_toggles + + def test_ccm_enters_chill_for_open_road_speed_recovery(monkeypatch): planner, _detector, ccm = make_ccm() sm = make_sm() diff --git a/starpilot/controls/lib/conditional_chill_mode.py b/starpilot/controls/lib/conditional_chill_mode.py index 9fa91e768..d33ee312a 100644 --- a/starpilot/controls/lib/conditional_chill_mode.py +++ b/starpilot/controls/lib/conditional_chill_mode.py @@ -10,6 +10,21 @@ from openpilot.starpilot.common.experimental_state import ( ) +class DetectorToggles: + """Fixed detector configuration used by Conditional Chill.""" + + __slots__ = () + + conditional_curves = True + conditional_curves_lead = True + conditional_lead = True + conditional_slower_lead = True + conditional_stopped_lead = True + + +DETECTOR_TOGGLES = DetectorToggles() + + class ConditionalChillMode: CCM_STOP_MODEL_TIME = 7.0 CHILL_SPEED_ENTRY_CONFIRM_TIME = 0.35 @@ -132,15 +147,8 @@ class ConditionalChillMode: self._launch_forced_exit = False def _refresh_detector(self, v_ego, sm): - detector_toggles = type("DetectorToggles", (), { - "conditional_curves": True, - "conditional_curves_lead": True, - "conditional_lead": True, - "conditional_slower_lead": True, - "conditional_stopped_lead": True, - })() - self.detector.curve_detection(v_ego, detector_toggles) - self.detector.slow_lead(detector_toggles, v_ego) + self.detector.curve_detection(v_ego, DETECTOR_TOGGLES) + self.detector.slow_lead(DETECTOR_TOGGLES, v_ego) self.detector.stop_sign_and_light(v_ego, sm, self.CCM_STOP_MODEL_TIME) def _has_hard_veto(self, v_ego, sm, allow_launch=False):