4 * Copyright (c) 2014-15 Samsung Electronics Co., Ltd.
6 * Licensed under the Apache License, Version 2.0 (the "License");
7 * you may not use this file except in compliance with the License.
8 * You may obtain a copy of the License at
10 * http://www.apache.org/licenses/LICENSE-2.0
12 * Unless required by applicable law or agreed to in writing, software
13 * distributed under the License is distributed on an "AS IS" BASIS,
14 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
15 * See the License for the specific language governing permissions and
16 * limitations under the License.
23 #include <sensor_internal.h>
25 #include <sensor_common.h>
29 #include "check-sensor.h"
31 static GMainLoop *mainloop;
33 void printpollinglogs(sensor_type_t type,sensor_data_t data)
36 case(ACCELEROMETER_SENSOR):
37 printf("Accelerometer [%lld] [%6.6f] [%6.6f] [%6.6f]\n\n", data.timestamp, data.values[0], data.values[1], data.values[2]);
39 case(GYROSCOPE_SENSOR):
40 printf("Gyroscope [%lld] [%6.6f] [%6.6f] [%6.6f]\n\n", data.timestamp, data.values[0], data.values[1], data.values[2]);
42 case(PRESSURE_SENSOR):
43 printf("Pressure [%lld] [%6.6f] [%6.6f] [%6.6f]\n\n", data.timestamp, data.values[0], data.values[1], data.values[2]);
45 case(GEOMAGNETIC_SENSOR):
46 printf("Geomagnetic [%lld] [%6.6f] [%6.6f] [%6.6f]\n\n", data.timestamp, data.values[0], data.values[1], data.values[2]);
49 printf("Light [%lld] [%6.6f]\n\n", data.timestamp, data.values[0]);
51 case(TEMPERATURE_SENSOR):
52 printf("Temperature [%lld] [%6.6f]\n\n", data.timestamp, data.values[0]);
54 case(PROXIMITY_SENSOR):
55 printf("Proximity [%lld] [%6.6f]\n\n", data.timestamp, data.values[0]);
57 case(ORIENTATION_SENSOR):
58 printf("Orientation [%lld] [%6.6f] [%6.6f] [%6.6f]\n\n", data.timestamp, data.values[0], data.values[1], data.values[2]);
61 printf("Tilt [%lld] [%6.6f] [%6.6f]\n\n", data.timestamp, data.values[0], data.values[1]);
64 printf("Gravity [%lld] [%6.6f] [%6.6f] [%6.6f]\n\n", data.timestamp, data.values[0], data.values[1], data.values[2]);
66 case(LINEAR_ACCEL_SENSOR):
67 printf("Linear Acceleration [%lld] [%6.6f] [%6.6f] [%6.6f]\n\n", data.timestamp, data.values[0], data.values[1], data.values[2]);
69 case(ROTATION_VECTOR_SENSOR):
70 printf("Rotation Vector [%lld] [%6.6f] [%6.6f] [%6.6f] [%6.6f]\n\n", data.timestamp, data.values[0], data.values[1], data.values[2], data.values[3]);
72 case(GEOMAGNETIC_RV_SENSOR):
73 printf("Geomagnetic Rv [%lld] [%6.6f] [%6.6f] [%6.6f] [%6.6f]\n\n", data.timestamp, data.values[0], data.values[1], data.values[2], data.values[3]);
75 case(GAMING_RV_SENSOR):
76 printf("Gaming Rv [%lld] [%6.6f] [%6.6f] [%6.6f] [%6.6f]\n\n", data.timestamp, data.values[0], data.values[1], data.values[2], data.values[3]);
83 int get_event(sensor_type_t sensor_type, char str[])
85 switch (sensor_type) {
86 case ACCELEROMETER_SENSOR:
87 if (strcmp(str, "RAW_DATA_EVENT") == 0)
88 return ACCELEROMETER_RAW_DATA_EVENT;
90 case GYROSCOPE_SENSOR:
91 if (strcmp(str, "RAW_DATA_EVENT") == 0)
92 return GYROSCOPE_RAW_DATA_EVENT;
95 if (strcmp(str, "RAW_DATA_EVENT") == 0)
96 return PRESSURE_RAW_DATA_EVENT;
98 case GEOMAGNETIC_SENSOR:
99 if (strcmp(str, "RAW_DATA_EVENT") == 0)
100 return GEOMAGNETIC_RAW_DATA_EVENT;
103 if (strcmp(str, "RAW_DATA_EVENT") == 0)
104 return LIGHT_LUX_DATA_EVENT;
106 case TEMPERATURE_SENSOR:
107 if (strcmp(str, "RAW_DATA_EVENT") == 0)
108 return TEMPERATURE_RAW_DATA_EVENT;
110 case PROXIMITY_SENSOR:
111 if (strcmp(str, "CHANGE_STATE_EVENT") == 0)
112 return PROXIMITY_CHANGE_STATE_EVENT;
114 case ORIENTATION_SENSOR:
115 if (strcmp(str, "RAW_DATA_EVENT") == 0)
116 return ORIENTATION_RAW_DATA_EVENT;
119 if (strcmp(str, "RAW_DATA_EVENT") == 0)
120 return TILT_RAW_DATA_EVENT;
123 if (strcmp(str, "RAW_DATA_EVENT") == 0)
124 return GRAVITY_RAW_DATA_EVENT;
126 case LINEAR_ACCEL_SENSOR:
127 if (strcmp(str, "RAW_DATA_EVENT") == 0)
128 return LINEAR_ACCEL_RAW_DATA_EVENT;
130 case ROTATION_VECTOR_SENSOR:
131 if (strcmp(str, "RAW_DATA_EVENT") == 0)
132 return ROTATION_VECTOR_RAW_DATA_EVENT;
134 case GEOMAGNETIC_RV_SENSOR:
135 if (strcmp(str, "RAW_DATA_EVENT") == 0)
136 return GEOMAGNETIC_RV_RAW_DATA_EVENT;
138 case GAMING_RV_SENSOR:
139 if (strcmp(str, "RAW_DATA_EVENT") == 0)
140 return GAMING_RV_RAW_DATA_EVENT;
146 void callback(sensor_t sensor, unsigned int event_type, sensor_data_t *data, void *user_data)
148 sensor_type_t sensor_type = event_type >> 16;
150 switch (sensor_type) {
151 case ACCELEROMETER_SENSOR:
152 printf("Accelerometer [%lld] [%6.6f] [%6.6f] [%6.6f]\n", data->timestamp, data->values[0], data->values[1], data->values[2]);
154 case GYROSCOPE_SENSOR:
155 printf("Gyroscope [%lld] [%6.6f] [%6.6f] [%6.6f]\n", data->timestamp, data->values[0], data->values[1], data->values[2]);
157 case PRESSURE_SENSOR:
158 printf("Pressure [%lld] [%6.6f] [%6.6f] [%6.6f]\n", data->timestamp, data->values[0], data->values[1], data->values[2]);
160 case GEOMAGNETIC_SENSOR:
161 printf("Geomagnetic [%lld] [%6.6f] [%6.6f] [%6.6f]\n", data->timestamp, data->values[0], data->values[1], data->values[2]);
164 printf("Light [%lld] [%6.6f]\n", data->timestamp, data->values[0]);
166 case TEMPERATURE_SENSOR :
167 printf("Temperature [%lld] [%6.6f]\n", data->timestamp, data->values[0]);
169 case PROXIMITY_SENSOR:
170 printf("Proximity [%lld] [%6.6f]\n", data->timestamp, data->values[0]);
172 case ORIENTATION_SENSOR :
173 printf("Orientation [%lld] [%6.6f] [%6.6f] [%6.6f]\n", data->timestamp, data->values[0], data->values[1], data->values[2]);
176 printf("Tilt [%lld] [%6.6f] [%6.6f]\n", data->timestamp, data->values[0], data->values[1]);
179 printf("Gravity [%lld] [%6.6f] [%6.6f] [%6.6f]\n", data->timestamp, data->values[0], data->values[1], data->values[2]);
181 case LINEAR_ACCEL_SENSOR:
182 printf("Linear acceleration [%lld] [%6.6f] [%6.6f] [%6.6f]\n", data->timestamp, data->values[0], data->values[1], data->values[2]);
184 case ROTATION_VECTOR_SENSOR:
185 printf("Rotation vector [%lld] [%6.6f] [%6.6f] [%6.6f] [%6.6f]\n", data->timestamp, data->values[0], data->values[1], data->values[2], data->values[3]);
187 case GEOMAGNETIC_RV_SENSOR:
188 printf("Geomagnetic RV [%lld] [%6.6f] [%6.6f] [%6.6f] [%6.6f]\n", data->timestamp, data->values[0], data->values[1], data->values[2], data->values[3]);
190 case GAMING_RV_SENSOR:
191 printf("Gaming RV [%lld] [%6.6f] [%6.6f] [%6.6f] [%6.6f]\n", data->timestamp, data->values[0], data->values[1], data->values[2], data->values[3]);
198 int check_sensor(sensor_type_t sensor_type, unsigned int event, int interval)
200 int handle, result, start_handle, stop_handle;
202 mainloop = g_main_loop_new(NULL, FALSE);
204 sensor_t sensor = sensord_get_sensor(sensor_type);
205 handle = sensord_connect(sensor);
207 result = sensord_register_event(handle, event, interval, 0, callback, NULL);
210 printf("Can't register sensor\n");
214 start_handle = sensord_start(handle, 0);
216 if (start_handle < 0) {
217 printf("Error\n\n\n\n");
218 sensord_unregister_event(handle, event);
219 sensord_disconnect(handle);
223 g_main_loop_run(mainloop);
224 g_main_loop_unref(mainloop);
226 result = sensord_unregister_event(handle, event);
233 stop_handle = sensord_stop(handle);
235 if (stop_handle < 0) {
240 sensord_disconnect(handle);
245 int polling_sensor(sensor_type_t sensor_type, unsigned int event)
248 printf("Polling based\n");
250 handle = sf_connect(sensor_type);
251 result = sf_start(handle, 1);
254 printf("Can't start the sensor\n");
255 printf("Error\n\n\n\n");
262 result = sf_get_data(handle, event , &data);
263 printpollinglogs(sensor_type, data);
267 result = sf_disconnect(handle);
270 printf("Can't disconnect sensor\n");
271 printf("Error\n\n\n\n");