INSTALL(TARGETS ${PROJECT_NAME} LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR})
ADD_SUBDIRECTORY(test/stress_test)
-ADD_SUBDIRECTORY(test/orientation_test)
\ No newline at end of file
+ADD_SUBDIRECTORY(test/orientation_test)
+ADD_SUBDIRECTORY(tools)
%description test
Tizen Sensor Test Programs (test)
+%package tools
+Summary: Sensor command line tool package
+Group: System & System Tools
+Requires: %{name} = %{version}-%{release}
+
+%description tools
+Sensor command line tools
+
%if 0%{?gcov:1}
%package gcov
Summary: Tizen Sensor Library API (gcov)
%{_bindir}/sensor-stress_test
%{_bindir}/sensor-orientation_test
+%files tools
+%{_bindir}/sensor-tool
%if 0%{?gcov:1}
%files gcov
--- /dev/null
+CMAKE_MINIMUM_REQUIRED(VERSION 2.6)
+PROJECT(sensor-tool C)
+
+SET(PKG_MODULES
+ glib-2.0)
+
+INCLUDE(FindPkgConfig)
+PKG_CHECK_MODULES(PKGS REQUIRED ${PKG_MODULES})
+
+INCLUDE_DIRECTORIES(${PKGS_INCLUDE_DIRS})
+INCLUDE_DIRECTORIES(${CMAKE_SOURCE_DIR}/include)
+
+FOREACH(flag ${PKGS_CFLAGS})
+ SET(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} ${flag}")
+ENDFOREACH(flag)
+
+# Installing files
+FILE(GLOB_RECURSE SRCS sensor-tool.c)
+ADD_EXECUTABLE(${PROJECT_NAME} ${SRCS})
+SET_TARGET_PROPERTIES(${PROJECT_NAME} PROPERTIES LINKER_LANGUAGE C)
+TARGET_LINK_LIBRARIES(${PROJECT_NAME} ${PKGS_LDFLAGS} capi-system-sensor)
+INSTALL(TARGETS ${PROJECT_NAME} DESTINATION ${CMAKE_INSTALL_BINDIR})
--- /dev/null
+#include <glib.h>
+#include <sensor.h>
+
+#include "sensor-tool.h"
+
+static GMainLoop *loop;
+static bool turned_on[SENSOR_NUM];
+
+static void sensor_callback(sensor_h sensor, sensor_event_s events[], int events_count, void *user_data)
+{
+ sensor_type_e type;
+ sensor_get_type(sensor, &type);
+ int num = 0;
+
+ for (int i = 0; i < SENSOR_NUM; ++i){
+ if (sensor_type[i] == type){
+ num = i;
+ break;
+ }
+ }
+
+ g_print("[%s] : ", sensor_alias[num]);
+ for (int i = 0; i < events_count; ++i) {
+ int value_count;
+ if (events[i].value_count < value_num[num])
+ value_count = events[i].value_count;
+ else
+ value_count = value_num[num];
+
+ for (int j = 0; j < value_count; ++j) {
+ g_print("%f ", events[i].values[j]);
+ }
+ }
+ g_print("\n");
+}
+
+static int create_sensor_listener(int num, sensor_h *sensor, sensor_listener_h *listener)
+{
+ bool supported;
+ int ret;
+ float min, max;
+ const char *name = sensor_name[num];
+ sensor_type_e type = sensor_type[num];
+
+ sensor_is_supported(type, &supported);
+ if (!supported) {
+ return -1;
+ }
+
+ sensor_get_default_sensor(type, sensor);
+
+ sensor_create_listener(*sensor, listener);
+ sensor_listener_set_events_cb(*listener, sensor_callback, NULL);
+ sensor_listener_set_option(*listener, SENSOR_OPTION_ALWAYS_ON);
+ sensor_listener_set_interval(*listener, 100);
+
+ sensor_get_min_range(*sensor, &min);
+ sensor_get_max_range(*sensor, &max);
+
+ ret = sensor_listener_start(*listener);
+ if (ret < 0) {
+ g_print("%s error in listnener_start : %d\n", name, ret);
+ return ret;
+ }
+
+ return 0;
+}
+
+int main()
+{
+ sensor_h sensor[29];
+ sensor_listener_h listener[29];
+ int usable = 0;
+
+ for (int i = 0; i < SENSOR_NUM; ++i) {
+ if (create_sensor_listener(i, &sensor[i], &listener[i])) {
+ turned_on[i] = false;
+ }
+ else {
+ turned_on[i] = true;
+ ++usable;
+ }
+ }
+
+ if (usable == 0) {
+ g_print("There is no supported sensor.\n");
+ return -1;
+ }
+
+ g_print("Supported sensors list : \n");
+ for (int i = 0; i < SENSOR_NUM; ++i) {
+ if (!turned_on[i])
+ continue;
+ g_print("%s : [%s]\n", sensor_name[i], sensor_alias[i]);
+ }
+ g_print("\n");
+
+ loop = g_main_loop_new(NULL, FALSE);
+ g_main_loop_run(loop);
+
+ for (int i = 0; i < SENSOR_NUM; ++i) {
+ if (!turned_on[i])
+ continue;
+ sensor_destroy_listener(listener[i]);
+ }
+
+ return 0;
+}
+
--- /dev/null
+#define SENSOR_NUM 27
+
+#include <sensor.h>
+
+const sensor_type_e sensor_type[] =
+{
+ SENSOR_ACCELEROMETER,
+ SENSOR_GRAVITY,
+ SENSOR_LINEAR_ACCELERATION,
+ SENSOR_MAGNETIC,
+ SENSOR_ROTATION_VECTOR,
+ SENSOR_ORIENTATION,
+ SENSOR_GYROSCOPE,
+ SENSOR_LIGHT,
+ SENSOR_PROXIMITY,
+ SENSOR_PRESSURE,
+ SENSOR_ULTRAVIOLET,
+ SENSOR_TEMPERATURE,
+ SENSOR_HUMIDITY,
+ SENSOR_HRM,
+ SENSOR_HRM_LED_GREEN,
+ SENSOR_HRM_LED_IR,
+ SENSOR_HRM_LED_RED,
+ SENSOR_GYROSCOPE_UNCALIBRATED,
+ SENSOR_GEOMAGNETIC_UNCALIBRATED,
+ SENSOR_GYROSCOPE_ROTATION_VECTOR,
+ SENSOR_GEOMAGNETIC_ROTATION_VECTOR,
+ SENSOR_SIGNIFICANT_MOTION,
+ SENSOR_HRM_BATCH,
+ SENSOR_HRM_LED_GREEN_BATCH,
+ SENSOR_HUMAN_PEDOMETER,
+ SENSOR_HUMAN_SLEEP_MONITOR,
+ SENSOR_HUMAN_SLEEP_DETECTOR
+};
+
+const char *sensor_name[] = {
+ "Accelerometer",
+ "Gravity sensor",
+ "Linear acceleration sensor",
+ "Magnetic sensor",
+ "Rotation vector sensor",
+ "Orientation sensor",
+ "Gyroscope",
+ "Light sensor",
+ "Proximity sensor",
+ "Pressure sensor",
+ "Ultraviolet sensor",
+ "Temperature sensor",
+ "Humidity sensor",
+ "Heart-rate monitor",
+ "Green LED sensor of HRM",
+ "Infra-Red LED sensor of HRM",
+ "Red LED sensor of HRM",
+ "Uncalibrated Gyroscope sensor",
+ "Uncalibrated Geomagnetic sensor",
+ "Gyroscope-based rotation vector sensor",
+ "Geomagnetic-based rotation vector sensor",
+ "Significant motion sensor",
+ "Heart-rate monitor batch sensor",
+ "Green LED of HRM batch sensor",
+ "Pedometer",
+ "Sleep monitor",
+ "Sleep detector"
+};
+
+const char *sensor_alias[] = {
+ "ACCEL",
+ "GRAVITY",
+ "LINEAR_ACCEL",
+ "MAGNET",
+ "ROTATION",
+ "ORIENTATION",
+ "GYRO",
+ "LIGHT",
+ "PROXIMITY",
+ "PRESSURE",
+ "UV",
+ "TEMP",
+ "HUMIDITY",
+ "HRM",
+ "GREEN_HRM",
+ "IR_HRM",
+ "RED_HRM",
+ "UNCAL_GYRO",
+ "UNCAL_MAGNET",
+ "GYRO_ROTATION",
+ "MAGNET_ROTATION",
+ "MOTION",
+ "HRM_BATCH",
+ "GREEN_HRM_BATCH",
+ "PEDOMETER",
+ "SLEEP_MONITOR",
+ "SLEEP_DETECTOR"
+};
+
+// the number of value to be verified of the sensor
+const int value_num[] = {3, 3, 3, 3, 4, 3, 3, 1, 1, 3, 1, 1, 1, 1, 1, 1, 1, 6, 6, 4, 4, 1, 1, 1, 3, 1};