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.
19 #define LOG_TAG "TIZEN_SYSTEM_DEVICE"
29 #define _MSG_DEVICE_ERROR_INVALID_PARAMETER "Invalid parameter"
30 #define _MSG_DEVICE_ERROR_OPERATION_FAILED "Operation failed"
32 #define RETURN_ERR_MSG(err_code, msg) \
34 LOGE("[%s] "_MSG_##err_code"(0x%08x) : %s", __FUNCTION__, err_code, msg); \
38 #define RETURN_ERR(err_code) \
40 LOGE("[%s] "_MSG_##err_code"(0x%08x)", __FUNCTION__, err_code); \
44 static int _display[] = {
49 int device_get_display_numbers(int* device_number)
51 if(device_number == NULL)
52 RETURN_ERR(DEVICE_ERROR_INVALID_PARAMETER);
54 *device_number = device_get_display_count();
55 if(*device_number < 0)
56 RETURN_ERR(DEVICE_ERROR_OPERATION_FAILED);
58 return DEVICE_ERROR_NONE;
61 int device_battery_get_percent( int* percent )
63 if (percent == NULL) RETURN_ERR(DEVICE_ERROR_INVALID_PARAMETER);
65 int pct = device_get_battery_pct();
67 RETURN_ERR(DEVICE_ERROR_OPERATION_FAILED);
71 return DEVICE_ERROR_NONE;
74 int device_battery_is_full( bool* full )
76 if (full == NULL) RETURN_ERR(DEVICE_ERROR_INVALID_PARAMETER);
78 int f = device_get_battery_pct();
80 RETURN_ERR(DEVICE_ERROR_OPERATION_FAILED);
83 *full = f == 100 ? true : false;
85 return DEVICE_ERROR_NONE;
88 int device_get_brightness(int disp_idx, int* value)
90 int val, disp, max_id;
92 if(value == NULL) RETURN_ERR(DEVICE_ERROR_INVALID_PARAMETER);
94 if(device_get_display_numbers(&max_id) < 0)
95 RETURN_ERR(DEVICE_ERROR_OPERATION_FAILED);
97 if(disp_idx < 0 || disp_idx >= max_id)
98 RETURN_ERR(DEVICE_ERROR_INVALID_PARAMETER);
100 disp = _display[disp_idx];
103 RETURN_ERR(DEVICE_ERROR_INVALID_PARAMETER);
105 val = device_get_display_brt(disp);
108 RETURN_ERR(DEVICE_ERROR_OPERATION_FAILED);
113 return DEVICE_ERROR_NONE;
116 int device_set_brightness(int disp_idx, int new_value)
121 if(device_get_display_numbers(&max_id) < 0)
122 RETURN_ERR(DEVICE_ERROR_OPERATION_FAILED);
124 if(disp_idx < 0 || disp_idx >= max_id)
125 RETURN_ERR(DEVICE_ERROR_INVALID_PARAMETER);
127 disp = _display[disp_idx];
130 RETURN_ERR(DEVICE_ERROR_INVALID_PARAMETER);
132 device_get_max_brightness(disp, &max_value);
134 if(new_value > max_value)
135 RETURN_ERR(DEVICE_ERROR_INVALID_PARAMETER);
137 val = device_set_display_brt(disp, new_value);
139 RETURN_ERR(DEVICE_ERROR_OPERATION_FAILED);
141 return DEVICE_ERROR_NONE;
144 int device_get_max_brightness(int disp_idx, int* max_value)
146 int val, disp, max_id;
148 if(device_get_display_numbers(&max_id) < 0)
149 RETURN_ERR(DEVICE_ERROR_OPERATION_FAILED);
151 if(disp_idx < 0 || disp_idx >= max_id)
152 RETURN_ERR(DEVICE_ERROR_INVALID_PARAMETER);
154 disp = _display[disp_idx];
156 if(max_value == NULL)
157 RETURN_ERR(DEVICE_ERROR_INVALID_PARAMETER);
159 val = device_get_max_brt(disp);
162 RETURN_ERR(DEVICE_ERROR_OPERATION_FAILED);
167 return DEVICE_ERROR_NONE;
170 int device_battery_is_charging(bool *charging)
172 // VCONFKEY_SYSMAN_BATTERY_CHARGE_NOW
175 if(charging == NULL){
176 RETURN_ERR(DEVICE_ERROR_INVALID_PARAMETER);
179 err = vconf_get_int(VCONFKEY_SYSMAN_BATTERY_CHARGE_NOW, &value);
182 RETURN_ERR(DEVICE_ERROR_OPERATION_FAILED);
186 }else if(value == 0){
189 RETURN_ERR(DEVICE_ERROR_OPERATION_FAILED);
191 return DEVICE_ERROR_NONE;
194 static device_battery_cb changed_callback = NULL;
195 static void* changed_callback_user_data = NULL;
197 static void battery_changed_inside_cb(keynode_t* key, void* user_data)
199 char* keyname = vconf_keynode_get_name(key);
201 if(keyname != NULL && changed_callback != NULL && strcmp(keyname, VCONFKEY_SYSMAN_BATTERY_CAPACITY) == 0){
203 if(vconf_get_int(VCONFKEY_SYSMAN_BATTERY_CAPACITY, &percent) == 0){
204 changed_callback(percent, changed_callback_user_data);
209 int device_battery_set_cb(device_battery_cb callback, void* user_data)
211 // VCONFKEY_SYSMAN_BATTERY_CAPACITY
214 RETURN_ERR(DEVICE_ERROR_INVALID_PARAMETER);
216 changed_callback = callback;
217 changed_callback_user_data = user_data;
219 err = vconf_notify_key_changed(VCONFKEY_SYSMAN_BATTERY_CAPACITY, battery_changed_inside_cb, NULL);
221 RETURN_ERR(DEVICE_ERROR_INVALID_PARAMETER);
224 return DEVICE_ERROR_NONE;
226 int device_battery_unset_cb(void)
228 int err = vconf_ignore_key_changed(VCONFKEY_SYSMAN_BATTERY_CAPACITY, battery_changed_inside_cb);
230 RETURN_ERR(DEVICE_ERROR_OPERATION_FAILED);
232 changed_callback = NULL;
233 changed_callback_user_data = NULL;
235 return DEVICE_ERROR_NONE;