From 422488562f13b112fc469b05e6042288fd02bd9b Mon Sep 17 00:00:00 2001 From: firestarsdog <229254897+firestarsdog@users.noreply.github.com> Date: Sun, 6 Sep 2026 02:04:33 -0400 Subject: [PATCH] SLC Alert QoL --- .../controls/lib/speed_limit_controller.py | 19 +++++++++++++++---- 1 file changed, 15 insertions(+), 4 deletions(-) diff --git a/starpilot/controls/lib/speed_limit_controller.py b/starpilot/controls/lib/speed_limit_controller.py index d465554b1..43a82a514 100644 --- a/starpilot/controls/lib/speed_limit_controller.py +++ b/starpilot/controls/lib/speed_limit_controller.py @@ -444,15 +444,26 @@ class SpeedLimitController: return current_road_name = sm["mapdOut"].roadName if desired_source == "Map Data" else "" + current_speed = self.target if (self.source != "None" and self.target > 0) else self.last_valid_limit - if abs(desired_target - self.previous_target) >= 1 or (current_road_name != self.previous_road_name and current_road_name != ""): + # Do not trigger alerts when shifting to fallback or when re-obtaining the same speed limit + is_fallback = desired_source == "None" or desired_target == 0 + same_speed = desired_target > 0 and current_speed > 0 and abs(desired_target - current_speed) < 1 + + if not is_fallback and not same_speed and (abs(desired_target - self.previous_target) >= 1 or current_speed == 0): self.handle_limit_change(desired_source, desired_target, current_road_name, v_ego, sm) - elif desired_source != self.source and (abs(desired_target - self.target) < 1 or self.target == 0): - self.source = desired_source - self.target = desired_target else: self.speed_limit_changed_timer = 0 self.unconfirmed_speed_limit = 0 + if desired_source != self.source or desired_target != self.target: + self.source = desired_source + self.target = desired_target + if desired_source != "None" and desired_target > 0: + self.previous_source = desired_source + self.previous_target = desired_target + if current_road_name != self.previous_road_name and current_road_name != "": + self.previous_road_name = current_road_name + self.denied_target = 0 if self.source != "None" and self.target > 0: self.last_valid_limit = self.target