openpilot is an open source driver assistance system. openpilot performs the functions of Automated Lane Centering and Adaptive Cruise Control for over 200 supported car makes and models.
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

78 lines
1.9 KiB

#!/usr/bin/env python3
import os
import signal
signal.signal(signal.SIGINT, signal.SIG_DFL)
import cereal.messaging as messaging
from openpilot.system.hardware import HARDWARE
from PyQt5.QtCore import Qt, QTimer
from PyQt5.QtWidgets import QLabel, QWidget, QVBoxLayout, QStackedLayout, QApplication
from openpilot.selfdrive.ui.qt.python_helpers import set_main_window
if __name__ == "__main__":
app = QApplication([])
win = QWidget()
set_main_window(win)
bg = QLabel("", alignment=Qt.AlignCenter)
alert1 = QLabel()
alert2 = QLabel()
vlayout = QVBoxLayout()
vlayout.addWidget(alert1, alignment=Qt.AlignCenter)
vlayout.addWidget(alert2, alignment=Qt.AlignCenter)
tmp = QWidget()
tmp.setLayout(vlayout)
stack = QStackedLayout(win)
stack.addWidget(tmp)
stack.addWidget(bg)
stack.setStackingMode(QStackedLayout.StackAll)
win.setObjectName("win")
win.setStyleSheet("""
#win {
background-color: black;
}
QLabel {
color: white;
font-size: 40px;
}
""")
sm = messaging.SubMaster(['deviceState', 'controlsState'])
def update():
sm.update(0)
onroad = sm.all_checks(['deviceState']) and sm['deviceState'].started
if onroad:
cs = sm['controlsState']
color = ("grey" if str(cs.state) in ("overriding", "preEnabled") else "green") if cs.enabled else "blue"
bg.setText("\U0001F44D" if cs.engageable else "\U0001F6D1")
bg.setStyleSheet(f"font-size: 100px; background-color: {color};")
bg.show()
alert1.setText(cs.alertText1)
alert2.setText(cs.alertText2)
if not sm.alive['controlsState']:
alert1.setText("waiting for controls...")
else:
bg.hide()
alert1.setText("")
alert2.setText("offroad")
HARDWARE.set_screen_brightness(100 if onroad else 40)
os.system("echo 0 > /sys/class/backlight/panel0-backlight/bl_power")
timer = QTimer()
timer.timeout.connect(update)
timer.start(50)
app.exec_()