display: state-transition: Relocate check_lcdoff_direct() 15/293915/4
authorYunhee Seo <yuni.seo@samsung.com>
Thu, 8 Jun 2023 01:49:19 +0000 (10:49 +0900)
committerYunhee Seo <yuni.seo@samsung.com>
Mon, 12 Jun 2023 05:20:03 +0000 (14:20 +0900)
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>
plugins/iot-headed/display/core.c
plugins/mobile/display/core.c
plugins/tv/display/core.c
plugins/wearable/display/core.c
src/display/display-plugin.c
src/display/display-plugin.h
src/display/display-state-transition.c
src/display/display-state-transition.h

index b1c68b1..6eb4dd4 100644 (file)
@@ -724,39 +724,6 @@ static void sig_hup(int signo)
        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
@@ -794,7 +761,7 @@ static int default_trans(int evt)
                        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 {
index 464d3d4..ec49a57 100644 (file)
@@ -734,39 +734,6 @@ static void sig_hup(int signo)
        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
@@ -804,7 +771,7 @@ static int default_trans(int evt)
                        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 {
index b986639..168041e 100644 (file)
@@ -724,39 +724,6 @@ static void sig_hup(int signo)
        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
@@ -794,7 +761,7 @@ static int default_trans(int evt)
                        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 {
index 9e61e52..de873cb 100644 (file)
@@ -1059,39 +1059,6 @@ static void sig_hup(int signo)
        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
@@ -1137,7 +1104,7 @@ static int default_trans(int evt)
                        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 {
index 2e7ffac..176ab5d 100644 (file)
@@ -255,6 +255,19 @@ int display_plugin_config_get_lcd_always_on(int *lcd_always_on)
        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) {
index 09d8aa3..820cf0f 100644 (file)
@@ -106,5 +106,6 @@ int display_plugin_state_get_state_by_state_index(int state_index, enum state_t
 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__
index bc06af4..4836cac 100644 (file)
  * @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"
 
@@ -304,4 +306,40 @@ int display_state_transition_update_lcdoff_reason(int source)
        }
 
        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
index 7193a7f..e114326 100644 (file)
@@ -39,5 +39,6 @@ int display_state_transition_get_lock_screen_timeout(int *timeout);
 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