diff --git a/system/ui/reset.py b/system/ui/reset.py index 2178741ab5..7c9500c7cf 100755 --- a/system/ui/reset.py +++ b/system/ui/reset.py @@ -2,6 +2,7 @@ import os import sys import threading +import time from enum import IntEnum import pyray as rl @@ -14,6 +15,7 @@ from openpilot.system.ui.widgets.label import gui_label, gui_text_box NVME = "/dev/nvme0n1" USERDATA = "/dev/disk/by-partlabel/userdata" +TIMEOUT = 3*60 class ResetMode(IntEnum): @@ -33,6 +35,7 @@ class Reset(Widget): def __init__(self, mode): super().__init__() self._mode = mode + self._previous_reset_state = None self._reset_state = ResetState.NONE self._cancel_button = Button("Cancel", self._cancel_callback) self._confirm_button = Button("Confirm", self._confirm, button_style=ButtonStyle.PRIMARY) @@ -64,6 +67,13 @@ class Reset(Widget): self._reset_state = ResetState.RESETTING threading.Timer(0.1, self._do_erase).start() + def _update_state(self): + if self._reset_state != self._previous_reset_state: + self._previous_reset_state = self._reset_state + self._timeout_st = time.monotonic() + elif self._reset_state != ResetState.RESETTING and (time.monotonic() - self._timeout_st) > TIMEOUT: + exit(0) + def _render(self, rect: rl.Rectangle): label_rect = rl.Rectangle(rect.x + 140, rect.y, rect.width - 280, 100) gui_label(label_rect, "System Reset", 100, font_weight=FontWeight.BOLD)