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.
19 #ifndef __DISPLAY_PLUGIN_H__
20 #define __DISPLAY_PLUGIN_H__
23 #include <sys/types.h>
26 #include "display-config.h"
27 #include "display-backlight.h"
28 #include "shared/devices.h"
30 /* FIXME: Currently because of display_plugin.auto_brightness_control(),
31 * it is here. Please relocate it to proper place later. */
32 enum brightness_request_e {
34 /* entering request */
38 BR_LOWDIM_ON, /* low battery dim */
43 BR_RELEASE_BRIGHTNESS,
44 BR_LOWDIM_OFF, /* low battery dim off */
52 /* request for brightness that managed internally.
53 * BR_HOLD_BRIGHTNESS and BR_SET_BRIGHTNESS does not use this implicit brightness
54 * for request, but explicitly request for a brightness value */
55 #define BR_IMPLICIT (-1)
57 struct display_plugin {
59 int (*pm_lock_internal) (pid_t pid, int s_bits, int flag, int timeout);
60 int (*pm_unlock_internal) (pid_t pid, int s_bits, int flag);
61 int (*pm_change_internal) (pid_t pid, int s_bits);
62 int (*update_pm_setting) (int key_idx, int val);
63 int (*get_lock_screen_state) (void);
64 bool system_wakeup_flag;
65 const char* (*device_flags_to_string) (enum device_flags flags);
66 int (*auto_brightness_control) (enum brightness_request_e request, int set_brightness);
67 /* FIXME: function names will be redefined */
68 void (*set_dim_state) (bool on);
69 int (*get_device_flags) (unsigned long *device_flags);
71 struct display_config *config;
72 struct display_backlight_ops *backlight;
73 struct state* display_states[S_END];
75 extern struct display_plugin g_display_plugin;
77 void* display_plugin_handle(void);
78 int display_plugin_pm_lock_internal(pid_t pid, int s_bits, int flags, int timeout);
79 int display_plugin_pm_unlock_internal(pid_t pid, int s_bits, int flags);
80 int display_plugin_pm_change_internal(pid_t pid, int s_bits);
81 int display_plugin_update_pm_setting(int key_idx, int val);
82 int display_plugin_get_lock_screen_state(void);
83 int display_plugin_get_system_wakeup_flag(bool *flag);
84 int display_plugin_set_system_wakeup_flag(bool flag);
85 const char* display_plugin_device_flags_to_string(enum device_flags flags);
86 int display_plugin_auto_brightness_control(enum brightness_request_e request, int set_brightness);
87 int display_plugin_set_dim_state(bool on);
88 int display_plugin_get_device_flags(unsigned long *device_flags);
90 int display_plugin_backlight_get_lcd_power(void);
91 int display_plugin_backlight_set_brightness(int brightness);
92 int display_plugin_backlight_get_brightness(int *brightness);
93 int display_plugin_backlight_transit_state(int state);
94 int display_plugin_backlight_transit_brightness(int start, int end, int step);
96 /* FIXME: function names will be redefined */
97 int display_plugin_state_do_default_trans(enum state_t state, int evt);
98 bool display_plugin_state_is_there_default_trans(enum state_t state);
99 int display_plugin_state_do_default_action(enum state_t state, int timeout);
100 int display_plugin_state_get_name(enum state_t state, const char **state_name);
101 int display_plugin_state_set_timeout(enum state_t state, int state_timeout);
102 int display_plugin_state_get_timeout(enum state_t state, int *state_timeout);
103 int display_plugin_state_get_state_by_state_index(int state_index, enum state_t *state);
105 /* FIXME: display config getter/setter is also temporary in this file */
106 int display_plugin_config_get_timeout_enable(bool *timeout_enable);
107 int display_plugin_config_get_lcdoff_timeout(int *lcdoff_timeout);
108 int display_plugin_config_get_lcd_always_on(int *lcd_always_on);
109 int display_plugin_config_get_dimming(int *dimming);
111 #endif //__DISPLAY_PLUGIN_H__