mirror of
https://github.com/firestar5683/StarPilot.git
synced 2026-10-28 09:03:46 +08:00
35 lines
1.6 KiB
Python
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
|
|
|