static int alc_timeout_id = 0;
static int sf_handle = -1;
static int max_brightness = 10;
+static int min_brightness = 1;
+static int range_brightness = 9;
+static int init_brightness = FALSE;
static int fault_count = 0;
+static int get_backlight_brightness()
+{
+ int max_value = 0;
+ int min_value = 0;
+ int range_value = 0;
+ int ret = -1;
+
+ ret = plugin_intf->OEM_sys_get_backlight_max_brightness(
+ DEFAULT_DISPLAY,&max_value);
+ if (ret != 0 || max_value <= 0) {
+ LOGERR("max brightness is wrong! (%d, %d)", ret, max_value);
+ return FALSE;
+ }
+
+ ret = plugin_intf->OEM_sys_get_backlight_min_brightness(
+ DEFAULT_DISPLAY, &min_value);
+ if (ret != 0 || min_value < 0) {
+ LOGERR("min brightness is wrong! (%d, %d)", ret, min_value);
+ return FALSE;
+ }
+
+ range_value = max_value - min_value;
+ if (range_value <= 0) {
+ LOGERR("range brightness is wrong! (%d, %d, %d)",
+ max_value, min_value, range_value);
+ return FALSE;
+ }
+
+ max_brightness = max_value;
+ min_brightness = min_value;
+ range_brightness = range_value;
+ LOGINFO("get brightness success max(%d) min(%d) range(%d)",
+ max_brightness, min_brightness, range_brightness);
+
+ return TRUE;
+}
+
static gboolean alc_handler(gpointer data)
{
int value = 0;
if (sf_get_data(sf_handle, LIGHT_BASE_DATA_SET, &light_data) < 0) {
fault_count++;
} else {
+ if (init_brightness == FALSE)
+ init_brightness = get_backlight_brightness();
if (light_data.values[0] < 0.0 || light_data.values[0] > 10.0) {
LOGINFO("fail to load light data : %d", (int)light_data.values[0]);
fault_count++;
} else {
int tmp_value;
- value = max_brightness * (int)light_data.values[0] / 10;
- plugin_intf->OEM_sys_get_backlight_brightness(DEFAULT_DISPLAY, &tmp_value);
+ int power_saving_stat = -1;
+ int power_saving_display_stat = -1;
+ vconf_get_bool(VCONFKEY_SETAPPL_PWRSV_SYSMODE_STATUS, &power_saving_stat);
+ if (power_saving_stat == 1)
+ vconf_get_bool(VCONFKEY_SETAPPL_PWRSV_CUSTMODE_DISPLAY, &power_saving_display_stat);
+ if (power_saving_display_stat != 1)
+ power_saving_display_stat = 0;
+ value = min_brightness +
+ (range_brightness * (int)light_data.values[0] / 10);
+ plugin_intf->OEM_sys_get_backlight_brightness(DEFAULT_DISPLAY, &tmp_value, power_saving_display_stat);
if (tmp_value != value) {
set_default_brt(value);
backlight_restore();
if (alc_timeout_id != 0)
g_source_remove(alc_timeout_id);
alc_timeout_id = 0;
- vconf_set_bool(VCONFKEY_SETAPPL_BRIGHTNESS_AUTOMATIC_BOOL, 0);
+ vconf_set_int(VCONFKEY_SETAPPL_BRIGHTNESS_AUTOMATIC_INT, SETTING_BRIGHTNESS_AUTOMATIC_OFF);
LOGERR("Fault counts is over 5, disable automatic brightness");
return FALSE;
}
static int alc_action(int timeout)
{
- LOGDBG("alc action");
+ LOGINFO("alc action");
/* sampling timer add */
if (alc_timeout_id == 0 && !(status_flag & PWRSV_FLAG))
alc_timeout_id =
{
int sf_state = -1;
/* connect with sensor fw */
- LOGDBG("connect with sensor fw");
+ LOGINFO("connect with sensor fw");
sf_handle = sf_connect(LIGHT_SENSOR);
if (sf_handle < 0) {
LOGERR("sensor attach fail");
static int disconnect_sfsvc()
{
- LOGDBG("disconnect with sensor fw");
+ LOGINFO("disconnect with sensor fw");
if(sf_handle >= 0)
{
sf_stop(sf_handle);
static int set_alc_function(keynode_t *key_nodes, void *data)
{
int onoff = 0;
+ int ret = -1;
+ int brt = -1;
+ int default_brt = -1;
+ int max_brt = -1;
if (key_nodes == NULL) {
LOGERR("wrong parameter, key_nodes is null");
return -1;
}
- onoff = vconf_keynode_get_bool(key_nodes);
+ onoff = vconf_keynode_get_int(key_nodes);
- if (onoff == true) {
+ if (onoff == SETTING_BRIGHTNESS_AUTOMATIC_ON) {
if(connect_sfsvc() < 0)
return -1;
SAMPLING_INTERVAL,
(GSourceFunc) alc_handler, NULL,
NULL);
+ } else if (onoff == SETTING_BRIGHTNESS_AUTOMATIC_PAUSE) {
+ LOGINFO("auto brightness paused!");
+ disconnect_sfsvc();
} else {
disconnect_sfsvc();
+
+ ret = get_setting_brightness(&default_brt);
+ if (ret != 0 || default_brt < 0) {
+ LOGINFO("fail to read vconf value for brightness");
+
+ if (0 > plugin_intf->OEM_sys_get_backlight_max_brightness(DEFAULT_DISPLAY, &max_brt))
+ brt = 7;
+ else
+ brt = max_brt * 0.4;
+ if(default_brt < 0)
+ vconf_set_int(VCONFKEY_SETAPPL_LCD_BRIGHTNESS, brt);
+ default_brt = brt;
+ }
+
+ set_default_brt(default_brt);
+ backlight_restore();
}
return 0;
LOGINFO("register sfsvc");
- vconf_get_bool(VCONFKEY_SETAPPL_BRIGHTNESS_AUTOMATIC_BOOL, &vconf_auto);
- if (vconf_auto == true) {
+ vconf_get_int(VCONFKEY_SETAPPL_BRIGHTNESS_AUTOMATIC_INT, &vconf_auto);
+ if (vconf_auto == SETTING_BRIGHTNESS_AUTOMATIC_ON) {
if(connect_sfsvc() < 0)
return TRUE;
(GSourceFunc) alc_handler, NULL,
NULL);
if (alc_timeout_id != 0)
- return FALSE;
+ return FALSE;
disconnect_sfsvc();
return TRUE;
}
int alc_conf;
int sf_state = 0;
- plugin_intf->OEM_sys_get_backlight_max_brightness(DEFAULT_DISPLAY, &max_brightness);
- vconf_get_bool(VCONFKEY_SETAPPL_BRIGHTNESS_AUTOMATIC_BOOL, &alc_conf);
+ init_brightness = get_backlight_brightness();
+ vconf_get_int(VCONFKEY_SETAPPL_BRIGHTNESS_AUTOMATIC_INT, &alc_conf);
- if (alc_conf == true) {
+ if (alc_conf == SETTING_BRIGHTNESS_AUTOMATIC_ON) {
g_timeout_add_seconds_full(G_PRIORITY_DEFAULT,
SAMPLING_INTERVAL,
(GSourceFunc) check_sfsvc, NULL,
}
/* add auto_brt_setting change handler */
- vconf_notify_key_changed(VCONFKEY_SETAPPL_BRIGHTNESS_AUTOMATIC_BOOL,
+ vconf_notify_key_changed(VCONFKEY_SETAPPL_BRIGHTNESS_AUTOMATIC_INT,
(void *)set_alc_function, NULL);
if (prev_init_extention != NULL)