From 19f758eb7ad629c6edd27a1bb7832649e0be74a7 Mon Sep 17 00:00:00 2001 From: "kibak.yoon" Date: Fri, 22 Jan 2016 14:01:08 +0900 Subject: [PATCH 01/16] sensord: change access permissions about all files - change file permission to 644 Signed-off-by: kibak.yoon Change-Id: Ic58252a955dbd2bb65e235be7fe639870ff309ac --- CMakeLists.txt | 0 documentation/device_gravity.png | Bin documentation/device_orientation.png | Bin documentation/virtual_sensor_configuration.htm | 0 src/CMakeLists.txt | 0 src/client/CMakeLists.txt | 0 src/client/client_common.cpp | 0 src/client/client_common.h | 0 src/client/sensor.pc.in | 0 src/client/sensor_info_manager.cpp | 0 src/client/sensor_info_manager.h | 0 src/server/CMakeLists.txt | 0 src/server/dbus_util.cpp | 0 src/server/dbus_util.h | 0 src/server/device_config.cpp | 0 src/server/device_config.h | 0 src/server/main.cpp | 0 src/server/permission_checker.cpp | 0 src/server/permission_checker.h | 0 src/server/plugins/CMakeLists.txt | 0 src/server/plugins/auto_rotation/auto_rotation_sensor.cpp | 0 src/server/plugins/auto_rotation/auto_rotation_sensor.h | 0 src/server/plugins/fusion/fusion_sensor.cpp | 0 src/server/plugins/fusion/fusion_sensor.h | 0 src/server/plugins/fusion/hardware_fusion_sensor.html | 0 src/server/plugins/gravity/gravity_sensor.cpp | 0 src/server/plugins/gravity/gravity_sensor.h | 0 src/server/plugins/linear_accel/linear_accel_sensor.cpp | 0 src/server/plugins/linear_accel/linear_accel_sensor.h | 0 src/server/plugins/orientation/orientation_sensor.cpp | 0 src/server/plugins/orientation/orientation_sensor.h | 0 .../plugins/rotation_vector/gaming_rv/gaming_rv_sensor.cpp | 0 .../plugins/rotation_vector/gaming_rv/gaming_rv_sensor.h | 0 .../geomagnetic_rv/geomagnetic_rv_sensor.cpp | 0 .../rotation_vector/geomagnetic_rv/geomagnetic_rv_sensor.h | 0 src/server/plugins/rotation_vector/rv/rv_sensor.cpp | 0 src/server/plugins/rotation_vector/rv/rv_sensor.h | 0 .../design/data/100ms/gravity/single_roll_throw/accel.txt | 0 .../design/data/100ms/gravity/single_roll_throw/gyro.txt | 0 .../data/100ms/gravity/single_roll_throw/magnetic.txt | 0 .../data/100ms/linear_acceleration/move_x_y_z/accel.txt | 0 .../data/100ms/linear_acceleration/move_x_y_z/gyro.txt | 0 .../data/100ms/linear_acceleration/move_x_y_z/magnetic.txt | 0 .../design/data/100ms/orientation/roll_pitch_yaw/accel.txt | 0 .../design/data/100ms/orientation/roll_pitch_yaw/gyro.txt | 0 .../data/100ms/orientation/roll_pitch_yaw/magnetic.txt | 0 .../block_diagram_gravity_and_linear_acceleration.png | Bin .../diagram/block_diagram_orientation_estimation.png | Bin .../design/documentation/diagram/device_orientation.png | Bin .../design/documentation/diagram/kalman_filter_stages.png | Bin .../documentation/diagram/orientation_effect_on_gravity.png | Bin .../diagram/projection_diagram_gravity_computation.png | Bin .../design/documentation/equation/equation_1.png | Bin .../design/documentation/equation/equation_10.png | Bin .../design/documentation/equation/equation_11.png | Bin .../design/documentation/equation/equation_12.png | Bin .../design/documentation/equation/equation_13.png | Bin .../design/documentation/equation/equation_14.png | Bin .../design/documentation/equation/equation_15.png | Bin .../design/documentation/equation/equation_16.png | Bin .../design/documentation/equation/equation_17.png | Bin .../design/documentation/equation/equation_18.png | Bin .../design/documentation/equation/equation_19.png | Bin .../design/documentation/equation/equation_2.png | Bin .../design/documentation/equation/equation_20.png | Bin .../design/documentation/equation/equation_21.png | Bin .../design/documentation/equation/equation_22.png | Bin .../design/documentation/equation/equation_23.png | Bin .../design/documentation/equation/equation_24.png | Bin .../design/documentation/equation/equation_25.png | Bin .../design/documentation/equation/equation_26.png | Bin .../design/documentation/equation/equation_27.png | Bin .../design/documentation/equation/equation_28.png | Bin .../design/documentation/equation/equation_29.png | Bin .../design/documentation/equation/equation_3.png | Bin .../design/documentation/equation/equation_30.png | Bin .../design/documentation/equation/equation_31.png | Bin .../design/documentation/equation/equation_32.png | Bin .../design/documentation/equation/equation_33.png | Bin .../design/documentation/equation/equation_34.png | Bin .../design/documentation/equation/equation_35.png | Bin .../design/documentation/equation/equation_36.png | Bin .../design/documentation/equation/equation_37.png | Bin .../design/documentation/equation/equation_38.png | Bin .../design/documentation/equation/equation_39.png | Bin .../design/documentation/equation/equation_4.png | Bin .../design/documentation/equation/equation_40.png | Bin .../design/documentation/equation/equation_5.png | Bin .../design/documentation/equation/equation_6.png | Bin .../design/documentation/equation/equation_7.png | Bin .../design/documentation/equation/equation_8.png | Bin .../design/documentation/equation/equation_9.png | Bin .../sensor_fusion/design/documentation/sensor_fusion.htm | 0 .../plugins/sensor_fusion/design/lib/estimate_gaming_rv.m | 0 .../sensor_fusion/design/lib/estimate_geomagnetic_rv.m | 0 .../plugins/sensor_fusion/design/lib/estimate_gravity.m | 0 .../sensor_fusion/design/lib/estimate_linear_acceleration.m | 0 .../plugins/sensor_fusion/design/lib/estimate_orientation.m | 0 src/server/plugins/sensor_fusion/design/lib/quat2euler.m | 0 src/server/plugins/sensor_fusion/design/lib/quat2rot_mat.m | 0 src/server/plugins/sensor_fusion/design/lib/quat_prod.m | 0 src/server/plugins/sensor_fusion/design/lib/rot_mat2quat.m | 0 src/server/plugins/sensor_fusion/design/lib/sf_pedometer.m | 0 src/server/plugins/sensor_fusion/design/sf_gaming_rv.m | 0 src/server/plugins/sensor_fusion/design/sf_geomagnetic_rv.m | 0 src/server/plugins/sensor_fusion/design/sf_gravity.m | 0 .../plugins/sensor_fusion/design/sf_linear_acceleration.m | 0 src/server/plugins/sensor_fusion/design/sf_orientation.m | 0 src/server/plugins/sensor_fusion/matrix.cpp | 0 src/server/plugins/sensor_fusion/matrix.h | 0 src/server/plugins/sensor_fusion/quaternion.cpp | 0 src/server/plugins/sensor_fusion/quaternion.h | 0 src/server/plugins/tilt/tilt_sensor.cpp | 0 src/server/plugins/tilt/tilt_sensor.h | 0 src/server/sensor_event_dispatcher.cpp | 0 src/server/sensor_event_dispatcher.h | 0 src/server/sensor_plugin_loader.h | 0 src/server/server.cpp | 0 src/server/server.h | 0 src/server/virtual_sensor.cpp | 0 src/server/virtual_sensor.h | 0 src/server/virtual_sensor_config.cpp | 0 src/server/virtual_sensor_config.h | 0 src/server/worker_thread.cpp | 0 src/server/worker_thread.h | 0 src/shared/cbase_lock.cpp | 0 src/shared/cbase_lock.h | 0 src/shared/cmutex.cpp | 0 src/shared/cmutex.h | 0 src/shared/cpacket.cpp | 0 src/shared/cpacket.h | 0 src/shared/poller.cpp | 0 src/shared/poller.h | 0 src/shared/sensor_common.h | 0 src/shared/sensor_internal_deprecated.h | 0 src/shared/sensor_logs.h | 0 systemd/sensord.service | 0 systemd/sensord.socket | 0 test/src/api-test.c | 0 test/src/check-sensor.c | 0 test/src/fusion-data-collection.c | 0 test/src/multi-process-performance-test.c | 0 test/src/sensor-test.c | 0 virtual_sensors.xml | 0 144 files changed, 0 insertions(+), 0 deletions(-) mode change 100755 => 100644 CMakeLists.txt mode change 100755 => 100644 documentation/device_gravity.png mode change 100755 => 100644 documentation/device_orientation.png mode change 100755 => 100644 documentation/virtual_sensor_configuration.htm mode change 100755 => 100644 src/CMakeLists.txt mode change 100755 => 100644 src/client/CMakeLists.txt mode change 100755 => 100644 src/client/client_common.cpp mode change 100755 => 100644 src/client/client_common.h mode change 100755 => 100644 src/client/sensor.pc.in mode change 100755 => 100644 src/client/sensor_info_manager.cpp mode change 100755 => 100644 src/client/sensor_info_manager.h mode change 100755 => 100644 src/server/CMakeLists.txt mode change 100755 => 100644 src/server/dbus_util.cpp mode change 100755 => 100644 src/server/dbus_util.h mode change 100755 => 100644 src/server/device_config.cpp mode change 100755 => 100644 src/server/device_config.h mode change 100755 => 100644 src/server/main.cpp mode change 100755 => 100644 src/server/permission_checker.cpp mode change 100755 => 100644 src/server/permission_checker.h mode change 100755 => 100644 src/server/plugins/CMakeLists.txt mode change 100755 => 100644 src/server/plugins/auto_rotation/auto_rotation_sensor.cpp mode change 100755 => 100644 src/server/plugins/auto_rotation/auto_rotation_sensor.h mode change 100755 => 100644 src/server/plugins/fusion/fusion_sensor.cpp mode change 100755 => 100644 src/server/plugins/fusion/fusion_sensor.h mode change 100755 => 100644 src/server/plugins/fusion/hardware_fusion_sensor.html mode change 100755 => 100644 src/server/plugins/gravity/gravity_sensor.cpp mode change 100755 => 100644 src/server/plugins/gravity/gravity_sensor.h mode change 100755 => 100644 src/server/plugins/linear_accel/linear_accel_sensor.cpp mode change 100755 => 100644 src/server/plugins/linear_accel/linear_accel_sensor.h mode change 100755 => 100644 src/server/plugins/orientation/orientation_sensor.cpp mode change 100755 => 100644 src/server/plugins/orientation/orientation_sensor.h mode change 100755 => 100644 src/server/plugins/rotation_vector/gaming_rv/gaming_rv_sensor.cpp mode change 100755 => 100644 src/server/plugins/rotation_vector/gaming_rv/gaming_rv_sensor.h mode change 100755 => 100644 src/server/plugins/rotation_vector/geomagnetic_rv/geomagnetic_rv_sensor.cpp mode change 100755 => 100644 src/server/plugins/rotation_vector/geomagnetic_rv/geomagnetic_rv_sensor.h mode change 100755 => 100644 src/server/plugins/rotation_vector/rv/rv_sensor.cpp mode change 100755 => 100644 src/server/plugins/rotation_vector/rv/rv_sensor.h mode change 100755 => 100644 src/server/plugins/sensor_fusion/design/data/100ms/gravity/single_roll_throw/accel.txt mode change 100755 => 100644 src/server/plugins/sensor_fusion/design/data/100ms/gravity/single_roll_throw/gyro.txt mode change 100755 => 100644 src/server/plugins/sensor_fusion/design/data/100ms/gravity/single_roll_throw/magnetic.txt mode change 100755 => 100644 src/server/plugins/sensor_fusion/design/data/100ms/linear_acceleration/move_x_y_z/accel.txt mode change 100755 => 100644 src/server/plugins/sensor_fusion/design/data/100ms/linear_acceleration/move_x_y_z/gyro.txt mode change 100755 => 100644 src/server/plugins/sensor_fusion/design/data/100ms/linear_acceleration/move_x_y_z/magnetic.txt mode change 100755 => 100644 src/server/plugins/sensor_fusion/design/data/100ms/orientation/roll_pitch_yaw/accel.txt mode change 100755 => 100644 src/server/plugins/sensor_fusion/design/data/100ms/orientation/roll_pitch_yaw/gyro.txt mode change 100755 => 100644 src/server/plugins/sensor_fusion/design/data/100ms/orientation/roll_pitch_yaw/magnetic.txt mode change 100755 => 100644 src/server/plugins/sensor_fusion/design/documentation/diagram/block_diagram_gravity_and_linear_acceleration.png mode change 100755 => 100644 src/server/plugins/sensor_fusion/design/documentation/diagram/block_diagram_orientation_estimation.png mode change 100755 => 100644 src/server/plugins/sensor_fusion/design/documentation/diagram/device_orientation.png mode change 100755 => 100644 src/server/plugins/sensor_fusion/design/documentation/diagram/kalman_filter_stages.png mode change 100755 => 100644 src/server/plugins/sensor_fusion/design/documentation/diagram/orientation_effect_on_gravity.png mode change 100755 => 100644 src/server/plugins/sensor_fusion/design/documentation/diagram/projection_diagram_gravity_computation.png mode change 100755 => 100644 src/server/plugins/sensor_fusion/design/documentation/equation/equation_1.png mode change 100755 => 100644 src/server/plugins/sensor_fusion/design/documentation/equation/equation_10.png mode change 100755 => 100644 src/server/plugins/sensor_fusion/design/documentation/equation/equation_11.png mode change 100755 => 100644 src/server/plugins/sensor_fusion/design/documentation/equation/equation_12.png mode change 100755 => 100644 src/server/plugins/sensor_fusion/design/documentation/equation/equation_13.png mode change 100755 => 100644 src/server/plugins/sensor_fusion/design/documentation/equation/equation_14.png mode change 100755 => 100644 src/server/plugins/sensor_fusion/design/documentation/equation/equation_15.png mode change 100755 => 100644 src/server/plugins/sensor_fusion/design/documentation/equation/equation_16.png mode change 100755 => 100644 src/server/plugins/sensor_fusion/design/documentation/equation/equation_17.png mode change 100755 => 100644 src/server/plugins/sensor_fusion/design/documentation/equation/equation_18.png mode change 100755 => 100644 src/server/plugins/sensor_fusion/design/documentation/equation/equation_19.png mode change 100755 => 100644 src/server/plugins/sensor_fusion/design/documentation/equation/equation_2.png mode change 100755 => 100644 src/server/plugins/sensor_fusion/design/documentation/equation/equation_20.png mode change 100755 => 100644 src/server/plugins/sensor_fusion/design/documentation/equation/equation_21.png mode change 100755 => 100644 src/server/plugins/sensor_fusion/design/documentation/equation/equation_22.png mode change 100755 => 100644 src/server/plugins/sensor_fusion/design/documentation/equation/equation_23.png mode change 100755 => 100644 src/server/plugins/sensor_fusion/design/documentation/equation/equation_24.png mode change 100755 => 100644 src/server/plugins/sensor_fusion/design/documentation/equation/equation_25.png mode change 100755 => 100644 src/server/plugins/sensor_fusion/design/documentation/equation/equation_26.png mode change 100755 => 100644 src/server/plugins/sensor_fusion/design/documentation/equation/equation_27.png mode change 100755 => 100644 src/server/plugins/sensor_fusion/design/documentation/equation/equation_28.png mode change 100755 => 100644 src/server/plugins/sensor_fusion/design/documentation/equation/equation_29.png mode change 100755 => 100644 src/server/plugins/sensor_fusion/design/documentation/equation/equation_3.png mode change 100755 => 100644 src/server/plugins/sensor_fusion/design/documentation/equation/equation_30.png mode change 100755 => 100644 src/server/plugins/sensor_fusion/design/documentation/equation/equation_31.png mode change 100755 => 100644 src/server/plugins/sensor_fusion/design/documentation/equation/equation_32.png mode change 100755 => 100644 src/server/plugins/sensor_fusion/design/documentation/equation/equation_33.png mode change 100755 => 100644 src/server/plugins/sensor_fusion/design/documentation/equation/equation_34.png mode change 100755 => 100644 src/server/plugins/sensor_fusion/design/documentation/equation/equation_35.png mode change 100755 => 100644 src/server/plugins/sensor_fusion/design/documentation/equation/equation_36.png mode change 100755 => 100644 src/server/plugins/sensor_fusion/design/documentation/equation/equation_37.png mode change 100755 => 100644 src/server/plugins/sensor_fusion/design/documentation/equation/equation_38.png mode change 100755 => 100644 src/server/plugins/sensor_fusion/design/documentation/equation/equation_39.png mode change 100755 => 100644 src/server/plugins/sensor_fusion/design/documentation/equation/equation_4.png mode change 100755 => 100644 src/server/plugins/sensor_fusion/design/documentation/equation/equation_40.png mode change 100755 => 100644 src/server/plugins/sensor_fusion/design/documentation/equation/equation_5.png mode change 100755 => 100644 src/server/plugins/sensor_fusion/design/documentation/equation/equation_6.png mode change 100755 => 100644 src/server/plugins/sensor_fusion/design/documentation/equation/equation_7.png mode change 100755 => 100644 src/server/plugins/sensor_fusion/design/documentation/equation/equation_8.png mode change 100755 => 100644 src/server/plugins/sensor_fusion/design/documentation/equation/equation_9.png mode change 100755 => 100644 src/server/plugins/sensor_fusion/design/documentation/sensor_fusion.htm mode change 100755 => 100644 src/server/plugins/sensor_fusion/design/lib/estimate_gaming_rv.m mode change 100755 => 100644 src/server/plugins/sensor_fusion/design/lib/estimate_geomagnetic_rv.m mode change 100755 => 100644 src/server/plugins/sensor_fusion/design/lib/estimate_gravity.m mode change 100755 => 100644 src/server/plugins/sensor_fusion/design/lib/estimate_linear_acceleration.m mode change 100755 => 100644 src/server/plugins/sensor_fusion/design/lib/estimate_orientation.m mode change 100755 => 100644 src/server/plugins/sensor_fusion/design/lib/quat2euler.m mode change 100755 => 100644 src/server/plugins/sensor_fusion/design/lib/quat2rot_mat.m mode change 100755 => 100644 src/server/plugins/sensor_fusion/design/lib/quat_prod.m mode change 100755 => 100644 src/server/plugins/sensor_fusion/design/lib/rot_mat2quat.m mode change 100755 => 100644 src/server/plugins/sensor_fusion/design/lib/sf_pedometer.m mode change 100755 => 100644 src/server/plugins/sensor_fusion/design/sf_gaming_rv.m mode change 100755 => 100644 src/server/plugins/sensor_fusion/design/sf_geomagnetic_rv.m mode change 100755 => 100644 src/server/plugins/sensor_fusion/design/sf_gravity.m mode change 100755 => 100644 src/server/plugins/sensor_fusion/design/sf_linear_acceleration.m mode change 100755 => 100644 src/server/plugins/sensor_fusion/design/sf_orientation.m mode change 100755 => 100644 src/server/plugins/sensor_fusion/matrix.cpp mode change 100755 => 100644 src/server/plugins/sensor_fusion/matrix.h mode change 100755 => 100644 src/server/plugins/sensor_fusion/quaternion.cpp mode change 100755 => 100644 src/server/plugins/sensor_fusion/quaternion.h mode change 100755 => 100644 src/server/plugins/tilt/tilt_sensor.cpp mode change 100755 => 100644 src/server/plugins/tilt/tilt_sensor.h mode change 100755 => 100644 src/server/sensor_event_dispatcher.cpp mode change 100755 => 100644 src/server/sensor_event_dispatcher.h mode change 100755 => 100644 src/server/sensor_plugin_loader.h mode change 100755 => 100644 src/server/server.cpp mode change 100755 => 100644 src/server/server.h mode change 100755 => 100644 src/server/virtual_sensor.cpp mode change 100755 => 100644 src/server/virtual_sensor.h mode change 100755 => 100644 src/server/virtual_sensor_config.cpp mode change 100755 => 100644 src/server/virtual_sensor_config.h mode change 100755 => 100644 src/server/worker_thread.cpp mode change 100755 => 100644 src/server/worker_thread.h mode change 100755 => 100644 src/shared/cbase_lock.cpp mode change 100755 => 100644 src/shared/cbase_lock.h mode change 100755 => 100644 src/shared/cmutex.cpp mode change 100755 => 100644 src/shared/cmutex.h mode change 100755 => 100644 src/shared/cpacket.cpp mode change 100755 => 100644 src/shared/cpacket.h mode change 100755 => 100644 src/shared/poller.cpp mode change 100755 => 100644 src/shared/poller.h mode change 100755 => 100644 src/shared/sensor_common.h mode change 100755 => 100644 src/shared/sensor_internal_deprecated.h mode change 100755 => 100644 src/shared/sensor_logs.h mode change 100755 => 100644 systemd/sensord.service mode change 100755 => 100644 systemd/sensord.socket mode change 100755 => 100644 test/src/api-test.c mode change 100755 => 100644 test/src/check-sensor.c mode change 100755 => 100644 test/src/fusion-data-collection.c mode change 100755 => 100644 test/src/multi-process-performance-test.c mode change 100755 => 100644 test/src/sensor-test.c mode change 100755 => 100644 virtual_sensors.xml diff --git a/CMakeLists.txt b/CMakeLists.txt old mode 100755 new mode 100644 diff --git a/documentation/device_gravity.png b/documentation/device_gravity.png old mode 100755 new mode 100644 diff --git a/documentation/device_orientation.png b/documentation/device_orientation.png old mode 100755 new mode 100644 diff --git a/documentation/virtual_sensor_configuration.htm b/documentation/virtual_sensor_configuration.htm old mode 100755 new mode 100644 diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt old mode 100755 new mode 100644 diff --git a/src/client/CMakeLists.txt b/src/client/CMakeLists.txt old mode 100755 new mode 100644 diff --git a/src/client/client_common.cpp b/src/client/client_common.cpp old mode 100755 new mode 100644 diff --git a/src/client/client_common.h b/src/client/client_common.h old mode 100755 new mode 100644 diff --git a/src/client/sensor.pc.in b/src/client/sensor.pc.in old mode 100755 new mode 100644 diff --git a/src/client/sensor_info_manager.cpp b/src/client/sensor_info_manager.cpp old mode 100755 new mode 100644 diff --git a/src/client/sensor_info_manager.h b/src/client/sensor_info_manager.h old mode 100755 new mode 100644 diff --git a/src/server/CMakeLists.txt b/src/server/CMakeLists.txt old mode 100755 new mode 100644 diff --git a/src/server/dbus_util.cpp b/src/server/dbus_util.cpp old mode 100755 new mode 100644 diff --git a/src/server/dbus_util.h b/src/server/dbus_util.h old mode 100755 new mode 100644 diff --git a/src/server/device_config.cpp b/src/server/device_config.cpp old mode 100755 new mode 100644 diff --git a/src/server/device_config.h b/src/server/device_config.h old mode 100755 new mode 100644 diff --git a/src/server/main.cpp b/src/server/main.cpp old mode 100755 new mode 100644 diff --git a/src/server/permission_checker.cpp b/src/server/permission_checker.cpp old mode 100755 new mode 100644 diff --git a/src/server/permission_checker.h b/src/server/permission_checker.h old mode 100755 new mode 100644 diff --git a/src/server/plugins/CMakeLists.txt b/src/server/plugins/CMakeLists.txt old mode 100755 new mode 100644 diff --git a/src/server/plugins/auto_rotation/auto_rotation_sensor.cpp b/src/server/plugins/auto_rotation/auto_rotation_sensor.cpp old mode 100755 new mode 100644 diff --git a/src/server/plugins/auto_rotation/auto_rotation_sensor.h b/src/server/plugins/auto_rotation/auto_rotation_sensor.h old mode 100755 new mode 100644 diff --git a/src/server/plugins/fusion/fusion_sensor.cpp b/src/server/plugins/fusion/fusion_sensor.cpp old mode 100755 new mode 100644 diff --git a/src/server/plugins/fusion/fusion_sensor.h b/src/server/plugins/fusion/fusion_sensor.h old mode 100755 new mode 100644 diff --git a/src/server/plugins/fusion/hardware_fusion_sensor.html b/src/server/plugins/fusion/hardware_fusion_sensor.html old mode 100755 new mode 100644 diff --git a/src/server/plugins/gravity/gravity_sensor.cpp b/src/server/plugins/gravity/gravity_sensor.cpp old mode 100755 new mode 100644 diff --git a/src/server/plugins/gravity/gravity_sensor.h b/src/server/plugins/gravity/gravity_sensor.h old mode 100755 new mode 100644 diff --git a/src/server/plugins/linear_accel/linear_accel_sensor.cpp b/src/server/plugins/linear_accel/linear_accel_sensor.cpp old mode 100755 new mode 100644 diff --git a/src/server/plugins/linear_accel/linear_accel_sensor.h b/src/server/plugins/linear_accel/linear_accel_sensor.h old mode 100755 new mode 100644 diff --git a/src/server/plugins/orientation/orientation_sensor.cpp b/src/server/plugins/orientation/orientation_sensor.cpp old mode 100755 new mode 100644 diff --git a/src/server/plugins/orientation/orientation_sensor.h b/src/server/plugins/orientation/orientation_sensor.h old mode 100755 new mode 100644 diff --git a/src/server/plugins/rotation_vector/gaming_rv/gaming_rv_sensor.cpp b/src/server/plugins/rotation_vector/gaming_rv/gaming_rv_sensor.cpp old mode 100755 new mode 100644 diff --git a/src/server/plugins/rotation_vector/gaming_rv/gaming_rv_sensor.h b/src/server/plugins/rotation_vector/gaming_rv/gaming_rv_sensor.h old mode 100755 new mode 100644 diff --git a/src/server/plugins/rotation_vector/geomagnetic_rv/geomagnetic_rv_sensor.cpp b/src/server/plugins/rotation_vector/geomagnetic_rv/geomagnetic_rv_sensor.cpp old mode 100755 new mode 100644 diff --git a/src/server/plugins/rotation_vector/geomagnetic_rv/geomagnetic_rv_sensor.h b/src/server/plugins/rotation_vector/geomagnetic_rv/geomagnetic_rv_sensor.h old mode 100755 new mode 100644 diff --git a/src/server/plugins/rotation_vector/rv/rv_sensor.cpp b/src/server/plugins/rotation_vector/rv/rv_sensor.cpp old mode 100755 new mode 100644 diff --git a/src/server/plugins/rotation_vector/rv/rv_sensor.h b/src/server/plugins/rotation_vector/rv/rv_sensor.h old mode 100755 new mode 100644 diff --git a/src/server/plugins/sensor_fusion/design/data/100ms/gravity/single_roll_throw/accel.txt b/src/server/plugins/sensor_fusion/design/data/100ms/gravity/single_roll_throw/accel.txt old mode 100755 new mode 100644 diff --git a/src/server/plugins/sensor_fusion/design/data/100ms/gravity/single_roll_throw/gyro.txt b/src/server/plugins/sensor_fusion/design/data/100ms/gravity/single_roll_throw/gyro.txt old mode 100755 new mode 100644 diff --git a/src/server/plugins/sensor_fusion/design/data/100ms/gravity/single_roll_throw/magnetic.txt b/src/server/plugins/sensor_fusion/design/data/100ms/gravity/single_roll_throw/magnetic.txt old mode 100755 new mode 100644 diff --git a/src/server/plugins/sensor_fusion/design/data/100ms/linear_acceleration/move_x_y_z/accel.txt b/src/server/plugins/sensor_fusion/design/data/100ms/linear_acceleration/move_x_y_z/accel.txt old mode 100755 new mode 100644 diff --git a/src/server/plugins/sensor_fusion/design/data/100ms/linear_acceleration/move_x_y_z/gyro.txt b/src/server/plugins/sensor_fusion/design/data/100ms/linear_acceleration/move_x_y_z/gyro.txt old mode 100755 new mode 100644 diff --git a/src/server/plugins/sensor_fusion/design/data/100ms/linear_acceleration/move_x_y_z/magnetic.txt b/src/server/plugins/sensor_fusion/design/data/100ms/linear_acceleration/move_x_y_z/magnetic.txt old mode 100755 new mode 100644 diff --git a/src/server/plugins/sensor_fusion/design/data/100ms/orientation/roll_pitch_yaw/accel.txt b/src/server/plugins/sensor_fusion/design/data/100ms/orientation/roll_pitch_yaw/accel.txt old mode 100755 new mode 100644 diff --git a/src/server/plugins/sensor_fusion/design/data/100ms/orientation/roll_pitch_yaw/gyro.txt b/src/server/plugins/sensor_fusion/design/data/100ms/orientation/roll_pitch_yaw/gyro.txt old mode 100755 new mode 100644 diff --git a/src/server/plugins/sensor_fusion/design/data/100ms/orientation/roll_pitch_yaw/magnetic.txt b/src/server/plugins/sensor_fusion/design/data/100ms/orientation/roll_pitch_yaw/magnetic.txt old mode 100755 new mode 100644 diff --git a/src/server/plugins/sensor_fusion/design/documentation/diagram/block_diagram_gravity_and_linear_acceleration.png b/src/server/plugins/sensor_fusion/design/documentation/diagram/block_diagram_gravity_and_linear_acceleration.png old mode 100755 new mode 100644 diff --git a/src/server/plugins/sensor_fusion/design/documentation/diagram/block_diagram_orientation_estimation.png b/src/server/plugins/sensor_fusion/design/documentation/diagram/block_diagram_orientation_estimation.png old mode 100755 new mode 100644 diff --git a/src/server/plugins/sensor_fusion/design/documentation/diagram/device_orientation.png b/src/server/plugins/sensor_fusion/design/documentation/diagram/device_orientation.png old mode 100755 new mode 100644 diff --git a/src/server/plugins/sensor_fusion/design/documentation/diagram/kalman_filter_stages.png b/src/server/plugins/sensor_fusion/design/documentation/diagram/kalman_filter_stages.png old mode 100755 new mode 100644 diff --git a/src/server/plugins/sensor_fusion/design/documentation/diagram/orientation_effect_on_gravity.png b/src/server/plugins/sensor_fusion/design/documentation/diagram/orientation_effect_on_gravity.png old mode 100755 new mode 100644 diff --git a/src/server/plugins/sensor_fusion/design/documentation/diagram/projection_diagram_gravity_computation.png b/src/server/plugins/sensor_fusion/design/documentation/diagram/projection_diagram_gravity_computation.png old mode 100755 new mode 100644 diff --git a/src/server/plugins/sensor_fusion/design/documentation/equation/equation_1.png b/src/server/plugins/sensor_fusion/design/documentation/equation/equation_1.png old mode 100755 new mode 100644 diff --git a/src/server/plugins/sensor_fusion/design/documentation/equation/equation_10.png b/src/server/plugins/sensor_fusion/design/documentation/equation/equation_10.png old mode 100755 new mode 100644 diff --git a/src/server/plugins/sensor_fusion/design/documentation/equation/equation_11.png b/src/server/plugins/sensor_fusion/design/documentation/equation/equation_11.png old mode 100755 new mode 100644 diff --git a/src/server/plugins/sensor_fusion/design/documentation/equation/equation_12.png b/src/server/plugins/sensor_fusion/design/documentation/equation/equation_12.png old mode 100755 new mode 100644 diff --git a/src/server/plugins/sensor_fusion/design/documentation/equation/equation_13.png b/src/server/plugins/sensor_fusion/design/documentation/equation/equation_13.png old mode 100755 new mode 100644 diff --git a/src/server/plugins/sensor_fusion/design/documentation/equation/equation_14.png b/src/server/plugins/sensor_fusion/design/documentation/equation/equation_14.png old mode 100755 new mode 100644 diff --git a/src/server/plugins/sensor_fusion/design/documentation/equation/equation_15.png b/src/server/plugins/sensor_fusion/design/documentation/equation/equation_15.png old mode 100755 new mode 100644 diff --git a/src/server/plugins/sensor_fusion/design/documentation/equation/equation_16.png b/src/server/plugins/sensor_fusion/design/documentation/equation/equation_16.png old mode 100755 new mode 100644 diff --git a/src/server/plugins/sensor_fusion/design/documentation/equation/equation_17.png b/src/server/plugins/sensor_fusion/design/documentation/equation/equation_17.png old mode 100755 new mode 100644 diff --git a/src/server/plugins/sensor_fusion/design/documentation/equation/equation_18.png b/src/server/plugins/sensor_fusion/design/documentation/equation/equation_18.png old mode 100755 new mode 100644 diff --git a/src/server/plugins/sensor_fusion/design/documentation/equation/equation_19.png b/src/server/plugins/sensor_fusion/design/documentation/equation/equation_19.png old mode 100755 new mode 100644 diff --git a/src/server/plugins/sensor_fusion/design/documentation/equation/equation_2.png b/src/server/plugins/sensor_fusion/design/documentation/equation/equation_2.png old mode 100755 new mode 100644 diff --git a/src/server/plugins/sensor_fusion/design/documentation/equation/equation_20.png b/src/server/plugins/sensor_fusion/design/documentation/equation/equation_20.png old mode 100755 new mode 100644 diff --git a/src/server/plugins/sensor_fusion/design/documentation/equation/equation_21.png b/src/server/plugins/sensor_fusion/design/documentation/equation/equation_21.png old mode 100755 new mode 100644 diff --git a/src/server/plugins/sensor_fusion/design/documentation/equation/equation_22.png b/src/server/plugins/sensor_fusion/design/documentation/equation/equation_22.png old mode 100755 new mode 100644 diff --git a/src/server/plugins/sensor_fusion/design/documentation/equation/equation_23.png b/src/server/plugins/sensor_fusion/design/documentation/equation/equation_23.png old mode 100755 new mode 100644 diff --git a/src/server/plugins/sensor_fusion/design/documentation/equation/equation_24.png b/src/server/plugins/sensor_fusion/design/documentation/equation/equation_24.png old mode 100755 new mode 100644 diff --git a/src/server/plugins/sensor_fusion/design/documentation/equation/equation_25.png b/src/server/plugins/sensor_fusion/design/documentation/equation/equation_25.png old mode 100755 new mode 100644 diff --git a/src/server/plugins/sensor_fusion/design/documentation/equation/equation_26.png b/src/server/plugins/sensor_fusion/design/documentation/equation/equation_26.png old mode 100755 new mode 100644 diff --git a/src/server/plugins/sensor_fusion/design/documentation/equation/equation_27.png b/src/server/plugins/sensor_fusion/design/documentation/equation/equation_27.png old mode 100755 new mode 100644 diff --git a/src/server/plugins/sensor_fusion/design/documentation/equation/equation_28.png b/src/server/plugins/sensor_fusion/design/documentation/equation/equation_28.png old mode 100755 new mode 100644 diff --git a/src/server/plugins/sensor_fusion/design/documentation/equation/equation_29.png b/src/server/plugins/sensor_fusion/design/documentation/equation/equation_29.png old mode 100755 new mode 100644 diff --git a/src/server/plugins/sensor_fusion/design/documentation/equation/equation_3.png b/src/server/plugins/sensor_fusion/design/documentation/equation/equation_3.png old mode 100755 new mode 100644 diff --git a/src/server/plugins/sensor_fusion/design/documentation/equation/equation_30.png b/src/server/plugins/sensor_fusion/design/documentation/equation/equation_30.png old mode 100755 new mode 100644 diff --git a/src/server/plugins/sensor_fusion/design/documentation/equation/equation_31.png b/src/server/plugins/sensor_fusion/design/documentation/equation/equation_31.png old mode 100755 new mode 100644 diff --git a/src/server/plugins/sensor_fusion/design/documentation/equation/equation_32.png b/src/server/plugins/sensor_fusion/design/documentation/equation/equation_32.png old mode 100755 new mode 100644 diff --git a/src/server/plugins/sensor_fusion/design/documentation/equation/equation_33.png b/src/server/plugins/sensor_fusion/design/documentation/equation/equation_33.png old mode 100755 new mode 100644 diff --git a/src/server/plugins/sensor_fusion/design/documentation/equation/equation_34.png b/src/server/plugins/sensor_fusion/design/documentation/equation/equation_34.png old mode 100755 new mode 100644 diff --git a/src/server/plugins/sensor_fusion/design/documentation/equation/equation_35.png b/src/server/plugins/sensor_fusion/design/documentation/equation/equation_35.png old mode 100755 new mode 100644 diff --git a/src/server/plugins/sensor_fusion/design/documentation/equation/equation_36.png b/src/server/plugins/sensor_fusion/design/documentation/equation/equation_36.png old mode 100755 new mode 100644 diff --git a/src/server/plugins/sensor_fusion/design/documentation/equation/equation_37.png b/src/server/plugins/sensor_fusion/design/documentation/equation/equation_37.png old mode 100755 new mode 100644 diff --git a/src/server/plugins/sensor_fusion/design/documentation/equation/equation_38.png b/src/server/plugins/sensor_fusion/design/documentation/equation/equation_38.png old mode 100755 new mode 100644 diff --git a/src/server/plugins/sensor_fusion/design/documentation/equation/equation_39.png b/src/server/plugins/sensor_fusion/design/documentation/equation/equation_39.png old mode 100755 new mode 100644 diff --git a/src/server/plugins/sensor_fusion/design/documentation/equation/equation_4.png b/src/server/plugins/sensor_fusion/design/documentation/equation/equation_4.png old mode 100755 new mode 100644 diff --git a/src/server/plugins/sensor_fusion/design/documentation/equation/equation_40.png b/src/server/plugins/sensor_fusion/design/documentation/equation/equation_40.png old mode 100755 new mode 100644 diff --git a/src/server/plugins/sensor_fusion/design/documentation/equation/equation_5.png b/src/server/plugins/sensor_fusion/design/documentation/equation/equation_5.png old mode 100755 new mode 100644 diff --git a/src/server/plugins/sensor_fusion/design/documentation/equation/equation_6.png b/src/server/plugins/sensor_fusion/design/documentation/equation/equation_6.png old mode 100755 new mode 100644 diff --git a/src/server/plugins/sensor_fusion/design/documentation/equation/equation_7.png b/src/server/plugins/sensor_fusion/design/documentation/equation/equation_7.png old mode 100755 new mode 100644 diff --git a/src/server/plugins/sensor_fusion/design/documentation/equation/equation_8.png b/src/server/plugins/sensor_fusion/design/documentation/equation/equation_8.png old mode 100755 new mode 100644 diff --git a/src/server/plugins/sensor_fusion/design/documentation/equation/equation_9.png b/src/server/plugins/sensor_fusion/design/documentation/equation/equation_9.png old mode 100755 new mode 100644 diff --git a/src/server/plugins/sensor_fusion/design/documentation/sensor_fusion.htm b/src/server/plugins/sensor_fusion/design/documentation/sensor_fusion.htm old mode 100755 new mode 100644 diff --git a/src/server/plugins/sensor_fusion/design/lib/estimate_gaming_rv.m b/src/server/plugins/sensor_fusion/design/lib/estimate_gaming_rv.m old mode 100755 new mode 100644 diff --git a/src/server/plugins/sensor_fusion/design/lib/estimate_geomagnetic_rv.m b/src/server/plugins/sensor_fusion/design/lib/estimate_geomagnetic_rv.m old mode 100755 new mode 100644 diff --git a/src/server/plugins/sensor_fusion/design/lib/estimate_gravity.m b/src/server/plugins/sensor_fusion/design/lib/estimate_gravity.m old mode 100755 new mode 100644 diff --git a/src/server/plugins/sensor_fusion/design/lib/estimate_linear_acceleration.m b/src/server/plugins/sensor_fusion/design/lib/estimate_linear_acceleration.m old mode 100755 new mode 100644 diff --git a/src/server/plugins/sensor_fusion/design/lib/estimate_orientation.m b/src/server/plugins/sensor_fusion/design/lib/estimate_orientation.m old mode 100755 new mode 100644 diff --git a/src/server/plugins/sensor_fusion/design/lib/quat2euler.m b/src/server/plugins/sensor_fusion/design/lib/quat2euler.m old mode 100755 new mode 100644 diff --git a/src/server/plugins/sensor_fusion/design/lib/quat2rot_mat.m b/src/server/plugins/sensor_fusion/design/lib/quat2rot_mat.m old mode 100755 new mode 100644 diff --git a/src/server/plugins/sensor_fusion/design/lib/quat_prod.m b/src/server/plugins/sensor_fusion/design/lib/quat_prod.m old mode 100755 new mode 100644 diff --git a/src/server/plugins/sensor_fusion/design/lib/rot_mat2quat.m b/src/server/plugins/sensor_fusion/design/lib/rot_mat2quat.m old mode 100755 new mode 100644 diff --git a/src/server/plugins/sensor_fusion/design/lib/sf_pedometer.m b/src/server/plugins/sensor_fusion/design/lib/sf_pedometer.m old mode 100755 new mode 100644 diff --git a/src/server/plugins/sensor_fusion/design/sf_gaming_rv.m b/src/server/plugins/sensor_fusion/design/sf_gaming_rv.m old mode 100755 new mode 100644 diff --git a/src/server/plugins/sensor_fusion/design/sf_geomagnetic_rv.m b/src/server/plugins/sensor_fusion/design/sf_geomagnetic_rv.m old mode 100755 new mode 100644 diff --git a/src/server/plugins/sensor_fusion/design/sf_gravity.m b/src/server/plugins/sensor_fusion/design/sf_gravity.m old mode 100755 new mode 100644 diff --git a/src/server/plugins/sensor_fusion/design/sf_linear_acceleration.m b/src/server/plugins/sensor_fusion/design/sf_linear_acceleration.m old mode 100755 new mode 100644 diff --git a/src/server/plugins/sensor_fusion/design/sf_orientation.m b/src/server/plugins/sensor_fusion/design/sf_orientation.m old mode 100755 new mode 100644 diff --git a/src/server/plugins/sensor_fusion/matrix.cpp b/src/server/plugins/sensor_fusion/matrix.cpp old mode 100755 new mode 100644 diff --git a/src/server/plugins/sensor_fusion/matrix.h b/src/server/plugins/sensor_fusion/matrix.h old mode 100755 new mode 100644 diff --git a/src/server/plugins/sensor_fusion/quaternion.cpp b/src/server/plugins/sensor_fusion/quaternion.cpp old mode 100755 new mode 100644 diff --git a/src/server/plugins/sensor_fusion/quaternion.h b/src/server/plugins/sensor_fusion/quaternion.h old mode 100755 new mode 100644 diff --git a/src/server/plugins/tilt/tilt_sensor.cpp b/src/server/plugins/tilt/tilt_sensor.cpp old mode 100755 new mode 100644 diff --git a/src/server/plugins/tilt/tilt_sensor.h b/src/server/plugins/tilt/tilt_sensor.h old mode 100755 new mode 100644 diff --git a/src/server/sensor_event_dispatcher.cpp b/src/server/sensor_event_dispatcher.cpp old mode 100755 new mode 100644 diff --git a/src/server/sensor_event_dispatcher.h b/src/server/sensor_event_dispatcher.h old mode 100755 new mode 100644 diff --git a/src/server/sensor_plugin_loader.h b/src/server/sensor_plugin_loader.h old mode 100755 new mode 100644 diff --git a/src/server/server.cpp b/src/server/server.cpp old mode 100755 new mode 100644 diff --git a/src/server/server.h b/src/server/server.h old mode 100755 new mode 100644 diff --git a/src/server/virtual_sensor.cpp b/src/server/virtual_sensor.cpp old mode 100755 new mode 100644 diff --git a/src/server/virtual_sensor.h b/src/server/virtual_sensor.h old mode 100755 new mode 100644 diff --git a/src/server/virtual_sensor_config.cpp b/src/server/virtual_sensor_config.cpp old mode 100755 new mode 100644 diff --git a/src/server/virtual_sensor_config.h b/src/server/virtual_sensor_config.h old mode 100755 new mode 100644 diff --git a/src/server/worker_thread.cpp b/src/server/worker_thread.cpp old mode 100755 new mode 100644 diff --git a/src/server/worker_thread.h b/src/server/worker_thread.h old mode 100755 new mode 100644 diff --git a/src/shared/cbase_lock.cpp b/src/shared/cbase_lock.cpp old mode 100755 new mode 100644 diff --git a/src/shared/cbase_lock.h b/src/shared/cbase_lock.h old mode 100755 new mode 100644 diff --git a/src/shared/cmutex.cpp b/src/shared/cmutex.cpp old mode 100755 new mode 100644 diff --git a/src/shared/cmutex.h b/src/shared/cmutex.h old mode 100755 new mode 100644 diff --git a/src/shared/cpacket.cpp b/src/shared/cpacket.cpp old mode 100755 new mode 100644 diff --git a/src/shared/cpacket.h b/src/shared/cpacket.h old mode 100755 new mode 100644 diff --git a/src/shared/poller.cpp b/src/shared/poller.cpp old mode 100755 new mode 100644 diff --git a/src/shared/poller.h b/src/shared/poller.h old mode 100755 new mode 100644 diff --git a/src/shared/sensor_common.h b/src/shared/sensor_common.h old mode 100755 new mode 100644 diff --git a/src/shared/sensor_internal_deprecated.h b/src/shared/sensor_internal_deprecated.h old mode 100755 new mode 100644 diff --git a/src/shared/sensor_logs.h b/src/shared/sensor_logs.h old mode 100755 new mode 100644 diff --git a/systemd/sensord.service b/systemd/sensord.service old mode 100755 new mode 100644 diff --git a/systemd/sensord.socket b/systemd/sensord.socket old mode 100755 new mode 100644 diff --git a/test/src/api-test.c b/test/src/api-test.c old mode 100755 new mode 100644 diff --git a/test/src/check-sensor.c b/test/src/check-sensor.c old mode 100755 new mode 100644 diff --git a/test/src/fusion-data-collection.c b/test/src/fusion-data-collection.c old mode 100755 new mode 100644 diff --git a/test/src/multi-process-performance-test.c b/test/src/multi-process-performance-test.c old mode 100755 new mode 100644 diff --git a/test/src/sensor-test.c b/test/src/sensor-test.c old mode 100755 new mode 100644 diff --git a/virtual_sensors.xml b/virtual_sensors.xml old mode 100755 new mode 100644 -- 2.7.4 From 9d2553a4dc07802e4917d3507353a3e3da042b28 Mon Sep 17 00:00:00 2001 From: "kibak.yoon" Date: Fri, 22 Jan 2016 15:27:06 +0900 Subject: [PATCH 02/16] sensord: auto-rotation: clean up if statement code Signed-off-by: kibak.yoon Change-Id: I7154ab74fa5153ac63c1de04bd436337f8ef0595 --- .../plugins/auto_rotation/auto_rotation_sensor.cpp | 46 +++++++++++----------- 1 file changed, 23 insertions(+), 23 deletions(-) diff --git a/src/server/plugins/auto_rotation/auto_rotation_sensor.cpp b/src/server/plugins/auto_rotation/auto_rotation_sensor.cpp index 4ef30fa..9b6caaa 100644 --- a/src/server/plugins/auto_rotation/auto_rotation_sensor.cpp +++ b/src/server/plugins/auto_rotation/auto_rotation_sensor.cpp @@ -170,31 +170,31 @@ bool auto_rotation_sensor::on_stop(void) void auto_rotation_sensor::synthesize(const sensor_event_t& event, vector &outs) { - if (event.event_type == ACCELEROMETER_RAW_DATA_EVENT) { - int rotation; - float acc[3]; - acc[0] = event.data.values[0]; - acc[1] = event.data.values[1]; - acc[2] = event.data.values[2]; - - if (!m_alg->get_rotation(acc, event.data.timestamp, m_rotation, rotation)) - return; - - sensor_event_t rotation_event; - - INFO("Rotation: %d, ACC[0]: %f, ACC[1]: %f, ACC[2]: %f", rotation, event.data.values[0], event.data.values[1], event.data.values[2]); - rotation_event.sensor_id = get_id(); - rotation_event.data.accuracy = SENSOR_ACCURACY_GOOD; - rotation_event.event_type = AUTO_ROTATION_CHANGE_STATE_EVENT; - rotation_event.data.timestamp = event.data.timestamp; - rotation_event.data.values[0] = rotation; - rotation_event.data.value_count = 1; - outs.push_back(rotation_event); - m_rotation = rotation; - m_rotation_time = event.data.timestamp; + if (event.event_type != ACCELEROMETER_RAW_DATA_EVENT) + return; + + int rotation; + float acc[3]; + acc[0] = event.data.values[0]; + acc[1] = event.data.values[1]; + acc[2] = event.data.values[2]; + if (!m_alg->get_rotation(acc, event.data.timestamp, m_rotation, rotation)) return; - } + + sensor_event_t rotation_event; + + INFO("Rotation: %d, ACC[0]: %f, ACC[1]: %f, ACC[2]: %f", rotation, event.data.values[0], event.data.values[1], event.data.values[2]); + rotation_event.sensor_id = get_id(); + rotation_event.data.accuracy = SENSOR_ACCURACY_GOOD; + rotation_event.event_type = AUTO_ROTATION_CHANGE_STATE_EVENT; + rotation_event.data.timestamp = event.data.timestamp; + rotation_event.data.values[0] = rotation; + rotation_event.data.value_count = 1; + outs.push_back(rotation_event); + m_rotation = rotation; + m_rotation_time = event.data.timestamp; + return; } -- 2.7.4 From 88d149299ffe8e13a14a8cf36291d90655aacbfc Mon Sep 17 00:00:00 2001 From: "kibak.yoon" Date: Fri, 22 Jan 2016 15:37:59 +0900 Subject: [PATCH 03/16] sensord: add std::nothrow to using new operator Change-Id: I8d714bc57b96057852318e87934db9dce3bfb4c0 Signed-off-by: kibak.yoon --- src/server/sensor_plugin_loader.cpp.in | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/src/server/sensor_plugin_loader.cpp.in b/src/server/sensor_plugin_loader.cpp.in index d4b1f01..366b3ab 100644 --- a/src/server/sensor_plugin_loader.cpp.in +++ b/src/server/sensor_plugin_loader.cpp.in @@ -150,7 +150,12 @@ bool sensor_plugin_loader::insert_sensors(sensor_hal *hal) int idx; idx = m_sensors.count(sensors[i].type); - phy_sensor = new physical_sensor(); + phy_sensor = new(std::nothrow) physical_sensor(); + if (!phy_sensor) { + ERR("Memory allocation failed[%s]", sensors[i].name.c_str()); + continue; + } + phy_sensor->set_id(idx << SENSOR_INDEX_SHIFT | sensors[i].type); phy_sensor->set_sensor_handle(sensors[i]); phy_sensor->set_sensor_hal(hal); -- 2.7.4 From 00225d7077779a4c3aae751dff4b2b5f6457d388 Mon Sep 17 00:00:00 2001 From: "kibak.yoon" Date: Fri, 22 Jan 2016 20:36:53 +0900 Subject: [PATCH 04/16] sensord: rename interface of HAL for managing it easily Change-Id: Ide316de6e6bec76c20d0d8a827d83a821af2df61 Signed-off-by: kibak.yoon --- src/server/CMakeLists.txt | 2 +- src/server/command_worker.cpp | 6 +- src/server/main.cpp | 4 +- src/server/permission_checker.cpp | 4 +- src/server/physical_sensor.cpp | 30 +- src/server/physical_sensor.h | 10 +- .../plugins/auto_rotation/auto_rotation_sensor.cpp | 4 +- src/server/plugins/fusion/fusion_sensor.cpp | 8 +- src/server/plugins/gravity/gravity_sensor.cpp | 12 +- .../plugins/linear_accel/linear_accel_sensor.cpp | 12 +- .../plugins/orientation/orientation_sensor.cpp | 12 +- .../rotation_vector/gaming_rv/gaming_rv_sensor.cpp | 8 +- .../geomagnetic_rv/geomagnetic_rv_sensor.cpp | 10 +- .../plugins/rotation_vector/rv/rv_sensor.cpp | 12 +- src/server/plugins/tilt/tilt_sensor.cpp | 6 +- src/server/sensor_event_poller.cpp | 12 +- src/server/sensor_event_poller.h | 4 +- src/server/sensor_loader.cpp.in | 285 ++++++++++++++++++ .../{sensor_plugin_loader.h => sensor_loader.h} | 21 +- src/server/sensor_plugin_loader.cpp.in | 322 --------------------- src/server/server.cpp | 2 +- src/shared/sensor_hal.h | 113 ++++---- src/shared/sf_common.h | 8 +- 23 files changed, 436 insertions(+), 471 deletions(-) create mode 100644 src/server/sensor_loader.cpp.in rename src/server/{sensor_plugin_loader.h => sensor_loader.h} (71%) delete mode 100644 src/server/sensor_plugin_loader.cpp.in diff --git a/src/server/CMakeLists.txt b/src/server/CMakeLists.txt index a17facd..7a5a888 100644 --- a/src/server/CMakeLists.txt +++ b/src/server/CMakeLists.txt @@ -8,7 +8,7 @@ add_subdirectory(plugins) add_definitions(${PLUGIN_DEFS}) -configure_file(sensor_plugin_loader.cpp.in sensor_plugin_loader.cpp) +configure_file(sensor_loader.cpp.in sensor_loader.cpp) INCLUDE_DIRECTORIES(include) FILE(GLOB SERVER_SRCS *.c *.cpp) diff --git a/src/server/command_worker.cpp b/src/server/command_worker.cpp index e0359f2..1e1ae3b 100644 --- a/src/server/command_worker.cpp +++ b/src/server/command_worker.cpp @@ -18,7 +18,7 @@ */ #include -#include +#include #include #include #include @@ -144,7 +144,7 @@ void command_worker::make_sensor_raw_data_map(void) sensor_info info; int permission; - sensors = sensor_plugin_loader::get_instance().get_sensors(ALL_SENSOR); + sensors = sensor_loader::get_instance().get_sensors(ALL_SENSOR); std::sort(sensors.begin(), sensors.end()); auto last = std::unique(sensors.begin(), sensors.end()); @@ -397,7 +397,7 @@ bool command_worker::cmd_hello(void *payload) if (m_permission == SENSOR_PERMISSION_NONE) get_client_info_manager().get_permission(m_client_id, m_permission); - m_module = (sensor_base *)sensor_plugin_loader::get_instance().get_sensor(cmd->sensor); + m_module = (sensor_base *)sensor_loader::get_instance().get_sensor(cmd->sensor); if (!m_module) { ERR("Sensor type[%d] is not supported", cmd->sensor); diff --git a/src/server/main.cpp b/src/server/main.cpp index 28c425e..35805a7 100644 --- a/src/server/main.cpp +++ b/src/server/main.cpp @@ -21,7 +21,7 @@ #include #include #include -#include +#include #include using std::string; @@ -57,7 +57,7 @@ int main(int argc, char *argv[]) signal_init(); - sensor_plugin_loader::get_instance().load_plugins(); + sensor_loader::get_instance().load_sensors(); server::get_instance().run(); diff --git a/src/server/permission_checker.cpp b/src/server/permission_checker.cpp index e06e680..aa700b8 100644 --- a/src/server/permission_checker.cpp +++ b/src/server/permission_checker.cpp @@ -23,7 +23,7 @@ #include #include #include -#include +#include #include static cynara *cynara_env = NULL; @@ -82,7 +82,7 @@ void permission_checker::init() m_permission_infos.push_back(std::make_shared (SENSOR_PERMISSION_BIO, true, "http://tizen.org/privilege/healthinfo")); std::vector sensors; - sensors = sensor_plugin_loader::get_instance().get_sensors(ALL_SENSOR); + sensors = sensor_loader::get_instance().get_sensors(ALL_SENSOR); for (unsigned int i = 0; i < sensors.size(); ++i) m_permission_set |= sensors[i]->get_permission(); diff --git a/src/server/physical_sensor.cpp b/src/server/physical_sensor.cpp index b108682..71de409 100644 --- a/src/server/physical_sensor.cpp +++ b/src/server/physical_sensor.cpp @@ -23,7 +23,7 @@ #define UNKNOWN_NAME "UNKNOWN_SENSOR" physical_sensor::physical_sensor() -: m_sensor_hal(NULL) +: m_sensor_device(NULL) { } @@ -43,7 +43,7 @@ unsigned int physical_sensor::get_event_type(void) return m_handle.event_type; } -const char* physical_sensor::get_name() +const char* physical_sensor::get_name(void) { if (m_handle.name.empty()) return UNKNOWN_NAME; @@ -60,40 +60,40 @@ void physical_sensor::set_sensor_handle(sensor_handle_t handle) m_handle.properties = handle.properties; } -void physical_sensor::set_sensor_hal(sensor_hal *hal) +void physical_sensor::set_sensor_device(sensor_device *device) { - m_sensor_hal = hal; + m_sensor_device = device; } int physical_sensor::get_poll_fd() { AUTOLOCK(m_mutex); - if (!m_sensor_hal) + if (!m_sensor_device) return -1; - return m_sensor_hal->get_poll_fd(); + return m_sensor_device->get_poll_fd(); } bool physical_sensor::on_start() { AUTOLOCK(m_mutex); - return m_sensor_hal->enable(m_handle.id); + return m_sensor_device->enable(m_handle.id); } bool physical_sensor::on_stop() { AUTOLOCK(m_mutex); - return m_sensor_hal->disable(m_handle.id); + return m_sensor_device->disable(m_handle.id); } long physical_sensor::set_command(unsigned int cmd, long value) { AUTOLOCK(m_mutex); - return m_sensor_hal->set_command(m_handle.id, std::to_string(cmd), std::to_string(value)); + return m_sensor_device->set_command(m_handle.id, std::to_string(cmd), std::to_string(value)); } bool physical_sensor::set_interval(unsigned long interval) @@ -102,7 +102,7 @@ bool physical_sensor::set_interval(unsigned long interval) INFO("Polling interval is set to %dms", interval); - return m_sensor_hal->set_interval(m_handle.id, interval); + return m_sensor_device->set_interval(m_handle.id, interval); } bool physical_sensor::set_batch(unsigned long latency) @@ -111,7 +111,7 @@ bool physical_sensor::set_batch(unsigned long latency) INFO("Polling interval is set to %dms", latency); - return m_sensor_hal->set_batch_latency(m_handle.id, latency); + return m_sensor_device->set_batch_latency(m_handle.id, latency); } bool physical_sensor::set_wakeup(int wakeup) @@ -123,14 +123,14 @@ bool physical_sensor::is_data_ready(void) { AUTOLOCK(m_mutex); - return m_sensor_hal->is_data_ready(); + return m_sensor_device->is_data_ready(); } int physical_sensor::get_sensor_data(sensor_data_t &data) { AUTOLOCK(m_mutex); - if (!m_sensor_hal->get_sensor_data(m_handle.id, data)) { + if (!m_sensor_device->get_sensor_data(m_handle.id, data)) { ERR("Failed to get sensor data"); return -1; } @@ -143,7 +143,7 @@ int physical_sensor::get_sensor_event(sensor_event_t **event) AUTOLOCK(m_mutex); int event_length = -1; - event_length = m_sensor_hal->get_sensor_event(m_handle.id, event); + event_length = m_sensor_device->get_sensor_event(m_handle.id, event); if (event_length < 0) { ERR("Failed to get sensor event"); @@ -155,6 +155,6 @@ int physical_sensor::get_sensor_event(sensor_event_t **event) bool physical_sensor::get_properties(sensor_properties_s &properties) { - return m_sensor_hal->get_properties(m_handle.id, properties); + return m_sensor_device->get_properties(m_handle.id, properties); } diff --git a/src/server/physical_sensor.h b/src/server/physical_sensor.h index 2fb245a..2c7742f 100644 --- a/src/server/physical_sensor.h +++ b/src/server/physical_sensor.h @@ -32,10 +32,10 @@ public: /* setting module */ void set_sensor_handle(sensor_handle_t handle); - void set_sensor_hal(sensor_hal *hal); + void set_sensor_device(sensor_device *device); /* module info */ - virtual sensor_type_t get_type(); + virtual sensor_type_t get_type(void); virtual unsigned int get_event_type(void); virtual const char* get_name(void); @@ -48,13 +48,13 @@ public: private: sensor_handle_t m_handle; - sensor_hal *m_sensor_hal; + sensor_device *m_sensor_device; virtual bool set_interval(unsigned long interval); virtual bool set_wakeup(int wakeup); virtual bool set_batch(unsigned long latency); - virtual bool on_start(); - virtual bool on_stop(); + virtual bool on_start(void); + virtual bool on_stop(void); virtual long set_command(unsigned int cmd, long value); virtual bool get_properties(sensor_properties_s &properties); }; diff --git a/src/server/plugins/auto_rotation/auto_rotation_sensor.cpp b/src/server/plugins/auto_rotation/auto_rotation_sensor.cpp index 9b6caaa..c78a743 100644 --- a/src/server/plugins/auto_rotation/auto_rotation_sensor.cpp +++ b/src/server/plugins/auto_rotation/auto_rotation_sensor.cpp @@ -31,7 +31,7 @@ #include #include -#include +#include #include #include #include @@ -124,7 +124,7 @@ auto_rotation_alg *auto_rotation_sensor::get_alg() bool auto_rotation_sensor::init() { - m_accel_sensor = sensor_plugin_loader::get_instance().get_sensor(ACCELEROMETER_SENSOR); + m_accel_sensor = sensor_loader::get_instance().get_sensor(ACCELEROMETER_SENSOR); if (!m_accel_sensor) { ERR("cannot load accel sensor_hal[%s]", sensor_base::get_name()); diff --git a/src/server/plugins/fusion/fusion_sensor.cpp b/src/server/plugins/fusion/fusion_sensor.cpp index a2f9183..49d3f9e 100644 --- a/src/server/plugins/fusion/fusion_sensor.cpp +++ b/src/server/plugins/fusion/fusion_sensor.cpp @@ -28,7 +28,7 @@ #include #include #include -#include +#include #include #include #include @@ -165,9 +165,9 @@ fusion_sensor::~fusion_sensor() bool fusion_sensor::init(void) { - m_accel_sensor = sensor_plugin_loader::get_instance().get_sensor(ACCELEROMETER_SENSOR); - m_gyro_sensor = sensor_plugin_loader::get_instance().get_sensor(GYROSCOPE_SENSOR); - m_magnetic_sensor = sensor_plugin_loader::get_instance().get_sensor(GEOMAGNETIC_SENSOR); + m_accel_sensor = sensor_loader::get_instance().get_sensor(ACCELEROMETER_SENSOR); + m_gyro_sensor = sensor_loader::get_instance().get_sensor(GYROSCOPE_SENSOR); + m_magnetic_sensor = sensor_loader::get_instance().get_sensor(GEOMAGNETIC_SENSOR); if (!m_accel_sensor) { ERR("Failed to load accel sensor: 0x%x", m_accel_sensor); diff --git a/src/server/plugins/gravity/gravity_sensor.cpp b/src/server/plugins/gravity/gravity_sensor.cpp index b77bac4..b39218f 100644 --- a/src/server/plugins/gravity/gravity_sensor.cpp +++ b/src/server/plugins/gravity/gravity_sensor.cpp @@ -28,7 +28,7 @@ #include #include #include -#include +#include #include using std::string; @@ -69,7 +69,7 @@ gravity_sensor::gravity_sensor() { virtual_sensor_config &config = virtual_sensor_config::get_instance(); - sensor_hal *fusion_sensor_hal = sensor_plugin_loader::get_instance().get_sensor_hal(SENSOR_HAL_TYPE_FUSION); + sensor_hal *fusion_sensor_hal = sensor_loader::get_instance().get_sensor_hal(SENSOR_HAL_TYPE_FUSION); if (!fusion_sensor_hal) m_hardware_fusion = false; else @@ -144,11 +144,11 @@ gravity_sensor::~gravity_sensor() bool gravity_sensor::init() { - m_accel_sensor = sensor_plugin_loader::get_instance().get_sensor(ACCELEROMETER_SENSOR); - m_gyro_sensor = sensor_plugin_loader::get_instance().get_sensor(GYROSCOPE_SENSOR); - m_magnetic_sensor = sensor_plugin_loader::get_instance().get_sensor(GEOMAGNETIC_SENSOR); + m_accel_sensor = sensor_loader::get_instance().get_sensor(ACCELEROMETER_SENSOR); + m_gyro_sensor = sensor_loader::get_instance().get_sensor(GYROSCOPE_SENSOR); + m_magnetic_sensor = sensor_loader::get_instance().get_sensor(GEOMAGNETIC_SENSOR); - m_fusion_sensor = sensor_plugin_loader::get_instance().get_sensor(FUSION_SENSOR); + m_fusion_sensor = sensor_loader::get_instance().get_sensor(FUSION_SENSOR); if (!m_accel_sensor || !m_gyro_sensor || !m_magnetic_sensor || !m_fusion_sensor) { ERR("Failed to load sensors, accel: 0x%x, gyro: 0x%x, mag: 0x%x, fusion: 0x%x", diff --git a/src/server/plugins/linear_accel/linear_accel_sensor.cpp b/src/server/plugins/linear_accel/linear_accel_sensor.cpp index f320885..3c194f3 100644 --- a/src/server/plugins/linear_accel/linear_accel_sensor.cpp +++ b/src/server/plugins/linear_accel/linear_accel_sensor.cpp @@ -28,7 +28,7 @@ #include #include #include -#include +#include #include using std::string; @@ -81,7 +81,7 @@ linear_accel_sensor::linear_accel_sensor() m_enable_linear_accel = 0; register_supported_event(LINEAR_ACCEL_RAW_DATA_EVENT); - sensor_hal *fusion_sensor_hal = sensor_plugin_loader::get_instance().get_sensor_hal(SENSOR_HAL_TYPE_FUSION); + sensor_hal *fusion_sensor_hal = sensor_loader::get_instance().get_sensor_hal(SENSOR_HAL_TYPE_FUSION); if (!fusion_sensor_hal) m_hardware_fusion = false; else @@ -174,11 +174,11 @@ linear_accel_sensor::~linear_accel_sensor() bool linear_accel_sensor::init() { - m_accel_sensor = sensor_plugin_loader::get_instance().get_sensor(ACCELEROMETER_SENSOR); - m_gyro_sensor = sensor_plugin_loader::get_instance().get_sensor(GYROSCOPE_SENSOR); - m_magnetic_sensor = sensor_plugin_loader::get_instance().get_sensor(GEOMAGNETIC_SENSOR); + m_accel_sensor = sensor_loader::get_instance().get_sensor(ACCELEROMETER_SENSOR); + m_gyro_sensor = sensor_loader::get_instance().get_sensor(GYROSCOPE_SENSOR); + m_magnetic_sensor = sensor_loader::get_instance().get_sensor(GEOMAGNETIC_SENSOR); - m_fusion_sensor = sensor_plugin_loader::get_instance().get_sensor(FUSION_SENSOR); + m_fusion_sensor = sensor_loader::get_instance().get_sensor(FUSION_SENSOR); if (!m_accel_sensor || !m_gyro_sensor || !m_magnetic_sensor || !m_fusion_sensor) { ERR("Failed to load sensors, accel: 0x%x, gyro: 0x%x, mag: 0x%x, fusion: 0x%x", diff --git a/src/server/plugins/orientation/orientation_sensor.cpp b/src/server/plugins/orientation/orientation_sensor.cpp index a4200d5..2775c4c 100644 --- a/src/server/plugins/orientation/orientation_sensor.cpp +++ b/src/server/plugins/orientation/orientation_sensor.cpp @@ -28,7 +28,7 @@ #include #include #include -#include +#include #include #include @@ -64,7 +64,7 @@ orientation_sensor::orientation_sensor() { virtual_sensor_config &config = virtual_sensor_config::get_instance(); - sensor_hal *fusion_sensor_hal = sensor_plugin_loader::get_instance().get_sensor_hal(SENSOR_HAL_TYPE_FUSION); + sensor_hal *fusion_sensor_hal = sensor_loader::get_instance().get_sensor_hal(SENSOR_HAL_TYPE_FUSION); if (!fusion_sensor_hal) m_hardware_fusion = false; else @@ -125,11 +125,11 @@ orientation_sensor::~orientation_sensor() bool orientation_sensor::init(void) { - m_accel_sensor = sensor_plugin_loader::get_instance().get_sensor(ACCELEROMETER_SENSOR); - m_gyro_sensor = sensor_plugin_loader::get_instance().get_sensor(GYROSCOPE_SENSOR); - m_magnetic_sensor = sensor_plugin_loader::get_instance().get_sensor(GEOMAGNETIC_SENSOR); + m_accel_sensor = sensor_loader::get_instance().get_sensor(ACCELEROMETER_SENSOR); + m_gyro_sensor = sensor_loader::get_instance().get_sensor(GYROSCOPE_SENSOR); + m_magnetic_sensor = sensor_loader::get_instance().get_sensor(GEOMAGNETIC_SENSOR); - m_fusion_sensor = sensor_plugin_loader::get_instance().get_sensor(FUSION_SENSOR); + m_fusion_sensor = sensor_loader::get_instance().get_sensor(FUSION_SENSOR); if (!m_accel_sensor || !m_gyro_sensor || !m_magnetic_sensor || !m_fusion_sensor) { ERR("Failed to load sensors, accel: 0x%x, gyro: 0x%x, mag: 0x%x, fusion: 0x%x", diff --git a/src/server/plugins/rotation_vector/gaming_rv/gaming_rv_sensor.cpp b/src/server/plugins/rotation_vector/gaming_rv/gaming_rv_sensor.cpp index df3b168..ac19b63 100644 --- a/src/server/plugins/rotation_vector/gaming_rv/gaming_rv_sensor.cpp +++ b/src/server/plugins/rotation_vector/gaming_rv/gaming_rv_sensor.cpp @@ -28,7 +28,7 @@ #include #include #include -#include +#include #include #include @@ -65,7 +65,7 @@ gaming_rv_sensor::gaming_rv_sensor() { virtual_sensor_config &config = virtual_sensor_config::get_instance(); - sensor_hal *fusion_sensor_hal = sensor_plugin_loader::get_instance().get_sensor_hal(SENSOR_HAL_TYPE_FUSION); + sensor_hal *fusion_sensor_hal = sensor_loader::get_instance().get_sensor_hal(SENSOR_HAL_TYPE_FUSION); if (!fusion_sensor_hal) m_hardware_fusion = false; else @@ -129,8 +129,8 @@ gaming_rv_sensor::~gaming_rv_sensor() bool gaming_rv_sensor::init() { - m_accel_sensor = sensor_plugin_loader::get_instance().get_sensor(ACCELEROMETER_SENSOR); - m_gyro_sensor = sensor_plugin_loader::get_instance().get_sensor(GYROSCOPE_SENSOR); + m_accel_sensor = sensor_loader::get_instance().get_sensor(ACCELEROMETER_SENSOR); + m_gyro_sensor = sensor_loader::get_instance().get_sensor(GYROSCOPE_SENSOR); if (!m_accel_sensor || !m_gyro_sensor) { ERR("Failed to load sensors, accel: 0x%x, gyro: 0x%x", diff --git a/src/server/plugins/rotation_vector/geomagnetic_rv/geomagnetic_rv_sensor.cpp b/src/server/plugins/rotation_vector/geomagnetic_rv/geomagnetic_rv_sensor.cpp index 6bfdaf4..43abcf2 100644 --- a/src/server/plugins/rotation_vector/geomagnetic_rv/geomagnetic_rv_sensor.cpp +++ b/src/server/plugins/rotation_vector/geomagnetic_rv/geomagnetic_rv_sensor.cpp @@ -28,7 +28,7 @@ #include #include #include -#include +#include #include #include @@ -53,7 +53,7 @@ geomagnetic_rv_sensor::geomagnetic_rv_sensor() { virtual_sensor_config &config = virtual_sensor_config::get_instance(); - sensor_hal *fusion_sensor_hal = sensor_plugin_loader::get_instance().get_sensor_hal(SENSOR_HAL_TYPE_FUSION); + sensor_hal *fusion_sensor_hal = sensor_loader::get_instance().get_sensor_hal(SENSOR_HAL_TYPE_FUSION); if (!fusion_sensor_hal) m_hardware_fusion = false; else @@ -86,10 +86,10 @@ geomagnetic_rv_sensor::~geomagnetic_rv_sensor() bool geomagnetic_rv_sensor::init() { - m_accel_sensor = sensor_plugin_loader::get_instance().get_sensor(ACCELEROMETER_SENSOR); - m_magnetic_sensor = sensor_plugin_loader::get_instance().get_sensor(GEOMAGNETIC_SENSOR); + m_accel_sensor = sensor_loader::get_instance().get_sensor(ACCELEROMETER_SENSOR); + m_magnetic_sensor = sensor_loader::get_instance().get_sensor(GEOMAGNETIC_SENSOR); - m_fusion_sensor = sensor_plugin_loader::get_instance().get_sensor(FUSION_SENSOR); + m_fusion_sensor = sensor_loader::get_instance().get_sensor(FUSION_SENSOR); if (!m_accel_sensor || !m_magnetic_sensor || !m_fusion_sensor) { ERR("Failed to load sensors, accel: 0x%x, mag: 0x%x, fusion: 0x%x", diff --git a/src/server/plugins/rotation_vector/rv/rv_sensor.cpp b/src/server/plugins/rotation_vector/rv/rv_sensor.cpp index 08d1353..3a98182 100644 --- a/src/server/plugins/rotation_vector/rv/rv_sensor.cpp +++ b/src/server/plugins/rotation_vector/rv/rv_sensor.cpp @@ -28,7 +28,7 @@ #include #include #include -#include +#include #include #include @@ -59,7 +59,7 @@ rv_sensor::rv_sensor() virtual_sensor_config &config = virtual_sensor_config::get_instance(); // Will check if fusion_sensor is in the list of hal sensors. - sensor_hal *fusion_sensor_hal = sensor_plugin_loader::get_instance().get_sensor_hal(SENSOR_HAL_TYPE_FUSION); + sensor_hal *fusion_sensor_hal = sensor_loader::get_instance().get_sensor_hal(SENSOR_HAL_TYPE_FUSION); if (!fusion_sensor_hal) m_hardware_fusion = false; else @@ -93,11 +93,11 @@ rv_sensor::~rv_sensor() bool rv_sensor::init() { - m_accel_sensor = sensor_plugin_loader::get_instance().get_sensor(ACCELEROMETER_SENSOR); - m_gyro_sensor = sensor_plugin_loader::get_instance().get_sensor(GYROSCOPE_SENSOR); - m_magnetic_sensor = sensor_plugin_loader::get_instance().get_sensor(GEOMAGNETIC_SENSOR); + m_accel_sensor = sensor_loader::get_instance().get_sensor(ACCELEROMETER_SENSOR); + m_gyro_sensor = sensor_loader::get_instance().get_sensor(GYROSCOPE_SENSOR); + m_magnetic_sensor = sensor_loader::get_instance().get_sensor(GEOMAGNETIC_SENSOR); - m_fusion_sensor = sensor_plugin_loader::get_instance().get_sensor(FUSION_SENSOR); + m_fusion_sensor = sensor_loader::get_instance().get_sensor(FUSION_SENSOR); if (!m_accel_sensor || !m_gyro_sensor || !m_magnetic_sensor || !m_fusion_sensor) { ERR("Failed to load sensors, accel: 0x%x, gyro: 0x%x, mag: 0x%x, fusion: 0x%x", diff --git a/src/server/plugins/tilt/tilt_sensor.cpp b/src/server/plugins/tilt/tilt_sensor.cpp index a7830fe..ef1a088 100644 --- a/src/server/plugins/tilt/tilt_sensor.cpp +++ b/src/server/plugins/tilt/tilt_sensor.cpp @@ -28,7 +28,7 @@ #include #include #include -#include +#include #include #include @@ -109,8 +109,8 @@ tilt_sensor::~tilt_sensor() bool tilt_sensor::init(void) { - m_accel_sensor = sensor_plugin_loader::get_instance().get_sensor(ACCELEROMETER_SENSOR); - m_fusion_sensor = sensor_plugin_loader::get_instance().get_sensor(FUSION_SENSOR); + m_accel_sensor = sensor_loader::get_instance().get_sensor(ACCELEROMETER_SENSOR); + m_fusion_sensor = sensor_loader::get_instance().get_sensor(FUSION_SENSOR); if (!m_accel_sensor || !m_fusion_sensor) { ERR("Failed to load sensors, accel: 0x%x, fusion: 0x%x", diff --git a/src/server/sensor_event_poller.cpp b/src/server/sensor_event_poller.cpp index 2a8ec96..b02b624 100644 --- a/src/server/sensor_event_poller.cpp +++ b/src/server/sensor_event_poller.cpp @@ -21,7 +21,7 @@ #include #include #include -#include +#include #define EPOLL_MAX_FD 32 @@ -41,7 +41,7 @@ void sensor_event_poller::init_sensor_map() physical_sensor *sensor; std::vector sensors; - sensors = sensor_plugin_loader::get_instance().get_sensors(ALL_SENSOR); + sensors = sensor_loader::get_instance().get_sensors(ALL_SENSOR); auto it_sensor = sensors.begin(); @@ -61,7 +61,7 @@ void sensor_event_poller::init_sensor_map() void sensor_event_poller::init_fd() { - fd_sensor_plugins::iterator it; + fd_sensors_t::iterator it; for (it = m_fd_sensors.begin(); it != m_fd_sensors.end(); it = m_fd_sensors.upper_bound(it->first)) { if (!add_poll_fd(it->first)) continue; @@ -95,14 +95,14 @@ bool sensor_event_poller::poll() bool sensor_event_poller::is_data_ready(int fd) { - fd_sensor_plugins::iterator it; + fd_sensors_t::iterator it; physical_sensor *sensor; it = m_fd_sensors.find(fd); sensor = dynamic_cast(it->second); if (!sensor) { - ERR("Failed to get sensor plugin"); + ERR("Failed to get sensor"); return false; } @@ -115,7 +115,7 @@ bool sensor_event_poller::is_data_ready(int fd) bool sensor_event_poller::process_event(int fd) { physical_sensor *sensor; - std::pair ret; + std::pair ret; ret = m_fd_sensors.equal_range(fd); diff --git a/src/server/sensor_event_poller.h b/src/server/sensor_event_poller.h index 21f3240..a290b42 100644 --- a/src/server/sensor_event_poller.h +++ b/src/server/sensor_event_poller.h @@ -24,7 +24,7 @@ #include #include -typedef std::multimap fd_sensor_plugins; +typedef std::multimap fd_sensors_t; class sensor_event_poller { public: @@ -34,7 +34,7 @@ public: bool poll(); private: poller m_poller; - fd_sensor_plugins m_fd_sensors; + fd_sensors_t m_fd_sensors; void init_fd(); void init_sensor_map(); diff --git a/src/server/sensor_loader.cpp.in b/src/server/sensor_loader.cpp.in new file mode 100644 index 0000000..6fd1dfd --- /dev/null +++ b/src/server/sensor_loader.cpp.in @@ -0,0 +1,285 @@ +/* + * libsensord-share + * + * Copyright (c) 2014 Samsung Electronics Co., Ltd. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + */ + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#ifdef ENABLE_AUTO_ROTATION +#include +#endif + +using std::vector; +using std::string; + +#define DEVICE_PLUGINS_DIR_PATH "/usr/lib/sensor" +#define SENSOR_INDEX_SHIFT 16 + +sensor_loader::sensor_loader() +{ +} + +sensor_loader& sensor_loader::get_instance() +{ + static sensor_loader inst; + return inst; +} + +bool sensor_loader::load_devices(const string &path, vector &devices, void* &handle) +{ + INFO("load device: [%s]", path.c_str()); + + void *_handle = dlopen(path.c_str(), RTLD_NOW); + + if (!_handle) { + ERR("Failed to dlopen(%s), dlerror : %s", path.c_str(), dlerror()); + return false; + } + + dlerror(); + + create_t create_devices = (create_t) dlsym(_handle, "create"); + + if (!create_devices) { + ERR("Failed to find symbols in %s", path.c_str()); + dlclose(_handle); + return false; + } + + sensor_devices *_devices = create_devices(); + + if (!_devices) { + ERR("Failed to create devices, path is %s\n", path.c_str()); + dlclose(_handle); + return false; + } + + devices.clear(); + devices.swap(_devices->devices); + + delete _devices; + handle = _handle; + + return true; +} + +physical_sensor* sensor_loader::create_sensor(sensor_handle_t handle, sensor_device *device) +{ + int index; + physical_sensor *sensor; + + index = m_sensors.count(handle.type); + + sensor = new(std::nothrow) physical_sensor(); + if (!sensor) { + ERR("Memory allocation failed[%s]", handle.name.c_str()); + return NULL; + } + + sensor->set_id(index << SENSOR_INDEX_SHIFT | handle.type); + sensor->set_sensor_handle(handle); + sensor->set_sensor_device(device); + + return sensor; +} + +bool sensor_loader::insert_sensors(std::vector devices) +{ + sensor_device *device; + vector handles; + physical_sensor *sensor; + + for (void *device_ptr : devices) { + device = static_cast(device_ptr); + device->get_sensors(handles); + + for (unsigned int i = 0; i < handles.size(); ++i) { + sensor = create_sensor(handles[i], device); + if (!sensor) + continue; + + std::shared_ptr sensor_ptr(sensor); + m_sensors.insert(std::make_pair(handles[i].type, sensor_ptr)); + + INFO("inserted [%s] sensor", sensor->get_name()); + } + } + + return true; +} + +bool sensor_loader::load_sensors(void) +{ + vector device_plugin_paths; + vector unique_device_plugin_paths; + + get_paths_from_dir(string(DEVICE_PLUGINS_DIR_PATH), device_plugin_paths); + + std::unordered_set s; + auto unique = [&s](vector &paths, const string &path) { + if (s.insert(path).second) + paths.push_back(path); + }; + + for_each(device_plugin_paths.begin(), device_plugin_paths.end(), + [&](const string &path) { + unique(unique_device_plugin_paths, path); + } + ); + + for_each(unique_device_plugin_paths.begin(), unique_device_plugin_paths.end(), + [&](const string &path) { + void *handle; + std::vector devices; + + load_devices(path, devices, handle); + insert_sensors(devices); + } + ); + +#ifdef ENABLE_AUTO_ROTATION + auto_rotation_sensor* auto_rot_sensor_ptr = NULL; + try { + auto_rot_sensor_ptr = new(std::nothrow) auto_rotation_sensor; + } catch (int err) { + ERR("Failed to create auto_rotation_sensor, err: %d, cause: %s", err, strerror(err)); + } + if (auto_rot_sensor_ptr != NULL) { + std::shared_ptr sensor(auto_rot_sensor_ptr); + sensor_device_type type; + + type = static_cast(sensor->get_type()); + sensor->set_id(type); + + m_sensors.insert(std::make_pair(type, sensor)); + } +#endif + + show_sensor_info(); + return true; +} + +void sensor_loader::show_sensor_info(void) +{ + INFO("========== Loaded sensor information ==========\n"); + + int index = 0; + + auto it = m_sensors.begin(); + + while (it != m_sensors.end()) { + sensor_base *sensor = it->second.get(); + + sensor_info info; + sensor->get_sensor_info(info); + INFO("No:%d [%s]\n", ++index, sensor->get_name()); + info.show(); + it++; + } + + INFO("===============================================\n"); +} + +bool sensor_loader::get_paths_from_dir(const string &dir_path, vector &plugin_paths) +{ + DIR *dir = NULL; + struct dirent *dir_entry = NULL; + + dir = opendir(dir_path.c_str()); + + if (!dir) { + ERR("Failed to open dir: %s", dir_path.c_str()); + return false; + } + + string name; + + while ((dir_entry = readdir(dir))) { + name = string(dir_entry->d_name); + plugin_paths.push_back(dir_path + "/" + name); + } + + closedir(dir); + return true; +} + +sensor_base* sensor_loader::get_sensor(sensor_type_t type) +{ + auto it_plugins = m_sensors.find(static_cast(type)); + + if (it_plugins == m_sensors.end()) + return NULL; + + return it_plugins->second.get(); +} + +sensor_base* sensor_loader::get_sensor(sensor_id_t id) +{ + vector sensors; + + sensor_type_t type = static_cast (id & SENSOR_TYPE_MASK); + unsigned int index = id >> SENSOR_INDEX_SHIFT; + + sensors = get_sensors(type); + + if (sensors.size() <= index) + return NULL; + + return sensors[index]; +} + +vector sensor_loader::get_sensors(sensor_type_t type) +{ + vector sensor_list; + std::pair ret; + + if ((int)(type) == (int)SENSOR_DEVICE_ALL) + ret = std::make_pair(m_sensors.begin(), m_sensors.end()); + else + ret = m_sensors.equal_range(static_cast(type)); + + for (auto it = ret.first; it != ret.second; ++it) + sensor_list.push_back(it->second.get()); + + return sensor_list; +} + +vector sensor_loader::get_virtual_sensors(void) +{ + vector virtual_list; + sensor_base* sensor; + + for (auto sensor_it = m_sensors.begin(); sensor_it != m_sensors.end(); ++sensor_it) { + sensor = sensor_it->second.get(); + + if (sensor && sensor->is_virtual() == true) { + virtual_list.push_back(sensor); + } + } + + return virtual_list; +} diff --git a/src/server/sensor_plugin_loader.h b/src/server/sensor_loader.h similarity index 71% rename from src/server/sensor_plugin_loader.h rename to src/server/sensor_loader.h index 07886e3..ae246fd 100644 --- a/src/server/sensor_plugin_loader.h +++ b/src/server/sensor_loader.h @@ -32,33 +32,34 @@ #include #include #include +#include class sensor_hal; class sensor_base; -typedef std::multimap> sensor_plugins; +typedef std::multimap> sensor_map_t; -class sensor_plugin_loader +class sensor_loader { private: - sensor_plugin_loader(); + sensor_loader(); - bool load_plugin(const std::string &path, std::vector &sensors, void* &handle); - bool insert_plugins(std::vector hals); - bool insert_sensors(sensor_hal *hal); + bool load_devices(const std::string &path, std::vector &devices, void* &handle); + physical_sensor* create_sensor(sensor_handle_t handle, sensor_device *device); + bool insert_sensors(std::vector hals); void show_sensor_info(void); bool get_paths_from_dir(const std::string &dir_path, std::vector &hal_paths); - sensor_plugins m_sensors; + sensor_map_t m_sensors; public: - static sensor_plugin_loader& get_instance(); - bool load_plugins(void); + static sensor_loader& get_instance(); + bool load_sensors(void); sensor_base* get_sensor(sensor_type_t type); sensor_base* get_sensor(sensor_id_t id); std::vector get_sensors(sensor_type_t type); - std::vector get_virtual_sensors(void); + std::vector get_virtual_sensors(void); }; #endif /* _SENSOR_PLUGIN_LOADER_H_ */ diff --git a/src/server/sensor_plugin_loader.cpp.in b/src/server/sensor_plugin_loader.cpp.in deleted file mode 100644 index 366b3ab..0000000 --- a/src/server/sensor_plugin_loader.cpp.in +++ /dev/null @@ -1,322 +0,0 @@ -/* - * libsensord-share - * - * Copyright (c) 2014 Samsung Electronics Co., Ltd. - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - * - */ - -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include - -#ifdef ENABLE_AUTO_ROTATION -#include -#endif -/* -#ifdef ENABLE_TILT -#include -#endif -#ifdef ENABLE_GRAVITY -#include -#endif -#ifdef ENABLE_SENSOR_FUSION -#include -#endif -#ifdef ENABLE_LINEAR_ACCEL -#include -#endif -#ifdef ENABLE_ORIENTATION -#include -#endif -#ifdef ENABLE_GAMING_RV -#include -#endif -#ifdef ENABLE_GEOMAGNETIC_RV -#include -#endif -#ifdef ENABLE_RV -#include -#endif -#ifdef ENABLE_GYROSCOPE_UNCAL -#include -#endif -*/ - -using std::unordered_set; -using std::vector; -using std::string; - -#define ROOT_ELEMENT "PLUGIN" -#define TEXT_ELEMENT "text" -#define PATH_ATTR "path" -#define HAL_ELEMENT "HAL" -#define SENSOR_ELEMENT "SENSOR" - -#define HAL_PLUGINS_DIR_PATH "/usr/lib/sensor" - -#define SENSOR_INDEX_SHIFT 16 - -sensor_plugin_loader::sensor_plugin_loader() -{ -} - -sensor_plugin_loader& sensor_plugin_loader::get_instance() -{ - static sensor_plugin_loader inst; - return inst; -} - -bool sensor_plugin_loader::load_plugin(const string &path, vector &sensors, void* &handle) -{ - INFO("load HAL plugin [%s]", path.c_str()); - - void *_handle = dlopen(path.c_str(), RTLD_NOW); - - if (!_handle) { - ERR("Failed to dlopen(%s), dlerror : %s", path.c_str(), dlerror()); - return false; - } - - dlerror(); - - create_t create_plugin = (create_t) dlsym(_handle, "create"); - - if (!create_plugin) { - ERR("Failed to find symbols in %s", path.c_str()); - dlclose(_handle); - return false; - } - - sensor_module *plugin = create_plugin(); - - if (!plugin) { - ERR("Failed to create plugin, path is %s\n", path.c_str()); - dlclose(_handle); - return false; - } - - sensors.clear(); - sensors.swap(plugin->sensors); - - delete plugin; - handle = _handle; - - return true; -} - -bool sensor_plugin_loader::insert_plugins(std::vector hals) -{ - unsigned int i; - sensor_hal *hal; - - for (i = 0; i < hals.size(); ++i) { - hal = static_cast(hals[i]); - - insert_sensors(hal); - } - - return true; -} - -bool sensor_plugin_loader::insert_sensors(sensor_hal *hal) -{ - unsigned int i; - vector sensors; - physical_sensor *phy_sensor; - - hal->get_sensors(sensors); - - for (i = 0; i < sensors.size(); ++i) { - int idx; - idx = m_sensors.count(sensors[i].type); - - phy_sensor = new(std::nothrow) physical_sensor(); - if (!phy_sensor) { - ERR("Memory allocation failed[%s]", sensors[i].name.c_str()); - continue; - } - - phy_sensor->set_id(idx << SENSOR_INDEX_SHIFT | sensors[i].type); - phy_sensor->set_sensor_handle(sensors[i]); - phy_sensor->set_sensor_hal(hal); - - std::shared_ptr sensor(phy_sensor); - m_sensors.insert(std::make_pair(sensors[i].type, sensor)); - - INFO("created [%s] sensor", sensor->get_name()); - } - - return true; -} - -bool sensor_plugin_loader::load_plugins(void) -{ - vector hal_paths; - vector unique_hal_paths; - - get_paths_from_dir(string(HAL_PLUGINS_DIR_PATH), hal_paths); - - unordered_set s; - auto unique = [&s](vector &paths, const string &path) { - if (s.insert(path).second) - paths.push_back(path); - }; - - for_each(hal_paths.begin(), hal_paths.end(), - [&](const string &path) { - unique(unique_hal_paths, path); - } - ); - - for_each(unique_hal_paths.begin(), unique_hal_paths.end(), - [&](const string &path) { - void *handle; - std::vector hals; - - load_plugin(path, hals, handle); - insert_plugins(hals); - } - ); - -#ifdef ENABLE_AUTO_ROTATION - auto_rotation_sensor* auto_rot_sensor_ptr = NULL; - try { - auto_rot_sensor_ptr = new(std::nothrow) auto_rotation_sensor; - } catch (int err) { - ERR("Failed to create auto_rotation_sensor module, err: %d, cause: %s", err, strerror(err)); - } - if (auto_rot_sensor_ptr != NULL) { - std::shared_ptr sensor(auto_rot_sensor_ptr); - sensor_hal_type type; - - type = static_cast(sensor->get_type()); - sensor->set_id(type); - - m_sensors.insert(std::make_pair(type, sensor)); - } -#endif - - show_sensor_info(); - return true; -} - -void sensor_plugin_loader::show_sensor_info(void) -{ - INFO("========== Loaded sensor information ==========\n"); - - int index = 0; - - auto it = m_sensors.begin(); - - while (it != m_sensors.end()) { - sensor_base *sensor = it->second.get(); - - sensor_info info; - sensor->get_sensor_info(info); - INFO("No:%d [%s]\n", ++index, sensor->get_name()); - info.show(); - it++; - } - - INFO("===============================================\n"); -} - -bool sensor_plugin_loader::get_paths_from_dir(const string &dir_path, vector &hal_paths) -{ - DIR *dir = NULL; - struct dirent *dir_entry = NULL; - - dir = opendir(dir_path.c_str()); - - if (!dir) { - ERR("Failed to open dir: %s", dir_path.c_str()); - return false; - } - - string name; - - while ((dir_entry = readdir(dir))) { - name = string(dir_entry->d_name); - hal_paths.push_back(dir_path + "/" + name); - } - - closedir(dir); - return true; -} - -sensor_base* sensor_plugin_loader::get_sensor(sensor_type_t type) -{ - auto it_plugins = m_sensors.find(static_cast(type)); - - if (it_plugins == m_sensors.end()) - return NULL; - - return it_plugins->second.get(); -} - -sensor_base* sensor_plugin_loader::get_sensor(sensor_id_t id) -{ - vector sensors; - - sensor_type_t type = static_cast (id & SENSOR_TYPE_MASK); - unsigned int index = id >> SENSOR_INDEX_SHIFT; - - sensors = get_sensors(type); - - if (sensors.size() <= index) - return NULL; - - return sensors[index]; -} - -vector sensor_plugin_loader::get_sensors(sensor_type_t type) -{ - vector sensor_list; - std::pair ret; - - if ((int)(type) == (int)SENSOR_HAL_TYPE_ALL) - ret = std::make_pair(m_sensors.begin(), m_sensors.end()); - else - ret = m_sensors.equal_range(static_cast(type)); - - for (auto it = ret.first; it != ret.second; ++it) - sensor_list.push_back(it->second.get()); - - return sensor_list; -} - -vector sensor_plugin_loader::get_virtual_sensors(void) -{ - vector virtual_list; - sensor_base* sensor; - - for (auto sensor_it = m_sensors.begin(); sensor_it != m_sensors.end(); ++sensor_it) { - sensor = sensor_it->second.get(); - - if (sensor && sensor->is_virtual() == true) { - virtual_list.push_back(sensor); - } - } - - return virtual_list; -} diff --git a/src/server/server.cpp b/src/server/server.cpp index 6bf0793..8f572bc 100644 --- a/src/server/server.cpp +++ b/src/server/server.cpp @@ -19,7 +19,7 @@ #include #include -#include +#include #include #include #include diff --git a/src/shared/sensor_hal.h b/src/shared/sensor_hal.h index 6ee4212..535ad28 100644 --- a/src/shared/sensor_hal.h +++ b/src/shared/sensor_hal.h @@ -45,58 +45,58 @@ * humidity : relative humidity (%) */ typedef enum { - SENSOR_HAL_TYPE_UNKNOWN = -2, - SENSOR_HAL_TYPE_ALL = -1, - SENSOR_HAL_TYPE_ACCELEROMETER, - SENSOR_HAL_TYPE_GRAVITY, - SENSOR_HAL_TYPE_LINEAR_ACCELERATION, - SENSOR_HAL_TYPE_GEOMAGNETIC, - SENSOR_HAL_TYPE_ROTATION_VECTOR, - SENSOR_HAL_TYPE_ORIENTATION, - SENSOR_HAL_TYPE_GYROSCOPE, - SENSOR_HAL_TYPE_LIGHT, - SENSOR_HAL_TYPE_PROXIMITY, - SENSOR_HAL_TYPE_PRESSURE, - SENSOR_HAL_TYPE_ULTRAVIOLET, - SENSOR_HAL_TYPE_TEMPERATURE, - SENSOR_HAL_TYPE_HUMIDITY, - SENSOR_HAL_TYPE_HRM, - SENSOR_HAL_TYPE_HRM_LED_GREEN, - SENSOR_HAL_TYPE_HRM_LED_IR, - SENSOR_HAL_TYPE_HRM_LED_RED, - SENSOR_HAL_TYPE_GYROSCOPE_UNCAL, - SENSOR_HAL_TYPE_GEOMAGNETIC_UNCAL, - SENSOR_HAL_TYPE_GYROSCOPE_RV, - SENSOR_HAL_TYPE_GEOMAGNETIC_RV, - - SENSOR_HAL_TYPE_ACTIVITY_STATIONARY = 0x100, - SENSOR_HAL_TYPE_ACTIVITY_WALK, - SENSOR_HAL_TYPE_ACTIVITY_RUN, - SENSOR_HAL_TYPE_ACTIVITY_IN_VEHICLE, - SENSOR_HAL_TYPE_ACTIVITY_ON_BICYCLE, - - SENSOR_HAL_TYPE_GESTURE_MOVEMENT = 0x200, - SENSOR_HAL_TYPE_GESTURE_WRIST_UP, - SENSOR_HAL_TYPE_GESTURE_WRIST_DOWN, - - SENSOR_HAL_TYPE_HUMAN_PEDOMETER = 0x300, - SENSOR_HAL_TYPE_HUMAN_SLEEP_MONITOR, - - SENSOR_HAL_TYPE_FUSION = 0x900, - SENSOR_HAL_TYPE_AUTO_ROTATION, - - SENSOR_HAL_TYPE_CONTEXT = 0x1000, - SENSOR_HAL_TYPE_MOTION, - SENSOR_HAL_TYPE_PIR, - SENSOR_HAL_TYPE_PIR_LONG, - SENSOR_HAL_TYPE_DUST, - SENSOR_HAL_TYPE_THERMOMETER, - SENSOR_HAL_TYPE_PEDOMETER, - SENSOR_HAL_TYPE_FLAT, - SENSOR_HAL_TYPE_HRM_RAW, - SENSOR_HAL_TYPE_TILT, - SENSOR_HAL_TYPE_ROTATION_VECTOR_RAW, -} sensor_hal_type; + SENSOR_DEVICE_UNKNOWN = -2, + SENSOR_DEVICE_ALL = -1, + SENSOR_DEVICE_ACCELEROMETER, + SENSOR_DEVICE_GRAVITY, + SENSOR_DEVICE_LINEAR_ACCELERATION, + SENSOR_DEVICE_GEOMAGNETIC, + SENSOR_DEVICE_ROTATION_VECTOR, + SENSOR_DEVICE_ORIENTATION, + SENSOR_DEVICE_GYROSCOPE, + SENSOR_DEVICE_LIGHT, + SENSOR_DEVICE_PROXIMITY, + SENSOR_DEVICE_PRESSURE, + SENSOR_DEVICE_ULTRAVIOLET, + SENSOR_DEVICE_TEMPERATURE, + SENSOR_DEVICE_HUMIDITY, + SENSOR_DEVICE_HRM, + SENSOR_DEVICE_HRM_LED_GREEN, + SENSOR_DEVICE_HRM_LED_IR, + SENSOR_DEVICE_HRM_LED_RED, + SENSOR_DEVICE_GYROSCOPE_UNCAL, + SENSOR_DEVICE_GEOMAGNETIC_UNCAL, + SENSOR_DEVICE_GYROSCOPE_RV, + SENSOR_DEVICE_GEOMAGNETIC_RV, + + SENSOR_DEVICE_ACTIVITY_STATIONARY = 0x100, + SENSOR_DEVICE_ACTIVITY_WALK, + SENSOR_DEVICE_ACTIVITY_RUN, + SENSOR_DEVICE_ACTIVITY_IN_VEHICLE, + SENSOR_DEVICE_ACTIVITY_ON_BICYCLE, + + SENSOR_DEVICE_GESTURE_MOVEMENT = 0x200, + SENSOR_DEVICE_GESTURE_WRIST_UP, + SENSOR_DEVICE_GESTURE_WRIST_DOWN, + + SENSOR_DEVICE_HUMAN_PEDOMETER = 0x300, + SENSOR_DEVICE_HUMAN_SLEEP_MONITOR, + + SENSOR_DEVICE_FUSION = 0x900, + SENSOR_DEVICE_AUTO_ROTATION, + + SENSOR_DEVICE_CONTEXT = 0x1000, + SENSOR_DEVICE_MOTION, + SENSOR_DEVICE_PIR, + SENSOR_DEVICE_PIR_LONG, + SENSOR_DEVICE_DUST, + SENSOR_DEVICE_THERMOMETER, + SENSOR_DEVICE_PEDOMETER, + SENSOR_DEVICE_FLAT, + SENSOR_DEVICE_HRM_RAW, + SENSOR_DEVICE_TILT, + SENSOR_DEVICE_ROTATION_VECTOR_RAW, +} sensor_device_type; /* * A platform sensor handler is generated based on this handle @@ -105,19 +105,20 @@ typedef enum { typedef struct sensor_handle_t { uint32_t id; std::string name; - sensor_hal_type type; + sensor_device_type type; unsigned int event_type; // for Internal API sensor_properties_s properties; } sensor_handle_t; /* - * Sensor HAL interface + * Sensor device interface * 1 HAL must be abstracted from 1 device event node */ -class sensor_hal +class sensor_device { public: - uint32_t get_hal_version(void) { + uint32_t get_hal_version(void) + { return SENSOR_HAL_VERSION(1, 0); } diff --git a/src/shared/sf_common.h b/src/shared/sf_common.h index c627edf..2781348 100644 --- a/src/shared/sf_common.h +++ b/src/shared/sf_common.h @@ -191,11 +191,11 @@ typedef struct sensorhub_event_t { sensorhub_data_t data; } sensorhub_event_t; -typedef struct sensor_module{ - std::vector sensors; -} sensor_module; +typedef struct sensor_devices { + std::vector devices; +} sensor_devices; -typedef sensor_module* (*create_t)(void); +typedef sensor_devices* (*create_t)(void); typedef void *(*cmd_func_t)(void *data, void *cb_data); -- 2.7.4 From 251cafa7846dee1a00f98ead3a32b19db96fd72d Mon Sep 17 00:00:00 2001 From: "kibak.yoon" Date: Fri, 22 Jan 2016 21:54:52 +0900 Subject: [PATCH 05/16] sensord: fix the bug related to get sensor all list there is a problem the way that sensor_raw_map is initialized using types obtained from sensor plugin. it changes the order of sensors. so this patch changes it to the simple and correct way: 1. get the supported sensor type list 2. get the sensor list by type and put them to map in order Change-Id: I09975ef84bb80049caca9a20bdf0d4dd6b164b51 Signed-off-by: kibak.yoon --- src/server/command_worker.cpp | 36 +++++++++++++++++++++--------------- src/server/sensor_loader.cpp.in | 14 ++++++++++++++ src/server/sensor_loader.h | 1 + 3 files changed, 36 insertions(+), 15 deletions(-) diff --git a/src/server/command_worker.cpp b/src/server/command_worker.cpp index 1e1ae3b..cd0b628 100644 --- a/src/server/command_worker.cpp +++ b/src/server/command_worker.cpp @@ -31,13 +31,12 @@ using std::string; using std::vector; using std::make_pair; -using std::set; command_worker::cmd_handler_t command_worker::m_cmd_handlers[]; sensor_raw_data_map command_worker::m_sensor_raw_data_map; cpacket command_worker::m_sensor_list; -set priority_list; +std::set priority_list; command_worker::command_worker(const csocket& socket) : m_client_id(CLIENT_ID_INVALID) @@ -141,27 +140,34 @@ void command_worker::get_sensor_list(int permissions, cpacket &sensor_list) void command_worker::make_sensor_raw_data_map(void) { vector sensors; + vector types; + std::vector::iterator it_type; + std::vector::iterator it_sensor; sensor_info info; int permission; - sensors = sensor_loader::get_instance().get_sensors(ALL_SENSOR); + types = sensor_loader::get_instance().get_sensor_types(); - std::sort(sensors.begin(), sensors.end()); - auto last = std::unique(sensors.begin(), sensors.end()); + it_type = types.begin(); + while (it_type != types.end()) { + sensor_type_t type; + type = *it_type; - auto it_sensor = sensors.begin(); + sensors = sensor_loader::get_instance().get_sensors(type); + it_sensor = sensors.begin(); - while (it_sensor != last) { - (*it_sensor)->get_sensor_info(info); - permission = (*it_sensor)->get_permission(); + while (it_sensor != sensors.end()) { + (*it_sensor)->get_sensor_info(info); + permission = (*it_sensor)->get_permission(); - sensor_raw_data_map::iterator it_sensor_raw_data; - it_sensor_raw_data = m_sensor_raw_data_map.insert(std::make_pair(permission, raw_data_t())); + sensor_raw_data_map::iterator it_sensor_raw_data; + it_sensor_raw_data = m_sensor_raw_data_map.insert(std::make_pair(permission, raw_data_t())); - info.get_raw_data(it_sensor_raw_data->second); - info.clear(); - - ++it_sensor; + info.get_raw_data(it_sensor_raw_data->second); + info.clear(); + ++it_sensor; + } + ++it_type; } } diff --git a/src/server/sensor_loader.cpp.in b/src/server/sensor_loader.cpp.in index 6fd1dfd..897f843 100644 --- a/src/server/sensor_loader.cpp.in +++ b/src/server/sensor_loader.cpp.in @@ -252,6 +252,20 @@ sensor_base* sensor_loader::get_sensor(sensor_id_t id) return sensors[index]; } +vector sensor_loader::get_sensor_types(void) +{ + vector sensor_types; + + auto it = m_sensors.begin(); + + while (it != m_sensors.end()) { + sensor_types.push_back((sensor_type_t)(it->first)); + it = m_sensors.upper_bound(it->first); + } + + return sensor_types; +} + vector sensor_loader::get_sensors(sensor_type_t type) { vector sensor_list; diff --git a/src/server/sensor_loader.h b/src/server/sensor_loader.h index ae246fd..b0cb1eb 100644 --- a/src/server/sensor_loader.h +++ b/src/server/sensor_loader.h @@ -59,6 +59,7 @@ public: sensor_base* get_sensor(sensor_type_t type); sensor_base* get_sensor(sensor_id_t id); + std::vector get_sensor_types(void); std::vector get_sensors(sensor_type_t type); std::vector get_virtual_sensors(void); }; -- 2.7.4 From 6f0e3a51e756d12c9749ac3bcf735b883e46efae Mon Sep 17 00:00:00 2001 From: "kibak.yoon" Date: Mon, 25 Jan 2016 10:43:01 +0900 Subject: [PATCH 06/16] sensord: clear vector before using it Change-Id: Ie763cac292c7d3d1655c2e231ca519c061eba2dd Signed-off-by: kibak.yoon --- src/server/sensor_loader.cpp.in | 2 ++ 1 file changed, 2 insertions(+) diff --git a/src/server/sensor_loader.cpp.in b/src/server/sensor_loader.cpp.in index 897f843..4d4b1a5 100644 --- a/src/server/sensor_loader.cpp.in +++ b/src/server/sensor_loader.cpp.in @@ -115,6 +115,8 @@ bool sensor_loader::insert_sensors(std::vector devices) for (void *device_ptr : devices) { device = static_cast(device_ptr); + + handles.clear(); device->get_sensors(handles); for (unsigned int i = 0; i < handles.size(); ++i) { -- 2.7.4 From 45f9953014a6f22e547159ec3ea06fd08e5ed312 Mon Sep 17 00:00:00 2001 From: "kibak.yoon" Date: Mon, 25 Jan 2016 17:52:09 +0900 Subject: [PATCH 07/16] sensord: refactoring the way to load virtual sensor Change-Id: I661bc7347ef8d5b99d56f391242669e3865f1102 Signed-off-by: kibak.yoon --- .../plugins/auto_rotation/auto_rotation_sensor.cpp | 8 ++- .../plugins/auto_rotation/auto_rotation_sensor.h | 7 +-- src/server/sensor_base.cpp | 1 - src/server/sensor_base.h | 1 - src/server/sensor_loader.cpp.in | 57 ++++++++++++++-------- src/server/sensor_loader.h | 14 ++++-- src/server/virtual_sensor.cpp | 5 ++ src/server/virtual_sensor.h | 3 ++ src/shared/sensor_hal.h | 2 + 9 files changed, 63 insertions(+), 35 deletions(-) diff --git a/src/server/plugins/auto_rotation/auto_rotation_sensor.cpp b/src/server/plugins/auto_rotation/auto_rotation_sensor.cpp index c78a743..c50c9fd 100644 --- a/src/server/plugins/auto_rotation/auto_rotation_sensor.cpp +++ b/src/server/plugins/auto_rotation/auto_rotation_sensor.cpp @@ -83,8 +83,6 @@ auto_rotation_sensor::auto_rotation_sensor() INFO("m_default_sampling_time = %d", m_default_sampling_time); m_interval = m_default_sampling_time * MS_TO_US; - - init(); } auto_rotation_sensor::~auto_rotation_sensor() @@ -122,12 +120,12 @@ auto_rotation_alg *auto_rotation_sensor::get_alg() return new auto_rotation_alg_emul(); } -bool auto_rotation_sensor::init() +bool auto_rotation_sensor::init(void) { m_accel_sensor = sensor_loader::get_instance().get_sensor(ACCELEROMETER_SENSOR); if (!m_accel_sensor) { - ERR("cannot load accel sensor_hal[%s]", sensor_base::get_name()); + ERR("cannot load accel sensor_hal from %s", get_name()); return false; } @@ -143,7 +141,7 @@ bool auto_rotation_sensor::init() set_privilege(SENSOR_PRIVILEGE_INTERNAL); - INFO("%s is created!\n", sensor_base::get_name()); + INFO("%s is created!\n", get_name()); return true; } diff --git a/src/server/plugins/auto_rotation/auto_rotation_sensor.h b/src/server/plugins/auto_rotation/auto_rotation_sensor.h index 92e234f..cc62e57 100644 --- a/src/server/plugins/auto_rotation/auto_rotation_sensor.h +++ b/src/server/plugins/auto_rotation/auto_rotation_sensor.h @@ -29,7 +29,10 @@ public: auto_rotation_sensor(); virtual ~auto_rotation_sensor(); - /* module info */ + /* initialize sensor */ + bool init(); + + /* sensor info */ virtual sensor_type_t get_type(); virtual unsigned int get_event_type(void); virtual const char* get_name(void); @@ -51,8 +54,6 @@ private: std::string m_raw_data_unit; int m_default_sampling_time; - bool init(); - auto_rotation_alg *get_alg(); virtual bool on_start(void); virtual bool on_stop(void); diff --git a/src/server/sensor_base.cpp b/src/server/sensor_base.cpp index cbe5966..0ff9dd1 100644 --- a/src/server/sensor_base.cpp +++ b/src/server/sensor_base.cpp @@ -40,7 +40,6 @@ sensor_base::sensor_base() sensor_base::~sensor_base() { - INFO("%s is destroyed!\n", m_handle.name.c_str()); } sensor_type_t sensor_base::get_type(void) diff --git a/src/server/sensor_base.h b/src/server/sensor_base.h index 58b1087..7ac3e98 100644 --- a/src/server/sensor_base.h +++ b/src/server/sensor_base.h @@ -105,7 +105,6 @@ protected: private: sensor_id_t m_unique_id; - sensor_handle_t m_handle; sensor_privilege_t m_privilege; int m_permission; diff --git a/src/server/sensor_loader.cpp.in b/src/server/sensor_loader.cpp.in index 4d4b1a5..25d885b 100644 --- a/src/server/sensor_loader.cpp.in +++ b/src/server/sensor_loader.cpp.in @@ -92,7 +92,7 @@ physical_sensor* sensor_loader::create_sensor(sensor_handle_t handle, sensor_dev int index; physical_sensor *sensor; - index = m_sensors.count(handle.type); + index = m_sensors.count((sensor_type_t)handle.type); sensor = new(std::nothrow) physical_sensor(); if (!sensor) { @@ -107,7 +107,7 @@ physical_sensor* sensor_loader::create_sensor(sensor_handle_t handle, sensor_dev return sensor; } -bool sensor_loader::insert_sensors(std::vector devices) +bool sensor_loader::load_physical_sensors(std::vector devices) { sensor_device *device; vector handles; @@ -125,7 +125,7 @@ bool sensor_loader::insert_sensors(std::vector devices) continue; std::shared_ptr sensor_ptr(sensor); - m_sensors.insert(std::make_pair(handles[i].type, sensor_ptr)); + m_sensors.insert(std::make_pair((sensor_type_t)(handles[i].type), sensor_ptr)); INFO("inserted [%s] sensor", sensor->get_name()); } @@ -159,30 +159,47 @@ bool sensor_loader::load_sensors(void) std::vector devices; load_devices(path, devices, handle); - insert_sensors(devices); + load_physical_sensors(devices); } ); -#ifdef ENABLE_AUTO_ROTATION - auto_rotation_sensor* auto_rot_sensor_ptr = NULL; + load_virtual_sensors(); + + show_sensor_info(); + return true; +} + +template +void sensor_loader::load_virtual_sensor(const char *name) +{ + virtual_sensor *instance = NULL; + try { - auto_rot_sensor_ptr = new(std::nothrow) auto_rotation_sensor; + instance = new _sensor; + } catch (std::exception &e) { + ERR("Failed to create %s sensor, exception: %s", name, e.what()); + return; } catch (int err) { - ERR("Failed to create auto_rotation_sensor, err: %d, cause: %s", err, strerror(err)); + ERR("Failed to create %s sensor err: %d, cause: %s", name, err, strerror(err)); + return; } - if (auto_rot_sensor_ptr != NULL) { - std::shared_ptr sensor(auto_rot_sensor_ptr); - sensor_device_type type; - type = static_cast(sensor->get_type()); - sensor->set_id(type); - - m_sensors.insert(std::make_pair(type, sensor)); + if (!instance->init()) { + ERR("Failed to init %s", name); + delete instance; + return; } -#endif - show_sensor_info(); - return true; + std::shared_ptr sensor(instance); + sensor_type_t type = sensor->get_type(); + + sensor->set_id(type); + m_sensors.insert(std::make_pair(type, sensor)); +} + +void sensor_loader::load_virtual_sensors(void) +{ + load_virtual_sensor("Auto Rotation"); } void sensor_loader::show_sensor_info(void) @@ -231,7 +248,7 @@ bool sensor_loader::get_paths_from_dir(const string &dir_path, vector &p sensor_base* sensor_loader::get_sensor(sensor_type_t type) { - auto it_plugins = m_sensors.find(static_cast(type)); + auto it_plugins = m_sensors.find(type); if (it_plugins == m_sensors.end()) return NULL; @@ -276,7 +293,7 @@ vector sensor_loader::get_sensors(sensor_type_t type) if ((int)(type) == (int)SENSOR_DEVICE_ALL) ret = std::make_pair(m_sensors.begin(), m_sensors.end()); else - ret = m_sensors.equal_range(static_cast(type)); + ret = m_sensors.equal_range(type); for (auto it = ret.first; it != ret.second; ++it) sensor_list.push_back(it->second.get()); diff --git a/src/server/sensor_loader.h b/src/server/sensor_loader.h index b0cb1eb..41b1dcb 100644 --- a/src/server/sensor_loader.h +++ b/src/server/sensor_loader.h @@ -33,11 +33,11 @@ #include #include #include +#include -class sensor_hal; class sensor_base; -typedef std::multimap> sensor_map_t; +typedef std::multimap> sensor_map_t; class sensor_loader { @@ -45,11 +45,15 @@ private: sensor_loader(); bool load_devices(const std::string &path, std::vector &devices, void* &handle); + physical_sensor* create_sensor(sensor_handle_t handle, sensor_device *device); - bool insert_sensors(std::vector hals); - void show_sensor_info(void); + bool load_physical_sensors(std::vector devices); - bool get_paths_from_dir(const std::string &dir_path, std::vector &hal_paths); + template void load_virtual_sensor(const char *name); + void load_virtual_sensors(void); + + void show_sensor_info(void); + bool get_paths_from_dir(const std::string &dir_path, std::vector &plugin_paths); sensor_map_t m_sensors; public: diff --git a/src/server/virtual_sensor.cpp b/src/server/virtual_sensor.cpp index 112a3a0..ae3f9be 100644 --- a/src/server/virtual_sensor.cpp +++ b/src/server/virtual_sensor.cpp @@ -32,6 +32,11 @@ virtual_sensor::~virtual_sensor() } +bool virtual_sensor::init(void) +{ + return false; +} + bool virtual_sensor::is_virtual(void) { return true; diff --git a/src/server/virtual_sensor.h b/src/server/virtual_sensor.h index f781880..a9c998f 100644 --- a/src/server/virtual_sensor.h +++ b/src/server/virtual_sensor.h @@ -28,6 +28,9 @@ public: virtual_sensor(); virtual ~virtual_sensor(); + /* initialize sensor */ + virtual bool init(); + /* module info */ virtual sensor_type_t get_type() = 0; virtual unsigned int get_event_type(void) = 0; diff --git a/src/shared/sensor_hal.h b/src/shared/sensor_hal.h index 535ad28..b9f38c6 100644 --- a/src/shared/sensor_hal.h +++ b/src/shared/sensor_hal.h @@ -117,6 +117,8 @@ typedef struct sensor_handle_t { class sensor_device { public: + virtual ~sensor_device() {} + uint32_t get_hal_version(void) { return SENSOR_HAL_VERSION(1, 0); -- 2.7.4 From 0b77b5af15e4aaa6b77a6f2b48a61975db008e24 Mon Sep 17 00:00:00 2001 From: "kibak.yoon" Date: Mon, 25 Jan 2016 20:33:32 +0900 Subject: [PATCH 08/16] sensord: share the lock in physical sensors - lock the command flow and event flow using same mutex in physical_sensor Change-Id: I8ed6c061448c56f0b09e1a6b45709c1ff8e311ca Signed-off-by: kibak.yoon --- src/server/physical_sensor.cpp | 2 ++ src/server/physical_sensor.h | 2 ++ src/server/sensor_base.cpp | 49 ------------------------------------------ src/server/sensor_base.h | 8 ------- 4 files changed, 4 insertions(+), 57 deletions(-) diff --git a/src/server/physical_sensor.cpp b/src/server/physical_sensor.cpp index 71de409..3c6f697 100644 --- a/src/server/physical_sensor.cpp +++ b/src/server/physical_sensor.cpp @@ -22,6 +22,8 @@ #define UNKNOWN_NAME "UNKNOWN_SENSOR" +cmutex physical_sensor::m_mutex; + physical_sensor::physical_sensor() : m_sensor_device(NULL) { diff --git a/src/server/physical_sensor.h b/src/server/physical_sensor.h index 2c7742f..5abc41b 100644 --- a/src/server/physical_sensor.h +++ b/src/server/physical_sensor.h @@ -47,6 +47,8 @@ public: virtual int get_sensor_event(sensor_event_t **event); private: + static cmutex m_mutex; + sensor_handle_t m_handle; sensor_device *m_sensor_device; diff --git a/src/server/sensor_base.cpp b/src/server/sensor_base.cpp index 0ff9dd1..7096862 100644 --- a/src/server/sensor_base.cpp +++ b/src/server/sensor_base.cpp @@ -49,7 +49,6 @@ sensor_type_t sensor_base::get_type(void) bool sensor_base::start() { - AUTOLOCK(m_mutex); AUTOLOCK(m_client_mutex); ++m_client; @@ -70,7 +69,6 @@ bool sensor_base::start() bool sensor_base::stop(void) { - AUTOLOCK(m_mutex); AUTOLOCK(m_client_mutex); --m_client; @@ -323,7 +321,6 @@ int sensor_base::get_permission(void) bool sensor_base::is_started(void) { - AUTOLOCK(m_mutex); AUTOLOCK(m_client_mutex); return m_started; @@ -404,52 +401,6 @@ bool sensor_base::push(sensor_event_t *event, int event_length) return true; } -/* -bool sensor_base::push(const sensor_event_t &event) -{ - AUTOLOCK(m_client_mutex); - - if (m_client <= 0) - return false; - - sensor_event_queue::get_instance().push(event); - return true; -} - -bool sensor_base::push(sensor_event_t *event) -{ - AUTOLOCK(m_client_mutex); - - if (m_client <= 0) - return false; - - sensor_event_queue::get_instance().push(event); - return true; -} - -bool sensor_base::push(const sensorhub_event_t &event) -{ - AUTOLOCK(m_client_mutex); - - if (m_client <= 0) - return false; - - sensor_event_queue::get_instance().push(event); - return true; -} - -bool sensor_base::push(sensorhub_event_t *event) -{ - AUTOLOCK(m_client_mutex); - - if (m_client <= 0) - return false; - - sensor_event_queue::get_instance().push(event); - return true; -} -*/ - unsigned long long sensor_base::get_timestamp(void) { struct timespec t; diff --git a/src/server/sensor_base.h b/src/server/sensor_base.h index 7ac3e98..000dfad 100644 --- a/src/server/sensor_base.h +++ b/src/server/sensor_base.h @@ -87,19 +87,11 @@ public: /* push event to queue */ bool push(sensor_event_t *event, int event_length); - /* - bool push(const sensor_event_t &event); - bool push(sensor_event_t *event); - bool push(const sensorhub_event_t &event); - bool push(sensorhub_event_t *event); - */ /* for sensorhub */ virtual long set_command(unsigned int cmd, long value); virtual int send_sensorhub_data(const char* data, int data_len); protected: - cmutex m_mutex; - void set_privilege(sensor_privilege_t privilege); void set_permission(int permission); -- 2.7.4 From 91c22794163209033e8aa17cfca2958b97652827 Mon Sep 17 00:00:00 2001 From: "kibak.yoon" Date: Mon, 25 Jan 2016 22:32:50 +0900 Subject: [PATCH 09/16] sensord: fix the build error because of changing macro name Change-Id: I36b81e03c88b9618eb2bdd6138f1a52d96af040c Signed-off-by: kibak.yoon --- src/shared/sensor_common.h | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/src/shared/sensor_common.h b/src/shared/sensor_common.h index 83d8b7d..53c7e26 100644 --- a/src/shared/sensor_common.h +++ b/src/shared/sensor_common.h @@ -17,8 +17,8 @@ * */ -#ifndef _SENSOR_COMMON_H_ -#define _SENSOR_COMMON_H_ +#ifndef __SENSOR_COMMON_H__ +#define __SENSOR_COMMON_H__ #ifndef DEPRECATED #define DEPRECATED __attribute__((deprecated)) @@ -150,4 +150,4 @@ typedef enum { #endif -#endif /* _SENSOR_COMMON_H_ */ +#endif /* __SENSOR_COMMON_H__ */ -- 2.7.4 From de603e3637e3bc12cd8144910519c73f4a755f8c Mon Sep 17 00:00:00 2001 From: "kibak.yoon" Date: Mon, 1 Feb 2016 23:30:27 +0900 Subject: [PATCH 10/16] sensord: remove unused dbus_util files Change-Id: If3239aef3baf7812433020e4572c70d5961548b1 Signed-off-by: kibak.yoon --- src/server/dbus_util.cpp | 135 ----------------------------------------------- src/server/dbus_util.h | 32 ----------- src/server/main.cpp | 1 - 3 files changed, 168 deletions(-) delete mode 100644 src/server/dbus_util.cpp delete mode 100644 src/server/dbus_util.h diff --git a/src/server/dbus_util.cpp b/src/server/dbus_util.cpp deleted file mode 100644 index 8f2941a..0000000 --- a/src/server/dbus_util.cpp +++ /dev/null @@ -1,135 +0,0 @@ -/* - * sensord - * - * Copyright (c) 2014 Samsung Electronics Co., Ltd. - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - * - */ - -#include -#include -#include - -#define SENSORD_BUS_NAME "org.tizen.system.sensord" -#define SENSORD_OBJECT_PATH "/Org/Tizen/System/SensorD" -#define SENSORD_INTERFACE_NAME SENSORD_BUS_NAME - -static GDBusNodeInfo *introspection_data = NULL; -static guint owner_id; - -static const gchar introspection_xml[] = -"" -" " -" " -" " -" " -" " -""; - -static void method_call_handler(GDBusConnection *conn, - const gchar *sender, const gchar *object_path, - const gchar *iface_name, const gchar *method_name, - GVariant *parameters, GDBusMethodInvocation *invocation, - gpointer user_data) -{ - int ret = DBUS_INIT; - - if (g_strcmp0(method_name, "check_privilege") == 0) { - _D("check_privilege called"); - ret = DBUS_SUCCESS; - } else { - _D("No matched method call"); - ret = DBUS_FAILED; - } - - g_dbus_method_invocation_return_value(invocation, - g_variant_new("(i)", ret)); - -} - -static const GDBusInterfaceVTable interface_vtable = -{ - method_call_handler, - NULL, - NULL -}; - -static void on_bus_acquired (GDBusConnection *connection, - const gchar *name, - gpointer user_data) -{ - guint registration_id; - - if (!connection) { - _E("connection is null"); - return; - } - - registration_id = g_dbus_connection_register_object(connection, - SENSORD_OBJECT_PATH, - introspection_data->interfaces[0], - &interface_vtable, - NULL, /* user_data */ - NULL, /* user_data_free_func */ - NULL); /* GError** */ - - if (registration_id == 0) - _E("Failed to g_dbus_connection_register_object"); - - _I("Gdbus method call registrated"); -} - -static void on_name_acquired(GDBusConnection *conn, - const gchar *name, gpointer user_data) -{ -} - -static void on_name_lost(GDBusConnection *conn, - const gchar *name, gpointer user_data) -{ - _E("Dbus name is lost!"); -} - -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) { - _E("Failed to init g_dbus_node_info_new_for_xml"); - return; - } - - owner_id = g_bus_own_name(G_BUS_TYPE_SYSTEM, - SENSORD_BUS_NAME, - (GBusNameOwnerFlags) (G_BUS_NAME_OWNER_FLAGS_ALLOW_REPLACEMENT - | G_BUS_NAME_OWNER_FLAGS_REPLACE), - on_bus_acquired, - on_name_acquired, - on_name_lost, - NULL, - NULL); -} - -void fini_dbus(void) -{ - if (owner_id != 0) - g_bus_unown_name(owner_id); - - if (introspection_data) - g_dbus_node_info_unref(introspection_data); -} diff --git a/src/server/dbus_util.h b/src/server/dbus_util.h deleted file mode 100644 index bca46b4..0000000 --- a/src/server/dbus_util.h +++ /dev/null @@ -1,32 +0,0 @@ -/* - * sensord - * - * Copyright (c) 2014 Samsung Electronics Co., Ltd. - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - * - */ - -#ifndef _DBUS_UTIL_H_ -#define _DBUS_UTIL_H_ - -enum dbus_ret{ - DBUS_INIT = -1, - DBUS_FAILED = 0, - DBUS_SUCCESS = 1 -}; - -void init_dbus(void); -void fini_dbus(void); - -#endif /* _DBUS_UTIL_H_ */ diff --git a/src/server/main.cpp b/src/server/main.cpp index 35805a7..767f55a 100644 --- a/src/server/main.cpp +++ b/src/server/main.cpp @@ -20,7 +20,6 @@ #include #include #include -#include #include #include -- 2.7.4 From ff7465cb150c2709e58ff926aaa4e61a15913c90 Mon Sep 17 00:00:00 2001 From: "kibak.yoon" Date: Mon, 1 Feb 2016 23:37:39 +0900 Subject: [PATCH 11/16] sensord: clean up header dependency * added boilerplate in sensor_types.h Change-Id: Ib1aa3aa89e705fd4593b5b3c9a660448d552dc93 Signed-off-by: kibak.yoon --- src/client/sensor_client_info.h | 4 ++-- src/client/sensor_event_listener.h | 8 +++++--- src/client/sensor_handle_info.h | 1 - src/server/sensor_base.cpp | 7 +++---- src/server/sensor_base.h | 9 +-------- src/shared/cbase_lock.cpp | 5 ++--- src/shared/sensor_types.h | 20 +++++++++++++++++++- 7 files changed, 32 insertions(+), 22 deletions(-) diff --git a/src/client/sensor_client_info.h b/src/client/sensor_client_info.h index 53b7c6a..a3c9989 100644 --- a/src/client/sensor_client_info.h +++ b/src/client/sensor_client_info.h @@ -22,7 +22,6 @@ #include #include -#include #include #include #include @@ -36,7 +35,8 @@ #include #include #include -#include +#include +#include using std::unordered_map; using std::vector; diff --git a/src/client/sensor_event_listener.h b/src/client/sensor_event_listener.h index 2ea5e1f..317f527 100644 --- a/src/client/sensor_event_listener.h +++ b/src/client/sensor_event_listener.h @@ -23,12 +23,9 @@ #include #include #include -#include -#include #include #include #include -#include #include #include #include @@ -40,6 +37,11 @@ #include #include +#include +#include +#include +#include + typedef std::vector handle_vector; typedef std::vector sensor_id_vector; typedef std::unordered_map sensor_handle_info_map; diff --git a/src/client/sensor_handle_info.h b/src/client/sensor_handle_info.h index adf211d..2af4d95 100644 --- a/src/client/sensor_handle_info.h +++ b/src/client/sensor_handle_info.h @@ -21,7 +21,6 @@ #define _SENSOR_HANDLE_INFO_H_ #include -#include #include #include #include diff --git a/src/server/sensor_base.cpp b/src/server/sensor_base.cpp index 7096862..16028f5 100644 --- a/src/server/sensor_base.cpp +++ b/src/server/sensor_base.cpp @@ -17,14 +17,13 @@ * */ -#include -#include - +#include #include #include - #include +#include #include +#include using std::make_pair; using std::vector; diff --git a/src/server/sensor_base.h b/src/server/sensor_base.h index 000dfad..0957380 100644 --- a/src/server/sensor_base.h +++ b/src/server/sensor_base.h @@ -20,15 +20,8 @@ #ifndef _SENSOR_BASE_H_ #define _SENSOR_BASE_H_ -#include -#include -#include #include -#include -#include -#include -#include - +#include #include #include diff --git a/src/shared/cbase_lock.cpp b/src/shared/cbase_lock.cpp index 5a1a639..2b085e3 100644 --- a/src/shared/cbase_lock.cpp +++ b/src/shared/cbase_lock.cpp @@ -18,12 +18,11 @@ */ #include -#include #include -#include #include #include - +#include +#include cbase_lock::cbase_lock() { diff --git a/src/shared/sensor_types.h b/src/shared/sensor_types.h index 93fcfa1..589a9d9 100644 --- a/src/shared/sensor_types.h +++ b/src/shared/sensor_types.h @@ -1,3 +1,22 @@ +/* + * libsensord-share + * + * Copyright (c) 2015 Samsung Electronics Co., Ltd. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + */ + #ifndef _SENSOR_TYPES_H_ #define _SENSOR_TYPES_H_ @@ -6,7 +25,6 @@ extern "C" { #endif - typedef enum { UNKNOWN_SENSOR = -2, ALL_SENSOR = -1, -- 2.7.4 From 40f8b918c1672fd6ba75fdb943cbe996e8c6a4f8 Mon Sep 17 00:00:00 2001 From: "kibak.yoon" Date: Tue, 2 Feb 2016 10:16:58 +0900 Subject: [PATCH 12/16] sensord: move the location of header inclusion Change-Id: Ieb6757572f21fd3f9ff7f0c694365345bb5a3d36 Signed-off-by: kibak.yoon --- src/shared/sensor_internal.h | 15 +++++++-------- src/shared/sensor_internal_deprecated.h | 11 ++++++----- 2 files changed, 13 insertions(+), 13 deletions(-) diff --git a/src/shared/sensor_internal.h b/src/shared/sensor_internal.h index 76ce1d0..62ae845 100644 --- a/src/shared/sensor_internal.h +++ b/src/shared/sensor_internal.h @@ -29,23 +29,22 @@ #endif #include "stdbool.h" - -#ifdef __cplusplus -extern "C" -{ -#endif - #include #include -#include - /*header for common sensor type*/ #include /*header for each sensor type*/ #include +#include + +#ifdef __cplusplus +extern "C" +{ +#endif + typedef void (*sensor_cb_t)(sensor_t sensor, unsigned int event_type, sensor_data_t *data, void *user_data); typedef void (*sensorhub_cb_t)(sensor_t sensor, unsigned int event_type, sensorhub_data_t *data, void *user_data); typedef void (*sensor_accuracy_changed_cb_t) (sensor_t sensor, unsigned long long timestamp, int accuracy, void *user_data); diff --git a/src/shared/sensor_internal_deprecated.h b/src/shared/sensor_internal_deprecated.h index cdf3084..4a6948c 100644 --- a/src/shared/sensor_internal_deprecated.h +++ b/src/shared/sensor_internal_deprecated.h @@ -26,11 +26,6 @@ #include "stdbool.h" -#ifdef __cplusplus -extern "C" -{ -#endif - #include /*header for common sensor type*/ @@ -41,6 +36,12 @@ extern "C" #include + +#ifdef __cplusplus +extern "C" +{ +#endif + #define MAX_KEY_LEN 30 typedef struct { -- 2.7.4 From 1eb9c45606154ad2a07c47897067e9fc8b3a180e Mon Sep 17 00:00:00 2001 From: "kibak.yoon" Date: Tue, 2 Feb 2016 11:27:17 +0900 Subject: [PATCH 13/16] sensord: [1/4] add the refactored HAL interface * WARNING: if this patch is applied only, it cannot be built. please apply the series of the patches Change-Id: I3095e9c7b387a0e00cddf5b4086fb18331584231 Signed-off-by: kibak.yoon --- packaging/sensord.spec | 4 +-- src/shared/sensor_common.h | 71 +++++++++------------------------------ src/shared/sensor_hal.h | 83 ++++++++++++++++++++++++++++++++++------------ src/shared/sf_common.h | 62 +++------------------------------- 4 files changed, 84 insertions(+), 136 deletions(-) diff --git a/packaging/sensord.spec b/packaging/sensord.spec index cd22230..ab768f0 100644 --- a/packaging/sensord.spec +++ b/packaging/sensord.spec @@ -21,7 +21,7 @@ BuildRequires: pkgconfig(cynara-client) BuildRequires: pkgconfig(cynara-session) Requires: libsensord = %{version}-%{release} -%define auto_rotation_state ON +%define auto_rotation_state OFF %define orientation_state OFF %define gravity_state OFF %define linear_accel_state OFF @@ -30,7 +30,7 @@ Requires: libsensord = %{version}-%{release} %define gaming_rv_state OFF %define tilt_state OFF %define gyroscope_uncal_state OFF -%define build_test_suite ON +%define build_test_suite OFF %description Sensor daemon diff --git a/src/shared/sensor_common.h b/src/shared/sensor_common.h index 53c7e26..ac3450f 100644 --- a/src/shared/sensor_common.h +++ b/src/shared/sensor_common.h @@ -20,6 +20,10 @@ #ifndef __SENSOR_COMMON_H__ #define __SENSOR_COMMON_H__ +#include +#include +#include + #ifndef DEPRECATED #define DEPRECATED __attribute__((deprecated)) #endif @@ -29,20 +33,17 @@ extern "C" { #endif -/** - * @defgroup SENSOR_FRAMEWORK SensorFW - * To support the unified API for the various sensors - */ - -/** - * @defgroup SENSOR_FRAMEWORK_COMMON Sensor Framework Common API - * @ingroup SENSOR_FRAMEWORK - * - * These APIs are used to control the sensors. - * @{ - */ - -typedef unsigned int sensor_id_t; +/* +typedef union { + struct { + sensor_type_t type; + int16_t sensor_id; + int16_t device_id; + } __attribute__((packed)); + int64_t id; +} sensor_id_t; +*/ +typedef int64_t sensor_id_t; typedef void *sensor_t; @@ -51,39 +52,6 @@ typedef enum { SENSOR_PRIVILEGE_INTERNAL, } sensor_privilege_t; - -#define SENSOR_DATA_VALUE_SIZE 16 - -/* - * When modifying it, check copy_sensor_data() - */ -typedef struct sensor_data_t { -/* - * Use "accuracy" instead of "data_accuracy" - * which is going to be removed soon - */ - union { - int accuracy; - int data_accuracy; //deprecated - }; - - union { - unsigned long long timestamp; - unsigned long long time_stamp; //deprecated - }; - -/* - * Use "value_count" instead of "values_num" - * which is going to be removed soon - */ - union { - int value_count; - int values_num; //deprecated - }; - - float values[SENSOR_DATA_VALUE_SIZE]; -} sensor_data_t; - #define SENSOR_HUB_DATA_SIZE 4096 typedef struct sensorhub_data_t { @@ -96,14 +64,6 @@ typedef struct sensorhub_data_t { float data[16]; } sensorhub_data_t; -enum sensor_accuracy_t { - SENSOR_ACCURACY_UNDEFINED = -1, - SENSOR_ACCURACY_BAD = 0, - SENSOR_ACCURACY_NORMAL =1, - SENSOR_ACCURACY_GOOD = 2, - SENSOR_ACCURACY_VERYGOOD = 3 -}; - /* * To prevent naming confliction as using same enums as sensor CAPI use */ @@ -137,7 +97,6 @@ enum sensor_interval_t { SENSOR_INTERVAL_NORMAL = 200, }; - typedef enum { CONDITION_NO_OP, CONDITION_EQUAL, diff --git a/src/shared/sensor_hal.h b/src/shared/sensor_hal.h index b9f38c6..46fd840 100644 --- a/src/shared/sensor_hal.h +++ b/src/shared/sensor_hal.h @@ -21,14 +21,20 @@ #define _SENSOR_HAL_H_ #include + +#ifdef __cplusplus #include #include -#include -#include +#endif /* __cplusplus */ #define SENSOR_HAL_VERSION(maj,min) \ ((((maj) & 0xffff) << 24) | ((min) & 0xffff)) +#ifdef __cplusplus +extern "C" +{ +#endif /* __cplusplus */ + /* * Sensor Types * These types are used to controll the sensors @@ -98,21 +104,61 @@ typedef enum { SENSOR_DEVICE_ROTATION_VECTOR_RAW, } sensor_device_type; +typedef struct sensor_info_t { + const char *model_name; + const char *vendor; + float min_range; + float max_range; + float resolution; + int min_interval; + int max_batch_count; + bool wakeup_supported; +} sensor_info_t; + /* * A platform sensor handler is generated based on this handle * ID can be assigned from HAL developer. so it has to be unique in HAL. */ typedef struct sensor_handle_t { - uint32_t id; - std::string name; + uint16_t id; + const char *name; sensor_device_type type; unsigned int event_type; // for Internal API - sensor_properties_s properties; + sensor_info_t info; } sensor_handle_t; +enum sensor_accuracy_t { + SENSOR_ACCURACY_UNDEFINED = -1, + SENSOR_ACCURACY_BAD = 0, + SENSOR_ACCURACY_NORMAL =1, + SENSOR_ACCURACY_GOOD = 2, + SENSOR_ACCURACY_VERYGOOD = 3 +}; + +#define SENSOR_DATA_VALUE_SIZE 16 + +/* sensor_data_t */ +typedef struct sensor_data_t { + int accuracy; + unsigned long long timestamp; + int value_count; + float values[SENSOR_DATA_VALUE_SIZE]; +} sensor_data_t; + +#ifdef __cplusplus +} +#endif /* __cplusplus */ + +#ifdef __cplusplus +typedef struct { + std::vector devices; +} sensor_devices; + +typedef sensor_devices* (*create_t)(void); + /* * Sensor device interface - * 1 HAL must be abstracted from 1 device event node + * 1 device must be abstracted from 1 device event node */ class sensor_device { @@ -127,23 +173,18 @@ public: virtual int get_poll_fd(void) = 0; virtual bool get_sensors(std::vector &sensors) = 0; - /* enable/disable sensor device */ - virtual bool enable(uint32_t id) = 0; - virtual bool disable(uint32_t id) = 0; - - /* set_command or set_option? */ - virtual bool set_command(uint32_t id, std::string command, std::string value) = 0; + virtual bool enable(uint16_t id) = 0; + virtual bool disable(uint16_t id) = 0; - /* the belows can be merged to one */ - virtual bool set_interval(uint32_t id, unsigned long val) = 0; - virtual bool set_batch_latency(uint32_t id, unsigned long val) = 0; + virtual bool set_interval(uint16_t id, unsigned long val) = 0; + virtual bool set_batch_latency(uint16_t id, unsigned long val) = 0; + virtual bool set_attribute(uint16_t id, int32_t attribute, int32_t value) = 0; - /* sensor fw read the data when is_data_ready() is true */ - virtual bool is_data_ready() = 0; - virtual bool get_sensor_data(uint32_t id, sensor_data_t &data) = 0; - virtual int get_sensor_event(uint32_t id, sensor_event_t **event) = 0; + virtual bool read_fd(std::vector &ids) = 0; + virtual int get_data(uint16_t id, sensor_data_t **data) = 0; - /* TODO: use get_sensors() instead of get_properties() */ - virtual bool get_properties(uint32_t id, sensor_properties_s &properties) = 0; + virtual bool flush(uint16_t id) = 0; }; +#endif /* __cplusplus */ + #endif /* _SENSOR_HAL_H_ */ diff --git a/src/shared/sf_common.h b/src/shared/sf_common.h index 2781348..7bcc35f 100644 --- a/src/shared/sf_common.h +++ b/src/shared/sf_common.h @@ -34,8 +34,6 @@ #define CLIENT_ID_INVALID -1 -#define SENSOR_TYPE_MASK 0xFFFF - enum packet_type_t { CMD_NONE = 0, CMD_GET_ID, @@ -84,7 +82,7 @@ typedef struct { typedef struct { int client_id; - int sensor; + sensor_id_t sensor; } cmd_hello_t; typedef struct { @@ -151,7 +149,7 @@ typedef struct { typedef struct { int data_len; - char data[0]; + int data; } cmd_send_sensorhub_data_t; #define EVENT_CHANNEL_MAGIC 0xCAFECAFE @@ -161,74 +159,24 @@ typedef struct { int client_id; } event_channel_ready_t; - -typedef struct { - std::string name; - std::string vendor; - float min_range; - float max_range; - float resolution; - int min_interval; - int fifo_count; - int max_batch_count; - bool wakeup_supported; -} sensor_properties_s; - - -/* - * When modifying it, check copy_sensor*_data() - */ typedef struct sensor_event_t { unsigned int event_type; sensor_id_t sensor_id; - sensor_data_t data; + unsigned int data_length; + sensor_data_t *data; } sensor_event_t; - typedef struct sensorhub_event_t { unsigned int event_type; sensor_id_t sensor_id; + unsigned int data_length; sensorhub_data_t data; } sensorhub_event_t; -typedef struct sensor_devices { - std::vector devices; -} sensor_devices; - -typedef sensor_devices* (*create_t)(void); - typedef void *(*cmd_func_t)(void *data, void *cb_data); typedef std::vector event_type_vector; -enum sensorhub_enable_bit { - SENSORHUB_ACCELEROMETER_ENABLE_BIT = 0, - SENSORHUB_GYROSCOPE_ENABLE_BIT, - SENSORHUB_GEOMAGNETIC_UNCALIB_ENABLE_BIT, - SENSORHUB_GEOMAGNETIC_RAW_ENABLE_BIT, - SENSORHUB_GEOMAGNETIC_ENABLE_BIT, - SENSORHUB_PRESSURE_ENABLE_BIT, - SENSORHUB_GESTURE_ENABLE_BIT, - SENSORHUB_PROXIMITY_ENABLE_BIT, - SENSORHUB_TEMPERATURE_HUMIDITY_ENABLE_BIT, - SENSORHUB_LIGHT_ENABLE_BIT, - SENSORHUB_PROXIMITY_RAW_ENABLE_BIT, - SENSORHUB_ORIENTATION_ENABLE_BIT, - SENSORHUB_STEP_DETECTOR_ENABLE_BIT = 12, - SENSORHUB_SIG_MOTION_ENABLE_BIT, - SENSORHUB_GYRO_UNCALIB_ENABLE_BIT, - SENSORHUB_GAME_ROTATION_VECTOR_ENABLE_BIT = 15, - SENSORHUB_ROTATION_VECTOR_ENABLE_BIT, - SENSORHUB_STEP_COUNTER_ENABLE_BIT, - SENSORHUB_BIO_HRM_RAW_ENABLE_BIT, - SENSORHUB_BIO_HRM_RAW_FAC_ENABLE_BIT, - SENSORHUB_BIO_HRM_LIB_ENABLE_BIT, - SENSORHUB_TILT_MOTION, - SENSORHUB_UV_SENSOR, - SENSORHUB_PIR_ENABLE_BIT, - SENSORHUB_ENABLE_BIT_MAX, -}; - enum sensor_permission_t { SENSOR_PERMISSION_NONE = 0, SENSOR_PERMISSION_STANDARD = (1 << 0), -- 2.7.4 From 87e0a9d16c46947766927f3fb0ca3e0257ad28ee Mon Sep 17 00:00:00 2001 From: "kibak.yoon" Date: Tue, 2 Feb 2016 11:47:00 +0900 Subject: [PATCH 14/16] sensord: [2/4] add the refactored HAL interface * sensor_id_t is changed to int64_t type - 0xFFFFFFFF(32bit) : sensor_type - 0xFFFF(16bit) : sensor_id(index from sensord) - 0xFFFF(16bit) : device_id(index from HAL) * it will be changed to union type Change-Id: I2f75d3ed3405d9cf3e6fc5ffcf51bab425d15a87 Signed-off-by: kibak.yoon --- src/client/client_common.cpp | 4 +-- src/client/sensor_client_info.cpp | 4 +-- src/server/command_worker.cpp | 54 +++++++++++++++++++-------------------- src/server/sensor_base.cpp | 16 ++++++------ src/server/sensor_loader.cpp.in | 20 ++++++++++----- src/shared/sensor_info.cpp | 26 ++++++++++++++++--- src/shared/sensor_info.h | 3 +++ src/shared/sensor_logs.cpp | 2 +- src/shared/sensor_logs.h | 3 ++- 9 files changed, 80 insertions(+), 52 deletions(-) diff --git a/src/client/client_common.cpp b/src/client/client_common.cpp index bc48da0..cc2e919 100644 --- a/src/client/client_common.cpp +++ b/src/client/client_common.cpp @@ -121,7 +121,7 @@ const char* get_log_element_name(log_id id, unsigned int type) const char* get_sensor_name(sensor_id_t sensor_id) { - sensor_type_t sensor_type = (sensor_type_t) (sensor_id & SENSOR_TYPE_MASK); + sensor_type_t sensor_type = (sensor_type_t) (sensor_id >> SENSOR_TYPE_SHIFT); return get_log_element_name(LOG_ID_SENSOR_TYPE, sensor_type); } @@ -185,7 +185,7 @@ unsigned int get_calibration_event_type(unsigned int event_type) { sensor_type_t sensor; - sensor = (sensor_type_t)(event_type >> SENSOR_TYPE_SHIFT); + sensor = (sensor_type_t)(event_type >> EVENT_TYPE_SHIFT); switch (sensor) { default: diff --git a/src/client/sensor_client_info.cpp b/src/client/sensor_client_info.cpp index 0917459..bdae177 100644 --- a/src/client/sensor_client_info.cpp +++ b/src/client/sensor_client_info.cpp @@ -460,7 +460,7 @@ bool sensor_client_info::get_active_batch(sensor_id_t sensor, unsigned int &inte } if (!active_sensor_found) { - DBG("Active sensor[0x%x] is not found for client %s", sensor, get_client_name()); + DBG("Active sensor[0x%llx] is not found for client %s", sensor, get_client_name()); return false; } @@ -492,7 +492,7 @@ unsigned int sensor_client_info::get_active_option(sensor_id_t sensor) } if (!active_sensor_found) - DBG("Active sensor[0x%x] is not found for client %s", sensor, get_client_name()); + DBG("Active sensor[0x%llx] is not found for client %s", sensor, get_client_name()); return active_option; } diff --git a/src/server/command_worker.cpp b/src/server/command_worker.cpp index cd0b628..c550ce3 100644 --- a/src/server/command_worker.cpp +++ b/src/server/command_worker.cpp @@ -229,7 +229,7 @@ bool command_worker::stopped(void *ctx) if (inst->m_sensor_id) { if (get_client_info_manager().has_sensor_record(inst->m_client_id, inst->m_sensor_id)) { - INFO("Removing sensor[0x%x] record for client_id[%d]", inst->m_sensor_id, inst->m_client_id); + INFO("Removing sensor[0x%llx] record for client_id[%d]", inst->m_sensor_id, inst->m_client_id); get_client_info_manager().remove_sensor_record(inst->m_client_id, inst->m_sensor_id); } } @@ -415,14 +415,14 @@ bool command_worker::cmd_hello(void *payload) } if (!is_permission_allowed()) { - ERR("Permission denied to connect sensor[0x%x] for client [%d]", m_sensor_id, m_client_id); + ERR("Permission denied to connect sensor[0x%llx] for client [%d]", m_sensor_id, m_client_id); ret_value = OP_ERROR; goto out; } - DBG("Hello sensor [0x%x], client id [%d]", m_sensor_id, m_client_id); + DBG("Hello sensor [0x%llx], client id [%d]", m_sensor_id, m_client_id); get_client_info_manager().create_sensor_record(m_client_id, m_sensor_id); - INFO("New sensor record created for sensor [0x%x], sensor name [%s] on client id [%d]\n", m_sensor_id, m_module->get_name(), m_client_id); + INFO("New sensor record created for sensor [0x%llx], sensor name [%s] on client id [%d]\n", m_sensor_id, m_module->get_name(), m_client_id); ret_value = OP_SUCCESS; out: if (!send_cmd_done(ret_value)) @@ -436,12 +436,12 @@ bool command_worker::cmd_byebye(void *payload) long ret_value = OP_ERROR; if (!is_permission_allowed()) { - ERR("Permission denied to stop sensor[0x%x] for client [%d]", m_sensor_id, m_client_id); + ERR("Permission denied to stop sensor[0x%llx] for client [%d]", m_sensor_id, m_client_id); ret_value = OP_ERROR; goto out; } - DBG("CMD_BYEBYE for client [%d], sensor [0x%x]", m_client_id, m_sensor_id); + DBG("CMD_BYEBYE for client [%d], sensor [0x%llx]", m_client_id, m_sensor_id); if (!get_client_info_manager().remove_sensor_record(m_client_id, m_sensor_id)) { ERR("Error removing sensor_record for client [%d]", m_client_id); @@ -467,12 +467,12 @@ bool command_worker::cmd_start(void *payload) long ret_value = OP_ERROR; if (!is_permission_allowed()) { - ERR("Permission denied to start sensor[0x%x] for client [%d]", m_sensor_id, m_client_id); + ERR("Permission denied to start sensor[0x%llx] for client [%d]", m_sensor_id, m_client_id); ret_value = OP_ERROR; goto out; } - DBG("START Sensor [0x%x], called from client [%d]", m_sensor_id, m_client_id); + DBG("START Sensor [0x%llx], called from client [%d]", m_sensor_id, m_client_id); if (m_module->start()) { get_client_info_manager().set_start(m_client_id, m_sensor_id, true); @@ -484,7 +484,7 @@ bool command_worker::cmd_start(void *payload) get_event_dispathcher().request_last_event(m_client_id, m_sensor_id); ret_value = OP_SUCCESS; } else { - ERR("Failed to start sensor [0x%x] for client [%d]", m_sensor_id, m_client_id); + ERR("Failed to start sensor [0x%llx] for client [%d]", m_sensor_id, m_client_id); ret_value = OP_ERROR; } @@ -500,18 +500,18 @@ bool command_worker::cmd_stop(void *payload) long ret_value = OP_ERROR; if (!is_permission_allowed()) { - ERR("Permission denied to stop sensor[0x%x] for client [%d]", m_sensor_id, m_client_id); + ERR("Permission denied to stop sensor[0x%llx] for client [%d]", m_sensor_id, m_client_id); ret_value = OP_ERROR; goto out; } - DBG("STOP Sensor [0x%x], called from client [%d]", m_sensor_id, m_client_id); + DBG("STOP Sensor [0x%llx], called from client [%d]", m_sensor_id, m_client_id); if (m_module->stop()) { get_client_info_manager().set_start(m_client_id, m_sensor_id, false); ret_value = OP_SUCCESS; } else { - ERR("Failed to stop sensor [0x%x] for client [%d]", m_sensor_id, m_client_id); + ERR("Failed to stop sensor [0x%llx] for client [%d]", m_sensor_id, m_client_id); ret_value = OP_ERROR; } @@ -595,28 +595,28 @@ bool command_worker::cmd_set_batch(void *payload) cmd = (cmd_set_batch_t*)payload; if (!is_permission_allowed()) { - ERR("Permission denied to set batch for client [%d], for sensor [0x%x] with batch [%d, %d] to client info manager", + ERR("Permission denied to set batch for client [%d], for sensor [0x%llx] with batch [%d, %d] to client info manager", m_client_id, m_sensor_id, cmd->interval, cmd->latency); ret_value = OP_ERROR; goto out; } if (!get_client_info_manager().set_batch(m_client_id, m_sensor_id, cmd->interval, cmd->latency)) { - ERR("Failed to set batch for client [%d], for sensor [0x%x] with batch [%d, %d] to client info manager", + ERR("Failed to set batch for client [%d], for sensor [0x%llx] with batch [%d, %d] to client info manager", m_client_id, m_sensor_id, cmd->interval, cmd->latency); ret_value = OP_ERROR; goto out; } if (!m_module->add_interval(m_client_id, cmd->interval, false)) { - ERR("Failed to set interval for client [%d], for sensor [0x%x] with interval [%d]", + ERR("Failed to set interval for client [%d], for sensor [0x%llx] with interval [%d]", m_client_id, m_sensor_id, cmd->interval); ret_value = OP_ERROR; goto out; } if (!m_module->add_batch(m_client_id, cmd->latency)) { - ERR("Failed to set latency for client [%d], for sensor [0x%x] with latency [%d]", + ERR("Failed to set latency for client [%d], for sensor [0x%llx] with latency [%d]", m_client_id, m_sensor_id, cmd->latency); ret_value = OP_ERROR; goto out; @@ -636,14 +636,14 @@ bool command_worker::cmd_unset_batch(void *payload) long ret_value = OP_ERROR; if (!is_permission_allowed()) { - ERR("Permission denied to unset batch for client [%d], for sensor [0x%x] to client info manager", + ERR("Permission denied to unset batch for client [%d], for sensor [0x%llx] to client info manager", m_client_id, m_sensor_id); ret_value = OP_ERROR; goto out; } if (!get_client_info_manager().set_batch(m_client_id, m_sensor_id, 0, 0)) { - ERR("Failed to unset batch for client [%d], for sensor [0x%x] to client info manager", + ERR("Failed to unset batch for client [%d], for sensor [0x%llx] to client info manager", m_client_id, m_sensor_id); ret_value = OP_ERROR; goto out; @@ -678,14 +678,14 @@ bool command_worker::cmd_set_option(void *payload) cmd = (cmd_set_option_t*)payload; if (!is_permission_allowed()) { - ERR("Permission denied to set interval for client [%d], for sensor [0x%x] with option [%d] to client info manager", + ERR("Permission denied to set interval for client [%d], for sensor [0x%llx] with option [%d] to client info manager", m_client_id, m_sensor_id, cmd->option); ret_value = OP_ERROR; goto out; } if (!get_client_info_manager().set_option(m_client_id, m_sensor_id, cmd->option)) { - ERR("Failed to set option for client [%d], for sensor [0x%x] with option [%d] to client info manager", + ERR("Failed to set option for client [%d], for sensor [0x%llx] with option [%d] to client info manager", m_client_id, m_sensor_id, cmd->option); ret_value = OP_ERROR; goto out; @@ -707,14 +707,14 @@ bool command_worker::cmd_set_wakeup(void *payload) cmd = (cmd_set_wakeup_t*)payload; if (!is_permission_allowed()) { - ERR("Permission denied to set wakeup for client [%d], for sensor [0x%x] with wakeup [%d] to client info manager", + ERR("Permission denied to set wakeup for client [%d], for sensor [0x%llx] with wakeup [%d] to client info manager", m_client_id, m_sensor_id, cmd->wakeup); ret_value = OP_ERROR; goto out; } if (!get_client_info_manager().set_wakeup(m_client_id, m_sensor_id, cmd->wakeup)) { - ERR("Failed to set wakeup for client [%d], for sensor [0x%x] with wakeup [%d] to client info manager", + ERR("Failed to set wakeup for client [%d], for sensor [0x%llx] with wakeup [%d] to client info manager", m_client_id, m_sensor_id, cmd->wakeup); ret_value = OP_ERROR; goto out; @@ -739,7 +739,7 @@ bool command_worker::cmd_set_command(void *payload) cmd = (cmd_set_command_t*)payload; if (!is_permission_allowed()) { - ERR("Permission denied to set command for client [%d], for sensor [0x%x] with cmd [%d]", + ERR("Permission denied to set command for client [%d], for sensor [0x%llx] with cmd [%d]", m_client_id, m_sensor_id, cmd->cmd); ret_value = OP_ERROR; goto out; @@ -765,7 +765,7 @@ bool command_worker::cmd_get_data(void *payload) DBG("CMD_GET_VALUE Handler invoked\n"); if (!is_permission_allowed()) { - ERR("Permission denied to get data for client [%d], for sensor [0x%x]", + ERR("Permission denied to get data for client [%d], for sensor [0x%llx]", m_client_id, m_sensor_id); state = OP_ERROR; goto out; @@ -794,7 +794,7 @@ bool command_worker::cmd_get_data(void *payload) } while (!state && !data.timestamp && (retry++ < RETRY_CNT)) { - INFO("Wait sensor[0x%x] data updated for client [%d] #%d", m_sensor_id, m_client_id, retry); + INFO("Wait sensor[0x%llx] data updated for client [%d] #%d", m_sensor_id, m_client_id, retry); usleep((retry == 1) ? INIT_WAIT_TIME : WAIT_TIME); state = m_module->get_sensor_data(data); } @@ -807,7 +807,7 @@ bool command_worker::cmd_get_data(void *payload) state = OP_ERROR; if (state) { - ERR("Failed to get data for client [%d], for sensor [0x%x]", + ERR("Failed to get data for client [%d], for sensor [0x%llx]", m_client_id, m_sensor_id); } @@ -827,7 +827,7 @@ bool command_worker::cmd_send_sensorhub_data(void *payload) cmd = (cmd_send_sensorhub_data_t*)payload; if (!is_permission_allowed()) { - ERR("Permission denied to send sensorhub_data for client [%d], for sensor [0x%x]", + ERR("Permission denied to send sensorhub_data for client [%d], for sensor [0x%llx]", m_client_id, m_sensor_id); ret_value = OP_ERROR; goto out; diff --git a/src/server/sensor_base.cpp b/src/server/sensor_base.cpp index 16028f5..1acd466 100644 --- a/src/server/sensor_base.cpp +++ b/src/server/sensor_base.cpp @@ -115,7 +115,7 @@ bool sensor_base::add_interval(int client_id, unsigned int interval, bool is_pro cur_min = m_plugin_info_list.get_min_interval(); if (cur_min != prev_min) { - INFO("Min interval for sensor[0x%x] is changed from %dms to %dms" + INFO("Min interval for sensor[0x%llx] is changed from %dms to %dms" " by%sclient[%d] adding interval", get_id(), prev_min, cur_min, is_processor ? " processor " : " ", client_id); @@ -139,14 +139,14 @@ bool sensor_base::delete_interval(int client_id, bool is_processor) cur_min = m_plugin_info_list.get_min_interval(); if (!cur_min) { - INFO("No interval for sensor[0x%x] by%sclient[%d] deleting interval, " + INFO("No interval for sensor[0x%llx] by%sclient[%d] deleting interval, " "so set to default %dms", get_id(), is_processor ? " processor " : " ", client_id, POLL_1HZ_MS); set_interval(POLL_1HZ_MS); } else if (cur_min != prev_min) { - INFO("Min interval for sensor[0x%x] is changed from %dms to %dms" + INFO("Min interval for sensor[0x%llx] is changed from %dms to %dms" " by%sclient[%d] deleting interval", get_id(), prev_min, cur_min, is_processor ? " processor " : " ", client_id); @@ -178,7 +178,7 @@ bool sensor_base::add_batch(int client_id, unsigned int latency) cur_max = m_plugin_info_list.get_max_batch(); if (cur_max != prev_max) { - INFO("Max latency for sensor[0x%x] is changed from %dms to %dms by client[%d] adding latency", + INFO("Max latency for sensor[0x%llx] is changed from %dms to %dms by client[%d] adding latency", get_id(), prev_max, cur_max, client_id); set_batch(cur_max); } @@ -199,12 +199,12 @@ bool sensor_base::delete_batch(int client_id) cur_max = m_plugin_info_list.get_max_batch(); if (!cur_max) { - INFO("No latency for sensor[0x%x] by client[%d] deleting latency, so set to default 0 ms", + INFO("No latency for sensor[0x%llx] by client[%d] deleting latency, so set to default 0 ms", get_id(), client_id); set_batch(0); } else if (cur_max != prev_max) { - INFO("Max latency for sensor[0x%x] is changed from %dms to %dms by client[%d] deleting latency", + INFO("Max latency for sensor[0x%llx] is changed from %dms to %dms by client[%d] deleting latency", get_id(), prev_max, cur_max, client_id); set_batch(cur_max); @@ -234,7 +234,7 @@ bool sensor_base::add_wakeup(int client_id, int wakeup) cur_wakeup = m_plugin_info_list.is_wakeup_on(); if ((cur_wakeup == SENSOR_WAKEUP_ON) && (prev_wakeup < SENSOR_WAKEUP_ON)) { - INFO("Wakeup for sensor[0x%x] is changed from %d to %d by client[%d] adding wakeup", + INFO("Wakeup for sensor[0x%llx] is changed from %d to %d by client[%d] adding wakeup", get_id(), prev_wakeup, cur_wakeup, client_id); set_wakeup(SENSOR_WAKEUP_ON); } @@ -255,7 +255,7 @@ bool sensor_base::delete_wakeup(int client_id) cur_wakeup = m_plugin_info_list.is_wakeup_on(); if ((cur_wakeup < SENSOR_WAKEUP_ON) && (prev_wakeup == SENSOR_WAKEUP_ON)) { - INFO("Wakeup for sensor[0x%x] is changed from %d to %d by client[%d] deleting wakeup", + INFO("Wakeup for sensor[0x%llx] is changed from %d to %d by client[%d] deleting wakeup", get_id(), prev_wakeup, cur_wakeup, client_id); set_wakeup(SENSOR_WAKEUP_OFF); } diff --git a/src/server/sensor_loader.cpp.in b/src/server/sensor_loader.cpp.in index 25d885b..d46ad81 100644 --- a/src/server/sensor_loader.cpp.in +++ b/src/server/sensor_loader.cpp.in @@ -37,6 +37,7 @@ using std::vector; using std::string; #define DEVICE_PLUGINS_DIR_PATH "/usr/lib/sensor" +#define SENSOR_TYPE_SHIFT 32 #define SENSOR_INDEX_SHIFT 16 sensor_loader::sensor_loader() @@ -89,10 +90,10 @@ bool sensor_loader::load_devices(const string &path, vector &devices, voi physical_sensor* sensor_loader::create_sensor(sensor_handle_t handle, sensor_device *device) { - int index; + int16_t index; physical_sensor *sensor; - index = m_sensors.count((sensor_type_t)handle.type); + index = (int16_t) (m_sensors.count((sensor_type_t)handle.type)); sensor = new(std::nothrow) physical_sensor(); if (!sensor) { @@ -100,7 +101,7 @@ physical_sensor* sensor_loader::create_sensor(sensor_handle_t handle, sensor_dev return NULL; } - sensor->set_id(index << SENSOR_INDEX_SHIFT | handle.type); + sensor->set_id((int64_t)handle.type << SENSOR_TYPE_SHIFT | index << SENSOR_INDEX_SHIFT | handle.id); sensor->set_sensor_handle(handle); sensor->set_sensor_device(device); @@ -172,6 +173,8 @@ bool sensor_loader::load_sensors(void) template void sensor_loader::load_virtual_sensor(const char *name) { + sensor_type_t type; + int16_t index; virtual_sensor *instance = NULL; try { @@ -191,9 +194,12 @@ void sensor_loader::load_virtual_sensor(const char *name) } std::shared_ptr sensor(instance); - sensor_type_t type = sensor->get_type(); - sensor->set_id(type); + type = sensor->get_type(); + index = (int16_t)(m_sensors.count(type)); + + sensor->set_id((int64_t)type << SENSOR_TYPE_SHIFT | index); + m_sensors.insert(std::make_pair(type, sensor)); } @@ -260,8 +266,8 @@ sensor_base* sensor_loader::get_sensor(sensor_id_t id) { vector sensors; - sensor_type_t type = static_cast (id & SENSOR_TYPE_MASK); - unsigned int index = id >> SENSOR_INDEX_SHIFT; + sensor_type_t type = static_cast (id >> SENSOR_TYPE_SHIFT); + unsigned int index = (id >> SENSOR_INDEX_SHIFT) & 0xFFFF; sensors = get_sensors(type); diff --git a/src/shared/sensor_info.cpp b/src/shared/sensor_info.cpp index 030b2dc..79dbfee 100644 --- a/src/shared/sensor_info.cpp +++ b/src/shared/sensor_info.cpp @@ -166,8 +166,8 @@ void sensor_info::set_wakeup_supported(bool supported) void sensor_info::get_raw_data(raw_data_t &data) { - put(data, (int)m_type); - put(data, (int) m_id); + put(data, (int) m_type); + put(data, (int64_t) (m_id)); put(data, (int) m_privilege); put(data, m_name); put(data, m_vendor); @@ -187,7 +187,8 @@ void sensor_info::set_raw_data(const char *data, int data_len) auto it_r_data = raw_data.begin(); - int type, id, privilege; + int type, privilege; + int64_t id; it_r_data = get(it_r_data, type); m_type = (sensor_type_t) type; @@ -210,7 +211,7 @@ void sensor_info::set_raw_data(const char *data, int data_len) void sensor_info::show(void) { INFO("Type = %d", m_type); - INFO("ID = 0x%x", (int)m_id); + INFO("ID = 0x%llx", (uint64_t)m_id); INFO("Privilege = %d", (int)m_privilege); INFO("Name = %s", m_name.c_str()); INFO("Vendor = %s", m_vendor.c_str()); @@ -264,6 +265,16 @@ void sensor_info::put(raw_data_t &data, unsigned int value) copy(&buffer[0], &buffer[sizeof(buffer)], back_inserter(data)); } +void sensor_info::put(raw_data_t &data, int64_t value) +{ + char buffer[sizeof(value)]; + + int64_t *temp = (int64_t *) buffer; + *temp = value; + + copy(&buffer[0], &buffer[sizeof(buffer)], back_inserter(data)); +} + void sensor_info::put(raw_data_t &data, float value) { char buffer[sizeof(value)]; @@ -305,6 +316,13 @@ raw_data_iterator sensor_info::get(raw_data_iterator it, unsigned int &value) return it + sizeof(value); } +raw_data_iterator sensor_info::get(raw_data_iterator it, int64_t &value) +{ + copy(it, it + sizeof(value), (char*) &value); + + return it + sizeof(value); +} + raw_data_iterator sensor_info::get(raw_data_iterator it, float &value) { copy(it, it + sizeof(value), (char*) &value); diff --git a/src/shared/sensor_info.h b/src/shared/sensor_info.h index 732cc62..3b20ff3 100644 --- a/src/shared/sensor_info.h +++ b/src/shared/sensor_info.h @@ -20,6 +20,7 @@ #ifndef _SENSOR_INFO_H_ #define _SENSOR_INFO_H_ +#include #include #include #include @@ -83,12 +84,14 @@ private: void put(raw_data_t &data, int value); void put(raw_data_t &data, unsigned int value); + void put(raw_data_t &data, int64_t value); void put(raw_data_t &data, float value); void put(raw_data_t &data, std::string &value); void put(raw_data_t &data, bool value); raw_data_iterator get(raw_data_iterator it, int &value); raw_data_iterator get(raw_data_iterator it, unsigned int &value); + raw_data_iterator get(raw_data_iterator it, int64_t &value); raw_data_iterator get(raw_data_iterator it, float &value); raw_data_iterator get(raw_data_iterator it, std::string &value); raw_data_iterator get(raw_data_iterator it, bool &value); diff --git a/src/shared/sensor_logs.cpp b/src/shared/sensor_logs.cpp index 6af6cc5..8abd66a 100644 --- a/src/shared/sensor_logs.cpp +++ b/src/shared/sensor_logs.cpp @@ -175,7 +175,7 @@ const char* get_client_name(void) bool is_sensorhub_event(unsigned int event_type) { - if ((event_type >> SENSOR_TYPE_SHIFT) == CONTEXT_SENSOR) + if ((event_type >> EVENT_TYPE_SHIFT) == CONTEXT_SENSOR) return true; return false; diff --git a/src/shared/sensor_logs.h b/src/shared/sensor_logs.h index 4192123..98cdf63 100644 --- a/src/shared/sensor_logs.h +++ b/src/shared/sensor_logs.h @@ -41,7 +41,8 @@ extern "C" #endif -#define SENSOR_TYPE_SHIFT 16 +#define EVENT_TYPE_SHIFT 16 +#define SENSOR_TYPE_SHIFT 32 enum sf_log_type { SF_LOG_PRINT_FILE = 1, -- 2.7.4 From 57d79e0450451366d325ebd08638d1cdcb5b6043 Mon Sep 17 00:00:00 2001 From: "kibak.yoon" Date: Tue, 2 Feb 2016 11:58:46 +0900 Subject: [PATCH 15/16] sensord: [3/4] add the refactored HAL interface * use the refactored HAL interface Change-Id: Id25bc3b424f2cbf0847408f90c8f4d0b21fdd140 Signed-off-by: kibak.yoon --- src/client/command_channel.cpp | 4 +- src/client/sensor_event_listener.cpp | 15 ++- src/server/command_worker.cpp | 21 ++-- src/server/physical_sensor.cpp | 125 ++++++++++++++--------- src/server/physical_sensor.h | 14 ++- src/server/sensor_base.cpp | 178 +++++++++++++-------------------- src/server/sensor_base.h | 50 ++++----- src/server/sensor_event_dispatcher.cpp | 19 +++- src/server/sensor_event_poller.cpp | 38 ++++--- src/server/sensor_event_poller.h | 4 +- src/server/sensor_event_queue.h | 6 +- src/server/sensor_loader.cpp.in | 2 +- 12 files changed, 235 insertions(+), 241 deletions(-) diff --git a/src/client/command_channel.cpp b/src/client/command_channel.cpp index 92bc9dd..902ec76 100644 --- a/src/client/command_channel.cpp +++ b/src/client/command_channel.cpp @@ -17,6 +17,7 @@ * */ +#include #include #include #include @@ -697,8 +698,7 @@ bool command_channel::cmd_send_sensorhub_data(const char* buffer, int data_len) cmd_send_sensorhub_data = (cmd_send_sensorhub_data_t*)packet->data(); cmd_send_sensorhub_data->data_len = data_len; - memcpy(cmd_send_sensorhub_data->data, buffer, data_len); - + cmd_send_sensorhub_data->data = atoi(buffer); INFO("%s send cmd_send_sensorhub_data(client_id=%d, data_len = %d, buffer = 0x%x)", get_client_name(), m_client_id, data_len, buffer); diff --git a/src/client/sensor_event_listener.cpp b/src/client/sensor_event_listener.cpp index 2c94ca8..52dada1 100644 --- a/src/client/sensor_event_listener.cpp +++ b/src/client/sensor_event_listener.cpp @@ -183,17 +183,18 @@ void sensor_event_listener::handle_events(void* event) } else { sensor_event_t *sensor_event = (sensor_event_t *)event; sensor_id = sensor_event->sensor_id; - sensor_data = &(sensor_event->data); - cur_time = sensor_event->data.timestamp; - accuracy = sensor_event->data.accuracy; + sensor_event->data = (sensor_data_t *)((void *)sensor_event + sizeof(sensor_event_t)); + sensor_data = sensor_event->data; + cur_time = sensor_event->data->timestamp; + accuracy = sensor_event->data->accuracy; if (is_single_state_event(event_type)) { - single_state_event_data = (int) sensor_event->data.values[0]; + single_state_event_data = (int) sensor_event->data->values[0]; event_data.event_data = (void *)&(single_state_event_data); event_data.event_data_size = sizeof(single_state_event_data); } else if (is_panning_event(event_type)) { - panning_data.x = (int)sensor_event->data.values[0]; - panning_data.y = (int)sensor_event->data.values[1]; + panning_data.x = (int)sensor_event->data->values[0]; + panning_data.y = (int)sensor_event->data->values[1]; event_data.event_data = (void *)&panning_data; event_data.event_data_size = sizeof(panning_data); } else { @@ -259,10 +260,8 @@ void sensor_event_listener::handle_events(void* event) post_callback_to_main_loop(*it_calback_info); ++it_calback_info; } - } - client_callback_info* sensor_event_listener::get_callback_info(sensor_id_t sensor_id, const reg_event_info *event_info, void* sensor_data, void *buffer) { client_callback_info* callback_info; diff --git a/src/server/command_worker.cpp b/src/server/command_worker.cpp index c550ce3..e4d8191 100644 --- a/src/server/command_worker.cpp +++ b/src/server/command_worker.cpp @@ -305,7 +305,6 @@ bool command_worker::send_cmd_get_id_done(int client_id) bool command_worker::send_cmd_get_data_done(int state, sensor_data_t *data) { - cpacket* ret_packet; cmd_get_data_done_t *cmd_get_data_done; @@ -745,7 +744,7 @@ bool command_worker::cmd_set_command(void *payload) goto out; } - ret_value = m_module->set_command(cmd->cmd, cmd->value); + ret_value = m_module->set_attribute(cmd->cmd, cmd->value); out: if (!send_cmd_done(ret_value)) @@ -760,7 +759,7 @@ bool command_worker::cmd_get_data(void *payload) int state = OP_ERROR; bool adjusted = false; - sensor_data_t data; + sensor_data_t *data; DBG("CMD_GET_VALUE Handler invoked\n"); @@ -771,7 +770,7 @@ bool command_worker::cmd_get_data(void *payload) goto out; } - state = m_module->get_sensor_data(data); + state = m_module->get_data(&data); // In case of not getting sensor data, wait short time and retry again // 1. changing interval to be less than 10ms @@ -780,7 +779,7 @@ bool command_worker::cmd_get_data(void *payload) // 4. retrying to get data // 5. repeat 2 ~ 4 operations RETRY_CNT times // 6. reverting back to original interval - if (!state && !data.timestamp) { + if ((state > 0) && !data->timestamp) { const int RETRY_CNT = 5; const unsigned long long INIT_WAIT_TIME = 20000; //20ms const unsigned long WAIT_TIME = 100000; //100ms @@ -793,26 +792,26 @@ bool command_worker::cmd_get_data(void *payload) adjusted = true; } - while (!state && !data.timestamp && (retry++ < RETRY_CNT)) { + while ((state > 0) && !data->timestamp && (retry++ < RETRY_CNT)) { INFO("Wait sensor[0x%llx] data updated for client [%d] #%d", m_sensor_id, m_client_id, retry); usleep((retry == 1) ? INIT_WAIT_TIME : WAIT_TIME); - state = m_module->get_sensor_data(data); + state = m_module->get_data(&data); } if (adjusted) m_module->add_interval(m_client_id, interval, false); } - if (!data.timestamp) + if (!data->timestamp) state = OP_ERROR; - if (state) { + if (state <= 0) { ERR("Failed to get data for client [%d], for sensor [0x%llx]", m_client_id, m_sensor_id); } out: - send_cmd_get_data_done(state, &data); + send_cmd_get_data_done(state, data); return true; } @@ -833,7 +832,7 @@ bool command_worker::cmd_send_sensorhub_data(void *payload) goto out; } - ret_value = m_module->send_sensorhub_data(cmd->data, cmd->data_len); + ret_value = m_module->set_attribute(cmd->data, cmd->data_len); out: if (!send_cmd_done(ret_value)) diff --git a/src/server/physical_sensor.cpp b/src/server/physical_sensor.cpp index 3c6f697..7d6de5a 100644 --- a/src/server/physical_sensor.cpp +++ b/src/server/physical_sensor.cpp @@ -27,12 +27,24 @@ cmutex physical_sensor::m_mutex; physical_sensor::physical_sensor() : m_sensor_device(NULL) { - } physical_sensor::~physical_sensor() { +} +void physical_sensor::set_sensor_handle(sensor_handle_t handle) +{ + m_handle.id = handle.id; + m_handle.name = handle.name; + m_handle.type = handle.type; + m_handle.event_type = handle.event_type; + m_handle.info = handle.info; +} + +void physical_sensor::set_sensor_device(sensor_device *device) +{ + m_sensor_device = device; } sensor_type_t physical_sensor::get_type(void) @@ -47,24 +59,10 @@ unsigned int physical_sensor::get_event_type(void) const char* physical_sensor::get_name(void) { - if (m_handle.name.empty()) + if (!m_handle.name) return UNKNOWN_NAME; - return m_handle.name.c_str(); -} - -void physical_sensor::set_sensor_handle(sensor_handle_t handle) -{ - m_handle.id = handle.id; - m_handle.name = handle.name; - m_handle.type = handle.type; - m_handle.event_type = handle.event_type; - m_handle.properties = handle.properties; -} - -void physical_sensor::set_sensor_device(sensor_device *device) -{ - m_sensor_device = device; + return m_handle.name; } int physical_sensor::get_poll_fd() @@ -77,86 +75,119 @@ int physical_sensor::get_poll_fd() return m_sensor_device->get_poll_fd(); } -bool physical_sensor::on_start() +bool physical_sensor::read_fd(std::vector &ids) { AUTOLOCK(m_mutex); - return m_sensor_device->enable(m_handle.id); + if (!m_sensor_device) + return false; + + return m_sensor_device->read_fd(ids); } -bool physical_sensor::on_stop() +int physical_sensor::get_data(sensor_data_t **data) { AUTOLOCK(m_mutex); - return m_sensor_device->disable(m_handle.id); + if (!m_sensor_device) + return false; + + int length = -1; + length = m_sensor_device->get_data(m_handle.id, data); + + if (length < 0) { + ERR("Failed to get sensor event"); + return -1; + } + + return length; } -long physical_sensor::set_command(unsigned int cmd, long value) +bool physical_sensor::flush(void) { AUTOLOCK(m_mutex); - return m_sensor_device->set_command(m_handle.id, std::to_string(cmd), std::to_string(value)); + if (!m_sensor_device) + return false; + + return m_sensor_device->flush(m_handle.id); } bool physical_sensor::set_interval(unsigned long interval) { AUTOLOCK(m_mutex); + if (!m_sensor_device) + return false; + INFO("Polling interval is set to %dms", interval); return m_sensor_device->set_interval(m_handle.id, interval); } -bool physical_sensor::set_batch(unsigned long latency) +bool physical_sensor::set_batch_latency(unsigned long latency) { AUTOLOCK(m_mutex); + if (!m_sensor_device) + return false; + INFO("Polling interval is set to %dms", latency); return m_sensor_device->set_batch_latency(m_handle.id, latency); } -bool physical_sensor::set_wakeup(int wakeup) +int physical_sensor::set_attribute(int32_t attribute, int32_t value) { - return false; + AUTOLOCK(m_mutex); + + if (!m_sensor_device) + return false; + + return m_sensor_device->set_attribute(m_handle.id, attribute, value); } -bool physical_sensor::is_data_ready(void) +bool physical_sensor::set_wakeup(int wakeup) { - AUTOLOCK(m_mutex); - - return m_sensor_device->is_data_ready(); + return false; } -int physical_sensor::get_sensor_data(sensor_data_t &data) +bool physical_sensor::on_start() { AUTOLOCK(m_mutex); - if (!m_sensor_device->get_sensor_data(m_handle.id, data)) { - ERR("Failed to get sensor data"); - return -1; - } + if (!m_sensor_device) + return false; - return 0; + return m_sensor_device->enable(m_handle.id); } -int physical_sensor::get_sensor_event(sensor_event_t **event) +bool physical_sensor::on_stop() { AUTOLOCK(m_mutex); - int event_length = -1; - event_length = m_sensor_device->get_sensor_event(m_handle.id, event); - - if (event_length < 0) { - ERR("Failed to get sensor event"); - return -1; - } + if (!m_sensor_device) + return false; - return event_length; + return m_sensor_device->disable(m_handle.id); } -bool physical_sensor::get_properties(sensor_properties_s &properties) +bool physical_sensor::get_sensor_info(sensor_info &info) { - return m_sensor_device->get_properties(m_handle.id, properties); + info.set_type(get_type()); + info.set_id(get_id()); + info.set_privilege(SENSOR_PRIVILEGE_PUBLIC); // FIXME + info.set_name(m_handle.info.model_name); + info.set_vendor(m_handle.info.vendor); + info.set_min_range(m_handle.info.min_range); + info.set_max_range(m_handle.info.max_range); + info.set_resolution(m_handle.info.resolution); + info.set_min_interval(m_handle.info.min_interval); + info.set_fifo_count(0); // FIXME + info.set_max_batch_count(m_handle.info.max_batch_count); + info.set_supported_event(get_event_type()); + info.set_wakeup_supported(m_handle.info.wakeup_supported); + + return true; } diff --git a/src/server/physical_sensor.h b/src/server/physical_sensor.h index 5abc41b..b7aecd0 100644 --- a/src/server/physical_sensor.h +++ b/src/server/physical_sensor.h @@ -41,11 +41,9 @@ public: int get_poll_fd(); - /* get data */ - bool is_data_ready(void); - virtual int get_sensor_data(sensor_data_t &data); - virtual int get_sensor_event(sensor_event_t **event); - + virtual bool read_fd(std::vector &ids); + virtual int get_data(sensor_data_t **data); + virtual bool flush(void); private: static cmutex m_mutex; @@ -53,12 +51,12 @@ private: sensor_device *m_sensor_device; virtual bool set_interval(unsigned long interval); + virtual bool set_batch_latency(unsigned long latency); + virtual int set_attribute(int32_t attribute, int32_t value); virtual bool set_wakeup(int wakeup); - virtual bool set_batch(unsigned long latency); virtual bool on_start(void); virtual bool on_stop(void); - virtual long set_command(unsigned int cmd, long value); - virtual bool get_properties(sensor_properties_s &properties); + virtual bool get_sensor_info(sensor_info &info); }; #endif /* _PHYSICAL_SENSOR_H_ */ diff --git a/src/server/sensor_base.cpp b/src/server/sensor_base.cpp index 1acd466..5338df2 100644 --- a/src/server/sensor_base.cpp +++ b/src/server/sensor_base.cpp @@ -30,10 +30,9 @@ using std::vector; sensor_base::sensor_base() : m_unique_id(-1) -, m_privilege(SENSOR_PRIVILEGE_PUBLIC) , m_permission(SENSOR_PERMISSION_STANDARD) -, m_client(0) , m_started(false) +, m_client(0) { } @@ -41,11 +40,59 @@ sensor_base::~sensor_base() { } +void sensor_base::set_id(sensor_id_t id) +{ + m_unique_id = id; +} + +sensor_id_t sensor_base::get_id(void) +{ + if (m_unique_id == -1) + return UNKNOWN_SENSOR; + + return m_unique_id; +} + sensor_type_t sensor_base::get_type(void) { return UNKNOWN_SENSOR; } +unsigned int sensor_base::get_event_type(void) +{ + return -1; +} + +const char* sensor_base::get_name() +{ + return NULL; +} + +bool sensor_base::get_sensor_info(sensor_info &info) +{ + return false; +} + +bool sensor_base::is_virtual() +{ + return false; +} + +int sensor_base::get_data(sensor_data_t **data) +{ + return -1; +} + +bool sensor_base::flush(void) +{ + return false; +} + +int sensor_base::set_attribute(int32_t cmd, int32_t value) +{ + return -1; +} + bool sensor_base::start() { AUTOLOCK(m_client_mutex); @@ -86,19 +133,11 @@ bool sensor_base::stop(void) return true; } -bool sensor_base::on_start() -{ - return false; -} - -bool sensor_base::on_stop() +bool sensor_base::is_started(void) { - return false; -} + AUTOLOCK(m_client_mutex); -long sensor_base::set_command(unsigned int cmd, long value) -{ - return -1; + return m_started; } bool sensor_base::add_interval(int client_id, unsigned int interval, bool is_processor) @@ -180,7 +219,7 @@ bool sensor_base::add_batch(int client_id, unsigned int latency) if (cur_max != prev_max) { INFO("Max latency for sensor[0x%llx] is changed from %dms to %dms by client[%d] adding latency", get_id(), prev_max, cur_max, client_id); - set_batch(cur_max); + set_batch_latency(cur_max); } return true; @@ -202,12 +241,12 @@ bool sensor_base::delete_batch(int client_id) INFO("No latency for sensor[0x%llx] by client[%d] deleting latency, so set to default 0 ms", get_id(), client_id); - set_batch(0); + set_batch_latency(0); } else if (cur_max != prev_max) { INFO("Max latency for sensor[0x%llx] is changed from %dms to %dms by client[%d] deleting latency", get_id(), prev_max, cur_max, client_id); - set_batch(cur_max); + set_batch_latency(cur_max); } return true; @@ -270,96 +309,38 @@ int sensor_base::get_wakeup(int client_id) return m_plugin_info_list.is_wakeup_on(); } -int sensor_base::get_sensor_data(sensor_data_t &data) -{ - return -1; -} - -int sensor_base::get_sensor_event(sensor_event_t **event) -{ - return -1; -} - -bool sensor_base::get_properties(sensor_properties_s &properties) +bool sensor_base::is_wakeup_supported(void) { return false; } -const char* sensor_base::get_name() -{ - return NULL; -} - -void sensor_base::set_id(sensor_id_t id) -{ - m_unique_id = id; -} - -sensor_id_t sensor_base::get_id(void) -{ - if (m_unique_id == -1) - return UNKNOWN_SENSOR; - - return m_unique_id; -} - -unsigned int sensor_base::get_event_type(void) -{ - return -1; -} - -sensor_privilege_t sensor_base::get_privilege(void) -{ - return m_privilege; -} - int sensor_base::get_permission(void) { return m_permission; } -bool sensor_base::is_started(void) -{ - AUTOLOCK(m_client_mutex); - - return m_started; -} - -bool sensor_base::is_virtual() +void sensor_base::set_permission(int permission) { - return false; + m_permission = permission; } -void sensor_base::get_sensor_info(sensor_info &info) +bool sensor_base::push(sensor_event_t *event, int length) { - sensor_properties_s properties; - properties.wakeup_supported = false; - - get_properties(properties); + AUTOLOCK(m_client_mutex); - info.set_type(get_type()); - info.set_id(get_id()); - info.set_privilege(m_privilege); - info.set_name(properties.name.c_str()); - info.set_vendor(properties.vendor.c_str()); - info.set_min_range(properties.min_range); - info.set_max_range(properties.max_range); - info.set_resolution(properties.resolution); - info.set_min_interval(properties.min_interval); - info.set_fifo_count(properties.fifo_count); - info.set_max_batch_count(properties.max_batch_count); - info.set_supported_event(get_event_type()); - info.set_wakeup_supported(properties.wakeup_supported); + if (m_client <= 0) + return false; - return; + sensor_event_queue::get_instance().push(event, length); + return true; } -bool sensor_base::is_wakeup_supported(void) +bool sensor_base::set_interval(unsigned long interval) { return false; } -bool sensor_base::set_interval(unsigned long interval) +bool sensor_base::set_batch_latency(unsigned long latency) { return false; } @@ -369,35 +350,14 @@ bool sensor_base::set_wakeup(int wakeup) return false; } -bool sensor_base::set_batch(unsigned long latency) +bool sensor_base::on_start() { return false; } -void sensor_base::set_privilege(sensor_privilege_t privilege) -{ - m_privilege = privilege; -} - -void sensor_base::set_permission(int permission) -{ - m_permission = permission; -} - -int sensor_base::send_sensorhub_data(const char* data, int data_len) -{ - return -1; -} - -bool sensor_base::push(sensor_event_t *event, int event_length) +bool sensor_base::on_stop() { - AUTOLOCK(m_client_mutex); - - if (m_client <= 0) - return false; - - sensor_event_queue::get_instance().push(event, event_length); - return true; + return false; } unsigned long long sensor_base::get_timestamp(void) diff --git a/src/server/sensor_base.h b/src/server/sensor_base.h index 0957380..fc69a6e 100644 --- a/src/server/sensor_base.h +++ b/src/server/sensor_base.h @@ -37,14 +37,28 @@ public: sensor_base(); virtual ~sensor_base(); - /* module info */ + /* id */ + void set_id(sensor_id_t id); + sensor_id_t get_id(void); + + /* sensor info */ virtual sensor_type_t get_type(); virtual unsigned int get_event_type(void); virtual const char* get_name(void); + virtual bool get_sensor_info(sensor_info &info); + virtual bool is_virtual(void); + + /* set/get data */ + virtual int get_data(sensor_data_t **data); + + virtual bool flush(void); + virtual int set_attribute(int32_t attribute, int32_t value); + /* start/stop */ bool start(void); bool stop(void); + bool is_started(void); /* interval / batch / wakeup */ bool add_interval(int client_id, unsigned int interval, bool is_processor); @@ -60,55 +74,29 @@ public: int get_wakeup(int client_id); bool is_wakeup_supported(void); - /* get data */ - virtual int get_sensor_data(sensor_data_t &data); - virtual int get_sensor_event(sensor_event_t **event); + bool push(sensor_event_t *event, int length); - /* id */ - void set_id(sensor_id_t id); - sensor_id_t get_id(void); - - /* privilege */ - sensor_privilege_t get_privilege(void); + /* permission(privilege) */ int get_permission(void); - bool is_started(void); - virtual bool is_virtual(void); - - /* sensor info */ - virtual void get_sensor_info(sensor_info &info); - - /* push event to queue */ - bool push(sensor_event_t *event, int event_length); - - /* for sensorhub */ - virtual long set_command(unsigned int cmd, long value); - virtual int send_sensorhub_data(const char* data, int data_len); protected: - void set_privilege(sensor_privilege_t privilege); void set_permission(int permission); private: sensor_id_t m_unique_id; - sensor_privilege_t m_privilege; - int m_permission; plugin_info_list m_plugin_info_list; cmutex m_plugin_info_list_mutex; + bool m_started; unsigned int m_client; cmutex m_client_mutex; - bool m_started; - virtual bool set_interval(unsigned long interval); - virtual bool set_batch(unsigned long latency); + virtual bool set_batch_latency(unsigned long latency); virtual bool set_wakeup(int wakeup); - /* get properties */ - virtual bool get_properties(sensor_properties_s &properties); - virtual bool on_start(void); virtual bool on_stop(void); diff --git a/src/server/sensor_event_dispatcher.cpp b/src/server/sensor_event_dispatcher.cpp index 9b58afc..24d4f26 100644 --- a/src/server/sensor_event_dispatcher.cpp +++ b/src/server/sensor_event_dispatcher.cpp @@ -190,6 +190,7 @@ void sensor_event_dispatcher::dispatch_event(void) void sensor_event_dispatcher::send_sensor_events(vector< pair > &events) { + void *event; sensor_event_t *sensor_events = NULL; client_info_manager& client_info_manager = get_client_info_manager(); @@ -199,11 +200,22 @@ void sensor_event_dispatcher::send_sensor_events(vector< pair > &eve for (unsigned int i = 0; i < events.size(); ++i) { sensor_id_t sensor_id; unsigned int event_type; + int length; + sensor_events = (sensor_event_t*)events[i].first; - int length = events[i].second; + length = sizeof(sensor_event_t) + sensor_events->data_length; sensor_id = sensor_events->sensor_id; event_type = sensor_events->event_type; + event = (void *)malloc(length); + if (!event) { + ERR("Failed to allocate memory"); + return; + } + + memcpy(event, sensor_events, sizeof(sensor_event_t)); + memcpy(event + sizeof(sensor_event_t), sensor_events->data, sensor_events->data_length); + id_vec.clear(); client_info_manager.get_listener_ids(sensor_id, event_type, id_vec); @@ -212,7 +224,7 @@ void sensor_event_dispatcher::send_sensor_events(vector< pair > &eve while (it_client_id != id_vec.end()) { csocket client_socket; client_info_manager.get_event_socket(*it_client_id, client_socket); - bool ret = (client_socket.send(sensor_events, length) > 0); + bool ret = (client_socket.send(event, length) > 0); if (ret) DBG("Event[0x%x] sent to %s on socket[%d]", event_type, client_info_manager.get_client_info(*it_client_id), client_socket.get_socket_fd()); @@ -222,6 +234,7 @@ void sensor_event_dispatcher::send_sensor_events(vector< pair > &eve ++it_client_id; } + free(sensor_events->data); free(sensor_events); } } @@ -316,7 +329,7 @@ virtual_sensors sensor_event_dispatcher::get_active_virtual_sensors(void) struct sort_comp { bool operator()(const pair &left, const pair &right) { - return ((sensor_event_t*)(left.first))->data.timestamp < ((sensor_event_t*)(right.first))->data.timestamp; + return ((sensor_event_t*)(left.first))->data->timestamp < ((sensor_event_t*)(right.first))->data->timestamp; } }; diff --git a/src/server/sensor_event_poller.cpp b/src/server/sensor_event_poller.cpp index b02b624..6d0943e 100644 --- a/src/server/sensor_event_poller.cpp +++ b/src/server/sensor_event_poller.cpp @@ -22,6 +22,7 @@ #include #include #include +#include #define EPOLL_MAX_FD 32 @@ -75,6 +76,7 @@ bool sensor_event_poller::add_poll_fd(int fd) bool sensor_event_poller::poll() { + std::vector ids; while (true) { int fd; struct epoll_event poll_event; @@ -83,17 +85,18 @@ bool sensor_event_poller::poll() continue; fd = poll_event.data.fd; + ids.clear(); - if (!is_data_ready(fd)) + if (!read_fd(fd, ids)) continue; - process_event(fd); + process_event(fd, ids); } return true; } -bool sensor_event_poller::is_data_ready(int fd) +bool sensor_event_poller::read_fd(int fd, std::vector &ids) { fd_sensors_t::iterator it; physical_sensor *sensor; @@ -106,13 +109,13 @@ bool sensor_event_poller::is_data_ready(int fd) return false; } - if (!sensor->is_data_ready()) + if (!sensor->read_fd(ids)) return false; return true; } -bool sensor_event_poller::process_event(int fd) +bool sensor_event_poller::process_event(int fd, const std::vector &ids) { physical_sensor *sensor; std::pair ret; @@ -120,23 +123,26 @@ bool sensor_event_poller::process_event(int fd) ret = m_fd_sensors.equal_range(fd); for (auto it_sensor = ret.first; it_sensor != ret.second; ++it_sensor) { - /* - sensor_event_t event; - sensor = it_sensor->second; - - event.sensor_id = sensor->get_id(); - event.event_type = sensor->get_event_type(); - sensor->get_sensor_data(event.data); - */ sensor_event_t *event; - int event_length; + sensor_data_t *data; + int data_length; + sensor = it_sensor->second; - event_length = sensor->get_sensor_event(&event); + auto result = std::find(std::begin(ids), std::end(ids), (sensor->get_id()) & 0xFFFF); + + if (result == std::end(ids)) + continue; + + event = (sensor_event_t *)malloc(sizeof(sensor_event_t)); + + data_length = sensor->get_data(&data); event->sensor_id = sensor->get_id(); event->event_type = sensor->get_event_type(); + event->data_length = data_length; + event->data = data; - sensor->push(event, event_length); + sensor->push(event, sizeof(sensor_event_t)); } return true; diff --git a/src/server/sensor_event_poller.h b/src/server/sensor_event_poller.h index a290b42..5fd6a68 100644 --- a/src/server/sensor_event_poller.h +++ b/src/server/sensor_event_poller.h @@ -39,8 +39,8 @@ private: void init_fd(); void init_sensor_map(); bool add_poll_fd(int fd); - bool is_data_ready(int fd); - bool process_event(int fd); + bool read_fd(int fd, std::vector &ids); + bool process_event(int fd, const std::vector &ids); }; #endif /* _SENSOR_EVENT_POLLER_H_ */ diff --git a/src/server/sensor_event_queue.h b/src/server/sensor_event_queue.h index a57507b..4301915 100644 --- a/src/server/sensor_event_queue.h +++ b/src/server/sensor_event_queue.h @@ -44,7 +44,7 @@ private: bool prioritize_e2 = true; if (priority_list.empty()) - return (e2->data.timestamp < e1->data.timestamp); + return (e2->data->timestamp < e1->data->timestamp); std::set::iterator iter_e1 = priority_list.find(e1->event_type); std::set::iterator iter_e2 = priority_list.find(e2->event_type); @@ -59,7 +59,7 @@ private: if (!prioritize_e1) return true; else { - if (e2->data.timestamp <= e1->data.timestamp) + if (e2->data->timestamp <= e1->data->timestamp) return true; return false; } @@ -67,7 +67,7 @@ private: else { if (prioritize_e1) return false; - else if (e2->data.timestamp <= e1->data.timestamp) + else if (e2->data->timestamp <= e1->data->timestamp) return true; else return false; diff --git a/src/server/sensor_loader.cpp.in b/src/server/sensor_loader.cpp.in index d46ad81..6f046fe 100644 --- a/src/server/sensor_loader.cpp.in +++ b/src/server/sensor_loader.cpp.in @@ -97,7 +97,7 @@ physical_sensor* sensor_loader::create_sensor(sensor_handle_t handle, sensor_dev sensor = new(std::nothrow) physical_sensor(); if (!sensor) { - ERR("Memory allocation failed[%s]", handle.name.c_str()); + ERR("Memory allocation failed[%s]", handle.name); return NULL; } -- 2.7.4 From 2d75f43127269a220b7d0916dee551725d5fe845 Mon Sep 17 00:00:00 2001 From: "kibak.yoon" Date: Tue, 2 Feb 2016 12:00:59 +0900 Subject: [PATCH 16/16] sensord: [4/4] add the refactored HAL interface * modify virtual sensor interface * support auto_rotation sensor Change-Id: Ie84dd34c3534bcd27edd41ce80ad692e876e157b Signed-off-by: kibak.yoon --- packaging/sensord.spec | 2 +- .../plugins/auto_rotation/auto_rotation_sensor.cpp | 169 ++++++++++++--------- .../plugins/auto_rotation/auto_rotation_sensor.h | 23 ++- src/server/sensor_event_dispatcher.cpp | 2 +- src/server/virtual_sensor.cpp | 1 - src/server/virtual_sensor.h | 21 ++- 6 files changed, 135 insertions(+), 83 deletions(-) diff --git a/packaging/sensord.spec b/packaging/sensord.spec index ab768f0..1e0b4d9 100644 --- a/packaging/sensord.spec +++ b/packaging/sensord.spec @@ -21,7 +21,7 @@ BuildRequires: pkgconfig(cynara-client) BuildRequires: pkgconfig(cynara-session) Requires: libsensord = %{version}-%{release} -%define auto_rotation_state OFF +%define auto_rotation_state ON %define orientation_state OFF %define gravity_state OFF %define linear_accel_state OFF diff --git a/src/server/plugins/auto_rotation/auto_rotation_sensor.cpp b/src/server/plugins/auto_rotation/auto_rotation_sensor.cpp index c50c9fd..087a51e 100644 --- a/src/server/plugins/auto_rotation/auto_rotation_sensor.cpp +++ b/src/server/plugins/auto_rotation/auto_rotation_sensor.cpp @@ -55,9 +55,11 @@ using std::vector; auto_rotation_sensor::auto_rotation_sensor() : m_accel_sensor(NULL) +, m_alg(NULL) , m_rotation(0) +, m_interval(1) , m_rotation_time(1) // rotation state is valid from initial state, so set rotation time to non-zero value -, m_alg(NULL) +, m_default_sampling_time(1) { virtual_sensor_config &config = virtual_sensor_config::get_instance(); @@ -92,6 +94,30 @@ auto_rotation_sensor::~auto_rotation_sensor() INFO("auto_rotation_sensor is destroyed!\n"); } +bool auto_rotation_sensor::init(void) +{ + m_accel_sensor = sensor_loader::get_instance().get_sensor(ACCELEROMETER_SENSOR); + + if (!m_accel_sensor) { + ERR("cannot load accel sensor_hal from %s", get_name()); + return false; + } + + m_alg = get_alg(); + + if (!m_alg) { + ERR("Not supported AUTO ROTATION sensor"); + return false; + } + + if (!m_alg->open()) + return false; + + INFO("%s is created!\n", get_name()); + + return true; +} + sensor_type_t auto_rotation_sensor::get_type(void) { return AUTO_ROTATION_SENSOR; @@ -107,43 +133,88 @@ const char* auto_rotation_sensor::get_name(void) return SENSOR_NAME; } -bool auto_rotation_sensor::check_lib(void) +bool auto_rotation_sensor::get_sensor_info(sensor_info &info) { - if (access(AUTO_ROTATION_LIB, F_OK) < 0) - return false; + info.set_type(get_type()); + info.set_id(get_id()); + info.set_privilege(SENSOR_PRIVILEGE_PUBLIC); // FIXME + info.set_name("Auto Rotation Sensor"); + info.set_vendor("Samsung Electronics"); + info.set_min_range(AUTO_ROTATION_DEGREE_UNKNOWN); + info.set_max_range(AUTO_ROTATION_DEGREE_270); + info.set_resolution(1); + info.set_min_interval(1); + info.set_fifo_count(0); + info.set_max_batch_count(0); + info.set_supported_event(get_event_type()); + info.set_wakeup_supported(false); return true; } -auto_rotation_alg *auto_rotation_sensor::get_alg() +void auto_rotation_sensor::synthesize(const sensor_event_t& event) { - return new auto_rotation_alg_emul(); + if (event.event_type != ACCELEROMETER_RAW_DATA_EVENT) + return; + + int rotation; + float acc[3]; + acc[0] = event.data->values[0]; + acc[1] = event.data->values[1]; + acc[2] = event.data->values[2]; + + if (!m_alg->get_rotation(acc, event.data->timestamp, m_rotation, rotation)) + return; + + m_rotation = rotation; + m_rotation_time = event.data->timestamp; + + sensor_event_t *rotation_event; + sensor_data_t *rotation_data; + unsigned int data_length; + + rotation_event = (sensor_event_t *)malloc(sizeof(sensor_event_t)); + data_length = get_data(&rotation_data); + + rotation_event->sensor_id = get_id(); + rotation_event->event_type = AUTO_ROTATION_CHANGE_STATE_EVENT; + rotation_event->data_length = data_length; + rotation_event->data = rotation_data; + + push(rotation_event, sizeof(sensor_event_t)); + + DBG("Rotation: %d, ACC[0]: %f, ACC[1]: %f, ACC[2]: %f", rotation, event.data.values[0], event.data.values[1], event.data.values[2]); + return; } -bool auto_rotation_sensor::init(void) +int auto_rotation_sensor::get_data(sensor_data_t **data) { - m_accel_sensor = sensor_loader::get_instance().get_sensor(ACCELEROMETER_SENSOR); + sensor_data_t *sensor_data; + sensor_data = (sensor_data_t *)malloc(sizeof(sensor_data_t)); - if (!m_accel_sensor) { - ERR("cannot load accel sensor_hal from %s", get_name()); - return false; - } + sensor_data->accuracy = SENSOR_ACCURACY_GOOD; + sensor_data->timestamp = m_rotation_time; + sensor_data->values[0] = m_rotation; + sensor_data->value_count = 1; - m_alg = get_alg(); + *data = sensor_data; - if (!m_alg) { - ERR("Not supported AUTO ROTATION sensor"); - return false; - } - - if (!m_alg->open()) - return false; + return sizeof(sensor_data_t); +} - set_privilege(SENSOR_PRIVILEGE_INTERNAL); +bool auto_rotation_sensor::set_interval(unsigned long interval) +{ + return false; +} - INFO("%s is created!\n", get_name()); +bool auto_rotation_sensor::set_batch_latency(unsigned long latency) +{ + return false; +} - return true; +bool auto_rotation_sensor::set_wakeup(int wakeup) +{ + return false; } bool auto_rotation_sensor::on_start(void) @@ -166,56 +237,16 @@ bool auto_rotation_sensor::on_stop(void) return deactivate(); } -void auto_rotation_sensor::synthesize(const sensor_event_t& event, vector &outs) +bool auto_rotation_sensor::check_lib(void) { - if (event.event_type != ACCELEROMETER_RAW_DATA_EVENT) - return; - - int rotation; - float acc[3]; - acc[0] = event.data.values[0]; - acc[1] = event.data.values[1]; - acc[2] = event.data.values[2]; - - if (!m_alg->get_rotation(acc, event.data.timestamp, m_rotation, rotation)) - return; - - sensor_event_t rotation_event; - - INFO("Rotation: %d, ACC[0]: %f, ACC[1]: %f, ACC[2]: %f", rotation, event.data.values[0], event.data.values[1], event.data.values[2]); - rotation_event.sensor_id = get_id(); - rotation_event.data.accuracy = SENSOR_ACCURACY_GOOD; - rotation_event.event_type = AUTO_ROTATION_CHANGE_STATE_EVENT; - rotation_event.data.timestamp = event.data.timestamp; - rotation_event.data.values[0] = rotation; - rotation_event.data.value_count = 1; - outs.push_back(rotation_event); - m_rotation = rotation; - m_rotation_time = event.data.timestamp; + if (access(AUTO_ROTATION_LIB, F_OK) < 0) + return false; - return; + return true; } -int auto_rotation_sensor::get_sensor_data(sensor_data_t &data) +auto_rotation_alg *auto_rotation_sensor::get_alg() { - data.accuracy = SENSOR_ACCURACY_GOOD; - data.timestamp = m_rotation_time; - data.values[0] = m_rotation; - data.value_count = 1; - - return 0; + return new auto_rotation_alg_emul(); } -bool auto_rotation_sensor::get_properties(sensor_properties_s &properties) -{ - properties.name = "Auto Rotation Sensor"; - properties.vendor = "Samsung Electronics"; - properties.min_range = AUTO_ROTATION_DEGREE_UNKNOWN; - properties.max_range = AUTO_ROTATION_DEGREE_270; - properties.min_interval = 1; - properties.resolution = 1; - properties.fifo_count = 0; - properties.max_batch_count = 0; - - return true; -} diff --git a/src/server/plugins/auto_rotation/auto_rotation_sensor.h b/src/server/plugins/auto_rotation/auto_rotation_sensor.h index cc62e57..b2a48b0 100644 --- a/src/server/plugins/auto_rotation/auto_rotation_sensor.h +++ b/src/server/plugins/auto_rotation/auto_rotation_sensor.h @@ -30,34 +30,41 @@ public: virtual ~auto_rotation_sensor(); /* initialize sensor */ - bool init(); + bool init(void); /* sensor info */ - virtual sensor_type_t get_type(); + virtual sensor_type_t get_type(void); virtual unsigned int get_event_type(void); virtual const char* get_name(void); - void synthesize(const sensor_event_t& event, std::vector &outs); + virtual bool get_sensor_info(sensor_info &info); - int get_sensor_data(sensor_data_t &data); - virtual bool get_properties(sensor_properties_s &properties); + /* synthesize event */ + virtual void synthesize(const sensor_event_t& event); + + /* get data */ + virtual int get_data(sensor_data_t **data); private: sensor_base *m_accel_sensor; - cmutex m_value_mutex; + auto_rotation_alg *m_alg; int m_rotation; unsigned int m_interval; unsigned long long m_rotation_time; - auto_rotation_alg *m_alg; std::string m_vendor; std::string m_raw_data_unit; int m_default_sampling_time; - auto_rotation_alg *get_alg(); + virtual bool set_interval(unsigned long interval); + virtual bool set_batch_latency(unsigned long latency); + virtual bool set_wakeup(int wakeup); + virtual bool on_start(void); virtual bool on_stop(void); + bool check_lib(void); + auto_rotation_alg *get_alg(); }; #endif diff --git a/src/server/sensor_event_dispatcher.cpp b/src/server/sensor_event_dispatcher.cpp index 24d4f26..50e40f3 100644 --- a/src/server/sensor_event_dispatcher.cpp +++ b/src/server/sensor_event_dispatcher.cpp @@ -158,7 +158,7 @@ void sensor_event_dispatcher::dispatch_event(void) while (it_v_sensor != v_sensors.end()) { int synthesized_cnt; v_sensor_events.clear(); - (*it_v_sensor)->synthesize(*((sensor_event_t *)seed_event), v_sensor_events); + (*it_v_sensor)->synthesize(*((sensor_event_t *)seed_event)); synthesized_cnt = v_sensor_events.size(); for (int i = 0; i < synthesized_cnt; ++i) { diff --git a/src/server/virtual_sensor.cpp b/src/server/virtual_sensor.cpp index ae3f9be..232d7f1 100644 --- a/src/server/virtual_sensor.cpp +++ b/src/server/virtual_sensor.cpp @@ -42,7 +42,6 @@ bool virtual_sensor::is_virtual(void) return true; } - bool virtual_sensor::activate(void) { return sensor_event_dispatcher::get_instance().add_active_virtual_sensor(this); diff --git a/src/server/virtual_sensor.h b/src/server/virtual_sensor.h index a9c998f..c3176c3 100644 --- a/src/server/virtual_sensor.h +++ b/src/server/virtual_sensor.h @@ -36,14 +36,29 @@ public: virtual unsigned int get_event_type(void) = 0; virtual const char* get_name(void) = 0; - virtual void synthesize(const sensor_event_t& event, std::vector &outs) = 0; - virtual int get_sensor_data(sensor_data_t &data) = 0; - virtual bool is_virtual(void); + virtual bool get_sensor_info(sensor_info &info) = 0; + + /* synthesize event */ + virtual void synthesize(const sensor_event_t& event) = 0; + + /* get data */ + virtual int get_data(sensor_data_t **data) = 0; + + bool is_virtual(void); + protected: bool activate(void); bool deactivate(void); + private: bool m_hardware_fusion; + + virtual bool set_interval(unsigned long interval) = 0; + virtual bool set_batch_latency(unsigned long latency) = 0; + virtual bool set_wakeup(int wakeup) = 0; + + virtual bool on_start(void) = 0; + virtual bool on_stop(void) = 0; }; #endif /* _VIRTUAL_SENSOR_H_ */ -- 2.7.4