Add sensor-tool prototype
[platform/core/api/sensor.git] / tools / sensor-tool.c
1 #include <glib.h>
2 #include <sensor.h>
3
4 #include "sensor-tool.h"
5
6 static GMainLoop *loop;
7 static bool turned_on[SENSOR_NUM];
8
9 static void sensor_callback(sensor_h sensor, sensor_event_s events[], int events_count, void *user_data)
10 {
11         sensor_type_e type;
12         sensor_get_type(sensor, &type);
13         int num = 0;
14
15         for (int i = 0; i < SENSOR_NUM; ++i){
16                 if (sensor_type[i] == type){
17                         num = i;
18                         break;
19                 }
20         }
21
22         g_print("[%s] : ", sensor_alias[num]);
23         for (int i = 0; i < events_count; ++i) {
24                 int value_count;
25                 if (events[i].value_count < value_num[num])
26                         value_count = events[i].value_count;
27                 else
28                         value_count = value_num[num];
29
30                 for (int j = 0; j < value_count; ++j) {
31                         g_print("%f ", events[i].values[j]);
32                 }
33         }
34         g_print("\n");
35 }
36
37 static int create_sensor_listener(int num, sensor_h *sensor, sensor_listener_h *listener)
38 {
39         bool supported;
40         int ret;
41         float min, max;
42         const char *name = sensor_name[num];
43         sensor_type_e type = sensor_type[num];
44
45         sensor_is_supported(type, &supported);
46         if (!supported) {
47                 return -1;
48         }
49
50         sensor_get_default_sensor(type, sensor);
51
52         sensor_create_listener(*sensor, listener);
53         sensor_listener_set_events_cb(*listener, sensor_callback, NULL);
54         sensor_listener_set_option(*listener, SENSOR_OPTION_ALWAYS_ON);
55         sensor_listener_set_interval(*listener, 100);
56
57         sensor_get_min_range(*sensor, &min);
58         sensor_get_max_range(*sensor, &max);
59
60         ret = sensor_listener_start(*listener);
61         if (ret < 0) {
62                 g_print("%s error in listnener_start : %d\n", name, ret);
63                 return ret;
64         }
65
66         return 0;
67 }
68
69 int main()
70 {
71         sensor_h sensor[29];
72         sensor_listener_h listener[29];
73         int usable = 0;
74
75         for (int i = 0; i < SENSOR_NUM; ++i) {
76                 if (create_sensor_listener(i, &sensor[i], &listener[i])) {
77                         turned_on[i] = false;
78                 }
79                 else {
80                         turned_on[i] = true;
81                         ++usable;
82                 }
83         }
84
85         if (usable == 0) {
86                 g_print("There is no supported sensor.\n");
87                 return -1;
88         }
89
90         g_print("Supported sensors list : \n");
91         for (int i = 0; i < SENSOR_NUM; ++i) {
92                 if (!turned_on[i])
93                         continue;
94                 g_print("%s : [%s]\n", sensor_name[i], sensor_alias[i]);
95         }
96         g_print("\n");
97
98         loop = g_main_loop_new(NULL, FALSE);
99         g_main_loop_run(loop);
100
101         for (int i = 0; i < SENSOR_NUM; ++i) {
102                 if (!turned_on[i])
103                         continue;
104                 sensor_destroy_listener(listener[i]);
105         }
106
107         return 0;
108 }
109