From bf5e361b260c58ae76fe84a75e45accd29ef5b93 Mon Sep 17 00:00:00 2001 From: Rick Lan Date: Thu, 27 Jun 2019 14:46:24 +1000 Subject: [PATCH] =?UTF-8?q?=E5=8A=A0=E5=85=A5=E6=96=B7=E9=9B=BB=E8=87=AA?= =?UTF-8?q?=E5=8B=95=E9=97=9C=E6=A9=9F=E5=8A=9F=E8=83=BD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../dragonpilot/dragonconf/dragonconf.py | 7 +++++ selfdrive/dragonpilot/shutdownd/__init__.py | 0 selfdrive/dragonpilot/shutdownd/shutdownd.py | 27 +++++++++++++++++++ selfdrive/manager.py | 8 +++--- 4 files changed, 39 insertions(+), 3 deletions(-) create mode 100644 selfdrive/dragonpilot/shutdownd/__init__.py create mode 100644 selfdrive/dragonpilot/shutdownd/shutdownd.py diff --git a/selfdrive/dragonpilot/dragonconf/dragonconf.py b/selfdrive/dragonpilot/dragonconf/dragonconf.py index bf36c0f7c..c5f4314f6 100644 --- a/selfdrive/dragonpilot/dragonconf/dragonconf.py +++ b/selfdrive/dragonpilot/dragonconf/dragonconf.py @@ -34,6 +34,13 @@ class dragonconf(): if has_new_def: self.write(config) + # Auto shutdown, default 0 (disable) + if "autoShutdownAt" not in config: + config["autoShutdownAt"] = 0 + has_new_def = True + if has_new_def: + self.write(config) + return config def write(self, config): diff --git a/selfdrive/dragonpilot/shutdownd/__init__.py b/selfdrive/dragonpilot/shutdownd/__init__.py new file mode 100644 index 000000000..e69de29bb diff --git a/selfdrive/dragonpilot/shutdownd/shutdownd.py b/selfdrive/dragonpilot/shutdownd/shutdownd.py new file mode 100644 index 000000000..c1cbd3feb --- /dev/null +++ b/selfdrive/dragonpilot/shutdownd/shutdownd.py @@ -0,0 +1,27 @@ +#!/usr/bin/env python2.7 + +import os +import time +from selfdrive.dragonpilot.dragonconf.dragonconf import dragonconf +dragonconf = dragonconf() + +def main(gctx=None): + + shutdown_count = 0 + + while 1: + with open("/sys/class/power_supply/usb/present") as f: + usb_online = bool(int(f.read())) + + if not usb_online: + shutdown_count += 1 + else: + shutdown_count = 0 + + if shutdown_count >= dragonconf.conf["autoShutdownAt"] > 0: + os.system('LD_LIBRARY_PATH="" svc power shutdown') + + time.sleep(1) + +if __name__ == "__main__": + main() \ No newline at end of file diff --git a/selfdrive/manager.py b/selfdrive/manager.py index deee3c1dc..4c7c19a33 100755 --- a/selfdrive/manager.py +++ b/selfdrive/manager.py @@ -108,8 +108,9 @@ managed_processes = { "gpsd": ("selfdrive/sensord", ["./gpsd"]), "updated": "selfdrive.updated", "athena": "selfdrive.athena.athenad", - "dashcam": "selfdrive.dragonpilot.dashcamd.dashcamd", - "safeguard": "selfdrive.dragonpilot.safeguardd.safeguardd" + "dashcamd": "selfdrive.dragonpilot.dashcamd.dashcamd", + "safeguardd": "selfdrive.dragonpilot.safeguardd.safeguardd", + "shutdownd": "selfdrive.dragonpilot.shutdownd.shutdownd", } android_packages = ("ai.comma.plus.offroad", "ai.comma.plus.frame") @@ -133,6 +134,7 @@ persistent_processes = [ 'updated', 'athena', 'safeguardd', + 'shutdownd', ] car_started_processes = [ @@ -148,7 +150,7 @@ car_started_processes = [ 'ubloxd', 'gpsd', 'deleter', - 'dashcam', + 'dashcamd', ] def register_managed_process(name, desc, car_started=False):