4 * Copyright (c) 2023 Samsung Electronics Co., Ltd.
6 * Licensed under the Apache License, Version 2.0 (the License);
7 * you may not use this file except in compliance with the License.
8 * You may obtain a copy of the License at
10 * http://www.apache.org/licenses/LICENSE-2.0
12 * Unless required by applicable law or agreed to in writing, software
13 * distributed under the License is distributed on an "AS IS" BASIS,
14 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
15 * See the License for the specific language governing permissions and
16 * limitations under the License.
20 #include "display-plugin.h"
21 #include "shared/log-macro.h"
23 struct display_plugin g_display_plugin;
25 void* display_plugin_handle(void)
27 return g_display_plugin.handle;
30 int display_plugin_update_pm_setting(int key_idx, int val)
32 if (g_display_plugin.update_pm_setting)
33 return g_display_plugin.update_pm_setting(key_idx, val);
38 bool display_plugin_is_there_update_pm_setting(void)
40 if (g_display_plugin.update_pm_setting)
46 /* FIXME: return 0 can be value of get_lock_screen_state, it is hard to distinguish error or not */
47 int display_plugin_get_lock_screen_state(void)
49 if (g_display_plugin.get_lock_screen_state)
50 return g_display_plugin.get_lock_screen_state();
55 int display_plugin_get_system_wakeup_flag(bool *flag)
57 *flag = g_display_plugin.system_wakeup_flag;
62 int display_plugin_set_system_wakeup_flag(bool flag)
64 g_display_plugin.system_wakeup_flag = flag;
69 int display_plugin_auto_brightness_control(enum brightness_request_e request, int set_brightness)
71 if (g_display_plugin.auto_brightness_control)
72 return g_display_plugin.auto_brightness_control(request, set_brightness);
77 int display_plugin_lcd_on_procedure(int state, enum device_flags flag)
79 if (g_display_plugin.lcd_on_procedure) {
80 g_display_plugin.lcd_on_procedure(state, flag);
87 int display_plugin_lcd_off_procedure(enum device_flags flag)
89 if (g_display_plugin.lcd_off_procedure) {
90 g_display_plugin.lcd_off_procedure(flag);
97 int display_plugin_custom_lcd_on(int timeout)
99 if (g_display_plugin.custom_lcd_on) {
100 g_display_plugin.custom_lcd_on(timeout);
107 int display_plugin_custom_lcd_off(enum device_flags flag)
109 if (g_display_plugin.custom_lcd_off) {
110 g_display_plugin.custom_lcd_off(flag);
117 int dipslay_plugin_display_on_by_reason(const char *reason, int timeout)
119 if (g_display_plugin.display_on_by_reason) {
120 g_display_plugin.display_on_by_reason(reason, timeout);
127 int display_plugin_display_off_by_reason(const char *reason)
129 if (g_display_plugin.display_off_by_reason) {
130 g_display_plugin.display_off_by_reason(reason);
137 int display_plugin_set_power_save_mode_flag(int onoff)
139 if (g_display_plugin.default_saving_mode) {
140 g_display_plugin.default_saving_mode(onoff);
147 /** FIXME: is_lcdon_blocked() should be moved or refactored after plugin relocation
148 * Also, this is temporary wrapper function. It should be removed.
150 int display_plugin_is_lcd_on_blocked(void)
152 if (g_display_plugin.is_lcdon_blocked)
153 return g_display_plugin.is_lcdon_blocked();
158 int display_plugin_backlight_get_lcd_power(void)
160 if (g_display_plugin.backlight && g_display_plugin.backlight->get_lcd_power)
161 return g_display_plugin.backlight->get_lcd_power();
166 int display_plugin_backlight_set_brightness(int brightness)
168 if (g_display_plugin.backlight && g_display_plugin.backlight->set_brightness)
169 return g_display_plugin.backlight->set_brightness(brightness);
174 int display_plugin_backlight_get_brightness(int *brightness)
176 if (g_display_plugin.backlight && g_display_plugin.backlight->get_brightness)
177 return g_display_plugin.backlight->get_brightness(brightness);
182 int display_plugin_backlight_transit_state(int state)
184 if (g_display_plugin.backlight && g_display_plugin.backlight->transit_state)
185 return g_display_plugin.backlight->transit_state(state);
190 int display_plugin_backlight_transit_brightness(int start, int end, int step)
192 if (g_display_plugin.backlight && g_display_plugin.backlight->transit_brt) {
193 g_display_plugin.backlight->transit_brt(start, end, step);
200 /* FIXME: Below functions are temorary to separtate display state transition functions */
201 int display_plugin_state_do_default_trans(enum state_t state, int evt)
203 if (g_display_plugin.display_states[state] && g_display_plugin.display_states[state]->trans)
204 return g_display_plugin.display_states[state]->trans(evt);
209 bool display_plugin_state_is_there_default_trans(enum state_t state)
211 if (g_display_plugin.display_states[state] && g_display_plugin.display_states[state]->trans)
217 int display_plugin_state_get_name(enum state_t state, const char **state_name)
222 if (g_display_plugin.display_states[state] && g_display_plugin.display_states[state]->name) {
223 *state_name = g_display_plugin.display_states[state]->name;
231 int display_plugin_state_set_timeout(enum state_t state, int state_timeout)
233 if (g_display_plugin.display_states[state]) {
234 g_display_plugin.display_states[state]->timeout = state_timeout;
241 int display_plugin_state_get_timeout(enum state_t state, int* state_timeout)
246 if (g_display_plugin.display_states[state]) {
247 *state_timeout = g_display_plugin.display_states[state]->timeout;
254 int display_plugin_state_get_state_by_state_index(int state_index, enum state_t *state)
259 if (g_display_plugin.display_states[state_index]) {
260 *state = g_display_plugin.display_states[state_index]->state;
267 bool display_plugin_state_is_there_proc_change_state(void)
269 return (g_display_plugin.proc_change_state != NULL);
272 int display_plugin_state_proc_change_state(unsigned int cond, pid_t pid)
274 if (!g_display_plugin.proc_change_state)
277 return g_display_plugin.proc_change_state(cond, pid);
280 int display_plugin_config_get_timeout_enable(bool *timeout_enable)
285 if (g_display_plugin.config) {
286 *timeout_enable = g_display_plugin.config->timeout_enable;
293 int display_plugin_config_get_lcdoff_timeout(int *lcdoff_timeout)
298 if (g_display_plugin.config) {
299 *lcdoff_timeout = g_display_plugin.config->lcdoff_timeout;
306 int display_plugin_config_get_lcd_always_on(int *lcd_always_on)
311 if (g_display_plugin.config) {
312 *lcd_always_on = g_display_plugin.config->lcd_always_on;
319 int display_plugin_config_get_dimming(int *dimming)
324 if (g_display_plugin.config) {
325 *dimming = g_display_plugin.config->dimming;
332 int display_plugin_config_get_pm_default_brightness(int *pm_default_brightness)
334 if (!pm_default_brightness)
337 if (!g_display_plugin.config)
340 *pm_default_brightness = g_display_plugin.config->pm_default_brightness;
345 int display_plugin_set_dim_state(bool on)
347 if (g_display_plugin.set_dim_state) {
348 g_display_plugin.set_dim_state(on);
355 int display_plugin_get_device_flags(unsigned long *device_flags)
360 if (!g_display_plugin.get_device_flags)
363 return g_display_plugin.get_device_flags(device_flags);