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.
25 #include "devman_internal.h"
26 #include "device_engine.h"
29 #define DISP_INDEX_BIT 4
30 #define COMBINE_DISP_CMD(cmd, prop, index) (cmd = (prop | (index << DISP_INDEX_BIT)))
32 #define SET_FLAG(var, bit) (var |= (1<<bit))
33 #define UNSET_FLAG(var, bit) (var &= (~(1<<bit)))
38 static unsigned int disp_flag = 0x0;
40 API int device_get_battery_pct(void)
43 if (device_get_property
44 (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)
56 int capacity = 0, charge_state = 0;
57 if(device_get_property(DEVTYPE_POWERSUPPLY, POWER_SUPPLY_PROP_CAPACITY, &capacity) < 0)
60 /* If the capacity is 100 and charge state is 1, battery is not full */
61 device_get_property(DEVTYPE_POWERSUPPLY, POWER_SUPPLY_PROP_CHARGE_NOW, &charge_state);
62 if(capacity < 0 || capacity > 100) {
63 ERR("capacity value is wrong");
65 } else if(capacity == 100 && charge_state < 1) {
72 API int device_get_battery_health(void)
75 if(device_get_property(DEVTYPE_POWERSUPPLY, POWER_SUPPLY_PROP_BATTERY_HEALTH, &health) < 0)
77 if(health < BAT_UNKNOWN || health > BAT_COLD) {
78 ERR("battery health value is wrong");
85 API int device_get_display_brt(display_num_t lcdnum)
90 COMBINE_DISP_CMD(cmd, DISPLAY_PROP_BRIGHTNESS, lcdnum);
91 if (device_get_property(DEVTYPE_DISPLAY0, cmd, &val) < 0)
97 API int device_set_display_brt(display_num_t lcdnum, int val)
103 if(vconf_get_int(VCONFKEY_SYSMAN_BATTERY_STATUS_LOW, &bat_state) != 0 || bat_state >= VCONFKEY_SYSMAN_BAT_WARNING_LOW ) {
104 COMBINE_DISP_CMD(cmd, DISPLAY_PROP_BRIGHTNESS, lcdnum);
105 if (device_set_property(DEVTYPE_DISPLAY0, cmd, val) < 0)
108 ERR("can not set brightness for low battery");
113 ret = display_register_postjob();
115 SET_FLAG(disp_flag, BRT_BIT);
119 API int device_release_brt_ctrl(display_num_t lcdnum)
125 if(vconf_get_int(VCONFKEY_SYSMAN_BATTERY_STATUS_LOW, &bat_state) != 0 || bat_state >= VCONFKEY_SYSMAN_BAT_WARNING_LOW ) {
126 if(vconf_get_int(VCONFKEY_SETAPPL_LCD_BRIGHTNESS, &setting_val) != 0){
127 COMBINE_DISP_CMD(cmd, DISPLAY_PROP_MAX_BRIGHTNESS, lcdnum);
128 if (device_get_property(DEVTYPE_DISPLAY0, cmd, &setting_val) < 0)
130 setting_val=setting_val*0.7;
133 COMBINE_DISP_CMD(cmd, DISPLAY_PROP_BRIGHTNESS, lcdnum);
134 if (device_set_property(DEVTYPE_DISPLAY0, cmd, setting_val) < 0)
137 ERR("can not set brightness for low battery");
141 UNSET_FLAG(disp_flag, BRT_BIT);
143 display_cancel_postjob();
147 API int device_get_max_brt(display_num_t lcdnum)
152 COMBINE_DISP_CMD(cmd, DISPLAY_PROP_MAX_BRIGHTNESS, lcdnum);
153 if (device_get_property(DEVTYPE_DISPLAY0, cmd, &val) < 0)
159 API int device_get_display_gamma(display_num_t lcdnum)
164 COMBINE_DISP_CMD(cmd, DISPLAY_PROP_GAMMA, lcdnum);
165 if (device_get_property(DEVTYPE_DISPLAY0, cmd, &val) < 0)
171 API int device_set_display_gamma(display_num_t lcdnum, display_gamma_t val)
176 COMBINE_DISP_CMD(cmd, DISPLAY_PROP_GAMMA, lcdnum);
177 if (device_set_property(DEVTYPE_DISPLAY0, cmd, val) < 0)
181 ret = display_register_postjob();
183 SET_FLAG(disp_flag, GAMMA_BIT);
188 API int device_release_gamma_ctrl(display_num_t lcdnum, display_gamma_t org_val)
192 COMBINE_DISP_CMD(cmd, DISPLAY_PROP_GAMMA, lcdnum);
193 if (device_set_property(DEVTYPE_DISPLAY0, cmd, org_val) < 0)
196 UNSET_FLAG(disp_flag, GAMMA_BIT);
198 display_cancel_postjob();
203 API int device_get_display_count(void)
207 if (device_get_property
208 (DEVTYPE_DISPLAY0, DISPLAY_PROP_DISPLAY_COUNT, &val) < 0)
214 API int device_get_image_enhance_mode(void)
218 if (device_get_property(DEVTYPE_DISPLAY0, DISPLAY_PROP_IMAGE_ENHANCE_MODE, &val) < 0)
224 API int device_set_image_enhance_mode(int val)
226 if (device_set_property(DEVTYPE_DISPLAY0, DISPLAY_PROP_IMAGE_ENHANCE_MODE, val) < 0)
232 API int device_get_image_enhance_scenario(void)
236 if (device_get_property(DEVTYPE_DISPLAY0, DISPLAY_PROP_IMAGE_ENHANCE_SCENARIO, &val) < 0)
242 API int device_set_image_enhance_scenario(int val)
244 if (device_set_property(DEVTYPE_DISPLAY0, DISPLAY_PROP_IMAGE_ENHANCE_SCENARIO, val) < 0)
250 API int device_get_image_enhance_tone(void)
254 if (device_get_property(DEVTYPE_DISPLAY0, DISPLAY_PROP_IMAGE_ENHANCE_TONE, &val) < 0)
260 API int device_set_image_enhance_tone(int val)
262 if (device_set_property(DEVTYPE_DISPLAY0, DISPLAY_PROP_IMAGE_ENHANCE_TONE, val) < 0)
268 API int device_get_image_enhance_outdoor(void)
272 if (device_get_property(DEVTYPE_DISPLAY0, DISPLAY_PROP_IMAGE_ENHANCE_OUTDOOR, &val) < 0)
278 API int device_set_image_enhance_outdoor(int val)
280 if (device_set_property(DEVTYPE_DISPLAY0, DISPLAY_PROP_IMAGE_ENHANCE_OUTDOOR, val) < 0)
286 API int device_power_suspend(void)
288 if (device_set_property(DEVTYPE_POWER, POWER_PROP_STATE, 0) < 0)
294 API int device_get_led_brt(void)
298 if (device_get_property(DEVTYPE_LED, LED_PROP_BRIGHTNESS, &val) < 0)
304 API int device_set_led_brt(int val)
307 if (device_set_property(DEVTYPE_LED, LED_PROP_BRIGHTNESS, val) < 0)
311 UNSET_FLAG(disp_flag, LED_BIT);
313 display_cancel_postjob();
316 ret = display_register_postjob();
318 SET_FLAG(disp_flag, LED_BIT);
323 API int device_get_max_led(void)
327 if (device_get_property(DEVTYPE_LED, LED_PROP_MAX_BRIGHTNESS, &val) < 0)
334 int device_get_acl_control_status(display_num_t num)
339 COMBINE_DISP_CMD(cmd, DISPLAY_PROP_ACL_CONTROL, num);
340 if (device_get_property(DEVTYPE_DISPLAY0, cmd, &val) < 0)
346 int device_set_acl_control_status(display_num_t num, int val)
350 COMBINE_DISP_CMD(cmd, DISPLAY_PROP_ACL_CONTROL, num);
351 if (device_set_property(DEVTYPE_DISPLAY0, cmd, val) < 0)