78 lines
1.9 KiB
Python
Executable File
78 lines
1.9 KiB
Python
Executable File
#!/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_()
|