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_()
 | |
| 
 |