diff --git a/sunnypilot/selfdrive/controls/lib/speed_limit_controller/speed_limit_controller.py b/sunnypilot/selfdrive/controls/lib/speed_limit_controller/speed_limit_controller.py index 6688fed3f2..ba9110205e 100644 --- a/sunnypilot/selfdrive/controls/lib/speed_limit_controller/speed_limit_controller.py +++ b/sunnypilot/selfdrive/controls/lib/speed_limit_controller/speed_limit_controller.py @@ -19,7 +19,7 @@ from openpilot.sunnypilot.selfdrive.selfdrived.events import EventsSP from openpilot.selfdrive.modeld.constants import ModelConstants EventNameSP = custom.OnroadEventSP.EventName -SpeedLimitSource = custom.LongitudinalPlanSP.SpeedLimitSource +SpeedLimitSource = custom.LongitudinalPlanSP.SpeedLimitControl.SpeedLimitSource ACTIVE_STATES = (SpeedLimitControlState.active, SpeedLimitControlState.adapting) ENABLED_STATES = (SpeedLimitControlState.preActive, SpeedLimitControlState.pending, *ACTIVE_STATES) @@ -28,7 +28,7 @@ ENABLED_STATES = (SpeedLimitControlState.preActive, SpeedLimitControlState.pendi class SpeedLimitController: _speed_limit: float _distance: float - _source: SpeedLimitSource + _source: custom.LongitudinalPlanSP.SpeedLimitControl.SpeedLimitSource v_ego: float a_ego: float v_offset: float @@ -87,7 +87,7 @@ class SpeedLimitController: return self._distance @property - def source(self) -> SpeedLimitSource: + def source(self) -> custom.LongitudinalPlanSP.SpeedLimitControl.SpeedLimitSource: return self._source def get_v_target_from_control(self) -> float: @@ -244,7 +244,7 @@ class SpeedLimitController: return enabled, active def update(self, long_active: bool, v_ego: float, a_ego: float, v_cruise_setpoint: float, - speed_limit: float, distance: float, source: SpeedLimitSource, events_sp: EventsSP) -> float: + speed_limit: float, distance: float, source: custom.LongitudinalPlanSP.SpeedLimitControl.SpeedLimitSource, events_sp: EventsSP) -> float: self.op_engaged = long_active self._speed_limit = speed_limit diff --git a/sunnypilot/selfdrive/controls/lib/speed_limit_controller/speed_limit_resolver.py b/sunnypilot/selfdrive/controls/lib/speed_limit_controller/speed_limit_resolver.py index d76ffcd8eb..d641c3b570 100644 --- a/sunnypilot/selfdrive/controls/lib/speed_limit_controller/speed_limit_resolver.py +++ b/sunnypilot/selfdrive/controls/lib/speed_limit_controller/speed_limit_resolver.py @@ -9,26 +9,26 @@ from openpilot.common.realtime import DT_MDL from openpilot.sunnypilot.selfdrive.controls.lib.speed_limit_controller import LIMIT_MAX_MAP_DATA_AGE, LIMIT_ADAPT_ACC, PARAMS_UPDATE_PERIOD from openpilot.sunnypilot.selfdrive.controls.lib.speed_limit_controller.common import Policy -SpeedLimitSource = custom.LongitudinalPlanSP.SpeedLimitSource +SpeedLimitSource = custom.LongitudinalPlanSP.SpeedLimitControl.SpeedLimitSource ALL_SOURCES = tuple(SpeedLimitSource.schema.enumerants.values()) class SpeedLimitResolver: - _limit_solutions: dict[SpeedLimitSource, float] # Store for speed limit solutions from different sources - _distance_solutions: dict[SpeedLimitSource, float] # Store for distance to current speed limit start for different sources + _limit_solutions: dict[custom.LongitudinalPlanSP.SpeedLimitControl.SpeedLimitSource, float] + _distance_solutions: dict[custom.LongitudinalPlanSP.SpeedLimitControl.SpeedLimitSource, float] _v_ego: float speed_limit: float distance: float - source: SpeedLimitSource + source: custom.LongitudinalPlanSP.SpeedLimitControl.SpeedLimitSource def __init__(self): self.params = Params() self.frame = -1 self._gps_location_service = get_gps_location_service(self.params) - self._limit_solutions = {} - self._distance_solutions = {} + self._limit_solutions = {} # Store for speed limit solutions from different sources + self._distance_solutions = {} # Store for distance to current speed limit start for different sources self.policy = self.params.get("SpeedLimitControlPolicy", return_default=True) self._policy_to_sources_map = { @@ -49,7 +49,7 @@ class SpeedLimitResolver: def change_policy(self, policy: Policy) -> None: self.policy = policy - def _reset_limit_sources(self, source: SpeedLimitSource) -> None: + def _reset_limit_sources(self, source: custom.LongitudinalPlanSP.SpeedLimitControl.SpeedLimitSource) -> None: self._limit_solutions[source] = 0. self._distance_solutions[source] = 0. @@ -98,21 +98,20 @@ class SpeedLimitResolver: self._limit_solutions[SpeedLimitSource.map] = next_speed_limit self._distance_solutions[SpeedLimitSource.map] = distance_to_speed_limit_ahead - def _consolidate(self) -> tuple[float, float, SpeedLimitSource]: + def _consolidate(self) -> tuple[float, float, custom.LongitudinalPlanSP.SpeedLimitControl.SpeedLimitSource]: source = self._get_source_solution_according_to_policy() speed_limit = self._limit_solutions[source] if source else 0. distance = self._distance_solutions[source] if source else 0. return speed_limit, distance, source - def _get_source_solution_according_to_policy(self) -> SpeedLimitSource: + def _get_source_solution_according_to_policy(self) -> custom.LongitudinalPlanSP.SpeedLimitControl.SpeedLimitSource: sources_for_policy = self._policy_to_sources_map[self.policy] if self.policy != Policy.combined: # They are ordered in the order of preference, so we pick the first that's non zero for source in sources_for_policy: - if self._limit_solutions[source] > 0.: - return source + return source if self._limit_solutions[source] > 0. else SpeedLimitSource.none limits = np.array([self._limit_solutions[source] for source in sources_for_policy], dtype=float) sources = np.array(sources_for_policy, dtype=int) diff --git a/sunnypilot/selfdrive/controls/lib/speed_limit_controller/tests/test_speed_limit_controller.py b/sunnypilot/selfdrive/controls/lib/speed_limit_controller/tests/test_speed_limit_controller.py index 66aead5c68..20f9ba2494 100644 --- a/sunnypilot/selfdrive/controls/lib/speed_limit_controller/tests/test_speed_limit_controller.py +++ b/sunnypilot/selfdrive/controls/lib/speed_limit_controller/tests/test_speed_limit_controller.py @@ -21,7 +21,7 @@ from openpilot.sunnypilot.selfdrive.controls.lib.speed_limit_controller import S from openpilot.sunnypilot.selfdrive.controls.lib.speed_limit_controller.speed_limit_controller import SpeedLimitController, ACTIVE_STATES from openpilot.sunnypilot.selfdrive.selfdrived.events import EventsSP -SpeedLimitSource = custom.LongitudinalPlanSP.SpeedLimitSource +SpeedLimitSource = custom.LongitudinalPlanSP.SpeedLimitControl.SpeedLimitSource ALL_STATES = tuple(SpeedLimitControlState.schema.enumerants.values()) diff --git a/sunnypilot/selfdrive/controls/lib/speed_limit_controller/tests/test_speed_limit_resolver.py b/sunnypilot/selfdrive/controls/lib/speed_limit_controller/tests/test_speed_limit_resolver.py index e01a60164d..b7dcdd45a4 100644 --- a/sunnypilot/selfdrive/controls/lib/speed_limit_controller/tests/test_speed_limit_resolver.py +++ b/sunnypilot/selfdrive/controls/lib/speed_limit_controller/tests/test_speed_limit_resolver.py @@ -10,7 +10,7 @@ from openpilot.sunnypilot.selfdrive.controls.lib.speed_limit_controller import L from openpilot.sunnypilot.selfdrive.controls.lib.speed_limit_controller.speed_limit_resolver import SpeedLimitResolver, ALL_SOURCES from openpilot.sunnypilot.selfdrive.controls.lib.speed_limit_controller.common import Policy -SpeedLimitSource = custom.LongitudinalPlanSP.SpeedLimitSource +SpeedLimitSource = custom.LongitudinalPlanSP.SpeedLimitControl.SpeedLimitSource def create_mock(properties, mocker: MockerFixture):