From 52f700f18c9cfd0ed5370602c37473bda3a12baa Mon Sep 17 00:00:00 2001 From: "kibak.yoon" Date: Thu, 19 May 2016 16:11:49 +0900 Subject: [PATCH 01/16] sensord: terminate sensord if there is no sensor Change-Id: Ib4d2fe95691662fa8d750493b0c80067eaddd764 Signed-off-by: kibak.yoon --- src/server/main.cpp | 17 ++++++++++++++++- 1 file changed, 16 insertions(+), 1 deletion(-) diff --git a/src/server/main.cpp b/src/server/main.cpp index b136d69..d19c744 100644 --- a/src/server/main.cpp +++ b/src/server/main.cpp @@ -26,6 +26,8 @@ #define CAL_NODE_PATH "/sys/class/sensors/ssp_sensor/set_cal_data" #define SET_CAL 1 +#define TIMEOUT 10 + static void sig_term_handler(int signo, siginfo_t *info, void *data) { char proc_name[NAME_MAX]; @@ -73,6 +75,18 @@ static void set_cal_data(void) return; } +static gboolean terminate(gpointer data) +{ + std::vector sensors = sensor_loader::get_instance().get_sensors(ALL_SENSOR); + + if (sensors.size() == 0) { + _I("Terminating sensord.."); + server::get_instance().stop(); + } + + return FALSE; +} + int main(int argc, char *argv[]) { _I("Sensord started"); @@ -81,8 +95,9 @@ int main(int argc, char *argv[]) set_cal_data(); - /* TODO: loader has to be moved to server */ + /* TODO: loading sequence has to be moved to server */ sensor_loader::get_instance().load(); + g_timeout_add_seconds(TIMEOUT, terminate, NULL); server::get_instance().run(); server::get_instance().stop(); -- 2.7.4 From 02a0aef465e321e93a830243614625f9e8680952 Mon Sep 17 00:00:00 2001 From: "kibak.yoon" Date: Mon, 23 May 2016 13:57:24 +0900 Subject: [PATCH 02/16] sensord: remove unused configs in spec file - unused sensor compile flags - unused build require package Change-Id: I26915b6fed772e7c29deec3fb595fefb4db0e9a6 Signed-off-by: kibak.yoon --- packaging/sensord.spec | 24 +----------------------- 1 file changed, 1 insertion(+), 23 deletions(-) diff --git a/packaging/sensord.spec b/packaging/sensord.spec index d4eb4ef..4457a4f 100644 --- a/packaging/sensord.spec +++ b/packaging/sensord.spec @@ -18,23 +18,11 @@ BuildRequires: pkgconfig(libxml-2.0) BuildRequires: pkgconfig(glib-2.0) BuildRequires: pkgconfig(vconf) BuildRequires: pkgconfig(libsystemd-daemon) -BuildRequires: pkgconfig(capi-system-info) BuildRequires: pkgconfig(cynara-creds-socket) BuildRequires: pkgconfig(cynara-client) BuildRequires: pkgconfig(cynara-session) Requires: libsensord = %{version}-%{release} -%define auto_rotation_state ON -%define orientation_state OFF -%define gravity_state OFF -%define linear_accel_state OFF -%define rv_state OFF -%define geomagnetic_rv_state OFF -%define gaming_rv_state OFF -%define tilt_state OFF -%define gyroscope_uncal_state OFF -%define build_test_suite ON - %ifarch %{ix86} x86_64 %define BUILD_ARCH EMULATOR %endif @@ -65,7 +53,6 @@ Group: System/Development %description -n sensor-hal-devel Sensord HAL interface -%if %{build_test_suite} == "ON" %package -n sensor-test Summary: Sensord library Group: System/Testing @@ -73,19 +60,12 @@ Group: System/Testing %description -n sensor-test Sensor functional testing -%endif - %prep %setup -q - MAJORVER=`echo %{version} | awk 'BEGIN {FS="."}{print $1}'` cmake . -DCMAKE_INSTALL_PREFIX=%{_prefix} -DMAJORVER=${MAJORVER} -DFULLVER=%{version} \ - -DORIENTATION=%{orientation_state} -DGRAVITY=%{gravity_state} \ - -DLINEAR_ACCEL=%{linear_accel_state} -DRV=%{rv_state} \ - -DGEOMAGNETIC_RV=%{geomagnetic_rv_state} -DGAMING_RV=%{gaming_rv_state} \ - -DGYROSCOPE_UNCAL=%{gyroscope_uncal_state} -DAUTO_ROTATION=%{auto_rotation_state} \ - -DTILT=%{tilt_state} -DTEST_SUITE=%{build_test_suite} -DARCH=%{BUILD_ARCH} + -DARCH=%{BUILD_ARCH} %build make %{?jobs:-j%jobs} @@ -153,7 +133,6 @@ ln -sf %{_libdir}/libsensor.so.%{version} %{_libdir}/libsensor.so.1 %{_includedir}/sensor/sensor_hal_types.h %license LICENSE.APLv2 -%if %{build_test_suite} == "ON" %files -n sensor-test %defattr(-,root,root,-) %{_bindir}/api-test @@ -162,4 +141,3 @@ ln -sf %{_libdir}/libsensor.so.%{version} %{_libdir}/libsensor.so.1 %{_bindir}/multi-process-performance-test %{_bindir}/fusion-data-collection %license LICENSE.APLv2 -%endif -- 2.7.4 From 41b38c5e369791882b0164beaa477ee700e25889 Mon Sep 17 00:00:00 2001 From: "kibak.yoon" Date: Wed, 25 May 2016 13:27:26 +0900 Subject: [PATCH 03/16] sensord: add power save vconf for syncing with tizen 2.3 - in public, there is no power save vconf key - this patch is only for maintainance Change-Id: I327fd0dfe96a849ef24b344a60aab971228340d5 Signed-off-by: kibak.yoon --- src/client/client.cpp | 18 +++++++++++++++--- 1 file changed, 15 insertions(+), 3 deletions(-) diff --git a/src/client/client.cpp b/src/client/client.cpp index b9b99c1..e77b1b3 100644 --- a/src/client/client.cpp +++ b/src/client/client.cpp @@ -38,6 +38,10 @@ using std::vector; #define API __attribute__((visibility("default"))) #endif +#ifndef VCONFKEY_SETAPPL_PSMODE +#define VCONFKEY_SETAPPL_PSMODE "db/setting/psmode" +#endif + #define DEFAULT_INTERVAL POLL_10HZ_MS static cmutex lock; @@ -81,6 +85,7 @@ static void set_power_save_state_cb(void) g_power_save_state = get_power_save_state(); _D("power_save_state = [%d]", g_power_save_state); vconf_notify_key_changed(VCONFKEY_PM_STATE, power_save_state_cb, NULL); + vconf_notify_key_changed(VCONFKEY_SETAPPL_PSMODE, power_save_state_cb, NULL); } } @@ -94,6 +99,7 @@ static void unset_power_save_state_cb(void) if (g_power_save_state_cb_cnt == 0) { _D("Power save callback is unregistered"); vconf_ignore_key_changed(VCONFKEY_PM_STATE, power_save_state_cb); + vconf_ignore_key_changed(VCONFKEY_SETAPPL_PSMODE, power_save_state_cb); } } @@ -113,14 +119,20 @@ void clean_up(void) static int get_power_save_state(void) { + int err; int state = 0; - int pm_state; + int pm_state, ps_state; - vconf_get_int(VCONFKEY_PM_STATE, &pm_state); + err = vconf_get_int(VCONFKEY_PM_STATE, &pm_state); - if (pm_state == VCONFKEY_PM_STATE_LCDOFF) + if (!err && pm_state == VCONFKEY_PM_STATE_LCDOFF) state |= SENSOR_OPTION_ON_IN_SCREEN_OFF; + err = vconf_get_int(VCONFKEY_SETAPPL_PSMODE, &ps_state); + + if (!err && ps_state == SETTING_PSMODE_NORMAL) + state |= SENSOR_OPTION_ON_IN_POWERSAVE_MODE; + return state; } -- 2.7.4 From 7f38c1a44bce65ca524a05f6e15904beabc6cb1e Mon Sep 17 00:00:00 2001 From: "kibak.yoon" Date: Wed, 25 May 2016 14:34:47 +0900 Subject: [PATCH 04/16] sensord: move deprecated event types to sensor_deprecated.h - clean up sensor_types.h Change-Id: I41225fcb478d00fd780aa46cda2ff94c18ede5c9 Signed-off-by: kibak.yoon --- src/shared/sensor_deprecated.h | 153 +++++++++++++++++++++++++++++++++++++ src/shared/sensor_types.h | 166 ----------------------------------------- 2 files changed, 153 insertions(+), 166 deletions(-) diff --git a/src/shared/sensor_deprecated.h b/src/shared/sensor_deprecated.h index a9481a5..41a4092 100644 --- a/src/shared/sensor_deprecated.h +++ b/src/shared/sensor_deprecated.h @@ -25,6 +25,79 @@ extern "C" { #endif +// Sensor Event Types +enum event_types_t { + ACCELEROMETER_RAW_DATA_EVENT = (ACCELEROMETER_SENSOR << 16) | 0x0001, + ACCELEROMETER_UNPROCESSED_DATA_EVENT = (ACCELEROMETER_SENSOR << 16) | 0x0002, + + GYROSCOPE_RAW_DATA_EVENT = (GYROSCOPE_SENSOR << 16) | 0x0001, + GYROSCOPE_UNPROCESSED_DATA_EVENT = (GYROSCOPE_SENSOR << 16) | 0x0002, + + GEOMAGNETIC_RAW_DATA_EVENT = (GEOMAGNETIC_SENSOR << 16) | 0x0001, + GEOMAGNETIC_UNPROCESSED_DATA_EVENT = (GEOMAGNETIC_SENSOR << 16) | 0x0002, + + PROXIMITY_CHANGE_STATE_EVENT = (PROXIMITY_SENSOR << 16) | 0x0001, + PROXIMITY_STATE_EVENT = (PROXIMITY_SENSOR << 16) | 0x0002, + PROXIMITY_DISTANCE_DATA_EVENT = (PROXIMITY_SENSOR << 16) | 0x0003, + + PRESSURE_RAW_DATA_EVENT = (PRESSURE_SENSOR << 16) | 0x0001, + + TEMPERATURE_RAW_DATA_EVENT = (TEMPERATURE_SENSOR << 16) | 0x0001, + + LIGHT_LUX_DATA_EVENT = (LIGHT_SENSOR << 16) | 0x0001, + LIGHT_LEVEL_DATA_EVENT = (LIGHT_SENSOR << 16) | 0x0002, + LIGHT_CHANGE_LEVEL_EVENT = (LIGHT_SENSOR << 16) | 0x0003, + + ROTATION_VECTOR_RAW_DATA_EVENT = (ROTATION_VECTOR_SENSOR << 16) | 0x0001, + + RV_RAW_RAW_DATA_EVENT = (RV_RAW_SENSOR << 16) | 0x0001, + + ULTRAVIOLET_RAW_DATA_EVENT = (ULTRAVIOLET_SENSOR << 16) | 0x0001, + + AUTO_ROTATION_CHANGE_STATE_EVENT = (AUTO_ROTATION_SENSOR << 16) | 0x0001, + + BIO_LED_RED_RAW_DATA_EVENT = (BIO_LED_RED_SENSOR << 16) | 0x0001, + + GAMING_RV_RAW_DATA_EVENT = (GYROSCOPE_RV_SENSOR << 16) | 0x0001, + + GEOMAGNETIC_RV_RAW_DATA_EVENT = (GEOMAGNETIC_RV_SENSOR << 16) | 0x0001, + + GRAVITY_RAW_DATA_EVENT = (GRAVITY_SENSOR << 16) | 0x0001, + + LINEAR_ACCEL_RAW_DATA_EVENT = (LINEAR_ACCEL_SENSOR << 16) | 0x0001, + + MOTION_ENGINE_EVENT_SNAP = (MOTION_SENSOR << 16) | 0x0001, + MOTION_ENGINE_EVENT_SHAKE = (MOTION_SENSOR << 16) | 0x0002, + MOTION_ENGINE_EVENT_DOUBLETAP = (MOTION_SENSOR << 16) | 0x0004, + MOTION_ENGINE_EVENT_PANNING = (MOTION_SENSOR << 16) | 0x0008, + MOTION_ENGINE_EVENT_TOP_TO_BOTTOM = (MOTION_SENSOR << 16) | 0x0010, + MOTION_ENGINE_EVENT_DIRECT_CALL = (MOTION_SENSOR << 16) | 0x0020, + MOTION_ENGINE_EVENT_TILT_TO_UNLOCK = (MOTION_SENSOR << 16) | 0x0040, + MOTION_ENGINE_EVENT_LOCK_EXECUTE_CAMERA = (MOTION_SENSOR << 16) | 0x0080, + MOTION_ENGINE_EVENT_SMART_ALERT = (MOTION_SENSOR << 16) | 0x0100, + MOTION_ENGINE_EVENT_TILT = (MOTION_SENSOR << 16) | 0x0200, + MOTION_ENGINE_EVENT_PANNING_BROWSE = (MOTION_SENSOR << 16) | 0x0400, + MOTION_ENGINE_EVENT_NO_MOVE = (MOTION_SENSOR << 16) | 0x0800, + MOTION_ENGINE_EVENT_SHAKE_ALWAYS_ON = (MOTION_SENSOR << 16) | 0x1000, + MOTION_ENGINE_EVENT_SMART_RELAY = (MOTION_SENSOR << 16) | 0x2000, + + ORIENTATION_RAW_DATA_EVENT = (ORIENTATION_SENSOR << 16) | 0x0001, + + TILT_RAW_DATA_EVENT = (TILT_SENSOR << 16) | 0x0001, + + GYROSCOPE_UNCAL_RAW_DATA_EVENT = (GYROSCOPE_UNCAL_SENSOR << 16) | 0x0001, + + FUSION_EVENT = (FUSION_SENSOR << 16) | 0x0001, + FUSION_GYROSCOPE_UNCAL_EVENT = (FUSION_SENSOR << 16) | 0x0002, + FUSION_CALIBRATION_NEEDED_EVENT = (FUSION_SENSOR << 16) | 0x0003, + FUSION_ORIENTATION_ENABLED = (FUSION_SENSOR << 16) | 0x0004, + FUSION_ROTATION_VECTOR_ENABLED = (FUSION_SENSOR << 16) | 0x0005, + FUSION_GAMING_ROTATION_VECTOR_ENABLED = (FUSION_SENSOR << 16) | 0x0006, + FUSION_GEOMAGNETIC_ROTATION_VECTOR_ENABLED = (FUSION_SENSOR << 16) | 0x0007, + FUSION_TILT_ENABLED = (FUSION_SENSOR << 16) | 0x0008, + FUSION_GYROSCOPE_UNCAL_ENABLED = (FUSION_SENSOR << 16) | 0x0009, +}; + #define CALIBRATION_EVENT(sensor_type) (((sensor_type) << 16) | 0x2) #define ACCELEROMETER_EVENT_ROTATION_CHECK ((ACCELEROMETER_SENSOR << 16) | 0x0100) @@ -100,6 +173,86 @@ enum accelerometer_rotate_state { ROTATION_EVENT_270 = 4, }; +enum motion_snap_event { + MOTION_ENGIEN_SNAP_NONE = 0, + MOTION_ENGIEN_NEGATIVE_SNAP_X = 1, + MOTION_ENGIEN_POSITIVE_SNAP_X = 2, + MOTION_ENGIEN_NEGATIVE_SNAP_Y = 3, + MOTION_ENGIEN_POSITIVE_SNAP_Y = 4, + MOTION_ENGIEN_NEGATIVE_SNAP_Z = 5, + MOTION_ENGIEN_POSITIVE_SNAP_Z = 6, + MOTION_ENGIEN_SNAP_LEFT = MOTION_ENGIEN_NEGATIVE_SNAP_X, + MOTION_ENGIEN_SNAP_RIGHT = MOTION_ENGIEN_POSITIVE_SNAP_X, + MOTION_ENGINE_SNAP_NONE = 0, + MOTION_ENGINE_NEGATIVE_SNAP_X = 1, + MOTION_ENGINE_POSITIVE_SNAP_X = 2, + MOTION_ENGINE_NEGATIVE_SNAP_Y = 3, + MOTION_ENGINE_POSITIVE_SNAP_Y = 4, + MOTION_ENGINE_NEGATIVE_SNAP_Z = 5, + MOTION_ENGINE_POSITIVE_SNAP_Z = 6, + MOTION_ENGINE_SNAP_LEFT = MOTION_ENGINE_NEGATIVE_SNAP_X, + MOTION_ENGINE_SNAP_RIGHT = MOTION_ENGINE_POSITIVE_SNAP_X, +}; + +enum motion_shake_event { + MOTION_ENGIEN_SHAKE_NONE = 0, + MOTION_ENGIEN_SHAKE_DETECTION = 1, + MOTION_ENGIEN_SHAKE_CONTINUING = 2, + MOTION_ENGIEN_SHAKE_FINISH = 3, + MOTION_ENGINE_SHAKE_BREAK = 4, + MOTION_ENGINE_SHAKE_NONE = 0, + MOTION_ENGINE_SHAKE_DETECTION = 1, + MOTION_ENGINE_SHAKE_CONTINUING = 2, + MOTION_ENGINE_SHAKE_FINISH = 3, +}; + +enum motion_doubletap_event { + MOTION_ENGIEN_DOUBLTAP_NONE = 0, + MOTION_ENGIEN_DOUBLTAP_DETECTION = 1, + MOTION_ENGINE_DOUBLTAP_NONE = 0, + MOTION_ENGINE_DOUBLTAP_DETECTION = 1, +}; + +enum motion_top_to_bottom_event { + MOTION_ENGIEN_TOP_TO_BOTTOM_NONE = 0, + MOTION_ENGIEN_TOP_TO_BOTTOM_WAIT = 1, + MOTION_ENGIEN_TOP_TO_BOTTOM_DETECTION = 2, + MOTION_ENGINE_TOP_TO_BOTTOM_NONE = 0, + MOTION_ENGINE_TOP_TO_BOTTOM_WAIT = 1, + MOTION_ENGINE_TOP_TO_BOTTOM_DETECTION = 2, +}; + +enum motion_direct_call_event_t { + MOTION_ENGINE_DIRECT_CALL_NONE, + MOTION_ENGINE_DIRECT_CALL_DETECTION, +}; + +enum motion_smart_relay_event_t { + MOTION_ENGINE_SMART_RELAY_NONE, + MOTION_ENGINE_SMART_RELAY_DETECTION, +}; + +enum motion_tilt_to_unlock_event_t { + MOTION_ENGINE_TILT_TO_UNLOCK_NONE, + MOTION_ENGINE_TILT_TO_UNLOCK_DETECTION, +}; + +enum motion_lock_execute_camera_event_t { + MOTION_ENGINE_LOCK_EXECUTE_CAMERA_NONE, + MOTION_ENGINE_LOCK_EXECUTE_CAMERA_L_DETECTION, + MOTION_ENGINE_LOCK_EXECUTE_CAMERA_R_DETECTION, +}; + +enum motion_smart_alert_t { + MOTION_ENGINE_SMART_ALERT_NONE, + MOTION_ENGINE_SMART_ALERT_DETECTION, +}; + +enum motion_no_move_t { + MOTION_ENGINE_NO_MOVE_NONE, + MOTION_ENGINE_NO_MOVE_DETECTION, +}; + #ifdef __cplusplus } #endif diff --git a/src/shared/sensor_types.h b/src/shared/sensor_types.h index 6667684..cb8e65e 100644 --- a/src/shared/sensor_types.h +++ b/src/shared/sensor_types.h @@ -91,79 +91,6 @@ extern "C" DECLARE_SENSOR_ENUM(sensor_type_t, SENSOR_TYPE) -// Sensor Event Types -enum event_types_t { - ACCELEROMETER_RAW_DATA_EVENT = (ACCELEROMETER_SENSOR << 16) | 0x0001, - ACCELEROMETER_UNPROCESSED_DATA_EVENT = (ACCELEROMETER_SENSOR << 16) | 0x0002, - - GYROSCOPE_RAW_DATA_EVENT = (GYROSCOPE_SENSOR << 16) | 0x0001, - GYROSCOPE_UNPROCESSED_DATA_EVENT = (GYROSCOPE_SENSOR << 16) | 0x0002, - - GEOMAGNETIC_RAW_DATA_EVENT = (GEOMAGNETIC_SENSOR << 16) | 0x0001, - GEOMAGNETIC_UNPROCESSED_DATA_EVENT = (GEOMAGNETIC_SENSOR << 16) | 0x0002, - - PROXIMITY_CHANGE_STATE_EVENT = (PROXIMITY_SENSOR << 16) | 0x0001, - PROXIMITY_STATE_EVENT = (PROXIMITY_SENSOR << 16) | 0x0002, - PROXIMITY_DISTANCE_DATA_EVENT = (PROXIMITY_SENSOR << 16) | 0x0003, - - PRESSURE_RAW_DATA_EVENT = (PRESSURE_SENSOR << 16) | 0x0001, - - TEMPERATURE_RAW_DATA_EVENT = (TEMPERATURE_SENSOR << 16) | 0x0001, - - LIGHT_LUX_DATA_EVENT = (LIGHT_SENSOR << 16) | 0x0001, - LIGHT_LEVEL_DATA_EVENT = (LIGHT_SENSOR << 16) | 0x0002, - LIGHT_CHANGE_LEVEL_EVENT = (LIGHT_SENSOR << 16) | 0x0003, - - ROTATION_VECTOR_RAW_DATA_EVENT = (ROTATION_VECTOR_SENSOR << 16) | 0x0001, - - RV_RAW_RAW_DATA_EVENT = (RV_RAW_SENSOR << 16) | 0x0001, - - ULTRAVIOLET_RAW_DATA_EVENT = (ULTRAVIOLET_SENSOR << 16) | 0x0001, - - AUTO_ROTATION_CHANGE_STATE_EVENT = (AUTO_ROTATION_SENSOR << 16) | 0x0001, - - BIO_LED_RED_RAW_DATA_EVENT = (BIO_LED_RED_SENSOR << 16) | 0x0001, - - GAMING_RV_RAW_DATA_EVENT = (GYROSCOPE_RV_SENSOR << 16) | 0x0001, - - GEOMAGNETIC_RV_RAW_DATA_EVENT = (GEOMAGNETIC_RV_SENSOR << 16) | 0x0001, - - GRAVITY_RAW_DATA_EVENT = (GRAVITY_SENSOR << 16) | 0x0001, - - LINEAR_ACCEL_RAW_DATA_EVENT = (LINEAR_ACCEL_SENSOR << 16) | 0x0001, - - MOTION_ENGINE_EVENT_SNAP = (MOTION_SENSOR << 16) | 0x0001, - MOTION_ENGINE_EVENT_SHAKE = (MOTION_SENSOR << 16) | 0x0002, - MOTION_ENGINE_EVENT_DOUBLETAP = (MOTION_SENSOR << 16) | 0x0004, - MOTION_ENGINE_EVENT_PANNING = (MOTION_SENSOR << 16) | 0x0008, - MOTION_ENGINE_EVENT_TOP_TO_BOTTOM = (MOTION_SENSOR << 16) | 0x0010, - MOTION_ENGINE_EVENT_DIRECT_CALL = (MOTION_SENSOR << 16) | 0x0020, - MOTION_ENGINE_EVENT_TILT_TO_UNLOCK = (MOTION_SENSOR << 16) | 0x0040, - MOTION_ENGINE_EVENT_LOCK_EXECUTE_CAMERA = (MOTION_SENSOR << 16) | 0x0080, - MOTION_ENGINE_EVENT_SMART_ALERT = (MOTION_SENSOR << 16) | 0x0100, - MOTION_ENGINE_EVENT_TILT = (MOTION_SENSOR << 16) | 0x0200, - MOTION_ENGINE_EVENT_PANNING_BROWSE = (MOTION_SENSOR << 16) | 0x0400, - MOTION_ENGINE_EVENT_NO_MOVE = (MOTION_SENSOR << 16) | 0x0800, - MOTION_ENGINE_EVENT_SHAKE_ALWAYS_ON = (MOTION_SENSOR << 16) | 0x1000, - MOTION_ENGINE_EVENT_SMART_RELAY = (MOTION_SENSOR << 16) | 0x2000, - - ORIENTATION_RAW_DATA_EVENT = (ORIENTATION_SENSOR << 16) | 0x0001, - - TILT_RAW_DATA_EVENT = (TILT_SENSOR << 16) | 0x0001, - - GYROSCOPE_UNCAL_RAW_DATA_EVENT = (GYROSCOPE_UNCAL_SENSOR << 16) | 0x0001, - - FUSION_EVENT = (FUSION_SENSOR << 16) | 0x0001, - FUSION_GYROSCOPE_UNCAL_EVENT = (FUSION_SENSOR << 16) | 0x0002, - FUSION_CALIBRATION_NEEDED_EVENT = (FUSION_SENSOR << 16) | 0x0003, - FUSION_ORIENTATION_ENABLED = (FUSION_SENSOR << 16) | 0x0004, - FUSION_ROTATION_VECTOR_ENABLED = (FUSION_SENSOR << 16) | 0x0005, - FUSION_GAMING_ROTATION_VECTOR_ENABLED = (FUSION_SENSOR << 16) | 0x0006, - FUSION_GEOMAGNETIC_ROTATION_VECTOR_ENABLED = (FUSION_SENSOR << 16) | 0x0007, - FUSION_TILT_ENABLED = (FUSION_SENSOR << 16) | 0x0008, - FUSION_GYROSCOPE_UNCAL_ENABLED = (FUSION_SENSOR << 16) | 0x0009, -}; - enum proxi_change_state { PROXIMITY_STATE_NEAR = 0, PROXIMITY_STATE_FAR = 1, @@ -177,99 +104,6 @@ enum auto_rotation_state { AUTO_ROTATION_DEGREE_270, }; -enum motion_snap_event { - MOTION_ENGIEN_SNAP_NONE = 0, - MOTION_ENGIEN_NEGATIVE_SNAP_X = 1, - MOTION_ENGIEN_POSITIVE_SNAP_X = 2, - MOTION_ENGIEN_NEGATIVE_SNAP_Y = 3, - MOTION_ENGIEN_POSITIVE_SNAP_Y = 4, - MOTION_ENGIEN_NEGATIVE_SNAP_Z = 5, - MOTION_ENGIEN_POSITIVE_SNAP_Z = 6, - MOTION_ENGIEN_SNAP_LEFT = MOTION_ENGIEN_NEGATIVE_SNAP_X, - MOTION_ENGIEN_SNAP_RIGHT = MOTION_ENGIEN_POSITIVE_SNAP_X, - MOTION_ENGINE_SNAP_NONE = 0, - MOTION_ENGINE_NEGATIVE_SNAP_X = 1, - MOTION_ENGINE_POSITIVE_SNAP_X = 2, - MOTION_ENGINE_NEGATIVE_SNAP_Y = 3, - MOTION_ENGINE_POSITIVE_SNAP_Y = 4, - MOTION_ENGINE_NEGATIVE_SNAP_Z = 5, - MOTION_ENGINE_POSITIVE_SNAP_Z = 6, - MOTION_ENGINE_SNAP_LEFT = MOTION_ENGINE_NEGATIVE_SNAP_X, - MOTION_ENGINE_SNAP_RIGHT = MOTION_ENGINE_POSITIVE_SNAP_X, -}; - -enum motion_shake_event { - MOTION_ENGIEN_SHAKE_NONE = 0, - MOTION_ENGIEN_SHAKE_DETECTION = 1, - MOTION_ENGIEN_SHAKE_CONTINUING = 2, - MOTION_ENGIEN_SHAKE_FINISH = 3, - MOTION_ENGINE_SHAKE_BREAK = 4, - MOTION_ENGINE_SHAKE_NONE = 0, - MOTION_ENGINE_SHAKE_DETECTION = 1, - MOTION_ENGINE_SHAKE_CONTINUING = 2, - MOTION_ENGINE_SHAKE_FINISH = 3, -}; - -enum motion_doubletap_event { - MOTION_ENGIEN_DOUBLTAP_NONE = 0, - MOTION_ENGIEN_DOUBLTAP_DETECTION = 1, - MOTION_ENGINE_DOUBLTAP_NONE = 0, - MOTION_ENGINE_DOUBLTAP_DETECTION = 1, -}; - -enum motion_top_to_bottom_event { - MOTION_ENGIEN_TOP_TO_BOTTOM_NONE = 0, - MOTION_ENGIEN_TOP_TO_BOTTOM_WAIT = 1, - MOTION_ENGIEN_TOP_TO_BOTTOM_DETECTION = 2, - MOTION_ENGINE_TOP_TO_BOTTOM_NONE = 0, - MOTION_ENGINE_TOP_TO_BOTTOM_WAIT = 1, - MOTION_ENGINE_TOP_TO_BOTTOM_DETECTION = 2, -}; - -enum motion_direct_call_event_t { - MOTION_ENGINE_DIRECT_CALL_NONE, - MOTION_ENGINE_DIRECT_CALL_DETECTION, -}; - -enum motion_smart_relay_event_t { - MOTION_ENGINE_SMART_RELAY_NONE, - MOTION_ENGINE_SMART_RELAY_DETECTION, -}; - -enum motion_tilt_to_unlock_event_t { - MOTION_ENGINE_TILT_TO_UNLOCK_NONE, - MOTION_ENGINE_TILT_TO_UNLOCK_DETECTION, -}; - -enum motion_lock_execute_camera_event_t { - MOTION_ENGINE_LOCK_EXECUTE_CAMERA_NONE, - MOTION_ENGINE_LOCK_EXECUTE_CAMERA_L_DETECTION, - MOTION_ENGINE_LOCK_EXECUTE_CAMERA_R_DETECTION, -}; - -enum motion_smart_alert_t { - MOTION_ENGINE_SMART_ALERT_NONE, - MOTION_ENGINE_SMART_ALERT_DETECTION, -}; - -enum motion_no_move_t { - MOTION_ENGINE_NO_MOVE_NONE, - MOTION_ENGINE_NO_MOVE_DETECTION, -}; - -enum motion_property_id { - MOTION_PROPERTY_UNKNOWN = 0, - MOTION_PROPERTY_CHECK_ACCEL_SENSOR, - MOTION_PROPERTY_CHECK_GYRO_SENSOR, - MOTION_PROPERTY_CHECK_GEO_SENSOR, - MOTION_PROPERTY_CHECK_PRIXI_SENSOR, - MOTION_PROPERTY_CHECK_LIGHT_SENSOR, - MOTION_PROPERTY_CHECK_BARO_SENSOR, - MOTION_PROPERTY_LCD_TOUCH_ON, - MOTION_PROPERTY_LCD_TOUCH_OFF, - MOTION_PROPERTY_CHECK_GYRO_CAL_STATUS, -}; - #ifdef __cplusplus } #endif -- 2.7.4 From cc8a4379634ead1ec90824249f7079e3bfedadaf Mon Sep 17 00:00:00 2001 From: "kibak.yoon" Date: Wed, 25 May 2016 14:44:02 +0900 Subject: [PATCH 05/16] sensord: fix build warning because of using g_type_init() - g_type_init() should be called under glib version 2.36 Change-Id: I5291cd4ea92168ddba0a961c0f24631cc2265dfb Signed-off-by: kibak.yoon --- src/server/dbus_util.cpp | 2 ++ 1 file changed, 2 insertions(+) diff --git a/src/server/dbus_util.cpp b/src/server/dbus_util.cpp index df1ade0..c29b61d 100755 --- a/src/server/dbus_util.cpp +++ b/src/server/dbus_util.cpp @@ -143,7 +143,9 @@ void reset_total_count(void) void init_dbus(void) { +#ifndef GLIB_VERSION_2_36 g_type_init(); +#endif introspection_data = g_dbus_node_info_new_for_xml(introspection_xml, NULL); if (introspection_data == NULL) { -- 2.7.4 From e93b462a0a9e10411876ef5f4a12e50dea3c7aaf Mon Sep 17 00:00:00 2001 From: "kibak.yoon" Date: Wed, 25 May 2016 17:53:40 +0900 Subject: [PATCH 06/16] sensord: initialize dbus when sensord is launched Change-Id: Ie8563a7892cdb70ef01d29b329daa85f1ea47281 Signed-off-by: kibak.yoon --- src/server/main.cpp | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/src/server/main.cpp b/src/server/main.cpp index d19c744..e3e9f73 100644 --- a/src/server/main.cpp +++ b/src/server/main.cpp @@ -20,6 +20,7 @@ #include #include #include +#include #include #include @@ -93,6 +94,8 @@ int main(int argc, char *argv[]) signal_init(); + init_dbus(); + set_cal_data(); /* TODO: loading sequence has to be moved to server */ @@ -102,7 +105,8 @@ int main(int argc, char *argv[]) server::get_instance().run(); server::get_instance().stop(); - _I("Sensord terminated"); + fini_dbus(); + _I("Sensord terminated"); return 0; } -- 2.7.4 From 45fe7451b4c008fb012e860ab2b07eca1cd59ae9 Mon Sep 17 00:00:00 2001 From: "kibak.yoon" Date: Wed, 25 May 2016 17:56:46 +0900 Subject: [PATCH 07/16] sensord: add null check when sensor event is pushed to event queue if event or data is null, it is unnecessary to push event Change-Id: If7e28e3531f59dd30d5d9f0d14e46662c340ca45 Signed-off-by: kibak.yoon --- src/server/sensor_base.cpp | 3 +++ 1 file changed, 3 insertions(+) diff --git a/src/server/sensor_base.cpp b/src/server/sensor_base.cpp index b06b2f3..dd78a2a 100644 --- a/src/server/sensor_base.cpp +++ b/src/server/sensor_base.cpp @@ -297,6 +297,9 @@ void sensor_base::set_permission(int permission) bool sensor_base::push(sensor_event_t *event) { + if (!event || !(event->data)) + return false; + set_cache(event->data); AUTOLOCK(m_client_mutex); -- 2.7.4 From 4ec6c0b129c1068c956ecbd680d189508a8137cb Mon Sep 17 00:00:00 2001 From: "kibak.yoon" Date: Wed, 25 May 2016 17:58:02 +0900 Subject: [PATCH 08/16] sensord: change error log macro from ERR to _E for code unity Change-Id: I2498ce26cbd92a39ef72e5ca2832e6035dec0072 Signed-off-by: kibak.yoon --- src/server/server.cpp | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/src/server/server.cpp b/src/server/server.cpp index 684b265..9b649ad 100644 --- a/src/server/server.cpp +++ b/src/server/server.cpp @@ -234,18 +234,18 @@ bool server::listen_command_channel(void) INFO("Failed to get systemd socket, create it by myself!"); if (!m_command_channel_accept_socket.create(SOCK_STREAM)) { - ERR("Failed to create command channel"); + _E("Failed to create command channel"); return false; } if (!m_command_channel_accept_socket.bind(COMMAND_CHANNEL_PATH)) { - ERR("Failed to bind command channel"); + _E("Failed to bind command channel"); m_command_channel_accept_socket.close(); return false; } if (!m_command_channel_accept_socket.listen(MAX_PENDING_CONNECTION)) { - ERR("Failed to listen command channel"); + _E("Failed to listen command channel"); return false; } @@ -268,18 +268,18 @@ bool server::listen_event_channel(void) INFO("Failed to get systemd socket, create it by myself!"); if (!m_event_channel_accept_socket.create(SOCK_SEQPACKET)) { - ERR("Failed to create event channel"); + _E("Failed to create event channel"); return false; } if (!m_event_channel_accept_socket.bind(EVENT_CHANNEL_PATH)) { - ERR("Failed to bind event channel"); + _E("Failed to bind event channel"); m_event_channel_accept_socket.close(); return false; } if (!m_event_channel_accept_socket.listen(MAX_PENDING_CONNECTION)) { - ERR("Failed to listen event channel"); + _E("Failed to listen event channel"); m_event_channel_accept_socket.close(); return false; } -- 2.7.4 From 7863c4a857f056b2eb489593e97c97d9d13a9795 Mon Sep 17 00:00:00 2001 From: "kibak.yoon" Date: Wed, 25 May 2016 18:23:22 +0900 Subject: [PATCH 09/16] sensord: remove EVENT_TYPE_SHIFT macro in sensor_log.h - they are duplicated macro, so remove them. Change-Id: I1a635c7b49657229da2edf539a3f183033d4de64 Signed-off-by: kibak.yoon --- src/client/client_common.cpp | 5 +++-- src/shared/sensor_log.h | 3 --- 2 files changed, 3 insertions(+), 5 deletions(-) diff --git a/src/client/client_common.cpp b/src/client/client_common.cpp index ce0eab2..a91dbb0 100644 --- a/src/client/client_common.cpp +++ b/src/client/client_common.cpp @@ -17,6 +17,7 @@ * */ #include +#include #include #include #include @@ -40,7 +41,7 @@ const char* get_sensor_name(sensor_id_t id) const char* get_event_name(unsigned int event_type) { - sensor_type_t type = (sensor_type_t) (event_type >> EVENT_TYPE_SHIFT); + sensor_type_t type = (sensor_type_t) (event_type >> SENSOR_EVENT_SHIFT); std::string name(util_sensor_type_t::get_string(type)); return name.append("_EVENT").c_str(); @@ -48,7 +49,7 @@ const char* get_event_name(unsigned int event_type) unsigned int get_calibration_event_type(unsigned int event_type) { - sensor_type_t type = (sensor_type_t)(event_type >> EVENT_TYPE_SHIFT); + sensor_type_t type = (sensor_type_t)(event_type >> SENSOR_EVENT_SHIFT); switch (type) { case GEOMAGNETIC_SENSOR: diff --git a/src/shared/sensor_log.h b/src/shared/sensor_log.h index d478e07..22d1d7d 100644 --- a/src/shared/sensor_log.h +++ b/src/shared/sensor_log.h @@ -23,9 +23,6 @@ #include #include -#define EVENT_TYPE_SHIFT 16 -#define SENSOR_TYPE_SHIFT 32 - #define MICROSECONDS(tv) ((tv.tv_sec * 1000000ll) + tv.tv_usec) #ifdef LOG_TAG -- 2.7.4 From 1ced21e7b94e30b57b93803b19debfa38ca35fcb Mon Sep 17 00:00:00 2001 From: "kibak.yoon" Date: Wed, 25 May 2016 23:12:05 +0900 Subject: [PATCH 10/16] sensord: change the log level from _E to _I - this state is not error Change-Id: I9f294f14e6071f7cab8f40eaf8d296fd836a57a9 Signed-off-by: kibak.yoon --- src/sensor/accel/accel_sensor.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/sensor/accel/accel_sensor.cpp b/src/sensor/accel/accel_sensor.cpp index 3470850..892ecb0 100644 --- a/src/sensor/accel/accel_sensor.cpp +++ b/src/sensor/accel/accel_sensor.cpp @@ -23,7 +23,7 @@ accel_sensor::accel_sensor() { - _E("accel_sensor is created : %#x", this); + _I("accel_sensor is created : %#x", this); } accel_sensor::~accel_sensor() -- 2.7.4 From fd9c129f5af7769c37082c2628bf5016b041c430 Mon Sep 17 00:00:00 2001 From: "kibak.yoon" Date: Wed, 25 May 2016 23:12:55 +0900 Subject: [PATCH 11/16] sensord: remove unused APIs - there is no module which uses these APIs - sf_check_rotation is used in xwalk.... Change-Id: I3c462da847015f54f3aa1d573a7380342f941205 Signed-off-by: kibak.yoon --- src/client/client_deprecated.cpp | 10 ---------- src/client/sensor_internal_deprecated.h | 28 ++-------------------------- 2 files changed, 2 insertions(+), 36 deletions(-) diff --git a/src/client/client_deprecated.cpp b/src/client/client_deprecated.cpp index 38cf33f..e721bed 100644 --- a/src/client/client_deprecated.cpp +++ b/src/client/client_deprecated.cpp @@ -82,13 +82,3 @@ API int sf_is_sensor_event_available(sensor_type_t sensor_type, unsigned int eve { return OP_ERROR; } - -API int sf_get_data_properties(unsigned int data_id, sensor_data_properties_t *return_data_properties) -{ - return OP_ERROR; -} - -API int sf_get_properties(sensor_type_t sensor_type, sensor_properties_t *return_properties) -{ - return OP_ERROR; -} diff --git a/src/client/sensor_internal_deprecated.h b/src/client/sensor_internal_deprecated.h index d74cab8..a2b5b30 100644 --- a/src/client/sensor_internal_deprecated.h +++ b/src/client/sensor_internal_deprecated.h @@ -38,8 +38,6 @@ extern "C" { #endif -#define MAX_KEY_LEN 30 - typedef struct { condition_op_t cond_op; float cond_value1; @@ -59,30 +57,6 @@ typedef struct { int z; } sensor_panning_data_t; -typedef struct { - int sensor_unit_idx; - float sensor_min_range; - float sensor_max_range; - float sensor_resolution; - char sensor_name[MAX_KEY_LEN]; - char sensor_vendor[MAX_KEY_LEN]; -} sensor_properties_t; - -typedef struct { - int sensor_unit_idx; - float sensor_min_range; - float sensor_max_range; - float sensor_resolution; -} sensor_data_properties_t; - -DEPRECATED int sf_is_sensor_event_available(sensor_type_t sensor_type, unsigned int event_type); - -DEPRECATED int sf_get_data_properties(unsigned int data_id, sensor_data_properties_t *return_data_properties); - -DEPRECATED int sf_get_properties(sensor_type_t sensor_type, sensor_properties_t *return_properties); - -DEPRECATED int sf_check_rotation(unsigned long *rotation); - /** * @fn int sf_connect(sensor_type_t sensor) * @brief This API connects a sensor type to respective sensor. The application calls with the type of the sensor (ex. ACCELEROMETER_SENSOR) and on basis of that server takes decision of which plug-in to be connected. Once sensor connected application can proceed for data processing. This API returns a positive handle which should be used by application to communicate on sensor type. @@ -177,6 +151,8 @@ DEPRECATED int sf_change_sensor_option(int handle, int option); */ DEPRECATED int sf_send_sensorhub_data(int handle, const char* data, int data_len); +DEPRECATED int sf_check_rotation(unsigned long *rotation); + #ifdef __cplusplus } #endif -- 2.7.4 From df00850a3de2f89fbfd61d12ab61295d8e2ff0d1 Mon Sep 17 00:00:00 2001 From: "kibak.yoon" Date: Wed, 25 May 2016 23:20:03 +0900 Subject: [PATCH 12/16] sensord: clean up permission_checker for syncing with tizen_2.3 - in tizen 2.3, there is another security module, security_server. - clean up permission_checker for converting it easily Change-Id: I4489849fbb4e8178058e1b1d403dde99c402b0bd Signed-off-by: kibak.yoon --- src/server/permission_checker.cpp | 34 ++++++++++++++++------------------ src/server/permission_checker.h | 12 +++++++----- 2 files changed, 23 insertions(+), 23 deletions(-) diff --git a/src/server/permission_checker.cpp b/src/server/permission_checker.cpp index 72fef47..3da9ac6 100644 --- a/src/server/permission_checker.cpp +++ b/src/server/permission_checker.cpp @@ -21,15 +21,17 @@ #include #include #include +#include #include #include #include +#include #define CACHE_SIZE 16 static cynara *cynara_env = NULL; -static bool check_privilege_by_sockfd(int sock_fd, const char *priv) +static bool check_privilege_by_sockfd(int sock_fd, const char *priv, const char *access) { retvm_if(cynara_env == NULL, false, "Cynara not initialized"); @@ -60,15 +62,16 @@ static bool check_privilege_by_sockfd(int sock_fd, const char *priv) return (ret == CYNARA_API_ACCESS_ALLOWED); } -permission_checker::permission_checker(void) +permission_checker::permission_checker() : m_permission_set(0) { init(); + init_cynara(); } -permission_checker::~permission_checker(void) +permission_checker::~permission_checker() { - deinit(); + deinit_cynara(); } permission_checker& permission_checker::get_instance(void) @@ -79,10 +82,7 @@ permission_checker& permission_checker::get_instance(void) void permission_checker::init(void) { - AUTOLOCK(m_mutex); - - m_permission_infos.push_back(std::make_shared (SENSOR_PERMISSION_STANDARD, false, "")); - m_permission_infos.push_back(std::make_shared (SENSOR_PERMISSION_BIO, true, "http://tizen.org/privilege/healthinfo")); + m_permission_infos.push_back(std::make_shared(SENSOR_PERMISSION_BIO, "http://tizen.org/privilege/healthinfo", "")); std::vector sensors; sensors = sensor_loader::get_instance().get_sensors(ALL_SENSOR); @@ -91,12 +91,12 @@ void permission_checker::init(void) m_permission_set |= sensors[i]->get_permission(); _I("Permission Set = %d", m_permission_set); - - init_cynara(); } void permission_checker::init_cynara(void) { + AUTOLOCK(m_mutex); + cynara_configuration *conf; int err = cynara_configuration_create(&conf); @@ -121,7 +121,7 @@ void permission_checker::init_cynara(void) _I("Cynara initialized"); } -void permission_checker::deinit(void) +void permission_checker::deinit_cynara(void) { AUTOLOCK(m_mutex); @@ -135,16 +135,14 @@ int permission_checker::get_permission(int sock_fd) { AUTOLOCK(m_mutex); - int permission = SENSOR_PERMISSION_NONE; + int permission = SENSOR_PERMISSION_STANDARD; for (unsigned int i = 0; i < m_permission_infos.size(); ++i) { - if (!m_permission_infos[i]->need_to_check) { + if (!(m_permission_set & m_permission_infos[i]->permission)) + continue; + + if (check_privilege_by_sockfd(sock_fd, m_permission_infos[i]->privilege.c_str(), m_permission_infos[i]->access.c_str())) permission |= m_permission_infos[i]->permission; - } else if (m_permission_set & m_permission_infos[i]->permission) { - if (check_privilege_by_sockfd(sock_fd, m_permission_infos[i]->privilege.c_str())) { - permission |= m_permission_infos[i]->permission; - } - } } return permission; diff --git a/src/server/permission_checker.h b/src/server/permission_checker.h index d47524d..d42ba09 100644 --- a/src/server/permission_checker.h +++ b/src/server/permission_checker.h @@ -34,33 +34,35 @@ public: private: class permission_info { public: - permission_info(int _permission, bool _need_to_check, std::string _priv) + permission_info(int _permission, std::string _priv, std::string _access) : permission(_permission) - , need_to_check(_need_to_check) , privilege(_priv) + , access(_access) { } int permission; - bool need_to_check; std::string privilege; + std::string access; }; typedef std::vector> permission_info_vector; permission_checker(); - ~permission_checker(); permission_checker(permission_checker const&) {}; permission_checker& operator=(permission_checker const&); + ~permission_checker(); + void init(void); - void deinit(void); private: permission_info_vector m_permission_infos; int m_permission_set; cmutex m_mutex; +private: void init_cynara(void); + void deinit_cynara(void); }; #endif /* _PERMISSION_CHECKER_H_ */ -- 2.7.4 From 887697234acea07dbb6c31a1803ea871f7c7cbda Mon Sep 17 00:00:00 2001 From: "kibak.yoon" Date: Thu, 26 May 2016 00:15:26 +0900 Subject: [PATCH 13/16] sensord: fix double free problem after the allocation of memory is failed - if the allocation of memory is failed, this function has to be finished. Change-Id: Iea3ca9184812a82b34b3ad3bd299b2d33a382323 Signed-off-by: kibak.yoon --- src/client/external_sensor_manager.cpp | 1 + 1 file changed, 1 insertion(+) diff --git a/src/client/external_sensor_manager.cpp b/src/client/external_sensor_manager.cpp index e19b403..9a0b3c4 100644 --- a/src/client/external_sensor_manager.cpp +++ b/src/client/external_sensor_manager.cpp @@ -430,6 +430,7 @@ void external_sensor_manager::handle_command(sensor_id_t sensor, char* data, int if (!cb_info) { _E("Failed to allocate memory"); delete[] data; + return; } if (!get_cb_info(sensor, data, data_cnt, *cb_info)) { -- 2.7.4 From 1f5abbbbf44de95493bb42ba001a26ec809ff60a Mon Sep 17 00:00:00 2001 From: "kibak.yoon" Date: Mon, 30 May 2016 19:12:01 +0900 Subject: [PATCH 14/16] sensord: move udev rules to HAL packages - there are some devices which doesn't have sensorhub, e.g. TM1. - so udev rules should be moved to HAL packages Change-Id: Ib0c7b36fdf9973b1b72e0cdda5b897351fc8b514 Signed-off-by: kibak.yoon --- packaging/99-sensor.rules | 13 ------------- packaging/99-sensorhub.rules | 5 ----- packaging/sensord.spec | 7 ------- 3 files changed, 25 deletions(-) delete mode 100644 packaging/99-sensor.rules delete mode 100644 packaging/99-sensorhub.rules diff --git a/packaging/99-sensor.rules b/packaging/99-sensor.rules deleted file mode 100644 index 3d07132..0000000 --- a/packaging/99-sensor.rules +++ /dev/null @@ -1,13 +0,0 @@ -SUBSYSTEM!="input", GOTO="sensor_rules_end" -ENV{ID_INPUT_TOUCHPAD}=="1", GOTO="sensor_rules_end" -ENV{ID_INPUT_TOUCHSCREEN}=="1", GOTO="sensor_rules_end" -ENV{ID_INPUT_KEY}=="1", GOTO="sensor_rules_end" -ENV{ID_INPUT_KEYPAD}=="1", GOTO="sensor_rules_end" -ENV{ID_INPUT_KEYBOARD}=="1", GOTO="sensor_rules_end" -ENV{ID_INPUT_MOUSE}=="1", GOTO="sensor_rules_end" -ENV{ID_INPUT_JOYSTICK}=="1", GOTO="sensor_rules_end" - -SUBSYSTEM=="input", ACTION=="add", RUN+="/bin/chown sensor:input %S/%p/enable %S/%p/poll_delay" -SUBSYSTEM=="input", ACTION=="add", RUN+="/bin/chsmack -a * %S/%p/enable %S/%p/poll_delay" - -LABEL="sensor_rules_end" diff --git a/packaging/99-sensorhub.rules b/packaging/99-sensorhub.rules deleted file mode 100644 index ae4b350..0000000 --- a/packaging/99-sensorhub.rules +++ /dev/null @@ -1,5 +0,0 @@ -SUBSYSTEMS=="sensors", DEVPATH=="*ssp_sensor*", \ -RUN+="/bin/sh -c '/bin/chown :input %S/%p/enable %S/%p/set_cal_data %S/%p/*_poll_delay'" - -SUBSYSTEMS=="sensors", DEVPATH=="*ssp_sensor*", \ -RUN+="/bin/sh -c '/bin/chsmack -a \* %S/%p/enable %S/%p/set_cal_data %S/%p/*_poll_delay'" diff --git a/packaging/sensord.spec b/packaging/sensord.spec index 4457a4f..e743bc9 100644 --- a/packaging/sensord.spec +++ b/packaging/sensord.spec @@ -8,8 +8,6 @@ Source0: %{name}-%{version}.tar.gz Source1: sensord.service Source2: sensord_command.socket Source3: sensord_event.socket -Source4: 99-sensor.rules -Source5: 99-sensorhub.rules BuildRequires: cmake BuildRequires: libattr-devel @@ -75,13 +73,10 @@ rm -rf %{buildroot} %make_install mkdir -p %{buildroot}%{_unitdir} -mkdir -p %{buildroot}%{_libdir}/udev/rules.d install -m 0644 %SOURCE1 %{buildroot}%{_unitdir} install -m 0644 %SOURCE2 %{buildroot}%{_unitdir} install -m 0644 %SOURCE3 %{buildroot}%{_unitdir} -install -m 0644 %SOURCE4 %{buildroot}%{_libdir}/udev/rules.d -install -m 0644 %SOURCE5 %{buildroot}%{_libdir}/udev/rules.d %install_service multi-user.target.wants sensord.service %install_service sockets.target.wants sensord_event.socket @@ -109,8 +104,6 @@ ln -sf %{_libdir}/libsensor.so.%{version} %{_libdir}/libsensor.so.1 %{_unitdir}/multi-user.target.wants/sensord.service %{_unitdir}/sockets.target.wants/sensord_command.socket %{_unitdir}/sockets.target.wants/sensord_event.socket -%{_libdir}/udev/rules.d/99-sensor.rules -%{_libdir}/udev/rules.d/99-sensorhub.rules %license LICENSE.APLv2 %files -n libsensord -- 2.7.4 From e60c874f5d4a6dbeb6d23aa5d3b2913f0d09dc29 Mon Sep 17 00:00:00 2001 From: "kibak.yoon" Date: Mon, 30 May 2016 19:58:51 +0900 Subject: [PATCH 15/16] sensord: fix to not loading sensor which is already loaded - a sensor has to be loaded just once. Change-Id: I9cbd1897e6a582a85ed90cc8f36812503c2d08c3 Signed-off-by: kibak.yoon --- src/server/sensor_loader.cpp | 7 +++++-- src/server/sensor_loader.h | 1 + 2 files changed, 6 insertions(+), 2 deletions(-) diff --git a/src/server/sensor_loader.cpp b/src/server/sensor_loader.cpp index 5e0e0f9..a873d71 100644 --- a/src/server/sensor_loader.cpp +++ b/src/server/sensor_loader.cpp @@ -63,8 +63,8 @@ sensor_loader::~sensor_loader() sensor_device_map_t::iterator it_device; std::vector::iterator it_handle; - for (it_device = m_devices.begin(); it_device != m_devices.end();) - it_device = m_devices.erase(it_device); + for (it_device = m_active_devices.begin(); it_device != m_active_devices.end();) + it_device = m_active_devices.erase(it_device); for (it_handle = m_handles.begin(); it_handle != m_handles.end(); ++it_handle) dlclose(*it_handle); @@ -220,6 +220,9 @@ void sensor_loader::create_physical_sensors(sensor_type_t type) std::shared_ptr sensor_ptr(sensor); m_sensors.insert(std::make_pair(_type, sensor_ptr)); + m_active_devices[it->first] = it->second; + m_devices.erase(it->first); + _I("created [%s] sensor", sensor->get_name()); } } diff --git a/src/server/sensor_loader.h b/src/server/sensor_loader.h index c10c4bb..4d9f179 100644 --- a/src/server/sensor_loader.h +++ b/src/server/sensor_loader.h @@ -56,6 +56,7 @@ private: sensor_map_t m_sensors; sensor_device_map_t m_devices; + sensor_device_map_t m_active_devices; std::vector m_handles; public: static sensor_loader& get_instance(void); -- 2.7.4 From 6a64accc185cf655b20b6d5b5055133c997f25bb Mon Sep 17 00:00:00 2001 From: "kibak.yoon" Date: Wed, 1 Jun 2016 00:13:28 +0900 Subject: [PATCH 16/16] sensord: rename return variables from err to ret - change the condition about state is not equal to PSMODE_NORMAL Change-Id: I7d8de4b7434a5c857760ae81789b8805f9c38607 Signed-off-by: kibak.yoon --- src/client/client.cpp | 10 +++++----- src/server/sensor_loader.cpp | 6 +++--- 2 files changed, 8 insertions(+), 8 deletions(-) diff --git a/src/client/client.cpp b/src/client/client.cpp index e77b1b3..861aa43 100644 --- a/src/client/client.cpp +++ b/src/client/client.cpp @@ -119,18 +119,18 @@ void clean_up(void) static int get_power_save_state(void) { - int err; + int ret; int state = 0; int pm_state, ps_state; - err = vconf_get_int(VCONFKEY_PM_STATE, &pm_state); + ret = vconf_get_int(VCONFKEY_PM_STATE, &pm_state); - if (!err && pm_state == VCONFKEY_PM_STATE_LCDOFF) + if (!ret && pm_state == VCONFKEY_PM_STATE_LCDOFF) state |= SENSOR_OPTION_ON_IN_SCREEN_OFF; - err = vconf_get_int(VCONFKEY_SETAPPL_PSMODE, &ps_state); + ret = vconf_get_int(VCONFKEY_SETAPPL_PSMODE, &ps_state); - if (!err && ps_state == SETTING_PSMODE_NORMAL) + if (!ret && ps_state != SETTING_PSMODE_NORMAL) state |= SENSOR_OPTION_ON_IN_POWERSAVE_MODE; return state; diff --git a/src/server/sensor_loader.cpp b/src/server/sensor_loader.cpp index a873d71..0d12915 100644 --- a/src/server/sensor_loader.cpp +++ b/src/server/sensor_loader.cpp @@ -326,7 +326,7 @@ bool sensor_loader::get_paths_from_dir(const string &dir_path, vector &h struct dirent dir_entry; struct dirent *result; string name; - int error; + int ret; dir = opendir(dir_path.c_str()); @@ -336,9 +336,9 @@ bool sensor_loader::get_paths_from_dir(const string &dir_path, vector &h } while (true) { - error = readdir_r(dir, &dir_entry, &result); + ret = readdir_r(dir, &dir_entry, &result); - if (error != 0) + if (ret != 0) continue; if (result == NULL) -- 2.7.4