tici light sensor (#2238)

albatross
Adeeb Shihadeh 2020-09-28 14:49:07 -07:00 committed by GitHub
parent 459aa1123d
commit 2490be762d
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
3 changed files with 33 additions and 2 deletions

View File

@ -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

View File

@ -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();

View File

@ -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;
}