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.
51 lines
1.4 KiB
51 lines
1.4 KiB
3 years ago
|
#include <QApplication>
|
||
|
#include <QtWidgets>
|
||
|
#include <QTimer>
|
||
|
|
||
|
#include "cereal/messaging/messaging.h"
|
||
|
#include "selfdrive/ui/ui.h"
|
||
|
#include "selfdrive/ui/qt/qt_window.h"
|
||
|
|
||
|
int main(int argc, char *argv[]) {
|
||
|
QApplication a(argc, argv);
|
||
|
QWidget w;
|
||
|
setMainWindow(&w);
|
||
|
|
||
|
w.setStyleSheet("background-color: black;");
|
||
|
|
||
|
// our beautiful UI
|
||
|
QVBoxLayout *layout = new QVBoxLayout(&w);
|
||
|
QLabel *label = new QLabel("〇");
|
||
|
layout->addWidget(label, 0, Qt::AlignCenter);
|
||
|
|
||
|
QTimer timer;
|
||
|
QObject::connect(&timer, &QTimer::timeout, [=]() {
|
||
|
static SubMaster sm({"deviceState", "controlsState"});
|
||
|
|
||
|
bool onroad_prev = sm.allAliveAndValid({"deviceState"}) &&
|
||
|
sm["deviceState"].getDeviceState().getStarted();
|
||
|
sm.update(0);
|
||
|
|
||
|
bool onroad = sm.allAliveAndValid({"deviceState"}) &&
|
||
|
sm["deviceState"].getDeviceState().getStarted();
|
||
|
|
||
|
if (onroad) {
|
||
|
label->setText("〇");
|
||
|
auto cs = sm["controlsState"].getControlsState();
|
||
|
UIStatus status = cs.getEnabled() ? STATUS_ENGAGED : STATUS_DISENGAGED;
|
||
|
label->setStyleSheet(QString("color: %1; font-size: 250px;").arg(bg_colors[status].name()));
|
||
|
} else {
|
||
|
label->setText("offroad");
|
||
|
label->setStyleSheet("color: grey; font-size: 40px;");
|
||
|
}
|
||
|
|
||
|
if ((onroad != onroad_prev) || sm.frame < 2) {
|
||
|
Hardware::set_brightness(50);
|
||
|
Hardware::set_display_power(onroad);
|
||
|
}
|
||
|
});
|
||
|
timer.start(50);
|
||
|
|
||
|
return a.exec();
|
||
|
}
|