Files
2026-10-22 19:44:47 -05:00

35 lines
1.6 KiB
Python

"""Native software request routing for the StarPilot runtime shell."""
from typing import Any
from openpilot.starpilot.ui.software_state import SoftwareAction
def deliver_software(self: Any, request: SoftwareAction, *, shell_mode, destination, clock, software_request, download_label) -> bool:
from openpilot.selfdrive.ui.layouts.settings.settings import PanelType
fresh = self.star.adapter.build(shell_mode.SETTINGS, destination.SOFTWARE, now_ns=clock.monotonic_ns()).software
if request.request not in fresh.available_actions:
return False
owner = self._panel_owner(PanelType.SOFTWARE)
if request.request in (software_request.CHECK_FOR_UPDATES, software_request.DOWNLOAD_UPDATE):
expected = download_label.DOWNLOAD if request.request == software_request.DOWNLOAD_UPDATE else download_label.CHECK
owner._update_state()
if (fresh.download_label != expected or owner._waiting_for_updater or
not owner._download_btn.action_item.enabled):
return False
from openpilot.system.ui.lib.multilang import tr
if owner._download_btn.action_item.text != tr(expected.value):
return False
owner._on_download_update()
elif request.request in (software_request.FAST_UPDATE, software_request.ROLLBACK):
owner._update_state()
owner._confirm_direct_update("rollback" if request.request == software_request.ROLLBACK else "fast")
elif request.request == software_request.OPEN_BRANCH_CHOOSER:
owner._on_select_branch(self._confirmed_offroad)
elif request.request == software_request.OPEN_UNINSTALL_CONFIRMATION:
owner._on_uninstall(self._confirmed_offroad)
else:
return False
return True