|
|
@ -2,6 +2,7 @@ |
|
|
|
import os |
|
|
|
import os |
|
|
|
import sys |
|
|
|
import sys |
|
|
|
import threading |
|
|
|
import threading |
|
|
|
|
|
|
|
import time |
|
|
|
from enum import IntEnum |
|
|
|
from enum import IntEnum |
|
|
|
|
|
|
|
|
|
|
|
import pyray as rl |
|
|
|
import pyray as rl |
|
|
@ -14,6 +15,7 @@ from openpilot.system.ui.widgets.label import gui_label, gui_text_box |
|
|
|
|
|
|
|
|
|
|
|
NVME = "/dev/nvme0n1" |
|
|
|
NVME = "/dev/nvme0n1" |
|
|
|
USERDATA = "/dev/disk/by-partlabel/userdata" |
|
|
|
USERDATA = "/dev/disk/by-partlabel/userdata" |
|
|
|
|
|
|
|
TIMEOUT = 3*60 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
class ResetMode(IntEnum): |
|
|
|
class ResetMode(IntEnum): |
|
|
@ -33,6 +35,7 @@ class Reset(Widget): |
|
|
|
def __init__(self, mode): |
|
|
|
def __init__(self, mode): |
|
|
|
super().__init__() |
|
|
|
super().__init__() |
|
|
|
self._mode = mode |
|
|
|
self._mode = mode |
|
|
|
|
|
|
|
self._previous_reset_state = None |
|
|
|
self._reset_state = ResetState.NONE |
|
|
|
self._reset_state = ResetState.NONE |
|
|
|
self._cancel_button = Button("Cancel", self._cancel_callback) |
|
|
|
self._cancel_button = Button("Cancel", self._cancel_callback) |
|
|
|
self._confirm_button = Button("Confirm", self._confirm, button_style=ButtonStyle.PRIMARY) |
|
|
|
self._confirm_button = Button("Confirm", self._confirm, button_style=ButtonStyle.PRIMARY) |
|
|
@ -64,6 +67,13 @@ class Reset(Widget): |
|
|
|
self._reset_state = ResetState.RESETTING |
|
|
|
self._reset_state = ResetState.RESETTING |
|
|
|
threading.Timer(0.1, self._do_erase).start() |
|
|
|
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): |
|
|
|
def _render(self, rect: rl.Rectangle): |
|
|
|
label_rect = rl.Rectangle(rect.x + 140, rect.y, rect.width - 280, 100) |
|
|
|
label_rect = rl.Rectangle(rect.x + 140, rect.y, rect.width - 280, 100) |
|
|
|
gui_label(label_rect, "System Reset", 100, font_weight=FontWeight.BOLD) |
|
|
|
gui_label(label_rect, "System Reset", 100, font_weight=FontWeight.BOLD) |
|
|
|