tici light sensor (#2238)
parent
459aa1123d
commit
2490be762d
|
@ -58,6 +58,13 @@ GLWindow::GLWindow(QWidget *parent) : QOpenGLWidget(parent) {
|
|||
timer = new QTimer(this);
|
||||
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() {
|
||||
|
@ -82,6 +89,16 @@ void GLWindow::initializeGL() {
|
|||
}
|
||||
|
||||
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);
|
||||
|
||||
#ifdef QCOM2
|
||||
|
|
|
@ -2,6 +2,7 @@
|
|||
|
||||
#include <QWidget>
|
||||
#include <QTimer>
|
||||
#include <QLabel>
|
||||
#include <QGuiApplication>
|
||||
#include <QOpenGLWidget>
|
||||
#include <QOpenGLFunctions>
|
||||
|
@ -54,6 +55,10 @@ private:
|
|||
QtSound sound;
|
||||
|
||||
bool onroad = true;
|
||||
QLabel * label = NULL;
|
||||
float brightness_b = 0;
|
||||
float brightness_m = 0;
|
||||
float smooth_brightness = 0;
|
||||
|
||||
public slots:
|
||||
void timerUpdate();
|
||||
|
|
|
@ -24,7 +24,7 @@ int write_param_float(float param, const char* param_name, bool persistent_param
|
|||
|
||||
void ui_init(UIState *s) {
|
||||
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->status = STATUS_OFFROAD;
|
||||
|
@ -117,7 +117,6 @@ void update_sockets(UIState *s) {
|
|||
UIScene &scene = s->scene;
|
||||
SubMaster &sm = *(s->sm);
|
||||
|
||||
// poll sockets
|
||||
if (sm.update(0) == 0){
|
||||
return;
|
||||
}
|
||||
|
@ -219,6 +218,16 @@ void update_sockets(UIState *s) {
|
|||
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;
|
||||
}
|
||||
|
||||
|
|
Loading…
Reference in New Issue