check_lcdoff_direct() is used to check if display state can go to S_LCDOFF.
All plugins follows same policy of this function.
Thus, this function is added below display-state-transition.
- bool display_state_transition_is_possible_to_go_lcdoff(void);
-> This replaces check_lcdoff_direct().
Also, new function is added below display-plugin.
- int display_plugin_config_get_dimming(int *dimming);
-> It gets dimming config value from the conf file.
To confirm going to S_LCDOFF state, dimming value must also be checked.
So, display_plugin_config_get_dimming() is added too.
Change-Id: I19545fa1d6e7592a938a24e0b130302d88d81e02
Signed-off-by: Yunhee Seo <yuni.seo@samsung.com>
pm_save_logdump();
}
-int check_lcdoff_direct(void)
-{
- int ret, lock, cradle;
- int hdmi_state;
-
- if (get_pm_old_state() != S_NORMAL)
- return false;
-
- if (get_pm_cur_state() != S_LCDDIM)
- return false;
-
- if (!display_conf.dimming)
- return true;
-
- lock = __get_lock_screen_state();
- if (lock != VCONFKEY_IDLE_LOCK)
- return false;
-
- hdmi_state = extcon_get_status(EXTCON_CABLE_HDMI);
- if (hdmi_state)
- return false;
-
- ret = vconf_get_int(VCONFKEY_SYSMAN_CRADLE_STATUS, &cradle);
- if (ret >= 0 && cradle == DOCK_SOUND)
- return false;
- else if (ret < 0)
- _E("Failed to get vconf value for cradle status: %d", vconf_get_ext_errno());
-
- _D("Goto LCDOFF direct: lock(%d) hdmi(%d) cradle(%d).", lock, hdmi_state, cradle);
-
- return true;
-}
-
/*
* default transition function
* 1. call check
if (set_custom_lcdon_timeout(0) == true)
display_state_transition_update_display_state_timeout_by_priority();
- if (check_lcdoff_direct() == true) {
+ if (display_state_transition_is_possible_to_go_lcdoff()) {
/* enter next state directly */
states[get_pm_cur_state()].trans(EVENT_TIMEOUT);
} else {
pm_save_logdump();
}
-int check_lcdoff_direct(void)
-{
- int ret, lock, cradle;
- int hdmi_state;
-
- if (get_pm_old_state() != S_NORMAL)
- return false;
-
- if (get_pm_cur_state() != S_LCDDIM)
- return false;
-
- if (!display_conf.dimming)
- return true;
-
- lock = __get_lock_screen_state();
- if (lock != VCONFKEY_IDLE_LOCK)
- return false;
-
- hdmi_state = extcon_get_status(EXTCON_CABLE_HDMI);
- if (hdmi_state)
- return false;
-
- ret = vconf_get_int(VCONFKEY_SYSMAN_CRADLE_STATUS, &cradle);
- if (ret >= 0 && cradle == DOCK_SOUND)
- return false;
- else if (ret < 0)
- _E("Failed to get vconf value for cradle status: %d", vconf_get_ext_errno());
-
- _D("Goto LCDOFF direct: lock(%d) hdmi(%d) cradle(%d).", lock, hdmi_state, cradle);
-
- return true;
-}
-
/*
* default transition function
* 1. call check
if (set_custom_lcdon_timeout(0) == true)
display_state_transition_update_display_state_timeout_by_priority();
- if (check_lcdoff_direct() == true) {
+ if (display_state_transition_is_possible_to_go_lcdoff()) {
/* enter next state directly */
states[get_pm_cur_state()].trans(EVENT_TIMEOUT);
} else {
pm_save_logdump();
}
-int check_lcdoff_direct(void)
-{
- int ret, lock, cradle;
- int hdmi_state;
-
- if (get_pm_old_state() != S_NORMAL)
- return false;
-
- if (get_pm_cur_state() != S_LCDDIM)
- return false;
-
- if (!display_conf.dimming)
- return true;
-
- lock = __get_lock_screen_state();
- if (lock != VCONFKEY_IDLE_LOCK)
- return false;
-
- hdmi_state = extcon_get_status(EXTCON_CABLE_HDMI);
- if (hdmi_state)
- return false;
-
- ret = vconf_get_int(VCONFKEY_SYSMAN_CRADLE_STATUS, &cradle);
- if (ret >= 0 && cradle == DOCK_SOUND)
- return false;
- else if (ret < 0)
- _E("Failed to get vconf value for cradle status: %d", vconf_get_ext_errno());
-
- _D("Goto LCDOFF direct: lock(%d) hdmi(%d) cradle(%d).", lock, hdmi_state, cradle);
-
- return true;
-}
-
/*
* default transition function
* 1. call check
if (set_custom_lcdon_timeout(0) == true)
display_state_transition_update_display_state_timeout_by_priority();
- if (check_lcdoff_direct() == true) {
+ if (display_state_transition_is_possible_to_go_lcdoff()) {
/* enter next state directly */
states[get_pm_cur_state()].trans(EVENT_TIMEOUT);
} else {
pm_save_logdump();
}
-int check_lcdoff_direct(void)
-{
- int ret, lock, cradle;
- int hdmi_state;
-
- if (get_pm_old_state() != S_NORMAL)
- return false;
-
- if (get_pm_cur_state() != S_LCDDIM)
- return false;
-
- if (!display_conf.dimming)
- return true;
-
- lock = __get_lock_screen_state();
- if (lock != VCONFKEY_IDLE_LOCK)
- return false;
-
- hdmi_state = extcon_get_status(EXTCON_CABLE_HDMI);
- if (hdmi_state)
- return false;
-
- ret = vconf_get_int(VCONFKEY_SYSMAN_CRADLE_STATUS, &cradle);
- if (ret >= 0 && cradle == DOCK_SOUND)
- return false;
- else if (ret < 0)
- _E("Failed to get vconf value for cradle status: %d", vconf_get_ext_errno());
-
- _D("Goto LCDOFF direct: lock(%d) hdmi(%d) cradle(%d).", lock, hdmi_state, cradle);
-
- return true;
-}
-
/*
* default transition function
* 1. call check
if (set_custom_lcdon_timeout(0) == true)
display_state_transition_update_display_state_timeout_by_priority();
- if (check_lcdoff_direct() == true) {
+ if (display_state_transition_is_possible_to_go_lcdoff()) {
/* enter next state directly */
states[get_pm_cur_state()].trans(EVENT_TIMEOUT);
} else {
return -EOPNOTSUPP;
}
+int display_plugin_config_get_dimming(int *dimming)
+{
+ if (!dimming)
+ return -EINVAL;
+
+ if (g_display_plugin.config) {
+ *dimming = g_display_plugin.config->dimming;
+ return 0;
+ }
+
+ return -EOPNOTSUPP;
+}
+
int display_plugin_set_dim_state(bool on)
{
if (g_display_plugin.set_dim_state) {
int display_plugin_config_get_timeout_enable(bool *timeout_enable);
int display_plugin_config_get_lcdoff_timeout(int *lcdoff_timeout);
int display_plugin_config_get_lcd_always_on(int *lcd_always_on);
+int display_plugin_config_get_dimming(int *dimming);
#endif //__DISPLAY_PLUGIN_H__
* @brief This file has functions related to display state transition
*/
+#include "core/udev.h"
#include "device-interface.h"
#include "display-state-transition.h"
#include "display-lock.h"
#include "display-plugin.h"
+#include "extcon/extcon.h"
#include "power/power-suspend.h"
#include "shared/log.h"
}
return 0;
+}
+
+/* FIXME: In this function, extcon checking should be considered after relocating this. */
+bool display_state_transition_is_possible_to_go_lcdoff(void)
+{
+ int ret, lock, cradle;
+ int hdmi_state;
+ int dimming;
+
+ if (get_pm_old_state() != S_NORMAL)
+ return false;
+
+ if (get_pm_cur_state() != S_LCDDIM)
+ return false;
+
+ display_plugin_config_get_dimming(&dimming);
+ if (!dimming)
+ return true;
+
+ lock = __get_lock_screen_state();
+ if (lock != VCONFKEY_IDLE_LOCK)
+ return false;
+
+ hdmi_state = extcon_get_status(EXTCON_CABLE_HDMI);
+ if (hdmi_state)
+ return false;
+
+ ret = vconf_get_int(VCONFKEY_SYSMAN_CRADLE_STATUS, &cradle);
+ if (ret >= 0 && cradle == DOCK_SOUND)
+ return false;
+ else if (ret < 0)
+ _E("Failed to get vconf value for cradle status: %d", vconf_get_ext_errno());
+
+ _D("Goto LCDOFF direct: lock(%d) hdmi(%d) cradle(%d).", lock, hdmi_state, cradle);
+
+ return true;
}
\ No newline at end of file
void display_state_transition_update_display_state_timeout_by_priority(void);
int display_state_transition_check_state_transition_condition(enum state_t cur_state, enum state_t next_state);
int display_state_transition_update_lcdoff_reason(int source);
+bool display_state_transition_is_possible_to_go_lcdoff(void);
#endif /* __DISPLAY_STATE_TRANSITION_H__ */
\ No newline at end of file