Initial commit
[profile/ivi/device-manager-plugin-pinetrail.git] / device-manager-plugin-pinetrail.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-pinetrail.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)
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)
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     ret = sys_get_int(BATTERY_PRESENT_PATH, value);
124     DBG("path[%s], value[%d]", BATTERY_PRESENT_PATH, *value);
125
126     return ret;
127 }
128
129
130 int OEM_sys_get_battery_capacity(int *value)
131 {
132     int ret = -1;
133     static int charge_full = 0;
134     static int unit = 0;
135     int charge_now;
136     int capacity = 0;
137
138     if(charge_full == 0)
139     {
140         ret = sys_get_int(BATTERY_CHARGE_FULL_PATH, &charge_full);
141         if(ret != 0)
142         {
143             ERR("get battery charge full error!");
144             charge_full = 0;
145             return -1;
146         }
147         DEVIDE(charge_full, 100, unit);
148     }
149
150     ret = sys_get_int(BATTERY_CHARGE_NOW_PATH, &charge_now);
151     if(ret != 0)
152     {
153         ERR("get battery charge now error!");
154         return -1;
155     }
156
157     DEVIDE(charge_now, unit, capacity);
158     *value = capacity;
159     DBG("battery capacity value[%d]", *value);
160
161     return 0;
162 }
163
164
165 int OEM_sys_get_battery_charge_full(int *value)
166 {
167     int capacity = 0;
168
169     if(OEM_sys_get_battery_capacity(&capacity) < 0){
170         DBG("OEM_sys_get_battery_capacity failed");
171         return -1;
172     }else{
173         if(capacity == 100){
174             *value = 1;
175         }else{
176             *value = 0;
177         }
178     }
179
180     DBG("func[%s]value[%d]", __func__, *value);
181
182     return 0;
183 }
184
185 int OEM_sys_get_battery_charge_now(int *value)
186 {
187     char* buf = NULL;
188     int ret = -1;
189     int len = strlen("Charging\n");
190
191     buf = sys_get_str(BATTERY_CHARGE_STATUS_PATH);
192
193     if(buf){
194         if(0 == strncmp(buf, "Charging\n", len )){
195             *value = 1;
196         }else{
197             *value = 0;
198         }
199         DBG("path[%s]value[%d]", BATTERY_CHARGE_STATUS_PATH, *value);
200
201         free(buf);
202         ret = 0;
203     }
204
205     return ret;
206 }
207
208 int OEM_sys_get_null_1(int *value)
209 {
210     int ret = -1;
211     ERR("this interface is not implemented");
212
213     return ret;
214 }
215
216 int OEM_sys_set_null_1(int value)
217 {
218     int ret = -1;
219     ERR("this interface is not implemented");
220
221     return ret;
222 }
223
224
225 int OEM_sys_get_null_2(int index, int *value)
226 {
227     int ret = -1;
228     ERR("this interface is not implemented");
229
230     return ret;
231
232 }
233
234 int OEM_sys_set_null_2(int index, int value)
235 {
236     int ret = -1;
237     ERR("this interface is not implemented");
238
239     return ret;
240
241 }
242
243
244 int OEM_sys_get_null_3(char *node)
245 {
246     int ret = -1;
247     ERR("this interface is not implemented");
248
249     return ret;
250
251 }
252
253
254 /*  devman_plugin_interface_sampledevice is the structure of the type
255  *  OEM_sys_devman_plugin_interface in which OEM API’s which are implemented are
256  *  defined */
257
258 static const OEM_sys_devman_plugin_interface  devman_plugin_interface_pinetrail = {
259     OEM_sys_get_null_1, //int        (*OEM_sys_get_display_count) (int *value);
260
261     OEM_sys_get_backlight_max_brightness, //int        (*OEM_sys_get_backlight_max_brightness) (int index, int *value);
262     OEM_sys_get_backlight_brightness, //int        (*OEM_sys_get_backlight_brightness) (int index, int *value);
263     OEM_sys_set_backlight_brightness, //int        (*OEM_sys_set_backlight_brightness) (int index, int value);
264
265     OEM_sys_get_null_2, //int        (*OEM_sys_get_backlight_acl_control) (int index, int *value);
266     OEM_sys_set_null_2, //int        (*OEM_sys_set_backlight_acl_control) (int index, int value);
267
268     OEM_sys_get_null_2, //int        (*OEM_sys_get_lcd_power) (int index, int *value);
269     OEM_sys_set_null_2, //int        (*OEM_sys_set_lcd_power) (int index, int value);
270
271     OEM_sys_get_null_1, //int        (*OEM_sys_get_image_enhance_mode) (int *value);
272     OEM_sys_set_null_1, //int        (*OEM_sys_set_image_enhance_mode) (int value);
273     OEM_sys_get_null_1, //int        (*OEM_sys_get_image_enhance_scenario) (int *value);
274     OEM_sys_set_null_1, //int        (*OEM_sys_set_image_enhance_scenario) (int value);
275     OEM_sys_get_null_1, //int        (*OEM_sys_get_image_enhance_tone) (int *value);
276     OEM_sys_set_null_1, //int        (*OEM_sys_set_image_enhance_tone) (int value);
277     OEM_sys_get_null_1, //int        (*OEM_sys_get_image_enhance_outdoor) (int *value);
278     OEM_sys_set_null_1, //int        (*OEM_sys_set_image_enhance_outdoor) (int value);
279
280     OEM_sys_get_null_1, //int        (*OEM_sys_get_image_enhance_tune) (int *value);
281     OEM_sys_set_null_1, //int        (*OEM_sys_set_image_enhance_tune) (int value);
282
283     OEM_sys_get_null_1, //int        (*OEM_sys_get_uart_path) (int *value);
284     OEM_sys_set_null_1, //int        (*OEM_sys_set_uart_path) (int value);
285
286     OEM_sys_get_null_1, //int        (*OEM_sys_get_usb_path) (int *value);
287     OEM_sys_set_null_1, //int        (*OEM_sys_set_usb_path) (int value);
288
289     OEM_sys_get_null_1, //int        (*OEM_sys_get_haptic_vibetones_level_max) (int *value);
290     OEM_sys_get_null_1, //int        (*OEM_sys_get_haptic_vibetones_level) (int *value);
291     OEM_sys_set_null_1, //int        (*OEM_sys_set_haptic_vibetones_level) (int value);
292     OEM_sys_set_null_1, //int        (*OEM_sys_set_haptic_vibetones_enable) (int value);
293     OEM_sys_set_null_1, //int        (*OEM_sys_set_haptic_vibetones_oneshot) (int value);
294
295     OEM_sys_get_battery_capacity, //int     (*OEM_sys_get_battery_capacity) (int *value);
296     OEM_sys_get_battery_charge_full, //int        (*OEM_sys_get_battery_charge_full) (int *value);
297     OEM_sys_get_battery_charge_now, //int        (*OEM_sys_get_battery_charge_now) (int *value);
298     OEM_sys_get_battery_present, //int      (*OEM_sys_get_battery_present) (int *value);
299     OEM_sys_get_null_1, //int        (*OEM_sys_get_battery_health) (int *value);
300
301     OEM_sys_get_null_1, //int        (*OEM_sys_get_jack_charger_online) (int *value);
302     OEM_sys_get_null_1, //int        (*OEM_sys_get_jack_earjack_online) (int *value);
303     OEM_sys_get_null_1, //int        (*OEM_sys_get_jack_earkey_online) (int *value);
304     OEM_sys_get_null_1, //int        (*OEM_sys_get_jack_hdmi_online) (int *value);
305     OEM_sys_get_null_1, //int        (*OEM_sys_get_jack_usb_online) (int *value);
306     OEM_sys_get_null_1, //int        (*OEM_sys_get_jack_cradle_online) (int *value);
307     OEM_sys_get_null_1, //int        (*OEM_sys_get_jack_tvout_online) (int *value);
308     OEM_sys_get_null_1, //int        (*OEM_sys_get_jack_keyboard_online) (int *value);
309
310     OEM_sys_get_null_1, //int        (*OEM_sys_get_leds_torch_max_brightness) (int *value);
311     OEM_sys_get_null_1, //int        (*OEM_sys_get_leds_torch_brightness) (int *value);
312     OEM_sys_set_null_1, //int        (*OEM_sys_set_leds_torch_brightness) (int value);
313
314     OEM_sys_set_power_state, //int        (*OEM_sys_set_power_state) (int value);
315
316     OEM_sys_get_power_wakeup_count, //int        (*OEM_sys_get_power_wakeup_count) (int *value);
317     OEM_sys_set_power_wakeup_count, //int        (*OEM_sys_set_power_wakeup_count) (int value);
318
319     OEM_sys_get_null_3, //int        (*OEM_sys_get_memnotify_node) (char *node);
320     OEM_sys_get_null_1, //int        (*OEM_sys_get_memnotify_victim_task) (int *value);
321     OEM_sys_set_null_1, //int        (*OEM_sys_set_memnotify_threshold_lv1) (int value);
322     OEM_sys_set_null_1, //int        (*OEM_sys_set_memnotify_threshold_lv2) (int value);
323
324     OEM_sys_get_null_3, //int        (*OEM_sys_get_process_monitor_node) (char *node);
325     OEM_sys_set_null_1, //int        (*OEM_sys_set_process_monitor_mp_pnp) (int value);
326     OEM_sys_set_null_1, //int        (*OEM_sys_set_process_monitor_mp_vip) (int value);
327
328     OEM_sys_get_null_1, //int        (*OEM_sys_get_cpufreq_cpuinfo_max_freq) (int *value);
329     OEM_sys_get_null_1, //int        (*OEM_sys_get_cpufreq_cpuinfo_min_freq) (int *value);
330     OEM_sys_get_null_1, //int        (*OEM_sys_get_cpufreq_scaling_max_freq) (int *value);
331     OEM_sys_set_null_1, //int        (*OEM_sys_set_cpufreq_scaling_max_freq) (int value);
332     OEM_sys_get_null_1, //int        (*OEM_sys_get_cpufreq_scaling_min_freq) (int *value);
333     OEM_sys_set_null_1, //int        (*OEM_sys_set_cpufreq_scaling_min_freq) (int value);
334 };
335
336 /*  The following code returns  the address  of the structure
337  *  devman_plugin_interface_sampledevice  as defined above*/
338
339 const OEM_sys_devman_plugin_interface *OEM_sys_get_devman_plugin_interface()
340 {
341
342     return &devman_plugin_interface_pinetrail;
343 }