tici light sensor (#2238)

old-commit-hash: 2490be762d
commatwo_master
Adeeb Shihadeh 5 years ago committed by GitHub
parent 260ff8cd46
commit be29b8f236
  1. 17
      selfdrive/ui/qt/window.cc
  2. 5
      selfdrive/ui/qt/window.hpp
  3. 13
      selfdrive/ui/ui.cc

@ -58,6 +58,13 @@ GLWindow::GLWindow(QWidget *parent) : QOpenGLWidget(parent) {
timer = new QTimer(this); timer = new QTimer(this);
QObject::connect(timer, SIGNAL(timeout()), this, SLOT(timerUpdate())); QObject::connect(timer, SIGNAL(timeout()), this, SLOT(timerUpdate()));
int result = read_param(&brightness_b, "BRIGHTNESS_B", true);
result += read_param(&brightness_m, "BRIGHTNESS_M", true);
if(result != 0) {
brightness_b = 0.0;
brightness_m = 5.0;
}
smooth_brightness = 512;
} }
GLWindow::~GLWindow() { GLWindow::~GLWindow() {
@ -82,6 +89,16 @@ void GLWindow::initializeGL() {
} }
void GLWindow::timerUpdate(){ void GLWindow::timerUpdate(){
// Update brightness
float clipped_brightness = std::min(1023.0f, (ui_state->light_sensor*brightness_m) + brightness_b);
smooth_brightness = clipped_brightness * 0.01f + smooth_brightness * 0.99f;
std::ofstream brightness_control("/sys/class/backlight/panel0-backlight/brightness");
if (brightness_control.is_open()){
brightness_control << int(smooth_brightness) << "\n";
brightness_control.close();
}
ui_update(ui_state); ui_update(ui_state);
#ifdef QCOM2 #ifdef QCOM2

@ -2,6 +2,7 @@
#include <QWidget> #include <QWidget>
#include <QTimer> #include <QTimer>
#include <QLabel>
#include <QGuiApplication> #include <QGuiApplication>
#include <QOpenGLWidget> #include <QOpenGLWidget>
#include <QOpenGLFunctions> #include <QOpenGLFunctions>
@ -54,6 +55,10 @@ private:
QtSound sound; QtSound sound;
bool onroad = true; bool onroad = true;
QLabel * label = NULL;
float brightness_b = 0;
float brightness_m = 0;
float smooth_brightness = 0;
public slots: public slots:
void timerUpdate(); void timerUpdate();

@ -24,7 +24,7 @@ int write_param_float(float param, const char* param_name, bool persistent_param
void ui_init(UIState *s) { void ui_init(UIState *s) {
s->sm = new SubMaster({"model", "controlsState", "uiLayoutState", "liveCalibration", "radarState", "thermal", s->sm = new SubMaster({"model", "controlsState", "uiLayoutState", "liveCalibration", "radarState", "thermal",
"health", "carParams", "ubloxGnss", "driverState", "dMonitoringState"}); "health", "carParams", "ubloxGnss", "driverState", "dMonitoringState", "sensorEvents"});
s->started = false; s->started = false;
s->status = STATUS_OFFROAD; s->status = STATUS_OFFROAD;
@ -117,7 +117,6 @@ void update_sockets(UIState *s) {
UIScene &scene = s->scene; UIScene &scene = s->scene;
SubMaster &sm = *(s->sm); SubMaster &sm = *(s->sm);
// poll sockets
if (sm.update(0) == 0){ if (sm.update(0) == 0){
return; return;
} }
@ -219,6 +218,16 @@ void update_sockets(UIState *s) {
scene.frontview = false; scene.frontview = false;
} }
#ifdef QCOM2 // TODO: use this for QCOM too
if (sm.updated("sensorEvents")) {
for (auto sensor : sm["sensorEvents"].getSensorEvents()) {
if (sensor.which() == cereal::SensorEventData::LIGHT) {
s->light_sensor = sensor.getLight();
}
}
}
#endif
s->started = scene.thermal.getStarted() || scene.frontview; s->started = scene.thermal.getStarted() || scene.frontview;
} }

Loading…
Cancel
Save