Branch and submit for Tizen 2.0 final
[profile/ivi/device-manager-plugin-ivi.git] / device-manager-plugin-ivi.c
1
2 /*
3  * Overview: device mananger(devman) plugin for pinetrail platform
4  *
5  * Copyright (c) 2000 - 2011 Intel Co., Ltd. All rights reserved.
6  *
7  * Licensed under the Apache License, Version 2.0 (the "License");
8  * you may not use this file except in compliance with the License.
9  * You may obtain a copy of the License at
10  *
11  * http://www.apache.org/licenses/LICENSE-2.0
12  *
13  * Unless required by applicable law or agreed to in writing, software
14  * distributed under the License is distributed on an "AS IS" BASIS,
15  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
16  * See the License for the specific language governing permissions and
17  * limitations under the License.
18  *
19  */
20
21 #include <devman/devman.h>
22 #include <devman/devman_plugin_intf.h>
23 #include <string.h>
24
25 #include "devlog.h"
26 #include "device_engine.h"
27
28 #include "device-manager-plugin-ivi.h"
29
30 #define BATTERY_PRESENT_PATH            "/sys/class/power_supply/BAT1/present"
31 #define BATTERY_CHARGE_STATUS_PATH  "/sys/class/power_supply/BAT1/status"
32 #define BATTERY_CHARGE_FULL_PATH    "/sys/class/power_supply/BAT1/charge_full"
33 #define BATTERY_CHARGE_NOW_PATH     "/sys/class/power_supply/BAT1/charge_now"
34
35 #define BACKLIGHTNESS_MAX_PATH      "/sys/class/backlight/intel_backlight/max_brightness"
36 #define BACKLIGHTNESS_PATH          "/sys/class/backlight/intel_backlight/brightness"
37
38 #define WAKEUP_COUNT_PATH           "/sys/power/wakeup_count"
39 #define POWER_STATE_PATH            "/sys/power/state"
40
41
42 #define DEVIDE(_x, _y, _z)\
43     if(_y)      \
44 {       \
45     int _tmpy = _y;     \
46     _z = 0;     \
47     while(_x >= _tmpy)  \
48     {                   \
49         ++_z;   \
50         _tmpy += _y;    \
51     }   \
52 }
53
54 int OEM_sys_get_backlight_max_brightness(int index, int *value)
55 {
56     int ret = -1;
57
58 //    ret = sys_get_int(BACKLIGHTNESS_MAX_PATH, value);
59 //    DBG("path[%s]value[%d]", BACKLIGHTNESS_MAX_PATH, *value);
60     return ret;
61 }
62
63 int OEM_sys_get_backlight_brightness(int index, int *value, int power_saving)
64 {
65     int ret = -1;
66
67 //    ret = sys_get_int(BACKLIGHTNESS_PATH, value);
68 //    DBG("path[%s]value[%d]", BACKLIGHTNESS_PATH, *value);
69
70     return ret;
71 }
72
73 int OEM_sys_set_backlight_brightness(int index, int value, int power_saving)
74 {
75     int ret = -1;
76
77 //    ret = sys_set_int(BACKLIGHTNESS_PATH, value);
78 //    DBG("path[%s]value[%d]", BACKLIGHTNESS_PATH, value);
79
80     return ret;
81 }
82
83 int OEM_sys_get_power_wakeup_count(int *value)
84 {
85     int ret = -1;
86
87 //    ret = sys_get_int(WAKEUP_COUNT_PATH, value);
88     /*
89      * Fix me: with the below format output, we always run into
90      * SEGFAULT if *value != 0, it may from overflow/out of binds
91      * type issue.
92      */
93     //DBG("path[%s], value[%d], line[%d]", WAKEUP_COUNT_PATH, *value, __LINE__);
94
95     return ret;
96 }
97
98 int OEM_sys_set_power_wakeup_count(int value)
99 {
100     int ret = -1;
101
102 //    ret = sys_set_int(WAKEUP_COUNT_PATH, value);
103 //    DBG("path[%s]value[%d]", WAKEUP_COUNT_PATH, value);
104
105     return ret;
106 }
107
108 int OEM_sys_set_power_state(int value)
109 {
110     int ret = -1;
111
112  //   if(POWER_STATE_SUSPEND == value)
113 //        ret = sys_set_str(POWER_STATE_PATH, "mem");
114  //   DBG("path[%s], value[%d]", POWER_STATE_PATH, value);
115
116     return ret;
117 }
118
119 int OEM_sys_get_battery_present(int *value)
120 {
121     int ret = -1;
122
123     *value = 1;
124     ret = 0;
125 //    ret = sys_get_int(BATTERY_PRESENT_PATH, value);
126     DBG("path[%s], value[%d]", BATTERY_PRESENT_PATH, *value);
127
128     return ret;
129 }
130
131
132 int OEM_sys_get_battery_capacity(int *value)
133 {
134     int ret = -1;
135     static int charge_full = 0;
136     static int unit = 0;
137     int charge_now;
138     int capacity = 100;
139
140     /*if(charge_full == 0)
141     {
142         ret = sys_get_int(BATTERY_CHARGE_FULL_PATH, &charge_full);
143         if(ret != 0)
144         {
145             ERR("get battery charge full error!");
146             charge_full = 0;
147             return -1;
148         }
149         DEVIDE(charge_full, 100, unit);
150     }
151
152     ret = sys_get_int(BATTERY_CHARGE_NOW_PATH, &charge_now);
153     if(ret != 0)
154     {
155         ERR("get battery charge now error!");
156         return -1;
157     }
158
159     DEVIDE(charge_now, unit, capacity);
160     */
161     *value = capacity;
162     DBG("battery capacity value[%d]", *value);
163
164     return 0;
165 }
166
167
168 int OEM_sys_get_battery_charge_full(int *value)
169 {
170     int capacity = 0;
171
172     if(OEM_sys_get_battery_capacity(&capacity) < 0){
173         DBG("OEM_sys_get_battery_capacity failed");
174         return -1;
175     }else{
176         if(capacity == 100){
177             *value = 1;
178         }else{
179             *value = 0;
180         }
181     }
182
183     DBG("func[%s]value[%d]", __func__, *value);
184
185     return 0;
186 }
187
188 int OEM_sys_get_battery_charge_now(int *value)
189 {
190     char* buf = NULL;
191     int ret = 0;
192     int len = strlen("Charging\n");
193
194 /*    buf = sys_get_str(BATTERY_CHARGE_STATUS_PATH);
195
196     if(buf){
197         if(0 == strncmp(buf, "Charging\n", len )){
198             *value = 1;
199         }else{
200             *value = 0;
201         }
202         DBG("path[%s]value[%d]", BATTERY_CHARGE_STATUS_PATH, *value);
203
204         free(buf);
205         ret = 0;
206     }*/
207
208     *value = 1;
209
210     return ret;
211 }
212
213 int OEM_sys_get_null_1(int *value)
214 {
215     int ret = -1;
216     ERR("this interface is not implemented");
217
218     return ret;
219 }
220
221 int OEM_sys_set_null_1(int value)
222 {
223     int ret = -1;
224     ERR("this interface is not implemented");
225
226     return ret;
227 }
228
229
230 int OEM_sys_get_null_2(int index, int *value)
231 {
232     int ret = -1;
233     ERR("this interface is not implemented");
234
235     return ret;
236
237 }
238
239 int OEM_sys_get_null_4(int index, int* value, int bar)
240 {
241         ERR("not implemented");
242         return -1;
243 }
244
245 int OEM_sys_set_null_3(int index, int value, int bar)
246 {
247         ERR("not implemented");
248         return -1;
249 }
250
251 int OEM_sys_set_null_2(int index, int value)
252 {
253     int ret = -1;
254     ERR("this interface is not implemented");
255
256     return ret;
257
258 }
259
260
261 int OEM_sys_get_null_3(char *node)
262 {
263     int ret = -1;
264     ERR("this interface is not implemented");
265
266     return ret;
267
268 }
269
270
271 /*  devman_plugin_interface_sampledevice is the structure of the type
272  *  OEM_sys_devman_plugin_interface in which OEM API’s which are implemented are
273  *  defined */
274
275 static const OEM_sys_devman_plugin_interface  devman_plugin_interface_pinetrail = {
276     OEM_sys_get_null_1, //int        (*OEM_sys_get_display_count) (int *value);
277
278     OEM_sys_get_null_2, //int        (*OEM_sys_get_backlight_min_brightness) (int index, int *value);
279         OEM_sys_get_null_2, //int        (*OEM_sys_get_backlight_max_brightness) (int index, int *value);
280         OEM_sys_get_null_4, //int        (*OEM_sys_get_backlight_brightness) (int index, int *value, int power_saving);
281         OEM_sys_set_null_3, //int        (*OEM_sys_set_backlight_brightness) (int index, int value, int power_saving);
282
283     OEM_sys_get_null_2, //int        (*OEM_sys_set_backlight_dimming) (int index, int *value);
284     OEM_sys_get_null_2, //int        (*OEM_sys_get_backlight_acl_control) (int index, int *value);
285     OEM_sys_set_null_2, //int        (*OEM_sys_set_backlight_acl_control) (int index, int value);
286
287     OEM_sys_get_null_2, //int        (*OEM_sys_get_lcd_power) (int index, int *value);
288     OEM_sys_set_null_2, //int        (*OEM_sys_set_lcd_power) (int index, int value);
289
290     OEM_sys_get_null_1, //int        (*OEM_sys_get_image_enhance_mode) (int *value);
291     OEM_sys_set_null_1, //int        (*OEM_sys_set_image_enhance_mode) (int value);
292     OEM_sys_get_null_1, //int        (*OEM_sys_get_image_enhance_scenario) (int *value);
293     OEM_sys_set_null_1, //int        (*OEM_sys_set_image_enhance_scenario) (int value);
294     OEM_sys_get_null_1, //int        (*OEM_sys_get_image_enhance_tone) (int *value);
295     OEM_sys_set_null_1, //int        (*OEM_sys_set_image_enhance_tone) (int value);
296     OEM_sys_get_null_1, //int        (*OEM_sys_get_image_enhance_outdoor) (int *value);
297     OEM_sys_set_null_1, //int        (*OEM_sys_set_image_enhance_outdoor) (int value);
298
299     OEM_sys_get_null_1, //int        (*OEM_sys_get_image_enhance_tune) (int *value);
300     OEM_sys_set_null_1, //int        (*OEM_sys_set_image_enhance_tune) (int value);
301
302     OEM_sys_get_null_1, //int        (*OEM_sys_image_enhance_info) (int *value);
303
304     OEM_sys_set_null_1, //int        (*OEM_sys_set_display_frame_rate) (int value);
305
306     OEM_sys_get_null_1, //int        (*OEM_sys_get_uart_path) (int *value);
307     OEM_sys_set_null_1, //int        (*OEM_sys_set_uart_path) (int value);
308
309     OEM_sys_get_null_1, //int        (*OEM_sys_get_usb_path) (int *value);
310     OEM_sys_set_null_1, //int        (*OEM_sys_set_usb_path) (int value);
311
312     OEM_sys_get_null_1, //int        (*OEM_sys_get_haptic_vibetones_level_max) (int *value);
313     OEM_sys_get_null_1, //int        (*OEM_sys_get_haptic_vibetones_level) (int *value);
314     OEM_sys_set_null_1, //int        (*OEM_sys_set_haptic_vibetones_level) (int value);
315     OEM_sys_set_null_1, //int        (*OEM_sys_set_haptic_vibetones_enable) (int value);
316     OEM_sys_set_null_1, //int        (*OEM_sys_set_haptic_vibetones_oneshot) (int value);
317
318     OEM_sys_get_battery_capacity, //int     (*OEM_sys_get_battery_capacity) (int *value);
319     OEM_sys_get_null_1, //int        (*OEM_sys_get_battery_capacity_raw) (int *value);
320     OEM_sys_get_battery_charge_full, //int        (*OEM_sys_get_battery_charge_full) (int *value);
321     OEM_sys_get_battery_charge_now, //int        (*OEM_sys_get_battery_charge_now) (int *value);
322     OEM_sys_get_battery_present, //int      (*OEM_sys_get_battery_present) (int *value);
323     OEM_sys_get_null_1, //int        (*OEM_sys_get_battery_health) (int *value);
324     OEM_sys_get_null_1, //int        (*OEM_sys_get_battery_polling_required) (int *value);
325
326     OEM_sys_get_null_1, //int        (*OEM_sys_get_jack_charger_online) (int *value);
327     OEM_sys_get_null_1, //int        (*OEM_sys_get_jack_earjack_online) (int *value);
328     OEM_sys_get_null_1, //int        (*OEM_sys_get_jack_earkey_online) (int *value);
329     OEM_sys_get_null_1, //int        (*OEM_sys_get_jack_hdmi_online) (int *value);
330     OEM_sys_get_null_1, //int        (*OEM_sys_get_jack_usb_online) (int *value);
331     OEM_sys_get_null_1, //int        (*OEM_sys_get_jack_cradle_online) (int *value);
332     OEM_sys_get_null_1, //int        (*OEM_sys_get_jack_tvout_online) (int *value);
333     OEM_sys_get_null_1, //int        (*OEM_sys_get_jack_keyboard_online) (int *value);
334
335     OEM_sys_get_null_1, //int        (*OEM_sys_get_leds_torch_max_brightness) (int *value);
336     OEM_sys_get_null_1, //int        (*OEM_sys_get_leds_torch_brightness) (int *value);
337     OEM_sys_set_null_1, //int        (*OEM_sys_set_leds_torch_brightness) (int value);
338
339     OEM_sys_set_power_state, //int        (*OEM_sys_set_power_state) (int value);
340
341     OEM_sys_get_power_wakeup_count, //int        (*OEM_sys_get_power_wakeup_count) (int *value);
342     OEM_sys_set_power_wakeup_count, //int        (*OEM_sys_set_power_wakeup_count) (int value);
343
344     OEM_sys_get_null_3, //int        (*OEM_sys_get_memnotify_node) (char *node);
345     OEM_sys_get_null_1, //int        (*OEM_sys_get_memnotify_victim_task) (int *value);
346     OEM_sys_set_null_1, //int        (*OEM_sys_set_memnotify_threshold_lv1) (int value);
347     OEM_sys_set_null_1, //int        (*OEM_sys_set_memnotify_threshold_lv2) (int value);
348
349     OEM_sys_get_null_3, //int        (*OEM_sys_get_process_monitor_node) (char *node);
350     OEM_sys_set_null_1, //int        (*OEM_sys_set_process_monitor_mp_pnp) (int value);
351     OEM_sys_set_null_1, //int        (*OEM_sys_set_process_monitor_mp_vip) (int value);
352
353     OEM_sys_get_null_1, //int        (*OEM_sys_get_cpufreq_cpuinfo_max_freq) (int *value);
354     OEM_sys_get_null_1, //int        (*OEM_sys_get_cpufreq_cpuinfo_min_freq) (int *value);
355     OEM_sys_get_null_1, //int        (*OEM_sys_get_cpufreq_scaling_max_freq) (int *value);
356     OEM_sys_set_null_1, //int        (*OEM_sys_set_cpufreq_scaling_max_freq) (int value);
357     OEM_sys_get_null_1, //int        (*OEM_sys_get_cpufreq_scaling_min_freq) (int *value);
358     OEM_sys_set_null_1, //int        (*OEM_sys_set_cpufreq_scaling_min_freq) (int value);
359 };
360
361 /*  The following code returns  the address  of the structure
362  *  devman_plugin_interface_sampledevice  as defined above*/
363
364 const OEM_sys_devman_plugin_interface *OEM_sys_get_devman_plugin_interface()
365 {
366
367     return &devman_plugin_interface_pinetrail;
368 }