2 * Copyright (c) 2011 Samsung Electronics Co., Ltd All Rights Reserved
4 * Licensed under the Apache License, Version 2.0 (the "License");
5 * you may not use this file except in compliance with the License.
6 * You may obtain a copy of the License at
8 * http://www.apache.org/licenses/LICENSE-2.0
10 * Unless required by applicable law or agreed to in writing, software
11 * distributed under the License is distributed on an "AS IS" BASIS,
12 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 * See the License for the specific language governing permissions and
14 * limitations under the License.
21 #include <dd-display.h>
22 #include <dd-battery.h>
28 #define CHECK_ERR(val) \
31 if (errno == ENODEV) \
32 return DEVICE_ERROR_NOT_SUPPORTED; \
33 return DEVICE_ERROR_OPERATION_FAILED; \
37 int device_get_display_numbers(int* device_number)
39 if(device_number == NULL)
40 return DEVICE_ERROR_INVALID_PARAMETER;
42 *device_number = display_get_count();
43 CHECK_ERR(*device_number);
45 return DEVICE_ERROR_NONE;
48 int device_get_brightness(int disp_idx, int* value)
53 return DEVICE_ERROR_INVALID_PARAMETER;
55 ret = device_get_display_numbers(&max_id);
56 if (ret != DEVICE_ERROR_NONE)
59 if(disp_idx < 0 || disp_idx >= max_id)
60 return DEVICE_ERROR_INVALID_PARAMETER;
62 val = display_get_brightness();
66 return DEVICE_ERROR_NONE;
69 int device_set_brightness(int disp_idx, int new_value)
71 int max_value, val, max_id, ret;
74 return DEVICE_ERROR_INVALID_PARAMETER;
76 ret = device_get_display_numbers(&max_id);
77 if (ret != DEVICE_ERROR_NONE)
80 if(disp_idx < 0 || disp_idx >= max_id)
81 return DEVICE_ERROR_INVALID_PARAMETER;
83 ret = device_get_max_brightness(disp_idx, &max_value);
84 if (ret != DEVICE_ERROR_NONE)
87 if(new_value > max_value)
88 return DEVICE_ERROR_INVALID_PARAMETER;
90 val = display_set_brightness(new_value);
93 return DEVICE_ERROR_NONE;
96 int device_get_max_brightness(int disp_idx, int* max_value)
100 if(max_value == NULL)
101 return DEVICE_ERROR_INVALID_PARAMETER;
103 ret = device_get_display_numbers(&max_id);
104 _E("max id : %d", max_id);
105 if (ret != DEVICE_ERROR_NONE)
108 if(disp_idx < 0 || disp_idx >= max_id)
109 return DEVICE_ERROR_INVALID_PARAMETER;
111 val = display_get_max_brightness();
115 return DEVICE_ERROR_NONE;
118 int device_set_brightness_from_settings(int disp_idx)
120 int max_id, val, ret;
122 ret = device_get_display_numbers(&max_id);
123 if (ret != DEVICE_ERROR_NONE)
126 if(disp_idx < 0 || disp_idx >= max_id)
127 return DEVICE_ERROR_INVALID_PARAMETER;
129 val = display_release_brightness();
132 return DEVICE_ERROR_NONE;
135 int device_set_brightness_to_settings(int disp_idx, int new_value)
137 int max_value, val, max_id, ret;
140 return DEVICE_ERROR_INVALID_PARAMETER;
142 ret = device_get_display_numbers(&max_id);
143 if (ret != DEVICE_ERROR_NONE)
146 if(disp_idx < 0 || disp_idx >= max_id)
147 return DEVICE_ERROR_INVALID_PARAMETER;
149 ret = device_get_max_brightness(disp_idx, &max_value);
150 if (ret != DEVICE_ERROR_NONE)
153 if(new_value > max_value)
154 return DEVICE_ERROR_INVALID_PARAMETER;
156 val = display_set_brightness_with_setting(new_value);
159 return DEVICE_ERROR_NONE;
162 int device_battery_get_detail(int *percent)
164 _E("Deprecated api. Use device_battery_get_percent()");
165 return DEVICE_ERROR_NOT_SUPPORTED;
168 int device_battery_is_full(bool* full)
171 return DEVICE_ERROR_INVALID_PARAMETER;
173 int f = battery_is_full();
176 *full = (f == 1) ? true : false;
177 return DEVICE_ERROR_NONE;
180 int device_battery_get_remaining_time(device_battery_remaining_time_type_e type, int *time)
182 _E("Deprecated api.");
183 return DEVICE_ERROR_NOT_SUPPORTED;
186 int device_battery_set_remaining_time_changed_cb(device_battery_remaining_time_type_e type,
187 device_battery_remaining_time_changed_cb callback, void* user_data)
189 _E("Deprecated api.");
190 return DEVICE_ERROR_NOT_SUPPORTED;
193 int device_battery_unset_remaining_time_changed_cb(device_battery_remaining_time_type_e type)
195 _E("Deprecated api.");
196 return DEVICE_ERROR_NOT_SUPPORTED;
199 static device_battery_cb changed_callback = NULL;
200 static void* changed_callback_user_data = NULL;
202 static void battery_changed_inside_cb(keynode_t* key, void* user_data)
204 const char* keyname = vconf_keynode_get_name(key);
206 if (keyname != NULL && changed_callback != NULL && strcmp(keyname, VCONFKEY_SYSMAN_BATTERY_CAPACITY) == 0) {
208 if (vconf_get_int(VCONFKEY_SYSMAN_BATTERY_CAPACITY, &percent) == 0) {
209 changed_callback(percent, changed_callback_user_data);
214 int device_battery_set_cb(device_battery_cb callback, void* user_data)
216 // VCONFKEY_SYSMAN_BATTERY_CAPACITY
218 if (callback == NULL)
219 return DEVICE_ERROR_INVALID_PARAMETER;
221 changed_callback = callback;
222 changed_callback_user_data = user_data;
224 err = vconf_notify_key_changed(VCONFKEY_SYSMAN_BATTERY_CAPACITY, battery_changed_inside_cb, NULL);
226 return DEVICE_ERROR_INVALID_PARAMETER;
228 return DEVICE_ERROR_NONE;
231 int device_battery_unset_cb(void)
233 int err = vconf_ignore_key_changed(VCONFKEY_SYSMAN_BATTERY_CAPACITY, battery_changed_inside_cb);
235 return DEVICE_ERROR_OPERATION_FAILED;
237 changed_callback = NULL;
238 changed_callback_user_data = NULL;
240 return DEVICE_ERROR_NONE;
243 int device_battery_get_warning_status(device_battery_warn_e *status)
246 return DEVICE_ERROR_INVALID_PARAMETER;
250 err = vconf_get_int(VCONFKEY_SYSMAN_BATTERY_STATUS_LOW, &value);
252 return DEVICE_ERROR_OPERATION_FAILED;
254 if (value == VCONFKEY_SYSMAN_BAT_POWER_OFF) {
255 *status = DEVICE_BATTERY_WARN_EMPTY;
256 } else if (value == VCONFKEY_SYSMAN_BAT_CRITICAL_LOW) {
257 *status = DEVICE_BATTERY_WARN_CRITICAL;
258 } else if (value == VCONFKEY_SYSMAN_BAT_WARNING_LOW) {
259 *status = DEVICE_BATTERY_WARN_LOW;
260 } else if (value == VCONFKEY_SYSMAN_BAT_NORMAL) {
261 *status = DEVICE_BATTERY_WARN_NORMAL;
262 } else if (value == VCONFKEY_SYSMAN_BAT_FULL) {
263 *status = DEVICE_BATTERY_WARN_FULL;
265 return DEVICE_ERROR_OPERATION_FAILED;
268 return DEVICE_ERROR_NONE;
271 static device_battery_warn_cb warn_changed_callback = NULL;
272 static void* warn_changed_callback_user_data = NULL;
274 static void battery_warn_changed_inside_cb(keynode_t* key, void* user_data)
276 const char* keyname = vconf_keynode_get_name(key);
278 if (keyname != NULL && warn_changed_callback != NULL && strcmp(keyname, VCONFKEY_SYSMAN_BATTERY_STATUS_LOW) == 0) {
280 if (vconf_get_int(VCONFKEY_SYSMAN_BATTERY_STATUS_LOW, &bat_state) == 0) {
281 warn_changed_callback(bat_state-1, warn_changed_callback_user_data);
286 int device_battery_warning_set_cb(device_battery_warn_cb callback, void* user_data)
288 // VCONFKEY_SYSMAN_BATTERY_STATUS_LOW
291 if (callback == NULL)
292 return DEVICE_ERROR_INVALID_PARAMETER;
294 warn_changed_callback = callback;
295 warn_changed_callback_user_data = user_data;
297 err = vconf_notify_key_changed(VCONFKEY_SYSMAN_BATTERY_STATUS_LOW, battery_warn_changed_inside_cb, NULL);
299 return DEVICE_ERROR_INVALID_PARAMETER;
301 return DEVICE_ERROR_NONE;
304 int device_battery_warning_unset_cb(void)
306 int err = vconf_ignore_key_changed(VCONFKEY_SYSMAN_BATTERY_STATUS_LOW, battery_warn_changed_inside_cb);
308 return DEVICE_ERROR_OPERATION_FAILED;
310 warn_changed_callback = NULL;
311 warn_changed_callback_user_data = NULL;
313 return DEVICE_ERROR_NONE;