diff --git a/starpilot/controls/lib/speed_limit_controller.py b/starpilot/controls/lib/speed_limit_controller.py index 94ab0ce0e..2bd845aec 100644 --- a/starpilot/controls/lib/speed_limit_controller.py +++ b/starpilot/controls/lib/speed_limit_controller.py @@ -254,8 +254,12 @@ class SpeedLimitController: self.speed_limit_changed_timer += DT_MDL had_override = self.override_active(v_ego, sm["carState"].gasPressed) - speed_limit_accepted = (sm["starpilotCarState"].accelPressed and sm["carControl"].longActive) or self.starpilot_planner.params_memory.get_bool("SpeedLimitAccepted") - speed_limit_denied = sm["starpilotCarState"].decelPressed or (self.speed_limit_changed_timer >= 30) + long_active = sm["carControl"].longActive + speed_limit_accepted = (sm["starpilotCarState"].accelPressed and long_active) or self.starpilot_planner.params_memory.get_bool("SpeedLimitAccepted") + speed_limit_denied = sm["starpilotCarState"].decelPressed or (self.speed_limit_changed_timer >= 30 and long_active) + + if not long_active and not sm["selfdriveState"].enabled: + speed_limit_accepted = True if speed_limit_accepted: self.source = desired_source @@ -296,11 +300,16 @@ class SpeedLimitController: self.update_map_speed_limit(v_ego, sm) self.vision_limit = self.starpilot_planner.params_memory.get_float("VisionSpeedLimit") if getattr(self.starpilot_toggles, "vision_speed_limit_detection", False) else 0 + configured_priorities = { + self.starpilot_toggles.speed_limit_priority1, + self.starpilot_toggles.speed_limit_priority2, + } limits = { "Dashboard": dashboard_speed_limit, "Map Data": self.map_speed_limit, - "Vision": self.vision_limit, } + if "Vision" in configured_priorities: + limits["Vision"] = self.vision_limit filtered_limits = {source: limit for source, limit in limits.items() if limit >= 1} if self.starpilot_toggles.speed_limit_priority_highest: @@ -393,11 +402,11 @@ class SpeedLimitController: current_longitude = self.starpilot_planner.gps_position.get("longitude") next_speed_limit_distance = calculate_distance_to_point(current_latitude, current_longitude, next_latitude, next_longitude) else: - self.map_speed_limit = sm["mapdOut"].speedLimit - self.next_speed_limit = sm["mapdOut"].nextSpeedLimit + self.map_speed_limit = 0 + self.next_speed_limit = 0 else: - self.map_speed_limit = sm["mapdOut"].speedLimit - self.next_speed_limit = sm["mapdOut"].nextSpeedLimit + self.map_speed_limit = 0 + self.next_speed_limit = 0 if self.next_speed_limit > 0: if self.map_speed_limit < self.next_speed_limit: