105 lines
4.7 KiB
Python
105 lines
4.7 KiB
Python
"""
|
|
Copyright © IQ.Lvbs, apart of Project Teal Lvbs, All Rights Reserved, licensed under https://konn3kt.com/tos/
|
|
"""
|
|
|
|
from openpilot.selfdrive.ui.mici.widgets.stock_button import BigButton, BigParamControl
|
|
from openpilot.selfdrive.ui.mici.layouts.settings.iq_widgets import MappedParamToggle, IQModeSelector, SafeParamControl
|
|
from openpilot.system.ui.lib.application import gui_app
|
|
from openpilot.system.ui.widgets.scroller import NavScroller
|
|
|
|
FOLLOW_DISTANCE_OPTIONS = ["aggressive", "standard", "relaxed", "stock"]
|
|
FOLLOW_DISTANCE_VALUES = [0, 1, 2, 3]
|
|
|
|
MS_TO_MPH = 2.23694
|
|
_SPEED_MPH = [10, 15, 20, 25, 30, 35, 40, 45, 50, 55, 60, 65, 70, 75, 80]
|
|
_SPEED_OPTIONS = [f"{s} mph" for s in _SPEED_MPH]
|
|
_SPEED_VALUES = [round(s / MS_TO_MPH, 2) for s in _SPEED_MPH]
|
|
|
|
_LEAD_SPEED_MPH = [10, 15, 20, 25, 30, 35, 40, 45, 50, 55, 60, 65, 70, 75, 80, 85]
|
|
_LEAD_SPEED_OPTIONS = [f"{s} mph" for s in _LEAD_SPEED_MPH]
|
|
_LEAD_SPEED_VALUES = [round(s / MS_TO_MPH, 2) for s in _LEAD_SPEED_MPH]
|
|
|
|
_STOP_TIME_OPTIONS = ["1.0s", "1.5s", "2.0s", "2.5s", "3.0s", "3.5s", "4.0s", "4.5s", "5.0s", "5.5s", "6.0s"]
|
|
_STOP_TIME_VALUES = [1.0, 1.5, 2.0, 2.5, 3.0, 3.5, 4.0, 4.5, 5.0, 5.5, 6.0]
|
|
|
|
_LOOKAHEAD_OPTIONS = ["1.0s", "2.0s", "3.0s", "4.0s", "5.0s", "6.0s", "7.0s", "8.0s", "9.0s", "10.0s"]
|
|
_LOOKAHEAD_VALUES = [1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 9.0, 10.0]
|
|
|
|
|
|
class DynamicSettingsPanel(NavScroller):
|
|
def __init__(self):
|
|
super().__init__()
|
|
self._items = [
|
|
BigParamControl("IQ.Dynamic Curves", "IQDynamicConditionalCurves"),
|
|
BigParamControl("IQ.Dynamic Slower Lead", "IQDynamicConditionalSlowerLead"),
|
|
BigParamControl("IQ.Dynamic Stopped Lead", "IQDynamicConditionalStoppedLead"),
|
|
BigParamControl("IQ.Dynamic Model Stops", "IQDynamicConditionalModelStops"),
|
|
BigParamControl("IQ.Dynamic SLC Fallback", "IQDynamicConditionalSLCFallback"),
|
|
MappedParamToggle("IQ.Dynamic Low Speed", "IQDynamicConditionalSpeed", _SPEED_OPTIONS, _SPEED_VALUES),
|
|
MappedParamToggle("IQ.Dynamic Lead Speed", "IQDynamicConditionalLeadSpeed", _LEAD_SPEED_OPTIONS, _LEAD_SPEED_VALUES),
|
|
MappedParamToggle("Model Stop Time", "IQDynamicModelStopTime", _STOP_TIME_OPTIONS, _STOP_TIME_VALUES),
|
|
BigParamControl("IQ Force Stops", "IQForceStops"),
|
|
]
|
|
self._scroller.add_widgets(self._items)
|
|
|
|
def show_event(self):
|
|
super().show_event()
|
|
for w in self._items:
|
|
w.refresh()
|
|
|
|
|
|
class SlcSettingsPanel(NavScroller):
|
|
def __init__(self):
|
|
super().__init__()
|
|
self._items = [
|
|
MappedParamToggle("SLC Policy", "SLCPolicy", ["map only", "map priority", "combined"], [0, 1, 2]),
|
|
MappedParamToggle("SLC Override", "SLCOverrideMethod", ["manual", "set speed"], [0, 1]),
|
|
BigParamControl("SLC Confirm Higher", "SpeedLimitConfirmationHigher"),
|
|
BigParamControl("SLC Confirm Lower", "SpeedLimitConfirmationLower"),
|
|
BigParamControl("SLC Auto Confirm", "SLCAutoConfirm"),
|
|
BigParamControl("SLC Fallback IQ.Pilot", "SLCFallbackExperimentalMode"),
|
|
BigParamControl("SLC Online Filler", "SLCOnlineFiller"),
|
|
MappedParamToggle("Lookahead Higher", "MapSpeedLookaheadHigher", _LOOKAHEAD_OPTIONS, _LOOKAHEAD_VALUES),
|
|
MappedParamToggle("Lookahead Lower", "MapSpeedLookaheadLower", _LOOKAHEAD_OPTIONS, _LOOKAHEAD_VALUES),
|
|
]
|
|
self._scroller.add_widgets(self._items)
|
|
|
|
def show_event(self):
|
|
super().show_event()
|
|
for w in self._items:
|
|
w.refresh()
|
|
|
|
|
|
class CruiseLayoutMici(NavScroller):
|
|
def __init__(self):
|
|
super().__init__()
|
|
|
|
self._dynamic_panel = DynamicSettingsPanel()
|
|
self._slc_panel = SlcSettingsPanel()
|
|
|
|
self._mode = IQModeSelector()
|
|
self._dynamic_settings = BigButton("iq.dynamic settings")
|
|
self._dynamic_settings.set_click_callback(lambda: gui_app.push_widget(self._dynamic_panel))
|
|
self._dynamic_settings.set_visible(self._mode.is_dynamic)
|
|
self._follow_dist = MappedParamToggle("Follow Distance", "LongitudinalPersonality",
|
|
FOLLOW_DISTANCE_OPTIONS, FOLLOW_DISTANCE_VALUES)
|
|
self._speed_limit = MappedParamToggle("Speed Limit", "IQSpeedAssistMode",
|
|
["off", "info", "warning", "control"])
|
|
self._slc_settings = BigButton("speed limit settings")
|
|
self._slc_settings.set_click_callback(lambda: gui_app.push_widget(self._slc_panel))
|
|
self._new_lead_mpc = SafeParamControl("Experimental Lead MPC", "newLeadMpc", default_on=True)
|
|
|
|
self._main = [self._mode, self._dynamic_settings, self._follow_dist, self._speed_limit,
|
|
self._new_lead_mpc, self._slc_settings]
|
|
self._scroller.add_widgets(self._main)
|
|
|
|
def _refresh(self):
|
|
self._mode.refresh()
|
|
self._follow_dist.refresh()
|
|
self._speed_limit.refresh()
|
|
self._new_lead_mpc.refresh()
|
|
|
|
def show_event(self):
|
|
super().show_event()
|
|
self._refresh()
|