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.
		
		
		
		
		
			
		
			
				
					
					
						
							77 lines
						
					
					
						
							1.9 KiB
						
					
					
				
			
		
		
	
	
							77 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_()
 | 
						|
 |