/** * Ambient Light Sensor filter for display brightness * * @param data The un-processed brightness setting (1-5) stored in a pointer * @return The processed brightness value (percentage) stored in a pointer */ static gpointer display_brightness_filter(gpointer data) { int setting = GPOINTER_TO_INT(data); if( setting < 1 ) setting = 1; else if( setting > 100 ) setting = 100; int brightness = setting; int max_prof = lut_display.profiles - 1; if( max_prof < 0 ) goto EXIT; if( !use_als_flag ) goto EXIT; if( als_lux_latest < 0 ) goto EXIT; als_profile_t prof = mce_xlat_int(1,100, 0,max_prof, setting); brightness = als_filter_run(&lut_display, prof, als_lux_latest); EXIT: mce_log(LL_DEBUG, "in=%d -> out=%d", setting, brightness); return GINT_TO_POINTER(brightness); }
/** * Ambient Light Sensor filter for keyboard backlight brightness * * @param data The un-processed brightness setting (1-5) stored in a pointer * @return The processed brightness value */ static gpointer key_backlight_filter(gpointer data) { int value = GPOINTER_TO_INT(data); int scale = 100; if( als_lux_latest < 0 ) goto EXIT; scale = als_filter_run(&lut_key, ALS_PROFILE_NORMAL, als_lux_latest); EXIT: return GINT_TO_POINTER(value * scale / 100); }
/** * Ambient Light Sensor filter for LED brightness * * @param data The un-processed brightness setting (1-5) stored in a pointer * @return The processed brightness value */ static gpointer led_brightness_filter(gpointer data) { int value = GPOINTER_TO_INT(data); int scale = 40; if( lut_led.profiles < 1 ) goto EXIT; if( als_lux_latest < 0 ) goto EXIT; scale = als_filter_run(&lut_led, 0, als_lux_latest); EXIT: return GINT_TO_POINTER(value * scale / 100); }
/** Ambient Light Sensor filter for LPM brightness * * @param data The un-processed brightness setting (1-100) stored in a pointer * @return The processed brightness value */ static gpointer lpm_brightness_filter(gpointer data) { int value = GPOINTER_TO_INT(data); if( lut_lpm.profiles < 1 ) goto EXIT; if( als_lux_latest < 0 ) goto EXIT; /* Note: Input value is ignored and output is * determined only by the als config */ value = als_filter_run(&lut_lpm, 0, als_lux_latest); EXIT: return GINT_TO_POINTER(value); }
/** * Ambient Light Sensor filter for display brightness * * @param data The un-processed brightness setting (1-5) stored in a pointer * @return The processed brightness value (percentage) stored in a pointer */ static gpointer display_brightness_filter(gpointer data) { int setting = GPOINTER_TO_INT(data); if( setting < 1 ) setting = 1; else if( setting > 5 ) setting = 5; int brightness = setting * 20; if( !use_als_flag ) goto EXIT; if( als_lux_latest < 0 ) goto EXIT; als_profile_t prof = setting - 1; brightness = als_filter_run(&lut_display, prof, als_lux_latest); EXIT: mce_log(LL_DEBUG, "in=%d -> out=%d", setting, brightness); return GINT_TO_POINTER(brightness); }