ui: kick watchdog (#35460)

* kick watchdog

* use global

* use monotonic
pull/35474/head
Dean Lee 6 days ago committed by GitHub
parent 8aadf02b2f
commit 23ea85dca6
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
  1. 22
      common/watchdog.py
  2. 4
      selfdrive/ui/ui.py
  3. 3
      system/manager/process.py

@ -0,0 +1,22 @@
import os
import time
import struct
from openpilot.system.hardware.hw import Paths
WATCHDOG_FN = f"{Paths.shm_path()}/wd_"
_LAST_KICK = 0.0
def kick_watchdog():
global _LAST_KICK
current_time = time.monotonic()
if current_time - _LAST_KICK < 1.0:
return
try:
with open(f"{WATCHDOG_FN}{os.getpid()}", 'wb') as f:
f.write(struct.pack('<Q', int(current_time * 1e9)))
f.flush()
_LAST_KICK = current_time
except OSError:
pass

@ -1,10 +1,12 @@
#!/usr/bin/env python3 #!/usr/bin/env python3
import pyray as rl import pyray as rl
from openpilot.common.watchdog import kick_watchdog
from openpilot.system.ui.lib.application import gui_app from openpilot.system.ui.lib.application import gui_app
from openpilot.selfdrive.ui.layouts.main import MainLayout from openpilot.selfdrive.ui.layouts.main import MainLayout
from openpilot.selfdrive.ui.ui_state import ui_state from openpilot.selfdrive.ui.ui_state import ui_state
def main(): def main():
gui_app.init_window("UI") gui_app.init_window("UI")
main_layout = MainLayout() main_layout = MainLayout()
@ -15,6 +17,8 @@ def main():
main_layout.render(rl.Rectangle(0, 0, gui_app.width, gui_app.height)) main_layout.render(rl.Rectangle(0, 0, gui_app.width, gui_app.height))
kick_watchdog()
if __name__ == "__main__": if __name__ == "__main__":
main() main()

@ -16,9 +16,8 @@ import openpilot.system.sentry as sentry
from openpilot.common.basedir import BASEDIR from openpilot.common.basedir import BASEDIR
from openpilot.common.params import Params from openpilot.common.params import Params
from openpilot.common.swaglog import cloudlog from openpilot.common.swaglog import cloudlog
from openpilot.system.hardware.hw import Paths from openpilot.common.watchdog import WATCHDOG_FN
WATCHDOG_FN = f"{Paths.shm_path()}/wd_"
ENABLE_WATCHDOG = os.getenv("NO_WATCHDOG") is None ENABLE_WATCHDOG = os.getenv("NO_WATCHDOG") is None

Loading…
Cancel
Save