4 * Copyright (c) 2000 - 2011 Samsung Electronics Co., Ltd. All rights reserved.
6 * Contact: DongGi Jang <dg0402.jang@samsung.com>
8 * Licensed under the Apache License, Version 2.0 (the "License");
9 * you may not use this file except in compliance with the License.
10 * You may obtain a copy of the License at
12 * http://www.apache.org/licenses/LICENSE-2.0
14 * Unless required by applicable law or agreed to in writing, software
15 * distributed under the License is distributed on an "AS IS" BASIS,
16 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
17 * See the License for the specific language governing permissions and
18 * limitations under the License.
26 #include "devman_internal.h"
27 #include "device_engine.h"
30 #define DISP_INDEX_BIT 4
31 #define COMBINE_DISP_CMD(cmd, prop, index) (cmd = (prop | (index << DISP_INDEX_BIT)))
33 #define SET_FLAG(var, bit) (var |= (1<<bit))
34 #define UNSET_FLAG(var, bit) (var &= (~(1<<bit)))
39 static unsigned int disp_flag = 0x0;
41 API int device_get_battery_pct(void)
44 if (device_get_property(DEVTYPE_POWERSUPPLY, POWER_SUPPLY_PROP_CAPACITY, &val) < 0)
46 if (val < 0 || val > 100) {
47 ERR("capacity value is wrong");
54 API int device_is_battery_full(void)
57 if (device_get_property(DEVTYPE_POWERSUPPLY, POWER_SUPPLY_PROP_CHARGE_FULL, &charge_full) < 0)
60 if (charge_full != 0 && charge_full != 1) {
61 ERR("charge_full value is wrong");
68 API int device_get_battery_health(void)
71 if (device_get_property(DEVTYPE_POWERSUPPLY, POWER_SUPPLY_PROP_BATTERY_HEALTH, &health) < 0)
73 if (health < BAT_UNKNOWN || health > BAT_COLD) {
74 ERR("battery health value is wrong");
81 API int device_get_battery_pct_raw(void)
86 ret = device_get_property(DEVTYPE_POWERSUPPLY, POWER_SUPPLY_PROP_CAPACITY_RAW, &val);
95 API int device_get_display_brt(display_num_t lcdnum)
100 COMBINE_DISP_CMD(cmd, DISPLAY_PROP_BRIGHTNESS, lcdnum);
101 if (device_get_property(DEVTYPE_DISPLAY0, cmd, &val) < 0)
107 API int device_set_display_brt(display_num_t lcdnum, int val)
110 int auto_brightness_state = -1;
114 if (vconf_get_int(VCONFKEY_SYSMAN_BATTERY_STATUS_LOW, &bat_state) != 0 || bat_state >= VCONFKEY_SYSMAN_BAT_WARNING_LOW ) {
115 COMBINE_DISP_CMD(cmd, DISPLAY_PROP_BRIGHTNESS, lcdnum);
116 if (device_set_property(DEVTYPE_DISPLAY0, cmd, val) < 0)
119 ERR("can not set brightness for low battery");
123 if (vconf_get_int(VCONFKEY_SETAPPL_BRIGHTNESS_AUTOMATIC_INT, &auto_brightness_state) == 0) {
124 if (auto_brightness_state == SETTING_BRIGHTNESS_AUTOMATIC_ON) {
125 DBG("Auto brightness is paused");
126 vconf_set_int(VCONFKEY_SETAPPL_BRIGHTNESS_AUTOMATIC_INT, SETTING_BRIGHTNESS_AUTOMATIC_PAUSE);
131 ret = display_register_postjob();
133 SET_FLAG(disp_flag, BRT_BIT);
137 API int device_release_brt_ctrl(display_num_t lcdnum)
141 int auto_brightness_state = -1;
144 if (vconf_get_int(VCONFKEY_SYSMAN_BATTERY_STATUS_LOW, &bat_state) != 0 || bat_state >= VCONFKEY_SYSMAN_BAT_WARNING_LOW ) {
145 if(vconf_get_int(VCONFKEY_SETAPPL_LCD_BRIGHTNESS, &setting_val) != 0) {
146 COMBINE_DISP_CMD(cmd, DISPLAY_PROP_MAX_BRIGHTNESS, lcdnum);
147 if (device_get_property(DEVTYPE_DISPLAY0, cmd, &setting_val) < 0)
149 setting_val = setting_val * 0.7;
152 COMBINE_DISP_CMD(cmd, DISPLAY_PROP_BRIGHTNESS, lcdnum);
153 if (device_set_property(DEVTYPE_DISPLAY0, cmd, setting_val) < 0)
157 if (vconf_get_int(VCONFKEY_SETAPPL_BRIGHTNESS_AUTOMATIC_INT, &auto_brightness_state) == 0) {
158 if (auto_brightness_state == SETTING_BRIGHTNESS_AUTOMATIC_PAUSE) {
159 DBG("Auto brightness is enable");
160 vconf_set_int(VCONFKEY_SETAPPL_BRIGHTNESS_AUTOMATIC_INT, SETTING_BRIGHTNESS_AUTOMATIC_ON);
164 UNSET_FLAG(disp_flag, BRT_BIT);
166 display_cancel_postjob();
170 API int device_get_min_brt(display_num_t lcdnum)
175 COMBINE_DISP_CMD(cmd, DISPLAY_PROP_MIN_BRIGHTNESS, lcdnum);
176 if (device_get_property(DEVTYPE_DISPLAY0, cmd, &val) < 0)
182 API int device_get_max_brt(display_num_t lcdnum)
187 COMBINE_DISP_CMD(cmd, DISPLAY_PROP_MAX_BRIGHTNESS, lcdnum);
188 if (device_get_property(DEVTYPE_DISPLAY0, cmd, &val) < 0)
194 API int device_get_display_gamma(display_num_t lcdnum)
199 COMBINE_DISP_CMD(cmd, DISPLAY_PROP_GAMMA, lcdnum);
200 if (device_get_property(DEVTYPE_DISPLAY0, cmd, &val) < 0)
206 API int device_set_display_gamma(display_num_t lcdnum, display_gamma_t val)
211 COMBINE_DISP_CMD(cmd, DISPLAY_PROP_GAMMA, lcdnum);
212 if (device_set_property(DEVTYPE_DISPLAY0, cmd, val) < 0)
216 ret = display_register_postjob();
218 SET_FLAG(disp_flag, GAMMA_BIT);
223 API int device_release_gamma_ctrl(display_num_t lcdnum, display_gamma_t org_val)
227 COMBINE_DISP_CMD(cmd, DISPLAY_PROP_GAMMA, lcdnum);
228 if (device_set_property(DEVTYPE_DISPLAY0, cmd, org_val) < 0)
231 UNSET_FLAG(disp_flag, GAMMA_BIT);
233 display_cancel_postjob();
238 API int device_get_display_count(void)
242 if (device_get_property
243 (DEVTYPE_DISPLAY0, DISPLAY_PROP_DISPLAY_COUNT, &val) < 0)
249 API int device_get_image_enhance_mode(void)
253 if (device_get_property(DEVTYPE_DISPLAY0, DISPLAY_PROP_IMAGE_ENHANCE_MODE, &val) < 0)
259 API int device_set_image_enhance_mode(int val)
261 if (device_set_property(DEVTYPE_DISPLAY0, DISPLAY_PROP_IMAGE_ENHANCE_MODE, val) < 0)
267 API int device_get_image_enhance_scenario(void)
271 if (device_get_property(DEVTYPE_DISPLAY0, DISPLAY_PROP_IMAGE_ENHANCE_SCENARIO, &val) < 0)
277 API int device_set_image_enhance_scenario(int val)
279 if (device_set_property(DEVTYPE_DISPLAY0, DISPLAY_PROP_IMAGE_ENHANCE_SCENARIO, val) < 0)
285 API int device_get_image_enhance_tone(void)
289 if (device_get_property(DEVTYPE_DISPLAY0, DISPLAY_PROP_IMAGE_ENHANCE_TONE, &val) < 0)
295 API int device_set_image_enhance_tone(int val)
297 if (device_set_property(DEVTYPE_DISPLAY0, DISPLAY_PROP_IMAGE_ENHANCE_TONE, val) < 0)
303 API int device_get_image_enhance_outdoor(void)
307 if (device_get_property(DEVTYPE_DISPLAY0, DISPLAY_PROP_IMAGE_ENHANCE_OUTDOOR, &val) < 0)
313 API int device_set_image_enhance_outdoor(int val)
315 if (device_set_property(DEVTYPE_DISPLAY0, DISPLAY_PROP_IMAGE_ENHANCE_OUTDOOR, val) < 0)
321 API int device_get_image_enhance_info(void)
325 if (device_get_property(DEVTYPE_DISPLAY0, DISPLAY_PROP_IMAGE_ENHANCE_INFO, &val) < 0)
331 API int device_power_suspend(void)
333 if (device_set_property(DEVTYPE_POWER, POWER_PROP_STATE, 0) < 0)
339 API int device_get_led_brt(void)
344 ret = device_get_property(DEVTYPE_LED, LED_PROP_BRIGHTNESS, &val);
351 API int device_set_led_brt(int val)
355 ret = device_set_property(DEVTYPE_LED, LED_PROP_BRIGHTNESS, val);
360 UNSET_FLAG(disp_flag, LED_BIT);
362 display_cancel_postjob();
365 ret = display_register_postjob();
367 SET_FLAG(disp_flag, LED_BIT);
372 API int device_get_max_led(void)
377 ret = device_get_property(DEVTYPE_LED, LED_PROP_MAX_BRIGHTNESS, &val);
384 API int device_get_acl_control_status(display_num_t num)
389 COMBINE_DISP_CMD(cmd, DISPLAY_PROP_ACL_CONTROL, num);
390 if (device_get_property(DEVTYPE_DISPLAY0, cmd, &val) < 0)
396 API int device_set_acl_control_status(display_num_t num, int val)
400 COMBINE_DISP_CMD(cmd, DISPLAY_PROP_ACL_CONTROL, num);
401 if (device_set_property(DEVTYPE_DISPLAY0, cmd, val) < 0)