4 * Copyright (c) 2012 - 2013 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.
24 #include <device-node.h>
25 #include <sys/types.h>
26 #include <sys/socket.h>
29 #include <linux/limits.h>
33 #include "dd-display.h"
35 #define DISPLAY_MAX_BRIGHTNESS 100
36 #define DISPLAY_MIN_BRIGHTNESS 1
37 #define DISPLAY_DIM_BRIGHTNESS 0
39 #define HOLDKEY_BLOCK_BIT 0x1
40 #define STANDBY_MODE_BIT 0x2
42 #define METHOD_SET_FRAME_RATE "setframerate"
43 #define METHOD_LOCK_STATE "lockstate"
44 #define METHOD_UNLOCK_STATE "unlockstate"
45 #define METHOD_CHANGE_STATE "changestate"
46 #define METHOD_GET_DISPLAY_COUNT "GetDisplayCount"
47 #define METHOD_GET_BRIGHTNESS "GetBrightness"
48 #define METHOD_SET_BRIGHTNESS "SetBrightness"
49 #define METHOD_HOLD_BRIGHTNESS "HoldBrightness"
50 #define METHOD_RELEASE_BRIGHTNESS "ReleaseBrightness"
51 #define METHOD_GET_ACL_STATUS "GetAclStatus"
52 #define METHOD_SET_ACL_STATUS "SetAclStatus"
54 #define STR_LCD_OFF "lcdoff"
55 #define STR_LCD_DIM "lcddim"
56 #define STR_LCD_ON "lcdon"
57 #define STR_SUSPEND "suspend"
59 #define STR_STAYCURSTATE "staycurstate"
60 #define STR_GOTOSTATENOW "gotostatenow"
62 #define STR_HOLDKEYBLOCK "holdkeyblock"
63 #define STR_STANDBYMODE "standbymode"
64 #define STR_NULL "NULL"
66 #define STR_SLEEP_MARGIN "sleepmargin"
67 #define STR_RESET_TIMER "resettimer"
68 #define STR_KEEP_TIMER "keeptimer"
70 API int display_get_count(void)
76 msg = deviced_dbus_method_sync(BUS_NAME, DEVICED_PATH_DISPLAY, DEVICED_INTERFACE_DISPLAY,
77 METHOD_GET_DISPLAY_COUNT, NULL, NULL);
81 dbus_error_init(&err);
83 ret = dbus_message_get_args(msg, &err, DBUS_TYPE_INT32, &ret_val, DBUS_TYPE_INVALID);
85 _E("no message : [%s:%s]", err.name, err.message);
89 dbus_message_unref(msg);
90 dbus_error_free(&err);
94 API int display_get_max_brightness(void)
96 return DISPLAY_MAX_BRIGHTNESS;
99 API int display_get_min_brightness(void)
101 return DISPLAY_MIN_BRIGHTNESS;
104 API int display_get_brightness(void)
110 msg = deviced_dbus_method_sync(BUS_NAME, DEVICED_PATH_DISPLAY, DEVICED_INTERFACE_DISPLAY,
111 METHOD_GET_BRIGHTNESS, NULL, NULL);
115 dbus_error_init(&err);
117 ret = dbus_message_get_args(msg, &err, DBUS_TYPE_INT32, &ret_val, DBUS_TYPE_INVALID);
119 _E("no message : [%s:%s]", err.name, err.message);
123 dbus_message_unref(msg);
124 dbus_error_free(&err);
128 API int display_set_brightness_with_setting(int val)
136 snprintf(str_val, sizeof(str_val), "%d", val);
139 msg = deviced_dbus_method_sync(BUS_NAME, DEVICED_PATH_DISPLAY, DEVICED_INTERFACE_DISPLAY,
140 METHOD_SET_BRIGHTNESS, "i", arr);
144 dbus_error_init(&err);
146 ret = dbus_message_get_args(msg, &err, DBUS_TYPE_INT32, &ret_val, DBUS_TYPE_INVALID);
148 _E("no message : [%s:%s]", err.name, err.message);
152 dbus_message_unref(msg);
153 dbus_error_free(&err);
157 API int display_set_brightness(int val)
165 snprintf(str_val, sizeof(str_val), "%d", val);
168 msg = deviced_dbus_method_sync(BUS_NAME, DEVICED_PATH_DISPLAY, DEVICED_INTERFACE_DISPLAY,
169 METHOD_HOLD_BRIGHTNESS, "i", arr);
173 dbus_error_init(&err);
175 ret = dbus_message_get_args(msg, &err, DBUS_TYPE_INT32, &ret_val, DBUS_TYPE_INVALID);
177 _E("no message : [%s:%s]", err.name, err.message);
181 dbus_message_unref(msg);
182 dbus_error_free(&err);
186 API int display_release_brightness(void)
192 msg = deviced_dbus_method_sync(BUS_NAME, DEVICED_PATH_DISPLAY, DEVICED_INTERFACE_DISPLAY,
193 METHOD_RELEASE_BRIGHTNESS, NULL, NULL);
197 dbus_error_init(&err);
199 ret = dbus_message_get_args(msg, &err, DBUS_TYPE_INT32, &ret_val, DBUS_TYPE_INVALID);
201 _E("no message : [%s:%s]", err.name, err.message);
205 dbus_message_unref(msg);
206 dbus_error_free(&err);
210 API int display_get_acl_status(void)
216 msg = deviced_dbus_method_sync(BUS_NAME, DEVICED_PATH_DISPLAY, DEVICED_INTERFACE_DISPLAY,
217 METHOD_GET_ACL_STATUS, NULL, NULL);
221 dbus_error_init(&err);
223 ret = dbus_message_get_args(msg, &err, DBUS_TYPE_INT32, &ret_val, DBUS_TYPE_INVALID);
225 _E("no message : [%s:%s]", err.name, err.message);
229 dbus_message_unref(msg);
230 dbus_error_free(&err);
234 API int display_set_acl_status(int val)
242 snprintf(str_val, sizeof(str_val), "%d", val);
245 msg = deviced_dbus_method_sync(BUS_NAME, DEVICED_PATH_DISPLAY, DEVICED_INTERFACE_DISPLAY,
246 METHOD_SET_ACL_STATUS, "i", arr);
250 dbus_error_init(&err);
252 ret = dbus_message_get_args(msg, &err, DBUS_TYPE_INT32, &ret_val, DBUS_TYPE_INVALID);
254 _E("no message : [%s:%s]", err.name, err.message);
258 dbus_message_unref(msg);
259 dbus_error_free(&err);
263 API int display_set_frame_rate(int val)
271 snprintf(str_val, sizeof(str_val), "%d", val);
274 msg = deviced_dbus_method_sync(BUS_NAME, DEVICED_PATH_DISPLAY, DEVICED_INTERFACE_DISPLAY,
275 METHOD_SET_FRAME_RATE, "i", arr);
279 dbus_error_init(&err);
281 ret = dbus_message_get_args(msg, &err, DBUS_TYPE_INT32, &ret_val, DBUS_TYPE_INVALID);
283 _E("no message : [%s:%s]", err.name, err.message);
287 dbus_message_unref(msg);
288 dbus_error_free(&err);
292 static inline char *get_lcd_str(unsigned int val)
308 API int display_change_state(unsigned int s_bits)
315 p = get_lcd_str(s_bits);
320 msg = deviced_dbus_method_sync(BUS_NAME, DEVICED_PATH_DISPLAY, DEVICED_INTERFACE_DISPLAY,
321 METHOD_CHANGE_STATE, "s", pa);
325 dbus_error_init(&err);
327 ret = dbus_message_get_args(msg, &err, DBUS_TYPE_INT32, &val, DBUS_TYPE_INVALID);
329 _E("no message : [%s:%s]", err.name, err.message);
333 dbus_message_unref(msg);
334 dbus_error_free(&err);
336 _D("%s-%s : %d", DEVICED_INTERFACE_DISPLAY, METHOD_CHANGE_STATE, val);
340 API int display_lock_state(unsigned int s_bits, unsigned int flag,
341 unsigned int timeout)
346 char str_timeout[32];
349 p = get_lcd_str(s_bits);
354 if (flag & GOTO_STATE_NOW)
355 /* if the flag is true, go to the locking state directly */
356 p = STR_GOTOSTATENOW;
358 p = STR_STAYCURSTATE;
361 if (flag & HOLD_KEY_BLOCK)
362 p = STR_HOLDKEYBLOCK;
363 else if (flag & STANDBY_MODE)
369 snprintf(str_timeout, sizeof(str_timeout), "%d", timeout);
372 msg = deviced_dbus_method_sync(BUS_NAME, DEVICED_PATH_DISPLAY, DEVICED_INTERFACE_DISPLAY,
373 METHOD_LOCK_STATE, "sssi", pa);
377 dbus_error_init(&err);
379 ret = dbus_message_get_args(msg, &err, DBUS_TYPE_INT32, &val, DBUS_TYPE_INVALID);
381 _E("no message : [%s:%s]", err.name, err.message);
384 dbus_message_unref(msg);
385 dbus_error_free(&err);
387 _D("%s-%s : %d", DEVICED_INTERFACE_DISPLAY, METHOD_LOCK_STATE, val);
391 API int display_unlock_state(unsigned int s_bits, unsigned int flag)
398 p = get_lcd_str(s_bits);
404 case PM_SLEEP_MARGIN:
405 p = STR_SLEEP_MARGIN;
418 msg = deviced_dbus_method_sync(BUS_NAME, DEVICED_PATH_DISPLAY, DEVICED_INTERFACE_DISPLAY,
419 METHOD_UNLOCK_STATE, "ss", pa);
423 dbus_error_init(&err);
425 ret = dbus_message_get_args(msg, &err, DBUS_TYPE_INT32, &val, DBUS_TYPE_INVALID);
427 _E("no message : [%s:%s]", err.name, err.message);
431 dbus_message_unref(msg);
432 dbus_error_free(&err);
434 _D("%s-%s : %d", DEVICED_INTERFACE_DISPLAY, METHOD_UNLOCK_STATE, val);