mirror of
https://github.com/dragonpilot/dragonpilot.git
synced 2026-08-21 08:03:42 +08:00
openpilot v0.7.8 release
This commit is contained in:
+39
-17
@@ -19,7 +19,7 @@ WEBCAM = os.getenv("WEBCAM") is not None
|
||||
sys.path.append(os.path.join(BASEDIR, "pyextra"))
|
||||
os.environ['BASEDIR'] = BASEDIR
|
||||
|
||||
TOTAL_SCONS_NODES = 1140
|
||||
TOTAL_SCONS_NODES = 1005
|
||||
prebuilt = os.path.exists(os.path.join(BASEDIR, 'prebuilt'))
|
||||
|
||||
# Create folders needed for msgq
|
||||
@@ -70,19 +70,15 @@ def unblock_stdout():
|
||||
if __name__ == "__main__":
|
||||
unblock_stdout()
|
||||
|
||||
if __name__ == "__main__" and ANDROID:
|
||||
from common.spinner import Spinner
|
||||
from common.text_window import TextWindow
|
||||
else:
|
||||
from common.spinner import FakeSpinner as Spinner
|
||||
from common.text_window import FakeTextWindow as TextWindow
|
||||
from common.spinner import Spinner
|
||||
from common.text_window import TextWindow
|
||||
|
||||
import importlib
|
||||
import traceback
|
||||
from multiprocessing import Process
|
||||
|
||||
# Run scons
|
||||
spinner = Spinner()
|
||||
spinner = Spinner(noop=(__name__ != "__main__" or not ANDROID))
|
||||
spinner.update("0")
|
||||
|
||||
if not prebuilt:
|
||||
@@ -142,8 +138,9 @@ if not prebuilt:
|
||||
cloudlog.error("scons build failed\n" + error_s)
|
||||
|
||||
# Show TextWindow
|
||||
no_ui = __name__ != "__main__" or not ANDROID
|
||||
error_s = "\n \n".join(["\n".join(textwrap.wrap(e, 65)) for e in errors])
|
||||
with TextWindow("openpilot failed to build\n \n" + error_s) as t:
|
||||
with TextWindow("openpilot failed to build\n \n" + error_s, noop=no_ui) as t:
|
||||
t.wait_for_exit()
|
||||
|
||||
exit(1)
|
||||
@@ -192,7 +189,6 @@ managed_processes = {
|
||||
"updated": "selfdrive.updated",
|
||||
"dmonitoringmodeld": ("selfdrive/modeld", ["./dmonitoringmodeld"]),
|
||||
"modeld": ("selfdrive/modeld", ["./modeld"]),
|
||||
"driverview": "selfdrive.monitoring.driverview",
|
||||
}
|
||||
|
||||
daemon_processes = {
|
||||
@@ -245,6 +241,12 @@ car_started_processes = [
|
||||
'locationd',
|
||||
]
|
||||
|
||||
driver_view_processes = [
|
||||
'camerad',
|
||||
'dmonitoringd',
|
||||
'dmonitoringmodeld'
|
||||
]
|
||||
|
||||
if WEBCAM:
|
||||
car_started_processes += [
|
||||
'dmonitoringmodeld',
|
||||
@@ -387,6 +389,14 @@ def cleanup_all_processes(signal, frame):
|
||||
kill_managed_process(name)
|
||||
cloudlog.info("everything is dead")
|
||||
|
||||
|
||||
def send_managed_process_signal(name, sig):
|
||||
if name not in running or name not in managed_processes:
|
||||
return
|
||||
cloudlog.info(f"sending signal {sig} to {name}")
|
||||
os.kill(running[name].pid, sig)
|
||||
|
||||
|
||||
# ****************** run loop ******************
|
||||
|
||||
def manager_init(should_register=True):
|
||||
@@ -455,6 +465,7 @@ def manager_thread():
|
||||
for k in os.getenv("BLOCK").split(","):
|
||||
del managed_processes[k]
|
||||
|
||||
started_prev = False
|
||||
logger_dead = False
|
||||
|
||||
while 1:
|
||||
@@ -473,7 +484,7 @@ def manager_thread():
|
||||
if msg.thermal.freeSpace < 0.05:
|
||||
logger_dead = True
|
||||
|
||||
if msg.thermal.started and "driverview" not in running:
|
||||
if msg.thermal.started:
|
||||
for p in car_started_processes:
|
||||
if p == "loggerd" and logger_dead:
|
||||
kill_managed_process(p)
|
||||
@@ -481,13 +492,24 @@ def manager_thread():
|
||||
start_managed_process(p)
|
||||
else:
|
||||
logger_dead = False
|
||||
driver_view = params.get("IsDriverViewEnabled") == b"1"
|
||||
|
||||
# TODO: refactor how manager manages processes
|
||||
for p in reversed(car_started_processes):
|
||||
kill_managed_process(p)
|
||||
# this is ugly
|
||||
if "driverview" not in running and params.get("IsDriverViewEnabled") == b"1":
|
||||
start_managed_process("driverview")
|
||||
elif "driverview" in running and params.get("IsDriverViewEnabled") == b"0":
|
||||
kill_managed_process("driverview")
|
||||
if p not in driver_view_processes or not driver_view:
|
||||
kill_managed_process(p)
|
||||
|
||||
for p in driver_view_processes:
|
||||
if driver_view:
|
||||
start_managed_process(p)
|
||||
else:
|
||||
kill_managed_process(p)
|
||||
|
||||
# trigger an update after going offroad
|
||||
if started_prev:
|
||||
send_managed_process_signal("updated", signal.SIGHUP)
|
||||
|
||||
started_prev = msg.thermal.started
|
||||
|
||||
# check the status of all processes, did any of them die?
|
||||
running_list = ["%s%s\u001b[0m" % ("\u001b[32m" if running[p].is_alive() else "\u001b[31m", p) for p in running]
|
||||
|
||||
Reference in New Issue
Block a user