Control de retroiluminación del proceso de activación

Este artículo se basa en el análisis de código de la plataforma rk3128;

El proceso de control de la retroiluminación en el proceso de activación es el siguiente:

1, frameworks/base/services/core/java/com/android/server/display/DisplayPowerController.java

LightsManager final privado mLights

mLights = LocalServices.getService(LightsManager.class); //获得LightServer

mPowerState = new DisplayPowerState(mBlanker,
                mLights.getLight(LightsManager.LIGHT_ID_BACKLIGHT ) ,
                new ColorFade(Display.DEFAULT_DISPLAY)); \\Obtenga la instancia del servidor de luces e inicialice la estructura DisplayPowerState

mPowerState.setScreenState(estado); //Llama al método en la instancia de DisplayPowerState para controlar el brillo

PD: LightServer también proporciona otro control de luz, el siguiente es un ejemplo

mButtonLight = mLights.getLight(LightsManager.LIGHT_ID_BUTTONS);

mButtonLight.setBrightness(0);
 

2, frameworks/base/services/core/java/com/android/server/display/DisplayPowerState.java

 /**
127 * Establece si la pantalla está encendida, apagada o dormida.
128 */
129 public void setScreenState(int state) { 130 if (mScreenState != state) { 131 if (DEBUG) { 132 Slog.d(TAG, "setScreenState: state=" + state); 133 } 134  135 mScreenState = estado; 136 mScreenReady = falso; 137 programarActualizarPantalla(); 138 } 139 }









De acuerdo con los diferentes estados de la pantalla, el método de configuración automática del interruptor de pantalla, incluida la configuración de brillo, etc., este artículo solo se enfoca en la configuración de brillo;

Después de actualizar el estado de mScreenState aquí, realice una serie de configuraciones a través del método scheduleScreenUpdate;

Llamada final: mBacklight.setBrightness(backlight); set // mBacklight es la instancia de Light obtenida arriba de mLights.getLight( LightsManager.LIGHT_ID_BACKLIGHT )

3, frameworks/base/services/core/java/com/android/server/lights/LightsService.java

La segunda parte llama a la clase interna clase final privada LightImpl extiende Light en este documento

public void setBrightness(brillo int);

Finalmente llame a la capa jni:

setLight_native(mNativePointer, mId, color, mode, onMS, offMS, brightMode);

4, marcos/base/servicios/core/jni/com_android_server_lights_LightsService.cpp

Obtenga módulos relacionados a través de hw_get_module( LIGHTS_HARDWARE_MODULE_ID , (hw_module_t const**)&module);

Finalmente llame a la interfaz devices->lights[light]->set_light(devices->lights[light], &state) de la capa hal para configurar la retroiluminación;

5. hardware/rockchip/liblights/lights.cpp (hal privado de Rockchip, busque por LIGHTS_HARDWARE_MODULE_ID )

Verifique el código correspondiente y finalmente llame a write_int (BACKLIGHT_PATH, bright); escriba en el archivo de retroiluminación en sysfs para configurar;

BACKLIGHT_PATH定义:#define BACKLIGHT_PATH "/sys/class/backlight/rk28_bl/brightness"

6. Luego, ingrese el controlador del kernel, para continuar


---------------------
Autor: lzpdz
Fuente: CSDN
Original: https://blog.csdn.net/lzpdz/article/details/52274759
Declaración de derechos de autor: Este artículo Artículo original para el autor, ¡adjunte el enlace de la publicación del blog para su reimpresión!
Análisis de contenido Por: CSDN, CNBLOG publicación de blog plug-in de reimpresión con un clic

Supongo que te gusta

Origin blog.csdn.net/xiaowang_lj/article/details/132173631
Recomendado
Clasificación