|
7 | 7 | from abc import abstractmethod, ABC
|
8 | 8 | from difflib import SequenceMatcher
|
9 | 9 | from enum import StrEnum
|
| 10 | +from types import SimpleNamespace |
10 | 11 | from typing import Any, NamedTuple
|
11 | 12 | from collections.abc import Callable
|
12 | 13 | from functools import cache
|
|
19 | 20 | from openpilot.common.params import Params
|
20 | 21 | from openpilot.common.realtime import DT_CTRL
|
21 | 22 | from openpilot.selfdrive.car import apply_hysteresis, gen_empty_fingerprint, scale_rot_inertia, scale_tire_stiffness, STD_CARGO_KG, ButtonEvents
|
| 23 | +from openpilot.selfdrive.car.param_manager import ParamManager |
22 | 24 | from openpilot.selfdrive.car.values import PLATFORMS
|
23 | 25 | from openpilot.selfdrive.controls.lib.desire_helper import get_min_lateral_speed
|
24 | 26 | from openpilot.selfdrive.controls.lib.drive_helpers import V_CRUISE_MAX, V_CRUISE_UNSET, get_friction
|
@@ -239,16 +241,10 @@ def __init__(self, CP, CarController, CarState):
|
239 | 241 | self.gear_warning = 0
|
240 | 242 | self.cruise_cancelled_btn = True
|
241 | 243 | self.acc_mads_combo = self.param_s.get_bool("AccMadsCombo")
|
242 |
| - self.is_metric = self.param_s.get_bool("IsMetric") |
243 |
| - self.below_speed_pause = self.param_s.get_bool("BelowSpeedPause") |
244 |
| - self.pause_lateral_speed = int(self.param_s.get("PauseLateralSpeed", encoding="utf8")) |
245 | 244 | self.prev_acc_mads_combo = False
|
246 | 245 | self.mads_event_lock = True
|
247 | 246 | self.gap_button_counter = 0
|
248 | 247 | self.experimental_mode_hold = False
|
249 |
| - self.experimental_mode = self.param_s.get_bool("ExperimentalMode") |
250 |
| - self._frame = 0 |
251 |
| - self.reverse_dm_cam = self.param_s.get_bool("ReverseDmCam") |
252 | 248 | self.mads_main_toggle = self.param_s.get_bool("MadsCruiseMain")
|
253 | 249 | self.lkas_toggle = self.param_s.get_bool("LkasToggle")
|
254 | 250 | self.last_mads_init = 0.
|
@@ -421,13 +417,14 @@ def sp_configure_custom_torque_tune(ret, params):
|
421 | 417 | def _update(self, c: car.CarControl) -> car.CarState:
|
422 | 418 | pass
|
423 | 419 |
|
424 |
| - def update(self, c: car.CarControl, can_strings: list[bytes]) -> car.CarState: |
| 420 | + def update(self, c: car.CarControl, can_strings: list[bytes], params_list: SimpleNamespace) -> car.CarState: |
425 | 421 | # parse can
|
426 | 422 | for cp in self.can_parsers:
|
427 | 423 | if cp is not None:
|
428 | 424 | cp.update_strings(can_strings)
|
429 | 425 |
|
430 | 426 | self.CS.button_events = []
|
| 427 | + self.CS.params_list = params_list |
431 | 428 |
|
432 | 429 | # get CarState
|
433 | 430 | ret = self._update(c)
|
@@ -472,7 +469,7 @@ def create_common_events(self, cs_out, c, extra_gears=None, pcm_enable=True, all
|
472 | 469 | else:
|
473 | 470 | events.add(EventName.wrongGear)
|
474 | 471 | if cs_out.gearShifter == GearShifter.reverse:
|
475 |
| - if not self.reverse_dm_cam and cs_out.vEgo < 5: |
| 472 | + if not self.CS.params_list.reverse_dm_cam and cs_out.vEgo < 5: |
476 | 473 | events.add(EventName.spReverseGear)
|
477 | 474 | elif cs_out.vEgo >= 5:
|
478 | 475 | events.add(EventName.reverseGear)
|
@@ -634,9 +631,9 @@ def get_sp_common_state(self, cs_out, CS, min_enable_speed_pcm=False, gear_allow
|
634 | 631 | if self.CP.openpilotLongitudinalControl:
|
635 | 632 | self.toggle_exp_mode(gap_button)
|
636 | 633 |
|
637 |
| - lane_change_speed_min = get_min_lateral_speed(self.pause_lateral_speed, self.is_metric) |
| 634 | + lane_change_speed_min = get_min_lateral_speed(self.CS.params_list.pause_lateral_speed, self.CS.params_list.is_metric) |
638 | 635 |
|
639 |
| - cs_out.belowLaneChangeSpeed = cs_out.vEgo < lane_change_speed_min and self.below_speed_pause |
| 636 | + cs_out.belowLaneChangeSpeed = cs_out.vEgo < lane_change_speed_min and self.CS.params_list.below_speed_pause |
640 | 637 |
|
641 | 638 | if cs_out.gearShifter in [GearShifter.park, GearShifter.reverse] or cs_out.doorOpen or \
|
642 | 639 | (cs_out.seatbeltUnlatched and cs_out.gearShifter != GearShifter.park):
|
@@ -669,7 +666,7 @@ def toggle_exp_mode(self, gap_pressed):
|
669 | 666 | if self.gap_button_counter > 50:
|
670 | 667 | self.gap_button_counter = 0
|
671 | 668 | self.experimental_mode_hold = True
|
672 |
| - self.param_s.put_bool_nonblocking("ExperimentalMode", not self.experimental_mode) |
| 669 | + self.param_s.put_bool_nonblocking("ExperimentalMode", not self.CS.params_list.experimental_mode) |
673 | 670 | else:
|
674 | 671 | self.gap_button_counter = 0
|
675 | 672 | self.experimental_mode_hold = False
|
@@ -735,17 +732,6 @@ def create_sp_events(self, CS, cs_out, events, main_enabled=False, allow_enable=
|
735 | 732 |
|
736 | 733 | return events, cs_out
|
737 | 734 |
|
738 |
| - def sp_update_params(self): |
739 |
| - self.experimental_mode = self.param_s.get_bool("ExperimentalMode") |
740 |
| - self._frame += 1 |
741 |
| - if self._frame % 100 == 0: |
742 |
| - self.is_metric = self.param_s.get_bool("IsMetric") |
743 |
| - self.below_speed_pause = self.param_s.get_bool("BelowSpeedPause") |
744 |
| - self.pause_lateral_speed = int(self.param_s.get("PauseLateralSpeed", encoding="utf8")) |
745 |
| - if self._frame % 300 == 0: |
746 |
| - self._frame = 0 |
747 |
| - self.reverse_dm_cam = self.param_s.get_bool("ReverseDmCam") |
748 |
| - |
749 | 735 | class RadarInterfaceBase(ABC):
|
750 | 736 | def __init__(self, CP):
|
751 | 737 | self.rcp = None
|
@@ -785,6 +771,7 @@ def __init__(self, CP):
|
785 | 771 | self.control_initialized = False
|
786 | 772 |
|
787 | 773 | self.button_events: list[capnp.lib.capnp._DynamicStructBuilder] = []
|
| 774 | + self.params_list: SimpleNamespace = ParamManager().get_params() |
788 | 775 |
|
789 | 776 | Q = [[0.0, 0.0], [0.0, 100.0]]
|
790 | 777 | R = 0.3
|
|
0 commit comments