- Refactoring all cmake and spec files.
- single library for all sensord-plugins
- updated plugin loader for single sensord-plugins and hal-plugins lib
- moving pressure sensor config to sensor-hal
- adding separate library for sensord-plugins
Change-Id: I9333be215387a4d4fcd7b6a4cbdb7206c4a88bdf
#add_definitions(-Wall -g -D_DEBUG)
# Installing files
-CONFIGURE_FILE(sensor_plugins.xml.in sensor_plugins.xml @ONLY)
-
-INSTALL(FILES sensor_plugins.xml DESTINATION etc)
INSTALL(FILES virtual_sensors.xml virtual_sensors.xml DESTINATION etc)
# Sub-directory
%define tilt_state ON
%define uncal_gyro_state ON
%define bio_led_red_state ON
-%define build_test_suite OFF
+%define build_test_suite ON
%description
Sensor daemon
%description -n libsensord-devel
Sensord shared library
+%package -n libsensord-plugin
+Summary: Sensord plugin library
+Group: System/Development
+Requires: %{name} = %{version}-%{release}
+
+%description -n libsensord-plugin
+Sensord plugin library
+
%if %{build_test_suite} == "ON"
%package -n sensor-test
Summary: Sensord library
%postun -n libsensord -p /sbin/ldconfig
%files -n sensord
-%attr(0644,root,root)/usr/etc/sensor_plugins.xml
%attr(0644,root,root)/usr/etc/virtual_sensors.xml
%manifest sensord.manifest
%{_bindir}/sensord
%defattr(-,root,root,-)
%manifest libsensord.manifest
%{_libdir}/libsensor.so.*
-%{_libdir}/sensord/*.so*
%{_libdir}/libsensord-devel.so
%license LICENSE.APLv2
%{_libdir}/pkgconfig/sensord-server.pc
%license LICENSE.APLv2
+%files -n libsensord-plugin
+%defattr(-,root,root,-)
+%{_libdir}/libsensord-plugin.so
+%license LICENSE.APLv2
+
%if %{build_test_suite} == "ON"
%files -n sensor-test
%defattr(-,root,root,-)
+++ /dev/null
-<PLUGIN>
- <HAL>
- <MODULE path = "/usr/lib/sensor-hal/libaccel_sensor_hal.so"/>
- <MODULE path = "/usr/lib/sensor-hal/libgyro_sensor_hal.so"/>
- <MODULE path = "/usr/lib/sensor-hal/libgeo_sensor_hal.so"/>
- <MODULE path = "/usr/lib/sensor-hal/libproxi_sensor_hal.so"/>
- <MODULE path = "/usr/lib/sensor-hal/liblight_sensor_hal.so"/>
- <MODULE path = "/usr/lib/sensor-hal/libpressure_sensor_hal.so"/>
- <MODULE path = "/usr/lib/sensor-hal/libtemperature_sensor_hal.so"/>
- <MODULE path = "/usr/lib/sensor-hal/libultraviolet_sensor_hal.so"/>
- <MODULE path = "/usr/lib/sensor-hal/libbio_led_red_sensor_hal.so"/>
- </HAL>
-
- <SENSOR>
- <MODULE path = "/usr/lib/sensord/libaccel_sensor.so"/>
- <MODULE path = "/usr/lib/sensord/libauto_rotation_sensor.so"/>
- <MODULE path = "/usr/lib/sensord/libgyro_sensor.so"/>
- <MODULE path = "/usr/lib/sensord/libgeo_sensor.so"/>
- <MODULE path = "/usr/lib/sensord/libproxi_sensor.so"/>
- <MODULE path = "/usr/lib/sensord/liblight_sensor.so"/>
- <MODULE path = "/usr/lib/sensord/libpressure_sensor.so"/>
- <MODULE path = "/usr/lib/sensord/libfusion_sensor.so"/>
- <MODULE path = "/usr/lib/sensord/liborientation_sensor.so"/>
- <MODULE path = "/usr/lib/sensord/libgravity_sensor.so"/>
- <MODULE path = "/usr/lib/sensord/liblinear_accel_sensor.so"/>
- <MODULE path = "/usr/lib/sensord/libtemperature_sensor.so"/>
- <MODULE path = "/usr/lib/sensord/librv_sensor.so"/>
- <MODULE path = "/usr/lib/sensord/libgeomagnetic_rv_sensor.so"/>
- <MODULE path = "/usr/lib/sensord/libgaming_rv_sensor.so"/>
- <MODULE path = "/usr/lib/sensord/libtilt_sensor.so"/>
- <MODULE path = "/usr/lib/sensord/libuncal_gyro_sensor.so"/>
- <MODULE path = "/usr/lib/sensord/libultraviolet_sensor.so"/>
- <MODULE path = "/usr/lib/sensord/libbio_led_red_sensor.so"/>
- </SENSOR>
-</PLUGIN>
INCLUDE(FindPkgConfig)
PKG_CHECK_MODULES(server_pkgs REQUIRED glib-2.0 gio-2.0 dlog libsystemd-daemon libxml-2.0 cynara-client cynara-creds-socket cynara-session)
+add_subdirectory(plugins)
+
INCLUDE_DIRECTORIES(include)
FILE(GLOB SERVER_SRCS *.c *.cpp)
add_executable(${PROJECT_NAME} ${SERVER_SRCS})
-target_link_libraries(${PROJECT_NAME} ${lib_pkgs_LDFLAGS} "sensord-devel")
+target_link_libraries(${PROJECT_NAME} ${lib_pkgs_LDFLAGS} "sensord-plugin" "sensord-devel")
configure_file(sensord-server.pc.in ${CMAKE_CURRENT_SOURCE_DIR}/sensord-server.pc @ONLY)
install(TARGETS ${PROJECT_NAME} DESTINATION bin)
install(FILES sensord-server.pc DESTINATION ${CMAKE_INSTALL_LIBDIR}/pkgconfig)
-
-IF("${ACCEL}" STREQUAL "ON")
-add_subdirectory(plugins/accel)
-ENDIF()
-IF("${GYRO}" STREQUAL "ON")
-add_subdirectory(plugins/gyro)
-ENDIF()
-IF("${PROXI}" STREQUAL "ON")
-add_subdirectory(plugins/proxi)
-ENDIF()
-IF("${LIGHT}" STREQUAL "ON")
-add_subdirectory(plugins/light)
-ENDIF()
-IF("${GEO}" STREQUAL "ON")
-add_subdirectory(plugins/geo)
-ENDIF()
-IF("${AUTO_ROTATION}" STREQUAL "ON")
-add_subdirectory(plugins/auto_rotation)
-ENDIF()
-IF("${PRESSURE}" STREQUAL "ON")
-add_subdirectory(plugins/pressure)
-ENDIF()
-IF("${TEMPERATURE}" STREQUAL "ON")
-add_subdirectory(plugins/temperature)
-ENDIF()
-IF("${HUMIDITY}" STREQUAL "ON")
-add_subdirectory(humidity)
-ENDIF()
-IF("${ULTRAVIOLET}" STREQUAL "ON")
-add_subdirectory(plugins/ultraviolet)
-ENDIF()
-IF("${BIO_LED_RED}" STREQUAL "ON")
-add_subdirectory(plugins/bio_led_red)
-ENDIF()
-IF("${ORIENTATION}" STREQUAL "ON")
-set(SENSOR_FUSION_ENABLE "1")
-set(ORIENTATION_ENABLE "1")
-ENDIF()
-IF("${GEOMAGNETIC_RV}" STREQUAL "ON")
-set(SENSOR_FUSION_ENABLE "1")
-ENDIF()
-IF("${GAMING_RV}" STREQUAL "ON")
-set(SENSOR_FUSION_ENABLE "1")
-ENDIF()
-IF("${TILT}" STREQUAL "ON")
-set(SENSOR_FUSION_ENABLE "1")
-set(TILT_ENABLE "1")
-ENDIF()
-IF("${UNCAL_GYRO}" STREQUAL "ON")
-set(SENSOR_FUSION_ENABLE "1")
-set(UNCAL_GYRO_ENABLE "1")
-ENDIF()
-IF("${GRAVITY}" STREQUAL "ON")
-set(SENSOR_FUSION_ENABLE "1")
-set(ORIENTATION_ENABLE "1")
-set(GRAVITY_ENABLE "1")
-ENDIF()
-IF("${LINEAR_ACCEL}" STREQUAL "ON")
-set(SENSOR_FUSION_ENABLE "1")
-set(ORIENTATION_ENABLE "1")
-set(GRAVITY_ENABLE "1")
-set(LINEAR_ACCELERATION_ENABLE "1")
-ENDIF()
-IF("${SENSOR_FUSION_ENABLE}" STREQUAL "1")
-add_subdirectory(sensor_fusion)
-add_subdirectory(plugins/fusion)
-ENDIF()
-IF("${ORIENTATION_ENABLE}" STREQUAL "1")
-add_subdirectory(plugins/orientation)
-ENDIF()
-IF("${GRAVITY_ENABLE}" STREQUAL "1")
-add_subdirectory(plugins/gravity)
-ENDIF()
-IF("${LINEAR_ACCELERATION_ENABLE}" STREQUAL "1")
-add_subdirectory(plugins/linear_accel)
-ENDIF()
-IF("${TILT_ENABLE}" STREQUAL "1")
-add_subdirectory(plugins/tilt)
-ENDIF()
-IF("${UNCAL_GYRO_ENABLE}" STREQUAL "1")
-add_subdirectory(plugins/uncal_gyro)
-ENDIF()
-
-add_subdirectory(plugins/rotation_vector)
--- /dev/null
+cmake_minimum_required(VERSION 2.6)
+project(sensord-plugin CXX)
+
+INCLUDE(FindPkgConfig)
+PKG_CHECK_MODULES(plugin_pkgs REQUIRED dlog libxml-2.0)
+
+FOREACH(flag ${plugin_pkgs_LDFLAGS})
+ SET(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} ${flag}")
+ENDFOREACH(flag)
+
+FOREACH(flag ${plugin_pkgs_CFLAGS})
+ SET(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} ${flag}")
+ENDFOREACH(flag)
+
+SET(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -fPIC")
+
+include_directories(${CMAKE_CURRENT_SOURCE_DIR})
+include_directories(${CMAKE_SOURCE_DIR}/src/server)
+include_directories(${CMAKE_SOURCE_DIR}/src/shared)
+
+IF("${ACCEL}" STREQUAL "ON")
+include_directories(${CMAKE_SOURCE_DIR}/src/server/plugins/accel)
+list (APPEND PLUGIN_SRCS "accel/accel_sensor.cpp")
+ENDIF()
+IF("${GYRO}" STREQUAL "ON")
+include_directories(${CMAKE_SOURCE_DIR}/src/server/plugins/gyro)
+list (APPEND PLUGIN_SRCS "gyro/gyro_sensor.cpp")
+ENDIF()
+IF("${PROXI}" STREQUAL "ON")
+include_directories(${CMAKE_SOURCE_DIR}/src/server/plugins/proxi)
+list (APPEND PLUGIN_SRCS "proxi/proxi_sensor.cpp")
+ENDIF()
+IF("${LIGHT}" STREQUAL "ON")
+include_directories(${CMAKE_SOURCE_DIR}/src/server/plugins/light)
+list (APPEND PLUGIN_SRCS "light/light_sensor.cpp")
+ENDIF()
+IF("${GEO}" STREQUAL "ON")
+include_directories(${CMAKE_SOURCE_DIR}/src/server/plugins/geo)
+list (APPEND PLUGIN_SRCS "geo/geo_sensor.cpp")
+ENDIF()
+IF("${AUTO_ROTATION}" STREQUAL "ON")
+include_directories(${CMAKE_SOURCE_DIR}/src/server/plugins/auto_rotation)
+list (APPEND PLUGIN_SRCS "auto_rotation/auto_rotation_sensor.cpp")
+list (APPEND PLUGIN_SRCS "auto_rotation/auto_rotation_alg.cpp")
+list (APPEND PLUGIN_SRCS "auto_rotation/auto_rotation_alg_emul.cpp")
+ENDIF()
+IF("${PRESSURE}" STREQUAL "ON")
+include_directories(${CMAKE_SOURCE_DIR}/src/server/plugins/pressure)
+list (APPEND PLUGIN_SRCS "pressure/pressure_sensor.cpp")
+ENDIF()
+IF("${TEMPERATURE}" STREQUAL "ON")
+include_directories(${CMAKE_SOURCE_DIR}/src/server/plugins/temperature)
+list (APPEND PLUGIN_SRCS "temperature/temperature_sensor.cpp")
+ENDIF()
+IF("${HUMIDITY}" STREQUAL "ON")
+include_directories(${CMAKE_SOURCE_DIR}/src/server/plugins/humidity)
+list (APPEND PLUGIN_SRCS "humidity/humidity_sensor.cpp")
+ENDIF()
+IF("${ULTRAVIOLET}" STREQUAL "ON")
+include_directories(${CMAKE_SOURCE_DIR}/src/server/plugins/ultraviolet)
+list (APPEND PLUGIN_SRCS "ultraviolet/ultraviolet_sensor.cpp")
+ENDIF()
+IF("${BIO_LED_RED}" STREQUAL "ON")
+include_directories(${CMAKE_SOURCE_DIR}/src/server/plugins/bio_led_red)
+list (APPEND PLUGIN_SRCS "bio_led_red/bio_led_red_sensor.cpp")
+ENDIF()
+IF("${ORIENTATION}" STREQUAL "ON")
+set(SENSOR_FUSION_ENABLE "1")
+set(ORIENTATION_ENABLE "1")
+ENDIF()
+IF("${RV}" STREQUAL "ON")
+set(SENSOR_FUSION_ENABLE "1")
+set(RV_ENABLE "1")
+ENDIF()
+IF("${GEOMAGNETIC_RV}" STREQUAL "ON")
+set(SENSOR_FUSION_ENABLE "1")
+set(GEOMAGNETIC_RV_ENABLE "1")
+ENDIF()
+IF("${GAMING_RV}" STREQUAL "ON")
+set(SENSOR_FUSION_ENABLE "1")
+set(GAMING_RV_ENABLE "1")
+ENDIF()
+IF("${TILT}" STREQUAL "ON")
+set(SENSOR_FUSION_ENABLE "1")
+set(TILT_ENABLE "1")
+ENDIF()
+IF("${UNCAL_GYRO}" STREQUAL "ON")
+set(SENSOR_FUSION_ENABLE "1")
+set(UNCAL_GYRO_ENABLE "1")
+ENDIF()
+IF("${GRAVITY}" STREQUAL "ON")
+set(SENSOR_FUSION_ENABLE "1")
+set(ORIENTATION_ENABLE "1")
+set(GRAVITY_ENABLE "1")
+ENDIF()
+IF("${LINEAR_ACCEL}" STREQUAL "ON")
+set(SENSOR_FUSION_ENABLE "1")
+set(ORIENTATION_ENABLE "1")
+set(GRAVITY_ENABLE "1")
+set(LINEAR_ACCELERATION_ENABLE "1")
+ENDIF()
+IF("${SENSOR_FUSION_ENABLE}" STREQUAL "1")
+include_directories(${CMAKE_SOURCE_DIR}/src/server/plugins/sensor_fusion)
+list (APPEND PLUGIN_SRCS "sensor_fusion/euler_angles.cpp")
+list (APPEND PLUGIN_SRCS "sensor_fusion/matrix.cpp")
+list (APPEND PLUGIN_SRCS "sensor_fusion/orientation_filter.cpp")
+list (APPEND PLUGIN_SRCS "sensor_fusion/quaternion.cpp")
+list (APPEND PLUGIN_SRCS "sensor_fusion/rotation_matrix.cpp")
+list (APPEND PLUGIN_SRCS "sensor_fusion/sensor_data.cpp")
+list (APPEND PLUGIN_SRCS "sensor_fusion/vector.cpp")
+include_directories(${CMAKE_SOURCE_DIR}/src/server/plugins/fusion)
+list (APPEND PLUGIN_SRCS "fusion/fusion_sensor.cpp")
+ENDIF()
+IF("${ORIENTATION_ENABLE}" STREQUAL "1")
+include_directories(${CMAKE_SOURCE_DIR}/src/server/plugins/orientation)
+list (APPEND PLUGIN_SRCS "orientation/orientation_sensor.cpp")
+ENDIF()
+IF("${GRAVITY_ENABLE}" STREQUAL "1")
+include_directories(${CMAKE_SOURCE_DIR}/src/server/plugins/gravity)
+list (APPEND PLUGIN_SRCS "gravity/gravity_sensor.cpp")
+ENDIF()
+IF("${LINEAR_ACCEL_ENABLE}" STREQUAL "1")
+include_directories(${CMAKE_SOURCE_DIR}/src/server/plugins/linear_accel)
+list (APPEND PLUGIN_SRCS "linear_accel/linear_accel_sensor.cpp")
+ENDIF()
+IF("${TILT_ENABLE}" STREQUAL "1")
+include_directories(${CMAKE_SOURCE_DIR}/src/server/plugins/tilt)
+list (APPEND PLUGIN_SRCS "tilt/tilt_sensor.cpp")
+ENDIF()
+IF("${UNCAL_GYRO_ENABLE}" STREQUAL "1")
+include_directories(${CMAKE_SOURCE_DIR}/src/server/plugins/uncal_gyro)
+list (APPEND PLUGIN_SRCS "uncal_gyro/uncal_gyro_sensor.cpp")
+ENDIF()
+IF("${RV_ENABLE}" STREQUAL "1")
+include_directories(${CMAKE_SOURCE_DIR}/src/server/plugins/rotation_vector/rv)
+list (APPEND PLUGIN_SRCS "rotation_vector/rv/rv_sensor.cpp")
+ENDIF()
+IF("${GEOMAGNETIC_RV_ENABLE}" STREQUAL "1")
+include_directories(${CMAKE_SOURCE_DIR}/src/server/plugins/rotation_vector/geomagnetic_rv)
+list (APPEND PLUGIN_SRCS "rotation_vector/geomagnetic_rv/geomagnetic_rv_sensor.cpp")
+ENDIF()
+IF("${GAMING_RV_ENABLE}" STREQUAL "1")
+include_directories(${CMAKE_SOURCE_DIR}/src/server/plugins/rotation_vector/gaming_rv)
+list (APPEND PLUGIN_SRCS "rotation_vector/gaming_rv/gaming_rv_sensor.cpp")
+ENDIF()
+IF("${RV_RAW}" STREQUAL "ON")
+include_directories(${CMAKE_SOURCE_DIR}/src/server/plugins/rotation_vector/rv_raw)
+list (APPEND PLUGIN_SRCS "rotation_vector/rv_raw/rv_raw_sensor.cpp")
+ENDIF()
+
+add_library(${PROJECT_NAME} SHARED
+ sensor_module_create.cpp
+ ${PLUGIN_SRCS}
+ )
+
+target_link_libraries(${PROJECT_NAME} ${plugin_pkgs_LDFLAGS} "-lrt -ldl -pthread")
+
+install(TARGETS ${PROJECT_NAME} DESTINATION ${CMAKE_INSTALL_LIBDIR})
\ No newline at end of file
+++ /dev/null
-cmake_minimum_required(VERSION 2.6)
-project(accel CXX)
-
-SET(SENSOR_NAME accel_sensor)
-
-include_directories(${CMAKE_CURRENT_SOURCE_DIR})
-include_directories(${CMAKE_SOURCE_DIR}/src/client)
-
-FOREACH(flag ${accel_pkgs_LDFLAGS})
- SET(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} ${flag}")
-ENDFOREACH(flag)
-
-FOREACH(flag ${accel_pkgs_CFLAGS})
- SET(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} ${flag}")
-ENDFOREACH(flag)
-
-add_library(${SENSOR_NAME} SHARED
- accel_sensor.cpp
- )
-
-target_link_libraries(${SENSOR_NAME} ${accel_pkgs_LDFLAGS} "-lm")
-
-install(TARGETS ${SENSOR_NAME} DESTINATION ${CMAKE_INSTALL_LIBDIR}/sensord)
data.values[1] = RAW_DATA_TO_METRE_PER_SECOND_SQUARED_UNIT(data.values[1] * m_raw_data_unit);
data.values[2] = RAW_DATA_TO_METRE_PER_SECOND_SQUARED_UNIT(data.values[2] * m_raw_data_unit);
}
-
-extern "C" sensor_module* create(void)
-{
- accel_sensor *sensor;
-
- try {
- sensor = new(std::nothrow) accel_sensor;
- } catch (int err) {
- ERR("Failed to create module, err: %d, cause: %s", err, strerror(err));
- return NULL;
- }
-
- sensor_module *module = new(std::nothrow) sensor_module;
- retvm_if(!module || !sensor, NULL, "Failed to allocate memory");
-
- module->sensors.push_back(sensor);
- return module;
-}
+++ /dev/null
-cmake_minimum_required(VERSION 2.6)
-project(auto_rotation CXX)
-
-SET(SENSOR_NAME auto_rotation_sensor)
-
-include_directories(${CMAKE_CURRENT_SOURCE_DIR})
-include_directories(${CMAKE_SOURCE_DIR}/src/client)
-
-FOREACH(flag ${auto_rotation_pkgs_LDFLAGS})
- SET(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} ${flag}")
-ENDFOREACH(flag)
-
-FOREACH(flag ${auto_rotation_pkgs_CFLAGS})
- SET(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} ${flag}")
-ENDFOREACH(flag)
-
-add_library(${SENSOR_NAME} SHARED
- auto_rotation_sensor.cpp
- auto_rotation_alg.cpp
- auto_rotation_alg_emul.cpp
-)
-
-target_link_libraries(${SENSOR_NAME} ${auto_rotation_pkgs_LDFLAGS} "-lm")
-
-install(TARGETS ${SENSOR_NAME} DESTINATION ${CMAKE_INSTALL_LIBDIR}/sensord)
return true;
}
-
-extern "C" sensor_module* create(void)
-{
- auto_rotation_sensor *sensor;
-
- try {
- sensor = new(std::nothrow) auto_rotation_sensor;
- } catch (int err) {
- ERR("Failed to create module, err: %d, cause: %s", err, strerror(err));
- return NULL;
- }
-
- sensor_module *module = new(std::nothrow) sensor_module;
- retvm_if(!module || !sensor, NULL, "Failed to allocate memory");
-
- module->sensors.push_back(sensor);
- return module;
-}
+++ /dev/null
-cmake_minimum_required(VERSION 2.6)
-project(bio_led_red CXX)
-
-SET(SENSOR_NAME bio_led_red_sensor)
-
-include_directories(${CMAKE_CURRENT_SOURCE_DIR})
-include_directories(${CMAKE_SOURCE_DIR}/src/client)
-
-FOREACH(flag ${bio_led_red_pkgs_LDFLAGS})
- SET(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} ${flag}")
-ENDFOREACH(flag)
-
-FOREACH(flag ${bio_led_red_pkgs_CFLAGS})
- SET(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} ${flag}")
-ENDFOREACH(flag)
-
-add_library(${SENSOR_NAME} SHARED
- bio_led_red_sensor.cpp
- )
-
-target_link_libraries(${SENSOR_NAME} ${bio_led_red_pkgs_LDFLAGS} "-lm")
-
-install(TARGETS ${SENSOR_NAME} DESTINATION ${CMAKE_INSTALL_LIBDIR}/sensord)
{
}
-
-extern "C" sensor_module* create(void)
-{
- bio_led_red_sensor *sensor;
-
- try {
- sensor = new(std::nothrow) bio_led_red_sensor;
- } catch (int err) {
- ERR("Failed to create module, err: %d, cause: %s", err, strerror(err));
- return NULL;
- }
-
- sensor_module *module = new(std::nothrow) sensor_module;
- retvm_if(!module || !sensor, NULL, "Failed to allocate memory");
-
- module->sensors.push_back(sensor);
- return module;
-}
+++ /dev/null
-cmake_minimum_required(VERSION 2.6)
-project(fusion CXX)
-
-SET(SENSOR_NAME fusion_sensor)
-
-include_directories(${CMAKE_CURRENT_SOURCE_DIR})
-include_directories(${CMAKE_SOURCE_DIR}/src/client)
-include_directories(${CMAKE_SOURCE_DIR}/src/server/sensor_fusion)
-
-FOREACH(flag ${fusion_pkgs_LDFLAGS})
- SET(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} ${flag}")
-ENDFOREACH(flag)
-
-FOREACH(flag ${fusion_pkgs_CFLAGS})
- SET(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} ${flag}")
-ENDFOREACH(flag)
-
-add_library(${SENSOR_NAME} SHARED
- fusion_sensor.cpp
- )
-
-target_link_libraries(${SENSOR_NAME} ${fusion_pkgs_LDFLAGS} "-lm")
-
-install(TARGETS ${SENSOR_NAME} DESTINATION ${CMAKE_INSTALL_LIBDIR}/sensord)
#define ELEMENT_ROLL_ROTATION_COMPENSATION "ROLL_ROTATION_COMPENSATION"
#define ELEMENT_AZIMUTH_ROTATION_COMPENSATION "AZIMUTH_ROTATION_COMPENSATION"
-void pre_process_data(sensor_data<float> &data_out, const float *data_in, float *bias, int *sign, float scale)
-{
- data_out.m_data.m_vec[0] = sign[0] * (data_in[0] - bias[0]) / scale;
- data_out.m_data.m_vec[1] = sign[1] * (data_in[1] - bias[1]) / scale;
- data_out.m_data.m_vec[2] = sign[2] * (data_in[2] - bias[2]) / scale;
-}
-
fusion_sensor::fusion_sensor()
: m_accel_sensor(NULL)
, m_gyro_sensor(NULL)
return true;
}
-
-extern "C" sensor_module* create(void)
-{
- fusion_sensor *sensor;
-
- try {
- sensor = new(std::nothrow) fusion_sensor;
- } catch (int err) {
- ERR("Failed to create module, err: %d, cause: %s", err, strerror(err));
- return NULL;
- }
-
- sensor_module *module = new(std::nothrow) sensor_module;
- retvm_if(!module || !sensor, NULL, "Failed to allocate memory");
-
- module->sensors.push_back(sensor);
- return module;
-}
+++ /dev/null
-cmake_minimum_required(VERSION 2.6)
-project(geo CXX)
-
-SET(SENSOR_NAME geo_sensor)
-
-include_directories(${CMAKE_CURRENT_SOURCE_DIR})
-include_directories(${CMAKE_SOURCE_DIR}/src/client)
-
-FOREACH(flag ${geo_pkgs_LDFLAGS})
- SET(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} ${flag}")
-ENDFOREACH(flag)
-
-FOREACH(flag ${geo_pkgs_CFLAGS})
- SET(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} ${flag}")
-ENDFOREACH(flag)
-
-add_library(${SENSOR_NAME} SHARED
- geo_sensor.cpp
-)
-
-target_link_libraries(${SENSOR_NAME} ${geo_pkgs_LDFLAGS} "-lm")
-
-install(TARGETS ${SENSOR_NAME} DESTINATION ${CMAKE_INSTALL_LIBDIR}/sensord)
data.values[1] = data.values[1] * m_resolution;
data.values[2] = data.values[2] * m_resolution;
}
-
-extern "C" sensor_module* create(void)
-{
- geo_sensor *sensor;
-
- try {
- sensor = new(std::nothrow) geo_sensor;
- } catch (int err) {
- ERR("Failed to create module, err: %d, cause: %s", err, strerror(err));
- return NULL;
- }
-
- sensor_module *module = new(std::nothrow) sensor_module;
- retvm_if(!module || !sensor, NULL, "Failed to allocate memory");
-
- module->sensors.push_back(sensor);
- return module;
-}
+++ /dev/null
-cmake_minimum_required(VERSION 2.6)
-project(gravity CXX)
-
-SET(SENSOR_NAME gravity_sensor)
-
-include_directories(${CMAKE_CURRENT_SOURCE_DIR})
-include_directories(${CMAKE_SOURCE_DIR}/src/client)
-include_directories(${CMAKE_SOURCE_DIR}/src/server/sensor_fusion)
-
-FOREACH(flag ${gravity_pkgs_LDFLAGS})
- SET(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} ${flag}")
-ENDFOREACH(flag)
-
-FOREACH(flag ${gravity_pkgs_CFLAGS})
- SET(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} ${flag}")
-ENDFOREACH(flag)
-
-add_library(${SENSOR_NAME} SHARED
- gravity_sensor.cpp
- )
-
-target_link_libraries(${SENSOR_NAME} ${gravity_pkgs_LDFLAGS} "-lm")
-
-install(TARGETS ${SENSOR_NAME} DESTINATION ${CMAKE_INSTALL_LIBDIR}/sensord)
return true;
}
-
-extern "C" sensor_module* create(void)
-{
- gravity_sensor *sensor;
-
- try {
- sensor = new(std::nothrow) gravity_sensor;
- } catch (int err) {
- ERR("Failed to create module, err: %d, cause: %s", err, strerror(err));
- return NULL;
- }
-
- sensor_module *module = new(std::nothrow) sensor_module;
- retvm_if(!module || !sensor, NULL, "Failed to allocate memory");
-
- module->sensors.push_back(sensor);
- return module;
-}
+++ /dev/null
-cmake_minimum_required(VERSION 2.6)
-project(gyro CXX)
-
-SET(SENSOR_NAME gyro_sensor)
-
-include_directories(${CMAKE_CURRENT_SOURCE_DIR})
-include_directories(${CMAKE_SOURCE_DIR}/src/client)
-
-FOREACH(flag ${gyro_pkgs_LDFLAGS})
- SET(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} ${flag}")
-ENDFOREACH(flag)
-
-FOREACH(flag ${gyro_pkgs_CFLAGS})
- SET(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} ${flag}")
-ENDFOREACH(flag)
-
-add_library(${SENSOR_NAME} SHARED
- gyro_sensor.cpp
- )
-
-target_link_libraries(${SENSOR_NAME} ${gyro_pkgs_LDFLAGS} "-lm")
-
-install(TARGETS ${SENSOR_NAME} DESTINATION ${CMAKE_INSTALL_LIBDIR}/sensord)
data.values[1] = data.values[1] * m_resolution;
data.values[2] = data.values[2] * m_resolution;
}
-
-extern "C" sensor_module* create(void)
-{
- gyro_sensor *sensor;
-
- try {
- sensor = new(std::nothrow) gyro_sensor;
- } catch (int err) {
- ERR("Failed to create module, err: %d, cause: %s", err, strerror(err));
- return NULL;
- }
-
- sensor_module *module = new(std::nothrow) sensor_module;
- retvm_if(!module || !sensor, NULL, "Failed to allocate memory");
-
- module->sensors.push_back(sensor);
- return module;
-}
+++ /dev/null
-cmake_minimum_required(VERSION 2.6)
-project(light CXX)
-
-SET(SENSOR_NAME light_sensor)
-
-include_directories(${CMAKE_CURRENT_SOURCE_DIR})
-include_directories(${CMAKE_SOURCE_DIR}/src/client)
-
-FOREACH(flag ${light_pkgs_LDFLAGS})
- SET(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} ${flag}")
-ENDFOREACH(flag)
-
-FOREACH(flag ${light_pkgs_CFLAGS})
- SET(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} ${flag}")
-ENDFOREACH(flag)
-
-add_library(${SENSOR_NAME} SHARED
- light_sensor.cpp
- )
-
-target_link_libraries(${SENSOR_NAME} ${light_pkgs_LDFLAGS} "-lm")
-
-install(TARGETS ${SENSOR_NAME} DESTINATION ${CMAKE_INSTALL_LIBDIR}/sensord)
data.values[0] = (int) adc_to_light_level((int)data.values[0]);
data.value_count = 1;
}
-
-extern "C" sensor_module* create(void)
-{
- light_sensor *sensor;
-
- try {
- sensor = new(std::nothrow) light_sensor;
- } catch (int err) {
- ERR("Failed to create module, err: %d, cause: %s", err, strerror(err));
- return NULL;
- }
-
- sensor_module *module = new(std::nothrow) sensor_module;
- retvm_if(!module || !sensor, NULL, "Failed to allocate memory");
-
- module->sensors.push_back(sensor);
- return module;
-}
+++ /dev/null
-cmake_minimum_required(VERSION 2.6)
-project(linear_accel CXX)
-
-SET(SENSOR_NAME linear_accel_sensor)
-
-include_directories(${CMAKE_CURRENT_SOURCE_DIR})
-include_directories(${CMAKE_SOURCE_DIR}/src/client)
-include_directories(${CMAKE_SOURCE_DIR}/src/server/sensor_fusion)
-
-FOREACH(flag ${linear_accel_pkgs_LDFLAGS})
- SET(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} ${flag}")
-ENDFOREACH(flag)
-
-FOREACH(flag ${linear_accel_pkgs_CFLAGS})
- SET(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} ${flag}")
-ENDFOREACH(flag)
-
-add_library(${SENSOR_NAME} SHARED
- linear_accel_sensor.cpp
- )
-
-target_link_libraries(${SENSOR_NAME} ${linear_accel_pkgs_LDFLAGS} "-lm")
-
-install(TARGETS ${SENSOR_NAME} DESTINATION ${CMAKE_INSTALL_LIBDIR}/sensord)
return true;
}
-extern "C" sensor_module* create(void)
-{
- linear_accel_sensor *sensor;
-
- try {
- sensor = new(std::nothrow) linear_accel_sensor;
- } catch (int err) {
- ERR("Failed to create module, err: %d, cause: %s", err, strerror(err));
- return NULL;
- }
-
- sensor_module *module = new(std::nothrow) sensor_module;
- retvm_if(!module || !sensor, NULL, "Failed to allocate memory");
-
- module->sensors.push_back(sensor);
- return module;
-}
+++ /dev/null
-cmake_minimum_required(VERSION 2.6)
-project(orientation CXX)
-
-SET(SENSOR_NAME orientation_sensor)
-
-include_directories(${CMAKE_CURRENT_SOURCE_DIR})
-include_directories(${CMAKE_SOURCE_DIR}/src/client)
-include_directories(${CMAKE_SOURCE_DIR}/src/server/sensor_fusion)
-
-FOREACH(flag ${orientation_pkgs_LDFLAGS})
- SET(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} ${flag}")
-ENDFOREACH(flag)
-
-FOREACH(flag ${orientation_pkgs_CFLAGS})
- SET(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} ${flag}")
-ENDFOREACH(flag)
-
-add_library(${SENSOR_NAME} SHARED
- orientation_sensor.cpp
- )
-
-target_link_libraries(${SENSOR_NAME} ${orientation_pkgs_LDFLAGS} "-lm")
-
-install(TARGETS ${SENSOR_NAME} DESTINATION ${CMAKE_INSTALL_LIBDIR}/sensord)
return true;
}
-extern "C" sensor_module* create(void)
-{
- orientation_sensor *sensor;
-
- try {
- sensor = new(std::nothrow) orientation_sensor;
- } catch (int err) {
- ERR("Failed to create module, err: %d, cause: %s", err, strerror(err));
- return NULL;
- }
-
- sensor_module *module = new(std::nothrow) sensor_module;
- retvm_if(!module || !sensor, NULL, "Failed to allocate memory");
-
- module->sensors.push_back(sensor);
- return module;
-}
+++ /dev/null
-cmake_minimum_required(VERSION 2.6)
-project(pressure CXX)
-
-SET(SENSOR_NAME pressure_sensor)
-
-include_directories(${CMAKE_CURRENT_SOURCE_DIR})
-include_directories(${CMAKE_SOURCE_DIR}/src/client)
-
-FOREACH(flag ${pressure_pkgs_LDFLAGS})
- SET(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} ${flag}")
-ENDFOREACH(flag)
-
-FOREACH(flag ${pressure_pkgs_CFLAGS})
- SET(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} ${flag}")
-ENDFOREACH(flag)
-
-add_library(${SENSOR_NAME} SHARED
- pressure_sensor.cpp
- )
-
-target_link_libraries(${SENSOR_NAME} ${pressure_pkgs_LDFLAGS} "-lm")
-
-install(TARGETS ${SENSOR_NAME} DESTINATION ${CMAKE_INSTALL_LIBDIR}/sensord)
#include <sf_common.h>
#include <pressure_sensor.h>
#include <sensor_plugin_loader.h>
-#include <algorithm>
-#include <csensor_config.h>
using std::bind1st;
using std::mem_fun;
#define SENSOR_TYPE_PRESSURE "PRESSURE"
#define ELEMENT_NAME "NAME"
#define ELEMENT_VENDOR "VENDOR"
-#define ELEMENT_TEMPERATURE_RESOLUTION "TEMPERATURE_RESOLUTION"
-#define ELEMENT_TEMPERATURE_OFFSET "TEMPERATURE_OFFSET"
#define ATTR_VALUE "value"
-#define SEA_LEVEL_RESOLUTION 0.01
-
pressure_sensor::pressure_sensor()
: m_sensor_hal(NULL)
, m_resolution(0.0f)
string model_id = m_sensor_hal->get_model_id();
- csensor_config &config = csensor_config::get_instance();
-
- double temperature_resolution;
-
- if (!config.get(SENSOR_TYPE_PRESSURE, model_id, ELEMENT_TEMPERATURE_RESOLUTION, temperature_resolution)) {
- ERR("[TEMPERATURE_RESOLUTION] is empty\n");
- throw ENXIO;
- }
-
- m_temperature_resolution = (float)temperature_resolution;
- INFO("m_temperature_resolution = %f\n", m_temperature_resolution);
-
- double temperature_offset;
-
- if (!config.get(SENSOR_TYPE_PRESSURE, model_id, ELEMENT_TEMPERATURE_OFFSET, temperature_offset)) {
- ERR("[TEMPERATURE_OFFSET] is empty\n");
- throw ENXIO;
- }
-
- m_temperature_offset = (float)temperature_offset;
- INFO("m_temperature_offset = %f\n", m_temperature_offset);
-
INFO("%s is created!", sensor_base::get_name());
return true;
if (get_client_cnt(PRESSURE_RAW_DATA_EVENT)) {
event.sensor_id = get_id();
event.event_type = PRESSURE_RAW_DATA_EVENT;
- raw_to_base(event.data);
push(event);
}
int pressure_sensor::get_sensor_data(unsigned int type, sensor_data_t &data)
{
- int ret;
-
- ret = m_sensor_hal->get_sensor_data(data);
-
- if (ret < 0)
- return -1;
-
- if (type == PRESSURE_RAW_DATA_EVENT) {
- raw_to_base(data);
- return 0;
- }
-
- return -1;
+ return m_sensor_hal->get_sensor_data(data);
}
bool pressure_sensor::set_interval(unsigned long interval)
return m_sensor_hal->set_interval(interval);
}
-
-float pressure_sensor::pressure_to_altitude(float pressure)
-{
- return 44330.0f * (1.0f - pow(pressure/m_sea_level_pressure, 1.0f/5.255f));
-}
-
-void pressure_sensor::raw_to_base(sensor_data_t &data)
-{
- data.values[0] = data.values[0] * m_resolution;
- m_sea_level_pressure = data.values[1] * SEA_LEVEL_RESOLUTION;
- data.values[1] = pressure_to_altitude(data.values[0]);
- data.values[2] = data.values[2] * m_temperature_resolution + m_temperature_offset;
- data.value_count = 3;
-}
-
-extern "C" sensor_module* create(void)
-{
- pressure_sensor *sensor;
-
- try {
- sensor = new(std::nothrow) pressure_sensor;
- } catch (int err) {
- ERR("Failed to create module, err: %d, cause: %s", err, strerror(err));
- return NULL;
- }
-
- sensor_module *module = new(std::nothrow) sensor_module;
- retvm_if(!module || !sensor, NULL, "Failed to allocate memory");
-
- module->sensors.push_back(sensor);
- return module;
-}
sensor_hal *m_sensor_hal;
float m_pressure;
float m_resolution;
- float m_sea_level_pressure;
- float m_temperature_offset;
- float m_temperature_resolution;
virtual bool on_start(void);
virtual bool on_stop(void);
bool process_event(void);
- float pressure_to_altitude(float pressure);
- void raw_to_base(sensor_data_t &data);
+
};
#endif
+++ /dev/null
-cmake_minimum_required(VERSION 2.6)
-project(proxi CXX)
-
-SET(SENSOR_NAME proxi_sensor)
-
-include_directories(${CMAKE_CURRENT_SOURCE_DIR})
-include_directories(${CMAKE_SOURCE_DIR}/src/client)
-
-FOREACH(flag ${proxi_pkgs_LDFLAGS})
- SET(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} ${flag}")
-ENDFOREACH(flag)
-
-FOREACH(flag ${proxi_pkgs_CFLAGS})
- SET(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} ${flag}")
-ENDFOREACH(flag)
-
-add_library(${SENSOR_NAME} SHARED
- proxi_sensor.cpp
-)
-
-target_link_libraries(${SENSOR_NAME} ${proxi_pkgs_LDFLAGS} "-lm")
-
-install(TARGETS ${SENSOR_NAME} DESTINATION ${CMAKE_INSTALL_LIBDIR}/sensord)
data.value_count = 1;
}
-extern "C" sensor_module* create(void)
-{
- proxi_sensor *sensor;
-
- try {
- sensor = new(std::nothrow) proxi_sensor;
- } catch (int err) {
- ERR("Failed to create module, err: %d, cause: %s", err, strerror(err));
- return NULL;
- }
-
- sensor_module *module = new(std::nothrow) sensor_module;
- retvm_if(!module || !sensor, NULL, "Failed to allocate memory");
-
- module->sensors.push_back(sensor);
- return module;
-}
+++ /dev/null
-IF("${RV}" STREQUAL "ON")
-add_subdirectory(rv)
-ENDIF()
-IF("${GEOMAGNETIC_RV}" STREQUAL "ON")
-add_subdirectory(geomagnetic_rv)
-ENDIF()
-IF("${GAMING_RV}" STREQUAL "ON")
-add_subdirectory(gaming_rv)
-ENDIF()
\ No newline at end of file
+++ /dev/null
-cmake_minimum_required(VERSION 2.6)
-project(gaming_rv CXX)
-
-SET(SENSOR_NAME gaming_rv_sensor)
-
-include_directories(${CMAKE_CURRENT_SOURCE_DIR})
-include_directories(${CMAKE_SOURCE_DIR}/src/client)
-include_directories(${CMAKE_SOURCE_DIR}/src/server/sensor_fusion)
-
-FOREACH(flag ${gaming_rv_pkgs_LDFLAGS})
- SET(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} ${flag}")
-ENDFOREACH(flag)
-
-FOREACH(flag ${gaming_rv_pkgs_CFLAGS})
- SET(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} ${flag}")
-ENDFOREACH(flag)
-
-add_library(${SENSOR_NAME} SHARED
- gaming_rv_sensor.cpp
-)
-
-target_link_libraries(${SENSOR_NAME} ${gaming_rv_pkgs_LDFLAGS} "-lm")
-
-install(TARGETS ${SENSOR_NAME} DESTINATION ${CMAKE_INSTALL_LIBDIR}/sensord)
#define ELEMENT_ACCEL_SCALE "ACCEL_SCALE"
#define ELEMENT_GYRO_SCALE "GYRO_SCALE"
-void pre_process_data(sensor_data<float> &data_out, const float *data_in, float *bias, int *sign, float scale)
-{
- data_out.m_data.m_vec[0] = sign[0] * (data_in[0] - bias[0]) / scale;
- data_out.m_data.m_vec[1] = sign[1] * (data_in[1] - bias[1]) / scale;
- data_out.m_data.m_vec[2] = sign[2] * (data_in[2] - bias[2]) / scale;
-}
-
gaming_rv_sensor::gaming_rv_sensor()
: m_accel_sensor(NULL)
, m_gyro_sensor(NULL)
return true;
}
-extern "C" sensor_module* create(void)
-{
- gaming_rv_sensor *sensor;
-
- try {
- sensor = new(std::nothrow) gaming_rv_sensor;
- } catch (int err) {
- ERR("Failed to create module, err: %d, cause: %s", err, strerror(err));
- return NULL;
- }
-
- sensor_module *module = new(std::nothrow) sensor_module;
- retvm_if(!module || !sensor, NULL, "Failed to allocate memory");
-
- module->sensors.push_back(sensor);
- return module;
-}
+++ /dev/null
-cmake_minimum_required(VERSION 2.6)
-project(geomagnetic_rv CXX)
-
-SET(SENSOR_NAME geomagnetic_rv_sensor)
-
-include_directories(${CMAKE_CURRENT_SOURCE_DIR})
-include_directories(${CMAKE_SOURCE_DIR}/src/client)
-include_directories(${CMAKE_SOURCE_DIR}/src/server/sensor_fusion)
-
-FOREACH(flag ${geomagnetic_rv_pkgs_LDFLAGS})
- SET(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} ${flag}")
-ENDFOREACH(flag)
-
-FOREACH(flag ${geomagnetic_rv_pkgs_CFLAGS})
- SET(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} ${flag}")
-ENDFOREACH(flag)
-
-add_library(${SENSOR_NAME} SHARED
- geomagnetic_rv_sensor.cpp
-)
-
-target_link_libraries(${SENSOR_NAME} ${geomagnetic_rv_pkgs_LDFLAGS} "-lm")
-
-install(TARGETS ${SENSOR_NAME} DESTINATION ${CMAKE_INSTALL_LIBDIR}/sensord)
return true;
}
-
-extern "C" sensor_module* create(void)
-{
- geomagnetic_rv_sensor *sensor;
-
- try {
- sensor = new(std::nothrow) geomagnetic_rv_sensor;
- } catch (int err) {
- ERR("Failed to create module, err: %d, cause: %s", err, strerror(err));
- return NULL;
- }
-
- sensor_module *module = new(std::nothrow) sensor_module;
- retvm_if(!module || !sensor, NULL, "Failed to allocate memory");
-
- module->sensors.push_back(sensor);
- return module;
-}
+++ /dev/null
-cmake_minimum_required(VERSION 2.6)
-project(rv CXX)
-
-SET(SENSOR_NAME rv_sensor)
-
-include_directories(${CMAKE_CURRENT_SOURCE_DIR})
-include_directories(${CMAKE_SOURCE_DIR}/src/client)
-include_directories(${CMAKE_SOURCE_DIR}/src/server/sensor_fusion)
-
-FOREACH(flag ${rv_pkgs_LDFLAGS})
- SET(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} ${flag}")
-ENDFOREACH(flag)
-
-FOREACH(flag ${rv_pkgs_CFLAGS})
- SET(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} ${flag}")
-ENDFOREACH(flag)
-
-add_library(${SENSOR_NAME} SHARED
- rv_sensor.cpp
-)
-
-target_link_libraries(${SENSOR_NAME} ${rv_pkgs_LDFLAGS} "-lm")
-
-install(TARGETS ${SENSOR_NAME} DESTINATION ${CMAKE_INSTALL_LIBDIR}/sensord)
#define ELEMENT_RAW_DATA_UNIT "RAW_DATA_UNIT"
#define ELEMENT_DEFAULT_SAMPLING_TIME "DEFAULT_SAMPLING_TIME"
-void pre_process_data(sensor_data<float> &data_out, const float *data_in, float *bias, int *sign, float scale)
-{
- data_out.m_data.m_vec[0] = sign[0] * (data_in[0] - bias[0]) / scale;
- data_out.m_data.m_vec[1] = sign[1] * (data_in[1] - bias[1]) / scale;
- data_out.m_data.m_vec[2] = sign[2] * (data_in[2] - bias[2]) / scale;
-}
-
rv_sensor::rv_sensor()
: m_accel_sensor(NULL)
, m_gyro_sensor(NULL)
return true;
}
-extern "C" sensor_module* create(void)
-{
- rv_sensor *sensor;
-
- try {
- sensor = new(std::nothrow) rv_sensor;
- } catch (int err) {
- ERR("Failed to create module, err: %d, cause: %s", err, strerror(err));
- return NULL;
- }
-
- sensor_module *module = new(std::nothrow) sensor_module;
- retvm_if(!module || !sensor, NULL, "Failed to allocate memory");
-
- module->sensors.push_back(sensor);
- return module;
-}
+++ /dev/null
-cmake_minimum_required(VERSION 2.6)
-project(rv_raw CXX)
-
-SET(SENSOR_NAME rv_raw_sensor)
-
-include_directories(${CMAKE_CURRENT_SOURCE_DIR})
-include_directories(${CMAKE_SOURCE_DIR}/src/client)
-
-INCLUDE(FindPkgConfig)
-PKG_CHECK_MODULES(rv_raw_pkgs REQUIRED vconf)
-
-FOREACH(flag ${rv_raw_pkgs_LDFLAGS})
- SET(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} ${flag}")
-ENDFOREACH(flag)
-
-FOREACH(flag ${rv_raw_pkgs_CFLAGS})
- SET(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} ${flag}")
-ENDFOREACH(flag)
-
-add_library(${SENSOR_NAME} SHARED
- rv_raw_sensor.cpp
-)
-
-target_link_libraries(${SENSOR_NAME} ${rv_raw_pkgs_LDFLAGS} "-lm")
-
-install(TARGETS ${SENSOR_NAME} DESTINATION ${CMAKE_INSTALL_LIBDIR}/sensord)
return m_sensor_hal->set_interval(interval);
}
-
-extern "C" sensor_module* create(void)
-{
- rv_raw_sensor *sensor;
-
- try {
- sensor = new(std::nothrow) rv_raw_sensor;
- } catch (int err) {
- ERR("Failed to create module, err: %d, cause: %s", err, strerror(err));
- return NULL;
- }
-
- sensor_module *module = new(std::nothrow) sensor_module;
- retvm_if(!module || !sensor, NULL, "Failed to allocate memory");
-
- module->sensors.push_back(sensor);
- return module;
-}
return axis2quat(axis, angle);
}
+template<typename T>
+void pre_process_data(sensor_data<T> &data_out, const T *data_in, T *bias, int *sign, T scale)
+{
+ data_out.m_data.m_vec[0] = sign[0] * (data_in[0] - bias[0]) / scale;
+ data_out.m_data.m_vec[1] = sign[1] * (data_in[1] - bias[1]) / scale;
+ data_out.m_data.m_vec[2] = sign[2] * (data_in[2] - bias[2]) / scale;
+}
+
#endif /* _SENSOR_DATA_H_ */
T scaling_factor);
template<typename T> friend quaternion<T> sensor_data2quat(const sensor_data<T> data,
const vect<T, REF_VEC_SIZE> ref_vec);
+ template<typename T> friend void pre_process_data(sensor_data<T> &data_out,
+ const T *data_in, T *bias, int *sign, T scale);
+
};
#include "sensor_data.cpp"
float scale_magnetic = 1;
int magnetic_alignment_factor = -1;
-void pre_process_data(sensor_data<float> *data_out, sensor_data<float> *data_in, float *bias, int *sign, float scale)
-{
- data_out->m_data.m_vec[0] = sign[0] * (data_in->m_data.m_vec[0] - bias[0]) / scale;
- data_out->m_data.m_vec[1] = sign[1] * (data_in->m_data.m_vec[1] - bias[1]) / scale;
- data_out->m_data.m_vec[2] = sign[2] * (data_in->m_data.m_vec[2] - bias[2]) / scale;
-
- data_out->m_time_stamp = data_in->m_time_stamp;
-}
-
void orientation_sensor::get_device_orientation(sensor_data<float> *accel_data,
sensor_data<float> *gyro_data, sensor_data<float> *magnetic_data)
{
--- /dev/null
+#define ACCEL strcmp("@ACCEL@", "ON")
+#define AUTO_ROTATION strcmp("@AUTO_ROTATION@", "ON")
+#define GYRO strcmp("@GYRO@", "ON")
+#define PROXI strcmp("@PROXI@", "ON")
+#define LIGHT strcmp("@LIGHT@", "ON")
+#define GEO strcmp("@GEO@", "ON")
+#define PRESSURE strcmp("@PRESSURE@", "ON")
+#define TEMPERATURE strcmp("@TEMPERATURE@", "ON")
+#define ULTRAVIOLET strcmp("@ULTRAVIOLET@", "ON")
+#define ORIENTATION strcmp("@ORIENTATION@", "ON")
+#define GRAVITY strcmp("@GRAVITY@", "ON")
+#define LINEAR_ACCEL strcmp("@LINEAR_ACCEL@", "ON")
+#define GEOMAGNETIC_RV strcmp("@GEOMAGNETIC_RV@", "ON")
+#define GAMING_RV strcmp("@GAMING_RV@", "ON")
+#define RV strcmp("@RV@", "ON")
+#define TILT strcmp("@TILT@", "ON")
+#define UNCAL_GYRO strcmp("@UNCAL_GYRO@", "ON")
+#define BIO_LED_RED strcmp("@BIO_LED_RED@", "ON")
+#define RV_RAW strcmp("@RV_RAW@", "ON")
+
+#if $ACCEL == 1
+#include <accel_sensor.h>
+#endif
+#if $GYRO == 1
+#include <gyro_sensor.h>
+#endif
+#if $PROXI == 1
+#include <proxi_sensor.h>
+#endif
+#if $LIGHT == 1
+#include <light_sensor.h>
+#endif
+#if $GEO == 1
+#include <geo_sensor.h>
+#endif
+#if $AUTO_ROTATION == 1
+#include <auto_rotation_sensor.h>
+#endif
+#if $PRESSURE == 1
+#include <pressure_sensor.h>
+#endif
+#if $TEMPERATURE == 1
+#include <temperature_sensor.h>
+#endif
+#if $HUMIDITY == 1
+#include <humidity_sensor.h>
+#endif
+#if $ULTRAVIOLET == 1
+#include <ultraviolet_sensor.h>
+#endif
+#if $BIO_LED_RED == 1
+#include <bio_led_red_sensor.h>
+#endif
+#if $ORIENTATION == 1
+#include <orientation_sensor.h>
+#endif
+#if $GEOMAGNETIC_RV == 1
+#include <geomagnetic_rv_sensor.h>
+#endif
+#if $GAMING_RV == 1
+#include <gaming_rv_sensor.h>
+#endif
+#if $TILT == 1
+#include <tilt_sensor.h>
+#endif
+#if $UNCAL_GYRO == 1
+#include <uncal_gyro_sensor.h>
+#endif
+#if $GRAVITY == 1
+#include <gravity_sensor.h>
+#endif
+#if $LINEAR_ACCEL == 1
+#include <linear_accel_sensor.h>
+#endif
+#if $RV == 1
+#include <rv_sensor.h>
+#endif
+#if $RV_RAW == 1
+#include <rv_raw_sensor.h>
+#endif
+
+#include <sensor_common.h>
+
+extern "C" sensor_module* create(void)
+{
+ sensor_module *module = new(std::nothrow) sensor_module;
+ retvm_if(!module, NULL, "Failed to allocate memory");
+
+#if $ACCEL == 1
+ accel_sensor *accel_sensor = NULL;
+ try {
+ accel_sensor = new(std::nothrow) accel_sensor;
+ } catch (int err) {
+ ERR("Failed to create accel_sensor module, err: %d, cause: %s", err, strerror(err));
+ }
+ if (!accel_sensor)
+ module->sensors.push_back(accel_sensor);
+#endif
+#if $AUTO_ROTATION == 1
+ auto_rotation_sensor *auto_rotation_sensor = NULL;
+ try {
+ auto_rotation_sensor = 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_rotation_sensor)
+ module->sensors.push_back(auto_rotation_sensor);
+#endif
+#if $GYRO == 1
+ gyro_sensor *gyro_sensor = NULL;
+ try {
+ gyro_sensor = new(std::nothrow) gyro_sensor;
+ } catch (int err) {
+ ERR("Failed to create gyro_sensor module, err: %d, cause: %s", err, strerror(err));
+ }
+ if (!gyro_sensor)
+ module->sensors.push_back(gyro_sensor);
+#endif
+#if $PROXI == 1
+ proxi_sensor *proxi_sensor = NULL;
+ try {
+ proxi_sensor = new(std::nothrow) proxi_sensor;
+ } catch (int err) {
+ ERR("Failed to create proxi_sensor module, err: %d, cause: %s", err, strerror(err));
+ }
+ if (!proxi_sensor)
+ module->sensors.push_back(proxi_sensor);
+#endif
+#if $LIGHT == 1
+ light_sensor *light_sensor = NULL;
+ try {
+ light_sensor = new(std::nothrow) light_sensor;
+ } catch (int err) {
+ ERR("Failed to create light_sensor module, err: %d, cause: %s", err, strerror(err));
+ }
+ if (!light_sensor)
+ module->sensors.push_back(light_sensor);
+#endif
+#if $GEO == 1
+ geo_sensor *geo_sensor = NULL;
+ try {
+ geo_sensor = new(std::nothrow) geo_sensor;
+ } catch (int err) {
+ ERR("Failed to create geo_sensor module, err: %d, cause: %s", err, strerror(err));
+ }
+ if (!geo_sensor)
+ module->sensors.push_back(geo_sensor);
+#endif
+#if $PRESSURE == 1
+ pressure_sensor *pressure_sensor = NULL;
+ try {
+ pressure_sensor = new(std::nothrow) pressure_sensor;
+ } catch (int err) {
+ ERR("Failed to create pressure_sensor module, err: %d, cause: %s", err, strerror(err));
+ }
+ if (!pressure_sensor)
+ module->sensors.push_back(pressure_sensor);
+#endif
+#if $TEMPERATURE == 1
+
+ temperature_sensor *temperature_sensor = NULL;
+ try {
+ temperature_sensor = new(std::nothrow) temperature_sensor;
+ } catch (int err) {
+ ERR("Failed to create temperature_sensor module, err: %d, cause: %s", err, strerror(err));
+ }
+ if (!temperature_sensor)
+ module->sensors.push_back(temperature_sensor);
+
+#endif
+#if $ULTRAVIOLET == 1
+ ultraviolet_sensor *ultraviolet_sensor = NULL;
+ try {
+ ultraviolet_sensor = new(std::nothrow) ultraviolet_sensor;
+ } catch (int err) {
+ ERR("Failed to create ultraviolet_sensor module, err: %d, cause: %s", err, strerror(err));
+ }
+ if (!ultraviolet_sensor)
+ module->sensors.push_back(ultraviolet_sensor);
+#endif
+#if $ORIENTATION == 1
+ orientation_sensor *orientation_sensor = NULL;
+ try {
+ orientation_sensor = new(std::nothrow) orientation_sensor;
+ } catch (int err) {
+ ERR("Failed to create orientation_sensor module, err: %d, cause: %s", err, strerror(err));
+ }
+ if (!orientation_sensor)
+ module->sensors.push_back(orientation_sensor);
+#endif
+#if $GRAVITY == 1
+ gravity_sensor *gravity_sensor = NULL;
+ try {
+ gravity_sensor = new(std::nothrow) gravity_sensor;
+ } catch (int err) {
+ ERR("Failed to create gravity_sensor module, err: %d, cause: %s", err, strerror(err));
+ }
+ if (!gravity_sensor)
+ module->sensors.push_back(gravity_sensor);
+#endif
+#if $LINEAR_ACCEL == 1
+ linear_accel_sensor *linear_accel_sensor = NULL;
+ try {
+ linear_accel_sensor = new(std::nothrow) linear_accel_sensor;
+ } catch (int err) {
+ ERR("Failed to create linear_accel_sensor module, err: %d, cause: %s", err, strerror(err));
+ }
+ if (!linear_accel_sensor)
+ module->sensors.push_back(linear_accel_sensor);
+#endif
+#if $GEOMAGNETIC_RV == 1
+ geomagnetic_rv_sensor *geomagnetic_rv_sensor = NULL;
+ try {
+ geomagnetic_rv_sensor = new(std::nothrow) geomagnetic_rv_sensor;
+ } catch (int err) {
+ ERR("Failed to create geomagnetic_rv_sensor module, err: %d, cause: %s", err, strerror(err));
+ }
+ if (!geomagnetic_rv_sensor)
+ module->sensors.push_back(geomagnetic_rv_sensor);
+#endif
+#if $GAMING_RV == 1
+ gaming_rv_sensor *gaming_rv_sensor = NULL;
+ try {
+ gaming_rv_sensor = new(std::nothrow) gaming_rv_sensor;
+ } catch (int err) {
+ ERR("Failed to create gaming_rv_sensor module, err: %d, cause: %s", err, strerror(err));
+ }
+ if (!gaming_rv_sensor)
+ module->sensors.push_back(gaming_rv_sensor);
+#endif
+#if $RV == 1
+ rv_sensor *rv_sensor = NULL;
+ try {
+ rv_sensor = new(std::nothrow) rv_sensor;
+ } catch (int err) {
+ ERR("Failed to create rv_sensor module, err: %d, cause: %s", err, strerror(err));
+ }
+ if (!rv_sensor)
+ module->sensors.push_back(rv_sensor);
+#endif
+#if $TILT == 1
+ tilt_sensor *tilt_sensor = NULL;
+ try {
+ tilt_sensor = new(std::nothrow) tilt_sensor;
+ } catch (int err) {
+ ERR("Failed to create tilt_sensor module, err: %d, cause: %s", err, strerror(err));
+ }
+ if (!tilt_sensor)
+ module->sensors.push_back(tilt_sensor);
+#endif
+#if $UNCAL_GYRO == 1
+ uncal_gyro_sensor *uncal_gyro_sensor = NULL;
+ try {
+ uncal_gyro_sensor = new(std::nothrow) uncal_gyro_sensor;
+ } catch (int err) {
+ ERR("Failed to create uncal_gyro_sensor module, err: %d, cause: %s", err, strerror(err));
+ }
+ if (!uncal_gyro_sensor)
+ module->sensors.push_back(uncal_gyro_sensor);
+#endif
+#if $BIO_LED_RED == 1
+ bio_led_red_sensor *bio_led_red_sensor = NULL;
+ try {
+ bio_led_red_sensor = new(std::nothrow) bio_led_red_sensor;
+ } catch (int err) {
+ ERR("Failed to create bio_led_red_sensor module, err: %d, cause: %s", err, strerror(err));
+ }
+ if (!bio_led_red_sensor)
+ module->sensors.push_back(bio_led_red_sensor);
+
+#endif
+#if $RV_RAW == 1
+ rv_raw_sensor *rv_raw_sensor = NULL;
+ try {
+ rv_raw_sensor = new(std::nothrow) rv_raw_sensor;
+ } catch (int err) {
+ ERR("Failed to create rv_raw_sensor module, err: %d, cause: %s", err, strerror(err));
+ }
+ if (!rv_raw_sensor)
+ module->sensors.push_back(rv_raw_sensor);
+
+#endif
+
+ return module;
+}
+++ /dev/null
-cmake_minimum_required(VERSION 2.6)
-project(temperature CXX)
-
-SET(SENSOR_NAME temperature_sensor)
-
-include_directories(${CMAKE_CURRENT_SOURCE_DIR})
-include_directories(${CMAKE_SOURCE_DIR}/src/client)
-
-INCLUDE(FindPkgConfig)
-PKG_CHECK_MODULES(temp_pkgs REQUIRED vconf)
-
-FOREACH(flag ${temp_pkgs_LDFLAGS})
- SET(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} ${flag}")
-ENDFOREACH(flag)
-
-FOREACH(flag ${temp_pkgs_CFLAGS})
- SET(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} ${flag}")
-ENDFOREACH(flag)
-
-add_library(${SENSOR_NAME} SHARED
- temperature_sensor.cpp
- )
-
-target_link_libraries(${SENSOR_NAME} ${temp_pkgs_LDFLAGS} "-lm")
-
-install(TARGETS ${SENSOR_NAME} DESTINATION ${CMAKE_INSTALL_LIBDIR}/sensord)
data.values[0] = data.values[0] * m_resolution;
data.value_count = 1;
}
-
-extern "C" sensor_module* create(void)
-{
- temperature_sensor *sensor;
-
- try {
- sensor = new(std::nothrow) temperature_sensor;
- } catch (int err) {
- ERR("Failed to create module, err: %d, cause: %s", err, strerror(err));
- return NULL;
- }
-
- sensor_module *module = new(std::nothrow) sensor_module;
- retvm_if(!module || !sensor, NULL, "Failed to allocate memory");
-
- module->sensors.push_back(sensor);
- return module;
-}
+++ /dev/null
-cmake_minimum_required(VERSION 2.6)
-project(tilt CXX)
-
-SET(SENSOR_NAME tilt_sensor)
-
-include_directories(${CMAKE_CURRENT_SOURCE_DIR})
-include_directories(${CMAKE_SOURCE_DIR}/src/client)
-include_directories(${CMAKE_SOURCE_DIR}/src/server/sensor_fusion)
-
-FOREACH(flag ${tilt_pkgs_LDFLAGS})
- SET(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} ${flag}")
-ENDFOREACH(flag)
-
-FOREACH(flag ${tilt_pkgs_CFLAGS})
- SET(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} ${flag}")
-ENDFOREACH(flag)
-
-add_library(${SENSOR_NAME} SHARED
- tilt_sensor.cpp
- )
-
-target_link_libraries(${SENSOR_NAME} ${tilt_pkgs_LDFLAGS} "-lm")
-
-install(TARGETS ${SENSOR_NAME} DESTINATION ${CMAKE_INSTALL_LIBDIR}/sensord)
return true;
}
-
-extern "C" sensor_module* create(void)
-{
- tilt_sensor *sensor;
-
- try {
- sensor = new(std::nothrow) tilt_sensor;
- } catch (int err) {
- ERR("Failed to create module, err: %d, cause: %s", err, strerror(err));
- return NULL;
- }
-
- sensor_module *module = new(std::nothrow) sensor_module;
- retvm_if(!module || !sensor, NULL, "Failed to allocate memory");
-
- module->sensors.push_back(sensor);
- return module;
-}
+++ /dev/null
-cmake_minimum_required(VERSION 2.6)
-project(ultraviolet CXX)
-
-SET(SENSOR_NAME ultraviolet_sensor)
-
-include_directories(${CMAKE_CURRENT_SOURCE_DIR})
-include_directories(${CMAKE_SOURCE_DIR}/src/client)
-
-FOREACH(flag ${uv_pkgs_LDFLAGS})
- SET(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} ${flag}")
-ENDFOREACH(flag)
-
-FOREACH(flag ${uv_pkgs_CFLAGS})
- SET(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} ${flag}")
-ENDFOREACH(flag)
-
-add_library(${SENSOR_NAME} SHARED
- ultraviolet_sensor.cpp
- )
-
-target_link_libraries(${SENSOR_NAME} ${uv_pkgs_LDFLAGS} "-lm")
-
-install(TARGETS ${SENSOR_NAME} DESTINATION ${CMAKE_INSTALL_LIBDIR}/sensord)
{
}
-
-extern "C" sensor_module* create(void)
-{
- ultraviolet_sensor *sensor;
-
- try {
- sensor = new(std::nothrow) ultraviolet_sensor;
- } catch (int err) {
- ERR("Failed to create module, err: %d, cause: %s", err, strerror(err));
- return NULL;
- }
-
- sensor_module *module = new(std::nothrow) sensor_module;
- retvm_if(!module || !sensor, NULL, "Failed to allocate memory");
-
- module->sensors.push_back(sensor);
- return module;
-}
+++ /dev/null
-cmake_minimum_required(VERSION 2.6)
-project(uncal_gyro CXX)
-
-SET(SENSOR_NAME uncal_gyro_sensor)
-
-include_directories(${CMAKE_CURRENT_SOURCE_DIR})
-include_directories(${CMAKE_SOURCE_DIR}/src/client)
-include_directories(${CMAKE_SOURCE_DIR}/src/server/sensor_fusion)
-
-FOREACH(flag ${gravity_pkgs_LDFLAGS})
- SET(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} ${flag}")
-ENDFOREACH(flag)
-
-FOREACH(flag ${uncal_gyro_pkgs_CFLAGS})
- SET(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} ${flag}")
-ENDFOREACH(flag)
-
-add_library(${SENSOR_NAME} SHARED
- uncal_gyro_sensor.cpp
- )
-
-target_link_libraries(${SENSOR_NAME} ${uncal_gyro_pkgs_LDFLAGS} "-lm")
-
-install(TARGETS ${SENSOR_NAME} DESTINATION ${CMAKE_INSTALL_LIBDIR}/sensord)
return true;
}
-
-extern "C" sensor_module* create(void)
-{
- uncal_gyro_sensor *sensor;
-
- try {
- sensor = new(std::nothrow) uncal_gyro_sensor;
- } catch (int err) {
- ERR("Failed to create module, err: %d, cause: %s", err, strerror(err));
- return NULL;
- }
-
- sensor_module *module = new(std::nothrow) sensor_module;
- retvm_if(!module || !sensor, NULL, "Failed to allocate memory");
-
- module->sensors.push_back(sensor);
- return module;
-}
+++ /dev/null
-cmake_minimum_required(VERSION 2.6)
-project(sensor_fusion CXX)
-
-# to install pkgconfig setup file.
-SET(EXEC_PREFIX "\${prefix}")
-SET(VERSION 1.0)
-
-include_directories(${CMAKE_CURRENT_SOURCE_DIR})
-include_directories(${CMAKE_SOURCE_DIR}/src/client)
-
-set(PROJECT_MAJOR_VERSION "0")
-set(PROJECT_MINOR_VERSION "0")
-set(PROJECT_RELEASE_VERSION "1")
-set(CMAKE_VERBOSE_MAKEFILE OFF)
-
-add_definitions(-Wall -O3 -omit-frame-pointer)
-#add_definitions(-Wall -g -D_DEBUG)
-add_definitions(-DUSE_DLOG_LOG)
-add_definitions(-Iinclude)
-
-SET(SENSOR_FUSION_NAME sensor_fusion)
-
-add_library(${SENSOR_FUSION_NAME} SHARED
- euler_angles.cpp
- matrix.cpp
- orientation_filter.cpp
- quaternion.cpp
- rotation_matrix.cpp
- sensor_data.cpp
- vector.cpp
- )
-
-target_link_libraries(${SENSOR_FUSION_NAME} ${rpkgs_LDFLAGS} ${GLES_LDFLAGS} "-lm")
-
-install(TARGETS ${SENSOR_FUSION_NAME} DESTINATION ${CMAKE_INSTALL_LIBDIR}/sensord)
#define HAL_ELEMENT "HAL"
#define SENSOR_ELEMENT "SENSOR"
-#define PLUGINS_CONFIG_PATH "/usr/etc/sensor_plugins.xml"
-#define PLUGINS_DIR_PATH "/sensord"
+#define SENSOR_PLUGINS_DIR_PATH "/usr/lib/libsensord-plugins.so"
+#define HAL_PLUGINS_DIR_PATH "/usr/lib/libsensor-hal.so"
#define SENSOR_INDEX_SHIFT 16
bool sensor_plugin_loader::load_plugins(void)
{
- vector<string> hal_paths, sensor_paths;
- vector<string> unique_hal_paths, unique_sensor_paths;
-
- get_paths_from_config(string(PLUGINS_CONFIG_PATH), hal_paths, sensor_paths);
- get_paths_from_dir(string(LIBDIR) + string(PLUGINS_DIR_PATH), hal_paths, sensor_paths);
-
- //remove duplicates while keeping the original ordering => unique_*_paths
- unordered_set<string> s;
- auto unique = [&s](vector<string> &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(sensor_paths.begin(), sensor_paths.end(),
- [&](const string &path) {
- unique(unique_sensor_paths, path);
- }
- );
-
- //load plugins specified by unique_*_paths
- auto insert = [&](plugin_type type, const string &path) {
- insert_module(type, path);
- };
-
- for_each(unique_hal_paths.begin(), unique_hal_paths.end(),
- [&](const string &path) {
- insert(PLUGIN_TYPE_HAL, path);
- }
- );
-
- for_each(unique_sensor_paths.begin(), unique_sensor_paths.end(),
- [&](const string &path) {
- insert(PLUGIN_TYPE_SENSOR, path);
- }
- );
+ insert_module(PLUGIN_TYPE_HAL, HAL_PLUGINS_DIR_PATH);
+ insert_module(PLUGIN_TYPE_SENSOR, SENSOR_PLUGINS_DIR_PATH);
show_sensor_info();
return true;
INFO("===============================================\n");
}
-
-bool sensor_plugin_loader::get_paths_from_dir(const string &dir_path, vector<string> &hal_paths, vector<string> &sensor_paths)
-{
- const string PLUGIN_POSTFIX = ".so";
- const string HAL_POSTFIX = "_hal.so";
-
- 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);
-
- if (equal(PLUGIN_POSTFIX.rbegin(), PLUGIN_POSTFIX.rend(), name.rbegin())) {
- if (equal(HAL_POSTFIX.rbegin(), HAL_POSTFIX.rend(), name.rbegin()))
- hal_paths.push_back(dir_path + "/" + name);
- else
- sensor_paths.push_back(dir_path + "/" + name);
- }
- }
-
- closedir(dir);
- return true;
-}
-
-bool sensor_plugin_loader::get_paths_from_config(const string &config_path, vector<string> &hal_paths, vector<string> &sensor_paths)
-{
- xmlDocPtr doc;
- xmlNodePtr cur;
-
- doc = xmlParseFile(config_path.c_str());
-
- if (doc == NULL) {
- ERR("There is no %s\n", config_path.c_str());
- return false;
- }
-
- cur = xmlDocGetRootElement(doc);
-
- if (cur == NULL) {
- ERR("There is no root element in %s\n", config_path.c_str());
- xmlFreeDoc(doc);
- return false;
- }
-
- if (xmlStrcmp(cur->name, (const xmlChar *)ROOT_ELEMENT)) {
- ERR("Wrong type document: there is no [%s] root element in %s\n", ROOT_ELEMENT, config_path.c_str());
- xmlFreeDoc(doc);
- return false;
- }
-
- xmlNodePtr plugin_list_node_ptr;
- xmlNodePtr module_node_ptr;
- char* prop = NULL;
- string path, category;
-
- plugin_list_node_ptr = cur->xmlChildrenNode;
-
- while (plugin_list_node_ptr != NULL) {
- //skip garbage element, [text]
- if (!xmlStrcmp(plugin_list_node_ptr->name, (const xmlChar *)TEXT_ELEMENT)) {
- plugin_list_node_ptr = plugin_list_node_ptr->next;
- continue;
- }
-
- DBG("<%s>\n", (const char*)plugin_list_node_ptr->name);
-
- module_node_ptr = plugin_list_node_ptr->xmlChildrenNode;
- while (module_node_ptr != NULL) {
- if (!xmlStrcmp(module_node_ptr->name, (const xmlChar *)TEXT_ELEMENT)) {
- module_node_ptr = module_node_ptr->next;
- continue;
- }
-
- prop = (char*)xmlGetProp(module_node_ptr, (const xmlChar*)PATH_ATTR);
- path = prop;
- free(prop);
-
- DBG("<%s path=\"%s\">\n", (const char*) module_node_ptr->name, path.c_str());
-
- category = (const char*) plugin_list_node_ptr->name;
-
- if (category == string(HAL_ELEMENT))
- hal_paths.push_back(path);
- else if (category == string(SENSOR_ELEMENT))
- sensor_paths.push_back(path);
-
- DBG("\n");
- module_node_ptr = module_node_ptr->next;
- }
-
- DBG("\n");
- plugin_list_node_ptr = plugin_list_node_ptr->next;
- }
-
- xmlFreeDoc(doc);
-
- return true;
-
-}
-
sensor_hal* sensor_plugin_loader::get_sensor_hal(sensor_hal_type_t type)
{
auto it_plugins = m_sensor_hals.find(type);
bool load_module(const std::string &path, std::vector<void*> &sensors, void* &handle);
bool insert_module(plugin_type type, const std::string &path);
void show_sensor_info(void);
- bool get_paths_from_dir(const std::string &dir_path, std::vector<std::string> &hal_paths, std::vector<std::string> &sensor_paths);
- bool get_paths_from_config(const std::string &config_path, std::vector<std::string> &hal_paths, std::vector<std::string> &sensor_paths);
sensor_hal_plugins m_sensor_hals;
sensor_plugins m_sensors;
+++ /dev/null
-/*
- * 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 <csensor_config.h>
-#include "sensor_logs.h"
-#include <libxml/xmlmemory.h>
-#include <libxml/parser.h>
-#include <sstream>
-#include <iostream>
-#include <fstream>
-#include <string>
-
-using std::ifstream;
-using std::string;
-using std::istringstream;
-
-#define ROOT_ELEMENT "SENSOR"
-#define TEXT_ELEMENT "text"
-#define MODEL_ID_ATTR "id"
-#define DEFAULT_ATTR "value"
-
-csensor_config::csensor_config()
-{
-}
-
-csensor_config& csensor_config::get_instance(void)
-{
- static bool load_done = false;
- static csensor_config inst;
-
- if (!load_done) {
- inst.load_config(SENSOR_CONFIG_FILE_PATH);
- inst.get_device_id();
- if (!inst.m_device_id.empty())
- INFO("Device ID = %s", inst.m_device_id.c_str());
- else
- ERR("Failed to get Device ID");
- load_done = true;
- }
-
- return inst;
-}
-
-bool csensor_config::load_config(const string& config_path)
-{
- xmlDocPtr doc;
- xmlNodePtr cur;
-
- DBG("csensor_config::load_config(\"%s\") is called!\n",config_path.c_str());
-
- doc = xmlParseFile(config_path.c_str());
-
- if (doc == NULL) {
- ERR("There is no %s\n",config_path.c_str());
- return false;
- }
-
- cur = xmlDocGetRootElement(doc);
- if(cur == NULL) {
- ERR("There is no root element in %s\n",config_path.c_str());
- xmlFreeDoc(doc);
- return false;
- }
-
- if(xmlStrcmp(cur->name, (const xmlChar *)ROOT_ELEMENT)) {
- ERR("Wrong type document: there is no [%s] root element in %s\n",ROOT_ELEMENT,config_path.c_str());
- xmlFreeDoc(doc);
- return false;
- }
-
- xmlNodePtr model_list_node_ptr;
- xmlNodePtr model_node_ptr;
- xmlNodePtr element_node_ptr;
- xmlAttrPtr attr_ptr;
- char* prop = NULL;
-
- model_list_node_ptr = cur->xmlChildrenNode;
-
- while (model_list_node_ptr != NULL) {
- //skip garbage element, [text]
- if (!xmlStrcmp(model_list_node_ptr->name,(const xmlChar *)TEXT_ELEMENT)) {
- model_list_node_ptr = model_list_node_ptr->next;
- continue;
- }
-
- //insert Model_list to config map
- m_sensor_config[(const char*)model_list_node_ptr->name];
- DBG("<%s>\n",(const char*)model_list_node_ptr->name);
-
- model_node_ptr = model_list_node_ptr->xmlChildrenNode;
- while (model_node_ptr != NULL){
- //skip garbage element, [text]
- if (!xmlStrcmp(model_node_ptr->name,(const xmlChar *)TEXT_ELEMENT)) {
- model_node_ptr = model_node_ptr->next;
- continue;
- }
-
-
- string model_id;
- prop = (char*)xmlGetProp(model_node_ptr,(const xmlChar*)MODEL_ID_ATTR);
- model_id = prop;
- free(prop);
-
- //insert Model to Model_list
- m_sensor_config[(const char*)model_list_node_ptr->name][model_id];
- DBG("<%s id=\"%s\">\n",(const char*)model_list_node_ptr->name,model_id.c_str());
-
- element_node_ptr = model_node_ptr->xmlChildrenNode;
- while (element_node_ptr != NULL) {
- //skip garbage element, [text]
- if (!xmlStrcmp(element_node_ptr->name,(const xmlChar *)TEXT_ELEMENT)) {
- element_node_ptr = element_node_ptr->next;
- continue;
- }
-
- //insert Element to Model
- m_sensor_config[(const char*)model_list_node_ptr->name][model_id][(const char*)element_node_ptr->name];
- DBG("<%s id=\"%s\"><%s>\n",(const char*)model_list_node_ptr->name,model_id.c_str(),(const char*)element_node_ptr->name);
-
- attr_ptr = element_node_ptr->properties;
- while (attr_ptr != NULL) {
-
- string key,value;
- key = (char*)attr_ptr->name;
- prop = (char*)xmlGetProp(element_node_ptr,attr_ptr->name);
- value = prop;
- free(prop);
-
- //insert attribute to Element
- m_sensor_config[(const char*)model_list_node_ptr->name][model_id][(const char*)element_node_ptr->name][key]=value;
- DBG("<%s id=\"%s\"><%s \"%s\"=\"%s\">\n",(const char*)model_list_node_ptr->name,model_id.c_str(),(const char*)element_node_ptr->name,key.c_str(),value.c_str());
- attr_ptr = attr_ptr->next;
- }
-
-
- element_node_ptr = element_node_ptr->next;
- }
-
- DBG("\n");
- model_node_ptr = model_node_ptr->next;
- }
-
- DBG("\n");
- model_list_node_ptr = model_list_node_ptr->next;
- }
-
- xmlFreeDoc(doc);
- return true;
-}
-
-
-bool csensor_config::get(const string& sensor_type,const string& model_id, const string& element, const string& attr, string& value)
-{
- auto it_model_list = m_sensor_config.find(sensor_type);
-
- if (it_model_list == m_sensor_config.end()) {
- ERR("There is no <%s> element\n",sensor_type.c_str());
- return false;
- }
-
- auto it_model = it_model_list->second.find(model_id);
-
- if (it_model == it_model_list->second.end()) {
- ERR("There is no <%s id=\"%s\"> element\n",sensor_type.c_str(),model_id.c_str());
- return false;
- }
-
- auto it_element = it_model->second.find(element);
-
- if (it_element == it_model->second.end()) {
- DBG("There is no <%s id=\"%s\"><%s> element\n",sensor_type.c_str(),model_id.c_str(),element.c_str());
- return false;
- }
-
- auto it_attr = it_element->second.find(attr);
-
- if (it_attr == it_element->second.end()) {
- DBG("There is no <%s id=\"%s\"><%s \"%s\">\n",sensor_type.c_str(),model_id.c_str(),element.c_str(),attr.c_str());
- return false;
- }
-
- value = it_attr->second;
-
- return true;
-}
-
-bool csensor_config::get(const string& sensor_type, const string& model_id, const string& element, const string& attr, double& value)
-{
- string str_value;
-
- if (get(sensor_type,model_id,element,attr,str_value) == false)
- return false;
-
- istringstream convert(str_value);
-
- if ( !(convert >> value))
- value = 0;
-
- return true;
-}
-
-bool csensor_config::get(const string& sensor_type, const string& model_id, const string& element, const string& attr, long& value)
-{
- string str_value;
-
- if (get(sensor_type,model_id,element,attr,str_value) == false)
- return false;
-
- istringstream convert(str_value);
-
- if ( !(convert >> value))
- value = 0;
-
- return true;
-}
-
-bool csensor_config::get(const string& sensor_type, const string& model_id, const string& element, string& value)
-{
- if (get(sensor_type, model_id, element, m_device_id, value))
- return true;
-
- if (get(sensor_type, model_id, element, DEFAULT_ATTR, value))
- return true;
-
- return false;
-}
-
-bool csensor_config::get(const string& sensor_type, const string& model_id, const string& element, double& value)
-{
- if (get(sensor_type, model_id, element, m_device_id, value))
- return true;
-
- if (get(sensor_type, model_id, element, DEFAULT_ATTR, value))
- return true;
-
- return false;
-}
-
-bool csensor_config::get(const string& sensor_type, const string& model_id, const string& element, long& value)
-{
- if (get(sensor_type, model_id, element, m_device_id, value))
- return true;
-
- if (get(sensor_type, model_id, element, DEFAULT_ATTR, value))
- return true;
-
- return false;
-}
-
-bool csensor_config::is_supported(const string& sensor_type,const string& model_id)
-{
- auto it_model_list = m_sensor_config.find(sensor_type);
-
- if (it_model_list == m_sensor_config.end())
- return false;
-
- auto it_model = it_model_list->second.find(model_id);
-
- if (it_model == it_model_list->second.end())
- return false;
-
- return true;
-}
+++ /dev/null
-/*
- * 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.
- *
- */
-
-#if !defined(_CSENSOR_CONFIG_CLASS_H_)
-#define _CSENSOR_CONFIG_CLASS_H_
-
-#include <cconfig.h>
-
-#define SENSOR_CONFIG_FILE_PATH "/usr/etc/sensors.xml"
-
-typedef std::unordered_map<std::string,std::string> Element;
-/*
-* an Element is a group of attributes
-* <Element value1 = "10.0", value2 = "20.0"/>
-*
-* "value" -> "LSM330DLC"
-*
-*/
-
-typedef std::unordered_map<std::string,Element> Model;
-/*
-* a Model is a group of elements to consist of specific vendor's one sensor configuration
-* <NAME value = "LSM330DLC" />
-* <VENDOR value = "ST Microelectronics"/>
-* <RAW_DATA_UNIT value = "1" />
-* <RESOLUTION value = "12" />
-*
-* <NAME> -> <value = "LSM330DLC"/>
-*
-*/
-
-typedef std::unordered_map<std::string,Model> Model_list;
-/*
-* a Model_list is a group of Model
-* <MODEL id = "lsm330dlc_accel">
-* </MODEL>
-* <MODEL id = "mpu6500">
-* </MODEL>
-*
-* "lsm330dlc_accel" -> <Model>
-*
-*/
-
-typedef std::unordered_map<std::string,Model_list> Sensor_config;
-/*
-* a SensorConfig represents sensors.xml
-* <ACCEL/>
-* <GYRO/>
-* <PROXIMITY/>
-*
-* "ACCEL" -> Model_list
-*
-*/
-
-class csensor_config : public cconfig
-{
-private:
- csensor_config();
- csensor_config(csensor_config const&) {};
- csensor_config& operator=(csensor_config const&);
-
- bool load_config(const std::string& config_path);
-
- Sensor_config m_sensor_config;
-public:
- static csensor_config& get_instance(void);
-
- bool get(const std::string& sensor_type, const std::string& model_id, const std::string& element, const std::string& attr, std::string& value);
- bool get(const std::string& sensor_type, const std::string& model_id, const std::string& element, const std::string& attr, double& value);
- bool get(const std::string& sensor_type, const std::string& model_id, const std::string& element, const std::string& attr, long& value);
-
- bool get(const std::string& sensor_type, const std::string& model_id, const std::string& element, std::string& value);
- bool get(const std::string& sensor_type, const std::string& model_id, const std::string& element, double& value);
- bool get(const std::string& sensor_type, const std::string& model_id, const std::string& element, long& value);
-
- bool is_supported(const std::string &sensor_type, const std::string &model_id);
-};
-
-#endif
SET(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} ${EXTRA_CFLAGS}")
-link_directories(../src/client/)
+link_directories(${CMAKE_SOURCE_DIR}/src/client/)
add_executable(api-test src/api-test.c)
add_executable(sensor-test src/sensor-test.c src/check-sensor.c)