Use exposure for screen brightness (#20290)

* use camera to set screen brightness

* leave default

* lower default

* fix offroad

* increase offroad brightness

* ifdef ifndef

* fix qcomgp
pull/20294/head
Willem Melching 4 years ago committed by GitHub
parent d66661fa67
commit 026a580ee3
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
  1. 12
      selfdrive/ui/qt/home.cc
  2. 16
      selfdrive/ui/ui.cc

@ -26,6 +26,7 @@
#define BACKLIGHT_DT 0.25 #define BACKLIGHT_DT 0.25
#define BACKLIGHT_TS 2.00 #define BACKLIGHT_TS 2.00
#define BACKLIGHT_OFFROAD 512
OffroadHome::OffroadHome(QWidget* parent) : QWidget(parent) { OffroadHome::OffroadHome(QWidget* parent) : QWidget(parent) {
QVBoxLayout* main_layout = new QVBoxLayout(); QVBoxLayout* main_layout = new QVBoxLayout();
@ -215,10 +216,10 @@ GLWindow::GLWindow(QWidget* parent) : QOpenGLWidget(parent) {
int result = read_param(&brightness_b, "BRIGHTNESS_B", true); int result = read_param(&brightness_b, "BRIGHTNESS_B", true);
result += read_param(&brightness_m, "BRIGHTNESS_M", true); result += read_param(&brightness_m, "BRIGHTNESS_M", true);
if (result != 0) { if (result != 0) {
brightness_b = 200.0; brightness_b = 10.0;
brightness_m = 10.0; brightness_m = 1.0;
} }
smooth_brightness = 512; smooth_brightness = BACKLIGHT_OFFROAD;
} }
GLWindow::~GLWindow() { GLWindow::~GLWindow() {
@ -247,8 +248,11 @@ void GLWindow::backlightUpdate() {
// Update brightness // Update brightness
float k = (BACKLIGHT_DT / BACKLIGHT_TS) / (1.0f + BACKLIGHT_DT / BACKLIGHT_TS); float k = (BACKLIGHT_DT / BACKLIGHT_TS) / (1.0f + BACKLIGHT_DT / BACKLIGHT_TS);
float clipped_brightness = std::min(1023.0f, (ui_state.scene.light_sensor * brightness_m) + brightness_b); float clipped_brightness = ui_state.scene.started ?
std::min(1023.0f, (ui_state.scene.light_sensor * brightness_m) + brightness_b) : BACKLIGHT_OFFROAD;
smooth_brightness = clipped_brightness * k + smooth_brightness * (1.0f - k); smooth_brightness = clipped_brightness * k + smooth_brightness * (1.0f - k);
int brightness = smooth_brightness; int brightness = smooth_brightness;
if (!ui_state.awake) { if (!ui_state.awake) {

@ -54,8 +54,13 @@ static void ui_init_vision(UIState *s) {
void ui_init(UIState *s) { void ui_init(UIState *s) {
s->sm = new SubMaster({"modelV2", "controlsState", "uiLayoutState", "liveCalibration", "radarState", "deviceState", "liveLocationKalman", s->sm = new SubMaster({
"pandaState", "carParams", "driverState", "driverMonitoringState", "sensorEvents", "carState", "ubloxGnss"}); "modelV2", "controlsState", "uiLayoutState", "liveCalibration", "radarState", "deviceState", "liveLocationKalman",
"pandaState", "carParams", "driverState", "driverMonitoringState", "sensorEvents", "carState", "ubloxGnss",
#ifdef QCOM2
"roadCameraState",
#endif
});
s->scene.started = false; s->scene.started = false;
s->status = STATUS_OFFROAD; s->status = STATUS_OFFROAD;
@ -215,7 +220,9 @@ static void update_sockets(UIState *s) {
if (sm.updated("sensorEvents")) { if (sm.updated("sensorEvents")) {
for (auto sensor : sm["sensorEvents"].getSensorEvents()) { for (auto sensor : sm["sensorEvents"].getSensorEvents()) {
if (sensor.which() == cereal::SensorEventData::LIGHT) { if (sensor.which() == cereal::SensorEventData::LIGHT) {
#ifndef QCOM2
scene.light_sensor = sensor.getLight(); scene.light_sensor = sensor.getLight();
#endif
} else if (!scene.started && sensor.which() == cereal::SensorEventData::ACCELERATION) { } else if (!scene.started && sensor.which() == cereal::SensorEventData::ACCELERATION) {
auto accel = sensor.getAcceleration().getV(); auto accel = sensor.getAcceleration().getV();
if (accel.totalSize().wordCount){ // TODO: sometimes empty lists are received. Figure out why if (accel.totalSize().wordCount){ // TODO: sometimes empty lists are received. Figure out why
@ -229,6 +236,11 @@ static void update_sockets(UIState *s) {
} }
} }
} }
#ifdef QCOM2
if (sm.updated("roadCameraState")) {
scene.light_sensor = std::clamp<float>(1023.0 - sm["roadCameraState"].getRoadCameraState().getIntegLines(), 0.0, 1023.0);
}
#endif
scene.started = scene.deviceState.getStarted() || scene.driver_view; scene.started = scene.deviceState.getStarted() || scene.driver_view;
} }

Loading…
Cancel
Save