reset: timeout after prolonged inactivity (#35859)

* reset

* pc

* const

* x
This commit is contained in:
Maxime Desroches
2025-07-31 14:53:00 -07:00
committed by GitHub
parent e32a2ce164
commit c4b63cd439
+10
View File
@@ -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)