pull/35960/head
Maxime Desroches 7 days ago
parent 7294d9dea7
commit 097bd04e03
  1. 57
      system/ui/setup.py

@ -3,7 +3,6 @@ import os
import re import re
import threading import threading
import time import time
import queue
import urllib.request import urllib.request
from urllib.parse import urlparse from urllib.parse import urlparse
from enum import IntEnum from enum import IntEnum
@ -37,7 +36,6 @@ USER_AGENT = f"AGNOSSetup-{HARDWARE.get_os_version()}"
CONTINUE_PATH = "/data/continue.sh" CONTINUE_PATH = "/data/continue.sh"
TMP_CONTINUE_PATH = "/data/continue.sh.new" TMP_CONTINUE_PATH = "/data/continue.sh.new"
INSTALL_PATH = "/data/openpilot" INSTALL_PATH = "/data/openpilot"
TMP_INSTALL_PATH = "/data/tmppilot"
CACHE_PATH = "/data/openpilot.cache" CACHE_PATH = "/data/openpilot.cache"
BRANCH = "release3" BRANCH = "release3"
@ -56,7 +54,6 @@ class SetupState(IntEnum):
DOWNLOADING = 5 DOWNLOADING = 5
DOWNLOAD_FAILED = 6 DOWNLOAD_FAILED = 6
CUSTOM_SOFTWARE_WARNING = 7 CUSTOM_SOFTWARE_WARNING = 7
INSTALLING = 8
class Setup(Widget): class Setup(Widget):
@ -68,12 +65,10 @@ class Setup(Widget):
self.wifi_connected = threading.Event() self.wifi_connected = threading.Event()
self.stop_network_check_thread = threading.Event() self.stop_network_check_thread = threading.Event()
self.failed_url = "" self.failed_url = ""
self.installing_progress = queue.Queue()
self.failed_reason = "" self.failed_reason = ""
self.download_url = "" self.download_url = ""
self.download_progress = 0 self.download_progress = 0
self.download_thread = None self.download_thread = None
self.install_thread = None
self.wifi_manager = WifiManagerWrapper() self.wifi_manager = WifiManagerWrapper()
self.wifi_ui = WifiManagerUI(self.wifi_manager) self.wifi_ui = WifiManagerUI(self.wifi_manager)
self.keyboard = Keyboard() self.keyboard = Keyboard()
@ -147,8 +142,6 @@ class Setup(Widget):
self.render_downloading(rect) self.render_downloading(rect)
elif self.state == SetupState.DOWNLOAD_FAILED: elif self.state == SetupState.DOWNLOAD_FAILED:
self.render_download_failed(rect) self.render_download_failed(rect)
elif self.state == SetupState.INSTALLING:
self.render_installing(rect)
def _low_voltage_continue_button_callback(self): def _low_voltage_continue_button_callback(self):
self.state = SetupState.GETTING_STARTED self.state = SetupState.GETTING_STARTED
@ -282,15 +275,6 @@ class Setup(Widget):
def render_downloading(self, rect: rl.Rectangle): def render_downloading(self, rect: rl.Rectangle):
self._downloading_body_label.render(rl.Rectangle(rect.x, rect.y + rect.height / 2 - TITLE_FONT_SIZE / 2, rect.width, TITLE_FONT_SIZE)) self._downloading_body_label.render(rl.Rectangle(rect.x, rect.y + rect.height / 2 - TITLE_FONT_SIZE / 2, rect.width, TITLE_FONT_SIZE))
def render_installing(self, rect: rl.Rectangle):
rl.draw_text_ex(gui_app.font(), "Finishing setup...", (150, 290), 110, 0, rl.WHITE)
bar = rl.Rectangle(150, 570, gui_app.width - 300, 72)
rl.draw_rectangle_rec(bar, rl.Color(41, 41, 41, 255))
progress = max(0, min(self.installing_progress.get(), 100))
bar.width *= (progress / 100.0)
rl.draw_rectangle_rec(bar, rl.Color(70, 91, 234, 255))
rl.draw_text_ex(gui_app.font(), f"{progress}%", (150, 670), 85, 0, rl.WHITE)
def render_download_failed(self, rect: rl.Rectangle): def render_download_failed(self, rect: rl.Rectangle):
self._download_failed_title_label.render(rl.Rectangle(rect.x + 117, rect.y + 185, rect.width - 117, TITLE_FONT_SIZE)) self._download_failed_title_label.render(rl.Rectangle(rect.x + 117, rect.y + 185, rect.width - 117, TITLE_FONT_SIZE))
self._download_failed_url_label.set_text(self.failed_url) self._download_failed_url_label.set_text(self.failed_url)
@ -332,40 +316,23 @@ class Setup(Widget):
def use_openpilot(self): def use_openpilot(self):
if os.path.isdir(CACHE_PATH): if os.path.isdir(CACHE_PATH):
self.state = SetupState.INSTALLING shutil.rmtree(INSTALL_PATH, ignore_errors=True)
self.install_thread = threading.Thread(target=self._install_thread, daemon=True) shutil.move(CACHE_PATH, INSTALL_PATH)
self.install_thread.start()
run_cmd(["git", "remote", "set-branches", "--add", "origin", BRANCH], INSTALL_PATH)
run_cmd_default(["git", "update-ref", f"refs/remotes/origin/{BRANCH}", "refs/remotes/origin/release3-staging"], cwd=INSTALL_PATH)
run_cmd(["git", "branch", "-m", BRANCH], INSTALL_PATH)
with open(CONTINUE_PATH, "w") as f:
f.write(CONTINUE)
run_cmd(["chmod", "+x", CONTINUE_PATH])
gui_app.request_close()
else: else:
self.state = SetupState.NETWORK_SETUP self.state = SetupState.NETWORK_SETUP
self.stop_network_check_thread.clear() self.stop_network_check_thread.clear()
self.start_network_check() self.start_network_check()
def _install_thread(self):
self.installing_progress.put(0)
shutil.rmtree(TMP_INSTALL_PATH, ignore_errors=True)
shutil.rmtree(INSTALL_PATH, ignore_errors=True)
shutil.copytree(CACHE_PATH, TMP_INSTALL_PATH, symlinks=True)
self.installing_progress.put(20)
run_cmd(["git", "remote", "set-branches", "--add", "origin", BRANCH], TMP_INSTALL_PATH)
run_cmd_default(["git", "update-ref", f"refs/remotes/origin/{BRANCH}", "refs/remotes/origin/release3-staging"], cwd=TMP_INSTALL_PATH)
run_cmd(["git", "checkout", BRANCH], TMP_INSTALL_PATH)
self.installing_progress.put(50)
run_cmd(["git", "reset", "--hard", f"origin/{BRANCH}"], TMP_INSTALL_PATH)
run_cmd(["git", "submodule", "update", "--init"], TMP_INSTALL_PATH)
run_cmd(["git", "remote", "set-branches", "--add", "origin", BRANCH], TMP_INSTALL_PATH)
shutil.move(TMP_INSTALL_PATH, INSTALL_PATH)
self.installing_progress.put(90)
with open(TMP_CONTINUE_PATH, "w") as f:
f.write(CONTINUE)
run_cmd(["chmod", "+x", TMP_CONTINUE_PATH])
shutil.move(TMP_CONTINUE_PATH, CONTINUE_PATH)
self.installing_progress.put(100)
gui_app.request_close()
def download(self, url: str): def download(self, url: str):
# autocomplete incomplete URLs # autocomplete incomplete URLs
if re.match("^([^/.]+)/([^/]+)$", url): if re.match("^([^/.]+)/([^/]+)$", url):

Loading…
Cancel
Save