From 8f064fefbbd1c0959ea897655321de597c39b2b8 Mon Sep 17 00:00:00 2001 From: Ankur Date: Thu, 10 Sep 2015 11:16:52 +0530 Subject: [PATCH 01/16] Removing compilation error for aarch64 signed-off-by:"Ankur Garg " Change-Id: I3bd2c71f42ccb0e3a37c8c519562d25e8b339b2d --- src/auto_rotation/auto_rotation_sensor.cpp | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/auto_rotation/auto_rotation_sensor.cpp b/src/auto_rotation/auto_rotation_sensor.cpp index 1b1954b..9c0e367 100755 --- a/src/auto_rotation/auto_rotation_sensor.cpp +++ b/src/auto_rotation/auto_rotation_sensor.cpp @@ -145,7 +145,7 @@ bool auto_rotation_sensor::on_start(void) m_alg->start(); m_accel_sensor->add_client(ACCELEROMETER_RAW_DATA_EVENT); - m_accel_sensor->add_interval((int)this , (m_interval/MS_TO_US), true); + m_accel_sensor->add_interval((intptr_t)this , (m_interval/MS_TO_US), true); m_accel_sensor->start(); return activate(); @@ -154,7 +154,7 @@ bool auto_rotation_sensor::on_start(void) bool auto_rotation_sensor::on_stop(void) { m_accel_sensor->delete_client(ACCELEROMETER_RAW_DATA_EVENT); - m_accel_sensor->delete_interval((int)this , true); + m_accel_sensor->delete_interval((intptr_t)this , true); m_accel_sensor->stop(); return deactivate(); -- 2.7.4 From c17186d6f0a3d28e735fe36bb91c5e5fd777cafc Mon Sep 17 00:00:00 2001 From: Ankur Date: Thu, 10 Sep 2015 11:56:24 +0530 Subject: [PATCH 02/16] Correcting the polling function get_sensor_data error for rotation_vector signed-off-by:"Ankur Garg " Change-Id: Ieed8021b878a8b6cd91e2de51dd4c0f1fffb44fe --- src/rotation_vector/rv/rv_sensor.cpp | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/src/rotation_vector/rv/rv_sensor.cpp b/src/rotation_vector/rv/rv_sensor.cpp index 5114cdc..bcf20e2 100755 --- a/src/rotation_vector/rv/rv_sensor.cpp +++ b/src/rotation_vector/rv/rv_sensor.cpp @@ -241,10 +241,10 @@ int rv_sensor::get_sensor_data(unsigned int event_type, sensor_data_t &data) data.accuracy = SENSOR_ACCURACY_GOOD; data.timestamp = get_timestamp(); data.value_count = 4; - data.values[0] = data.values[1]; - data.values[1] = data.values[2]; - data.values[2] = data.values[3]; - data.values[3] = data.values[0]; + data.values[0] = fusion_data.values[1]; + data.values[1] = fusion_data.values[2]; + data.values[2] = fusion_data.values[3]; + data.values[3] = fusion_data.values[0]; return 0; } -- 2.7.4 From aa442a1afb5ce32d39451c23b15c7acb89a9559a Mon Sep 17 00:00:00 2001 From: Adarsh Shree Ram Date: Mon, 7 Sep 2015 17:02:49 +0530 Subject: [PATCH 03/16] Adding test case for single process multi-threaded client application multi-threaded test case to test the performance of the sensors running in parallel for a specific time interval. Change-Id: I2a47ef879a5bb6ebdbea85e164ce18341516b708 --- packaging/sensord.spec | 3 +- test/CMakeLists.txt | 12 ++- test/src/check-sensor.c | 26 ++--- test/src/check-sensor.h | 8 +- ...nce-test.c => multi-process-performance-test.c} | 7 +- test/src/multi-thread-performance-test.c | 119 +++++++++++++++++++++ test/src/sensor-test.c | 10 +- 7 files changed, 164 insertions(+), 21 deletions(-) rename test/src/{performance-test.c => multi-process-performance-test.c} (94%) create mode 100644 test/src/multi-thread-performance-test.c diff --git a/packaging/sensord.spec b/packaging/sensord.spec index 040aeb0..1287566 100755 --- a/packaging/sensord.spec +++ b/packaging/sensord.spec @@ -147,7 +147,8 @@ systemctl daemon-reload %defattr(-,root,root,-) %{_bindir}/api-test %{_bindir}/sensor-test -%{_bindir}/performance-test +%{_bindir}/multi-thread-performance-test +%{_bindir}/multi-process-performance-test %{_bindir}/fusion-data-collection %license LICENSE.APLv2 %endif diff --git a/test/CMakeLists.txt b/test/CMakeLists.txt index 81213f1..a59c341 100644 --- a/test/CMakeLists.txt +++ b/test/CMakeLists.txt @@ -27,20 +27,24 @@ link_directories(../src/libsensord/) add_executable(api-test src/api-test.c) add_executable(sensor-test src/sensor-test.c src/check-sensor.c) -add_executable(performance-test src/performance-test.c src/check-sensor.c) +add_executable(multi-process-performance-test src/multi-process-performance-test.c src/check-sensor.c) add_executable(fusion-data-collection src/fusion-data-collection.c) +add_executable(multi-thread-performance-test src/multi-thread-performance-test.c src/check-sensor.c) SET_TARGET_PROPERTIES(api-test PROPERTIES LINKER_LANGUAGE C) SET_TARGET_PROPERTIES(sensor-test PROPERTIES LINKER_LANGUAGE C) -SET_TARGET_PROPERTIES(performance-test PROPERTIES LINKER_LANGUAGE C) +SET_TARGET_PROPERTIES(multi-process-performance-test PROPERTIES LINKER_LANGUAGE C) SET_TARGET_PROPERTIES(fusion-data-collection PROPERTIES LINKER_LANGUAGE C) +SET_TARGET_PROPERTIES(multi-thread-performance-test PROPERTIES LINKER_LANGUAGE C) target_link_libraries(api-test glib-2.0 dlog sensor) target_link_libraries(sensor-test glib-2.0 dlog sensor) -target_link_libraries(performance-test glib-2.0 dlog sensor) +target_link_libraries(multi-process-performance-test glib-2.0 dlog sensor) target_link_libraries(fusion-data-collection glib-2.0 dlog sensor) +target_link_libraries(multi-thread-performance-test glib-2.0 dlog sensor) INSTALL(TARGETS api-test DESTINATION /usr/bin/) INSTALL(TARGETS sensor-test DESTINATION /usr/bin/) -INSTALL(TARGETS performance-test DESTINATION /usr/bin/) +INSTALL(TARGETS multi-process-performance-test DESTINATION /usr/bin/) INSTALL(TARGETS fusion-data-collection DESTINATION /usr/bin/) +INSTALL(TARGETS multi-thread-performance-test DESTINATION /usr/bin/) diff --git a/test/src/check-sensor.c b/test/src/check-sensor.c index bcaf5be..5fcff08 100644 --- a/test/src/check-sensor.c +++ b/test/src/check-sensor.c @@ -28,7 +28,7 @@ #include "check-sensor.h" -static GMainLoop *mainloop; + void printpollinglogs(sensor_type_t type,sensor_data_t data) { @@ -237,51 +237,53 @@ void callback(sensor_t sensor, unsigned int event_type, sensor_data_t *data, voi } } -int check_sensor(sensor_type_t sensor_type, unsigned int event, int interval) +void *check_sensor(void *arg) { + struct pthread_arguments * argu = (struct pthread_arguments *) arg; + + GMainLoop *mainloop; int handle, result, start_handle, stop_handle; mainloop = g_main_loop_new(NULL, FALSE); - sensor_t sensor = sensord_get_sensor(sensor_type); + sensor_t sensor = sensord_get_sensor(argu -> sensor_type); handle = sensord_connect(sensor); - result = sensord_register_event(handle, event, interval, 0, callback, NULL); + result = sensord_register_event(handle, argu->event, argu->interval, 0, callback, NULL); if (result < 0) { printf("Can't register sensor\n"); - return -1; + return NULL; } start_handle = sensord_start(handle, 0); if (start_handle < 0) { printf("Error\n\n\n\n"); - sensord_unregister_event(handle, event); + sensord_unregister_event(handle, argu->event); sensord_disconnect(handle); - return -1; + return NULL; } g_main_loop_run(mainloop); g_main_loop_unref(mainloop); - result = sensord_unregister_event(handle, event); + result = sensord_unregister_event(handle, argu->event); if (result < 0) { printf("Error\n\n"); - return -1; + return NULL; } stop_handle = sensord_stop(handle); if (stop_handle < 0) { printf("Error\n\n"); - return -1; + return NULL; } sensord_disconnect(handle); - - return 0; + return NULL; } int polling_sensor(sensor_type_t sensor_type, unsigned int event) diff --git a/test/src/check-sensor.h b/test/src/check-sensor.h index 86b407b..a53602a 100644 --- a/test/src/check-sensor.h +++ b/test/src/check-sensor.h @@ -23,8 +23,14 @@ int get_event(sensor_type_t sensor_type, char str[]); void callback(sensor_t sensor, unsigned int event_type, sensor_data_t *data, void *user_data); -int check_sensor(sensor_type_t sensor_type, unsigned int event, int interval); +void *check_sensor(void *arg); void printpollinglogs(sensor_type_t type, sensor_data_t data); int polling_sensor(sensor_type_t sensor_type, unsigned int event); +struct pthread_arguments +{ + sensor_type_t sensor_type; + unsigned int event; + int interval; +}; #endif diff --git a/test/src/performance-test.c b/test/src/multi-process-performance-test.c similarity index 94% rename from test/src/performance-test.c rename to test/src/multi-process-performance-test.c index 207b6fc..82fc74f 100644 --- a/test/src/performance-test.c +++ b/test/src/multi-process-performance-test.c @@ -92,7 +92,12 @@ int main(int argc, char** argv) if (i < MAX) { // call the sensord test tc-common for a sensor. int event = (sensor[i] << 16) | 0x0001; - check_sensor(sensor[i], event, interval); + struct pthread_arguments arg; + arg.sensor_type = sensor[i]; + arg.event = event; + arg.interval = interval; + + check_sensor((void*)&arg); } else { // Main Parent Child. Waits for TIMEOUT and then kills all child processes. diff --git a/test/src/multi-thread-performance-test.c b/test/src/multi-thread-performance-test.c new file mode 100644 index 0000000..009b1cf --- /dev/null +++ b/test/src/multi-thread-performance-test.c @@ -0,0 +1,119 @@ +/* + * sensord + * + * 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. + * + */ +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include "check-sensor.h" + + +void usage() +{ + printf("Usage : ./multi-sensor (optional)\n\n"); + printf("TIMEOUT:\n"); + printf("time for which the parallel sensor test cases should run\n"); + + printf("interval:\n"); + printf("The time interval should be entered based on the sampling frequency supported by accelerometer driver on the device in ms.\n"); + printf("If no value for sensor is entered default value by the driver will be used.\n"); + printf("arg[i].sensor_type: "); + printf("[accelerometer] "); + printf("[auto_rotation]\n"); + printf("[gyroscope] "); + printf("[pressure] "); + printf("[temperature] "); + printf("[geomagnetic] "); + printf("[orientation] "); + printf("[tilt] "); + printf("[gravity] "); + printf("[linear_accel] "); + printf("[rotation_vector] "); + printf("[geomagnetic_rv] "); + printf("[gaming_rv] "); + printf("[ultraviolet] "); + printf("[light]\n"); + printf("[uncal_gyro]"); + +} + +int main(int argc, char **argv) +{ + + int i = 0; + int interval = DEFAULT_EVENT_INTERVAL; + int TIMEOUT = 10; //in seconds for which all the sensor tests should run + + if(argc < 2) { + usage(); + return -1; + } + else if(argc == 2){ + TIMEOUT = atoi(argv[1]); + if (TIMEOUT == 0) { + usage(); + return -1; + } + } + else { + TIMEOUT = atoi(argv[1]); + interval = atoi(argv[2]); + if (TIMEOUT == 0 || interval == 0) { + usage(); + return -1; + } + } + + + int MAX = 6, j = 0, k = 0; + struct pthread_arguments arg[MAX]; + int t = 0; + + arg[0].sensor_type = ACCELEROMETER_SENSOR; + arg[0].event = ACCELEROMETER_RAW_DATA_EVENT; + arg[1].sensor_type = GYROSCOPE_SENSOR; + arg[1].event = GYROSCOPE_RAW_DATA_EVENT; + arg[2].sensor_type = GEOMAGNETIC_RV_SENSOR; + arg[2].event = GEOMAGNETIC_RV_RAW_DATA_EVENT; + arg[3].sensor_type = PRESSURE_SENSOR; + arg[3].event = PRESSURE_RAW_DATA_EVENT; + arg[4].sensor_type = PROXIMITY_SENSOR; + arg[4].event = PROXIMITY_CHANGE_STATE_EVENT; + arg[5].sensor_type = LIGHT_SENSOR; + arg[5].event = LIGHT_LUX_DATA_EVENT; + + for(t = 0; t < MAX; t++) + { + arg[t].interval = interval; + } + + pthread_t thread_id[MAX]; + + for(j = 0; j < MAX; j++) + { + pthread_create(&thread_id[j], NULL, check_sensor, (void*)&arg[j]); + } + + sleep(TIMEOUT); + return 0; +} diff --git a/test/src/sensor-test.c b/test/src/sensor-test.c index 610bd0b..d9ddcff 100644 --- a/test/src/sensor-test.c +++ b/test/src/sensor-test.c @@ -73,7 +73,7 @@ int main(int argc, char **argv) if (argc < 2 || argc > 5) { printf("Wrong number of arguments\n"); usage(); - return 0; + return -1; } if (strcmp(argv[1], "accelerometer") == 0) { @@ -209,6 +209,12 @@ int main(int argc, char **argv) return -1; } } - return check_sensor(sensor_type, event, interval); + struct pthread_arguments arg; + arg.sensor_type = sensor_type; + arg.event = event; + arg.interval = interval; + + return check_sensor((void*)&arg); + } } -- 2.7.4 From 2f8549c5a390bb071e3b3fa9a9cceb6fc1429bfc Mon Sep 17 00:00:00 2001 From: Mu-Woong Date: Thu, 15 Oct 2015 14:38:12 +0900 Subject: [PATCH 04/16] Replace Security-server with Cynara Change-Id: If00a9d7d3d87a2f7b01c33e8d2b0986a69a19e82 Signed-off-by: Mu-Woong --- packaging/sensord.spec | 3 ++ src/server/CMakeLists.txt | 2 +- src/server/permission_checker.cpp | 89 +++++++++++++++++++++++---------------- src/server/permission_checker.h | 18 +++----- 4 files changed, 62 insertions(+), 50 deletions(-) diff --git a/packaging/sensord.spec b/packaging/sensord.spec index 1287566..d1a34e3 100755 --- a/packaging/sensord.spec +++ b/packaging/sensord.spec @@ -16,6 +16,9 @@ BuildRequires: pkgconfig(glib-2.0) BuildRequires: pkgconfig(vconf) BuildRequires: pkgconfig(libsystemd-daemon) BuildRequires: pkgconfig(capi-system-info) +BuildRequires: pkgconfig(cynara-creds-socket) +BuildRequires: pkgconfig(cynara-client) +BuildRequires: pkgconfig(cynara-session) %define accel_state ON %define auto_rotation_state ON diff --git a/src/server/CMakeLists.txt b/src/server/CMakeLists.txt index 10f737d..bb7a221 100755 --- a/src/server/CMakeLists.txt +++ b/src/server/CMakeLists.txt @@ -2,7 +2,7 @@ cmake_minimum_required(VERSION 2.6) project(sensord CXX) INCLUDE(FindPkgConfig) -PKG_CHECK_MODULES(server_pkgs REQUIRED glib-2.0 gio-2.0 dlog libsystemd-daemon) +PKG_CHECK_MODULES(server_pkgs REQUIRED glib-2.0 gio-2.0 dlog libsystemd-daemon cynara-client cynara-creds-socket cynara-session) FOREACH(flag ${server_pkgs_LDFLAGS}) SET(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} ${flag}") diff --git a/src/server/permission_checker.cpp b/src/server/permission_checker.cpp index ad05b02..f4fff18 100755 --- a/src/server/permission_checker.cpp +++ b/src/server/permission_checker.cpp @@ -17,27 +17,57 @@ * */ +#include +#include +#include #include #include #include #include #include -#include -#define SECURITY_LIB "/usr/lib/libsecurity-server-client.so.1" +static cynara *cynara_env = NULL; + +static bool check_privilege_by_sockfd(int sock_fd, const char *priv) +{ + retvm_if(cynara_env == NULL, false, "Cynara not initialized"); + + int ret; + int pid = -1; + char *client = NULL; + char *session = NULL; + char *user = NULL; + + retvm_if(cynara_creds_socket_get_pid(sock_fd, &pid) != CYNARA_API_SUCCESS, false, "Getting PID failed"); + + if (cynara_creds_socket_get_client(sock_fd, CLIENT_METHOD_DEFAULT, &client) != CYNARA_API_SUCCESS || + cynara_creds_socket_get_user(sock_fd, USER_METHOD_DEFAULT, &user) != CYNARA_API_SUCCESS || + (session = cynara_session_from_pid(pid)) == NULL) { + ERR("Getting client info failed"); + free(client); + free(user); + free(session); + return false; + } + + ret = cynara_check(cynara_env, client, session, user, priv); + + free(client); + free(session); + free(user); + + return (ret == CYNARA_API_ACCESS_ALLOWED); +} permission_checker::permission_checker() -: m_security_server_check_privilege_by_sockfd(NULL) -, m_security_handle(NULL) -, m_permission_set(0) +: m_permission_set(0) { init(); } permission_checker::~permission_checker() { - if (m_security_handle) - dlclose(m_security_handle); + deinit(); } permission_checker& permission_checker::get_instance() @@ -46,33 +76,10 @@ permission_checker& permission_checker::get_instance() return inst; } -bool permission_checker::init_security_lib(void) -{ - m_security_handle = dlopen(SECURITY_LIB, RTLD_LAZY); - - if (!m_security_handle) { - ERR("dlopen(%s) error, cause: %s", SECURITY_LIB, dlerror()); - return false; - } - - m_security_server_check_privilege_by_sockfd = - (security_server_check_privilege_by_sockfd_t) dlsym(m_security_handle, "security_server_check_privilege_by_sockfd"); - - if (!m_security_server_check_privilege_by_sockfd) { - ERR("Failed to load symbol"); - dlclose(m_security_handle); - m_security_handle = NULL; - return false; - } - - return true; - -} - void permission_checker::init() { - m_permission_infos.push_back(std::make_shared (SENSOR_PERMISSION_STANDARD, false, "", "")); - m_permission_infos.push_back(std::make_shared (SENSOR_PERMISSION_BIO, true, "sensord::bio", "rw")); + m_permission_infos.push_back(std::make_shared (SENSOR_PERMISSION_STANDARD, false, "")); + m_permission_infos.push_back(std::make_shared (SENSOR_PERMISSION_BIO, true, "http://tizen.org/privilege/healthinfo")); vector sensors; sensors = sensor_plugin_loader::get_instance().get_sensors(ALL_SENSOR); @@ -82,8 +89,18 @@ void permission_checker::init() INFO("Permission Set = %d", m_permission_set); - if (!init_security_lib()) - ERR("Failed to init security lib: %s", SECURITY_LIB); + if (cynara_initialize(&cynara_env, NULL) != CYNARA_API_SUCCESS) { + cynara_env = NULL; + ERR("Cynara initialization failed"); + } +} + +void permission_checker::deinit() +{ + if (cynara_env) + cynara_finish(cynara_env); + + cynara_env = NULL; } int permission_checker::get_permission(int sock_fd) @@ -93,8 +110,8 @@ int permission_checker::get_permission(int sock_fd) for (unsigned int i = 0; i < m_permission_infos.size(); ++i) { if (!m_permission_infos[i]->need_to_check) { permission |= m_permission_infos[i]->permission; - } else if ((m_permission_set & m_permission_infos[i]->permission) && m_security_server_check_privilege_by_sockfd) { - if (m_security_server_check_privilege_by_sockfd(sock_fd, m_permission_infos[i]->name.c_str(), m_permission_infos[i]->access_right.c_str()) == 1) { + } else if (m_permission_set & m_permission_infos[i]->permission) { + if (check_privilege_by_sockfd(sock_fd, m_permission_infos[i]->privilege.c_str())) { permission |= m_permission_infos[i]->permission; } } diff --git a/src/server/permission_checker.h b/src/server/permission_checker.h index ad94708..8acc6ac 100755 --- a/src/server/permission_checker.h +++ b/src/server/permission_checker.h @@ -28,38 +28,30 @@ class permission_checker { private: class permission_info { public: - permission_info(int _permission, bool _need_to_check, std::string _name, std::string _access_right) + permission_info(int _permission, bool _need_to_check, std::string _priv) : permission(_permission) , need_to_check(_need_to_check) - , name(_name) - , access_right(_access_right) + , privilege(_priv) { } int permission; bool need_to_check; - std::string name; - std::string access_right; + std::string privilege; }; typedef std::vector> permission_info_vector; - typedef int (*security_server_check_privilege_by_sockfd_t)(int sockfd, - const char *object, - const char *access_rights); - permission_checker(); ~permission_checker(); permission_checker(permission_checker const&) {}; permission_checker& operator=(permission_checker const&); - bool init_security_lib(void); void init(); - - security_server_check_privilege_by_sockfd_t m_security_server_check_privilege_by_sockfd; - void *m_security_handle; + void deinit(); permission_info_vector m_permission_infos; int m_permission_set; + public: static permission_checker& get_instance(); -- 2.7.4 From c9d34f004ecc08816e99259e4b0948497e3cda2e Mon Sep 17 00:00:00 2001 From: "Hongkuk, Son" Date: Sun, 18 Oct 2015 14:06:03 +0900 Subject: [PATCH 05/16] sensord: sync with SPIN tizen_2.4 Signed-off-by: Hongkuk, Son Change-Id: I6c2150a15109a0ab80c3e642828a2786f137690f --- src/accel/accel_sensor.cpp | 10 +- src/accel/accel_sensor.h | 6 +- src/accel/accel_sensor_hal.cpp | 5 +- src/accel/accel_sensor_hal.h | 19 ++- src/auto_rotation/auto_rotation_sensor.cpp | 8 +- src/auto_rotation/auto_rotation_sensor.h | 11 +- src/bio_led_red/bio_led_red_sensor.cpp | 10 +- src/bio_led_red/bio_led_red_sensor.h | 4 +- src/bio_led_red/bio_led_red_sensor_hal.cpp | 5 +- src/bio_led_red/bio_led_red_sensor_hal.h | 19 ++- src/fusion/fusion_sensor.cpp | 9 +- src/fusion/fusion_sensor.h | 8 +- src/fusion/hardware_fusion_sensor.html | 4 +- src/geo/geo_sensor.cpp | 13 +- src/geo/geo_sensor.h | 4 +- src/geo/geo_sensor_hal.cpp | 6 +- src/geo/geo_sensor_hal.h | 19 ++- src/gravity/gravity_sensor.cpp | 11 +- src/gravity/gravity_sensor.h | 12 +- src/gyro/gyro_sensor.cpp | 11 +- src/gyro/gyro_sensor.h | 4 +- src/gyro/gyro_sensor_hal.cpp | 5 +- src/gyro/gyro_sensor_hal.h | 19 ++- src/libsensord/client.cpp | 96 ++++++++++----- src/libsensord/client_common.cpp | 2 - src/libsensord/command_channel.cpp | 36 +++--- src/libsensord/command_channel.h | 7 +- src/libsensord/creg_event_info.h | 2 + src/libsensord/csensor_event_listener.cpp | 61 +++++---- src/libsensord/csensor_event_listener.h | 35 ++---- src/libsensord/csensor_handle_info.cpp | 32 +++-- src/libsensord/csensor_handle_info.h | 11 +- src/libsensord/poller.h | 4 +- src/libsensord/sensor_info_manager.cpp | 2 + src/libsensord/sensor_info_manager.h | 12 +- src/libsensord/sensor_internal.h | 7 +- src/libsensord/sensor_proxi.h | 2 +- src/light/light_sensor.cpp | 12 +- src/light/light_sensor.h | 5 +- src/light/light_sensor_hal.cpp | 5 +- src/light/light_sensor_hal.h | 19 ++- src/linear_accel/linear_accel_sensor.cpp | 13 +- src/linear_accel/linear_accel_sensor.h | 12 +- src/orientation/orientation_sensor.cpp | 11 +- src/orientation/orientation_sensor.h | 10 +- src/pressure/pressure_sensor.cpp | 10 +- src/pressure/pressure_sensor.h | 4 +- src/pressure/pressure_sensor_hal.cpp | 5 +- src/pressure/pressure_sensor_hal.h | 19 ++- src/proxi/proxi_sensor.cpp | 11 +- src/proxi/proxi_sensor.h | 4 +- src/proxi/proxi_sensor_hal.cpp | 5 +- src/proxi/proxi_sensor_hal.h | 17 ++- src/rotation_vector/gaming_rv/gaming_rv_sensor.cpp | 11 +- src/rotation_vector/gaming_rv/gaming_rv_sensor.h | 10 +- .../geomagnetic_rv/geomagnetic_rv_sensor.cpp | 11 +- .../geomagnetic_rv/geomagnetic_rv_sensor.h | 10 +- src/rotation_vector/rv/rv_sensor.cpp | 11 +- src/rotation_vector/rv/rv_sensor.h | 10 +- src/rotation_vector/rv_raw/rv_raw_sensor.cpp | 11 +- src/rotation_vector/rv_raw/rv_raw_sensor.h | 4 +- src/rotation_vector/rv_raw/rv_raw_sensor_hal.cpp | 5 +- src/rotation_vector/rv_raw/rv_raw_sensor_hal.h | 19 ++- src/server/command_worker.cpp | 137 ++++++++++++--------- src/server/command_worker.h | 11 +- src/server/main.cpp | 5 +- src/server/permission_checker.cpp | 2 +- src/shared/CMakeLists.txt | 2 + src/shared/batch_info_list.cpp | 90 ++++++++++++++ src/shared/batch_info_list.h | 45 +++++++ src/shared/cclient_info_manager.cpp | 37 +++--- src/shared/cclient_info_manager.h | 12 +- src/shared/cclient_sensor_record.cpp | 48 ++++---- src/shared/cclient_sensor_record.h | 13 +- src/shared/cconfig.cpp | 3 + src/shared/cconfig.h | 8 +- src/shared/cinterval_info_list.h | 5 +- src/shared/common.cpp | 17 +++ src/shared/csensor_config.cpp | 3 + src/shared/csensor_config.h | 24 ++-- src/shared/csensor_event_dispatcher.cpp | 3 + src/shared/csensor_event_dispatcher.h | 6 +- src/shared/csensor_event_queue.cpp | 20 +-- src/shared/csensor_event_queue.h | 37 +++--- src/shared/csensor_usage.cpp | 1 + src/shared/csensor_usage.h | 4 +- src/shared/csocket.cpp | 10 +- src/shared/csocket.h | 8 +- src/shared/cvirtual_sensor_config.h | 24 ++-- src/shared/iio_common.h | 8 +- src/shared/physical_sensor.cpp | 16 ++- src/shared/physical_sensor.h | 6 +- src/shared/sensor_base.cpp | 58 ++++++--- src/shared/sensor_base.h | 38 +++--- src/shared/sensor_hal.cpp | 8 +- src/shared/sensor_hal.h | 78 ++++++++---- src/shared/sensor_info.cpp | 5 + src/shared/sensor_info.h | 23 ++-- src/shared/sensor_plugin_loader.cpp | 81 +++++------- src/shared/sensor_plugin_loader.h | 32 ++--- src/shared/sf_common.h | 21 ++-- src/shared/virtual_sensor.h | 2 +- src/shared/worker_thread.h | 13 +- src/temperature/temperature_sensor.cpp | 11 +- src/temperature/temperature_sensor.h | 4 +- src/temperature/temperature_sensor_hal.cpp | 6 +- src/temperature/temperature_sensor_hal.h | 19 ++- src/tilt/tilt_sensor.cpp | 9 +- src/tilt/tilt_sensor.h | 11 +- src/ultraviolet/ultraviolet_sensor.cpp | 10 +- src/ultraviolet/ultraviolet_sensor.h | 4 +- src/ultraviolet/ultraviolet_sensor_hal.cpp | 5 +- src/ultraviolet/ultraviolet_sensor_hal.h | 19 ++- src/uncal_gyro/uncal_gyro_sensor.cpp | 11 +- src/uncal_gyro/uncal_gyro_sensor.h | 8 +- systemd/sensord.socket | 2 +- test/src/api-test.c | 20 +++ test/src/check-sensor.c | 2 + test/src/fusion-data-collection.c | 2 +- test/src/multi-process-performance-test.c | 3 +- test/src/sensor-test.c | 1 + 121 files changed, 1095 insertions(+), 811 deletions(-) mode change 100644 => 100755 src/fusion/hardware_fusion_sensor.html mode change 100755 => 100644 src/libsensord/client.cpp mode change 100755 => 100644 src/libsensord/command_channel.cpp mode change 100755 => 100644 src/libsensord/command_channel.h mode change 100755 => 100644 src/libsensord/creg_event_info.h mode change 100755 => 100644 src/libsensord/csensor_event_listener.cpp mode change 100755 => 100644 src/libsensord/csensor_event_listener.h mode change 100755 => 100644 src/libsensord/csensor_handle_info.cpp mode change 100755 => 100644 src/libsensord/csensor_handle_info.h mode change 100755 => 100644 src/libsensord/sensor_internal.h mode change 100755 => 100644 src/server/command_worker.cpp mode change 100755 => 100644 src/server/command_worker.h mode change 100755 => 100644 src/shared/CMakeLists.txt create mode 100644 src/shared/batch_info_list.cpp create mode 100644 src/shared/batch_info_list.h mode change 100755 => 100644 src/shared/cclient_info_manager.cpp mode change 100755 => 100644 src/shared/cclient_info_manager.h mode change 100755 => 100644 src/shared/cclient_sensor_record.cpp mode change 100755 => 100644 src/shared/cclient_sensor_record.h mode change 100755 => 100644 src/shared/common.cpp mode change 100755 => 100644 src/shared/csensor_event_queue.cpp mode change 100755 => 100644 src/shared/csensor_event_queue.h mode change 100755 => 100644 src/shared/csensor_usage.cpp mode change 100755 => 100644 src/shared/csensor_usage.h mode change 100755 => 100644 src/shared/csocket.cpp mode change 100755 => 100644 src/shared/csocket.h mode change 100755 => 100644 src/shared/physical_sensor.cpp mode change 100755 => 100644 src/shared/physical_sensor.h mode change 100755 => 100644 src/shared/sf_common.h mode change 100644 => 100755 src/uncal_gyro/uncal_gyro_sensor.cpp mode change 100644 => 100755 src/uncal_gyro/uncal_gyro_sensor.h mode change 100644 => 100755 systemd/sensord.socket mode change 100644 => 100755 test/src/api-test.c mode change 100644 => 100755 test/src/check-sensor.c mode change 100644 => 100755 test/src/fusion-data-collection.c mode change 100644 => 100755 test/src/multi-process-performance-test.c mode change 100644 => 100755 test/src/sensor-test.c diff --git a/src/accel/accel_sensor.cpp b/src/accel/accel_sensor.cpp index 1dc28ff..0db4c12 100755 --- a/src/accel/accel_sensor.cpp +++ b/src/accel/accel_sensor.cpp @@ -26,6 +26,8 @@ using std::bind1st; using std::mem_fun; +using std::string; +using std::vector; #define GRAVITY 9.80665 #define G_TO_MG 1000 @@ -59,7 +61,7 @@ accel_sensor::~accel_sensor() bool accel_sensor::init() { - m_sensor_hal = sensor_plugin_loader::get_instance().get_sensor_hal(ACCELEROMETER_SENSOR); + m_sensor_hal = sensor_plugin_loader::get_instance().get_sensor_hal(SENSOR_HAL_TYPE_ACCELEROMETER); if (!m_sensor_hal) { ERR("cannot load sensor_hal[%s]", sensor_base::get_name()); @@ -81,9 +83,9 @@ bool accel_sensor::init() return true; } -sensor_type_t accel_sensor::get_type(void) +void accel_sensor::get_types(vector &types) { - return ACCELEROMETER_SENSOR; + types.push_back(ACCELEROMETER_SENSOR); } bool accel_sensor::working(void *inst) @@ -140,7 +142,7 @@ bool accel_sensor::on_stop(void) return stop_poll(); } -bool accel_sensor::get_properties(sensor_properties_s &properties) +bool accel_sensor::get_properties(sensor_type_t sensor_type, sensor_properties_s &properties) { return m_sensor_hal->get_properties(properties); } diff --git a/src/accel/accel_sensor.h b/src/accel/accel_sensor.h index fec8d69..a873538 100755 --- a/src/accel/accel_sensor.h +++ b/src/accel/accel_sensor.h @@ -31,12 +31,13 @@ public: virtual ~accel_sensor(); bool init(); - virtual sensor_type_t get_type(void); + virtual void get_types(std::vector &types); static bool working(void *inst); virtual bool set_interval(unsigned long interval); - virtual bool get_properties(sensor_properties_s &properties); virtual int get_sensor_data(unsigned int type, sensor_data_t &data); + virtual bool get_properties(sensor_type_t sensor_type, sensor_properties_s &properties); + private: sensor_hal *m_sensor_hal; cmutex m_value_mutex; @@ -47,7 +48,6 @@ private: virtual bool on_start(void); virtual bool on_stop(void); - void raw_to_base(sensor_data_t &data); bool process_event(void); }; diff --git a/src/accel/accel_sensor_hal.cpp b/src/accel/accel_sensor_hal.cpp index 3f4bfba..ac709a5 100755 --- a/src/accel/accel_sensor_hal.cpp +++ b/src/accel/accel_sensor_hal.cpp @@ -24,6 +24,7 @@ #include using std::ifstream; +using std::string; #define GRAVITY 9.80665 #define G_TO_MG 1000 @@ -157,9 +158,9 @@ string accel_sensor_hal::get_model_id(void) return m_model_id; } -sensor_type_t accel_sensor_hal::get_type(void) +sensor_hal_type_t accel_sensor_hal::get_type(void) { - return ACCELEROMETER_SENSOR; + return SENSOR_HAL_TYPE_ACCELEROMETER; } bool accel_sensor_hal::enable(void) diff --git a/src/accel/accel_sensor_hal.h b/src/accel/accel_sensor_hal.h index 5782368..f16d94c 100755 --- a/src/accel/accel_sensor_hal.h +++ b/src/accel/accel_sensor_hal.h @@ -21,18 +21,15 @@ #define _ACCEL_SENSOR_HAL_H_ #include -#include #include -using std::string; - class accel_sensor_hal : public sensor_hal { public: accel_sensor_hal(); virtual ~accel_sensor_hal(); - string get_model_id(void); - sensor_type_t get_type(void); + std::string get_model_id(void); + sensor_hal_type_t get_type(void); bool enable(void); bool disable(void); bool set_interval(unsigned long val); @@ -48,17 +45,17 @@ private: unsigned long m_polling_interval; unsigned long long m_fired_time; - string m_model_id; - string m_vendor; - string m_chip_name; + std::string m_model_id; + std::string m_vendor; + std::string m_chip_name; int m_resolution; float m_raw_data_unit; int m_method; - string m_data_node; - string m_enable_node; - string m_interval_node; + std::string m_data_node; + std::string m_enable_node; + std::string m_interval_node; std::function update_value; diff --git a/src/auto_rotation/auto_rotation_sensor.cpp b/src/auto_rotation/auto_rotation_sensor.cpp index 9c0e367..5601fae 100755 --- a/src/auto_rotation/auto_rotation_sensor.cpp +++ b/src/auto_rotation/auto_rotation_sensor.cpp @@ -38,6 +38,8 @@ using std::bind1st; using std::mem_fun; +using std::string; +using std::vector; #define SENSOR_NAME "AUTO_ROTATION_SENSOR" #define SENSOR_TYPE_AUTO_ROTATION "AUTO_ROTATION" @@ -133,9 +135,9 @@ bool auto_rotation_sensor::init() return true; } -sensor_type_t auto_rotation_sensor::get_type(void) +void auto_rotation_sensor::get_types(vector &types) { - return AUTO_ROTATION_SENSOR; + types.push_back(AUTO_ROTATION_SENSOR); } bool auto_rotation_sensor::on_start(void) @@ -208,7 +210,7 @@ int auto_rotation_sensor::get_sensor_data(const unsigned int event_type, sensor_ return 0; } -bool auto_rotation_sensor::get_properties(sensor_properties_s &properties) +bool auto_rotation_sensor::get_properties(sensor_type_t sensor_type, sensor_properties_s &properties) { properties.name = "Auto Rotation Sensor"; properties.vendor = "Samsung Electronics"; diff --git a/src/auto_rotation/auto_rotation_sensor.h b/src/auto_rotation/auto_rotation_sensor.h index 863d419..d2d1998 100755 --- a/src/auto_rotation/auto_rotation_sensor.h +++ b/src/auto_rotation/auto_rotation_sensor.h @@ -21,7 +21,6 @@ #define _AUTO_ROTATION_SENSOR_H_ #include -#include #include class auto_rotation_sensor : public virtual_sensor { @@ -30,14 +29,14 @@ public: virtual ~auto_rotation_sensor(); bool init(); - sensor_type_t get_type(void); + virtual void get_types(std::vector &types); static bool working(void *inst); - void synthesize(const sensor_event_t& event, vector &outs); + void synthesize(const sensor_event_t& event, std::vector &outs); int get_sensor_data(const unsigned int event_type, sensor_data_t &data); - virtual bool get_properties(sensor_properties_s &properties); + virtual bool get_properties(sensor_type_t sensor_type, sensor_properties_s &properties); private: sensor_base *m_accel_sensor; cmutex m_value_mutex; @@ -47,8 +46,8 @@ private: unsigned long long m_rotation_time; auto_rotation_alg *m_alg; - string m_vendor; - string m_raw_data_unit; + std::string m_vendor; + std::string m_raw_data_unit; int m_default_sampling_time; auto_rotation_alg *get_alg(); diff --git a/src/bio_led_red/bio_led_red_sensor.cpp b/src/bio_led_red/bio_led_red_sensor.cpp index 17d228f..07006c7 100755 --- a/src/bio_led_red/bio_led_red_sensor.cpp +++ b/src/bio_led_red/bio_led_red_sensor.cpp @@ -26,6 +26,8 @@ using std::bind1st; using std::mem_fun; +using std::string; +using std::vector; #define SENSOR_NAME "BIO_LED_RED_SENSOR" @@ -46,7 +48,7 @@ bio_led_red_sensor::~bio_led_red_sensor() bool bio_led_red_sensor::init() { - m_sensor_hal = sensor_plugin_loader::get_instance().get_sensor_hal(BIO_LED_RED_SENSOR); + m_sensor_hal = sensor_plugin_loader::get_instance().get_sensor_hal(SENSOR_HAL_TYPE_BIO_LED_RED); if (!m_sensor_hal) { ERR("cannot load sensor_hal[%s]", sensor_base::get_name()); @@ -58,9 +60,9 @@ bool bio_led_red_sensor::init() return true; } -sensor_type_t bio_led_red_sensor::get_type(void) +void bio_led_red_sensor::get_types(vector &types) { - return BIO_LED_RED_SENSOR; + types.push_back(BIO_LED_RED_SENSOR); } bool bio_led_red_sensor::working(void *inst) @@ -110,7 +112,7 @@ bool bio_led_red_sensor::on_stop(void) return stop_poll(); } -bool bio_led_red_sensor::get_properties(sensor_properties_s &properties) +bool bio_led_red_sensor::get_properties(sensor_type_t sensor_type, sensor_properties_s &properties) { return m_sensor_hal->get_properties(properties); } diff --git a/src/bio_led_red/bio_led_red_sensor.h b/src/bio_led_red/bio_led_red_sensor.h index f14b4af..78af52a 100755 --- a/src/bio_led_red/bio_led_red_sensor.h +++ b/src/bio_led_red/bio_led_red_sensor.h @@ -31,11 +31,11 @@ public: virtual ~bio_led_red_sensor(); bool init(); - virtual sensor_type_t get_type(void); + virtual void get_types(std::vector &types); static bool working(void *inst); virtual bool set_interval(unsigned long interval); - virtual bool get_properties(sensor_properties_s &properties); + virtual bool get_properties(sensor_type_t sensor_type, sensor_properties_s &properties); virtual int get_sensor_data(unsigned int type, sensor_data_t &data); private: sensor_hal *m_sensor_hal; diff --git a/src/bio_led_red/bio_led_red_sensor_hal.cpp b/src/bio_led_red/bio_led_red_sensor_hal.cpp index 38ee2bb..59fea6a 100755 --- a/src/bio_led_red/bio_led_red_sensor_hal.cpp +++ b/src/bio_led_red/bio_led_red_sensor_hal.cpp @@ -26,6 +26,7 @@ #include using std::ifstream; +using std::string; #define SENSOR_TYPE_BIO_LED_RED "BIO_LED_RED" #define ELEMENT_NAME "NAME" @@ -112,9 +113,9 @@ string bio_led_red_sensor_hal::get_model_id(void) } -sensor_type_t bio_led_red_sensor_hal::get_type(void) +sensor_hal_type_t bio_led_red_sensor_hal::get_type(void) { - return BIO_LED_RED_SENSOR; + return SENSOR_HAL_TYPE_BIO_LED_RED; } bool bio_led_red_sensor_hal::enable(void) diff --git a/src/bio_led_red/bio_led_red_sensor_hal.h b/src/bio_led_red/bio_led_red_sensor_hal.h index d94c470..bd9059b 100755 --- a/src/bio_led_red/bio_led_red_sensor_hal.h +++ b/src/bio_led_red/bio_led_red_sensor_hal.h @@ -21,17 +21,14 @@ #define _BIO_LED_RED_SENSOR_HAL_H_ #include -#include - -using std::string; class bio_led_red_sensor_hal : public sensor_hal { public: bio_led_red_sensor_hal(); virtual ~bio_led_red_sensor_hal(); - string get_model_id(void); - sensor_type_t get_type(void); + std::string get_model_id(void); + sensor_hal_type_t get_type(void); bool enable(void); bool disable(void); bool set_interval(unsigned long val); @@ -40,9 +37,9 @@ public: bool get_properties(sensor_properties_s &properties); private: - string m_model_id; - string m_vendor; - string m_chip_name; + std::string m_model_id; + std::string m_vendor; + std::string m_chip_name; unsigned long m_polling_interval; @@ -51,9 +48,9 @@ private: unsigned long long m_fired_time; int m_node_handle; - string m_enable_node; - string m_data_node; - string m_interval_node; + std::string m_enable_node; + std::string m_data_node; + std::string m_interval_node; bool m_sensorhub_controlled; diff --git a/src/fusion/fusion_sensor.cpp b/src/fusion/fusion_sensor.cpp index 38e02e4..bb04436 100755 --- a/src/fusion/fusion_sensor.cpp +++ b/src/fusion/fusion_sensor.cpp @@ -33,6 +33,9 @@ #include #include +using std::string; +using std::vector; + #define SENSOR_NAME "FUSION_SENSOR" #define SENSOR_TYPE_FUSION "FUSION" @@ -212,9 +215,9 @@ bool fusion_sensor::init(void) return true; } -sensor_type_t fusion_sensor::get_type(void) +void fusion_sensor::get_types(vector &types) { - return FUSION_SENSOR; + types.push_back(FUSION_SENSOR); } bool fusion_sensor::on_start(void) @@ -458,7 +461,7 @@ int fusion_sensor::get_sensor_data(const unsigned int event_type, sensor_data_t return 0; } -bool fusion_sensor::get_properties(sensor_properties_s &properties) +bool fusion_sensor::get_properties(sensor_type_t sensor_type, sensor_properties_s &properties) { properties.min_range = 0; properties.max_range = 0; diff --git a/src/fusion/fusion_sensor.h b/src/fusion/fusion_sensor.h index 8b4013f..e057ff0 100755 --- a/src/fusion/fusion_sensor.h +++ b/src/fusion/fusion_sensor.h @@ -35,8 +35,8 @@ public: bool add_interval(int client_id, unsigned int interval); bool delete_interval(int client_id); - bool get_properties(sensor_properties_s &properties); - sensor_type_t get_type(void); + virtual bool get_properties(sensor_type_t sensor_type, sensor_properties_s &properties); + virtual void get_types(std::vector &types); int get_sensor_data(const unsigned int data_id, sensor_data_t &data); @@ -63,8 +63,8 @@ private: unsigned long long m_time; unsigned int m_interval; - string m_vendor; - string m_raw_data_unit; + std::string m_vendor; + std::string m_raw_data_unit; int m_default_sampling_time; float m_accel_static_bias[3]; float m_gyro_static_bias[3]; diff --git a/src/fusion/hardware_fusion_sensor.html b/src/fusion/hardware_fusion_sensor.html old mode 100644 new mode 100755 index aae6fea..2c81202 --- a/src/fusion/hardware_fusion_sensor.html +++ b/src/fusion/hardware_fusion_sensor.html @@ -91,7 +91,7 @@ software sensor fusion,

->In the constructor use sensor_plugin_loader to check if the hal sensor fusion is present or not:

-

sensor_plugin_loader::get_instance().get_sensor_hal(FUSION_SENSOR)

+

sensor_plugin_loader::get_instance().get_sensor_hal(SENSOR_HAL_TYPE_FUSION)


->If @@ -103,7 +103,7 @@ this result in virtual_sensor::m_hardware_fusion

sensor_hal *fusion_sensor_hal = -sensor_plugin_loader::get_instance().get_sensor_hal(FUSION_SENSOR);

+sensor_plugin_loader::get_instance().get_sensor_hal(SENSOR_HAL_TYPE_FUSION);

if (!fusion_sensor_hal)

  m_hardware_fusion diff --git a/src/geo/geo_sensor.cpp b/src/geo/geo_sensor.cpp index 02609ca..6d9c170 100755 --- a/src/geo/geo_sensor.cpp +++ b/src/geo/geo_sensor.cpp @@ -23,6 +23,9 @@ #include #include +using std::string; +using std::vector; + #define SENSOR_NAME "GEOMAGNETIC_SENSOR" geo_sensor::geo_sensor() @@ -45,7 +48,7 @@ geo_sensor::~geo_sensor() bool geo_sensor::init() { - m_sensor_hal = sensor_plugin_loader::get_instance().get_sensor_hal(GEOMAGNETIC_SENSOR); + m_sensor_hal = sensor_plugin_loader::get_instance().get_sensor_hal(SENSOR_HAL_TYPE_GEOMAGNETIC); if (!m_sensor_hal) { ERR("cannot load sensor_hal[%s]", sensor_base::get_name()); @@ -66,15 +69,15 @@ bool geo_sensor::init() return true; } -sensor_type_t geo_sensor::get_type(void) +void geo_sensor::get_types(vector &types) { - return GEOMAGNETIC_SENSOR; + types.push_back(GEOMAGNETIC_SENSOR); } bool geo_sensor::working(void *inst) { geo_sensor *sensor = (geo_sensor*)inst; - return sensor->process_event();; + return sensor->process_event(); } bool geo_sensor::process_event(void) @@ -125,7 +128,7 @@ bool geo_sensor::on_stop(void) return stop_poll(); } -bool geo_sensor::get_properties(sensor_properties_s &properties) +bool geo_sensor::get_properties(sensor_type_t sensor_type, sensor_properties_s &properties) { return m_sensor_hal->get_properties(properties); } diff --git a/src/geo/geo_sensor.h b/src/geo/geo_sensor.h index d864ec1..df1e2c3 100755 --- a/src/geo/geo_sensor.h +++ b/src/geo/geo_sensor.h @@ -31,13 +31,13 @@ public: virtual ~geo_sensor(); virtual bool init(); - virtual sensor_type_t get_type(void); + virtual void get_types(std::vector &types); static bool working(void *inst); virtual bool set_interval(unsigned long interval); - virtual bool get_properties(sensor_properties_s &properties); int get_sensor_data(unsigned int type, sensor_data_t &data); + virtual bool get_properties(sensor_type_t sensor_type, sensor_properties_s &properties); private: sensor_hal *m_sensor_hal; diff --git a/src/geo/geo_sensor_hal.cpp b/src/geo/geo_sensor_hal.cpp index 0480752..9b23ea5 100755 --- a/src/geo/geo_sensor_hal.cpp +++ b/src/geo/geo_sensor_hal.cpp @@ -26,6 +26,7 @@ #include using std::ifstream; +using std::string; #define SENSOR_TYPE_MAGNETIC "MAGNETIC" #define ELEMENT_NAME "NAME" @@ -147,9 +148,9 @@ string geo_sensor_hal::get_model_id(void) return m_model_id; } -sensor_type_t geo_sensor_hal::get_type(void) +sensor_hal_type_t geo_sensor_hal::get_type(void) { - return GEOMAGNETIC_SENSOR; + return SENSOR_HAL_TYPE_GEOMAGNETIC; } bool geo_sensor_hal::enable(void) @@ -190,7 +191,6 @@ bool geo_sensor_hal::set_interval(unsigned long val) INFO("Interval is changed from %dms to %dms]", m_polling_interval, val); m_polling_interval = val; return true; - } bool geo_sensor_hal::update_value(bool wait) diff --git a/src/geo/geo_sensor_hal.h b/src/geo/geo_sensor_hal.h index 44afebb..0af57e8 100755 --- a/src/geo/geo_sensor_hal.h +++ b/src/geo/geo_sensor_hal.h @@ -21,17 +21,14 @@ #define _GEO_SENSOR_HAL_H_ #include -#include - -using std::string; class geo_sensor_hal : public sensor_hal { public: geo_sensor_hal(); virtual ~geo_sensor_hal(); - string get_model_id(void); - sensor_type_t get_type(void); + std::string get_model_id(void); + sensor_hal_type_t get_type(void); bool enable(void); bool disable(void); bool set_interval(unsigned long val); @@ -39,9 +36,9 @@ public: virtual int get_sensor_data(sensor_data_t &data); bool get_properties(sensor_properties_s &properties); private: - string m_model_id; - string m_vendor; - string m_chip_name; + std::string m_model_id; + std::string m_vendor; + std::string m_chip_name; float m_min_range; float m_max_range; @@ -57,9 +54,9 @@ private: int m_node_handle; unsigned long m_polling_interval; - string m_enable_node; - string m_data_node; - string m_interval_node; + std::string m_enable_node; + std::string m_data_node; + std::string m_interval_node; bool m_sensorhub_controlled; diff --git a/src/gravity/gravity_sensor.cpp b/src/gravity/gravity_sensor.cpp index aa23a5e..dfe3ae7 100755 --- a/src/gravity/gravity_sensor.cpp +++ b/src/gravity/gravity_sensor.cpp @@ -31,6 +31,9 @@ #include #include +using std::string; +using std::vector; + #define INITIAL_VALUE -1 #define GRAVITY 9.80665 @@ -66,7 +69,7 @@ gravity_sensor::gravity_sensor() { cvirtual_sensor_config &config = cvirtual_sensor_config::get_instance(); - sensor_hal *fusion_sensor_hal = sensor_plugin_loader::get_instance().get_sensor_hal(FUSION_SENSOR); + sensor_hal *fusion_sensor_hal = sensor_plugin_loader::get_instance().get_sensor_hal(SENSOR_HAL_TYPE_FUSION); if (!fusion_sensor_hal) m_hardware_fusion = false; else @@ -157,9 +160,9 @@ bool gravity_sensor::init() return true; } -sensor_type_t gravity_sensor::get_type(void) +void gravity_sensor::get_types(vector &types) { - return GRAVITY_SENSOR; + types.push_back(GRAVITY_SENSOR); } bool gravity_sensor::on_start(void) @@ -374,7 +377,7 @@ int gravity_sensor::get_sensor_data(const unsigned int event_type, sensor_data_t return 0; } -bool gravity_sensor::get_properties(sensor_properties_s &properties) +bool gravity_sensor::get_properties(sensor_type_t sensor_type, sensor_properties_s &properties) { properties.min_range = -GRAVITY; properties.max_range = GRAVITY; diff --git a/src/gravity/gravity_sensor.h b/src/gravity/gravity_sensor.h index cd15b79..b5114ee 100755 --- a/src/gravity/gravity_sensor.h +++ b/src/gravity/gravity_sensor.h @@ -30,15 +30,15 @@ public: virtual ~gravity_sensor(); bool init(); - sensor_type_t get_type(void); + virtual void get_types(std::vector &types); - void synthesize(const sensor_event_t &event, vector &outs); + void synthesize(const sensor_event_t& event, std::vector &outs); bool add_interval(int client_id, unsigned int interval); bool delete_interval(int client_id); int get_sensor_data(const unsigned int event_type, sensor_data_t &data); - bool get_properties(sensor_properties_s &properties); + virtual bool get_properties(sensor_type_t sensor_type, sensor_properties_s &properties); private: sensor_base *m_accel_sensor; sensor_base *m_gyro_sensor; @@ -55,9 +55,9 @@ private: unsigned long long m_time; unsigned int m_interval; - string m_vendor; - string m_raw_data_unit; - string m_orientation_data_unit; + std::string m_vendor; + std::string m_raw_data_unit; + std::string m_orientation_data_unit; int m_default_sampling_time; int m_gravity_sign_compensation[3]; int m_azimuth_rotation_compensation; diff --git a/src/gyro/gyro_sensor.cpp b/src/gyro/gyro_sensor.cpp index c7b0001..2cb2859 100755 --- a/src/gyro/gyro_sensor.cpp +++ b/src/gyro/gyro_sensor.cpp @@ -23,6 +23,9 @@ #include #include +using std::string; +using std::vector; + #define MS_TO_US 1000 #define DPS_TO_MDPS 1000 #define RAW_DATA_TO_DPS_UNIT(X) ((float)(X)/((float)DPS_TO_MDPS)) @@ -48,7 +51,7 @@ gyro_sensor::~gyro_sensor() bool gyro_sensor::init() { - m_sensor_hal = sensor_plugin_loader::get_instance().get_sensor_hal(GYROSCOPE_SENSOR); + m_sensor_hal = sensor_plugin_loader::get_instance().get_sensor_hal(SENSOR_HAL_TYPE_GYROSCOPE); if (!m_sensor_hal) { ERR("cannot load sensor_hal[%s]", sensor_base::get_name()); @@ -69,9 +72,9 @@ bool gyro_sensor::init() return true; } -sensor_type_t gyro_sensor::get_type(void) +void gyro_sensor::get_types(vector &types) { - return GYROSCOPE_SENSOR; + types.push_back(GYROSCOPE_SENSOR); } bool gyro_sensor::working(void *inst) @@ -127,7 +130,7 @@ bool gyro_sensor::on_stop(void) return stop_poll(); } -bool gyro_sensor::get_properties(sensor_properties_s &properties) +bool gyro_sensor::get_properties(sensor_type_t sensor_type, sensor_properties_s &properties) { return m_sensor_hal->get_properties(properties); } diff --git a/src/gyro/gyro_sensor.h b/src/gyro/gyro_sensor.h index a56ca2f..81bcb7b 100755 --- a/src/gyro/gyro_sensor.h +++ b/src/gyro/gyro_sensor.h @@ -31,13 +31,13 @@ public: virtual ~gyro_sensor(); virtual bool init(); - virtual sensor_type_t get_type(void); + virtual void get_types(std::vector &types); static bool working(void *inst); virtual bool set_interval(unsigned long interval); - virtual bool get_properties(sensor_properties_s &properties); int get_sensor_data(unsigned int type, sensor_data_t &data); + virtual bool get_properties(sensor_type_t sensor_type, sensor_properties_s &properties); private: sensor_hal *m_sensor_hal; float m_resolution; diff --git a/src/gyro/gyro_sensor_hal.cpp b/src/gyro/gyro_sensor_hal.cpp index 52b55fb..97a6903 100755 --- a/src/gyro/gyro_sensor_hal.cpp +++ b/src/gyro/gyro_sensor_hal.cpp @@ -26,6 +26,7 @@ #include using std::ifstream; +using std::string; #define DPS_TO_MDPS 1000 #define MIN_RANGE(RES) (-((1 << (RES))/2)) @@ -137,9 +138,9 @@ string gyro_sensor_hal::get_model_id(void) return m_model_id; } -sensor_type_t gyro_sensor_hal::get_type(void) +sensor_hal_type_t gyro_sensor_hal::get_type(void) { - return GYROSCOPE_SENSOR; + return SENSOR_HAL_TYPE_GYROSCOPE; } bool gyro_sensor_hal::enable(void) diff --git a/src/gyro/gyro_sensor_hal.h b/src/gyro/gyro_sensor_hal.h index 6204399..dde408e 100755 --- a/src/gyro/gyro_sensor_hal.h +++ b/src/gyro/gyro_sensor_hal.h @@ -21,17 +21,14 @@ #define _GYRO_SENSOR_HAL_H_ #include -#include - -using std::string; class gyro_sensor_hal : public sensor_hal { public: gyro_sensor_hal(); virtual ~gyro_sensor_hal(); - string get_model_id(void); - sensor_type_t get_type(void); + std::string get_model_id(void); + sensor_hal_type_t get_type(void); bool enable(void); bool disable(void); bool set_interval(unsigned long ms_interval); @@ -47,18 +44,18 @@ private: unsigned long m_polling_interval; unsigned long long m_fired_time; - string m_model_id; - string m_vendor; - string m_chip_name; + std::string m_model_id; + std::string m_vendor; + std::string m_chip_name; float m_min_range; float m_max_range; int m_resolution; float m_raw_data_unit; - string m_data_node; - string m_enable_node; - string m_interval_node; + std::string m_data_node; + std::string m_enable_node; + std::string m_interval_node; bool m_sensorhub_controlled; diff --git a/src/libsensord/client.cpp b/src/libsensord/client.cpp old mode 100755 new mode 100644 index 710bdcf..943e5a9 --- a/src/libsensord/client.cpp +++ b/src/libsensord/client.cpp @@ -27,11 +27,17 @@ #include #include #include +#include +#include + +using std::vector; #ifndef API #define API __attribute__((visibility("default"))) #endif +#define MIN_INTERVAL 10 + static const int OP_SUCCESS = 0; static const int OP_ERROR = -1; @@ -260,16 +266,9 @@ static bool change_sensor_rep(sensor_id_t sensor_id, sensor_rep &prev_rep, senso } } - if (prev_rep.interval != cur_rep.interval) { - unsigned int min_interval; - - if (cur_rep.interval == 0) - min_interval= POLL_MAX_HZ_MS; - else - min_interval = cur_rep.interval; - - if (!cmd_channel->cmd_set_interval(min_interval)) { - ERR("Sending cmd_set_interval(%d, %s, %d) failed for %s", client_id, get_sensor_name(sensor_id), min_interval, get_client_name()); + if ( (prev_rep.interval != cur_rep.interval) || (prev_rep.latency != cur_rep.latency)) { + if (!cmd_channel->cmd_set_batch(cur_rep.interval, cur_rep.latency)) { + ERR("Sending cmd_set_batch(%d, %s, %d, %d) failed for %s", client_id, get_sensor_name(sensor_id), cur_rep.interval, cur_rep.latency, get_client_name()); return false; } } @@ -297,7 +296,7 @@ static bool change_sensor_rep(sensor_id_t sensor_id, sensor_rep &prev_rep, senso return false; } } else { - if (!cmd_channel->cmd_unset_interval()) { + if (!cmd_channel->cmd_unset_batch()) { ERR("Sending cmd_unset_interval(%d, %s) failed for %s", client_id, get_sensor_name(sensor_id), get_client_name()); return false; } @@ -616,14 +615,14 @@ API int sensord_connect(sensor_t sensor) retvm_if (!sensor_info_manager::get_instance().is_valid(info), OP_ERROR, "Invalid param: sensor (%p)", sensor); - sensor_id_t sensor_id = info->get_id(); + sensor_id_t sensor_id = info->get_id(); AUTOLOCK(lock); sensor_registered = event_listener.is_sensor_registered(sensor_id); handle = event_listener.create_handle(sensor_id); - if (handle == MAX_HANDLE) { + if (handle == MAX_HANDLE_REACHED) { ERR("Maximum number of handles reached, sensor: %s in client %s", get_sensor_name(sensor_id), get_client_name()); return OP_ERROR; } @@ -758,14 +757,15 @@ static bool register_event(int handle, unsigned int event_type, unsigned int int return false; } - if (interval == 0) - interval = 1; + if (interval < MIN_INTERVAL) + interval = MIN_INTERVAL; - INFO("%s registers event %s[0x%x] for sensor %s[%d] with interval: %d, cb: 0x%x, user_data: 0x%x", get_client_name(), get_event_name(event_type), - event_type, get_sensor_name(sensor_id), handle, interval, cb, user_data); + INFO("%s registers event %s[0x%x] for sensor %s[%d] with interval: %d, latency: %d, cb: 0x%x, user_data: 0x%x", + get_client_name(), get_event_name(event_type), event_type, get_sensor_name(sensor_id), + handle, interval, max_batch_latency, cb, user_data); event_listener.get_sensor_rep(sensor_id, prev_rep); - event_listener.register_event(handle, event_type, interval, cb_type, cb, user_data); + event_listener.register_event(handle, event_type, interval, max_batch_latency, cb_type, cb, user_data); event_listener.get_sensor_rep(sensor_id, cur_rep); ret = change_sensor_rep(sensor_id, prev_rep, cur_rep); @@ -791,7 +791,7 @@ API bool sensord_unregister_event(int handle, unsigned int event_type) sensor_id_t sensor_id; sensor_rep prev_rep, cur_rep; bool ret; - unsigned int prev_interval; + unsigned int prev_interval, prev_latency; int prev_cb_type; void *prev_cb; void *prev_user_data; @@ -807,7 +807,7 @@ API bool sensord_unregister_event(int handle, unsigned int event_type) event_type, get_sensor_name(sensor_id), handle); event_listener.get_sensor_rep(sensor_id, prev_rep); - event_listener.get_event_info(handle, event_type, prev_interval, prev_cb_type, prev_cb, prev_user_data); + event_listener.get_event_info(handle, event_type, prev_interval, prev_latency, prev_cb_type, prev_cb, prev_user_data); if (!event_listener.unregister_event(handle, event_type)) { ERR("%s try to unregister non registered event %s[0x%x] for sensor %s[%d]", @@ -819,7 +819,7 @@ API bool sensord_unregister_event(int handle, unsigned int event_type) ret = change_sensor_rep(sensor_id, prev_rep, cur_rep); if (!ret) - event_listener.register_event(handle, event_type, prev_interval, prev_cb_type, prev_cb, prev_user_data); + event_listener.register_event(handle, event_type, prev_interval, prev_latency, prev_cb_type, prev_cb, prev_user_data); return ret; @@ -945,12 +945,12 @@ API bool sensord_stop(int handle) } -API bool sensord_change_event_interval(int handle, unsigned int event_type, unsigned int interval) +static bool change_event_batch(int handle, unsigned int event_type, unsigned int interval, unsigned int latency) { sensor_id_t sensor_id; sensor_rep prev_rep, cur_rep; bool ret; - unsigned int prev_interval; + unsigned int prev_interval, prev_latency; int prev_cb_type; void *prev_cb; void *prev_user_data; @@ -962,14 +962,20 @@ API bool sensord_change_event_interval(int handle, unsigned int event_type, unsi return false; } - INFO("%s changes interval of event %s[0x%x] for %s[%d] to interval %d", get_client_name(), get_event_name(event_type), - event_type, get_sensor_name(sensor_id), handle, interval); + if (interval == 0) + interval = 1; + + INFO("%s changes batch of event %s[0x%x] for %s[%d] to (%d, %d)", get_client_name(), get_event_name(event_type), + event_type, get_sensor_name(sensor_id), handle, interval, latency); event_listener.get_sensor_rep(sensor_id, prev_rep); - event_listener.get_event_info(handle, event_type, prev_interval, prev_cb_type, prev_cb, prev_user_data); + event_listener.get_event_info(handle, event_type, prev_interval, prev_latency, prev_cb_type, prev_cb, prev_user_data); + + if (interval < MIN_INTERVAL) + interval = MIN_INTERVAL; - if (!event_listener.set_event_interval(handle, event_type, interval)) + if (!event_listener.set_event_batch(handle, event_type, interval, latency)) return false; event_listener.get_sensor_rep(sensor_id, cur_rep); @@ -977,17 +983,45 @@ API bool sensord_change_event_interval(int handle, unsigned int event_type, unsi ret = change_sensor_rep(sensor_id, prev_rep, cur_rep); if (!ret) - event_listener.set_event_interval(handle, event_type, prev_interval); + event_listener.set_event_batch(handle, event_type, prev_interval, prev_latency); return ret; - } -API bool sensord_change_event_max_batch_latency(int handle, unsigned int max_batch_latency) +API bool sensord_change_event_interval(int handle, unsigned int event_type, unsigned int interval) { - return false; + unsigned int prev_interval, prev_latency; + int prev_cb_type; + void *prev_cb; + void *prev_user_data; + + AUTOLOCK(lock); + + if (!event_listener.get_event_info(handle, event_type, prev_interval, prev_latency, prev_cb_type, prev_cb, prev_user_data)) { + ERR("Failed to get event info with handle = %d, event_type = 0x%x", handle, event_type); + return false; + } + + INFO("handle = %d, event_type = 0x%x, interval = %d, prev_latency = %d", handle, event_type, interval, prev_latency); + return change_event_batch(handle, event_type, interval, prev_latency); } +API bool sensord_change_event_max_batch_latency(int handle, unsigned int event_type, unsigned int max_batch_latency) +{ + unsigned int prev_interval, prev_latency; + int prev_cb_type; + void *prev_cb; + void *prev_user_data; + + AUTOLOCK(lock); + + if (!event_listener.get_event_info(handle, event_type, prev_interval, prev_latency, prev_cb_type, prev_cb, prev_user_data)) { + ERR("Failed to get event info with handle = %d, event_type = 0x%x", handle, event_type); + return false; + } + + return change_event_batch(handle, event_type, prev_interval, max_batch_latency); +} API bool sensord_set_option(int handle, int option) { diff --git a/src/libsensord/client_common.cpp b/src/libsensord/client_common.cpp index 40f99b1..9efccee 100755 --- a/src/libsensord/client_common.cpp +++ b/src/libsensord/client_common.cpp @@ -123,8 +123,6 @@ const char* get_log_element_name(log_id id, unsigned int type) const char* get_sensor_name(sensor_id_t sensor_id) { - const int SENSOR_TYPE_MASK = 0x0000FFFF; - sensor_type_t sensor_type = (sensor_type_t) (sensor_id & SENSOR_TYPE_MASK); return get_log_element_name(LOG_ID_SENSOR_TYPE, sensor_type); diff --git a/src/libsensord/command_channel.cpp b/src/libsensord/command_channel.cpp old mode 100755 new mode 100644 index 21238a2..c46a1a1 --- a/src/libsensord/command_channel.cpp +++ b/src/libsensord/command_channel.cpp @@ -108,7 +108,8 @@ bool command_channel::cmd_get_id(int &client_id) packet->set_cmd(CMD_GET_ID); cmd_get_id = (cmd_get_id_t *)packet->data(); - cmd_get_id->pid = getpid(); + + get_proc_name(getpid(), cmd_get_id->name); INFO("%s send cmd_get_id()", get_client_name()); @@ -480,33 +481,34 @@ bool command_channel::cmd_unregister_events(event_type_vector &event_vec) return true; } -bool command_channel::cmd_set_interval(unsigned int interval) +bool command_channel::cmd_set_batch(unsigned int interval, unsigned int latency) { cpacket *packet; - cmd_set_interval_t *cmd_set_interval; + cmd_set_batch_t *cmd_set_batch; cmd_done_t *cmd_done; - packet = new(std::nothrow) cpacket(sizeof(cmd_set_interval_t)); + packet = new(std::nothrow) cpacket(sizeof(cmd_set_batch_t)); retvm_if(!packet, false, "Failed to allocate memory"); - packet->set_cmd(CMD_SET_INTERVAL); + packet->set_cmd(CMD_SET_BATCH); - cmd_set_interval = (cmd_set_interval_t*)packet->data(); - cmd_set_interval->interval = interval; + cmd_set_batch = (cmd_set_batch_t*)packet->data(); + cmd_set_batch->interval = interval; + cmd_set_batch->latency = latency; - INFO("%s send cmd_set_interval(client_id=%d, %s, interval=%d)", - get_client_name(), m_client_id, get_sensor_name(m_sensor_id), interval); + INFO("%s send cmd_set_batch(client_id=%d, %s, interval=%d, latency = %d)", + get_client_name(), m_client_id, get_sensor_name(m_sensor_id), interval, latency); if (!command_handler(packet, (void **)&cmd_done)) { - ERR("%s failed to send/receive command for sensor[%s] with client_id [%d], interval[%d]", - get_client_name(), get_sensor_name(m_sensor_id), m_client_id, interval); + ERR("%s failed to send/receive command for sensor[%s] with client_id [%d], interval[%d], latency[%d]", + get_client_name(), get_sensor_name(m_sensor_id), m_client_id, interval, latency); delete packet; return false; } if (cmd_done->value < 0) { - ERR("%s got error[%d] from server for sensor[%s] with client_id [%d], interval[%d]", - get_client_name(), cmd_done->value, get_sensor_name(m_sensor_id), m_client_id, interval); + ERR("%s got error[%d] from server for sensor[%s] with client_id [%d], interval[%d], latency[%d]", + get_client_name(), cmd_done->value, get_sensor_name(m_sensor_id), m_client_id, interval, latency); delete[] (char *)cmd_done; delete packet; @@ -519,17 +521,17 @@ bool command_channel::cmd_set_interval(unsigned int interval) return true; } -bool command_channel::cmd_unset_interval(void) +bool command_channel::cmd_unset_batch(void) { cpacket *packet; cmd_done_t *cmd_done; - packet = new(std::nothrow) cpacket(sizeof(cmd_unset_interval_t)); + packet = new(std::nothrow) cpacket(sizeof(cmd_unset_batch_t)); retvm_if(!packet, false, "Failed to allocate memory"); - packet->set_cmd(CMD_UNSET_INTERVAL); + packet->set_cmd(CMD_UNSET_BATCH); - INFO("%s send cmd_unset_interval(client_id=%d, %s)", + INFO("%s send cmd_unset_batch(client_id=%d, %s)", get_client_name(), m_client_id, get_sensor_name(m_sensor_id)); if (!command_handler(packet, (void **)&cmd_done)) { diff --git a/src/libsensord/command_channel.h b/src/libsensord/command_channel.h old mode 100755 new mode 100644 index 2688c15..ae1ba6a --- a/src/libsensord/command_channel.h +++ b/src/libsensord/command_channel.h @@ -23,9 +23,6 @@ #include #include #include -#include - -using std::vector; class command_channel { @@ -48,8 +45,8 @@ public: bool cmd_register_events(event_type_vector &event_vec); bool cmd_unregister_event(unsigned int event_type); bool cmd_unregister_events(event_type_vector &event_vec); - bool cmd_set_interval(unsigned int interval); - bool cmd_unset_interval(void); + bool cmd_set_batch(unsigned int interval, unsigned int latency); + bool cmd_unset_batch(void); bool cmd_set_command(unsigned int cmd, long value); bool cmd_get_data(unsigned int type, sensor_data_t* values); bool cmd_send_sensorhub_data(const char* buffer, int data_len); diff --git a/src/libsensord/creg_event_info.h b/src/libsensord/creg_event_info.h old mode 100755 new mode 100644 index 82f23bd..a270d79 --- a/src/libsensord/creg_event_info.h +++ b/src/libsensord/creg_event_info.h @@ -35,6 +35,7 @@ public: int m_handle; unsigned int type; unsigned int m_interval; + unsigned int m_latency; int m_cb_type; void *m_cb; void *m_user_data; @@ -43,6 +44,7 @@ public: creg_event_info():m_id(0), m_handle(-1), type(0), m_interval(POLL_1HZ_MS), + m_latency(0), m_cb_type(SENSOR_EVENT_CB), m_cb(NULL), m_user_data(NULL), m_previous_event_time(0), m_fired(false){} diff --git a/src/libsensord/csensor_event_listener.cpp b/src/libsensord/csensor_event_listener.cpp old mode 100755 new mode 100644 index 7dbebc3..dea77e0 --- a/src/libsensord/csensor_event_listener.cpp +++ b/src/libsensord/csensor_event_listener.cpp @@ -24,12 +24,14 @@ #include #include +#include #define MS_TO_US 1000 #define MIN_DELIVERY_DIFF_FACTOR 0.75f using std::thread; using std::pair; +using std::vector; csensor_event_listener::csensor_event_listener() : m_client_id(CLIENT_ID_INVALID) @@ -114,7 +116,7 @@ bool csensor_event_listener::stop_handle(int handle) } bool csensor_event_listener::register_event(int handle, unsigned int event_type, - unsigned int interval, int cb_type, void *cb, void* user_data) + unsigned int interval, unsigned int latency, int cb_type, void *cb, void* user_data) { AUTOLOCK(m_handle_info_lock); @@ -125,7 +127,7 @@ bool csensor_event_listener::register_event(int handle, unsigned int event_type, return false; } - if (!it_handle->second.add_reg_event_info(event_type, interval, cb_type, cb, user_data)) + if (!it_handle->second.add_reg_event_info(event_type, interval, latency, cb_type, cb, user_data)) return false; return true; @@ -148,24 +150,6 @@ bool csensor_event_listener::unregister_event(int handle, unsigned int event_typ return true; } -bool csensor_event_listener::change_event_interval(int handle, unsigned int event_type, - unsigned int interval) -{ - AUTOLOCK(m_handle_info_lock); - - auto it_handle = m_sensor_handle_infos.find(handle); - - if (it_handle == m_sensor_handle_infos.end()) { - ERR("Handle[%d] is not found for client %s", handle, get_client_name()); - return false; - } - - if (!it_handle->second.change_reg_event_interval(event_type, interval)) - return false; - - return true; -} - bool csensor_event_listener::register_accuracy_cb(int handle, sensor_accuracy_changed_cb_t cb, void* user_data) { AUTOLOCK(m_handle_info_lock); @@ -268,7 +252,7 @@ bool csensor_event_listener::set_sensor_option(int handle, int sensor_option) return true; } -bool csensor_event_listener::set_event_interval(int handle, unsigned int event_type, unsigned int interval) +bool csensor_event_listener::set_event_batch(int handle, unsigned int event_type, unsigned int interval, unsigned int latency) { AUTOLOCK(m_handle_info_lock); @@ -279,14 +263,14 @@ bool csensor_event_listener::set_event_interval(int handle, unsigned int event_t return false; } - if (!it_handle->second.change_reg_event_interval(event_type, interval)) + if (!it_handle->second.change_reg_event_batch(event_type, interval, latency)) return false; return true; } -bool csensor_event_listener::get_event_info(int handle, unsigned int event_type, unsigned int &interval, int &cb_type, void* &cb, void* &user_data) +bool csensor_event_listener::get_event_info(int handle, unsigned int event_type, unsigned int &interval, unsigned int &latency, int &cb_type, void* &cb, void* &user_data) { AUTOLOCK(m_handle_info_lock); @@ -304,8 +288,8 @@ bool csensor_event_listener::get_event_info(int handle, unsigned int event_type, if (!event_info) return NULL; - interval = event_info->m_interval; + latency = event_info->m_latency; cb_type = event_info->m_cb_type; cb = event_info->m_cb; user_data = event_info->m_user_data; @@ -332,13 +316,18 @@ void csensor_event_listener::get_listening_sensors(sensor_id_vector &sensors) void csensor_event_listener::get_sensor_rep(sensor_id_t sensor, sensor_rep& rep) { + const unsigned int INVALID_BATCH_VALUE = std::numeric_limits::max(); + AUTOLOCK(m_handle_info_lock); rep.active = is_sensor_active(sensor); rep.option = get_active_option(sensor); - rep.interval = get_active_min_interval(sensor); - get_active_event_types(sensor, rep.event_types); + if (!get_active_batch(sensor, rep.interval, rep.latency)) { + rep.interval = INVALID_BATCH_VALUE; + rep.latency = INVALID_BATCH_VALUE; + } + get_active_event_types(sensor, rep.event_types); } void csensor_event_listener::operate_sensor(sensor_id_t sensor, int power_save_state) @@ -443,11 +432,14 @@ void csensor_event_listener::set_client_id(int client_id) m_client_id = client_id; } -unsigned int csensor_event_listener::get_active_min_interval(sensor_id_t sensor) +bool csensor_event_listener::get_active_batch(sensor_id_t sensor, unsigned int &interval, unsigned int &latency) { unsigned int min_interval = POLL_MAX_HZ_MS; + unsigned int min_latency = std::numeric_limits::max(); + bool active_sensor_found = false; - unsigned int interval; + unsigned int _interval; + unsigned int _latency; AUTOLOCK(m_handle_info_lock); @@ -457,18 +449,23 @@ unsigned int csensor_event_listener::get_active_min_interval(sensor_id_t sensor) if ((it_handle->second.m_sensor_id == sensor) && (it_handle->second.m_sensor_state == SENSOR_STATE_STARTED)) { active_sensor_found = true; - interval = it_handle->second.get_min_interval(); - min_interval = (interval < min_interval) ? interval : min_interval; + it_handle->second.get_batch(_interval, _latency); + min_interval = (_interval < min_interval) ? _interval : min_interval; + min_latency = (_latency < min_latency) ? _latency : min_latency; } ++it_handle; } - if (!active_sensor_found) + if (!active_sensor_found) { DBG("Active sensor[0x%x] is not found for client %s", sensor, get_client_name()); + return false; + } - return (active_sensor_found) ? min_interval : 0; + interval = min_interval; + latency = min_latency; + return true; } unsigned int csensor_event_listener::get_active_option(sensor_id_t sensor) diff --git a/src/libsensord/csensor_event_listener.h b/src/libsensord/csensor_event_listener.h old mode 100755 new mode 100644 index 0f7ac49..2986273 --- a/src/libsensord/csensor_event_listener.h +++ b/src/libsensord/csensor_event_listener.h @@ -38,19 +38,10 @@ #include #include -using std::unordered_map; -using std::vector; -using std::string; -using std::queue; -using std::mutex; -using std::lock_guard; -using std::unique_lock; -using std::condition_variable; - -typedef vector handle_vector; -typedef vector sensor_id_vector; -typedef unordered_map sensor_handle_info_map; -typedef unordered_map sensor_command_channel_map; +typedef std::vector handle_vector; +typedef std::vector sensor_id_vector; +typedef std::unordered_map sensor_handle_info_map; +typedef std::unordered_map sensor_command_channel_map; typedef struct { unsigned long long event_id; @@ -72,6 +63,7 @@ typedef struct sensor_rep bool active; int option; unsigned int interval; + unsigned int latency; event_type_vector event_types; } sensor_rep; @@ -84,9 +76,8 @@ public: bool delete_handle(int handle); bool start_handle(int handle); bool stop_handle(int handle); - bool register_event(int handle, unsigned int event_type, unsigned int interval, int cb_type, void *cb, void* user_data); + bool register_event(int handle, unsigned int event_type, unsigned int interval, unsigned int latency, int cb_type, void *cb, void* user_data); bool unregister_event(int handle, unsigned int event_type); - bool change_event_interval(int handle, unsigned int event_type, unsigned int interval); bool register_accuracy_cb(int handle, sensor_accuracy_changed_cb_t cb, void* user_data); bool unregister_accuracy_cb(int handle); @@ -95,12 +86,12 @@ public: bool get_sensor_params(int handle, int &sensor_state, int &sensor_option); bool set_sensor_state(int handle, int sensor_state); bool set_sensor_option(int handle, int sensor_option); - bool set_event_interval(int handle, unsigned int event_type, unsigned int interval); - bool get_event_info(int handle, unsigned int event_type, unsigned int &interval, int &cb_type, void* &cb, void* &user_data); + bool set_event_batch(int handle, unsigned int event_type, unsigned int interval, unsigned int latency); + bool get_event_info(int handle, unsigned int event_type, unsigned int &interval, unsigned int &latency, int &cb_type, void* &cb, void* &user_data); void operate_sensor(sensor_id_t sensor, int power_save_state); void get_listening_sensors(sensor_id_vector &sensors); - unsigned int get_active_min_interval(sensor_id_t sensor_id); + bool get_active_batch(sensor_id_t sensor_id, unsigned int &interval, unsigned int &latency); unsigned int get_active_option(sensor_id_t sensor_id); void get_active_event_types(sensor_id_t sensor_id, event_type_vector &active_event_types); @@ -135,8 +126,8 @@ private: THREAD_STATE_STOP, THREAD_STATE_TERMINATE, }; - typedef lock_guard lock; - typedef unique_lock ulock; + typedef std::lock_guard lock; + typedef std::unique_lock ulock; sensor_handle_info_map m_sensor_handle_infos; sensor_command_channel_map m_command_channels; @@ -149,8 +140,8 @@ private: cmutex m_handle_info_lock; thread_state m_thread_state; - mutex m_thread_mutex; - condition_variable m_thread_cond; + std::mutex m_thread_mutex; + std::condition_variable m_thread_cond; hup_observer_t m_hup_observer; diff --git a/src/libsensord/csensor_handle_info.cpp b/src/libsensord/csensor_handle_info.cpp old mode 100755 new mode 100644 index d1c8dbb..3aa173f --- a/src/libsensord/csensor_handle_info.cpp +++ b/src/libsensord/csensor_handle_info.cpp @@ -19,6 +19,7 @@ #include #include +#include using std::pair; @@ -64,7 +65,7 @@ void csensor_handle_info::get_reg_event_types(event_type_vector &event_types) } } -bool csensor_handle_info::add_reg_event_info(unsigned int event_type, unsigned int interval, int cb_type, void *cb, void *user_data) +bool csensor_handle_info::add_reg_event_info(unsigned int event_type, unsigned int interval, unsigned int latency, int cb_type, void *cb, void *user_data) { creg_event_info event_info; @@ -79,6 +80,7 @@ bool csensor_handle_info::add_reg_event_info(unsigned int event_type, unsigned i event_info.m_handle = m_handle; event_info.type = event_type; event_info.m_interval = interval; + event_info.m_latency = latency; event_info.m_cb_type = cb_type; event_info.m_cb = cb; event_info.m_user_data = user_data; @@ -113,7 +115,7 @@ unsigned long long csensor_handle_info::renew_event_id(void) return m_event_id++; } -bool csensor_handle_info::change_reg_event_interval(unsigned int event_type, unsigned int interval) +bool csensor_handle_info::change_reg_event_batch(unsigned int event_type, unsigned int interval, unsigned int latency) { auto it_event = m_reg_event_infos.find(event_type); @@ -124,29 +126,39 @@ bool csensor_handle_info::change_reg_event_interval(unsigned int event_type, uns it_event->second.m_id = renew_event_id(); it_event->second.m_interval = interval; + it_event->second.m_latency = latency; return true; } -unsigned int csensor_handle_info::get_min_interval(void) +void csensor_handle_info::get_batch(unsigned int &interval, unsigned int &latency) { - unsigned int min_interval = POLL_MAX_HZ_MS; - unsigned int interval; - if (m_reg_event_infos.empty()) { DBG("No events are registered for client %s", get_client_name()); - return min_interval; + interval = POLL_MAX_HZ_MS; + latency = 0; + return; } + unsigned int min_interval = POLL_MAX_HZ_MS; + unsigned int min_latency = std::numeric_limits::max(); + + unsigned int _interval; + unsigned int _latency; + auto it_event = m_reg_event_infos.begin(); while (it_event != m_reg_event_infos.end()) { - interval = it_event->second.m_interval; - min_interval = (interval < min_interval) ? interval : min_interval; + _interval = it_event->second.m_interval; + _latency = it_event->second.m_latency; + + min_interval = (_interval < min_interval) ? _interval : min_interval; + min_latency = (_latency < min_latency) ? _latency : min_latency; ++it_event; } - return min_interval; + interval = min_interval; + latency = min_latency; } unsigned int csensor_handle_info::get_reg_event_count(void) diff --git a/src/libsensord/csensor_handle_info.h b/src/libsensord/csensor_handle_info.h old mode 100755 new mode 100644 index b6eca9b..3330dbe --- a/src/libsensord/csensor_handle_info.h +++ b/src/libsensord/csensor_handle_info.h @@ -25,11 +25,8 @@ #include #include #include -#include -using std::unordered_map; -using std::vector; -typedef unordered_map event_info_map; +typedef std::unordered_map event_info_map; class csensor_handle_info { public: @@ -45,14 +42,14 @@ public: csensor_handle_info(); ~csensor_handle_info(); - bool add_reg_event_info(unsigned int event_type, unsigned int interval, int cb_type, void *cb,void *user_data); + bool add_reg_event_info(unsigned int event_type, unsigned int interval, unsigned int latency, int cb_type, void *cb,void *user_data); bool delete_reg_event_info(unsigned int event_type); - bool change_reg_event_interval(unsigned int event_type, unsigned int interval); + bool change_reg_event_batch(unsigned int event_type, unsigned int interval, unsigned int latency); creg_event_info* get_reg_event_info(const unsigned int event_type); void get_reg_event_types(event_type_vector &event_types); - unsigned int get_min_interval(void); + void get_batch(unsigned int &interval, unsigned int &latency); unsigned int get_reg_event_count(void); void clear_all_events(void); diff --git a/src/libsensord/poller.h b/src/libsensord/poller.h index 5650518..eaf7d93 100755 --- a/src/libsensord/poller.h +++ b/src/libsensord/poller.h @@ -29,8 +29,6 @@ #include #include -using std::queue; - class poller { public: poller(int fd); @@ -39,7 +37,7 @@ public: bool poll(int &event); private: int m_epfd; - queue m_event_queue; + std::queue m_event_queue; bool create(int fd); bool fill_event_queue(void); diff --git a/src/libsensord/sensor_info_manager.cpp b/src/libsensord/sensor_info_manager.cpp index f4c6fe1..4a427f2 100755 --- a/src/libsensord/sensor_info_manager.cpp +++ b/src/libsensord/sensor_info_manager.cpp @@ -19,9 +19,11 @@ #include #include +#include using std::pair; using std::make_pair; +using std::vector; sensor_info_manager::sensor_info_manager() { diff --git a/src/libsensord/sensor_info_manager.h b/src/libsensord/sensor_info_manager.h index 512905f..084b5a3 100755 --- a/src/libsensord/sensor_info_manager.h +++ b/src/libsensord/sensor_info_manager.h @@ -26,23 +26,19 @@ #include #include -using std::multimap; -using std::unordered_map; -using std::unordered_set; - class sensor_info_manager { public: static sensor_info_manager& get_instance(void); const sensor_info* get_info(sensor_type_t type); - vector get_infos(sensor_type_t type); + std::vector get_infos(sensor_type_t type); const sensor_info* get_info(sensor_id_t id); bool is_valid(sensor_info* info); void add_info(sensor_info* info); private: - typedef multimap sensor_infos; - typedef unordered_map id_to_info_map; - typedef unordered_set info_set; + typedef std::multimap sensor_infos; + typedef std::unordered_map id_to_info_map; + typedef std::unordered_set info_set; sensor_info_manager(); ~sensor_info_manager(); diff --git a/src/libsensord/sensor_internal.h b/src/libsensord/sensor_internal.h old mode 100755 new mode 100644 index 49c74dc..ff107cb --- a/src/libsensord/sensor_internal.h +++ b/src/libsensord/sensor_internal.h @@ -24,6 +24,10 @@ #define DEPRECATED __attribute__((deprecated)) #endif +#ifndef API +#define API __attribute__((visibility("default"))) +#endif + #include "stdbool.h" #ifdef __cplusplus @@ -298,10 +302,11 @@ bool sensord_change_event_interval(int handle, unsigned int event_type, unsigned * @brief Change the max batch latency of a specifed event type in a connected sensor. * * @param[in] handle a handle represensting a connected sensor. + * @param[in] event_type an event type to change max batch latency * @param[in] max_batch_latency an event in the batch can be delayed by at most max_batch_latency microseconds. If this is set to zero, batch mode is disabled. * @return true on success, otherwise false. */ -bool sensord_change_event_max_batch_latency(int handle, unsigned int max_batch_latency); +bool sensord_change_event_max_batch_latency(int handle, unsigned int event_type, unsigned int max_batch_latency); /** * @brief Change the option of a connected sensor. diff --git a/src/libsensord/sensor_proxi.h b/src/libsensord/sensor_proxi.h index 22939d9..1c99fa4 100755 --- a/src/libsensord/sensor_proxi.h +++ b/src/libsensord/sensor_proxi.h @@ -40,7 +40,7 @@ enum proxi_event_type { }; enum proxi_change_state { - PROXIMITY_STATE_FAR = 0, + PROXIMITY_STATE_FAR = 0, PROXIMITY_STATE_NEAR = 1, }; diff --git a/src/light/light_sensor.cpp b/src/light/light_sensor.cpp index 73e45cc..e0a61f1 100755 --- a/src/light/light_sensor.cpp +++ b/src/light/light_sensor.cpp @@ -22,9 +22,12 @@ #include #include #include +#include using std::bind1st; using std::mem_fun; +using std::string; +using std::vector; #define SENSOR_NAME "LIGHT_SENSOR" @@ -56,7 +59,7 @@ light_sensor::~light_sensor() bool light_sensor::init() { - m_sensor_hal = sensor_plugin_loader::get_instance().get_sensor_hal(LIGHT_SENSOR); + m_sensor_hal = sensor_plugin_loader::get_instance().get_sensor_hal(SENSOR_HAL_TYPE_LIGHT); if (!m_sensor_hal) { ERR("cannot load sensor_hal[%s]", sensor_base::get_name()); @@ -64,12 +67,13 @@ bool light_sensor::init() } INFO("%s is created!", sensor_base::get_name()); + return true; } -sensor_type_t light_sensor::get_type(void) +void light_sensor::get_types(vector &types) { - return LIGHT_SENSOR; + types.push_back(LIGHT_SENSOR); } bool light_sensor::working(void *inst) @@ -148,7 +152,7 @@ bool light_sensor::on_stop(void) return stop_poll(); } -bool light_sensor::get_properties(sensor_properties_s &properties) +bool light_sensor::get_properties(sensor_type_t sensor_type, sensor_properties_s &properties) { m_sensor_hal->get_properties(properties); return true; diff --git a/src/light/light_sensor.h b/src/light/light_sensor.h index cdc8e50..1b6d0ca 100755 --- a/src/light/light_sensor.h +++ b/src/light/light_sensor.h @@ -30,14 +30,13 @@ public: virtual ~light_sensor(); virtual bool init(); - virtual sensor_type_t get_type(void); + virtual void get_types(std::vector &types); static bool working(void *inst); virtual bool set_interval(unsigned long interval); - virtual bool get_properties(sensor_properties_s &properties); int get_sensor_data(const unsigned int type, sensor_data_t &data); - + virtual bool get_properties(sensor_type_t sensor_type, sensor_properties_s &properties); private: static const int m_light_level[]; diff --git a/src/light/light_sensor_hal.cpp b/src/light/light_sensor_hal.cpp index 835a096..bf3a613 100755 --- a/src/light/light_sensor_hal.cpp +++ b/src/light/light_sensor_hal.cpp @@ -26,6 +26,7 @@ #include using std::ifstream; +using std::string; #define SENSOR_TYPE_LIGHT "LIGHT" #define ELEMENT_NAME "NAME" @@ -114,9 +115,9 @@ string light_sensor_hal::get_model_id(void) } -sensor_type_t light_sensor_hal::get_type(void) +sensor_hal_type_t light_sensor_hal::get_type(void) { - return LIGHT_SENSOR; + return SENSOR_HAL_TYPE_LIGHT; } bool light_sensor_hal::enable(void) diff --git a/src/light/light_sensor_hal.h b/src/light/light_sensor_hal.h index 89a88f1..560cb87 100755 --- a/src/light/light_sensor_hal.h +++ b/src/light/light_sensor_hal.h @@ -21,17 +21,14 @@ #define _LIGHT_SENSOR_HAL_H_ #include -#include - -using std::string; class light_sensor_hal : public sensor_hal { public: light_sensor_hal(); virtual ~light_sensor_hal(); - string get_model_id(void); - sensor_type_t get_type(void); + std::string get_model_id(void); + sensor_hal_type_t get_type(void); bool enable(void); bool disable(void); bool set_interval(unsigned long val); @@ -39,9 +36,9 @@ public: virtual int get_sensor_data(sensor_data_t &data); bool get_properties(sensor_properties_s &properties); private: - string m_model_id; - string m_vendor; - string m_chip_name; + std::string m_model_id; + std::string m_vendor; + std::string m_chip_name; unsigned long m_polling_interval; @@ -50,9 +47,9 @@ private: unsigned long long m_fired_time; int m_node_handle; - string m_enable_node; - string m_data_node; - string m_interval_node; + std::string m_enable_node; + std::string m_data_node; + std::string m_interval_node; bool m_sensorhub_controlled; diff --git a/src/linear_accel/linear_accel_sensor.cpp b/src/linear_accel/linear_accel_sensor.cpp index 6e21ab2..fc2a1bb 100755 --- a/src/linear_accel/linear_accel_sensor.cpp +++ b/src/linear_accel/linear_accel_sensor.cpp @@ -31,6 +31,9 @@ #include #include +using std::string; +using std::vector; + #define SENSOR_NAME "LINEAR_ACCEL_SENSOR" #define SENSOR_TYPE_LINEAR_ACCEL "LINEAR_ACCEL" #define SENSOR_TYPE_GRAVITY "GRAVITY" @@ -78,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(FUSION_SENSOR); + sensor_hal *fusion_sensor_hal = sensor_plugin_loader::get_instance().get_sensor_hal(SENSOR_HAL_TYPE_FUSION); if (!fusion_sensor_hal) m_hardware_fusion = false; else @@ -195,9 +198,9 @@ bool linear_accel_sensor::init() return true; } -sensor_type_t linear_accel_sensor::get_type(void) +void linear_accel_sensor::get_types(vector &types) { - return LINEAR_ACCEL_SENSOR; + types.push_back(LINEAR_ACCEL_SENSOR); } bool linear_accel_sensor::on_start(void) @@ -416,9 +419,9 @@ int linear_accel_sensor::get_sensor_data(const unsigned int event_type, sensor_d return 0; } -bool linear_accel_sensor::get_properties(sensor_properties_s &properties) +bool linear_accel_sensor::get_properties(sensor_type_t sensor_type, sensor_properties_s &properties) { - m_accel_sensor->get_properties(properties); + m_accel_sensor->get_properties(ACCELEROMETER_SENSOR, properties); properties.name = "Linear Acceleration Sensor"; properties.vendor = m_vendor; properties.resolution = 0.000001; diff --git a/src/linear_accel/linear_accel_sensor.h b/src/linear_accel/linear_accel_sensor.h index e8f8395..e201b93 100755 --- a/src/linear_accel/linear_accel_sensor.h +++ b/src/linear_accel/linear_accel_sensor.h @@ -30,15 +30,15 @@ public: virtual ~linear_accel_sensor(); bool init(); - sensor_type_t get_type(void); + virtual void get_types(std::vector &types); - void synthesize(const sensor_event_t &event, vector &outs); + void synthesize(const sensor_event_t& event, std::vector &outs); bool add_interval(int client_id, unsigned int interval); bool delete_interval(int client_id); int get_sensor_data(const unsigned int event_type, sensor_data_t &data); - bool get_properties(sensor_properties_s &properties); + virtual bool get_properties(sensor_type_t sensor_type, sensor_properties_s &properties); private: sensor_base *m_accel_sensor; sensor_base *m_gyro_sensor; @@ -56,9 +56,9 @@ private: unsigned int m_enable_linear_accel; - string m_vendor; - string m_raw_data_unit; - string m_orientation_data_unit; + std::string m_vendor; + std::string m_raw_data_unit; + std::string m_orientation_data_unit; int m_default_sampling_time; float m_accel_static_bias[3]; int m_accel_rotation_direction_compensation[3]; diff --git a/src/orientation/orientation_sensor.cpp b/src/orientation/orientation_sensor.cpp index 44d44bd..e560007 100755 --- a/src/orientation/orientation_sensor.cpp +++ b/src/orientation/orientation_sensor.cpp @@ -32,6 +32,9 @@ #include #include +using std::string; +using std::vector; + #define SENSOR_NAME "ORIENTATION_SENSOR" #define SENSOR_TYPE_ORIENTATION "ORIENTATION" @@ -61,7 +64,7 @@ orientation_sensor::orientation_sensor() { cvirtual_sensor_config &config = cvirtual_sensor_config::get_instance(); - sensor_hal *fusion_sensor_hal = sensor_plugin_loader::get_instance().get_sensor_hal(FUSION_SENSOR); + sensor_hal *fusion_sensor_hal = sensor_plugin_loader::get_instance().get_sensor_hal(SENSOR_HAL_TYPE_FUSION); if (!fusion_sensor_hal) m_hardware_fusion = false; else @@ -139,9 +142,9 @@ bool orientation_sensor::init(void) return true; } -sensor_type_t orientation_sensor::get_type(void) +void orientation_sensor::get_types(vector &types) { - return ORIENTATION_SENSOR; + types.push_back(ORIENTATION_SENSOR); } bool orientation_sensor::on_start(void) @@ -314,7 +317,7 @@ int orientation_sensor::get_sensor_data(const unsigned int event_type, sensor_da return 0; } -bool orientation_sensor::get_properties(sensor_properties_s &properties) +bool orientation_sensor::get_properties(sensor_type_t sensor_type, sensor_properties_s &properties) { if(m_raw_data_unit == "DEGREES") { properties.min_range = -180; diff --git a/src/orientation/orientation_sensor.h b/src/orientation/orientation_sensor.h index 86c39f9..070a21b 100755 --- a/src/orientation/orientation_sensor.h +++ b/src/orientation/orientation_sensor.h @@ -31,12 +31,12 @@ public: bool init(void); - void synthesize(const sensor_event_t &event, vector &outs); + void synthesize(const sensor_event_t& event, std::vector &outs); bool add_interval(int client_id, unsigned int interval); bool delete_interval(int client_id); - bool get_properties(sensor_properties_s &properties); - sensor_type_t get_type(void); + virtual bool get_properties(sensor_type_t sensor_type, sensor_properties_s &properties); + virtual void get_types(std::vector &types); int get_sensor_data(const unsigned int event_type, sensor_data_t &data); @@ -55,8 +55,8 @@ private: unsigned long long m_time; unsigned int m_interval; - string m_vendor; - string m_raw_data_unit; + std::string m_vendor; + std::string m_raw_data_unit; int m_default_sampling_time; int m_azimuth_rotation_compensation; int m_pitch_rotation_compensation; diff --git a/src/pressure/pressure_sensor.cpp b/src/pressure/pressure_sensor.cpp index 407c6f9..0559021 100755 --- a/src/pressure/pressure_sensor.cpp +++ b/src/pressure/pressure_sensor.cpp @@ -26,6 +26,8 @@ using std::bind1st; using std::mem_fun; +using std::string; +using std::vector; #define SENSOR_NAME "PRESSURE_SENSOR" #define SENSOR_TYPE_PRESSURE "PRESSURE" @@ -55,7 +57,7 @@ pressure_sensor::~pressure_sensor() bool pressure_sensor::init() { - m_sensor_hal = sensor_plugin_loader::get_instance().get_sensor_hal(PRESSURE_SENSOR); + m_sensor_hal = sensor_plugin_loader::get_instance().get_sensor_hal(SENSOR_HAL_TYPE_PRESSURE); if (!m_sensor_hal) { ERR("cannot load sensor_hal[%s]", sensor_base::get_name()); @@ -100,9 +102,9 @@ bool pressure_sensor::init() return true; } -sensor_type_t pressure_sensor::get_type(void) +void pressure_sensor::get_types(vector &types) { - return PRESSURE_SENSOR; + types.push_back(PRESSURE_SENSOR); } bool pressure_sensor::working(void *inst) @@ -152,7 +154,7 @@ bool pressure_sensor::on_stop(void) return stop_poll(); } -bool pressure_sensor::get_properties(sensor_properties_s &properties) +bool pressure_sensor::get_properties(sensor_type_t sensor_type, sensor_properties_s &properties) { return m_sensor_hal->get_properties(properties); } diff --git a/src/pressure/pressure_sensor.h b/src/pressure/pressure_sensor.h index 3430dfb..e17f587 100755 --- a/src/pressure/pressure_sensor.h +++ b/src/pressure/pressure_sensor.h @@ -31,13 +31,13 @@ public: virtual ~pressure_sensor(); bool init(); - sensor_type_t get_type(void); + virtual void get_types(std::vector &types); static bool working(void *inst); bool set_interval(unsigned long interval); - virtual bool get_properties(sensor_properties_s &properties); int get_sensor_data(unsigned int type, sensor_data_t &data); + virtual bool get_properties(sensor_type_t sensor_type, sensor_properties_s &properties); private: sensor_hal *m_sensor_hal; diff --git a/src/pressure/pressure_sensor_hal.cpp b/src/pressure/pressure_sensor_hal.cpp index 33aa181..544240f 100755 --- a/src/pressure/pressure_sensor_hal.cpp +++ b/src/pressure/pressure_sensor_hal.cpp @@ -26,6 +26,7 @@ #include using std::ifstream; +using std::string; #define SENSOR_TYPE_PRESSURE "PRESSURE" #define ELEMENT_NAME "NAME" @@ -151,9 +152,9 @@ string pressure_sensor_hal::get_model_id(void) return m_model_id; } -sensor_type_t pressure_sensor_hal::get_type(void) +sensor_hal_type_t pressure_sensor_hal::get_type(void) { - return PRESSURE_SENSOR; + return SENSOR_HAL_TYPE_PRESSURE; } bool pressure_sensor_hal::enable(void) diff --git a/src/pressure/pressure_sensor_hal.h b/src/pressure/pressure_sensor_hal.h index 04412fc..07e8e1b 100755 --- a/src/pressure/pressure_sensor_hal.h +++ b/src/pressure/pressure_sensor_hal.h @@ -21,17 +21,14 @@ #define _PRESSURE_SENSOR_HAL_H_ #include -#include - -using std::string; class pressure_sensor_hal : public sensor_hal { public: pressure_sensor_hal(); virtual ~pressure_sensor_hal(); - string get_model_id(void); - sensor_type_t get_type(void); + std::string get_model_id(void); + sensor_hal_type_t get_type(void); bool enable(void); bool disable(void); @@ -40,9 +37,9 @@ public: virtual int get_sensor_data(sensor_data_t &data); virtual bool get_properties(sensor_properties_s &properties); private: - string m_model_id; - string m_vendor; - string m_chip_name; + std::string m_model_id; + std::string m_vendor; + std::string m_chip_name; float m_pressure; float m_sea_level_pressure; @@ -60,9 +57,9 @@ private: unsigned long long m_fired_time; int m_node_handle; - string m_enable_node; - string m_data_node; - string m_interval_node; + std::string m_enable_node; + std::string m_data_node; + std::string m_interval_node; bool m_sensorhub_controlled; diff --git a/src/proxi/proxi_sensor.cpp b/src/proxi/proxi_sensor.cpp index 65809b9..05352d1 100755 --- a/src/proxi/proxi_sensor.cpp +++ b/src/proxi/proxi_sensor.cpp @@ -22,6 +22,9 @@ #include #include +using std::string; +using std::vector; + #define SENSOR_NAME "PROXI_SENSOR" proxi_sensor::proxi_sensor() @@ -44,7 +47,7 @@ proxi_sensor::~proxi_sensor() bool proxi_sensor::init() { - m_sensor_hal = sensor_plugin_loader::get_instance().get_sensor_hal(PROXIMITY_SENSOR); + m_sensor_hal = sensor_plugin_loader::get_instance().get_sensor_hal(SENSOR_HAL_TYPE_PROXIMITY); if (!m_sensor_hal) { ERR("cannot load sensor_hal[%s]", sensor_base::get_name()); @@ -55,9 +58,9 @@ bool proxi_sensor::init() return true; } -sensor_type_t proxi_sensor::get_type(void) +void proxi_sensor::get_types(vector &types) { - return PROXIMITY_SENSOR; + types.push_back(PROXIMITY_SENSOR); } bool proxi_sensor::working(void *inst) @@ -122,7 +125,7 @@ bool proxi_sensor::on_stop(void) return stop_poll(); } -bool proxi_sensor::get_properties(sensor_properties_s &properties) +bool proxi_sensor::get_properties(sensor_type_t sensor_type, sensor_properties_s &properties) { m_sensor_hal->get_properties(properties); diff --git a/src/proxi/proxi_sensor.h b/src/proxi/proxi_sensor.h index 8584f2d..9c3a009 100755 --- a/src/proxi/proxi_sensor.h +++ b/src/proxi/proxi_sensor.h @@ -30,12 +30,12 @@ public: virtual ~proxi_sensor(); bool init(); - sensor_type_t get_type(void); + virtual void get_types(std::vector &types); static bool working(void *inst); - virtual bool get_properties(sensor_properties_s &properties); int get_sensor_data(unsigned int type, sensor_data_t &data); + virtual bool get_properties(sensor_type_t sensor_type, sensor_properties_s &properties); private: sensor_hal *m_sensor_hal; diff --git a/src/proxi/proxi_sensor_hal.cpp b/src/proxi/proxi_sensor_hal.cpp index aee3f7a..7358b08 100755 --- a/src/proxi/proxi_sensor_hal.cpp +++ b/src/proxi/proxi_sensor_hal.cpp @@ -25,6 +25,7 @@ #include #include +using std::string; using std::ifstream; #define SENSOR_TYPE_PROXI "PROXI" @@ -107,9 +108,9 @@ string proxi_sensor_hal::get_model_id(void) return m_model_id; } -sensor_type_t proxi_sensor_hal::get_type(void) +sensor_hal_type_t proxi_sensor_hal::get_type(void) { - return PROXIMITY_SENSOR; + return SENSOR_HAL_TYPE_PROXIMITY; } bool proxi_sensor_hal::enable(void) diff --git a/src/proxi/proxi_sensor_hal.h b/src/proxi/proxi_sensor_hal.h index 3b96b04..a1cd3a1 100755 --- a/src/proxi/proxi_sensor_hal.h +++ b/src/proxi/proxi_sensor_hal.h @@ -21,9 +21,6 @@ #define _PROXI_SENSOR_HAL_H_ #include -#include - -using std::string; class proxi_sensor_hal : public sensor_hal { @@ -43,20 +40,20 @@ public: proxi_sensor_hal(); virtual ~proxi_sensor_hal(); - string get_model_id(void); - sensor_type_t get_type(void); + std::string get_model_id(void); + sensor_hal_type_t get_type(void); bool enable(void); bool disable(void); bool is_data_ready(bool wait); virtual int get_sensor_data(sensor_data_t &data); virtual bool get_properties(sensor_properties_s &properties); private: - string m_model_id; - string m_vendor; - string m_chip_name; + std::string m_model_id; + std::string m_vendor; + std::string m_chip_name; - string m_enable_node; - string m_data_node; + std::string m_enable_node; + std::string m_data_node; unsigned int m_state; diff --git a/src/rotation_vector/gaming_rv/gaming_rv_sensor.cpp b/src/rotation_vector/gaming_rv/gaming_rv_sensor.cpp index fa359a0..f491038 100755 --- a/src/rotation_vector/gaming_rv/gaming_rv_sensor.cpp +++ b/src/rotation_vector/gaming_rv/gaming_rv_sensor.cpp @@ -32,6 +32,9 @@ #include #include +using std::string; +using std::vector; + #define SENSOR_NAME "GAMING_RV_SENSOR" #define SENSOR_TYPE_GAMING_RV "GAMING_ROTATION_VECTOR" @@ -69,7 +72,7 @@ gaming_rv_sensor::gaming_rv_sensor() { cvirtual_sensor_config &config = cvirtual_sensor_config::get_instance(); - sensor_hal *fusion_sensor_hal = sensor_plugin_loader::get_instance().get_sensor_hal(FUSION_SENSOR); + sensor_hal *fusion_sensor_hal = sensor_plugin_loader::get_instance().get_sensor_hal(SENSOR_HAL_TYPE_FUSION); if (!fusion_sensor_hal) m_hardware_fusion = false; else @@ -161,9 +164,9 @@ bool gaming_rv_sensor::init() return true; } -sensor_type_t gaming_rv_sensor::get_type(void) +void gaming_rv_sensor::get_types(vector &types) { - return GAMING_RV_SENSOR; + types.push_back(GAMING_RV_SENSOR); } bool gaming_rv_sensor::on_start(void) @@ -316,7 +319,7 @@ int gaming_rv_sensor::get_sensor_data(unsigned int event_type, sensor_data_t &da return 0; } -bool gaming_rv_sensor::get_properties(sensor_properties_s &properties) +bool gaming_rv_sensor::get_properties(sensor_type_t sensor_type, sensor_properties_s &properties) { properties.vendor = m_vendor; properties.name = SENSOR_NAME; diff --git a/src/rotation_vector/gaming_rv/gaming_rv_sensor.h b/src/rotation_vector/gaming_rv/gaming_rv_sensor.h index db9dd47..1b748b1 100755 --- a/src/rotation_vector/gaming_rv/gaming_rv_sensor.h +++ b/src/rotation_vector/gaming_rv/gaming_rv_sensor.h @@ -31,12 +31,12 @@ public: bool init(void); - void synthesize(const sensor_event_t &event, vector &outs); + void synthesize(const sensor_event_t &event, std::vector &outs); bool add_interval(int client_id, unsigned int interval); bool delete_interval(int client_id); - bool get_properties(sensor_properties_s &properties); - sensor_type_t get_type(void); + virtual bool get_properties(sensor_type_t sensor_type, sensor_properties_s &properties); + virtual void get_types(std::vector &types); int get_sensor_data(const unsigned int event_type, sensor_data_t &data); @@ -58,8 +58,8 @@ private: unsigned long long m_time; unsigned int m_interval; - string m_vendor; - string m_raw_data_unit; + std::string m_vendor; + std::string m_raw_data_unit; int m_default_sampling_time; float m_accel_static_bias[3]; diff --git a/src/rotation_vector/geomagnetic_rv/geomagnetic_rv_sensor.cpp b/src/rotation_vector/geomagnetic_rv/geomagnetic_rv_sensor.cpp index c3e8a26..f4aafe8 100755 --- a/src/rotation_vector/geomagnetic_rv/geomagnetic_rv_sensor.cpp +++ b/src/rotation_vector/geomagnetic_rv/geomagnetic_rv_sensor.cpp @@ -32,6 +32,9 @@ #include #include +using std::string; +using std::vector; + #define SENSOR_NAME "GEOMAGNETIC_RV_SENSOR" #define SENSOR_TYPE_GEOMAGNETIC_RV "GEOMAGNETIC_ROTATION_VECTOR" @@ -50,7 +53,7 @@ geomagnetic_rv_sensor::geomagnetic_rv_sensor() { cvirtual_sensor_config &config = cvirtual_sensor_config::get_instance(); - sensor_hal *fusion_sensor_hal = sensor_plugin_loader::get_instance().get_sensor_hal(FUSION_SENSOR); + sensor_hal *fusion_sensor_hal = sensor_plugin_loader::get_instance().get_sensor_hal(SENSOR_HAL_TYPE_FUSION); if (!fusion_sensor_hal) m_hardware_fusion = false; else @@ -99,9 +102,9 @@ bool geomagnetic_rv_sensor::init() return true; } -sensor_type_t geomagnetic_rv_sensor::get_type(void) +void geomagnetic_rv_sensor::get_types(vector &types) { - return GEOMAGNETIC_RV_SENSOR; + types.push_back(GEOMAGNETIC_RV_SENSOR); } bool geomagnetic_rv_sensor::on_start(void) @@ -227,7 +230,7 @@ int geomagnetic_rv_sensor::get_sensor_data(unsigned int event_type, sensor_data_ return 0; } -bool geomagnetic_rv_sensor::get_properties(sensor_properties_s &properties) +bool geomagnetic_rv_sensor::get_properties(sensor_type_t sensor_type, sensor_properties_s &properties) { properties.vendor = m_vendor; properties.name = SENSOR_NAME; diff --git a/src/rotation_vector/geomagnetic_rv/geomagnetic_rv_sensor.h b/src/rotation_vector/geomagnetic_rv/geomagnetic_rv_sensor.h index c87d252..f5ad4b7 100755 --- a/src/rotation_vector/geomagnetic_rv/geomagnetic_rv_sensor.h +++ b/src/rotation_vector/geomagnetic_rv/geomagnetic_rv_sensor.h @@ -31,12 +31,12 @@ public: bool init(void); - void synthesize(const sensor_event_t &event, vector &outs); + void synthesize(const sensor_event_t &event, std::vector &outs); bool add_interval(int client_id, unsigned int interval); bool delete_interval(int client_id); - bool get_properties(sensor_properties_s &properties); - sensor_type_t get_type(void); + virtual bool get_properties(sensor_type_t sensor_type, sensor_properties_s &properties); + virtual void get_types(std::vector &types); int get_sensor_data(const unsigned int event_type, sensor_data_t &data); @@ -53,8 +53,8 @@ private: unsigned long long m_time; unsigned int m_interval; - string m_vendor; - string m_raw_data_unit; + std::string m_vendor; + std::string m_raw_data_unit; int m_default_sampling_time; bool on_start(void); diff --git a/src/rotation_vector/rv/rv_sensor.cpp b/src/rotation_vector/rv/rv_sensor.cpp index bcf20e2..e42716b 100755 --- a/src/rotation_vector/rv/rv_sensor.cpp +++ b/src/rotation_vector/rv/rv_sensor.cpp @@ -32,6 +32,9 @@ #include #include +using std::string; +using std::vector; + #define SENSOR_NAME "RV_SENSOR" #define SENSOR_TYPE_RV "ROTATION_VECTOR" @@ -63,7 +66,7 @@ rv_sensor::rv_sensor() cvirtual_sensor_config &config = cvirtual_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(FUSION_SENSOR); + sensor_hal *fusion_sensor_hal = sensor_plugin_loader::get_instance().get_sensor_hal(SENSOR_HAL_TYPE_FUSION); if (!fusion_sensor_hal) m_hardware_fusion = false; else @@ -114,9 +117,9 @@ bool rv_sensor::init() return true; } -sensor_type_t rv_sensor::get_type(void) +void rv_sensor::get_types(vector &types) { - return ROTATION_VECTOR_SENSOR; + types.push_back(ROTATION_VECTOR_SENSOR); } bool rv_sensor::on_start(void) @@ -249,7 +252,7 @@ int rv_sensor::get_sensor_data(unsigned int event_type, sensor_data_t &data) return 0; } -bool rv_sensor::get_properties(sensor_properties_s &properties) +bool rv_sensor::get_properties(sensor_type_t sensor_type, sensor_properties_s &properties) { properties.vendor = m_vendor; properties.name = SENSOR_NAME; diff --git a/src/rotation_vector/rv/rv_sensor.h b/src/rotation_vector/rv/rv_sensor.h index 3e5de3d..00f9761 100755 --- a/src/rotation_vector/rv/rv_sensor.h +++ b/src/rotation_vector/rv/rv_sensor.h @@ -31,12 +31,12 @@ public: bool init(void); - void synthesize(const sensor_event_t &event, vector &outs); + void synthesize(const sensor_event_t &event, std::vector &outs); bool add_interval(int client_id, unsigned int interval); bool delete_interval(int client_id); - bool get_properties(sensor_properties_s &properties); - sensor_type_t get_type(void); + virtual bool get_properties(sensor_type_t sensor_type, sensor_properties_s &properties); + virtual void get_types(std::vector &types); int get_sensor_data(const unsigned int event_type, sensor_data_t &data); @@ -60,8 +60,8 @@ private: unsigned long long m_time; unsigned int m_interval; - string m_vendor; - string m_raw_data_unit; + std::string m_vendor; + std::string m_raw_data_unit; int m_default_sampling_time; bool on_start(void); diff --git a/src/rotation_vector/rv_raw/rv_raw_sensor.cpp b/src/rotation_vector/rv_raw/rv_raw_sensor.cpp index 3e017ce..f1b3a2b 100755 --- a/src/rotation_vector/rv_raw/rv_raw_sensor.cpp +++ b/src/rotation_vector/rv_raw/rv_raw_sensor.cpp @@ -23,6 +23,9 @@ #include #include +using std::string; +using std::vector; + #define SENSOR_NAME "RV_RAW_SENSOR" rv_raw_sensor::rv_raw_sensor() @@ -43,7 +46,7 @@ rv_raw_sensor::~rv_raw_sensor() bool rv_raw_sensor::init() { - m_sensor_hal = sensor_plugin_loader::get_instance().get_sensor_hal(RV_RAW_SENSOR); + m_sensor_hal = sensor_plugin_loader::get_instance().get_sensor_hal(SENSOR_HAL_TYPE_RV_RAW); if (!m_sensor_hal) { ERR("cannot load sensor_hal[%s]", sensor_base::get_name()); @@ -64,9 +67,9 @@ bool rv_raw_sensor::init() return true; } -sensor_type_t rv_raw_sensor::get_type(void) +void rv_raw_sensor::get_types(vector &types) { - return RV_RAW_SENSOR; + types.push_back(RV_RAW_SENSOR); } bool rv_raw_sensor::working(void *inst) @@ -116,7 +119,7 @@ bool rv_raw_sensor::on_stop(void) return stop_poll(); } -bool rv_raw_sensor::get_properties(sensor_properties_t &properties) +bool rv_raw_sensor::get_properties(sensor_type_t sensor_type, sensor_properties_s &properties) { return m_sensor_hal->get_properties(properties); } diff --git a/src/rotation_vector/rv_raw/rv_raw_sensor.h b/src/rotation_vector/rv_raw/rv_raw_sensor.h index 4d04a4b..f55d0a1 100755 --- a/src/rotation_vector/rv_raw/rv_raw_sensor.h +++ b/src/rotation_vector/rv_raw/rv_raw_sensor.h @@ -31,13 +31,13 @@ public: virtual ~rv_raw_sensor(); virtual bool init(); - virtual sensor_type_t get_type(void); + virtual void get_types(std::vector &types); static bool working(void *inst); virtual bool set_interval(unsigned long interval); - virtual bool get_properties(sensor_properties_t &properties); int get_sensor_data(unsigned int type, sensor_data_t &data); + virtual bool get_properties(sensor_type_t sensor_type, sensor_properties_s &properties); private: sensor_hal *m_sensor_hal; diff --git a/src/rotation_vector/rv_raw/rv_raw_sensor_hal.cpp b/src/rotation_vector/rv_raw/rv_raw_sensor_hal.cpp index 261a81e..11eb5c4 100755 --- a/src/rotation_vector/rv_raw/rv_raw_sensor_hal.cpp +++ b/src/rotation_vector/rv_raw/rv_raw_sensor_hal.cpp @@ -26,6 +26,7 @@ #include using std::ifstream; +using std::string; #define SENSOR_TYPE_RV_RAW "ROTATION_VECTOR" #define ELEMENT_NAME "NAME" @@ -108,9 +109,9 @@ string rv_raw_sensor_hal::get_model_id(void) return m_model_id; } -sensor_type_t rv_raw_sensor_hal::get_type(void) +sensor_hal_type_t rv_raw_sensor_hal::get_type(void) { - return RV_RAW_SENSOR; + return SENSOR_HAL_TYPE_RV_RAW; } bool rv_raw_sensor_hal::enable(void) diff --git a/src/rotation_vector/rv_raw/rv_raw_sensor_hal.h b/src/rotation_vector/rv_raw/rv_raw_sensor_hal.h index 565b509..382f454 100755 --- a/src/rotation_vector/rv_raw/rv_raw_sensor_hal.h +++ b/src/rotation_vector/rv_raw/rv_raw_sensor_hal.h @@ -21,17 +21,14 @@ #define _RV_RAW_SENSOR_HAL_H_ #include -#include - -using std::string; class rv_raw_sensor_hal : public sensor_hal { public: rv_raw_sensor_hal(); virtual ~rv_raw_sensor_hal(); - string get_model_id(void); - sensor_type_t get_type(void); + std::string get_model_id(void); + sensor_hal_type_t get_type(void); bool enable(void); bool disable(void); bool set_interval(unsigned long val); @@ -39,9 +36,9 @@ public: virtual int get_sensor_data(sensor_data_t &data); virtual bool get_properties(sensor_properties_t &properties); private: - string m_model_id; - string m_vendor; - string m_chip_name; + std::string m_model_id; + std::string m_vendor; + std::string m_chip_name; unsigned long m_polling_interval; @@ -54,9 +51,9 @@ private: unsigned long long m_fired_time; int m_node_handle; - string m_enable_node; - string m_data_node; - string m_interval_node; + std::string m_enable_node; + std::string m_data_node; + std::string m_interval_node; bool m_sensorhub_controlled; diff --git a/src/server/command_worker.cpp b/src/server/command_worker.cpp old mode 100755 new mode 100644 index 09e633f..e88c897 --- a/src/server/command_worker.cpp +++ b/src/server/command_worker.cpp @@ -28,11 +28,13 @@ #include #include #include +#include #include #include #include using std::string; +using std::vector; using std::make_pair; using std::set; @@ -47,6 +49,7 @@ command_worker::command_worker(const csocket& socket) , m_permission(SENSOR_PERMISSION_NONE) , m_socket(socket) , m_module(NULL) +, m_sensor_id(UNKNOWN_SENSOR) { static bool init = false; @@ -84,8 +87,8 @@ void command_worker::init_cmd_handlers(void) m_cmd_handlers[CMD_REG] = &command_worker::cmd_register_event; m_cmd_handlers[CMD_UNREG] = &command_worker::cmd_unregister_event; m_cmd_handlers[CMD_SET_OPTION] = &command_worker::cmd_set_option; - m_cmd_handlers[CMD_SET_INTERVAL] = &command_worker::cmd_set_interval; - m_cmd_handlers[CMD_UNSET_INTERVAL] = &command_worker::cmd_unset_interval; + m_cmd_handlers[CMD_SET_BATCH] = &command_worker::cmd_set_batch; + m_cmd_handlers[CMD_UNSET_BATCH] = &command_worker::cmd_unset_batch; m_cmd_handlers[CMD_SET_COMMAND] = &command_worker::cmd_set_command; m_cmd_handlers[CMD_GET_DATA] = &command_worker::cmd_get_data; m_cmd_handlers[CMD_SEND_SENSORHUB_DATA] = &command_worker::cmd_send_sensorhub_data; @@ -147,17 +150,26 @@ void command_worker::make_sensor_raw_data_map(void) sensors = sensor_plugin_loader::get_instance().get_sensors(ALL_SENSOR); + std::sort(sensors.begin(), sensors.end()); + auto last = std::unique(sensors.begin(), sensors.end()); + auto it_sensor = sensors.begin(); - while (it_sensor != sensors.end()) { - (*it_sensor)->get_sensor_info(info); - permission = (*it_sensor)->get_permission(); + while (it_sensor != last) { + + vector types; + (*it_sensor)->get_types(types); - 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())); + for (unsigned int i = 0; i < types.size(); ++i) { + (*it_sensor)->get_sensor_info(types[i], info); + permission = (*it_sensor)->get_permission(); - info.get_raw_data(it_sensor_raw_data->second); - info.clear(); + 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; } } @@ -213,7 +225,7 @@ bool command_worker::stopped(void *ctx) if ((inst->m_module) && (inst->m_client_id != CLIENT_ID_INVALID)) { - get_client_info_manager().get_registered_events(inst->m_client_id, inst->m_module->get_id(), event_vec); + get_client_info_manager().get_registered_events(inst->m_client_id, inst->m_sensor_id, event_vec); auto it_event = event_vec.begin(); @@ -225,16 +237,16 @@ bool command_worker::stopped(void *ctx) ++it_event; } - if (get_client_info_manager().is_started(inst->m_client_id, inst->m_module->get_id())) { + if (get_client_info_manager().is_started(inst->m_client_id, inst->m_sensor_id)) { WARN("Does not receive cmd_stop before connection broken for [%s]!!", inst->m_module->get_name()); inst->m_module->delete_interval(inst->m_client_id, false); inst->m_module->stop(); } - if (inst->m_module->get_id()) { - if (get_client_info_manager().has_sensor_record(inst->m_client_id, inst->m_module->get_id())) { - INFO("Removing sensor[0x%x] record for client_id[%d]", inst->m_module->get_id(), inst->m_client_id); - get_client_info_manager().remove_sensor_record(inst->m_client_id, inst->m_module->get_id()); + 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); + get_client_info_manager().remove_sensor_record(inst->m_client_id, inst->m_sensor_id); } } } @@ -356,12 +368,20 @@ bool command_worker::cmd_get_id(void *payload) { cmd_get_id_t *cmd; int client_id; + struct ucred cr; + socklen_t opt_len = sizeof(cr); DBG("CMD_GET_ID Handler invoked\n"); cmd = (cmd_get_id_t*)payload; + if (getsockopt(m_socket.get_socket_fd(), SOL_SOCKET, SO_PEERCRED, &cr, &opt_len)) { + ERR("Failed to get socket option with SO_PEERCRED"); + return false; + } + client_id = get_client_info_manager().create_client_record(); - get_client_info_manager().set_client_info(client_id, cmd->pid); + + get_client_info_manager().set_client_info(client_id, cr.pid, cmd->name); m_permission = get_permission(); get_client_info_manager().set_permission(client_id, m_permission); @@ -393,6 +413,7 @@ bool command_worker::cmd_hello(void *payload) DBG("CMD_HELLO Handler invoked\n"); cmd = (cmd_hello_t*)payload; + m_sensor_id = cmd->sensor; m_client_id = cmd->client_id; if (m_permission == SENSOR_PERMISSION_NONE) @@ -410,14 +431,14 @@ bool command_worker::cmd_hello(void *payload) } if (!is_permission_allowed()) { - ERR("Permission denied to connect sensor[0x%x] for client [%d]", m_module->get_id(), m_client_id); + ERR("Permission denied to connect sensor[0x%x] for client [%d]", m_sensor_id, m_client_id); ret_value = OP_ERROR; goto out; } - DBG("Hello sensor [0x%x], client id [%d]", m_module->get_id(), m_client_id); - get_client_info_manager().create_sensor_record(m_client_id, m_module->get_id()); - INFO("New sensor record created for sensor [0x%x], sensor name [%s] on client id [%d]\n", m_module->get_id(), m_module->get_name(), m_client_id); + DBG("Hello sensor [0x%x], 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); ret_value = OP_SUCCESS; out: if (!send_cmd_done(ret_value)) @@ -431,14 +452,14 @@ 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_module? m_module->get_id() : -1, m_client_id); + ERR("Permission denied to stop sensor[0x%x] 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_module->get_id()); + DBG("CMD_BYEBYE for client [%d], sensor [0x%x]", m_client_id, m_sensor_id); - if (!get_client_info_manager().remove_sensor_record(m_client_id, m_module->get_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); ret_value = OP_ERROR; goto out; @@ -462,24 +483,24 @@ 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_module? m_module->get_id() : -1, m_client_id); + ERR("Permission denied to start sensor[0x%x] 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_module->get_id(), m_client_id); + DBG("START Sensor [0x%x], called from client [%d]", m_sensor_id, m_client_id); if (m_module->start()) { - get_client_info_manager().set_start(m_client_id, m_module->get_id(), true); + get_client_info_manager().set_start(m_client_id, m_sensor_id, true); /* * Rotation could be changed even LCD is off by pop sync rotation * and a client listening rotation event with always-on option. * To reflect the last rotation state, request it to event dispatcher. */ - get_event_dispathcher().request_last_event(m_client_id, m_module->get_id()); + 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_module->get_id(), m_client_id); + ERR("Failed to start sensor [0x%x] for client [%d]", m_sensor_id, m_client_id); ret_value = OP_ERROR; } @@ -495,18 +516,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_module? m_module->get_id() : -1, m_client_id); + ERR("Permission denied to stop sensor[0x%x] 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_module->get_id(), m_client_id); + DBG("STOP Sensor [0x%x], called from client [%d]", m_sensor_id, m_client_id); if (m_module->stop()) { - get_client_info_manager().set_start(m_client_id, m_module->get_id(), false); + 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_module->get_id(), m_client_id); + ERR("Failed to stop sensor [0x%x] for client [%d]", m_sensor_id, m_client_id); ret_value = OP_ERROR; } @@ -531,7 +552,7 @@ bool command_worker::cmd_register_event(void *payload) goto out; } - if (!get_client_info_manager().register_event(m_client_id, m_module? m_module->get_id() : -1, cmd->event_type)) { + if (!get_client_info_manager().register_event(m_client_id, m_sensor_id, cmd->event_type)) { INFO("Failed to register event [0x%x] for client [%d] to client info manager", cmd->event_type, m_client_id); ret_value = OP_ERROR; @@ -565,7 +586,7 @@ bool command_worker::cmd_unregister_event(void *payload) goto out; } - if (!get_client_info_manager().unregister_event(m_client_id, m_module->get_id(), cmd->event_type)) { + if (!get_client_info_manager().unregister_event(m_client_id, m_sensor_id, cmd->event_type)) { ERR("Failed to unregister event [0x%x] for client [%d] from client info manager", cmd->event_type, m_client_id); ret_value = OP_ERROR; @@ -590,30 +611,30 @@ out: return true; } -bool command_worker::cmd_set_interval(void *payload) +bool command_worker::cmd_set_batch(void *payload) { - cmd_set_interval_t *cmd; + cmd_set_batch_t *cmd; long ret_value = OP_ERROR; - cmd = (cmd_set_interval_t*)payload; + cmd = (cmd_set_batch_t*)payload; if (!is_permission_allowed()) { - ERR("Permission denied to register interval for client [%d], for sensor [0x%x] with interval [%d] to client info manager", - m_client_id, m_module? m_module->get_id() : -1, cmd->interval); + ERR("Permission denied to set batch for client [%d], for sensor [0x%x] 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_interval(m_client_id, m_module->get_id(), cmd->interval)) { - ERR("Failed to register interval for client [%d], for sensor [0x%x] with interval [%d] to client info manager", - m_client_id, m_module->get_id(), cmd->interval); + 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", + 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]", - m_client_id, m_module->get_id(), cmd->interval); + m_client_id, m_sensor_id, cmd->interval); ret_value = OP_ERROR; goto out; } @@ -627,20 +648,20 @@ out: return true; } -bool command_worker::cmd_unset_interval(void *payload) +bool command_worker::cmd_unset_batch(void *payload) { long ret_value = OP_ERROR; if (!is_permission_allowed()) { - ERR("Permission denied to unregister interval for client [%d], for sensor [0x%x] to client info manager", - m_client_id, m_module? m_module->get_id() : -1); + ERR("Permission denied to unset batch for client [%d], for sensor [0x%x] to client info manager", + m_client_id, m_sensor_id); ret_value = OP_ERROR; goto out; } - if (!get_client_info_manager().set_interval(m_client_id, m_module->get_id(), 0)) { - ERR("Failed to unregister interval for client [%d], for sensor [0x%x] to client info manager", - m_client_id, m_module->get_id()); + 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", + m_client_id, m_sensor_id); ret_value = OP_ERROR; goto out; } @@ -669,14 +690,14 @@ bool command_worker::cmd_set_option(void *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", - m_client_id, m_module? m_module->get_id() : -1, cmd->option); + 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_module->get_id(), cmd->option)) { + 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", - m_client_id, m_module->get_id(), cmd->option); + m_client_id, m_sensor_id, cmd->option); ret_value = OP_ERROR; goto out; } @@ -700,7 +721,7 @@ bool command_worker::cmd_set_command(void *payload) if (!is_permission_allowed()) { ERR("Permission denied to set command for client [%d], for sensor [0x%x] with cmd [%d]", - m_client_id, m_module? m_module->get_id() : -1, cmd->cmd); + m_client_id, m_sensor_id, cmd->cmd); ret_value = OP_ERROR; goto out; } @@ -729,7 +750,7 @@ bool command_worker::cmd_get_data(void *payload) if (!is_permission_allowed()) { ERR("Permission denied to get data for client [%d], for sensor [0x%x]", - m_client_id, m_module? m_module->get_id() : -1); + m_client_id, m_sensor_id); state = OP_ERROR; goto out; } @@ -744,7 +765,7 @@ bool command_worker::cmd_get_data(void *payload) // 5. repeat 2 ~ 4 operations RETRY_CNT times // 6. reverting back to original interval if (!state && !data.timestamp) { - const int RETRY_CNT = 3; + const int RETRY_CNT = 5; const unsigned long long INIT_WAIT_TIME = 20000; //20ms const unsigned long WAIT_TIME = 100000; //100ms int retry = 0; @@ -757,7 +778,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_module->get_id(), m_client_id, retry); + INFO("Wait sensor[0x%x] 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(cmd->type, data); } @@ -771,7 +792,7 @@ bool command_worker::cmd_get_data(void *payload) if (state) { ERR("Failed to get data for client [%d], for sensor [0x%x]", - m_client_id, m_module->get_id()); + m_client_id, m_sensor_id); } out: @@ -791,7 +812,7 @@ bool command_worker::cmd_send_sensorhub_data(void *payload) if (!is_permission_allowed()) { ERR("Permission denied to send sensorhub_data for client [%d], for sensor [0x%x]", - m_client_id, m_module? m_module->get_id() : -1); + m_client_id, m_sensor_id); ret_value = OP_ERROR; goto out; } diff --git a/src/server/command_worker.h b/src/server/command_worker.h old mode 100755 new mode 100644 index 33f1b0a..89796f5 --- a/src/server/command_worker.h +++ b/src/server/command_worker.h @@ -26,9 +26,7 @@ #include #include -using std::multimap; - -typedef multimap sensor_raw_data_map; +typedef std::multimap sensor_raw_data_map; void insert_priority_list(unsigned int); class command_worker { @@ -43,6 +41,7 @@ private: csocket m_socket; worker_thread m_worker; sensor_base *m_module; + sensor_id_t m_sensor_id; static cmd_handler_t m_cmd_handlers[CMD_CNT]; static cpacket m_sensor_list; static sensor_raw_data_map m_sensor_raw_data_map; @@ -70,14 +69,14 @@ private: bool cmd_stop(void *payload); bool cmd_register_event(void *payload); bool cmd_unregister_event(void *payload); - bool cmd_set_interval(void *payload); - bool cmd_unset_interval(void *payload); + bool cmd_set_batch(void *payload); + bool cmd_unset_batch(void *payload); bool cmd_set_option(void *payload); bool cmd_set_command(void *payload); bool cmd_get_data(void *payload); bool cmd_send_sensorhub_data(void *payload); - void get_info(string &info); + void get_info(std::string &info); int get_permission(void); bool is_permission_allowed(void); diff --git a/src/server/main.cpp b/src/server/main.cpp index c9be4e0..91c8674 100755 --- a/src/server/main.cpp +++ b/src/server/main.cpp @@ -22,6 +22,9 @@ #include #include #include +#include + +using std::string; static void sig_term_handler(int signo, siginfo_t *info, void *data) { @@ -60,8 +63,6 @@ int main(int argc, char *argv[]) server::get_instance().stop(); - sensor_plugin_loader::get_instance().destroy(); - INFO("Sensord terminated"); return 0; } diff --git a/src/server/permission_checker.cpp b/src/server/permission_checker.cpp index f4fff18..dea1763 100755 --- a/src/server/permission_checker.cpp +++ b/src/server/permission_checker.cpp @@ -81,7 +81,7 @@ void permission_checker::init() m_permission_infos.push_back(std::make_shared (SENSOR_PERMISSION_STANDARD, false, "")); m_permission_infos.push_back(std::make_shared (SENSOR_PERMISSION_BIO, true, "http://tizen.org/privilege/healthinfo")); - vector sensors; + std::vector sensors; sensors = sensor_plugin_loader::get_instance().get_sensors(ALL_SENSOR); for (unsigned int i = 0; i < sensors.size(); ++i) diff --git a/src/shared/CMakeLists.txt b/src/shared/CMakeLists.txt old mode 100755 new mode 100644 index 2cadc1a..cdc35ee --- a/src/shared/CMakeLists.txt +++ b/src/shared/CMakeLists.txt @@ -29,6 +29,7 @@ add_library(sensord-server SHARED cclient_info_manager.cpp cclient_sensor_record.cpp cinterval_info_list.cpp + batch_info_list.cpp sensor_plugin_loader.cpp sensor_hal.cpp sensor_base.cpp @@ -63,6 +64,7 @@ install(FILES cvirtual_sensor_config.h csensor_event_queue.h cinterval_info_list.h + batch_info_list.h sensor_plugin_loader.h sensor_hal.h sensor_base.h diff --git a/src/shared/batch_info_list.cpp b/src/shared/batch_info_list.cpp new file mode 100644 index 0000000..0fd84b1 --- /dev/null +++ b/src/shared/batch_info_list.cpp @@ -0,0 +1,90 @@ +/* + * 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. + * + */ + +#include +#include + +using std::pair; +using std::shared_ptr; + +batch_info::batch_info(unsigned int interval, unsigned int latency) +{ + this->interval = interval; + this->latency = latency; +} + +bool batch_info_list::add_batch(int id, unsigned int interval, unsigned int latency) +{ + auto it_batch_info = m_batch_infos.find(id); + + if (it_batch_info != m_batch_infos.end()) { + it_batch_info->second->interval = interval; + it_batch_info->second->latency = latency; + return true; + } + + m_batch_infos.insert(pair> (id, std::make_shared (interval, latency))); + return true; +} + +bool batch_info_list::delete_batch(int id) +{ + auto it_batch_info = m_batch_infos.find(id); + + if (it_batch_info == m_batch_infos.end()) + return false; + + m_batch_infos.erase(it_batch_info); + return true; +} + +bool batch_info_list::get_batch(int id, unsigned int &interval, unsigned int &latency) +{ + auto it_batch_info = m_batch_infos.find(id); + + if (it_batch_info == m_batch_infos.end()) + return false; + + interval = it_batch_info->second->interval; + latency = it_batch_info->second->latency; + + return true; +} + +bool batch_info_list::get_best_batch(unsigned int &interval, unsigned int &latency) +{ + if (m_batch_infos.empty()) + return false; + + auto get_min_interval = [](pair> &a, pair> &b){ + return (a.second->interval < b.second->interval); + }; + + auto get_min_latency = [](pair> &a, pair> &b){ + return (a.second->latency < b.second->latency); + }; + + auto it_interval_min = std::min_element(m_batch_infos.begin(), m_batch_infos.end(), get_min_interval); + auto it_latency_min = std::min_element(m_batch_infos.begin(), m_batch_infos.end(), get_min_latency); + + interval = it_interval_min->second->interval; + latency = it_latency_min->second->latency; + + return true; +} diff --git a/src/shared/batch_info_list.h b/src/shared/batch_info_list.h new file mode 100644 index 0000000..d6c22f0 --- /dev/null +++ b/src/shared/batch_info_list.h @@ -0,0 +1,45 @@ +/* + * 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 _BATCH_INFO_LIST_CLASS_H_ +#define _BATCH_INFO_LIST_CLASS_H_ + +#include +#include + +class batch_info +{ +public: + batch_info(unsigned int interval, unsigned int latency); + unsigned int interval; + unsigned int latency; +}; + +class batch_info_list +{ +private: + std::unordered_map> m_batch_infos; + +public: + bool add_batch(int id, unsigned int interval, unsigned int latency); + bool delete_batch(int id); + bool get_batch(int id, unsigned int &interval, unsigned int &latency); + bool get_best_batch(unsigned int &interval, unsigned int &latency); +}; +#endif diff --git a/src/shared/cclient_info_manager.cpp b/src/shared/cclient_info_manager.cpp old mode 100755 new mode 100644 index 3302167..1a142de --- a/src/shared/cclient_info_manager.cpp +++ b/src/shared/cclient_info_manager.cpp @@ -22,6 +22,7 @@ #include using std::pair; +using std::string; cclient_info_manager::cclient_info_manager() { @@ -37,21 +38,6 @@ cclient_info_manager& cclient_info_manager::get_instance() return inst; } - -unsigned int cclient_info_manager::get_interval(int client_id, sensor_id_t sensor_id) -{ - AUTOLOCK(m_mutex); - - auto it_record = m_clients.find(client_id); - - if (it_record == m_clients.end()) { - ERR("Client[%d] is not found", client_id); - return 0; - } - - return it_record->second.get_interval(sensor_id); -} - bool cclient_info_manager::get_registered_events(int client_id, sensor_id_t sensor_id, event_type_vector &event_vec) { AUTOLOCK(m_mutex); @@ -104,7 +90,7 @@ bool cclient_info_manager::unregister_event(int client_id, sensor_id_t sensor_id return true; } -bool cclient_info_manager::set_interval(int client_id, sensor_id_t sensor_id, unsigned int interval) +bool cclient_info_manager::set_batch(int client_id, sensor_id_t sensor_id, unsigned int interval, unsigned latency) { AUTOLOCK(m_mutex); @@ -115,10 +101,21 @@ bool cclient_info_manager::set_interval(int client_id, sensor_id_t sensor_id, un return false; } - if(!it_record->second.set_interval(sensor_id, interval)) + return it_record->second.set_batch(sensor_id, interval, latency); +} + +bool cclient_info_manager::get_batch(int client_id, sensor_id_t sensor_id, unsigned int &interval, unsigned int &latency) +{ + AUTOLOCK(m_mutex); + + auto it_record = m_clients.find(client_id); + + if (it_record == m_clients.end()) { + ERR("Client[%d] is not found", client_id); return false; + } - return true; + return it_record->second.get_batch(sensor_id, interval, latency); } bool cclient_info_manager::set_option(int client_id, sensor_id_t sensor_id, int option) @@ -224,7 +221,7 @@ bool cclient_info_manager::has_client_record(int client_id) } -void cclient_info_manager::set_client_info(int client_id, pid_t pid) +void cclient_info_manager::set_client_info(int client_id, pid_t pid, const string &name) { AUTOLOCK(m_mutex); @@ -235,7 +232,7 @@ void cclient_info_manager::set_client_info(int client_id, pid_t pid) return; } - it_record->second.set_client_info(pid); + it_record->second.set_client_info(pid, name); return; } diff --git a/src/shared/cclient_info_manager.h b/src/shared/cclient_info_manager.h old mode 100755 new mode 100644 index ccf67ae..e36c2fb --- a/src/shared/cclient_info_manager.h +++ b/src/shared/cclient_info_manager.h @@ -24,10 +24,10 @@ #include #include #include -using std::unordered_map; +#include -typedef unordered_map client_id_sensor_record_map; -typedef vector client_id_vec; +typedef std::unordered_map client_id_sensor_record_map; +typedef std::vector client_id_vec; class cclient_info_manager { @@ -37,7 +37,7 @@ public: bool remove_client_record(int client_id); bool has_client_record(int client_id); - void set_client_info(int client_id, pid_t pid); + void set_client_info(int client_id, pid_t pid, const std::string &name); const char* get_client_info(int client_id); bool set_permission(int client_id, int permission); @@ -51,8 +51,8 @@ public: bool register_event(int client_id, sensor_id_t sensor_id, unsigned int event_type); bool unregister_event(int client_id, sensor_id_t sensor_id, unsigned int event_type); - bool set_interval(int client_id, sensor_id_t sensor_id, unsigned int interval); - unsigned int get_interval(int client_id, sensor_id_t sensor_id); + bool set_batch(int client_id, sensor_id_t sensor_id, unsigned int interval, unsigned int latency); + bool get_batch(int client_id, sensor_id_t sensor_id, unsigned int &interval, unsigned int &latency); bool set_option(int client_id, sensor_id_t sensor_id, int option); bool set_start(int client_id, sensor_id_t sensor_id, bool start); diff --git a/src/shared/cclient_sensor_record.cpp b/src/shared/cclient_sensor_record.cpp old mode 100755 new mode 100644 index a302e4c..6995862 --- a/src/shared/cclient_sensor_record.cpp +++ b/src/shared/cclient_sensor_record.cpp @@ -21,6 +21,7 @@ #include using std::pair; +using std::string; cclient_sensor_record::cclient_sensor_record() : m_client_id(0) @@ -72,21 +73,6 @@ bool cclient_sensor_record::unregister_event(sensor_id_t sensor_id, unsigned int return true; } -bool cclient_sensor_record::set_interval(sensor_id_t sensor_id, unsigned int interval) -{ - auto it_usage = m_sensor_usages.find(sensor_id); - - if (it_usage == m_sensor_usages.end()) { - csensor_usage usage; - usage.m_interval = interval; - m_sensor_usages.insert(pair(sensor_id, usage)); - } else { - it_usage->second.m_interval = interval; - } - - return true; -} - bool cclient_sensor_record::set_option(sensor_id_t sensor_id, int option) { auto it_usage = m_sensor_usages.find(sensor_id); @@ -128,18 +114,36 @@ bool cclient_sensor_record::is_started(sensor_id_t sensor_id) return it_usage->second.m_start; } +bool cclient_sensor_record::set_batch(sensor_id_t sensor_id, unsigned int interval, unsigned int latency) +{ + auto it_usage = m_sensor_usages.find(sensor_id); + if (it_usage == m_sensor_usages.end()) { + csensor_usage usage; + usage.m_interval = interval; + usage.m_latency = latency; + m_sensor_usages.insert(pair(sensor_id, usage)); + } else { + it_usage->second.m_interval = interval; + it_usage->second.m_latency = latency; + } -unsigned int cclient_sensor_record::get_interval(sensor_id_t sensor_id) + return true; +} + +bool cclient_sensor_record::get_batch(sensor_id_t sensor_id, unsigned int &interval, unsigned int &latency) { auto it_usage = m_sensor_usages.find(sensor_id); if (it_usage == m_sensor_usages.end()) { ERR("Sensor[0x%x] is not found", sensor_id); - return 0; + return false; } - return it_usage->second.m_interval; + interval = it_usage->second.m_interval; + latency = it_usage->second.m_latency; + + return true; } bool cclient_sensor_record::is_listening_event(sensor_id_t sensor_id, unsigned int event_type) @@ -223,17 +227,13 @@ void cclient_sensor_record::set_client_id(int client_id) m_client_id = client_id; } -void cclient_sensor_record::set_client_info(pid_t pid) +void cclient_sensor_record::set_client_info(pid_t pid, const string &name) { char client_info[NAME_MAX + 32]; - char proc_name[NAME_MAX]; - m_pid = pid; - get_proc_name(pid, proc_name); - snprintf(client_info, sizeof(client_info), "%s[pid=%d, id=%d]", proc_name, m_pid, m_client_id); + snprintf(client_info, sizeof(client_info), "%s[pid=%d, id=%d]", name.c_str(), m_pid, m_client_id); m_client_info.assign(client_info); - } const char* cclient_sensor_record::get_client_info(void) diff --git a/src/shared/cclient_sensor_record.h b/src/shared/cclient_sensor_record.h old mode 100755 new mode 100644 index c2d9ef7..d42093e --- a/src/shared/cclient_sensor_record.h +++ b/src/shared/cclient_sensor_record.h @@ -25,10 +25,9 @@ #include #include #include +#include -using std::unordered_map; - -typedef unordered_map sensor_usage_map; +typedef std::unordered_map sensor_usage_map; class cclient_sensor_record { public: @@ -37,7 +36,7 @@ public: void set_client_id(int client_id); - void set_client_info(pid_t pid); + void set_client_info(pid_t pid, const std::string &name); const char* get_client_info(void); void set_permission(int permission); @@ -46,8 +45,8 @@ public: bool register_event(sensor_id_t sensor_id, unsigned int event_type); bool unregister_event(sensor_id_t sensor_id, unsigned int event_type); - bool set_interval(sensor_id_t sensor_id, unsigned int interval); - unsigned int get_interval(sensor_id_t sensor_id); + bool set_batch(sensor_id_t sensor_id, unsigned int interval, unsigned int latency); + bool get_batch(sensor_id_t sensor_id, unsigned int &interval, unsigned int &latency); bool set_option(sensor_id_t sensor_id, int option); bool set_start(sensor_id_t sensor_id, bool start); @@ -70,7 +69,7 @@ private: int m_client_id; pid_t m_pid; int m_permission; - string m_client_info; + std::string m_client_info; csocket m_event_socket; sensor_usage_map m_sensor_usages; }; diff --git a/src/shared/cconfig.cpp b/src/shared/cconfig.cpp index 23d11a5..14c7f01 100755 --- a/src/shared/cconfig.cpp +++ b/src/shared/cconfig.cpp @@ -19,8 +19,11 @@ #include #include +#include using std::ifstream; +using std::string; +using std::istringstream; cconfig::cconfig(void) { diff --git a/src/shared/cconfig.h b/src/shared/cconfig.h index aa92fdd..dd23b11 100755 --- a/src/shared/cconfig.h +++ b/src/shared/cconfig.h @@ -24,16 +24,12 @@ #include #include -using std::unordered_map; -using std::string; -using std::istringstream; - class cconfig { protected: - virtual bool load_config(const string& config_path) = 0; + virtual bool load_config(const std::string& config_path) = 0; - string m_device_id; + std::string m_device_id; public: cconfig(); virtual ~cconfig(); diff --git a/src/shared/cinterval_info_list.h b/src/shared/cinterval_info_list.h index 340cba6..3c28c95 100755 --- a/src/shared/cinterval_info_list.h +++ b/src/shared/cinterval_info_list.h @@ -21,7 +21,6 @@ #define _CINTERVAL_INFO_LIST_CLASS_H_ #include -using std::list; class cinterval_info { @@ -32,7 +31,7 @@ public: unsigned int interval; }; -typedef list::iterator cinterval_info_iterator; +typedef std::list::iterator cinterval_info_iterator; class cinterval_info_list { @@ -40,7 +39,7 @@ private: static bool comp_interval_info(cinterval_info a, cinterval_info b); cinterval_info_iterator find_if(int client_id, bool is_processor); - list m_list; + std::list m_list; public: bool add_interval(int client_id, unsigned int interval, bool is_processor); diff --git a/src/shared/common.cpp b/src/shared/common.cpp old mode 100755 new mode 100644 index 884bbf3..7196266 --- a/src/shared/common.cpp +++ b/src/shared/common.cpp @@ -113,6 +113,7 @@ EXTAPI void sf_log(int type , int priority , const char *tag , const char *fmt , va_end(ap); } +#if defined(_DEBUG) bool get_proc_name(pid_t pid, char *process_name) { FILE *fp; @@ -131,10 +132,26 @@ bool get_proc_name(pid_t pid, char *process_name) } strncpy(process_name, buf, NAME_MAX-1); + process_name[NAME_MAX-1] = '\0'; fclose(fp); return true; } +#else +bool get_proc_name(pid_t pid, char *process_name) +{ + char buf[NAME_MAX]; + + if (sprintf(buf, "%d process", pid) < 1) { + return false; + } + + strncpy(process_name, buf, NAME_MAX-1); + process_name[NAME_MAX-1] = '\0'; + + return true; +} +#endif const char* get_client_name(void) { diff --git a/src/shared/csensor_config.cpp b/src/shared/csensor_config.cpp index 1f193a7..f36c818 100755 --- a/src/shared/csensor_config.cpp +++ b/src/shared/csensor_config.cpp @@ -24,8 +24,11 @@ #include #include #include +#include using std::ifstream; +using std::string; +using std::istringstream; #define ROOT_ELEMENT "SENSOR" #define TEXT_ELEMENT "text" diff --git a/src/shared/csensor_config.h b/src/shared/csensor_config.h index d4c69a5..5ce6c74 100755 --- a/src/shared/csensor_config.h +++ b/src/shared/csensor_config.h @@ -24,7 +24,7 @@ #define SENSOR_CONFIG_FILE_PATH "/usr/etc/sensors.xml" -typedef unordered_map Element; +typedef std::unordered_map Element; /* * an Element is a group of attributes * @@ -33,7 +33,7 @@ typedef unordered_map Element; * */ -typedef unordered_map Model; +typedef std::unordered_map Model; /* * a Model is a group of elements to consist of specific vendor's one sensor configuration * @@ -45,7 +45,7 @@ typedef unordered_map Model; * */ -typedef unordered_map Model_list; +typedef std::unordered_map Model_list; /* * a Model_list is a group of Model * @@ -57,7 +57,7 @@ typedef unordered_map Model_list; * */ -typedef unordered_map Sensor_config; +typedef std::unordered_map Sensor_config; /* * a SensorConfig represents sensors.xml * @@ -75,21 +75,21 @@ private: csensor_config(csensor_config const&) {}; csensor_config& operator=(csensor_config const&); - bool load_config(const string& config_path); + bool load_config(const std::string& config_path); Sensor_config m_sensor_config; public: static csensor_config& get_instance(void); - bool get(const string& sensor_type, const string& model_id, const string& element, const string& attr, string& value); - bool get(const string& sensor_type, const string& model_id, const string& element, const string& attr, double& value); - bool get(const string& sensor_type, const string& model_id, const string& element, const string& attr, long& value); + 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 string& sensor_type, const string& model_id, const string& element, string& value); - bool get(const string& sensor_type, const string& model_id, const string& element, double& value); - bool get(const string& sensor_type, const string& model_id, const string& element, 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 string &sensor_type, const string &model_id); + bool is_supported(const std::string &sensor_type, const std::string &model_id); }; #endif diff --git a/src/shared/csensor_event_dispatcher.cpp b/src/shared/csensor_event_dispatcher.cpp index 6906ee2..1fc79e0 100755 --- a/src/shared/csensor_event_dispatcher.cpp +++ b/src/shared/csensor_event_dispatcher.cpp @@ -22,7 +22,10 @@ #include #include #include +#include + using std::thread; +using std::vector; #define MAX_PENDING_CONNECTION 32 diff --git a/src/shared/csensor_event_dispatcher.h b/src/shared/csensor_event_dispatcher.h index fe9eba1..27131c2 100755 --- a/src/shared/csensor_event_dispatcher.h +++ b/src/shared/csensor_event_dispatcher.h @@ -25,9 +25,11 @@ #include #include #include +#include +#include -typedef unordered_map event_type_last_event_map; -typedef list virtual_sensors; +typedef std::unordered_map event_type_last_event_map; +typedef std::list virtual_sensors; class csensor_event_dispatcher { diff --git a/src/shared/csensor_event_queue.cpp b/src/shared/csensor_event_queue.cpp old mode 100755 new mode 100644 index d3aa0dc..ed95497 --- a/src/shared/csensor_event_queue.cpp +++ b/src/shared/csensor_event_queue.cpp @@ -20,18 +20,13 @@ #include #include "common.h" -csensor_event_queue::csensor_event_queue() -{ -} - csensor_event_queue& csensor_event_queue::get_instance() { static csensor_event_queue inst; return inst; } - -void csensor_event_queue::push(sensor_event_t const &event) +void csensor_event_queue::push(const sensor_event_t &event) { sensor_event_t *new_event = new(std::nothrow) sensor_event_t; retm_if(!new_event, "Failed to allocate memory"); @@ -40,7 +35,12 @@ void csensor_event_queue::push(sensor_event_t const &event) push_internal(new_event); } -void csensor_event_queue::push(sensorhub_event_t const &event) +void csensor_event_queue::push(sensor_event_t *event) +{ + push_internal(event); +} + +void csensor_event_queue::push(const sensorhub_event_t &event) { sensorhub_event_t *new_event = new(std::nothrow) sensorhub_event_t; retm_if(!new_event, "Failed to allocate memory"); @@ -49,6 +49,11 @@ void csensor_event_queue::push(sensorhub_event_t const &event) push_internal(new_event); } +void csensor_event_queue::push(sensorhub_event_t *event) +{ + push_internal(event); +} + void csensor_event_queue::push_internal(void *event) { lock l(m_mutex); @@ -63,7 +68,6 @@ void csensor_event_queue::push_internal(void *event) delete (sensorhub_event_t *)event; else delete (sensor_event_t *)event; - } else m_queue.push(event); diff --git a/src/shared/csensor_event_queue.h b/src/shared/csensor_event_queue.h old mode 100755 new mode 100644 index 4c554d9..8ae00d2 --- a/src/shared/csensor_event_queue.h +++ b/src/shared/csensor_event_queue.h @@ -25,15 +25,7 @@ #include #include -using namespace std; -using std::queue; -using std::mutex; -using std::lock_guard; -using std::unique_lock; -using std::condition_variable; -using std::set; - -extern set priority_list; +extern std::set priority_list; class csensor_event_queue { @@ -51,8 +43,8 @@ private: if (priority_list.empty()) return (e2->data.timestamp < e1->data.timestamp); - set::iterator iter_e1 = priority_list.find(e1->event_type); - set::iterator iter_e2 = priority_list.find(e2->event_type); + std::set::iterator iter_e1 = priority_list.find(e1->event_type); + std::set::iterator iter_e2 = priority_list.find(e2->event_type); if (iter_e1 == priority_list.end()) prioritize_e1 = false; @@ -82,21 +74,24 @@ private: std::priority_queue, compare> m_queue; - mutex m_mutex; - condition_variable m_cond_var; + std::mutex m_mutex; + std::condition_variable m_cond_var; - typedef lock_guard lock; - typedef unique_lock ulock; + typedef std::lock_guard lock; + typedef std::unique_lock ulock; - csensor_event_queue(); - csensor_event_queue(csensor_event_queue const&) {}; - csensor_event_queue& operator=(csensor_event_queue const&); + csensor_event_queue() {}; + ~csensor_event_queue() {}; + csensor_event_queue(const csensor_event_queue &) {}; + csensor_event_queue& operator=(const csensor_event_queue &); void push_internal(void *event); - public: static csensor_event_queue& get_instance(); - void push(sensor_event_t const &event); - void push(sensorhub_event_t const &event); + void push(const sensor_event_t &event); + void push(sensor_event_t *event); + void push(const sensorhub_event_t &event); + void push(sensorhub_event_t *event); + void* pop(void); }; diff --git a/src/shared/csensor_usage.cpp b/src/shared/csensor_usage.cpp old mode 100755 new mode 100644 index f270a36..345c014 --- a/src/shared/csensor_usage.cpp +++ b/src/shared/csensor_usage.cpp @@ -23,6 +23,7 @@ csensor_usage::csensor_usage() : m_interval(POLL_MAX_HZ_MS) +, m_latency(0) , m_option(SENSOR_OPTION_DEFAULT) , m_start(false) { diff --git a/src/shared/csensor_usage.h b/src/shared/csensor_usage.h old mode 100755 new mode 100644 index 3535962..3c71dcd --- a/src/shared/csensor_usage.h +++ b/src/shared/csensor_usage.h @@ -23,13 +23,13 @@ #include #include #include -using std::vector; -typedef vector reg_event_vector; +typedef std::vector reg_event_vector; class csensor_usage { public: unsigned int m_interval; + unsigned int m_latency; int m_option; reg_event_vector m_reg_events; bool m_start; diff --git a/src/shared/csocket.cpp b/src/shared/csocket.cpp old mode 100755 new mode 100644 index 96ff1d5..9845b5f --- a/src/shared/csocket.cpp +++ b/src/shared/csocket.cpp @@ -20,7 +20,7 @@ #include #include #include - +#include csocket::csocket() : m_sock_fd(-1) @@ -160,7 +160,7 @@ bool csocket::accept(csocket& client_socket) const return true; } -ssize_t csocket::send_for_seqpacket(void const* buffer, size_t size) const +ssize_t csocket::send_for_seqpacket(const void *buffer, size_t size) const { ssize_t err, len; @@ -210,14 +210,14 @@ ssize_t csocket::recv_for_seqpacket(void* buffer, size_t size) const } -ssize_t csocket::send_for_stream(void const* buffer, size_t size) const +ssize_t csocket::send_for_stream(const void *buffer, size_t size) const { ssize_t len; ssize_t err = 0; size_t total_sent_size = 0; do { - len = ::send(m_sock_fd, (void const*)((uint8_t *)buffer + total_sent_size), size - total_sent_size, m_send_flags); + len = ::send(m_sock_fd, (const void *)((uint8_t *)buffer + total_sent_size), size - total_sent_size, m_send_flags); if (len >= 0) { total_sent_size += len; @@ -269,7 +269,7 @@ ssize_t csocket::recv_for_stream(void* buffer, size_t size) const } -ssize_t csocket::send(void const* buffer, size_t size) const +ssize_t csocket::send(const void *buffer, size_t size) const { if (m_sock_type == SOCK_STREAM) return send_for_stream(buffer, size); diff --git a/src/shared/csocket.h b/src/shared/csocket.h old mode 100755 new mode 100644 index b6e8990..c7f719f --- a/src/shared/csocket.h +++ b/src/shared/csocket.h @@ -27,8 +27,6 @@ #include #include #include "common.h" -#include -using std::string; class csocket { public: @@ -47,7 +45,7 @@ public: bool connect(const char *sock_path); //Data Transfer - ssize_t send(void const* buffer, size_t size) const; + ssize_t send(const void *buffer, size_t size) const; ssize_t recv(void* buffer, size_t size) const; bool set_connection_mode(void); @@ -66,8 +64,8 @@ private: bool set_blocking_mode(bool blocking); bool set_sock_type(void); - ssize_t send_for_seqpacket(void const* buffer, size_t size) const; - ssize_t send_for_stream(void const* buffer, size_t size) const; + ssize_t send_for_seqpacket(const void *buffer, size_t size) const; + ssize_t send_for_stream(const void *buffer, size_t size) const; ssize_t recv_for_seqpacket(void* buffer, size_t size) const; ssize_t recv_for_stream(void* buffer, size_t size) const; diff --git a/src/shared/cvirtual_sensor_config.h b/src/shared/cvirtual_sensor_config.h index b3c5f7d..a9af957 100755 --- a/src/shared/cvirtual_sensor_config.h +++ b/src/shared/cvirtual_sensor_config.h @@ -24,14 +24,14 @@ #define VIRTUAL_SENSOR_CONFIG_FILE_PATH "/usr/etc/virtual_sensors.xml" -typedef unordered_map Element; +typedef std::unordered_map Element; /* * an Element is a group of attributes * * */ -typedef unordered_map Virtual_sensor; +typedef std::unordered_map Virtual_sensor; /* * a Virtual_sensor is a group of elements to consist of one virtual sensor's configuration * @@ -40,7 +40,7 @@ typedef unordered_map Virtual_sensor; * ... */ -typedef unordered_map virtual_sensor_config; +typedef std::unordered_map virtual_sensor_config; /* * a Virtual_sensor_config represents virtual_sensors.xml * @@ -49,7 +49,7 @@ typedef unordered_map virtual_sensor_config; * */ -typedef unordered_map virtual_sensor_device_config; +typedef std::unordered_map virtual_sensor_device_config; /* * a virtual_sensor_device_config represents virtual_sensors.xml * @@ -64,22 +64,22 @@ private: cvirtual_sensor_config(cvirtual_sensor_config const&) {}; cvirtual_sensor_config& operator=(cvirtual_sensor_config const&); - bool load_config(const string& config_path); + bool load_config(const std::string& config_path); virtual_sensor_device_config m_virtual_sensor_config; public: static cvirtual_sensor_config& get_instance(void); - bool get(const string& sensor_type, const string& element, const string& attr, string& value); - bool get(const string& sensor_type, const string& element, const string& attr, float *value); - bool get(const string& sensor_type, const string& element, const string& attr, int *value); + bool get(const std::string& sensor_type, const std::string& element, const std::string& attr, std::string& value); + bool get(const std::string& sensor_type, const std::string& element, const std::string& attr, float *value); + bool get(const std::string& sensor_type, const std::string& element, const std::string& attr, int *value); - bool get(const string& sensor_type, const string& element, string& value); - bool get(const string& sensor_type, const string& element, float *value, int count =1); - bool get(const string& sensor_type, const string& element, int *value, int count = 1); + bool get(const std::string& sensor_type, const std::string& element, std::string& value); + bool get(const std::string& sensor_type, const std::string& element, float *value, int count =1); + bool get(const std::string& sensor_type, const std::string& element, int *value, int count = 1); - bool is_supported(const string &sensor_type); + bool is_supported(const std::string &sensor_type); }; #endif diff --git a/src/shared/iio_common.h b/src/shared/iio_common.h index ecda683..80f1f34 100755 --- a/src/shared/iio_common.h +++ b/src/shared/iio_common.h @@ -25,10 +25,6 @@ #include #include -using std::string; -using std::ifstream; - - #define NO_OF_ULL_BYTES 8 #define NO_OF_SHORT_VAL 4 #define CH0_INDEX 0 @@ -85,9 +81,9 @@ int update_sysfs_string(const char *filepath, const char *val); int convert_bytes_to_int(int input, struct channel_parameters *info); template -bool read_node_value(string node_path, value_t &value) +bool read_node_value(std::string node_path, value_t &value) { - ifstream handle; + std::ifstream handle; handle.open(node_path.c_str()); if (!handle) { diff --git a/src/shared/physical_sensor.cpp b/src/shared/physical_sensor.cpp old mode 100755 new mode 100644 index 4f9ee3c..15d33a0 --- a/src/shared/physical_sensor.cpp +++ b/src/shared/physical_sensor.cpp @@ -31,13 +31,25 @@ physical_sensor::~physical_sensor() } -bool physical_sensor::push(sensor_event_t const &event) +bool physical_sensor::push(const sensor_event_t &event) { csensor_event_queue::get_instance().push(event); return true; } -bool physical_sensor::push(sensorhub_event_t const &event) +bool physical_sensor::push(sensor_event_t *event) +{ + csensor_event_queue::get_instance().push(event); + return true; +} + +bool physical_sensor::push(const sensorhub_event_t &event) +{ + csensor_event_queue::get_instance().push(event); + return true; +} + +bool physical_sensor::push(sensorhub_event_t *event) { csensor_event_queue::get_instance().push(event); return true; diff --git a/src/shared/physical_sensor.h b/src/shared/physical_sensor.h old mode 100755 new mode 100644 index 4118ae3..a4098b6 --- a/src/shared/physical_sensor.h +++ b/src/shared/physical_sensor.h @@ -36,8 +36,10 @@ protected: physical_sensor(); virtual ~physical_sensor(); - bool push(sensor_event_t const &event); - bool push(sensorhub_event_t const &event); + 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); void set_poller(working_func_t func, void *arg); bool start_poll(void); diff --git a/src/shared/sensor_base.cpp b/src/shared/sensor_base.cpp index 60c1b2f..056e065 100755 --- a/src/shared/sensor_base.cpp +++ b/src/shared/sensor_base.cpp @@ -20,6 +20,10 @@ #include #include +#include + +using std::make_pair; +using std::vector; #define UNKNOWN_NAME "UNKNOWN_SENSOR" @@ -47,14 +51,30 @@ bool sensor_base::is_virtual() return false; } -void sensor_base::set_id(sensor_id_t id) +void sensor_base::add_id(sensor_id_t id) { - m_id = id; + m_ids.insert(std::make_pair(static_cast (id & SENSOR_TYPE_MASK), id)); } sensor_id_t sensor_base::get_id(void) { - return m_id; + auto it = m_ids.begin(); + + if (it != m_ids.end()) + return it->second; + + return UNKNOWN_SENSOR; +} + +sensor_id_t sensor_base::get_id(sensor_type_t sensor_type) +{ + + auto it = m_ids.find(sensor_type); + + if (it != m_ids.end()) + return it->second; + + return UNKNOWN_SENSOR; } sensor_privilege_t sensor_base::get_privilege(void) @@ -78,12 +98,6 @@ void sensor_base::set_permission(int permission) m_permission = permission; } - -sensor_type_t sensor_base::get_type() -{ - return UNKNOWN_SENSOR; -} - const char* sensor_base::get_name() { if (m_name.empty()) @@ -204,7 +218,7 @@ bool sensor_base::add_interval(int client_id, unsigned int interval, bool is_pro if (cur_min != prev_min) { INFO("Min interval for sensor[0x%x] is changed from %dms to %dms" " by%sclient[%d] adding interval", - get_type(), prev_min, cur_min, + get_id(), prev_min, cur_min, is_processor ? " processor " : " ", client_id); set_interval(cur_min); } @@ -227,14 +241,14 @@ bool sensor_base::delete_interval(int client_id, bool is_processor) if (!cur_min) { INFO("No interval for sensor[0x%x] by%sclient[%d] deleting interval, " "so set to default %dms", - get_type(), is_processor ? " processor " : " ", + 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" " by%sclient[%d] deleting interval", - get_type(), prev_min, cur_min, + get_id(), prev_min, cur_min, is_processor ? " processor " : " ", client_id); set_interval(cur_min); @@ -250,13 +264,13 @@ unsigned int sensor_base::get_interval(int client_id, bool is_processor) return m_interval_info_list.get_interval(client_id, is_processor); } -void sensor_base::get_sensor_info(sensor_info &info) +void sensor_base::get_sensor_info(sensor_type_t sensor_type, sensor_info &info) { sensor_properties_s properties; - get_properties(properties); + get_properties(sensor_type, properties); - info.set_type(get_type()); - info.set_id(get_id()); + info.set_type(sensor_type); + info.set_id(get_id(sensor_type)); info.set_privilege(m_privilege); info.set_name(properties.name.c_str()); info.set_vendor(properties.vendor.c_str()); @@ -266,12 +280,20 @@ void sensor_base::get_sensor_info(sensor_info &info) 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_events(m_supported_event_info); + + vector events; + + for (unsigned int i = 0; i < m_supported_event_info.size(); ++ i) { + if (m_supported_event_info[i] & (sensor_type << 16)) + events.push_back(m_supported_event_info[i]); + } + + info.set_supported_events(events); return; } -bool sensor_base::get_properties(sensor_properties_s &properties) +bool sensor_base::get_properties(sensor_type_t sensor_type, sensor_properties_s &properties) { return false; } diff --git a/src/shared/sensor_base.h b/src/shared/sensor_base.h index 0206201..353cee2 100755 --- a/src/shared/sensor_base.h +++ b/src/shared/sensor_base.h @@ -21,6 +21,7 @@ #define _SENSOR_BASE_H_ #include +#include #include #include #include @@ -35,29 +36,20 @@ #include #include -using std::string; -using std::mutex; -using std::recursive_mutex; -using std::lock_guard; -using std::list; -using std::unordered_map; -using std::vector; -using std::unique_lock; -using std::condition_variable; - class sensor_base { private: - typedef unordered_map client_info; + typedef std::unordered_map client_info; public: sensor_base(); virtual ~sensor_base(); virtual bool init(void); - void set_id(sensor_id_t id); - sensor_id_t get_id(void); - virtual sensor_type_t get_type(void); + void add_id(sensor_id_t id); + sensor_id_t get_id(sensor_type_t sensor_type); + virtual void get_types(std::vector &types) {}; + sensor_privilege_t get_privilege(void); int get_permission(void); virtual const char* get_name(void); @@ -74,9 +66,9 @@ public: virtual bool delete_interval(int client_id, bool is_processor); unsigned int get_interval(int client_id, bool is_processor); + void get_sensor_info(sensor_type_t sensor_type, sensor_info &info); + virtual bool get_properties(sensor_type_t sensor_type, sensor_properties_s &properties); - void get_sensor_info(sensor_info &info); - virtual bool get_properties(sensor_properties_s &properties); bool is_supported(unsigned int event_type); virtual long set_command(unsigned int cmd, long value); @@ -87,11 +79,11 @@ public: void register_supported_event(unsigned int event_type); void unregister_supported_event(unsigned int event_type); protected: - typedef lock_guard lock; - typedef lock_guard rlock; - typedef unique_lock ulock; + typedef std::lock_guard lock; + typedef std::lock_guard rlock; + typedef std::unique_lock ulock; - sensor_id_t m_id; + std::map m_ids; sensor_privilege_t m_privilege; int m_permission; @@ -106,12 +98,12 @@ protected: client_info m_client_info; cmutex m_client_info_mutex; - vector m_supported_event_info; - + std::vector m_supported_event_info; bool m_started; - string m_name; + std::string m_name; + sensor_id_t get_id(void); void set_privilege(sensor_privilege_t privilege); void set_permission(int permission); unsigned int get_client_cnt(unsigned int event_type); diff --git a/src/shared/sensor_hal.cpp b/src/shared/sensor_hal.cpp index a0bfd84..f5a315d 100755 --- a/src/shared/sensor_hal.cpp +++ b/src/shared/sensor_hal.cpp @@ -24,7 +24,9 @@ #include using std::ifstream; +using std::ofstream; using std::fstream; +using std::string; cmutex sensor_hal::m_shared_mutex; @@ -200,7 +202,7 @@ bool sensor_hal::get_sensorhub_input_event_node_info(const string &interval_node bool sensor_hal::set_node_value(const string &node_path, int value) { - fstream node(node_path, fstream::out); + ofstream node(node_path, ofstream::binary); if (!node) return false; @@ -212,7 +214,7 @@ bool sensor_hal::set_node_value(const string &node_path, int value) bool sensor_hal::set_node_value(const string &node_path, unsigned long long value) { - fstream node(node_path, fstream::out); + ofstream node(node_path, ofstream::binary); if (!node) return false; @@ -225,7 +227,7 @@ bool sensor_hal::set_node_value(const string &node_path, unsigned long long valu bool sensor_hal::get_node_value(const string &node_path, int &value) { - fstream node(node_path, fstream::in); + ifstream node(node_path, ifstream::binary); if (!node) return false; diff --git a/src/shared/sensor_hal.h b/src/shared/sensor_hal.h index fdb8299..09762a4 100755 --- a/src/shared/sensor_hal.h +++ b/src/shared/sensor_hal.h @@ -26,8 +26,6 @@ #include #include -using std::string; - /* * As of Linux 3.4, there is a new EVIOCSCLOCKID ioctl to set the desired clock * Current kernel-headers package doesn't have it so we should define it here. @@ -37,22 +35,47 @@ using std::string; #define EVIOCSCLOCKID _IOW('E', 0xa0, int) /* Set clockid to be used for timestamps */ #endif +typedef enum { + SENSOR_HAL_TYPE_ACCELEROMETER, + SENSOR_HAL_TYPE_GEOMAGNETIC, + SENSOR_HAL_TYPE_LIGHT, + SENSOR_HAL_TYPE_PROXIMITY, + SENSOR_HAL_TYPE_GYROSCOPE, + SENSOR_HAL_TYPE_PRESSURE, + SENSOR_HAL_TYPE_CONTEXT, + SENSOR_HAL_TYPE_BIO, + SENSOR_HAL_TYPE_BIO_HRM, + SENSOR_HAL_TYPE_PIR, + SENSOR_HAL_TYPE_PIR_LONG, + SENSOR_HAL_TYPE_TEMPERATURE, + SENSOR_HAL_TYPE_HUMIDITY, + SENSOR_HAL_TYPE_ULTRAVIOLET, + SENSOR_HAL_TYPE_DUST, + SENSOR_HAL_TYPE_BIO_LED_IR, + SENSOR_HAL_TYPE_BIO_LED_RED, + SENSOR_HAL_TYPE_BIO_LED_GREEN, + SENSOR_HAL_TYPE_RV_RAW, + SENSOR_HAL_TYPE_GYROSCOPE_UNCAL, + SENSOR_HAL_TYPE_GEOMAGNETIC_UNCAL, + SENSOR_HAL_TYPE_FUSION, +} sensor_hal_type_t; + typedef struct { int method; - string data_node_path; - string enable_node_path; - string interval_node_path; - string buffer_enable_node_path; - string buffer_length_node_path; - string trigger_node_path; + std::string data_node_path; + std::string enable_node_path; + std::string interval_node_path; + std::string buffer_enable_node_path; + std::string buffer_length_node_path; + std::string trigger_node_path; } node_info; typedef struct { bool sensorhub_controlled; - string sensor_type; - string key; - string iio_enable_node_name; - string sensorhub_interval_node_name; + std::string sensor_type; + std::string key; + std::string iio_enable_node_name; + std::string sensorhub_interval_node_name; } node_info_query; enum input_method { @@ -75,13 +98,14 @@ public: virtual ~sensor_hal(); virtual bool init(void *data = NULL); - virtual string get_model_id(void) = 0; - virtual sensor_type_t get_type(void) = 0; + virtual std::string get_model_id(void) = 0; + virtual sensor_hal_type_t get_type(void) = 0; virtual bool enable(void) = 0; virtual bool disable(void) = 0; virtual bool set_interval(unsigned long val); virtual bool is_data_ready(bool wait) = 0; - virtual bool get_properties(sensor_properties_s &properties) = 0; + virtual bool get_properties(sensor_properties_s &properties) {return false;}; + virtual bool get_properties(sensor_type_t sensor_type, sensor_properties_s &properties) {return false;}; virtual int get_sensor_data(sensor_data_t &data); virtual int get_sensor_data(sensorhub_data_t &data); virtual long set_command(unsigned int cmd, long val); @@ -91,24 +115,24 @@ protected: cmutex m_mutex; static cmutex m_shared_mutex; - virtual bool set_enable_node(const string &node_path, bool sensorhub_controlled, bool enable, int enable_bit = 0); + virtual bool set_enable_node(const std::string &node_path, bool sensorhub_controlled, bool enable, int enable_bit = 0); static unsigned long long get_timestamp(void); static unsigned long long get_timestamp(timeval *t); - static bool find_model_id(const string &sensor_type, string &model_id); - static bool is_sensorhub_controlled(const string &key); + static bool find_model_id(const std::string &sensor_type, std::string &model_id); + static bool is_sensorhub_controlled(const std::string &key); static bool get_node_info(const node_info_query &query, node_info &info); static void show_node_info(node_info &info); - static bool set_node_value(const string &node_path, int value); - static bool set_node_value(const string &node_path, unsigned long long value); - static bool get_node_value(const string &node_path, int &value); + static bool set_node_value(const std::string &node_path, int value); + static bool set_node_value(const std::string &node_path, unsigned long long value); + static bool get_node_value(const std::string &node_path, int &value); private: - static bool get_event_num(const string &node_path, string &event_num); - static bool get_input_method(const string &key, int &method, string &device_num); + static bool get_event_num(const std::string &node_path, std::string &event_num); + static bool get_input_method(const std::string &key, int &method, std::string &device_num); - static bool get_iio_node_info(const string& enable_node_name, const string& device_num, node_info &info); - static bool get_sensorhub_iio_node_info(const string &interval_node_name, const string& device_num, node_info &info); - static bool get_input_event_node_info(const string& device_num, node_info &info); - static bool get_sensorhub_input_event_node_info(const string &interval_node_name, const string& device_num, node_info &info); + static bool get_iio_node_info(const std::string& enable_node_name, const std::string& device_num, node_info &info); + static bool get_sensorhub_iio_node_info(const std::string &interval_node_name, const std::string& device_num, node_info &info); + static bool get_input_event_node_info(const std::string& device_num, node_info &info); + static bool get_sensorhub_input_event_node_info(const std::string &interval_node_name, const std::string& device_num, node_info &info); }; #endif /*_SENSOR_HAL_CLASS_H_*/ diff --git a/src/shared/sensor_info.cpp b/src/shared/sensor_info.cpp index fe8303c..bed247e 100755 --- a/src/shared/sensor_info.cpp +++ b/src/shared/sensor_info.cpp @@ -20,6 +20,11 @@ #include #include #include +#include +#include + +using std::vector; +using std::string; sensor_type_t sensor_info::get_type(void) { diff --git a/src/shared/sensor_info.h b/src/shared/sensor_info.h index 6a8a09e..185d249 100755 --- a/src/shared/sensor_info.h +++ b/src/shared/sensor_info.h @@ -25,10 +25,7 @@ #include #include -using std::string; -using std::vector; - -typedef vector raw_data_t; +typedef std::vector raw_data_t; typedef raw_data_t::iterator raw_data_iterator; class sensor_info @@ -45,7 +42,7 @@ public: int get_min_interval(void); int get_fifo_count(void); int get_max_batch_count(void); - void get_supported_events(vector &events); + void get_supported_events(std::vector &events); bool is_supported_event(unsigned int event); void set_type(sensor_type_t type); @@ -60,7 +57,7 @@ public: void set_fifo_count(int fifo_count); void set_max_batch_count(int max_batch_count); void register_supported_event(unsigned int event); - void set_supported_events(vector &events); + void set_supported_events(std::vector &events); void clear(void); @@ -71,25 +68,25 @@ private: sensor_type_t m_type; sensor_id_t m_id; sensor_privilege_t m_privilege; - string m_name; - string m_vendor; + std::string m_name; + std::string m_vendor; float m_min_range; float m_max_range; float m_resolution; int m_min_interval; int m_fifo_count; int m_max_batch_count; - vector m_supported_events; + std::vector m_supported_events; void put(raw_data_t &data, int value); void put(raw_data_t &data, float value); - void put(raw_data_t &data, string &value); - void put(raw_data_t &data, vector &value); + void put(raw_data_t &data, std::string &value); + void put(raw_data_t &data, std::vector &value); raw_data_iterator get(raw_data_iterator it, int &value); raw_data_iterator get(raw_data_iterator it, float &value); - raw_data_iterator get(raw_data_iterator it, string &value); - raw_data_iterator get(raw_data_iterator it, vector &value); + raw_data_iterator get(raw_data_iterator it, std::string &value); + raw_data_iterator get(raw_data_iterator it, std::vector &value); }; #endif /* _SENSOR_INFO_H_ */ diff --git a/src/shared/sensor_plugin_loader.cpp b/src/shared/sensor_plugin_loader.cpp index 17772c9..3b5831c 100755 --- a/src/shared/sensor_plugin_loader.cpp +++ b/src/shared/sensor_plugin_loader.cpp @@ -31,6 +31,11 @@ using std::make_pair; using std::equal; using std::unordered_set; +using std::pair; +using std::vector; +using std::string; +using std::shared_ptr; +using std::static_pointer_cast; #define ROOT_ELEMENT "PLUGIN" #define TEXT_ELEMENT "text" @@ -100,12 +105,12 @@ bool sensor_plugin_loader::insert_module(plugin_type type, const string &path) if (!load_module(path, hals, handle)) return false; - sensor_hal* hal; + shared_ptr hal; for (unsigned int i = 0; i < hals.size(); ++i) { - hal = static_cast (hals[i]); - sensor_type_t sensor_type = hal->get_type(); - m_sensor_hals.insert(make_pair(sensor_type, hal)); + hal.reset(static_cast (hals[i])); + sensor_hal_type_t sensor_hal_type = hal->get_type(); + m_sensor_hals.insert(make_pair(sensor_hal_type, hal)); } } else if (type == PLUGIN_TYPE_SENSOR) { DBG("Insert Sensor plugin [%s]", path.c_str()); @@ -116,25 +121,28 @@ bool sensor_plugin_loader::insert_module(plugin_type type, const string &path) if (!load_module(path, sensors, handle)) return false; - sensor_base* sensor; + shared_ptr sensor; for (unsigned int i = 0; i < sensors.size(); ++i) { - sensor = static_cast (sensors[i]); + sensor.reset(static_cast (sensors[i])); if (!sensor->init()) { ERR("Failed to init [%s] module\n", sensor->get_name()); - delete sensor; continue; } DBG("init [%s] module", sensor->get_name()); - sensor_type_t sensor_type = sensor->get_type(); + vector sensor_types; - int idx; - idx = m_sensors.count(sensor_type); - sensor->set_id(idx << SENSOR_INDEX_SHIFT | sensor_type); - m_sensors.insert(make_pair(sensor_type, sensor)); + sensor->get_types(sensor_types); + + for (unsigned int i = 0; i < sensor_types.size(); ++i) { + int idx; + idx = m_sensors.count(sensor_types[i]); + sensor->add_id(idx << SENSOR_INDEX_SHIFT | sensor_types[i]); + m_sensors.insert(make_pair(sensor_types[i], sensor)); + } } }else { ERR("Not supported type: %d", type); @@ -201,10 +209,10 @@ void sensor_plugin_loader::show_sensor_info(void) auto it = m_sensors.begin(); while (it != m_sensors.end()) { - sensor_base* sensor = it->second; + shared_ptr sensor = it->second; sensor_info info; - sensor->get_sensor_info(info); + sensor->get_sensor_info(it->first, info); INFO("No:%d [%s]\n", ++index, sensor->get_name()); info.show(); it++; @@ -322,24 +330,24 @@ bool sensor_plugin_loader::get_paths_from_config(const string &config_path, vect } -sensor_hal* sensor_plugin_loader::get_sensor_hal(sensor_type_t type) +sensor_hal* sensor_plugin_loader::get_sensor_hal(sensor_hal_type_t type) { auto it_plugins = m_sensor_hals.find(type); if (it_plugins == m_sensor_hals.end()) return NULL; - return it_plugins->second; + return it_plugins->second.get(); } -vector sensor_plugin_loader::get_sensor_hals(sensor_type_t type) +vector sensor_plugin_loader::get_sensor_hals(sensor_hal_type_t type) { vector sensor_hal_list; pair ret; ret = m_sensor_hals.equal_range(type); for (auto it = ret.first; it != ret.second; ++it) - sensor_hal_list.push_back(it->second); + sensor_hal_list.push_back(it->second.get()); return sensor_hal_list; } @@ -351,7 +359,7 @@ sensor_base* sensor_plugin_loader::get_sensor(sensor_type_t type) if (it_plugins == m_sensors.end()) return NULL; - return it_plugins->second; + return it_plugins->second.get(); } vector sensor_plugin_loader::get_sensors(sensor_type_t type) @@ -365,7 +373,7 @@ vector sensor_plugin_loader::get_sensors(sensor_type_t type) ret = m_sensors.equal_range(type); for (auto it = ret.first; it != ret.second; ++it) - sensor_list.push_back(it->second); + sensor_list.push_back(it->second.get()); return sensor_list; } @@ -373,7 +381,6 @@ vector sensor_plugin_loader::get_sensors(sensor_type_t type) sensor_base* sensor_plugin_loader::get_sensor(sensor_id_t id) { - const int SENSOR_TYPE_MASK = 0x0000FFFF; vector sensors; sensor_type_t type = (sensor_type_t) (id & SENSOR_TYPE_MASK); @@ -394,7 +401,7 @@ vector sensor_plugin_loader::get_virtual_sensors(void) sensor_base* module; for (auto sensor_it = m_sensors.begin(); sensor_it != m_sensors.end(); ++sensor_it) { - module = sensor_it->second; + module = sensor_it->second.get(); if (module && module->is_virtual() == true) { virtual_list.push_back(module); @@ -404,33 +411,3 @@ vector sensor_plugin_loader::get_virtual_sensors(void) return virtual_list; } -bool sensor_plugin_loader::destroy() -{ - sensor_base* sensor; - - for (auto sensor_it = m_sensors.begin(); sensor_it != m_sensors.end(); ++sensor_it) { - sensor = sensor_it->second; - - //need to dlclose - //unregister_module(module); - - delete sensor; - } - - sensor_hal* sensor_hal; - - for (auto sensor_hal_it = m_sensor_hals.begin(); sensor_hal_it != m_sensor_hals.end(); ++sensor_hal_it) { - sensor_hal = sensor_hal_it->second; - - // need to dlclose - //unregister_module(module); - - delete sensor_hal; - } - - m_sensors.clear(); - m_sensor_hals.clear(); - - return true; -} - diff --git a/src/shared/sensor_plugin_loader.h b/src/shared/sensor_plugin_loader.h index 6903024..8e71dcb 100755 --- a/src/shared/sensor_plugin_loader.h +++ b/src/shared/sensor_plugin_loader.h @@ -21,6 +21,7 @@ #define _SENSOR_PLUGIN_LOADER_CLASS_H_ #include +#include #include #include @@ -29,19 +30,12 @@ #include #include #include - +#include class sensor_hal; class sensor_base; -using std::pair; -using std::vector; -using std::multimap; -using std::set; -using std::string; -using std::istringstream; - -typedef multimap sensor_hal_plugins; +typedef std::multimap > sensor_hal_plugins; /* * a hal_plugins is a group of hal plugin * @@ -50,7 +44,7 @@ typedef multimap sensor_hal_plugins; * */ -typedef multimap sensor_plugins; +typedef std::multimap > sensor_plugins; /* * a sensor_plugins is a group of sensor plugin * @@ -69,11 +63,11 @@ private: sensor_plugin_loader(); - bool load_module(const string &path, vector &sensors, void* &handle); - bool insert_module(plugin_type type, const string &path); + bool load_module(const std::string &path, std::vector &sensors, void* &handle); + bool insert_module(plugin_type type, const std::string &path); void show_sensor_info(void); - bool get_paths_from_dir(const string &dir_path, vector &hal_paths, vector &sensor_paths); - bool get_paths_from_config(const string &config_path, vector &hal_paths, vector &sensor_paths); + bool get_paths_from_dir(const std::string &dir_path, std::vector &hal_paths, std::vector &sensor_paths); + bool get_paths_from_config(const std::string &config_path, std::vector &hal_paths, std::vector &sensor_paths); sensor_hal_plugins m_sensor_hals; sensor_plugins m_sensors; @@ -82,15 +76,13 @@ public: static sensor_plugin_loader& get_instance(); bool load_plugins(void); - sensor_hal* get_sensor_hal(sensor_type_t type); - vector get_sensor_hals(sensor_type_t type); + sensor_hal* get_sensor_hal(sensor_hal_type_t type); + std::vector get_sensor_hals(sensor_hal_type_t type); sensor_base* get_sensor(sensor_type_t type); - vector get_sensors(sensor_type_t type); + std::vector get_sensors(sensor_type_t type); sensor_base* get_sensor(sensor_id_t id); - vector get_virtual_sensors(void); - - bool destroy(); + std::vector get_virtual_sensors(void); }; #endif /* _SENSOR_PLUGIN_LOADER_CLASS_H_ */ diff --git a/src/shared/sf_common.h b/src/shared/sf_common.h old mode 100755 new mode 100644 index 6481095..777421b --- a/src/shared/sf_common.h +++ b/src/shared/sf_common.h @@ -17,6 +17,8 @@ * */ +#include + #if !defined(_SF_COMMON_H_) #define _SF_COMMON_H_ #include @@ -26,14 +28,16 @@ #include #include -#define COMMAND_CHANNEL_PATH "/tmp/sf_command_socket" -#define EVENT_CHANNEL_PATH "/tmp/sf_event_socket" +#define COMMAND_CHANNEL_PATH "/tmp/sensord_command_socket" +#define EVENT_CHANNEL_PATH "/tmp/sensord_event_socket" -#define MAX_HANDLE 64 +#define MAX_HANDLE 256 #define MAX_HANDLE_REACHED -2 #define CLIENT_ID_INVALID -1 +#define SENSOR_TYPE_MASK 0xFFFF + enum packet_type_t { CMD_NONE = 0, CMD_GET_ID, @@ -46,8 +50,8 @@ enum packet_type_t { CMD_REG, CMD_UNREG, CMD_SET_OPTION, - CMD_SET_INTERVAL, - CMD_UNSET_INTERVAL, + CMD_SET_BATCH, + CMD_UNSET_BATCH, CMD_SET_COMMAND, CMD_GET_DATA, CMD_SEND_SENSORHUB_DATA, @@ -73,7 +77,7 @@ enum poll_interval_t { }; typedef struct { - pid_t pid; + char name[NAME_MAX]; } cmd_get_id_t; typedef struct { @@ -127,10 +131,11 @@ typedef struct { typedef struct { unsigned int interval; -} cmd_set_interval_t; + unsigned int latency; +} cmd_set_batch_t; typedef struct { -} cmd_unset_interval_t; +} cmd_unset_batch_t; typedef struct { int option; diff --git a/src/shared/virtual_sensor.h b/src/shared/virtual_sensor.h index d6414e3..780ba66 100755 --- a/src/shared/virtual_sensor.h +++ b/src/shared/virtual_sensor.h @@ -28,7 +28,7 @@ public: virtual_sensor(); virtual ~virtual_sensor(); - virtual void synthesize(const sensor_event_t &event, vector &outs) = 0; + virtual void synthesize(const sensor_event_t& event, std::vector &outs) = 0; virtual int get_sensor_data(const unsigned int event_type, sensor_data_t &data) = 0; bool is_virtual(void); bool m_hardware_fusion; diff --git a/src/shared/worker_thread.h b/src/shared/worker_thread.h index 67b5f10..6459b3f 100755 --- a/src/shared/worker_thread.h +++ b/src/shared/worker_thread.h @@ -24,11 +24,6 @@ #include #include -using std::mutex; -using std::lock_guard; -using std::unique_lock; -using std::condition_variable; - class worker_thread { public: @@ -50,13 +45,13 @@ private: TRANS_FUNC_CNT, }; - typedef lock_guard lock; - typedef unique_lock ulock; + typedef std::lock_guard lock; + typedef std::unique_lock ulock; worker_state_t m_state; void *m_context; - mutex m_mutex; - condition_variable m_cond_working; + std::mutex m_mutex; + std::condition_variable m_cond_working; bool m_thread_created; trans_func_t m_trans_func[TRANS_FUNC_CNT]; diff --git a/src/temperature/temperature_sensor.cpp b/src/temperature/temperature_sensor.cpp index 20d9955..5b09eb1 100755 --- a/src/temperature/temperature_sensor.cpp +++ b/src/temperature/temperature_sensor.cpp @@ -22,6 +22,9 @@ #include #include +using std::string; +using std::vector; + #define SENSOR_NAME "TEMPERATURE_SENSOR" temperature_sensor::temperature_sensor() @@ -42,7 +45,7 @@ temperature_sensor::~temperature_sensor() bool temperature_sensor::init() { - m_sensor_hal = sensor_plugin_loader::get_instance().get_sensor_hal(TEMPERATURE_SENSOR); + m_sensor_hal = sensor_plugin_loader::get_instance().get_sensor_hal(SENSOR_HAL_TYPE_TEMPERATURE); if (!m_sensor_hal) { ERR("cannot load sensor_hal[%s]", sensor_base::get_name()); @@ -63,9 +66,9 @@ bool temperature_sensor::init() return true; } -sensor_type_t temperature_sensor::get_type(void) +void temperature_sensor::get_types(vector &types) { - return TEMPERATURE_SENSOR; + types.push_back(TEMPERATURE_SENSOR); } bool temperature_sensor::working(void *inst) @@ -115,7 +118,7 @@ bool temperature_sensor::on_stop(void) return stop_poll(); } -bool temperature_sensor::get_properties(sensor_properties_s &properties) +bool temperature_sensor::get_properties(sensor_type_t sensor_type, sensor_properties_s &properties) { return m_sensor_hal->get_properties(properties); } diff --git a/src/temperature/temperature_sensor.h b/src/temperature/temperature_sensor.h index 9bb881a..680862d 100755 --- a/src/temperature/temperature_sensor.h +++ b/src/temperature/temperature_sensor.h @@ -31,13 +31,13 @@ public: virtual ~temperature_sensor(); bool init(); - sensor_type_t get_type(void); + virtual void get_types(std::vector &types); static bool working(void *inst); bool set_interval(unsigned long interval); - virtual bool get_properties(sensor_properties_s &properties); int get_sensor_data(unsigned int type, sensor_data_t &data); + virtual bool get_properties(sensor_type_t sensor_type, sensor_properties_s &properties); private: sensor_hal *m_sensor_hal; diff --git a/src/temperature/temperature_sensor_hal.cpp b/src/temperature/temperature_sensor_hal.cpp index 64bb254..d8952ff 100755 --- a/src/temperature/temperature_sensor_hal.cpp +++ b/src/temperature/temperature_sensor_hal.cpp @@ -23,6 +23,8 @@ #include #include +using std::string; + #define SENSOR_TYPE_TEMPERATURE "TEMPERATURE" #define ELEMENT_NAME "NAME" #define ELEMENT_VENDOR "VENDOR" @@ -115,9 +117,9 @@ string temperature_sensor_hal::get_model_id(void) return m_model_id; } -sensor_type_t temperature_sensor_hal::get_type(void) +sensor_hal_type_t temperature_sensor_hal::get_type(void) { - return TEMPERATURE_SENSOR; + return SENSOR_HAL_TYPE_TEMPERATURE; } bool temperature_sensor_hal::enable(void) diff --git a/src/temperature/temperature_sensor_hal.h b/src/temperature/temperature_sensor_hal.h index 334a74d..1151afc 100755 --- a/src/temperature/temperature_sensor_hal.h +++ b/src/temperature/temperature_sensor_hal.h @@ -21,17 +21,14 @@ #define _TEMPERATURE_SENSOR_HAL_H_ #include -#include - -using std::string; class temperature_sensor_hal : public sensor_hal { public: temperature_sensor_hal(); virtual ~temperature_sensor_hal(); - string get_model_id(void); - sensor_type_t get_type(void); + std::string get_model_id(void); + sensor_hal_type_t get_type(void); bool enable(void); bool disable(void); bool set_interval(unsigned long val); @@ -44,15 +41,15 @@ private: unsigned long m_polling_interval; unsigned long long m_fired_time; - string m_model_id; - string m_vendor; - string m_chip_name; + std::string m_model_id; + std::string m_vendor; + std::string m_chip_name; float m_raw_data_unit; - string m_data_node; - string m_enable_node; - string m_interval_node; + std::string m_data_node; + std::string m_enable_node; + std::string m_interval_node; bool m_sensorhub_controlled; diff --git a/src/tilt/tilt_sensor.cpp b/src/tilt/tilt_sensor.cpp index 58cbb4e..a898dea 100755 --- a/src/tilt/tilt_sensor.cpp +++ b/src/tilt/tilt_sensor.cpp @@ -32,6 +32,9 @@ #include #include +using std::string; +using std::vector; + #define SENSOR_NAME "TILT_SENSOR" #define SENSOR_TYPE_TILT "TILT" @@ -120,9 +123,9 @@ bool tilt_sensor::init(void) return true; } -sensor_type_t tilt_sensor::get_type(void) +void tilt_sensor::get_types(vector &types) { - return TILT_SENSOR; + types.push_back(TILT_SENSOR); } bool tilt_sensor::on_start(void) @@ -250,7 +253,7 @@ int tilt_sensor::get_sensor_data(const unsigned int event_type, sensor_data_t &d return 0; } -bool tilt_sensor::get_properties(sensor_properties_s &properties) +bool tilt_sensor::get_properties(sensor_type_t sensor_type, sensor_properties_s &properties) { if(m_raw_data_unit == "DEGREES") { properties.min_range = -180; diff --git a/src/tilt/tilt_sensor.h b/src/tilt/tilt_sensor.h index 8ac6c62..a6a4bd5 100755 --- a/src/tilt/tilt_sensor.h +++ b/src/tilt/tilt_sensor.h @@ -30,16 +30,15 @@ public: virtual ~tilt_sensor(); bool init(void); + virtual void get_types(std::vector &types); - void synthesize(const sensor_event_t &event, vector &outs); + void synthesize(const sensor_event_t &event, std::vector &outs); bool add_interval(int client_id, unsigned int interval); bool delete_interval(int client_id); - bool get_properties(sensor_properties_s &properties); - sensor_type_t get_type(void); int get_sensor_data(const unsigned int event_type, sensor_data_t &data); - + virtual bool get_properties(sensor_type_t sensor_type, sensor_properties_s &properties); private: sensor_base *m_accel_sensor; sensor_base *m_fusion_sensor; @@ -51,8 +50,8 @@ private: unsigned long long m_time; unsigned int m_interval; - string m_vendor; - string m_raw_data_unit; + std::string m_vendor; + std::string m_raw_data_unit; int m_default_sampling_time; int m_pitch_rotation_compensation; int m_roll_rotation_compensation; diff --git a/src/ultraviolet/ultraviolet_sensor.cpp b/src/ultraviolet/ultraviolet_sensor.cpp index e393c22..e47dc9d 100755 --- a/src/ultraviolet/ultraviolet_sensor.cpp +++ b/src/ultraviolet/ultraviolet_sensor.cpp @@ -26,6 +26,8 @@ using std::bind1st; using std::mem_fun; +using std::string; +using std::vector; #define SENSOR_NAME "ULTRAVIOLET_SENSOR" @@ -46,7 +48,7 @@ ultraviolet_sensor::~ultraviolet_sensor() bool ultraviolet_sensor::init() { - m_sensor_hal = sensor_plugin_loader::get_instance().get_sensor_hal(ULTRAVIOLET_SENSOR); + m_sensor_hal = sensor_plugin_loader::get_instance().get_sensor_hal(SENSOR_HAL_TYPE_ULTRAVIOLET); if (!m_sensor_hal) { ERR("cannot load sensor_hal[%s]", sensor_base::get_name()); @@ -65,9 +67,9 @@ bool ultraviolet_sensor::init() return true; } -sensor_type_t ultraviolet_sensor::get_type(void) +void ultraviolet_sensor::get_types(vector &types) { - return ULTRAVIOLET_SENSOR; + types.push_back(ULTRAVIOLET_SENSOR); } bool ultraviolet_sensor::working(void *inst) @@ -118,7 +120,7 @@ bool ultraviolet_sensor::on_stop(void) return stop_poll(); } -bool ultraviolet_sensor::get_properties(sensor_properties_s &properties) +bool ultraviolet_sensor::get_properties(sensor_type_t sensor_type, sensor_properties_s &properties) { return m_sensor_hal->get_properties(properties); } diff --git a/src/ultraviolet/ultraviolet_sensor.h b/src/ultraviolet/ultraviolet_sensor.h index 62f7835..3473db5 100755 --- a/src/ultraviolet/ultraviolet_sensor.h +++ b/src/ultraviolet/ultraviolet_sensor.h @@ -31,11 +31,11 @@ public: virtual ~ultraviolet_sensor(); bool init(); - virtual sensor_type_t get_type(void); + virtual void get_types(std::vector &types); static bool working(void *inst); virtual bool set_interval(unsigned long interval); - virtual bool get_properties(sensor_properties_s &properties); + virtual bool get_properties(sensor_type_t sensor_type, sensor_properties_s &properties); virtual int get_sensor_data(unsigned int type, sensor_data_t &data); private: sensor_hal *m_sensor_hal; diff --git a/src/ultraviolet/ultraviolet_sensor_hal.cpp b/src/ultraviolet/ultraviolet_sensor_hal.cpp index 634fd9f..ab6f210 100755 --- a/src/ultraviolet/ultraviolet_sensor_hal.cpp +++ b/src/ultraviolet/ultraviolet_sensor_hal.cpp @@ -26,6 +26,7 @@ #include using std::ifstream; +using std::string; #define SENSOR_TYPE_ULTRAVIOLET "ULTRAVIOLET" #define ELEMENT_NAME "NAME" @@ -143,9 +144,9 @@ string ultraviolet_sensor_hal::get_model_id(void) } -sensor_type_t ultraviolet_sensor_hal::get_type(void) +sensor_hal_type_t ultraviolet_sensor_hal::get_type(void) { - return ULTRAVIOLET_SENSOR; + return SENSOR_HAL_TYPE_ULTRAVIOLET; } bool ultraviolet_sensor_hal::enable(void) diff --git a/src/ultraviolet/ultraviolet_sensor_hal.h b/src/ultraviolet/ultraviolet_sensor_hal.h index 1925b7a..5af37ca 100755 --- a/src/ultraviolet/ultraviolet_sensor_hal.h +++ b/src/ultraviolet/ultraviolet_sensor_hal.h @@ -21,17 +21,14 @@ #define _ULTRAVIOLET_SENSOR_HAL_H_ #include -#include - -using std::string; class ultraviolet_sensor_hal : public sensor_hal { public: ultraviolet_sensor_hal(); virtual ~ultraviolet_sensor_hal(); - string get_model_id(void); - sensor_type_t get_type(void); + std::string get_model_id(void); + sensor_hal_type_t get_type(void); bool enable(void); bool disable(void); bool set_interval(unsigned long val); @@ -40,9 +37,9 @@ public: bool get_properties(sensor_properties_s &properties); private: - string m_model_id; - string m_vendor; - string m_chip_name; + std::string m_model_id; + std::string m_vendor; + std::string m_chip_name; float m_min_range; float m_max_range; @@ -55,9 +52,9 @@ private: unsigned long long m_fired_time; int m_node_handle; - string m_enable_node; - string m_data_node; - string m_interval_node; + std::string m_enable_node; + std::string m_data_node; + std::string m_interval_node; bool m_sensorhub_controlled; diff --git a/src/uncal_gyro/uncal_gyro_sensor.cpp b/src/uncal_gyro/uncal_gyro_sensor.cpp old mode 100644 new mode 100755 index d152be7..831b6fe --- a/src/uncal_gyro/uncal_gyro_sensor.cpp +++ b/src/uncal_gyro/uncal_gyro_sensor.cpp @@ -32,6 +32,9 @@ #include #include +using std::vector; +using std::string; + #define SENSOR_NAME "UNCAL_GYROSCOPE_SENSOR" #define SENSOR_TYPE_UNCAL_GYRO "UNCAL_GYROSCOPE" @@ -62,7 +65,7 @@ uncal_gyro_sensor::uncal_gyro_sensor() { cvirtual_sensor_config &config = cvirtual_sensor_config::get_instance(); - sensor_hal *fusion_sensor_hal = sensor_plugin_loader::get_instance().get_sensor_hal(FUSION_SENSOR); + sensor_hal *fusion_sensor_hal = sensor_plugin_loader::get_instance().get_sensor_hal(SENSOR_HAL_TYPE_FUSION); if (!fusion_sensor_hal) m_hardware_fusion = false; else @@ -119,9 +122,9 @@ bool uncal_gyro_sensor::init(void) return true; } -sensor_type_t uncal_gyro_sensor::get_type(void) +void uncal_gyro_sensor::get_types(vector &types) { - return UNCAL_GYROSCOPE_SENSOR; + types.push_back(UNCAL_GYROSCOPE_SENSOR); } bool uncal_gyro_sensor::on_start(void) @@ -287,7 +290,7 @@ int uncal_gyro_sensor::get_sensor_data(const unsigned int event_type, sensor_dat return 0; } -bool uncal_gyro_sensor::get_properties(sensor_properties_s &properties) +bool uncal_gyro_sensor::get_properties(sensor_type_t sensor_type, sensor_properties_s &properties) { properties.resolution = 0.000001; properties.vendor = m_vendor; diff --git a/src/uncal_gyro/uncal_gyro_sensor.h b/src/uncal_gyro/uncal_gyro_sensor.h old mode 100644 new mode 100755 index dccb6f0..f4c6b8c --- a/src/uncal_gyro/uncal_gyro_sensor.h +++ b/src/uncal_gyro/uncal_gyro_sensor.h @@ -35,8 +35,8 @@ public: bool add_interval(int client_id, unsigned int interval); bool delete_interval(int client_id); - bool get_properties(sensor_properties_s &properties); - sensor_type_t get_type(void); + virtual bool get_properties(sensor_type_t sensor_type, sensor_properties_s &properties); + virtual void get_types(std::vector &types); int get_sensor_data(const unsigned int event_type, sensor_data_t &data); @@ -56,8 +56,8 @@ private: unsigned long long m_time; unsigned int m_interval; - string m_vendor; - string m_raw_data_unit; + std::string m_vendor; + std::string m_raw_data_unit; int m_default_sampling_time; float m_gyro_static_bias[3]; int m_gyro_rotation_direction_compensation[3]; diff --git a/systemd/sensord.socket b/systemd/sensord.socket old mode 100644 new mode 100755 index 5357ca5..b8bd460 --- a/systemd/sensord.socket +++ b/systemd/sensord.socket @@ -2,7 +2,7 @@ Description=Sensor daemon socket [Socket] -ListenStream=/tmp/sf_command_socket +ListenStream=/tmp/sensord_command_socket SocketMode=0777 PassCredentials=yes Accept=false diff --git a/test/src/api-test.c b/test/src/api-test.c old mode 100644 new mode 100755 index fb772c6..6ab4dd0 --- a/test/src/api-test.c +++ b/test/src/api-test.c @@ -121,6 +121,7 @@ bool check_sensor_api(unsigned int event_type, int cond_value) sensor_t *output_list; result_boolean = sensord_get_sensor_list(sensor_type, &output_list, &output); if (!result_boolean) { + free(output2); fprintf(fp, "Sensor - %d, event - %d, failed at sensord_get_sensor_list\n", sensor_type, event_type); return false; } @@ -128,6 +129,8 @@ bool check_sensor_api(unsigned int event_type, int cond_value) result = sensord_register_event(handle, event_type, cond_value, 0, callback, NULL); if (result < 0) { + free(output2); + free(output_list); fprintf(fp, "Sensor - %d, event - %d, failed at sensord_register_event\n", sensor_type, event_type); return false; } @@ -137,6 +140,8 @@ bool check_sensor_api(unsigned int event_type, int cond_value) if (!result_boolean) { sensord_unregister_event(handle, event_type); sensord_disconnect(handle); + free(output2); + free(output_list); fprintf(fp, "Sensor - %d, event - %d, failed at sensord_start\n", sensor_type, event_type); return false; } @@ -146,6 +151,8 @@ bool check_sensor_api(unsigned int event_type, int cond_value) if (!result_boolean) { sensord_unregister_event(handle, event_type); sensord_disconnect(handle); + free(output2); + free(output_list); fprintf(fp, "Sensor - %d, event - %d, failed at sensord_get_data\n", sensor_type, event_type); return false; } @@ -155,12 +162,16 @@ bool check_sensor_api(unsigned int event_type, int cond_value) result_boolean = sensord_change_event_interval(handle, event_type, 101); if (!result_boolean) { + free(output2); + free(output_list); fprintf(fp, "Sensor - %d, event - %d, failed at sensord_change_event_interval\n", sensor_type, event_type); return false; } result_boolean = sensord_set_option(handle, SENSOR_OPTION_ON_IN_SCREEN_OFF); if (!result_boolean){ + free(output2); + free(output_list); fprintf(fp, "Sensor - %d, event - %d, failed at sensord_change_sensor_option\n", sensor_type, event_type); return false; } @@ -168,6 +179,8 @@ bool check_sensor_api(unsigned int event_type, int cond_value) result_boolean = sensord_unregister_event(handle, event_type); if (!result_boolean) { + free(output2); + free(output_list); fprintf(fp, "Sensor - %d, event - %d, failed at sensord_unregister_event\n", sensor_type, event_type); return false; } @@ -175,6 +188,8 @@ bool check_sensor_api(unsigned int event_type, int cond_value) result_boolean = sensord_stop(handle); if (!result_boolean) { + free(output2); + free(output_list); fprintf(fp, "Sensor - %d, event - %d, failed at sensord_stop\n", sensor_type, event_type); return false; } @@ -182,10 +197,15 @@ bool check_sensor_api(unsigned int event_type, int cond_value) result_boolean = sensord_disconnect(handle); if (!result_boolean) { + free(output2); + free(output_list); fprintf(fp, "Sensor - %d, event - %d, failed at sensord_disconnect\n", sensor_type, event_type); return false; } + free(output2); + free(output_list); + return true; } diff --git a/test/src/check-sensor.c b/test/src/check-sensor.c old mode 100644 new mode 100755 index 5fcff08..b231650 --- a/test/src/check-sensor.c +++ b/test/src/check-sensor.c @@ -168,6 +168,8 @@ int get_event(sensor_type_t sensor_type, char str[]) return UNCAL_GYRO_RAW_DATA_EVENT; break; + default: + return -1; } return -1; } diff --git a/test/src/fusion-data-collection.c b/test/src/fusion-data-collection.c old mode 100644 new mode 100755 index 8c4c771..86e9a0f --- a/test/src/fusion-data-collection.c +++ b/test/src/fusion-data-collection.c @@ -81,7 +81,7 @@ int main(int argc, char **argv) int i; int handle[MAXSIZE]; - int result[MAXSIZE], start_handle[MAXSIZE], stop_handle[MAXSIZE]; + int result[MAXSIZE], start_handle[MAXSIZE]; unsigned int event[MAXSIZE]; int sensors[MAXSIZE]; diff --git a/test/src/multi-process-performance-test.c b/test/src/multi-process-performance-test.c old mode 100644 new mode 100755 index 82fc74f..20d8ea2 --- a/test/src/multi-process-performance-test.c +++ b/test/src/multi-process-performance-test.c @@ -107,7 +107,8 @@ int main(int argc, char** argv) for (j = 0; j < MAX; j++) { char command[100]; sprintf(command, "kill %d", pids[j]); - system(command); + if (system(command) == -1) + return -1; } } diff --git a/test/src/sensor-test.c b/test/src/sensor-test.c old mode 100644 new mode 100755 index d9ddcff..281d8ac --- a/test/src/sensor-test.c +++ b/test/src/sensor-test.c @@ -150,6 +150,7 @@ int main(int argc, char **argv) } else { usage(); + return -1; } interval = DEFAULT_EVENT_INTERVAL; -- 2.7.4 From ce23ea11197c8d07b51ddac81e26825edcd8cbcc Mon Sep 17 00:00:00 2001 From: "Hongkuk, Son" Date: Tue, 20 Oct 2015 22:10:01 +0900 Subject: [PATCH 06/16] sensord: disable ultraviolet and bio_led_red To prevent TCT fail, disable ultraviolet and bio_led_red TEMPORARILY. Signed-off-by: Hongkuk, Son Change-Id: Iea680190defc5e8f4689724878c00047f7a84fa9 --- packaging/sensord.spec | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) mode change 100755 => 100644 packaging/sensord.spec diff --git a/packaging/sensord.spec b/packaging/sensord.spec old mode 100755 new mode 100644 index d1a34e3..dd4ea37 --- a/packaging/sensord.spec +++ b/packaging/sensord.spec @@ -28,7 +28,7 @@ BuildRequires: pkgconfig(cynara-session) %define geo_state ON %define pressure_state ON %define temperature_state ON -%define ultraviolet_state ON +%define ultraviolet_state OFF %define orientation_state ON %define gravity_state ON %define linear_accel_state ON @@ -37,7 +37,7 @@ BuildRequires: pkgconfig(cynara-session) %define gaming_rv_state ON %define tilt_state ON %define uncal_gyro_state ON -%define bio_led_red_state ON +%define bio_led_red_state OFF %define build_test_suite OFF %description -- 2.7.4 From 8baf020bc0e5ecff210e01a362560111edbefd4c Mon Sep 17 00:00:00 2001 From: "Hongkuk, Son" Date: Wed, 21 Oct 2015 11:35:05 +0900 Subject: [PATCH 07/16] sensord: extra data embedding Signed-off-by: Hongkuk, Son Change-Id: I79be951f32e25e7497f55819a051cf8de1a4cd30 --- src/libsensord/csensor_event_listener.cpp | 3 +++ src/shared/common.cpp | 3 +++ src/shared/csensor_event_dispatcher.cpp | 16 ++++++++++++++-- src/shared/sensor_common.h | 7 +++++++ 4 files changed, 27 insertions(+), 2 deletions(-) mode change 100755 => 100644 src/shared/csensor_event_dispatcher.cpp mode change 100755 => 100644 src/shared/sensor_common.h diff --git a/src/libsensord/csensor_event_listener.cpp b/src/libsensord/csensor_event_listener.cpp index dea77e0..628726a 100644 --- a/src/libsensord/csensor_event_listener.cpp +++ b/src/libsensord/csensor_event_listener.cpp @@ -694,6 +694,9 @@ void csensor_event_listener::handle_events(void* event) event_data.event_data = &(sensor_event->data); event_data.event_data_size = sizeof(sensor_event->data); } + + if (sensor_event->data.extra_data_size > 0) + sensor_event->data.extra_data = (void *)event + sizeof(sensor_event_t); } { /* scope for the lock */ diff --git a/src/shared/common.cpp b/src/shared/common.cpp index 7196266..4f9f100 100644 --- a/src/shared/common.cpp +++ b/src/shared/common.cpp @@ -184,6 +184,9 @@ void copy_sensor_data(sensor_data_t *dest, sensor_data_t *src) { memcpy(dest, src, offsetof(sensor_data_t, values)); memcpy(dest->values, src->values, src->value_count * sizeof(src->values[0])); + + dest->extra_data_size = src->extra_data_size; + dest->extra_data = src->extra_data; } void copy_sensorhub_data(sensorhub_data_t *dest, sensorhub_data_t *src) diff --git a/src/shared/csensor_event_dispatcher.cpp b/src/shared/csensor_event_dispatcher.cpp old mode 100755 new mode 100644 index 1fc79e0..8b23060 --- a/src/shared/csensor_event_dispatcher.cpp +++ b/src/shared/csensor_event_dispatcher.cpp @@ -227,10 +227,22 @@ void csensor_event_dispatcher::send_sensor_events(void* events, int event_cnt, b bool ret; - if (is_hub_event) + if (is_hub_event) { ret = (client_socket.send(sensor_hub_events + i, sizeof(sensorhub_event_t)) > 0); - else + } else if (sensor_events[i].data.extra_data_size > 0) { + void *extended_event; + int extended_size = sizeof(sensor_event_t) + sensor_events[i].data.extra_data_size; + + extended_event = (void *)malloc(extended_size); + memcpy(extended_event, sensor_events + i, sizeof(sensor_event_t)); + memcpy(extended_event + sizeof(sensor_event_t), sensor_events[i].data.extra_data, sensor_events[i].data.extra_data_size); + + ret = (client_socket.send(extended_event, extended_size) > 0); + + free(extended_event); + } else { ret = (client_socket.send(sensor_events + i, sizeof(sensor_event_t)) > 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()); diff --git a/src/shared/sensor_common.h b/src/shared/sensor_common.h old mode 100755 new mode 100644 index d1df649..b70c4ef --- a/src/shared/sensor_common.h +++ b/src/shared/sensor_common.h @@ -121,6 +121,13 @@ typedef struct sensor_data_t { }; float values[SENSOR_DATA_VALUE_SIZE]; + +/* + * If extra_data_size > 0, + * then use extra_data. + */ + int extra_data_size; + void *extra_data; } sensor_data_t; #define SENSOR_HUB_DATA_SIZE 4096 -- 2.7.4 From 4e085a5e1656663f2154f4e4e6f75ba528ac5a90 Mon Sep 17 00:00:00 2001 From: "Hongkuk, Son" Date: Wed, 21 Oct 2015 13:41:06 +0900 Subject: [PATCH 08/16] sensord: wakeup mode support Signed-off-by: Hongkuk, Son Change-Id: I476e3da1a2e5797b38b914e3e9614bd0beb841a9 --- src/libsensord/client.cpp | 44 ++++++++++++++ src/libsensord/command_channel.cpp | 39 +++++++++++++ src/libsensord/command_channel.h | 1 + src/libsensord/csensor_event_listener.cpp | 32 +++++++++++ src/libsensord/csensor_event_listener.h | 3 + src/libsensord/csensor_handle_info.cpp | 1 + src/libsensord/csensor_handle_info.h | 1 + src/libsensord/sensor_internal.h | 19 +++++++ src/server/command_worker.cpp | 31 ++++++++++ src/server/command_worker.h | 1 + src/shared/CMakeLists.txt | 2 + src/shared/cclient_info_manager.cpp | 16 ++++++ src/shared/cclient_info_manager.h | 1 + src/shared/cclient_sensor_record.cpp | 14 +++++ src/shared/cclient_sensor_record.h | 1 + src/shared/csensor_usage.cpp | 1 + src/shared/csensor_usage.h | 1 + src/shared/cwakeup_info_list.cpp | 95 +++++++++++++++++++++++++++++++ src/shared/cwakeup_info_list.h | 48 ++++++++++++++++ src/shared/sensor_base.cpp | 63 ++++++++++++++++++++ src/shared/sensor_base.h | 9 +++ src/shared/sensor_common.h | 13 +++++ src/shared/sensor_hal.cpp | 10 ++++ src/shared/sensor_hal.h | 2 + src/shared/sensor_info.cpp | 32 +++++++++++ src/shared/sensor_info.h | 5 ++ src/shared/sf_common.h | 6 ++ 27 files changed, 491 insertions(+) create mode 100644 src/shared/cwakeup_info_list.cpp create mode 100644 src/shared/cwakeup_info_list.h mode change 100755 => 100644 src/shared/sensor_base.cpp mode change 100755 => 100644 src/shared/sensor_base.h mode change 100755 => 100644 src/shared/sensor_hal.cpp mode change 100755 => 100644 src/shared/sensor_hal.h mode change 100755 => 100644 src/shared/sensor_info.cpp mode change 100755 => 100644 src/shared/sensor_info.h diff --git a/src/libsensord/client.cpp b/src/libsensord/client.cpp index 943e5a9..9167a7a 100644 --- a/src/libsensord/client.cpp +++ b/src/libsensord/client.cpp @@ -602,6 +602,16 @@ API bool sensord_is_supported_event_type(sensor_t sensor, unsigned int event_typ return true; } +API bool sensord_is_wakeup_supported(sensor_t sensor) +{ + sensor_info* info = sensor_to_sensor_info(sensor); + + retvm_if (!sensor_info_manager::get_instance().is_valid(info), + false, "Invalid param: sensor (%p)", sensor); + + return info->is_wakeup_supported(); +} + API int sensord_connect(sensor_t sensor) { command_channel *cmd_channel = NULL; @@ -1064,6 +1074,40 @@ API bool sensord_set_option(int handle, int option) } +API bool sensord_set_wakeup(int handle, int wakeup) +{ + sensor_id_t sensor_id; + command_channel *cmd_channel; + int client_id; + + AUTOLOCK(lock); + + if (!event_listener.get_sensor_id(handle, sensor_id)) { + ERR("client %s failed to get handle information", get_client_name()); + return false; + } + + retvm_if ((wakeup != SENSOR_WAKEUP_ON) && (wakeup != SENSOR_WAKEUP_OFF), false, "Invalid wakeup value : %d, handle: %d, %s, %s", + wakeup, handle, get_sensor_name(sensor_id), get_client_name()); + + event_listener.set_sensor_wakeup(handle, wakeup); + + if (!event_listener.get_command_channel(sensor_id, &cmd_channel)) { + ERR("client %s failed to get command channel for %s", get_client_name(), get_sensor_name(sensor_id)); + return false; + } + + client_id = event_listener.get_client_id(); + retvm_if ((client_id < 0), false, "Invalid client id : %d, handle: %d, %s, %s", client_id, handle, get_sensor_name(sensor_id), get_client_name()); + + if (!cmd_channel->cmd_set_wakeup(wakeup)) { + ERR("Sending cmd_set_wakeup(%d, %s, %d) failed for %s", client_id, get_sensor_name(sensor_id), wakeup, get_client_name()); + return false; + } + + return true; +} + API bool sensord_send_sensorhub_data(int handle, const char *data, int data_len) { sensor_id_t sensor_id; diff --git a/src/libsensord/command_channel.cpp b/src/libsensord/command_channel.cpp index c46a1a1..92bc9dd 100644 --- a/src/libsensord/command_channel.cpp +++ b/src/libsensord/command_channel.cpp @@ -373,6 +373,45 @@ bool command_channel::cmd_set_option(int option) return true; } +bool command_channel::cmd_set_wakeup(int wakeup) +{ + cpacket *packet; + cmd_set_wakeup_t *cmd_set_wakeup; + cmd_done_t *cmd_done; + + packet = new(std::nothrow) cpacket(sizeof(cmd_set_wakeup_t)); + retvm_if(!packet, false, "Failed to allocate memory"); + + packet->set_cmd(CMD_SET_WAKEUP); + + cmd_set_wakeup = (cmd_set_wakeup_t*)packet->data(); + cmd_set_wakeup->wakeup = wakeup; + + INFO("%s send cmd_set_wakeup(client_id=%d, %s, wakeup=%d)", + get_client_name(), m_client_id, get_sensor_name(m_sensor_id), wakeup); + + if (!command_handler(packet, (void **)&cmd_done)) { + ERR("Client %s failed to send/receive command for sensor[%s] with client_id [%d], wakeup[%d]", + get_client_name(), get_sensor_name(m_sensor_id), m_client_id, wakeup); + delete packet; + return false; + } + + if (cmd_done->value < 0) { + ERR("Client %s got error[%d] from server for sensor[%s] with client_id [%d], wakeup[%d]", + get_client_name(), cmd_done->value, get_sensor_name(m_sensor_id), m_client_id, wakeup); + + delete[] (char *)cmd_done; + delete packet; + return false; + } + + delete[] (char *)cmd_done; + delete packet; + + return true; +} + bool command_channel::cmd_register_event(unsigned int event_type) { cpacket *packet; diff --git a/src/libsensord/command_channel.h b/src/libsensord/command_channel.h index ae1ba6a..c4f85b5 100644 --- a/src/libsensord/command_channel.h +++ b/src/libsensord/command_channel.h @@ -41,6 +41,7 @@ public: bool cmd_start(void); bool cmd_stop(void); bool cmd_set_option(int option); + bool cmd_set_wakeup(int wakeup); bool cmd_register_event(unsigned int event_type); bool cmd_register_events(event_type_vector &event_vec); bool cmd_unregister_event(unsigned int event_type); diff --git a/src/libsensord/csensor_event_listener.cpp b/src/libsensord/csensor_event_listener.cpp index 628726a..af804e1 100644 --- a/src/libsensord/csensor_event_listener.cpp +++ b/src/libsensord/csensor_event_listener.cpp @@ -527,6 +527,38 @@ bool csensor_event_listener::get_sensor_state(int handle, int &sensor_state) return true; } +bool csensor_event_listener::get_sensor_wakeup(int handle, int &sensor_wakeup) +{ + AUTOLOCK(m_handle_info_lock); + + auto it_handle = m_sensor_handle_infos.find(handle); + + if (it_handle == m_sensor_handle_infos.end()) { + ERR("Handle[%d] is not found for client %s", handle, get_client_name()); + return false; + } + + sensor_wakeup = it_handle->second.m_sensor_wakeup; + + return true; +} + +bool csensor_event_listener::set_sensor_wakeup(int handle, int sensor_wakeup) +{ + AUTOLOCK(m_handle_info_lock); + + auto it_handle = m_sensor_handle_infos.find(handle); + + if (it_handle == m_sensor_handle_infos.end()) { + ERR("Handle[%d] is not found for client %s", handle, get_client_name()); + return false; + } + + it_handle->second.m_sensor_wakeup = sensor_wakeup; + + return true; +} + void csensor_event_listener::get_active_event_types(sensor_id_t sensor, event_type_vector &active_event_types) { event_type_vector event_types; diff --git a/src/libsensord/csensor_event_listener.h b/src/libsensord/csensor_event_listener.h index 2986273..d65a97d 100644 --- a/src/libsensord/csensor_event_listener.h +++ b/src/libsensord/csensor_event_listener.h @@ -98,6 +98,9 @@ public: bool get_sensor_id(int handle, sensor_id_t &sensor_id); bool get_sensor_state(int handle, int &state); + bool get_sensor_wakeup(int handle, int &sensor_wakeup); + bool set_sensor_wakeup(int handle, int sensor_wakeup); + void get_sensor_rep(sensor_id_t sensor_id, sensor_rep& rep); bool has_client_id(void); diff --git a/src/libsensord/csensor_handle_info.cpp b/src/libsensord/csensor_handle_info.cpp index 3aa173f..d6c7194 100644 --- a/src/libsensord/csensor_handle_info.cpp +++ b/src/libsensord/csensor_handle_info.cpp @@ -30,6 +30,7 @@ csensor_handle_info::csensor_handle_info() , m_sensor_id(UNKNOWN_SENSOR) , m_sensor_state(SENSOR_STATE_UNKNOWN) , m_sensor_option(SENSOR_OPTION_DEFAULT) +, m_sensor_wakeup(SENSOR_WAKEUP_OFF) , m_bad_accuracy(false) , m_accuracy(-1) , m_accuracy_cb(NULL) diff --git a/src/libsensord/csensor_handle_info.h b/src/libsensord/csensor_handle_info.h index 3330dbe..51fb8be 100644 --- a/src/libsensord/csensor_handle_info.h +++ b/src/libsensord/csensor_handle_info.h @@ -34,6 +34,7 @@ public: sensor_id_t m_sensor_id; int m_sensor_state; int m_sensor_option; + int m_sensor_wakeup; int m_bad_accuracy; int m_accuracy; sensor_accuracy_changed_cb_t m_accuracy_cb; diff --git a/src/libsensord/sensor_internal.h b/src/libsensord/sensor_internal.h index ff107cb..b02ba89 100644 --- a/src/libsensord/sensor_internal.h +++ b/src/libsensord/sensor_internal.h @@ -197,6 +197,14 @@ bool sensord_get_supported_event_types(sensor_t sensor, unsigned int **event_typ bool sensord_is_supported_event_type(sensor_t sensor, unsigned int event_type, bool *supported); /** + * @brief Check a wakeup supported or not by this sensor. + * + * @param[in] sensor a sensor to check a given event type is supporeted. + * @return true on success, otherwise false. + */ +bool sensord_is_wakeup_supported(sensor_t sensor); + +/** * @brief Connect a given sensor and get a handle of a given sensor. * * @param[in] sensor a sensor to connect @@ -320,6 +328,17 @@ bool sensord_change_event_max_batch_latency(int handle, unsigned int event_type, bool sensord_set_option(int handle, int option); /** + * @brief Change the wakeup mode of a connected sensor. + * + * @param[in] handle a handle represensting a connected sensor. + * @param[in] wakeup either one of SENSOR_WAKEUP_OFF and SENSOR_WAKEUP_ON. + * with SENSOR_WAKEUP_OFF, it stops to listening events when AP is asleep. + * with SENSOR_WAKEUP_ON, it continues to listening events even when AP is asleep. + * @return true on success, otherwise false. + */ +bool sensord_set_wakeup(int handle, int wakeup); + +/** * @brief Send data to sensorhub * * @param[in] handle a handle represensting a connected context sensor. diff --git a/src/server/command_worker.cpp b/src/server/command_worker.cpp index e88c897..22c30fe 100644 --- a/src/server/command_worker.cpp +++ b/src/server/command_worker.cpp @@ -87,6 +87,7 @@ void command_worker::init_cmd_handlers(void) m_cmd_handlers[CMD_REG] = &command_worker::cmd_register_event; m_cmd_handlers[CMD_UNREG] = &command_worker::cmd_unregister_event; m_cmd_handlers[CMD_SET_OPTION] = &command_worker::cmd_set_option; + m_cmd_handlers[CMD_SET_WAKEUP] = &command_worker::cmd_set_wakeup; m_cmd_handlers[CMD_SET_BATCH] = &command_worker::cmd_set_batch; m_cmd_handlers[CMD_UNSET_BATCH] = &command_worker::cmd_unset_batch; m_cmd_handlers[CMD_SET_COMMAND] = &command_worker::cmd_set_command; @@ -710,6 +711,36 @@ out: return true; } +bool command_worker::cmd_set_wakeup(void *payload) +{ + cmd_set_wakeup_t *cmd; + long ret_value = OP_ERROR; + + 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", + 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", + m_client_id, m_sensor_id, cmd->wakeup); + ret_value = OP_ERROR; + goto out; + } + + ret_value = m_module->add_wakeup(m_client_id, cmd->wakeup); + +out: + if (!send_cmd_done(ret_value)) + ERR("Failed to send cmd_done to a client"); + + return true; +} + bool command_worker::cmd_set_command(void *payload) { cmd_set_command_t *cmd; diff --git a/src/server/command_worker.h b/src/server/command_worker.h index 89796f5..88000c8 100644 --- a/src/server/command_worker.h +++ b/src/server/command_worker.h @@ -72,6 +72,7 @@ private: bool cmd_set_batch(void *payload); bool cmd_unset_batch(void *payload); bool cmd_set_option(void *payload); + bool cmd_set_wakeup(void *payload); bool cmd_set_command(void *payload); bool cmd_get_data(void *payload); bool cmd_send_sensorhub_data(void *payload); diff --git a/src/shared/CMakeLists.txt b/src/shared/CMakeLists.txt index cdc35ee..d869101 100644 --- a/src/shared/CMakeLists.txt +++ b/src/shared/CMakeLists.txt @@ -29,6 +29,7 @@ add_library(sensord-server SHARED cclient_info_manager.cpp cclient_sensor_record.cpp cinterval_info_list.cpp + cwakeup_info_list.cpp batch_info_list.cpp sensor_plugin_loader.cpp sensor_hal.cpp @@ -64,6 +65,7 @@ install(FILES cvirtual_sensor_config.h csensor_event_queue.h cinterval_info_list.h + cwakeup_info_list.h batch_info_list.h sensor_plugin_loader.h sensor_hal.h diff --git a/src/shared/cclient_info_manager.cpp b/src/shared/cclient_info_manager.cpp index 1a142de..4877972 100644 --- a/src/shared/cclient_info_manager.cpp +++ b/src/shared/cclient_info_manager.cpp @@ -135,6 +135,22 @@ bool cclient_info_manager::set_option(int client_id, sensor_id_t sensor_id, int return true; } +bool cclient_info_manager::set_wakeup(int client_id, sensor_id_t sensor_id, int wakeup) +{ + AUTOLOCK(m_mutex); + + auto it_record = m_clients.find(client_id); + + if (it_record == m_clients.end()) { + ERR("Client[%d] is not found", client_id); + return false; + } + + if(!it_record->second.set_wakeup(sensor_id, wakeup)) + return false; + + return true; +} bool cclient_info_manager::set_start(int client_id, sensor_id_t sensor_id, bool start) { diff --git a/src/shared/cclient_info_manager.h b/src/shared/cclient_info_manager.h index e36c2fb..c6f79e3 100644 --- a/src/shared/cclient_info_manager.h +++ b/src/shared/cclient_info_manager.h @@ -54,6 +54,7 @@ public: bool set_batch(int client_id, sensor_id_t sensor_id, unsigned int interval, unsigned int latency); bool get_batch(int client_id, sensor_id_t sensor_id, unsigned int &interval, unsigned int &latency); bool set_option(int client_id, sensor_id_t sensor_id, int option); + bool set_wakeup(int client_id, sensor_id_t sensor_id, int wakeup); bool set_start(int client_id, sensor_id_t sensor_id, bool start); bool is_started(int client_id, sensor_id_t sensor_id); diff --git a/src/shared/cclient_sensor_record.cpp b/src/shared/cclient_sensor_record.cpp index 6995862..d6b1432 100644 --- a/src/shared/cclient_sensor_record.cpp +++ b/src/shared/cclient_sensor_record.cpp @@ -88,6 +88,20 @@ bool cclient_sensor_record::set_option(sensor_id_t sensor_id, int option) return true; } +bool cclient_sensor_record::set_wakeup(sensor_id_t sensor_id, int wakeup) +{ + auto it_usage = m_sensor_usages.find(sensor_id); + + if (it_usage == m_sensor_usages.end()) { + csensor_usage usage; + usage.m_wakeup = wakeup; + m_sensor_usages.insert(pair(sensor_id, usage)); + } else { + it_usage->second.m_wakeup = wakeup; + } + + return true; +} bool cclient_sensor_record::set_start(sensor_id_t sensor_id, bool start) { diff --git a/src/shared/cclient_sensor_record.h b/src/shared/cclient_sensor_record.h index d42093e..6ddde9c 100644 --- a/src/shared/cclient_sensor_record.h +++ b/src/shared/cclient_sensor_record.h @@ -48,6 +48,7 @@ public: bool set_batch(sensor_id_t sensor_id, unsigned int interval, unsigned int latency); bool get_batch(sensor_id_t sensor_id, unsigned int &interval, unsigned int &latency); bool set_option(sensor_id_t sensor_id, int option); + bool set_wakeup(sensor_id_t sensor_id, int wakeup); bool set_start(sensor_id_t sensor_id, bool start); bool is_started(sensor_id_t sensor_id); diff --git a/src/shared/csensor_usage.cpp b/src/shared/csensor_usage.cpp index 345c014..ad9d750 100644 --- a/src/shared/csensor_usage.cpp +++ b/src/shared/csensor_usage.cpp @@ -25,6 +25,7 @@ csensor_usage::csensor_usage() : m_interval(POLL_MAX_HZ_MS) , m_latency(0) , m_option(SENSOR_OPTION_DEFAULT) +, m_wakeup(SENSOR_WAKEUP_OFF) , m_start(false) { diff --git a/src/shared/csensor_usage.h b/src/shared/csensor_usage.h index 3c71dcd..553ca51 100644 --- a/src/shared/csensor_usage.h +++ b/src/shared/csensor_usage.h @@ -31,6 +31,7 @@ public: unsigned int m_interval; unsigned int m_latency; int m_option; + int m_wakeup; reg_event_vector m_reg_events; bool m_start; diff --git a/src/shared/cwakeup_info_list.cpp b/src/shared/cwakeup_info_list.cpp new file mode 100644 index 0000000..c695d4c --- /dev/null +++ b/src/shared/cwakeup_info_list.cpp @@ -0,0 +1,95 @@ +/* + * libsensord-share + * + * Copyright (c) 2013 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 + + +cwakeup_info::cwakeup_info(int client_id, int wakeup) +{ + this->client_id = client_id; + this->wakeup = wakeup; +} + +cwakeup_info_iterator cwakeup_info_list::find_if(int client_id) +{ + auto iter = m_list.begin(); + + while (iter != m_list.end()) { + if (iter->client_id == client_id) + break; + + ++iter; + } + + return iter; +} + + +bool cwakeup_info_list::add_wakeup(int client_id, int wakeup) +{ + auto iter = find_if(client_id); + + if (iter != m_list.end()) + *iter = cwakeup_info(client_id, wakeup); + else + m_list.push_back(cwakeup_info(client_id, wakeup)); + + return true; +} + +bool cwakeup_info_list::delete_wakeup(int client_id) +{ + auto iter = find_if(client_id); + + if (iter == m_list.end()) + return false; + + m_list.erase(iter); + + return true; +} + +int cwakeup_info_list::get_wakeup(int client_id) +{ + auto iter = find_if(client_id); + + if (iter == m_list.end()) + return -1; + + return iter->wakeup; +} + +int cwakeup_info_list::is_wakeup_on(void) +{ + if (m_list.empty()) + return -1; + + auto iter = m_list.begin(); + + while (iter != m_list.end()) { + if (iter->wakeup == true) + break; + + ++iter; + } + + return iter->wakeup; +} + diff --git a/src/shared/cwakeup_info_list.h b/src/shared/cwakeup_info_list.h new file mode 100644 index 0000000..f11e7e8 --- /dev/null +++ b/src/shared/cwakeup_info_list.h @@ -0,0 +1,48 @@ +/* + * libsensord-share + * + * Copyright (c) 2013 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 _CWAKEUP_INFO_LIST_CLASS_H_ +#define _CWAKEUP_INFO_LIST_CLASS_H_ + +#include + +class cwakeup_info +{ +public: + cwakeup_info(int client_id, int wakeup); + int client_id; + int wakeup; +}; + +typedef std::list::iterator cwakeup_info_iterator; + +class cwakeup_info_list +{ +private: + cwakeup_info_iterator find_if(int client_id); + + std::list m_list; + +public: + bool add_wakeup(int client_id, int wakeup); + bool delete_wakeup(int client_id); + int get_wakeup(int client_id); + int is_wakeup_on(void); +}; +#endif diff --git a/src/shared/sensor_base.cpp b/src/shared/sensor_base.cpp old mode 100755 new mode 100644 index 056e065..52915e7 --- a/src/shared/sensor_base.cpp +++ b/src/shared/sensor_base.cpp @@ -264,9 +264,61 @@ unsigned int sensor_base::get_interval(int client_id, bool is_processor) return m_interval_info_list.get_interval(client_id, is_processor); } +bool sensor_base::add_wakeup(int client_id, int wakeup) +{ + int prev_wakeup, cur_wakeup; + + AUTOLOCK(m_wakeup_info_list_mutex); + + prev_wakeup = m_wakeup_info_list.is_wakeup_on(); + + if (!m_wakeup_info_list.add_wakeup(client_id, wakeup)) + return false; + + cur_wakeup = m_wakeup_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", + get_id(), prev_wakeup, cur_wakeup, client_id); + set_wakeup(client_id, SENSOR_WAKEUP_ON); + } + + return true; +} + +bool sensor_base::delete_wakeup(int client_id) +{ + int prev_wakeup, cur_wakeup; + AUTOLOCK(m_wakeup_info_list_mutex); + + prev_wakeup = m_wakeup_info_list.is_wakeup_on(); + + if (!m_wakeup_info_list.delete_wakeup(client_id)) + return false; + + cur_wakeup = m_wakeup_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", + get_id(), prev_wakeup, cur_wakeup, client_id); + set_wakeup(client_id, SENSOR_WAKEUP_OFF); + } + + return true; +} + +int sensor_base::get_wakeup(int client_id) +{ + AUTOLOCK(m_wakeup_info_list_mutex); + + return m_wakeup_info_list.is_wakeup_on(); +} + void sensor_base::get_sensor_info(sensor_type_t sensor_type, sensor_info &info) { sensor_properties_s properties; + properties.wakeup_supported = false; + get_properties(sensor_type, properties); info.set_type(sensor_type); @@ -289,6 +341,7 @@ void sensor_base::get_sensor_info(sensor_type_t sensor_type, sensor_info &info) } info.set_supported_events(events); + info.set_wakeup_supported(properties.wakeup_supported); return; } @@ -308,11 +361,21 @@ bool sensor_base::is_supported(unsigned int event_type) return true; } +bool sensor_base::is_wakeup_supported(void) +{ + return false; +} + long sensor_base::set_command(unsigned int cmd, long value) { return -1; } +bool sensor_base::set_wakeup(int client_id, int wakeup) +{ + return false; +} + int sensor_base::send_sensorhub_data(const char* data, int data_len) { return -1; diff --git a/src/shared/sensor_base.h b/src/shared/sensor_base.h old mode 100755 new mode 100644 index 353cee2..c4c4600 --- a/src/shared/sensor_base.h +++ b/src/shared/sensor_base.h @@ -29,6 +29,7 @@ #include #include +#include #include #include @@ -66,12 +67,18 @@ public: virtual bool delete_interval(int client_id, bool is_processor); unsigned int get_interval(int client_id, bool is_processor); + virtual bool add_wakeup(int client_id, int wakeup); + virtual bool delete_wakeup(int client_id); + int get_wakeup(int client_id); + void get_sensor_info(sensor_type_t sensor_type, sensor_info &info); virtual bool get_properties(sensor_type_t sensor_type, sensor_properties_s &properties); bool is_supported(unsigned int event_type); + bool is_wakeup_supported(void); virtual long set_command(unsigned int cmd, long value); + virtual bool set_wakeup(int client_id, int wakeup); virtual int send_sensorhub_data(const char* data, int data_len); virtual int get_sensor_data(unsigned int type, sensor_data_t &data); @@ -88,7 +95,9 @@ protected: int m_permission; cinterval_info_list m_interval_info_list; + cwakeup_info_list m_wakeup_info_list; cmutex m_interval_info_list_mutex; + cmutex m_wakeup_info_list_mutex; cmutex m_mutex; diff --git a/src/shared/sensor_common.h b/src/shared/sensor_common.h index b70c4ef..16dfd26 100644 --- a/src/shared/sensor_common.h +++ b/src/shared/sensor_common.h @@ -165,6 +165,19 @@ enum sensor_option_t { typedef enum sensor_option_t sensor_option_e; #endif +/* + * To prevent naming confliction as using same enums as sensor CAPI use + */ +#ifndef __SENSOR_H__ +enum sensor_wakeup_t { + SENSOR_WAKEUP_UNKNOWN = -1, + SENSOR_WAKEUP_OFF = 0, + SENSOR_WAKEUP_ON = 1, +}; + +typedef enum sensor_wakeup_t sensor_wakeup_e; +#endif + enum sensor_interval_t { SENSOR_INTERVAL_FASTEST = 0, SENSOR_INTERVAL_NORMAL = 200, diff --git a/src/shared/sensor_hal.cpp b/src/shared/sensor_hal.cpp old mode 100755 new mode 100644 index f5a315d..dc4fcfb --- a/src/shared/sensor_hal.cpp +++ b/src/shared/sensor_hal.cpp @@ -43,6 +43,11 @@ bool sensor_hal::init(void *data) return true; } +bool sensor_hal::is_wakeup_supported(void) +{ + return false; +} + bool sensor_hal::set_interval(unsigned long val) { return true; @@ -53,6 +58,11 @@ long sensor_hal::set_command(unsigned int cmd, long val) return -1; } +bool sensor_hal::set_wakeup(int wakeup) +{ + return false; +} + int sensor_hal::send_sensorhub_data(const char* data, int data_len) { return -1; diff --git a/src/shared/sensor_hal.h b/src/shared/sensor_hal.h old mode 100755 new mode 100644 index 09762a4..c1afba5 --- a/src/shared/sensor_hal.h +++ b/src/shared/sensor_hal.h @@ -104,11 +104,13 @@ public: virtual bool disable(void) = 0; virtual bool set_interval(unsigned long val); virtual bool is_data_ready(bool wait) = 0; + virtual bool is_wakeup_supported(void); virtual bool get_properties(sensor_properties_s &properties) {return false;}; virtual bool get_properties(sensor_type_t sensor_type, sensor_properties_s &properties) {return false;}; virtual int get_sensor_data(sensor_data_t &data); virtual int get_sensor_data(sensorhub_data_t &data); virtual long set_command(unsigned int cmd, long val); + virtual bool set_wakeup(int wakeup); virtual int send_sensorhub_data(const char *data, int data_len); protected: diff --git a/src/shared/sensor_info.cpp b/src/shared/sensor_info.cpp old mode 100755 new mode 100644 index bed247e..c80c736 --- a/src/shared/sensor_info.cpp +++ b/src/shared/sensor_info.cpp @@ -96,6 +96,11 @@ bool sensor_info::is_supported_event(unsigned int event) return true; } +bool sensor_info::is_wakeup_supported(void) +{ + return m_wakeup_supported; +} + void sensor_info::set_type(sensor_type_t type) { m_type = type; @@ -161,6 +166,11 @@ void sensor_info::set_supported_events(vector &events) copy(events.begin(), events.end(), back_inserter(m_supported_events)); } +void sensor_info::set_wakeup_supported(bool supported) +{ + m_wakeup_supported = supported; +} + void sensor_info::get_raw_data(raw_data_t &data) { put(data, (int)m_type); @@ -175,6 +185,7 @@ void sensor_info::get_raw_data(raw_data_t &data) put(data, m_fifo_count); put(data, m_max_batch_count); put(data, m_supported_events); + put(data, m_wakeup_supported); } void sensor_info::set_raw_data(const char *data, int data_len) @@ -200,6 +211,7 @@ void sensor_info::set_raw_data(const char *data, int data_len) it_r_data = get(it_r_data, m_fifo_count); it_r_data = get(it_r_data, m_max_batch_count); it_r_data = get(it_r_data, m_supported_events); + it_r_data = get(it_r_data, m_wakeup_supported); } void sensor_info::show(void) @@ -218,6 +230,8 @@ void sensor_info::show(void) for (unsigned int i = 0; i < m_supported_events.size(); ++i) INFO("supported_events[%u] = 0x%x", i, m_supported_events[i]); + + INFO("Wakeup_supported = %d", m_wakeup_supported); } @@ -235,6 +249,7 @@ void sensor_info::clear(void) m_fifo_count = 0; m_max_batch_count = 0; m_supported_events.clear(); + m_wakeup_supported = false; } @@ -277,6 +292,16 @@ void sensor_info::put(raw_data_t &data, vector &value) } } +void sensor_info::put(raw_data_t &data, bool value) +{ + char buffer[sizeof(value)]; + + bool *temp = (bool *) buffer; + *temp = value; + + copy(&buffer[0], &buffer[sizeof(buffer)], back_inserter(data)); +} + raw_data_iterator sensor_info::get(raw_data_iterator it, int &value) { copy(it, it + sizeof(value), (char*) &value); @@ -316,3 +341,10 @@ raw_data_iterator sensor_info::get(raw_data_iterator it, vector &v return it; } + +raw_data_iterator sensor_info::get(raw_data_iterator it, bool &value) +{ + copy(it, it + sizeof(value), (char*) &value); + + return it + sizeof(value); +} diff --git a/src/shared/sensor_info.h b/src/shared/sensor_info.h old mode 100755 new mode 100644 index 185d249..53c57da --- a/src/shared/sensor_info.h +++ b/src/shared/sensor_info.h @@ -44,6 +44,7 @@ public: int get_max_batch_count(void); void get_supported_events(std::vector &events); bool is_supported_event(unsigned int event); + bool is_wakeup_supported(void); void set_type(sensor_type_t type); void set_id(sensor_id_t id); @@ -58,6 +59,7 @@ public: void set_max_batch_count(int max_batch_count); void register_supported_event(unsigned int event); void set_supported_events(std::vector &events); + void set_wakeup_supported(bool supported); void clear(void); @@ -77,16 +79,19 @@ private: int m_fifo_count; int m_max_batch_count; std::vector m_supported_events; + bool m_wakeup_supported; void put(raw_data_t &data, int value); void put(raw_data_t &data, float value); void put(raw_data_t &data, std::string &value); void put(raw_data_t &data, std::vector &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, float &value); raw_data_iterator get(raw_data_iterator it, std::string &value); raw_data_iterator get(raw_data_iterator it, std::vector &value); + raw_data_iterator get(raw_data_iterator it, bool &value); }; #endif /* _SENSOR_INFO_H_ */ diff --git a/src/shared/sf_common.h b/src/shared/sf_common.h index 777421b..8c802de 100644 --- a/src/shared/sf_common.h +++ b/src/shared/sf_common.h @@ -50,6 +50,7 @@ enum packet_type_t { CMD_REG, CMD_UNREG, CMD_SET_OPTION, + CMD_SET_WAKEUP, CMD_SET_BATCH, CMD_UNSET_BATCH, CMD_SET_COMMAND, @@ -141,6 +142,10 @@ typedef struct { int option; } cmd_set_option_t; +typedef struct { + int wakeup; +} cmd_set_wakeup_t; + typedef struct { unsigned int cmd; long value; @@ -168,6 +173,7 @@ typedef struct { int min_interval; int fifo_count; int max_batch_count; + bool wakeup_supported; } sensor_properties_s; -- 2.7.4 From f479a00df3d02d8616a607c52c4e8064cde618d1 Mon Sep 17 00:00:00 2001 From: "Hongkuk, Son" Date: Wed, 21 Oct 2015 14:26:47 +0900 Subject: [PATCH 09/16] sensord: batch mode support Signed-off-by: Hongkuk, Son Change-Id: Id5f72577237caeb9dd814796a7b059f53e68015d --- src/server/command_worker.cpp | 13 ++++++ src/shared/CMakeLists.txt | 4 +- src/shared/cbatch_info_list.cpp | 91 +++++++++++++++++++++++++++++++++++++++++ src/shared/cbatch_info_list.h | 49 ++++++++++++++++++++++ src/shared/sensor_base.cpp | 61 +++++++++++++++++++++++++++ src/shared/sensor_base.h | 8 ++++ 6 files changed, 224 insertions(+), 2 deletions(-) create mode 100644 src/shared/cbatch_info_list.cpp create mode 100644 src/shared/cbatch_info_list.h diff --git a/src/server/command_worker.cpp b/src/server/command_worker.cpp index 22c30fe..f8148de 100644 --- a/src/server/command_worker.cpp +++ b/src/server/command_worker.cpp @@ -640,6 +640,13 @@ bool command_worker::cmd_set_batch(void *payload) 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]", + m_client_id, m_sensor_id, cmd->latency); + ret_value = OP_ERROR; + goto out; + } + ret_value = OP_SUCCESS; out: @@ -673,6 +680,12 @@ bool command_worker::cmd_unset_batch(void *payload) goto out; } + if (!m_module->delete_batch(m_client_id)) { + ERR("Failed to delete latency for client [%d]", m_client_id); + ret_value = OP_ERROR; + goto out; + } + ret_value = OP_SUCCESS; out: diff --git a/src/shared/CMakeLists.txt b/src/shared/CMakeLists.txt index d869101..b5d589c 100644 --- a/src/shared/CMakeLists.txt +++ b/src/shared/CMakeLists.txt @@ -30,7 +30,7 @@ add_library(sensord-server SHARED cclient_sensor_record.cpp cinterval_info_list.cpp cwakeup_info_list.cpp - batch_info_list.cpp + cbatch_info_list.cpp sensor_plugin_loader.cpp sensor_hal.cpp sensor_base.cpp @@ -66,7 +66,7 @@ install(FILES csensor_event_queue.h cinterval_info_list.h cwakeup_info_list.h - batch_info_list.h + cbatch_info_list.h sensor_plugin_loader.h sensor_hal.h sensor_base.h diff --git a/src/shared/cbatch_info_list.cpp b/src/shared/cbatch_info_list.cpp new file mode 100644 index 0000000..3c2681c --- /dev/null +++ b/src/shared/cbatch_info_list.cpp @@ -0,0 +1,91 @@ +/* + * libsensord-share + * + * Copyright (c) 2013 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 + +cbatch_info::cbatch_info(int client_id, unsigned int latency) +{ + this->client_id = client_id; + this->latency = latency; +} + +bool cbatch_info_list::comp_batch_info(cbatch_info a, cbatch_info b) +{ + return a.latency < b.latency; +} + +cbatch_info_iterator cbatch_info_list::find_if(int client_id) +{ + auto iter = m_list.begin(); + + while (iter != m_list.end()) { + if ((iter->client_id == client_id)) + break; + + ++iter; + } + + return iter; +} + +bool cbatch_info_list::add_batch(int client_id, unsigned int latency) +{ + auto iter = find_if(client_id); + + if (iter != m_list.end()) + *iter = cbatch_info(client_id, latency); + else + m_list.push_back(cbatch_info(client_id, latency)); + + return true; +} + +bool cbatch_info_list::delete_batch(int client_id) +{ + auto iter = find_if(client_id); + + if (iter == m_list.end()) + return false; + + m_list.erase(iter); + + return true; +} + +unsigned int cbatch_info_list::get_batch(int client_id) +{ + auto iter = find_if(client_id); + + if (iter == m_list.end()) + return 0; + + return iter->latency; +} + +unsigned int cbatch_info_list::get_max(void) +{ + if (m_list.empty()) + return 0; + + auto iter = max_element(m_list.begin(), m_list.end(), comp_batch_info); + + return iter->latency; +} + diff --git a/src/shared/cbatch_info_list.h b/src/shared/cbatch_info_list.h new file mode 100644 index 0000000..390c39d --- /dev/null +++ b/src/shared/cbatch_info_list.h @@ -0,0 +1,49 @@ +/* + * libsensord-share + * + * Copyright (c) 2013 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 _CBATCH_INFO_LIST_CLASS_H_ +#define _CBATCH_INFO_LIST_CLASS_H_ + +#include + +class cbatch_info +{ +public: + cbatch_info(int client_id, unsigned int latency); + int client_id; + unsigned int latency; +}; + +typedef std::list::iterator cbatch_info_iterator; + +class cbatch_info_list +{ +private: + static bool comp_batch_info(cbatch_info a, cbatch_info b); + cbatch_info_iterator find_if(int client_id); + + std::list m_list; + +public: + bool add_batch(int client_id, unsigned int latency); + bool delete_batch(int client_id); + unsigned int get_batch(int client_id); + unsigned int get_max(void); +}; +#endif diff --git a/src/shared/sensor_base.cpp b/src/shared/sensor_base.cpp index 52915e7..83815a9 100644 --- a/src/shared/sensor_base.cpp +++ b/src/shared/sensor_base.cpp @@ -314,6 +314,62 @@ int sensor_base::get_wakeup(int client_id) return m_wakeup_info_list.is_wakeup_on(); } +bool sensor_base::add_batch(int client_id, unsigned int latency) +{ + unsigned int prev_max, cur_max; + + AUTOLOCK(m_batch_info_list_mutex); + + prev_max = m_batch_info_list.get_max(); + + if (!m_batch_info_list.add_batch(client_id, latency)) + return false; + + cur_max = m_batch_info_list.get_max(); + + if (cur_max != prev_max) { + INFO("Max latency for sensor[0x%x] is changed from %dms to %dms by client[%d] adding latency", + get_id(), prev_max, cur_max, client_id); + set_batch(client_id, cur_max); + } + + return true; +} + +bool sensor_base::delete_batch(int client_id) +{ + unsigned int prev_max, cur_max; + AUTOLOCK(m_batch_info_list_mutex); + + prev_max = m_batch_info_list.get_max(); + + if (!m_batch_info_list.delete_batch(client_id)) + return false; + + cur_max = m_batch_info_list.get_max(); + + if (!cur_max) { + INFO("No latency for sensor[0x%x] by client[%d] deleting latency, so set to default 0 ms", + get_id(), client_id); + + set_batch(client_id, 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", + get_id(), prev_max, cur_max, client_id); + + set_batch(client_id, cur_max); + } + + return true; +} + +unsigned int sensor_base::get_batch(int client_id) +{ + AUTOLOCK(m_batch_info_list_mutex); + + return m_batch_info_list.get_batch(client_id); +} + void sensor_base::get_sensor_info(sensor_type_t sensor_type, sensor_info &info) { sensor_properties_s properties; @@ -376,6 +432,11 @@ bool sensor_base::set_wakeup(int client_id, int wakeup) return false; } +bool sensor_base::set_batch(int client_id, unsigned int latency) +{ + return false; +} + int sensor_base::send_sensorhub_data(const char* data, int data_len) { return -1; diff --git a/src/shared/sensor_base.h b/src/shared/sensor_base.h index c4c4600..2f726f9 100644 --- a/src/shared/sensor_base.h +++ b/src/shared/sensor_base.h @@ -30,6 +30,7 @@ #include #include +#include #include #include @@ -71,6 +72,10 @@ public: virtual bool delete_wakeup(int client_id); int get_wakeup(int client_id); + virtual bool add_batch(int client_id, unsigned int latency); + virtual bool delete_batch(int client_id); + unsigned int get_batch(int client_id); + void get_sensor_info(sensor_type_t sensor_type, sensor_info &info); virtual bool get_properties(sensor_type_t sensor_type, sensor_properties_s &properties); @@ -79,6 +84,7 @@ public: virtual long set_command(unsigned int cmd, long value); virtual bool set_wakeup(int client_id, int wakeup); + virtual bool set_batch(int client_id, unsigned int latency); virtual int send_sensorhub_data(const char* data, int data_len); virtual int get_sensor_data(unsigned int type, sensor_data_t &data); @@ -96,8 +102,10 @@ protected: cinterval_info_list m_interval_info_list; cwakeup_info_list m_wakeup_info_list; + cbatch_info_list m_batch_info_list; cmutex m_interval_info_list_mutex; cmutex m_wakeup_info_list_mutex; + cmutex m_batch_info_list_mutex; cmutex m_mutex; -- 2.7.4 From c16213bfc49705cbb606b0bc9b1398b2a25f577d Mon Sep 17 00:00:00 2001 From: "Hongkuk, Son" Date: Wed, 21 Oct 2015 15:08:54 +0900 Subject: [PATCH 10/16] sensord: cplugin_info_list implementation Signed-off-by: Hongkuk, Son Change-Id: I8180880b26021462398c94761206b84fd2c3dfbe --- src/shared/CMakeLists.txt | 8 +- src/shared/batch_info_list.cpp | 90 -------------- src/shared/batch_info_list.h | 45 ------- src/shared/cbatch_info_list.cpp | 91 --------------- src/shared/cbatch_info_list.h | 49 -------- src/shared/cinterval_info_list.cpp | 93 --------------- src/shared/cinterval_info_list.h | 50 -------- src/shared/cplugin_info_list.cpp | 233 +++++++++++++++++++++++++++++++++++++ src/shared/cplugin_info_list.h | 87 ++++++++++++++ src/shared/cwakeup_info_list.cpp | 95 --------------- src/shared/cwakeup_info_list.h | 48 -------- src/shared/sensor_base.cpp | 60 +++++----- src/shared/sensor_base.h | 12 +- 13 files changed, 355 insertions(+), 606 deletions(-) delete mode 100644 src/shared/batch_info_list.cpp delete mode 100644 src/shared/batch_info_list.h delete mode 100644 src/shared/cbatch_info_list.cpp delete mode 100644 src/shared/cbatch_info_list.h delete mode 100755 src/shared/cinterval_info_list.cpp delete mode 100755 src/shared/cinterval_info_list.h create mode 100644 src/shared/cplugin_info_list.cpp create mode 100644 src/shared/cplugin_info_list.h delete mode 100644 src/shared/cwakeup_info_list.cpp delete mode 100644 src/shared/cwakeup_info_list.h diff --git a/src/shared/CMakeLists.txt b/src/shared/CMakeLists.txt index b5d589c..45b6af6 100644 --- a/src/shared/CMakeLists.txt +++ b/src/shared/CMakeLists.txt @@ -28,9 +28,7 @@ add_library(sensord-server SHARED csensor_usage.cpp cclient_info_manager.cpp cclient_sensor_record.cpp - cinterval_info_list.cpp - cwakeup_info_list.cpp - cbatch_info_list.cpp + cplugin_info_list.cpp sensor_plugin_loader.cpp sensor_hal.cpp sensor_base.cpp @@ -64,9 +62,7 @@ install(FILES csensor_config.h cvirtual_sensor_config.h csensor_event_queue.h - cinterval_info_list.h - cwakeup_info_list.h - cbatch_info_list.h + cplugin_info_list.h sensor_plugin_loader.h sensor_hal.h sensor_base.h diff --git a/src/shared/batch_info_list.cpp b/src/shared/batch_info_list.cpp deleted file mode 100644 index 0fd84b1..0000000 --- a/src/shared/batch_info_list.cpp +++ /dev/null @@ -1,90 +0,0 @@ -/* - * 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. - * - */ - -#include -#include - -using std::pair; -using std::shared_ptr; - -batch_info::batch_info(unsigned int interval, unsigned int latency) -{ - this->interval = interval; - this->latency = latency; -} - -bool batch_info_list::add_batch(int id, unsigned int interval, unsigned int latency) -{ - auto it_batch_info = m_batch_infos.find(id); - - if (it_batch_info != m_batch_infos.end()) { - it_batch_info->second->interval = interval; - it_batch_info->second->latency = latency; - return true; - } - - m_batch_infos.insert(pair> (id, std::make_shared (interval, latency))); - return true; -} - -bool batch_info_list::delete_batch(int id) -{ - auto it_batch_info = m_batch_infos.find(id); - - if (it_batch_info == m_batch_infos.end()) - return false; - - m_batch_infos.erase(it_batch_info); - return true; -} - -bool batch_info_list::get_batch(int id, unsigned int &interval, unsigned int &latency) -{ - auto it_batch_info = m_batch_infos.find(id); - - if (it_batch_info == m_batch_infos.end()) - return false; - - interval = it_batch_info->second->interval; - latency = it_batch_info->second->latency; - - return true; -} - -bool batch_info_list::get_best_batch(unsigned int &interval, unsigned int &latency) -{ - if (m_batch_infos.empty()) - return false; - - auto get_min_interval = [](pair> &a, pair> &b){ - return (a.second->interval < b.second->interval); - }; - - auto get_min_latency = [](pair> &a, pair> &b){ - return (a.second->latency < b.second->latency); - }; - - auto it_interval_min = std::min_element(m_batch_infos.begin(), m_batch_infos.end(), get_min_interval); - auto it_latency_min = std::min_element(m_batch_infos.begin(), m_batch_infos.end(), get_min_latency); - - interval = it_interval_min->second->interval; - latency = it_latency_min->second->latency; - - return true; -} diff --git a/src/shared/batch_info_list.h b/src/shared/batch_info_list.h deleted file mode 100644 index d6c22f0..0000000 --- a/src/shared/batch_info_list.h +++ /dev/null @@ -1,45 +0,0 @@ -/* - * 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 _BATCH_INFO_LIST_CLASS_H_ -#define _BATCH_INFO_LIST_CLASS_H_ - -#include -#include - -class batch_info -{ -public: - batch_info(unsigned int interval, unsigned int latency); - unsigned int interval; - unsigned int latency; -}; - -class batch_info_list -{ -private: - std::unordered_map> m_batch_infos; - -public: - bool add_batch(int id, unsigned int interval, unsigned int latency); - bool delete_batch(int id); - bool get_batch(int id, unsigned int &interval, unsigned int &latency); - bool get_best_batch(unsigned int &interval, unsigned int &latency); -}; -#endif diff --git a/src/shared/cbatch_info_list.cpp b/src/shared/cbatch_info_list.cpp deleted file mode 100644 index 3c2681c..0000000 --- a/src/shared/cbatch_info_list.cpp +++ /dev/null @@ -1,91 +0,0 @@ -/* - * libsensord-share - * - * Copyright (c) 2013 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 - -cbatch_info::cbatch_info(int client_id, unsigned int latency) -{ - this->client_id = client_id; - this->latency = latency; -} - -bool cbatch_info_list::comp_batch_info(cbatch_info a, cbatch_info b) -{ - return a.latency < b.latency; -} - -cbatch_info_iterator cbatch_info_list::find_if(int client_id) -{ - auto iter = m_list.begin(); - - while (iter != m_list.end()) { - if ((iter->client_id == client_id)) - break; - - ++iter; - } - - return iter; -} - -bool cbatch_info_list::add_batch(int client_id, unsigned int latency) -{ - auto iter = find_if(client_id); - - if (iter != m_list.end()) - *iter = cbatch_info(client_id, latency); - else - m_list.push_back(cbatch_info(client_id, latency)); - - return true; -} - -bool cbatch_info_list::delete_batch(int client_id) -{ - auto iter = find_if(client_id); - - if (iter == m_list.end()) - return false; - - m_list.erase(iter); - - return true; -} - -unsigned int cbatch_info_list::get_batch(int client_id) -{ - auto iter = find_if(client_id); - - if (iter == m_list.end()) - return 0; - - return iter->latency; -} - -unsigned int cbatch_info_list::get_max(void) -{ - if (m_list.empty()) - return 0; - - auto iter = max_element(m_list.begin(), m_list.end(), comp_batch_info); - - return iter->latency; -} - diff --git a/src/shared/cbatch_info_list.h b/src/shared/cbatch_info_list.h deleted file mode 100644 index 390c39d..0000000 --- a/src/shared/cbatch_info_list.h +++ /dev/null @@ -1,49 +0,0 @@ -/* - * libsensord-share - * - * Copyright (c) 2013 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 _CBATCH_INFO_LIST_CLASS_H_ -#define _CBATCH_INFO_LIST_CLASS_H_ - -#include - -class cbatch_info -{ -public: - cbatch_info(int client_id, unsigned int latency); - int client_id; - unsigned int latency; -}; - -typedef std::list::iterator cbatch_info_iterator; - -class cbatch_info_list -{ -private: - static bool comp_batch_info(cbatch_info a, cbatch_info b); - cbatch_info_iterator find_if(int client_id); - - std::list m_list; - -public: - bool add_batch(int client_id, unsigned int latency); - bool delete_batch(int client_id); - unsigned int get_batch(int client_id); - unsigned int get_max(void); -}; -#endif diff --git a/src/shared/cinterval_info_list.cpp b/src/shared/cinterval_info_list.cpp deleted file mode 100755 index 5adf0b5..0000000 --- a/src/shared/cinterval_info_list.cpp +++ /dev/null @@ -1,93 +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 - - -cinterval_info::cinterval_info(int client_id, bool is_processor, unsigned int interval) -{ - this->client_id = client_id; - this->is_processor = is_processor; - this->interval = interval; -} - -bool cinterval_info_list::comp_interval_info(cinterval_info a, cinterval_info b) -{ - return a.interval < b.interval; -} - -cinterval_info_iterator cinterval_info_list::find_if(int client_id, bool is_processor) -{ - auto iter = m_list.begin(); - - while (iter != m_list.end()) { - if ((iter->client_id == client_id) && (iter->is_processor == is_processor)) - break; - - ++iter; - } - - return iter; -} - - -bool cinterval_info_list::add_interval(int client_id, unsigned int interval, bool is_processor) -{ - auto iter = find_if(client_id, is_processor); - - if (iter != m_list.end()) - *iter = cinterval_info(client_id, is_processor, interval); - else - m_list.push_back(cinterval_info(client_id, is_processor, interval)); - - return true; -} - -bool cinterval_info_list::delete_interval(int client_id, bool is_processor) -{ - auto iter = find_if(client_id, is_processor); - - if (iter == m_list.end()) - return false; - - m_list.erase(iter); - - return true; -} - -unsigned int cinterval_info_list::get_interval(int client_id, bool is_processor) -{ - auto iter = find_if(client_id, is_processor); - - if (iter == m_list.end()) - return 0; - - return iter->interval; -} - -unsigned int cinterval_info_list::get_min(void) -{ - if (m_list.empty()) - return 0; - - auto iter = min_element(m_list.begin(), m_list.end(), comp_interval_info); - - return iter->interval; -} diff --git a/src/shared/cinterval_info_list.h b/src/shared/cinterval_info_list.h deleted file mode 100755 index 3c28c95..0000000 --- a/src/shared/cinterval_info_list.h +++ /dev/null @@ -1,50 +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. - * - */ - -#if !defined(_CINTERVAL_INFO_LIST_CLASS_H_) -#define _CINTERVAL_INFO_LIST_CLASS_H_ - -#include - -class cinterval_info -{ -public: - cinterval_info(int client_id, bool is_processor, unsigned int interval); - int client_id; - bool is_processor; - unsigned int interval; -}; - -typedef std::list::iterator cinterval_info_iterator; - -class cinterval_info_list -{ -private: - static bool comp_interval_info(cinterval_info a, cinterval_info b); - cinterval_info_iterator find_if(int client_id, bool is_processor); - - std::list m_list; - -public: - bool add_interval(int client_id, unsigned int interval, bool is_processor); - bool delete_interval(int client_id, bool is_processor); - unsigned int get_interval(int client_id, bool is_processor); - unsigned int get_min(void); -}; -#endif diff --git a/src/shared/cplugin_info_list.cpp b/src/shared/cplugin_info_list.cpp new file mode 100644 index 0000000..db9714d --- /dev/null +++ b/src/shared/cplugin_info_list.cpp @@ -0,0 +1,233 @@ +/* + * libsensord-share + * + * Copyright (c) 2013 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 + + +cinterval_info::cinterval_info(int client_id, bool is_processor, unsigned int interval) +{ + this->client_id = client_id; + this->is_processor = is_processor; + this->interval = interval; +} + +cbatch_info::cbatch_info(int client_id, unsigned int latency) +{ + this->client_id = client_id; + this->latency = latency; +} + +cwakeup_info::cwakeup_info(int client_id, int wakeup) +{ + this->client_id = client_id; + this->wakeup = wakeup; +} + +bool cplugin_info_list::comp_interval_info(cinterval_info a, cinterval_info b) +{ + return a.interval < b.interval; +} + +bool cplugin_info_list::comp_batch_info(cbatch_info a, cbatch_info b) +{ + return a.latency < b.latency; +} + +cinterval_info_iterator cplugin_info_list::find_if_interval_info(int client_id, bool is_processor) +{ + auto iter = m_interval_info_list.begin(); + + while (iter != m_interval_info_list.end()) { + if ((iter->client_id == client_id) && (iter->is_processor == is_processor)) + break; + + ++iter; + } + + return iter; +} + +cbatch_info_iterator cplugin_info_list::find_if_batch_info(int client_id) +{ + auto iter = m_batch_info_list.begin(); + + while (iter != m_batch_info_list.end()) { + if ((iter->client_id == client_id)) + break; + + ++iter; + } + + return iter; +} + +cwakeup_info_iterator cplugin_info_list::find_if_wakeup_info(int client_id) +{ + auto iter = m_wakeup_info_list.begin(); + + while (iter != m_wakeup_info_list.end()) { + if (iter->client_id == client_id) + break; + + ++iter; + } + + return iter; +} + +bool cplugin_info_list::add_interval(int client_id, unsigned int interval, bool is_processor) +{ + auto iter = find_if_interval_info(client_id, is_processor); + + if (iter != m_interval_info_list.end()) + *iter = cinterval_info(client_id, is_processor, interval); + else + m_interval_info_list.push_back(cinterval_info(client_id, is_processor, interval)); + + return true; +} + +bool cplugin_info_list::delete_interval(int client_id, bool is_processor) +{ + auto iter = find_if_interval_info(client_id, is_processor); + + if (iter == m_interval_info_list.end()) + return false; + + m_interval_info_list.erase(iter); + + return true; +} + +unsigned int cplugin_info_list::get_interval(int client_id, bool is_processor) +{ + auto iter = find_if_interval_info(client_id, is_processor); + + if (iter == m_interval_info_list.end()) + return 0; + + return iter->interval; +} + +unsigned int cplugin_info_list::get_min_interval(void) +{ + if (m_interval_info_list.empty()) + return 0; + + auto iter = min_element(m_interval_info_list.begin(), m_interval_info_list.end(), comp_interval_info); + + return iter->interval; +} + +bool cplugin_info_list::add_batch(int client_id, unsigned int latency) +{ + auto iter = find_if_batch_info(client_id); + + if (iter != m_batch_info_list.end()) + *iter = cbatch_info(client_id, latency); + else + m_batch_info_list.push_back(cbatch_info(client_id, latency)); + + return true; +} + +bool cplugin_info_list::delete_batch(int client_id) +{ + auto iter = find_if_batch_info(client_id); + + if (iter == m_batch_info_list.end()) + return false; + + m_batch_info_list.erase(iter); + + return true; +} + +unsigned int cplugin_info_list::get_batch(int client_id) +{ + auto iter = find_if_batch_info(client_id); + + if (iter == m_batch_info_list.end()) + return 0; + + return iter->latency; +} + +unsigned int cplugin_info_list::get_max_batch(void) +{ + if (m_batch_info_list.empty()) + return 0; + + auto iter = max_element(m_batch_info_list.begin(), m_batch_info_list.end(), comp_batch_info); + + return iter->latency; +} + +bool cplugin_info_list::add_wakeup(int client_id, int wakeup) +{ + auto iter = find_if_wakeup_info(client_id); + + if (iter != m_wakeup_info_list.end()) + *iter = cwakeup_info(client_id, wakeup); + else + m_wakeup_info_list.push_back(cwakeup_info(client_id, wakeup)); + + return true; +} + +bool cplugin_info_list::delete_wakeup(int client_id) +{ + auto iter = find_if_wakeup_info(client_id); + + if (iter == m_wakeup_info_list.end()) + return false; + + m_wakeup_info_list.erase(iter); + + return true; +} + +int cplugin_info_list::get_wakeup(int client_id) +{ + auto iter = find_if_wakeup_info(client_id); + + if (iter == m_wakeup_info_list.end()) + return -1; + + return iter->wakeup; +} + +int cplugin_info_list::is_wakeup_on(void) +{ + if (m_wakeup_info_list.empty()) + return -1; + + auto iter = m_wakeup_info_list.begin(); + + while (iter != m_wakeup_info_list.end()) { + if (iter->wakeup == true) + break; + + ++iter; + } + + return iter->wakeup; +} + diff --git a/src/shared/cplugin_info_list.h b/src/shared/cplugin_info_list.h new file mode 100644 index 0000000..6ea149e --- /dev/null +++ b/src/shared/cplugin_info_list.h @@ -0,0 +1,87 @@ +/* + * libsensord-share + * + * Copyright (c) 2013 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 _CPLUGIN_INFO_LIST_CLASS_H_ +#define _CPLUGIN_INFO_LIST_CLASS_H_ + +#include + +class cinterval_info +{ +public: + cinterval_info(int client_id, bool is_processor, unsigned int interval); + int client_id; + bool is_processor; + unsigned int interval; +}; + +typedef std::list::iterator cinterval_info_iterator; + +class cbatch_info +{ +public: + cbatch_info(int client_id, unsigned int latency); + int client_id; + unsigned int latency; +}; + +typedef std::list::iterator cbatch_info_iterator; + +class cwakeup_info +{ +public: + cwakeup_info(int client_id, int wakeup); + int client_id; + int wakeup; +}; + +typedef std::list::iterator cwakeup_info_iterator; + +class cplugin_info_list +{ +private: + static bool comp_interval_info(cinterval_info a, cinterval_info b); + cinterval_info_iterator find_if_interval_info(int client_id, bool is_processor); + + static bool comp_batch_info(cbatch_info a, cbatch_info b); + cbatch_info_iterator find_if_batch_info(int client_id); + + cwakeup_info_iterator find_if_wakeup_info(int client_id); + + std::list m_interval_info_list; + std::list m_batch_info_list; + std::list m_wakeup_info_list; + +public: + bool add_interval(int client_id, unsigned int interval, bool is_processor); + bool delete_interval(int client_id, bool is_processor); + unsigned int get_interval(int client_id, bool is_processor); + unsigned int get_min_interval(void); + + bool add_batch(int client_id, unsigned int latency); + bool delete_batch(int client_id); + unsigned int get_batch(int client_id); + unsigned int get_max_batch(void); + + bool add_wakeup(int client_id, int wakeup); + bool delete_wakeup(int client_id); + int get_wakeup(int client_id); + int is_wakeup_on(void); +}; +#endif diff --git a/src/shared/cwakeup_info_list.cpp b/src/shared/cwakeup_info_list.cpp deleted file mode 100644 index c695d4c..0000000 --- a/src/shared/cwakeup_info_list.cpp +++ /dev/null @@ -1,95 +0,0 @@ -/* - * libsensord-share - * - * Copyright (c) 2013 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 - - -cwakeup_info::cwakeup_info(int client_id, int wakeup) -{ - this->client_id = client_id; - this->wakeup = wakeup; -} - -cwakeup_info_iterator cwakeup_info_list::find_if(int client_id) -{ - auto iter = m_list.begin(); - - while (iter != m_list.end()) { - if (iter->client_id == client_id) - break; - - ++iter; - } - - return iter; -} - - -bool cwakeup_info_list::add_wakeup(int client_id, int wakeup) -{ - auto iter = find_if(client_id); - - if (iter != m_list.end()) - *iter = cwakeup_info(client_id, wakeup); - else - m_list.push_back(cwakeup_info(client_id, wakeup)); - - return true; -} - -bool cwakeup_info_list::delete_wakeup(int client_id) -{ - auto iter = find_if(client_id); - - if (iter == m_list.end()) - return false; - - m_list.erase(iter); - - return true; -} - -int cwakeup_info_list::get_wakeup(int client_id) -{ - auto iter = find_if(client_id); - - if (iter == m_list.end()) - return -1; - - return iter->wakeup; -} - -int cwakeup_info_list::is_wakeup_on(void) -{ - if (m_list.empty()) - return -1; - - auto iter = m_list.begin(); - - while (iter != m_list.end()) { - if (iter->wakeup == true) - break; - - ++iter; - } - - return iter->wakeup; -} - diff --git a/src/shared/cwakeup_info_list.h b/src/shared/cwakeup_info_list.h deleted file mode 100644 index f11e7e8..0000000 --- a/src/shared/cwakeup_info_list.h +++ /dev/null @@ -1,48 +0,0 @@ -/* - * libsensord-share - * - * Copyright (c) 2013 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 _CWAKEUP_INFO_LIST_CLASS_H_ -#define _CWAKEUP_INFO_LIST_CLASS_H_ - -#include - -class cwakeup_info -{ -public: - cwakeup_info(int client_id, int wakeup); - int client_id; - int wakeup; -}; - -typedef std::list::iterator cwakeup_info_iterator; - -class cwakeup_info_list -{ -private: - cwakeup_info_iterator find_if(int client_id); - - std::list m_list; - -public: - bool add_wakeup(int client_id, int wakeup); - bool delete_wakeup(int client_id); - int get_wakeup(int client_id); - int is_wakeup_on(void); -}; -#endif diff --git a/src/shared/sensor_base.cpp b/src/shared/sensor_base.cpp index 83815a9..4a7ce4d 100644 --- a/src/shared/sensor_base.cpp +++ b/src/shared/sensor_base.cpp @@ -206,14 +206,14 @@ bool sensor_base::add_interval(int client_id, unsigned int interval, bool is_pro { unsigned int prev_min, cur_min; - AUTOLOCK(m_interval_info_list_mutex); + AUTOLOCK(m_plugin_info_list_mutex); - prev_min = m_interval_info_list.get_min(); + prev_min = m_plugin_info_list.get_min_interval(); - if (!m_interval_info_list.add_interval(client_id, interval, is_processor)) + if (!m_plugin_info_list.add_interval(client_id, interval, is_processor)) return false; - cur_min = m_interval_info_list.get_min(); + 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" @@ -229,14 +229,14 @@ bool sensor_base::add_interval(int client_id, unsigned int interval, bool is_pro bool sensor_base::delete_interval(int client_id, bool is_processor) { unsigned int prev_min, cur_min; - AUTOLOCK(m_interval_info_list_mutex); + AUTOLOCK(m_plugin_info_list_mutex); - prev_min = m_interval_info_list.get_min(); + prev_min = m_plugin_info_list.get_min_interval(); - if (!m_interval_info_list.delete_interval(client_id, is_processor)) + if (!m_plugin_info_list.delete_interval(client_id, is_processor)) return false; - cur_min = m_interval_info_list.get_min(); + cur_min = m_plugin_info_list.get_min_interval(); if (!cur_min) { INFO("No interval for sensor[0x%x] by%sclient[%d] deleting interval, " @@ -259,23 +259,23 @@ bool sensor_base::delete_interval(int client_id, bool is_processor) unsigned int sensor_base::get_interval(int client_id, bool is_processor) { - AUTOLOCK(m_interval_info_list_mutex); + AUTOLOCK(m_plugin_info_list_mutex); - return m_interval_info_list.get_interval(client_id, is_processor); + return m_plugin_info_list.get_interval(client_id, is_processor); } bool sensor_base::add_wakeup(int client_id, int wakeup) { int prev_wakeup, cur_wakeup; - AUTOLOCK(m_wakeup_info_list_mutex); + AUTOLOCK(m_plugin_info_list_mutex); - prev_wakeup = m_wakeup_info_list.is_wakeup_on(); + prev_wakeup = m_plugin_info_list.is_wakeup_on(); - if (!m_wakeup_info_list.add_wakeup(client_id, wakeup)) + if (!m_plugin_info_list.add_wakeup(client_id, wakeup)) return false; - cur_wakeup = m_wakeup_info_list.is_wakeup_on(); + 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", @@ -289,14 +289,14 @@ bool sensor_base::add_wakeup(int client_id, int wakeup) bool sensor_base::delete_wakeup(int client_id) { int prev_wakeup, cur_wakeup; - AUTOLOCK(m_wakeup_info_list_mutex); + AUTOLOCK(m_plugin_info_list_mutex); - prev_wakeup = m_wakeup_info_list.is_wakeup_on(); + prev_wakeup = m_plugin_info_list.is_wakeup_on(); - if (!m_wakeup_info_list.delete_wakeup(client_id)) + if (!m_plugin_info_list.delete_wakeup(client_id)) return false; - cur_wakeup = m_wakeup_info_list.is_wakeup_on(); + 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", @@ -309,23 +309,23 @@ bool sensor_base::delete_wakeup(int client_id) int sensor_base::get_wakeup(int client_id) { - AUTOLOCK(m_wakeup_info_list_mutex); + AUTOLOCK(m_plugin_info_list_mutex); - return m_wakeup_info_list.is_wakeup_on(); + return m_plugin_info_list.is_wakeup_on(); } bool sensor_base::add_batch(int client_id, unsigned int latency) { unsigned int prev_max, cur_max; - AUTOLOCK(m_batch_info_list_mutex); + AUTOLOCK(m_plugin_info_list_mutex); - prev_max = m_batch_info_list.get_max(); + prev_max = m_plugin_info_list.get_max_batch(); - if (!m_batch_info_list.add_batch(client_id, latency)) + if (!m_plugin_info_list.add_batch(client_id, latency)) return false; - cur_max = m_batch_info_list.get_max(); + 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", @@ -339,14 +339,14 @@ bool sensor_base::add_batch(int client_id, unsigned int latency) bool sensor_base::delete_batch(int client_id) { unsigned int prev_max, cur_max; - AUTOLOCK(m_batch_info_list_mutex); + AUTOLOCK(m_plugin_info_list_mutex); - prev_max = m_batch_info_list.get_max(); + prev_max = m_plugin_info_list.get_max_batch(); - if (!m_batch_info_list.delete_batch(client_id)) + if (!m_plugin_info_list.delete_batch(client_id)) return false; - cur_max = m_batch_info_list.get_max(); + 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", @@ -365,9 +365,9 @@ bool sensor_base::delete_batch(int client_id) unsigned int sensor_base::get_batch(int client_id) { - AUTOLOCK(m_batch_info_list_mutex); + AUTOLOCK(m_plugin_info_list_mutex); - return m_batch_info_list.get_batch(client_id); + return m_plugin_info_list.get_batch(client_id); } void sensor_base::get_sensor_info(sensor_type_t sensor_type, sensor_info &info) diff --git a/src/shared/sensor_base.h b/src/shared/sensor_base.h index 2f726f9..6eaf01d 100644 --- a/src/shared/sensor_base.h +++ b/src/shared/sensor_base.h @@ -28,9 +28,7 @@ #include #include -#include -#include -#include +#include #include #include @@ -100,12 +98,8 @@ protected: sensor_privilege_t m_privilege; int m_permission; - cinterval_info_list m_interval_info_list; - cwakeup_info_list m_wakeup_info_list; - cbatch_info_list m_batch_info_list; - cmutex m_interval_info_list_mutex; - cmutex m_wakeup_info_list_mutex; - cmutex m_batch_info_list_mutex; + cplugin_info_list m_plugin_info_list; + cmutex m_plugin_info_list_mutex; cmutex m_mutex; -- 2.7.4 From cd1123aea0257b0fb77b7d29aa622a5d9b6781fe Mon Sep 17 00:00:00 2001 From: Adarsh Shree Ram Date: Thu, 22 Oct 2015 12:21:19 +0530 Subject: [PATCH 11/16] Restructuring the sensord framework codebase The codebase is segregated into 4 directories :libsensord,server,shared and plugins .The plugins directory contains all the sensor plugins under one folder. Changes: Moved all individual sensor folders into a single folder plugins/ Moved sensor_event definitions files from libsensord(client) to shared as they are being used by plugins/server/client Change-Id: I42900352c7068cf9fde188a83c92580c62274168 --- src/CMakeLists.txt | 37 +++++++++++---------- src/libsensord/CMakeLists.txt | 25 +------------- src/{ => plugins}/accel/CMakeLists.txt | 0 src/{ => plugins}/accel/accel_sensor.cpp | 0 src/{ => plugins}/accel/accel_sensor.h | 0 src/{ => plugins}/accel/accel_sensor_hal.cpp | 0 src/{ => plugins}/accel/accel_sensor_hal.h | 0 src/{ => plugins}/auto_rotation/CMakeLists.txt | 0 .../auto_rotation/auto_rotation_alg.cpp | 0 .../auto_rotation/auto_rotation_alg.h | 0 .../auto_rotation/auto_rotation_alg_emul.cpp | 0 .../auto_rotation/auto_rotation_alg_emul.h | 0 .../auto_rotation/auto_rotation_sensor.cpp | 0 .../auto_rotation/auto_rotation_sensor.h | 0 src/{ => plugins}/bio_led_red/CMakeLists.txt | 0 .../bio_led_red/bio_led_red_sensor.cpp | 0 src/{ => plugins}/bio_led_red/bio_led_red_sensor.h | 0 .../bio_led_red/bio_led_red_sensor_hal.cpp | 0 .../bio_led_red/bio_led_red_sensor_hal.h | 0 src/{ => plugins}/fusion/CMakeLists.txt | 2 +- src/{ => plugins}/fusion/fusion_sensor.cpp | 0 src/{ => plugins}/fusion/fusion_sensor.h | 0 .../fusion/hardware_fusion_sensor.html | 0 src/{ => plugins}/geo/CMakeLists.txt | 0 src/{ => plugins}/geo/geo_sensor.cpp | 0 src/{ => plugins}/geo/geo_sensor.h | 0 src/{ => plugins}/geo/geo_sensor_hal.cpp | 0 src/{ => plugins}/geo/geo_sensor_hal.h | 0 src/{ => plugins}/gravity/CMakeLists.txt | 2 +- src/{ => plugins}/gravity/gravity_sensor.cpp | 0 src/{ => plugins}/gravity/gravity_sensor.h | 0 src/{ => plugins}/gyro/CMakeLists.txt | 0 src/{ => plugins}/gyro/gyro_sensor.cpp | 0 src/{ => plugins}/gyro/gyro_sensor.h | 0 src/{ => plugins}/gyro/gyro_sensor_hal.cpp | 0 src/{ => plugins}/gyro/gyro_sensor_hal.h | 0 src/{ => plugins}/light/CMakeLists.txt | 0 src/{ => plugins}/light/light_sensor.cpp | 0 src/{ => plugins}/light/light_sensor.h | 0 src/{ => plugins}/light/light_sensor_hal.cpp | 0 src/{ => plugins}/light/light_sensor_hal.h | 0 src/{ => plugins}/linear_accel/CMakeLists.txt | 2 +- .../linear_accel/linear_accel_sensor.cpp | 0 .../linear_accel/linear_accel_sensor.h | 0 src/{ => plugins}/orientation/CMakeLists.txt | 2 +- .../orientation/orientation_sensor.cpp | 0 src/{ => plugins}/orientation/orientation_sensor.h | 0 src/{ => plugins}/pressure/CMakeLists.txt | 0 src/{ => plugins}/pressure/pressure_sensor.cpp | 0 src/{ => plugins}/pressure/pressure_sensor.h | 0 src/{ => plugins}/pressure/pressure_sensor_hal.cpp | 0 src/{ => plugins}/pressure/pressure_sensor_hal.h | 0 src/{ => plugins}/proxi/CMakeLists.txt | 0 src/{ => plugins}/proxi/proxi_sensor.cpp | 0 src/{ => plugins}/proxi/proxi_sensor.h | 0 src/{ => plugins}/proxi/proxi_sensor_hal.cpp | 0 src/{ => plugins}/proxi/proxi_sensor_hal.h | 0 src/{ => plugins}/rotation_vector/CMakeLists.txt | 0 .../rotation_vector/gaming_rv/CMakeLists.txt | 2 +- .../rotation_vector/gaming_rv/gaming_rv_sensor.cpp | 0 .../rotation_vector/gaming_rv/gaming_rv_sensor.h | 0 .../rotation_vector/geomagnetic_rv/CMakeLists.txt | 2 +- .../geomagnetic_rv/geomagnetic_rv_sensor.cpp | 0 .../geomagnetic_rv/geomagnetic_rv_sensor.h | 0 .../rotation_vector/rv/CMakeLists.txt | 2 +- src/{ => plugins}/rotation_vector/rv/rv_sensor.cpp | 0 src/{ => plugins}/rotation_vector/rv/rv_sensor.h | 0 .../rotation_vector/rv_raw/CMakeLists.txt | 0 .../rotation_vector/rv_raw/rv_raw_sensor.cpp | 0 .../rotation_vector/rv_raw/rv_raw_sensor.h | 0 .../rotation_vector/rv_raw/rv_raw_sensor_hal.cpp | 0 .../rotation_vector/rv_raw/rv_raw_sensor_hal.h | 0 src/{ => plugins}/sensor_fusion/CMakeLists.txt | 0 .../data/100ms/gravity/single_roll_throw/accel.txt | 0 .../data/100ms/gravity/single_roll_throw/gyro.txt | 0 .../100ms/gravity/single_roll_throw/magnetic.txt | 0 .../100ms/linear_acceleration/move_x_y_z/accel.txt | 0 .../100ms/linear_acceleration/move_x_y_z/gyro.txt | 0 .../linear_acceleration/move_x_y_z/magnetic.txt | 0 .../100ms/orientation/roll_pitch_yaw/accel.txt | 0 .../data/100ms/orientation/roll_pitch_yaw/gyro.txt | 0 .../100ms/orientation/roll_pitch_yaw/magnetic.txt | 0 .../data/25ms/pedo/Climb_stairs_down/In_hand/accel | 0 .../data/25ms/pedo/Climb_stairs_down/In_hand/gyro | 0 .../25ms/pedo/Climb_stairs_down/In_hand/magnetic | 0 .../25ms/pedo/Climb_stairs_down/Pant_pocket/accel | 0 .../25ms/pedo/Climb_stairs_down/Pant_pocket/gyro | 0 .../pedo/Climb_stairs_down/Pant_pocket/magnetic | 0 .../25ms/pedo/Climb_stairs_down/Shirt_pocket/accel | 0 .../25ms/pedo/Climb_stairs_down/Shirt_pocket/gyro | 0 .../pedo/Climb_stairs_down/Shirt_pocket/magnetic | 0 .../pedo/Climb_stairs_down/While_talking/accel | 0 .../25ms/pedo/Climb_stairs_down/While_talking/gyro | 0 .../pedo/Climb_stairs_down/While_talking/magnetic | 0 .../data/25ms/pedo/Climb_stairs_up/In_hand/accel | 0 .../data/25ms/pedo/Climb_stairs_up/In_hand/gyro | 0 .../25ms/pedo/Climb_stairs_up/In_hand/magnetic | 0 .../25ms/pedo/Climb_stairs_up/Pant_pocket/accel | 0 .../25ms/pedo/Climb_stairs_up/Pant_pocket/gyro | 0 .../25ms/pedo/Climb_stairs_up/Pant_pocket/magnetic | 0 .../25ms/pedo/Climb_stairs_up/Shirt_pocket/accel | 0 .../25ms/pedo/Climb_stairs_up/Shirt_pocket/gyro | 0 .../pedo/Climb_stairs_up/Shirt_pocket/magnetic | 0 .../25ms/pedo/Climb_stairs_up/While_talking/accel | 0 .../25ms/pedo/Climb_stairs_up/While_talking/gyro | 0 .../pedo/Climb_stairs_up/While_talking/magnetic | 0 .../design/data/25ms/pedo/Walk_fast/In_hand/accel | 0 .../design/data/25ms/pedo/Walk_fast/In_hand/gyro | 0 .../data/25ms/pedo/Walk_fast/In_hand/magnetic | 0 .../data/25ms/pedo/Walk_fast/Pant_pocket/accel | 0 .../data/25ms/pedo/Walk_fast/Pant_pocket/gyro | 0 .../data/25ms/pedo/Walk_fast/Pant_pocket/magnetic | 0 .../data/25ms/pedo/Walk_fast/Shirt_pocket/accel | 0 .../data/25ms/pedo/Walk_fast/Shirt_pocket/gyro | 0 .../data/25ms/pedo/Walk_fast/Shirt_pocket/magnetic | 0 .../data/25ms/pedo/Walk_fast/While_talking/accel | 0 .../data/25ms/pedo/Walk_fast/While_talking/gyro | 0 .../25ms/pedo/Walk_fast/While_talking/magnetic | 0 .../design/data/25ms/pedo/Walk_slow/In_hand/accel | 0 .../design/data/25ms/pedo/Walk_slow/In_hand/gyro | 0 .../data/25ms/pedo/Walk_slow/In_hand/magnetic | 0 .../data/25ms/pedo/Walk_slow/Pant_pocket/accel | 0 .../data/25ms/pedo/Walk_slow/Pant_pocket/gyro | 0 .../data/25ms/pedo/Walk_slow/Pant_pocket/magnetic | 0 .../data/25ms/pedo/Walk_slow/Shirt_pocket/accel | 0 .../data/25ms/pedo/Walk_slow/Shirt_pocket/gyro | 0 .../data/25ms/pedo/Walk_slow/Shirt_pocket/magnetic | 0 .../data/25ms/pedo/Walk_slow/While_talking/accel | 0 .../data/25ms/pedo/Walk_slow/While_talking/gyro | 0 .../25ms/pedo/Walk_slow/While_talking/magnetic | 0 ...ock_diagram_gravity_and_linear_acceleration.png | Bin .../block_diagram_orientation_estimation.png | Bin .../documentation/diagram/device_orientation.png | Bin .../documentation/diagram/kalman_filter_stages.png | Bin .../diagram/orientation_effect_on_gravity.png | Bin .../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 .../documentation/equation/equation_13_updated.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 .../design/documentation/sensor_fusion.htm | 0 .../sensor_fusion/design/lib/axis_rot2quat.m | 0 .../sensor_fusion/design/lib/estimate_gaming_rv.m | 0 .../design/lib/estimate_geomagnetic_rv.m | 0 .../sensor_fusion/design/lib/estimate_gravity.m | 0 .../design/lib/estimate_linear_acceleration.m | 0 .../design/lib/estimate_orientation.m | 0 .../sensor_fusion/design/lib/euler2quat.m | 0 .../sensor_fusion/design/lib/quat2euler.m | 0 .../sensor_fusion/design/lib/quat2rot_mat.m | 0 .../sensor_fusion/design/lib/quat_prod.m | 0 .../sensor_fusion/design/lib/rot_mat2quat.m | 0 .../sensor_fusion/design/lib/sf_pedometer.m | 0 src/{ => plugins}/sensor_fusion/design/readme | 0 .../sensor_fusion/design/sf_gaming_rv.m | 0 .../sensor_fusion/design/sf_geomagnetic_rv.m | 0 .../sensor_fusion/design/sf_gravity.m | 0 .../sensor_fusion/design/sf_linear_acceleration.m | 0 .../sensor_fusion/design/sf_orientation.m | 0 src/{ => plugins}/sensor_fusion/euler_angles.cpp | 0 src/{ => plugins}/sensor_fusion/euler_angles.h | 0 src/{ => plugins}/sensor_fusion/matrix.cpp | 0 src/{ => plugins}/sensor_fusion/matrix.h | 0 .../sensor_fusion/orientation_filter.cpp | 0 .../sensor_fusion/orientation_filter.h | 0 src/{ => plugins}/sensor_fusion/quaternion.cpp | 0 src/{ => plugins}/sensor_fusion/quaternion.h | 0 .../sensor_fusion/rotation_matrix.cpp | 0 src/{ => plugins}/sensor_fusion/rotation_matrix.h | 0 src/{ => plugins}/sensor_fusion/sensor_data.cpp | 0 src/{ => plugins}/sensor_fusion/sensor_data.h | 0 .../sensor_fusion/test/gravity_sensor.cpp | 0 .../sensor_fusion/test/gravity_sensor.h | 0 .../test/linear_acceleration_sensor.cpp | 0 .../test/linear_acceleration_sensor.h | 0 .../sensor_fusion/test/orientation_sensor.cpp | 0 .../sensor_fusion/test/orientation_sensor.h | 0 .../test/test_projects/euler_angles_test/.cproject | 0 .../test/test_projects/euler_angles_test/.project | 0 .../euler_angles_test/euler_angles_main.cpp | 0 .../test_projects/gravity_sensor_test/.cproject | 0 .../test_projects/gravity_sensor_test/.project | 0 .../gravity_sensor_test/gravity_sensor_main.cpp | 0 .../linear_acceleration_sensor_test/.cproject | 0 .../linear_acceleration_sensor_test/.project | 0 .../linear_acceleration_sensor_main.cpp | 0 .../test/test_projects/matrix_test/.cproject | 0 .../test/test_projects/matrix_test/.project | 0 .../test/test_projects/matrix_test/matrix_main.cpp | 0 .../orientation_sensor_test/.cproject | 0 .../test_projects/orientation_sensor_test/.project | 0 .../orientation_sensor_main.cpp | 0 .../test/test_projects/quaternion_test/.cproject | 0 .../test/test_projects/quaternion_test/.project | 0 .../quaternion_test/quaternion_main.cpp | 0 .../test_projects/rotation_matrix_test/.cproject | 0 .../test_projects/rotation_matrix_test/.project | 0 .../rotation_matrix_test/rotation_matrix_main.cpp | 0 .../test/test_projects/sensor_data_test/.cproject | 0 .../test/test_projects/sensor_data_test/.project | 0 .../sensor_data_test/sensor_data_main.cpp | 0 .../test/test_projects/vector_test/.cproject | 0 .../test/test_projects/vector_test/.project | 0 .../test/test_projects/vector_test/vector_main.cpp | 0 src/{ => plugins}/sensor_fusion/vector.cpp | 0 src/{ => plugins}/sensor_fusion/vector.h | 0 src/{ => plugins}/temperature/CMakeLists.txt | 0 .../temperature/temperature_sensor.cpp | 0 src/{ => plugins}/temperature/temperature_sensor.h | 0 .../temperature/temperature_sensor_hal.cpp | 0 .../temperature/temperature_sensor_hal.h | 0 src/{ => plugins}/tilt/CMakeLists.txt | 2 +- src/{ => plugins}/tilt/tilt_sensor.cpp | 0 src/{ => plugins}/tilt/tilt_sensor.h | 0 src/{ => plugins}/ultraviolet/CMakeLists.txt | 0 .../ultraviolet/ultraviolet_sensor.cpp | 0 src/{ => plugins}/ultraviolet/ultraviolet_sensor.h | 0 .../ultraviolet/ultraviolet_sensor_hal.cpp | 0 .../ultraviolet/ultraviolet_sensor_hal.h | 0 src/{ => plugins}/uncal_gyro/CMakeLists.txt | 2 +- src/{ => plugins}/uncal_gyro/uncal_gyro_sensor.cpp | 0 src/{ => plugins}/uncal_gyro/uncal_gyro_sensor.h | 0 src/shared/CMakeLists.txt | 24 +++++++++++++ src/{libsensord => shared}/sensor_accel.h | 0 src/{libsensord => shared}/sensor_auto_rotation.h | 0 src/{libsensord => shared}/sensor_bio_led_red.h | 0 src/{libsensord => shared}/sensor_context.h | 0 src/{libsensord => shared}/sensor_deprecated.h | 0 src/{libsensord => shared}/sensor_fusion.h | 0 src/{libsensord => shared}/sensor_gaming_rv.h | 0 src/{libsensord => shared}/sensor_geomag.h | 0 src/{libsensord => shared}/sensor_geomagnetic_rv.h | 0 src/{libsensord => shared}/sensor_gravity.h | 0 src/{libsensord => shared}/sensor_gyro.h | 0 src/{libsensord => shared}/sensor_internal.h | 0 .../sensor_internal_deprecated.h | 0 src/{libsensord => shared}/sensor_light.h | 0 src/{libsensord => shared}/sensor_linear_accel.h | 0 src/{libsensord => shared}/sensor_motion.h | 0 src/{libsensord => shared}/sensor_orientation.h | 0 src/{libsensord => shared}/sensor_pressure.h | 0 src/{libsensord => shared}/sensor_proxi.h | 0 src/{libsensord => shared}/sensor_rv.h | 0 src/{libsensord => shared}/sensor_temperature.h | 0 src/{libsensord => shared}/sensor_tilt.h | 0 src/{libsensord => shared}/sensor_ultraviolet.h | 0 src/{libsensord => shared}/sensor_uncal_gyro.h | 0 284 files changed, 53 insertions(+), 51 deletions(-) rename src/{ => plugins}/accel/CMakeLists.txt (100%) rename src/{ => plugins}/accel/accel_sensor.cpp (100%) rename src/{ => plugins}/accel/accel_sensor.h (100%) rename src/{ => plugins}/accel/accel_sensor_hal.cpp (100%) rename src/{ => plugins}/accel/accel_sensor_hal.h (100%) rename src/{ => plugins}/auto_rotation/CMakeLists.txt (100%) rename src/{ => plugins}/auto_rotation/auto_rotation_alg.cpp (100%) rename src/{ => plugins}/auto_rotation/auto_rotation_alg.h (100%) rename src/{ => plugins}/auto_rotation/auto_rotation_alg_emul.cpp (100%) rename src/{ => plugins}/auto_rotation/auto_rotation_alg_emul.h (100%) rename src/{ => plugins}/auto_rotation/auto_rotation_sensor.cpp (100%) rename src/{ => plugins}/auto_rotation/auto_rotation_sensor.h (100%) rename src/{ => plugins}/bio_led_red/CMakeLists.txt (100%) rename src/{ => plugins}/bio_led_red/bio_led_red_sensor.cpp (100%) rename src/{ => plugins}/bio_led_red/bio_led_red_sensor.h (100%) rename src/{ => plugins}/bio_led_red/bio_led_red_sensor_hal.cpp (100%) rename src/{ => plugins}/bio_led_red/bio_led_red_sensor_hal.h (100%) rename src/{ => plugins}/fusion/CMakeLists.txt (90%) rename src/{ => plugins}/fusion/fusion_sensor.cpp (100%) rename src/{ => plugins}/fusion/fusion_sensor.h (100%) rename src/{ => plugins}/fusion/hardware_fusion_sensor.html (100%) rename src/{ => plugins}/geo/CMakeLists.txt (100%) rename src/{ => plugins}/geo/geo_sensor.cpp (100%) rename src/{ => plugins}/geo/geo_sensor.h (100%) rename src/{ => plugins}/geo/geo_sensor_hal.cpp (100%) rename src/{ => plugins}/geo/geo_sensor_hal.h (100%) rename src/{ => plugins}/gravity/CMakeLists.txt (90%) rename src/{ => plugins}/gravity/gravity_sensor.cpp (100%) rename src/{ => plugins}/gravity/gravity_sensor.h (100%) rename src/{ => plugins}/gyro/CMakeLists.txt (100%) rename src/{ => plugins}/gyro/gyro_sensor.cpp (100%) rename src/{ => plugins}/gyro/gyro_sensor.h (100%) rename src/{ => plugins}/gyro/gyro_sensor_hal.cpp (100%) rename src/{ => plugins}/gyro/gyro_sensor_hal.h (100%) rename src/{ => plugins}/light/CMakeLists.txt (100%) rename src/{ => plugins}/light/light_sensor.cpp (100%) rename src/{ => plugins}/light/light_sensor.h (100%) rename src/{ => plugins}/light/light_sensor_hal.cpp (100%) rename src/{ => plugins}/light/light_sensor_hal.h (100%) rename src/{ => plugins}/linear_accel/CMakeLists.txt (90%) rename src/{ => plugins}/linear_accel/linear_accel_sensor.cpp (100%) rename src/{ => plugins}/linear_accel/linear_accel_sensor.h (100%) rename src/{ => plugins}/orientation/CMakeLists.txt (90%) rename src/{ => plugins}/orientation/orientation_sensor.cpp (100%) rename src/{ => plugins}/orientation/orientation_sensor.h (100%) rename src/{ => plugins}/pressure/CMakeLists.txt (100%) rename src/{ => plugins}/pressure/pressure_sensor.cpp (100%) rename src/{ => plugins}/pressure/pressure_sensor.h (100%) rename src/{ => plugins}/pressure/pressure_sensor_hal.cpp (100%) rename src/{ => plugins}/pressure/pressure_sensor_hal.h (100%) rename src/{ => plugins}/proxi/CMakeLists.txt (100%) rename src/{ => plugins}/proxi/proxi_sensor.cpp (100%) rename src/{ => plugins}/proxi/proxi_sensor.h (100%) rename src/{ => plugins}/proxi/proxi_sensor_hal.cpp (100%) rename src/{ => plugins}/proxi/proxi_sensor_hal.h (100%) rename src/{ => plugins}/rotation_vector/CMakeLists.txt (100%) rename src/{ => plugins}/rotation_vector/gaming_rv/CMakeLists.txt (90%) rename src/{ => plugins}/rotation_vector/gaming_rv/gaming_rv_sensor.cpp (100%) rename src/{ => plugins}/rotation_vector/gaming_rv/gaming_rv_sensor.h (100%) rename src/{ => plugins}/rotation_vector/geomagnetic_rv/CMakeLists.txt (90%) rename src/{ => plugins}/rotation_vector/geomagnetic_rv/geomagnetic_rv_sensor.cpp (100%) rename src/{ => plugins}/rotation_vector/geomagnetic_rv/geomagnetic_rv_sensor.h (100%) rename src/{ => plugins}/rotation_vector/rv/CMakeLists.txt (89%) rename src/{ => plugins}/rotation_vector/rv/rv_sensor.cpp (100%) rename src/{ => plugins}/rotation_vector/rv/rv_sensor.h (100%) rename src/{ => plugins}/rotation_vector/rv_raw/CMakeLists.txt (100%) rename src/{ => plugins}/rotation_vector/rv_raw/rv_raw_sensor.cpp (100%) rename src/{ => plugins}/rotation_vector/rv_raw/rv_raw_sensor.h (100%) rename src/{ => plugins}/rotation_vector/rv_raw/rv_raw_sensor_hal.cpp (100%) rename src/{ => plugins}/rotation_vector/rv_raw/rv_raw_sensor_hal.h (100%) rename src/{ => plugins}/sensor_fusion/CMakeLists.txt (100%) rename src/{ => plugins}/sensor_fusion/design/data/100ms/gravity/single_roll_throw/accel.txt (100%) rename src/{ => plugins}/sensor_fusion/design/data/100ms/gravity/single_roll_throw/gyro.txt (100%) rename src/{ => plugins}/sensor_fusion/design/data/100ms/gravity/single_roll_throw/magnetic.txt (100%) rename src/{ => plugins}/sensor_fusion/design/data/100ms/linear_acceleration/move_x_y_z/accel.txt (100%) rename src/{ => plugins}/sensor_fusion/design/data/100ms/linear_acceleration/move_x_y_z/gyro.txt (100%) rename src/{ => plugins}/sensor_fusion/design/data/100ms/linear_acceleration/move_x_y_z/magnetic.txt (100%) rename src/{ => plugins}/sensor_fusion/design/data/100ms/orientation/roll_pitch_yaw/accel.txt (100%) rename src/{ => plugins}/sensor_fusion/design/data/100ms/orientation/roll_pitch_yaw/gyro.txt (100%) rename src/{ => plugins}/sensor_fusion/design/data/100ms/orientation/roll_pitch_yaw/magnetic.txt (100%) rename src/{ => plugins}/sensor_fusion/design/data/25ms/pedo/Climb_stairs_down/In_hand/accel (100%) rename src/{ => plugins}/sensor_fusion/design/data/25ms/pedo/Climb_stairs_down/In_hand/gyro (100%) rename src/{ => plugins}/sensor_fusion/design/data/25ms/pedo/Climb_stairs_down/In_hand/magnetic (100%) rename src/{ => plugins}/sensor_fusion/design/data/25ms/pedo/Climb_stairs_down/Pant_pocket/accel (100%) rename src/{ => plugins}/sensor_fusion/design/data/25ms/pedo/Climb_stairs_down/Pant_pocket/gyro (100%) rename src/{ => plugins}/sensor_fusion/design/data/25ms/pedo/Climb_stairs_down/Pant_pocket/magnetic (100%) rename src/{ => plugins}/sensor_fusion/design/data/25ms/pedo/Climb_stairs_down/Shirt_pocket/accel (100%) rename src/{ => plugins}/sensor_fusion/design/data/25ms/pedo/Climb_stairs_down/Shirt_pocket/gyro (100%) rename src/{ => plugins}/sensor_fusion/design/data/25ms/pedo/Climb_stairs_down/Shirt_pocket/magnetic (100%) rename src/{ => plugins}/sensor_fusion/design/data/25ms/pedo/Climb_stairs_down/While_talking/accel (100%) rename src/{ => plugins}/sensor_fusion/design/data/25ms/pedo/Climb_stairs_down/While_talking/gyro (100%) rename src/{ => plugins}/sensor_fusion/design/data/25ms/pedo/Climb_stairs_down/While_talking/magnetic (100%) rename src/{ => plugins}/sensor_fusion/design/data/25ms/pedo/Climb_stairs_up/In_hand/accel (100%) rename src/{ => plugins}/sensor_fusion/design/data/25ms/pedo/Climb_stairs_up/In_hand/gyro (100%) rename src/{ => plugins}/sensor_fusion/design/data/25ms/pedo/Climb_stairs_up/In_hand/magnetic (100%) rename src/{ => plugins}/sensor_fusion/design/data/25ms/pedo/Climb_stairs_up/Pant_pocket/accel (100%) rename src/{ => plugins}/sensor_fusion/design/data/25ms/pedo/Climb_stairs_up/Pant_pocket/gyro (100%) rename src/{ => plugins}/sensor_fusion/design/data/25ms/pedo/Climb_stairs_up/Pant_pocket/magnetic (100%) rename src/{ => plugins}/sensor_fusion/design/data/25ms/pedo/Climb_stairs_up/Shirt_pocket/accel (100%) rename src/{ => plugins}/sensor_fusion/design/data/25ms/pedo/Climb_stairs_up/Shirt_pocket/gyro (100%) rename src/{ => plugins}/sensor_fusion/design/data/25ms/pedo/Climb_stairs_up/Shirt_pocket/magnetic (100%) rename src/{ => plugins}/sensor_fusion/design/data/25ms/pedo/Climb_stairs_up/While_talking/accel (100%) rename src/{ => plugins}/sensor_fusion/design/data/25ms/pedo/Climb_stairs_up/While_talking/gyro (100%) rename src/{ => plugins}/sensor_fusion/design/data/25ms/pedo/Climb_stairs_up/While_talking/magnetic (100%) rename src/{ => plugins}/sensor_fusion/design/data/25ms/pedo/Walk_fast/In_hand/accel (100%) rename src/{ => plugins}/sensor_fusion/design/data/25ms/pedo/Walk_fast/In_hand/gyro (100%) rename src/{ => plugins}/sensor_fusion/design/data/25ms/pedo/Walk_fast/In_hand/magnetic (100%) rename src/{ => plugins}/sensor_fusion/design/data/25ms/pedo/Walk_fast/Pant_pocket/accel (100%) rename src/{ => plugins}/sensor_fusion/design/data/25ms/pedo/Walk_fast/Pant_pocket/gyro (100%) rename src/{ => plugins}/sensor_fusion/design/data/25ms/pedo/Walk_fast/Pant_pocket/magnetic (100%) rename src/{ => plugins}/sensor_fusion/design/data/25ms/pedo/Walk_fast/Shirt_pocket/accel (100%) rename src/{ => plugins}/sensor_fusion/design/data/25ms/pedo/Walk_fast/Shirt_pocket/gyro (100%) rename src/{ => plugins}/sensor_fusion/design/data/25ms/pedo/Walk_fast/Shirt_pocket/magnetic (100%) rename src/{ => plugins}/sensor_fusion/design/data/25ms/pedo/Walk_fast/While_talking/accel (100%) rename src/{ => plugins}/sensor_fusion/design/data/25ms/pedo/Walk_fast/While_talking/gyro (100%) rename src/{ => plugins}/sensor_fusion/design/data/25ms/pedo/Walk_fast/While_talking/magnetic (100%) rename src/{ => plugins}/sensor_fusion/design/data/25ms/pedo/Walk_slow/In_hand/accel (100%) rename src/{ => plugins}/sensor_fusion/design/data/25ms/pedo/Walk_slow/In_hand/gyro (100%) rename src/{ => plugins}/sensor_fusion/design/data/25ms/pedo/Walk_slow/In_hand/magnetic (100%) rename src/{ => plugins}/sensor_fusion/design/data/25ms/pedo/Walk_slow/Pant_pocket/accel (100%) rename src/{ => plugins}/sensor_fusion/design/data/25ms/pedo/Walk_slow/Pant_pocket/gyro (100%) rename src/{ => plugins}/sensor_fusion/design/data/25ms/pedo/Walk_slow/Pant_pocket/magnetic (100%) rename src/{ => plugins}/sensor_fusion/design/data/25ms/pedo/Walk_slow/Shirt_pocket/accel (100%) rename src/{ => plugins}/sensor_fusion/design/data/25ms/pedo/Walk_slow/Shirt_pocket/gyro (100%) rename src/{ => plugins}/sensor_fusion/design/data/25ms/pedo/Walk_slow/Shirt_pocket/magnetic (100%) rename src/{ => plugins}/sensor_fusion/design/data/25ms/pedo/Walk_slow/While_talking/accel (100%) rename src/{ => plugins}/sensor_fusion/design/data/25ms/pedo/Walk_slow/While_talking/gyro (100%) rename src/{ => plugins}/sensor_fusion/design/data/25ms/pedo/Walk_slow/While_talking/magnetic (100%) rename src/{ => plugins}/sensor_fusion/design/documentation/diagram/block_diagram_gravity_and_linear_acceleration.png (100%) rename src/{ => plugins}/sensor_fusion/design/documentation/diagram/block_diagram_orientation_estimation.png (100%) rename src/{ => plugins}/sensor_fusion/design/documentation/diagram/device_orientation.png (100%) rename src/{ => plugins}/sensor_fusion/design/documentation/diagram/kalman_filter_stages.png (100%) rename src/{ => plugins}/sensor_fusion/design/documentation/diagram/orientation_effect_on_gravity.png (100%) rename src/{ => plugins}/sensor_fusion/design/documentation/diagram/projection_diagram_gravity_computation.png (100%) rename src/{ => plugins}/sensor_fusion/design/documentation/equation/equation_1.png (100%) rename src/{ => plugins}/sensor_fusion/design/documentation/equation/equation_10.png (100%) rename src/{ => plugins}/sensor_fusion/design/documentation/equation/equation_11.png (100%) rename src/{ => plugins}/sensor_fusion/design/documentation/equation/equation_12.png (100%) rename src/{ => plugins}/sensor_fusion/design/documentation/equation/equation_13.png (100%) rename src/{ => plugins}/sensor_fusion/design/documentation/equation/equation_13_updated.png (100%) rename src/{ => plugins}/sensor_fusion/design/documentation/equation/equation_14.png (100%) rename src/{ => plugins}/sensor_fusion/design/documentation/equation/equation_15.png (100%) rename src/{ => plugins}/sensor_fusion/design/documentation/equation/equation_16.png (100%) rename src/{ => plugins}/sensor_fusion/design/documentation/equation/equation_17.png (100%) rename src/{ => plugins}/sensor_fusion/design/documentation/equation/equation_18.png (100%) rename src/{ => plugins}/sensor_fusion/design/documentation/equation/equation_19.png (100%) rename src/{ => plugins}/sensor_fusion/design/documentation/equation/equation_2.png (100%) rename src/{ => plugins}/sensor_fusion/design/documentation/equation/equation_20.png (100%) rename src/{ => plugins}/sensor_fusion/design/documentation/equation/equation_21.png (100%) rename src/{ => plugins}/sensor_fusion/design/documentation/equation/equation_22.png (100%) rename src/{ => plugins}/sensor_fusion/design/documentation/equation/equation_23.png (100%) rename src/{ => plugins}/sensor_fusion/design/documentation/equation/equation_24.png (100%) rename src/{ => plugins}/sensor_fusion/design/documentation/equation/equation_25.png (100%) rename src/{ => plugins}/sensor_fusion/design/documentation/equation/equation_26.png (100%) rename src/{ => plugins}/sensor_fusion/design/documentation/equation/equation_27.png (100%) rename src/{ => plugins}/sensor_fusion/design/documentation/equation/equation_28.png (100%) rename src/{ => plugins}/sensor_fusion/design/documentation/equation/equation_29.png (100%) rename src/{ => plugins}/sensor_fusion/design/documentation/equation/equation_3.png (100%) rename src/{ => plugins}/sensor_fusion/design/documentation/equation/equation_30.png (100%) rename src/{ => plugins}/sensor_fusion/design/documentation/equation/equation_31.png (100%) rename src/{ => plugins}/sensor_fusion/design/documentation/equation/equation_32.png (100%) rename src/{ => plugins}/sensor_fusion/design/documentation/equation/equation_33.png (100%) rename src/{ => plugins}/sensor_fusion/design/documentation/equation/equation_34.png (100%) rename src/{ => plugins}/sensor_fusion/design/documentation/equation/equation_35.png (100%) rename src/{ => plugins}/sensor_fusion/design/documentation/equation/equation_36.png (100%) rename src/{ => plugins}/sensor_fusion/design/documentation/equation/equation_37.png (100%) rename src/{ => plugins}/sensor_fusion/design/documentation/equation/equation_38.png (100%) rename src/{ => plugins}/sensor_fusion/design/documentation/equation/equation_39.png (100%) rename src/{ => plugins}/sensor_fusion/design/documentation/equation/equation_4.png (100%) rename src/{ => plugins}/sensor_fusion/design/documentation/equation/equation_40.png (100%) rename src/{ => plugins}/sensor_fusion/design/documentation/equation/equation_5.png (100%) rename src/{ => plugins}/sensor_fusion/design/documentation/equation/equation_6.png (100%) rename src/{ => plugins}/sensor_fusion/design/documentation/equation/equation_7.png (100%) rename src/{ => plugins}/sensor_fusion/design/documentation/equation/equation_8.png (100%) rename src/{ => plugins}/sensor_fusion/design/documentation/equation/equation_9.png (100%) rename src/{ => plugins}/sensor_fusion/design/documentation/sensor_fusion.htm (100%) rename src/{ => plugins}/sensor_fusion/design/lib/axis_rot2quat.m (100%) rename src/{ => plugins}/sensor_fusion/design/lib/estimate_gaming_rv.m (100%) rename src/{ => plugins}/sensor_fusion/design/lib/estimate_geomagnetic_rv.m (100%) rename src/{ => plugins}/sensor_fusion/design/lib/estimate_gravity.m (100%) rename src/{ => plugins}/sensor_fusion/design/lib/estimate_linear_acceleration.m (100%) rename src/{ => plugins}/sensor_fusion/design/lib/estimate_orientation.m (100%) rename src/{ => plugins}/sensor_fusion/design/lib/euler2quat.m (100%) rename src/{ => plugins}/sensor_fusion/design/lib/quat2euler.m (100%) rename src/{ => plugins}/sensor_fusion/design/lib/quat2rot_mat.m (100%) rename src/{ => plugins}/sensor_fusion/design/lib/quat_prod.m (100%) rename src/{ => plugins}/sensor_fusion/design/lib/rot_mat2quat.m (100%) rename src/{ => plugins}/sensor_fusion/design/lib/sf_pedometer.m (100%) rename src/{ => plugins}/sensor_fusion/design/readme (100%) rename src/{ => plugins}/sensor_fusion/design/sf_gaming_rv.m (100%) rename src/{ => plugins}/sensor_fusion/design/sf_geomagnetic_rv.m (100%) rename src/{ => plugins}/sensor_fusion/design/sf_gravity.m (100%) rename src/{ => plugins}/sensor_fusion/design/sf_linear_acceleration.m (100%) rename src/{ => plugins}/sensor_fusion/design/sf_orientation.m (100%) rename src/{ => plugins}/sensor_fusion/euler_angles.cpp (100%) rename src/{ => plugins}/sensor_fusion/euler_angles.h (100%) rename src/{ => plugins}/sensor_fusion/matrix.cpp (100%) rename src/{ => plugins}/sensor_fusion/matrix.h (100%) rename src/{ => plugins}/sensor_fusion/orientation_filter.cpp (100%) rename src/{ => plugins}/sensor_fusion/orientation_filter.h (100%) rename src/{ => plugins}/sensor_fusion/quaternion.cpp (100%) rename src/{ => plugins}/sensor_fusion/quaternion.h (100%) rename src/{ => plugins}/sensor_fusion/rotation_matrix.cpp (100%) rename src/{ => plugins}/sensor_fusion/rotation_matrix.h (100%) rename src/{ => plugins}/sensor_fusion/sensor_data.cpp (100%) rename src/{ => plugins}/sensor_fusion/sensor_data.h (100%) rename src/{ => plugins}/sensor_fusion/test/gravity_sensor.cpp (100%) rename src/{ => plugins}/sensor_fusion/test/gravity_sensor.h (100%) rename src/{ => plugins}/sensor_fusion/test/linear_acceleration_sensor.cpp (100%) rename src/{ => plugins}/sensor_fusion/test/linear_acceleration_sensor.h (100%) rename src/{ => plugins}/sensor_fusion/test/orientation_sensor.cpp (100%) rename src/{ => plugins}/sensor_fusion/test/orientation_sensor.h (100%) rename src/{ => plugins}/sensor_fusion/test/test_projects/euler_angles_test/.cproject (100%) rename src/{ => plugins}/sensor_fusion/test/test_projects/euler_angles_test/.project (100%) rename src/{ => plugins}/sensor_fusion/test/test_projects/euler_angles_test/euler_angles_main.cpp (100%) rename src/{ => plugins}/sensor_fusion/test/test_projects/gravity_sensor_test/.cproject (100%) rename src/{ => plugins}/sensor_fusion/test/test_projects/gravity_sensor_test/.project (100%) rename src/{ => plugins}/sensor_fusion/test/test_projects/gravity_sensor_test/gravity_sensor_main.cpp (100%) rename src/{ => plugins}/sensor_fusion/test/test_projects/linear_acceleration_sensor_test/.cproject (100%) rename src/{ => plugins}/sensor_fusion/test/test_projects/linear_acceleration_sensor_test/.project (100%) rename src/{ => plugins}/sensor_fusion/test/test_projects/linear_acceleration_sensor_test/linear_acceleration_sensor_main.cpp (100%) rename src/{ => plugins}/sensor_fusion/test/test_projects/matrix_test/.cproject (100%) rename src/{ => plugins}/sensor_fusion/test/test_projects/matrix_test/.project (100%) rename src/{ => plugins}/sensor_fusion/test/test_projects/matrix_test/matrix_main.cpp (100%) rename src/{ => plugins}/sensor_fusion/test/test_projects/orientation_sensor_test/.cproject (100%) rename src/{ => plugins}/sensor_fusion/test/test_projects/orientation_sensor_test/.project (100%) rename src/{ => plugins}/sensor_fusion/test/test_projects/orientation_sensor_test/orientation_sensor_main.cpp (100%) rename src/{ => plugins}/sensor_fusion/test/test_projects/quaternion_test/.cproject (100%) rename src/{ => plugins}/sensor_fusion/test/test_projects/quaternion_test/.project (100%) rename src/{ => plugins}/sensor_fusion/test/test_projects/quaternion_test/quaternion_main.cpp (100%) rename src/{ => plugins}/sensor_fusion/test/test_projects/rotation_matrix_test/.cproject (100%) rename src/{ => plugins}/sensor_fusion/test/test_projects/rotation_matrix_test/.project (100%) rename src/{ => plugins}/sensor_fusion/test/test_projects/rotation_matrix_test/rotation_matrix_main.cpp (100%) rename src/{ => plugins}/sensor_fusion/test/test_projects/sensor_data_test/.cproject (100%) rename src/{ => plugins}/sensor_fusion/test/test_projects/sensor_data_test/.project (100%) rename src/{ => plugins}/sensor_fusion/test/test_projects/sensor_data_test/sensor_data_main.cpp (100%) rename src/{ => plugins}/sensor_fusion/test/test_projects/vector_test/.cproject (100%) rename src/{ => plugins}/sensor_fusion/test/test_projects/vector_test/.project (100%) rename src/{ => plugins}/sensor_fusion/test/test_projects/vector_test/vector_main.cpp (100%) rename src/{ => plugins}/sensor_fusion/vector.cpp (100%) rename src/{ => plugins}/sensor_fusion/vector.h (100%) rename src/{ => plugins}/temperature/CMakeLists.txt (100%) rename src/{ => plugins}/temperature/temperature_sensor.cpp (100%) rename src/{ => plugins}/temperature/temperature_sensor.h (100%) rename src/{ => plugins}/temperature/temperature_sensor_hal.cpp (100%) rename src/{ => plugins}/temperature/temperature_sensor_hal.h (100%) rename src/{ => plugins}/tilt/CMakeLists.txt (89%) rename src/{ => plugins}/tilt/tilt_sensor.cpp (100%) rename src/{ => plugins}/tilt/tilt_sensor.h (100%) rename src/{ => plugins}/ultraviolet/CMakeLists.txt (100%) rename src/{ => plugins}/ultraviolet/ultraviolet_sensor.cpp (100%) rename src/{ => plugins}/ultraviolet/ultraviolet_sensor.h (100%) rename src/{ => plugins}/ultraviolet/ultraviolet_sensor_hal.cpp (100%) rename src/{ => plugins}/ultraviolet/ultraviolet_sensor_hal.h (100%) rename src/{ => plugins}/uncal_gyro/CMakeLists.txt (90%) rename src/{ => plugins}/uncal_gyro/uncal_gyro_sensor.cpp (100%) rename src/{ => plugins}/uncal_gyro/uncal_gyro_sensor.h (100%) rename src/{libsensord => shared}/sensor_accel.h (100%) rename src/{libsensord => shared}/sensor_auto_rotation.h (100%) rename src/{libsensord => shared}/sensor_bio_led_red.h (100%) rename src/{libsensord => shared}/sensor_context.h (100%) rename src/{libsensord => shared}/sensor_deprecated.h (100%) rename src/{libsensord => shared}/sensor_fusion.h (100%) rename src/{libsensord => shared}/sensor_gaming_rv.h (100%) rename src/{libsensord => shared}/sensor_geomag.h (100%) rename src/{libsensord => shared}/sensor_geomagnetic_rv.h (100%) rename src/{libsensord => shared}/sensor_gravity.h (100%) rename src/{libsensord => shared}/sensor_gyro.h (100%) rename src/{libsensord => shared}/sensor_internal.h (100%) rename src/{libsensord => shared}/sensor_internal_deprecated.h (100%) rename src/{libsensord => shared}/sensor_light.h (100%) rename src/{libsensord => shared}/sensor_linear_accel.h (100%) rename src/{libsensord => shared}/sensor_motion.h (100%) rename src/{libsensord => shared}/sensor_orientation.h (100%) rename src/{libsensord => shared}/sensor_pressure.h (100%) rename src/{libsensord => shared}/sensor_proxi.h (100%) rename src/{libsensord => shared}/sensor_rv.h (100%) rename src/{libsensord => shared}/sensor_temperature.h (100%) rename src/{libsensord => shared}/sensor_tilt.h (100%) rename src/{libsensord => shared}/sensor_ultraviolet.h (100%) rename src/{libsensord => shared}/sensor_uncal_gyro.h (100%) diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt index 91a8b40..1087d73 100755 --- a/src/CMakeLists.txt +++ b/src/CMakeLists.txt @@ -5,37 +5,37 @@ include_directories(${CMAKE_SOURCE_DIR}/src/shared) include_directories(${CMAKE_CURRENT_SOURCE_DIR}) IF("${ACCEL}" STREQUAL "ON") -add_subdirectory(accel) +add_subdirectory(plugins/accel) ENDIF() IF("${GYRO}" STREQUAL "ON") -add_subdirectory(gyro) +add_subdirectory(plugins/gyro) ENDIF() IF("${PROXI}" STREQUAL "ON") -add_subdirectory(proxi) +add_subdirectory(plugins/proxi) ENDIF() IF("${LIGHT}" STREQUAL "ON") -add_subdirectory(light) +add_subdirectory(plugins/light) ENDIF() IF("${GEO}" STREQUAL "ON") -add_subdirectory(geo) +add_subdirectory(plugins/geo) ENDIF() IF("${AUTO_ROTATION}" STREQUAL "ON") -add_subdirectory(auto_rotation) +add_subdirectory(plugins/auto_rotation) ENDIF() IF("${PRESSURE}" STREQUAL "ON") -add_subdirectory(pressure) +add_subdirectory(plugins/pressure) ENDIF() IF("${TEMPERATURE}" STREQUAL "ON") -add_subdirectory(temperature) +add_subdirectory(plugins/temperature) ENDIF() IF("${HUMIDITY}" STREQUAL "ON") add_subdirectory(humidity) ENDIF() IF("${ULTRAVIOLET}" STREQUAL "ON") -add_subdirectory(ultraviolet) +add_subdirectory(plugins/ultraviolet) ENDIF() IF("${BIO_LED_RED}" STREQUAL "ON") -add_subdirectory(bio_led_red) +add_subdirectory(plugins/bio_led_red) ENDIF() IF("${ORIENTATION}" STREQUAL "ON") set(SENSOR_FUSION_ENABLE "1") @@ -67,26 +67,27 @@ set(GRAVITY_ENABLE "1") set(LINEAR_ACCELERATION_ENABLE "1") ENDIF() IF("${SENSOR_FUSION_ENABLE}" STREQUAL "1") -add_subdirectory(sensor_fusion) -add_subdirectory(fusion) +add_subdirectory(plugins/sensor_fusion) +add_subdirectory(plugins/fusion) ENDIF() IF("${ORIENTATION_ENABLE}" STREQUAL "1") -add_subdirectory(orientation) +add_subdirectory(plugins/orientation) ENDIF() IF("${GRAVITY_ENABLE}" STREQUAL "1") -add_subdirectory(gravity) +add_subdirectory(plugins/gravity) ENDIF() IF("${LINEAR_ACCELERATION_ENABLE}" STREQUAL "1") -add_subdirectory(linear_accel) +add_subdirectory(plugins/linear_accel) ENDIF() IF("${TILT_ENABLE}" STREQUAL "1") -add_subdirectory(tilt) +add_subdirectory(plugins/tilt) ENDIF() IF("${UNCAL_GYRO_ENABLE}" STREQUAL "1") -add_subdirectory(uncal_gyro) +add_subdirectory(plugins/uncal_gyro) ENDIF() -add_subdirectory(rotation_vector) +add_subdirectory(plugins/rotation_vector) add_subdirectory(server) add_subdirectory(libsensord) add_subdirectory(shared) + diff --git a/src/libsensord/CMakeLists.txt b/src/libsensord/CMakeLists.txt index 00e3a1b..3f989c8 100755 --- a/src/libsensord/CMakeLists.txt +++ b/src/libsensord/CMakeLists.txt @@ -35,34 +35,11 @@ SET_TARGET_PROPERTIES(${PROJECT_NAME} PROPERTIES VERSION ${VERSION}) configure_file(${PROJECT_NAME}.pc.in ${CMAKE_CURRENT_SOURCE_DIR}/${PROJECT_NAME}.pc @ONLY) install(TARGETS ${PROJECT_NAME} DESTINATION ${CMAKE_INSTALL_LIBDIR} COMPONENT RuntimeLibraries) -install(FILES sensor_internal_deprecated.h DESTINATION ${CMAKE_INSTALL_INCLUDEDIR}/sensor/) -install(FILES sensor_internal.h DESTINATION ${CMAKE_INSTALL_INCLUDEDIR}/sensor/) install(FILES poller.h DESTINATION ${CMAKE_INSTALL_INCLUDEDIR}/sensor/) install(FILES creg_event_info.h DESTINATION ${CMAKE_INSTALL_INCLUDEDIR}/sensor/) install(FILES csensor_event_listener.h DESTINATION ${CMAKE_INSTALL_INCLUDEDIR}/sensor/) install(FILES sensor_info_manager.h DESTINATION ${CMAKE_INSTALL_INCLUDEDIR}/sensor/) install(FILES csensor_handle_info.h DESTINATION ${CMAKE_INSTALL_INCLUDEDIR}/sensor/) install(FILES client_common.h DESTINATION ${CMAKE_INSTALL_INCLUDEDIR}/sensor/) -install(FILES sensor_accel.h DESTINATION ${CMAKE_INSTALL_INCLUDEDIR}/sensor/) -install(FILES sensor_geomag.h DESTINATION ${CMAKE_INSTALL_INCLUDEDIR}/sensor/) -install(FILES sensor_light.h DESTINATION ${CMAKE_INSTALL_INCLUDEDIR}/sensor/) -install(FILES sensor_proxi.h DESTINATION ${CMAKE_INSTALL_INCLUDEDIR}/sensor/) -install(FILES sensor_gyro.h DESTINATION ${CMAKE_INSTALL_INCLUDEDIR}/sensor/) -install(FILES sensor_pressure.h DESTINATION ${CMAKE_INSTALL_INCLUDEDIR}/sensor/) -install(FILES sensor_context.h DESTINATION ${CMAKE_INSTALL_INCLUDEDIR}/sensor/) -install(FILES sensor_auto_rotation.h DESTINATION ${CMAKE_INSTALL_INCLUDEDIR}/sensor/) -install(FILES sensor_gravity.h DESTINATION ${CMAKE_INSTALL_INCLUDEDIR}/sensor/) -install(FILES sensor_linear_accel.h DESTINATION ${CMAKE_INSTALL_INCLUDEDIR}/sensor/) -install(FILES sensor_orientation.h DESTINATION ${CMAKE_INSTALL_INCLUDEDIR}/sensor/) -install(FILES sensor_tilt.h DESTINATION ${CMAKE_INSTALL_INCLUDEDIR}/sensor/) -install(FILES sensor_rv.h DESTINATION ${CMAKE_INSTALL_INCLUDEDIR}/sensor/) -install(FILES sensor_geomagnetic_rv.h DESTINATION ${CMAKE_INSTALL_INCLUDEDIR}/sensor/) -install(FILES sensor_gaming_rv.h DESTINATION ${CMAKE_INSTALL_INCLUDEDIR}/sensor/) -install(FILES sensor_temperature.h DESTINATION ${CMAKE_INSTALL_INCLUDEDIR}/sensor/) -install(FILES sensor_motion.h DESTINATION ${CMAKE_INSTALL_INCLUDEDIR}/sensor/) -install(FILES sensor_fusion.h DESTINATION ${CMAKE_INSTALL_INCLUDEDIR}/sensor/) -install(FILES sensor_ultraviolet.h DESTINATION ${CMAKE_INSTALL_INCLUDEDIR}/sensor/) -install(FILES sensor_bio_led_red.h DESTINATION ${CMAKE_INSTALL_INCLUDEDIR}/sensor/) -install(FILES sensor_deprecated.h DESTINATION ${CMAKE_INSTALL_INCLUDEDIR}/sensor/) -install(FILES sensor_uncal_gyro.h DESTINATION ${CMAKE_INSTALL_INCLUDEDIR}/sensor/) install(FILES ${PROJECT_NAME}.pc DESTINATION ${CMAKE_INSTALL_LIBDIR}/pkgconfig) + diff --git a/src/accel/CMakeLists.txt b/src/plugins/accel/CMakeLists.txt similarity index 100% rename from src/accel/CMakeLists.txt rename to src/plugins/accel/CMakeLists.txt diff --git a/src/accel/accel_sensor.cpp b/src/plugins/accel/accel_sensor.cpp similarity index 100% rename from src/accel/accel_sensor.cpp rename to src/plugins/accel/accel_sensor.cpp diff --git a/src/accel/accel_sensor.h b/src/plugins/accel/accel_sensor.h similarity index 100% rename from src/accel/accel_sensor.h rename to src/plugins/accel/accel_sensor.h diff --git a/src/accel/accel_sensor_hal.cpp b/src/plugins/accel/accel_sensor_hal.cpp similarity index 100% rename from src/accel/accel_sensor_hal.cpp rename to src/plugins/accel/accel_sensor_hal.cpp diff --git a/src/accel/accel_sensor_hal.h b/src/plugins/accel/accel_sensor_hal.h similarity index 100% rename from src/accel/accel_sensor_hal.h rename to src/plugins/accel/accel_sensor_hal.h diff --git a/src/auto_rotation/CMakeLists.txt b/src/plugins/auto_rotation/CMakeLists.txt similarity index 100% rename from src/auto_rotation/CMakeLists.txt rename to src/plugins/auto_rotation/CMakeLists.txt diff --git a/src/auto_rotation/auto_rotation_alg.cpp b/src/plugins/auto_rotation/auto_rotation_alg.cpp similarity index 100% rename from src/auto_rotation/auto_rotation_alg.cpp rename to src/plugins/auto_rotation/auto_rotation_alg.cpp diff --git a/src/auto_rotation/auto_rotation_alg.h b/src/plugins/auto_rotation/auto_rotation_alg.h similarity index 100% rename from src/auto_rotation/auto_rotation_alg.h rename to src/plugins/auto_rotation/auto_rotation_alg.h diff --git a/src/auto_rotation/auto_rotation_alg_emul.cpp b/src/plugins/auto_rotation/auto_rotation_alg_emul.cpp similarity index 100% rename from src/auto_rotation/auto_rotation_alg_emul.cpp rename to src/plugins/auto_rotation/auto_rotation_alg_emul.cpp diff --git a/src/auto_rotation/auto_rotation_alg_emul.h b/src/plugins/auto_rotation/auto_rotation_alg_emul.h similarity index 100% rename from src/auto_rotation/auto_rotation_alg_emul.h rename to src/plugins/auto_rotation/auto_rotation_alg_emul.h diff --git a/src/auto_rotation/auto_rotation_sensor.cpp b/src/plugins/auto_rotation/auto_rotation_sensor.cpp similarity index 100% rename from src/auto_rotation/auto_rotation_sensor.cpp rename to src/plugins/auto_rotation/auto_rotation_sensor.cpp diff --git a/src/auto_rotation/auto_rotation_sensor.h b/src/plugins/auto_rotation/auto_rotation_sensor.h similarity index 100% rename from src/auto_rotation/auto_rotation_sensor.h rename to src/plugins/auto_rotation/auto_rotation_sensor.h diff --git a/src/bio_led_red/CMakeLists.txt b/src/plugins/bio_led_red/CMakeLists.txt similarity index 100% rename from src/bio_led_red/CMakeLists.txt rename to src/plugins/bio_led_red/CMakeLists.txt diff --git a/src/bio_led_red/bio_led_red_sensor.cpp b/src/plugins/bio_led_red/bio_led_red_sensor.cpp similarity index 100% rename from src/bio_led_red/bio_led_red_sensor.cpp rename to src/plugins/bio_led_red/bio_led_red_sensor.cpp diff --git a/src/bio_led_red/bio_led_red_sensor.h b/src/plugins/bio_led_red/bio_led_red_sensor.h similarity index 100% rename from src/bio_led_red/bio_led_red_sensor.h rename to src/plugins/bio_led_red/bio_led_red_sensor.h diff --git a/src/bio_led_red/bio_led_red_sensor_hal.cpp b/src/plugins/bio_led_red/bio_led_red_sensor_hal.cpp similarity index 100% rename from src/bio_led_red/bio_led_red_sensor_hal.cpp rename to src/plugins/bio_led_red/bio_led_red_sensor_hal.cpp diff --git a/src/bio_led_red/bio_led_red_sensor_hal.h b/src/plugins/bio_led_red/bio_led_red_sensor_hal.h similarity index 100% rename from src/bio_led_red/bio_led_red_sensor_hal.h rename to src/plugins/bio_led_red/bio_led_red_sensor_hal.h diff --git a/src/fusion/CMakeLists.txt b/src/plugins/fusion/CMakeLists.txt similarity index 90% rename from src/fusion/CMakeLists.txt rename to src/plugins/fusion/CMakeLists.txt index 9c6b3f4..131a2a8 100755 --- a/src/fusion/CMakeLists.txt +++ b/src/plugins/fusion/CMakeLists.txt @@ -5,7 +5,7 @@ SET(SENSOR_NAME fusion_sensor) include_directories(${CMAKE_CURRENT_SOURCE_DIR}) include_directories(${CMAKE_SOURCE_DIR}/src/libsensord) -include_directories(${CMAKE_SOURCE_DIR}/src/sensor_fusion) +include_directories(${CMAKE_SOURCE_DIR}/src/plugins/sensor_fusion) FOREACH(flag ${fusion_pkgs_LDFLAGS}) SET(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} ${flag}") diff --git a/src/fusion/fusion_sensor.cpp b/src/plugins/fusion/fusion_sensor.cpp similarity index 100% rename from src/fusion/fusion_sensor.cpp rename to src/plugins/fusion/fusion_sensor.cpp diff --git a/src/fusion/fusion_sensor.h b/src/plugins/fusion/fusion_sensor.h similarity index 100% rename from src/fusion/fusion_sensor.h rename to src/plugins/fusion/fusion_sensor.h diff --git a/src/fusion/hardware_fusion_sensor.html b/src/plugins/fusion/hardware_fusion_sensor.html similarity index 100% rename from src/fusion/hardware_fusion_sensor.html rename to src/plugins/fusion/hardware_fusion_sensor.html diff --git a/src/geo/CMakeLists.txt b/src/plugins/geo/CMakeLists.txt similarity index 100% rename from src/geo/CMakeLists.txt rename to src/plugins/geo/CMakeLists.txt diff --git a/src/geo/geo_sensor.cpp b/src/plugins/geo/geo_sensor.cpp similarity index 100% rename from src/geo/geo_sensor.cpp rename to src/plugins/geo/geo_sensor.cpp diff --git a/src/geo/geo_sensor.h b/src/plugins/geo/geo_sensor.h similarity index 100% rename from src/geo/geo_sensor.h rename to src/plugins/geo/geo_sensor.h diff --git a/src/geo/geo_sensor_hal.cpp b/src/plugins/geo/geo_sensor_hal.cpp similarity index 100% rename from src/geo/geo_sensor_hal.cpp rename to src/plugins/geo/geo_sensor_hal.cpp diff --git a/src/geo/geo_sensor_hal.h b/src/plugins/geo/geo_sensor_hal.h similarity index 100% rename from src/geo/geo_sensor_hal.h rename to src/plugins/geo/geo_sensor_hal.h diff --git a/src/gravity/CMakeLists.txt b/src/plugins/gravity/CMakeLists.txt similarity index 90% rename from src/gravity/CMakeLists.txt rename to src/plugins/gravity/CMakeLists.txt index 9ebbb00..5491c47 100755 --- a/src/gravity/CMakeLists.txt +++ b/src/plugins/gravity/CMakeLists.txt @@ -5,7 +5,7 @@ SET(SENSOR_NAME gravity_sensor) include_directories(${CMAKE_CURRENT_SOURCE_DIR}) include_directories(${CMAKE_SOURCE_DIR}/src/libsensord) -include_directories(${CMAKE_SOURCE_DIR}/src/sensor_fusion) +include_directories(${CMAKE_SOURCE_DIR}/src/plugins/sensor_fusion) FOREACH(flag ${gravity_pkgs_LDFLAGS}) SET(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} ${flag}") diff --git a/src/gravity/gravity_sensor.cpp b/src/plugins/gravity/gravity_sensor.cpp similarity index 100% rename from src/gravity/gravity_sensor.cpp rename to src/plugins/gravity/gravity_sensor.cpp diff --git a/src/gravity/gravity_sensor.h b/src/plugins/gravity/gravity_sensor.h similarity index 100% rename from src/gravity/gravity_sensor.h rename to src/plugins/gravity/gravity_sensor.h diff --git a/src/gyro/CMakeLists.txt b/src/plugins/gyro/CMakeLists.txt similarity index 100% rename from src/gyro/CMakeLists.txt rename to src/plugins/gyro/CMakeLists.txt diff --git a/src/gyro/gyro_sensor.cpp b/src/plugins/gyro/gyro_sensor.cpp similarity index 100% rename from src/gyro/gyro_sensor.cpp rename to src/plugins/gyro/gyro_sensor.cpp diff --git a/src/gyro/gyro_sensor.h b/src/plugins/gyro/gyro_sensor.h similarity index 100% rename from src/gyro/gyro_sensor.h rename to src/plugins/gyro/gyro_sensor.h diff --git a/src/gyro/gyro_sensor_hal.cpp b/src/plugins/gyro/gyro_sensor_hal.cpp similarity index 100% rename from src/gyro/gyro_sensor_hal.cpp rename to src/plugins/gyro/gyro_sensor_hal.cpp diff --git a/src/gyro/gyro_sensor_hal.h b/src/plugins/gyro/gyro_sensor_hal.h similarity index 100% rename from src/gyro/gyro_sensor_hal.h rename to src/plugins/gyro/gyro_sensor_hal.h diff --git a/src/light/CMakeLists.txt b/src/plugins/light/CMakeLists.txt similarity index 100% rename from src/light/CMakeLists.txt rename to src/plugins/light/CMakeLists.txt diff --git a/src/light/light_sensor.cpp b/src/plugins/light/light_sensor.cpp similarity index 100% rename from src/light/light_sensor.cpp rename to src/plugins/light/light_sensor.cpp diff --git a/src/light/light_sensor.h b/src/plugins/light/light_sensor.h similarity index 100% rename from src/light/light_sensor.h rename to src/plugins/light/light_sensor.h diff --git a/src/light/light_sensor_hal.cpp b/src/plugins/light/light_sensor_hal.cpp similarity index 100% rename from src/light/light_sensor_hal.cpp rename to src/plugins/light/light_sensor_hal.cpp diff --git a/src/light/light_sensor_hal.h b/src/plugins/light/light_sensor_hal.h similarity index 100% rename from src/light/light_sensor_hal.h rename to src/plugins/light/light_sensor_hal.h diff --git a/src/linear_accel/CMakeLists.txt b/src/plugins/linear_accel/CMakeLists.txt similarity index 90% rename from src/linear_accel/CMakeLists.txt rename to src/plugins/linear_accel/CMakeLists.txt index fbc726f..c819bf7 100755 --- a/src/linear_accel/CMakeLists.txt +++ b/src/plugins/linear_accel/CMakeLists.txt @@ -5,7 +5,7 @@ SET(SENSOR_NAME linear_accel_sensor) include_directories(${CMAKE_CURRENT_SOURCE_DIR}) include_directories(${CMAKE_SOURCE_DIR}/src/libsensord) -include_directories(${CMAKE_SOURCE_DIR}/src/sensor_fusion) +include_directories(${CMAKE_SOURCE_DIR}/src/plugins/sensor_fusion) FOREACH(flag ${linear_accel_pkgs_LDFLAGS}) SET(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} ${flag}") diff --git a/src/linear_accel/linear_accel_sensor.cpp b/src/plugins/linear_accel/linear_accel_sensor.cpp similarity index 100% rename from src/linear_accel/linear_accel_sensor.cpp rename to src/plugins/linear_accel/linear_accel_sensor.cpp diff --git a/src/linear_accel/linear_accel_sensor.h b/src/plugins/linear_accel/linear_accel_sensor.h similarity index 100% rename from src/linear_accel/linear_accel_sensor.h rename to src/plugins/linear_accel/linear_accel_sensor.h diff --git a/src/orientation/CMakeLists.txt b/src/plugins/orientation/CMakeLists.txt similarity index 90% rename from src/orientation/CMakeLists.txt rename to src/plugins/orientation/CMakeLists.txt index 5418674..455f0f4 100755 --- a/src/orientation/CMakeLists.txt +++ b/src/plugins/orientation/CMakeLists.txt @@ -5,7 +5,7 @@ SET(SENSOR_NAME orientation_sensor) include_directories(${CMAKE_CURRENT_SOURCE_DIR}) include_directories(${CMAKE_SOURCE_DIR}/src/libsensord) -include_directories(${CMAKE_SOURCE_DIR}/src/sensor_fusion) +include_directories(${CMAKE_SOURCE_DIR}/src/plugins/sensor_fusion) FOREACH(flag ${orientation_pkgs_LDFLAGS}) SET(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} ${flag}") diff --git a/src/orientation/orientation_sensor.cpp b/src/plugins/orientation/orientation_sensor.cpp similarity index 100% rename from src/orientation/orientation_sensor.cpp rename to src/plugins/orientation/orientation_sensor.cpp diff --git a/src/orientation/orientation_sensor.h b/src/plugins/orientation/orientation_sensor.h similarity index 100% rename from src/orientation/orientation_sensor.h rename to src/plugins/orientation/orientation_sensor.h diff --git a/src/pressure/CMakeLists.txt b/src/plugins/pressure/CMakeLists.txt similarity index 100% rename from src/pressure/CMakeLists.txt rename to src/plugins/pressure/CMakeLists.txt diff --git a/src/pressure/pressure_sensor.cpp b/src/plugins/pressure/pressure_sensor.cpp similarity index 100% rename from src/pressure/pressure_sensor.cpp rename to src/plugins/pressure/pressure_sensor.cpp diff --git a/src/pressure/pressure_sensor.h b/src/plugins/pressure/pressure_sensor.h similarity index 100% rename from src/pressure/pressure_sensor.h rename to src/plugins/pressure/pressure_sensor.h diff --git a/src/pressure/pressure_sensor_hal.cpp b/src/plugins/pressure/pressure_sensor_hal.cpp similarity index 100% rename from src/pressure/pressure_sensor_hal.cpp rename to src/plugins/pressure/pressure_sensor_hal.cpp diff --git a/src/pressure/pressure_sensor_hal.h b/src/plugins/pressure/pressure_sensor_hal.h similarity index 100% rename from src/pressure/pressure_sensor_hal.h rename to src/plugins/pressure/pressure_sensor_hal.h diff --git a/src/proxi/CMakeLists.txt b/src/plugins/proxi/CMakeLists.txt similarity index 100% rename from src/proxi/CMakeLists.txt rename to src/plugins/proxi/CMakeLists.txt diff --git a/src/proxi/proxi_sensor.cpp b/src/plugins/proxi/proxi_sensor.cpp similarity index 100% rename from src/proxi/proxi_sensor.cpp rename to src/plugins/proxi/proxi_sensor.cpp diff --git a/src/proxi/proxi_sensor.h b/src/plugins/proxi/proxi_sensor.h similarity index 100% rename from src/proxi/proxi_sensor.h rename to src/plugins/proxi/proxi_sensor.h diff --git a/src/proxi/proxi_sensor_hal.cpp b/src/plugins/proxi/proxi_sensor_hal.cpp similarity index 100% rename from src/proxi/proxi_sensor_hal.cpp rename to src/plugins/proxi/proxi_sensor_hal.cpp diff --git a/src/proxi/proxi_sensor_hal.h b/src/plugins/proxi/proxi_sensor_hal.h similarity index 100% rename from src/proxi/proxi_sensor_hal.h rename to src/plugins/proxi/proxi_sensor_hal.h diff --git a/src/rotation_vector/CMakeLists.txt b/src/plugins/rotation_vector/CMakeLists.txt similarity index 100% rename from src/rotation_vector/CMakeLists.txt rename to src/plugins/rotation_vector/CMakeLists.txt diff --git a/src/rotation_vector/gaming_rv/CMakeLists.txt b/src/plugins/rotation_vector/gaming_rv/CMakeLists.txt similarity index 90% rename from src/rotation_vector/gaming_rv/CMakeLists.txt rename to src/plugins/rotation_vector/gaming_rv/CMakeLists.txt index a56dc73..2d13a9f 100755 --- a/src/rotation_vector/gaming_rv/CMakeLists.txt +++ b/src/plugins/rotation_vector/gaming_rv/CMakeLists.txt @@ -5,7 +5,7 @@ SET(SENSOR_NAME gaming_rv_sensor) include_directories(${CMAKE_CURRENT_SOURCE_DIR}) include_directories(${CMAKE_SOURCE_DIR}/src/libsensord) -include_directories(${CMAKE_SOURCE_DIR}/src/sensor_fusion) +include_directories(${CMAKE_SOURCE_DIR}/src/plugins/sensor_fusion) FOREACH(flag ${gaming_rv_pkgs_LDFLAGS}) SET(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} ${flag}") diff --git a/src/rotation_vector/gaming_rv/gaming_rv_sensor.cpp b/src/plugins/rotation_vector/gaming_rv/gaming_rv_sensor.cpp similarity index 100% rename from src/rotation_vector/gaming_rv/gaming_rv_sensor.cpp rename to src/plugins/rotation_vector/gaming_rv/gaming_rv_sensor.cpp diff --git a/src/rotation_vector/gaming_rv/gaming_rv_sensor.h b/src/plugins/rotation_vector/gaming_rv/gaming_rv_sensor.h similarity index 100% rename from src/rotation_vector/gaming_rv/gaming_rv_sensor.h rename to src/plugins/rotation_vector/gaming_rv/gaming_rv_sensor.h diff --git a/src/rotation_vector/geomagnetic_rv/CMakeLists.txt b/src/plugins/rotation_vector/geomagnetic_rv/CMakeLists.txt similarity index 90% rename from src/rotation_vector/geomagnetic_rv/CMakeLists.txt rename to src/plugins/rotation_vector/geomagnetic_rv/CMakeLists.txt index 6b44750..56bd3c1 100755 --- a/src/rotation_vector/geomagnetic_rv/CMakeLists.txt +++ b/src/plugins/rotation_vector/geomagnetic_rv/CMakeLists.txt @@ -5,7 +5,7 @@ SET(SENSOR_NAME geomagnetic_rv_sensor) include_directories(${CMAKE_CURRENT_SOURCE_DIR}) include_directories(${CMAKE_SOURCE_DIR}/src/libsensord) -include_directories(${CMAKE_SOURCE_DIR}/src/sensor_fusion) +include_directories(${CMAKE_SOURCE_DIR}/src/plugins/sensor_fusion) FOREACH(flag ${geomagnetic_rv_pkgs_LDFLAGS}) SET(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} ${flag}") diff --git a/src/rotation_vector/geomagnetic_rv/geomagnetic_rv_sensor.cpp b/src/plugins/rotation_vector/geomagnetic_rv/geomagnetic_rv_sensor.cpp similarity index 100% rename from src/rotation_vector/geomagnetic_rv/geomagnetic_rv_sensor.cpp rename to src/plugins/rotation_vector/geomagnetic_rv/geomagnetic_rv_sensor.cpp diff --git a/src/rotation_vector/geomagnetic_rv/geomagnetic_rv_sensor.h b/src/plugins/rotation_vector/geomagnetic_rv/geomagnetic_rv_sensor.h similarity index 100% rename from src/rotation_vector/geomagnetic_rv/geomagnetic_rv_sensor.h rename to src/plugins/rotation_vector/geomagnetic_rv/geomagnetic_rv_sensor.h diff --git a/src/rotation_vector/rv/CMakeLists.txt b/src/plugins/rotation_vector/rv/CMakeLists.txt similarity index 89% rename from src/rotation_vector/rv/CMakeLists.txt rename to src/plugins/rotation_vector/rv/CMakeLists.txt index 1549c6f..4cbb90f 100755 --- a/src/rotation_vector/rv/CMakeLists.txt +++ b/src/plugins/rotation_vector/rv/CMakeLists.txt @@ -5,7 +5,7 @@ SET(SENSOR_NAME rv_sensor) include_directories(${CMAKE_CURRENT_SOURCE_DIR}) include_directories(${CMAKE_SOURCE_DIR}/src/libsensord) -include_directories(${CMAKE_SOURCE_DIR}/src/sensor_fusion) +include_directories(${CMAKE_SOURCE_DIR}/src/plugins/sensor_fusion) FOREACH(flag ${rv_pkgs_LDFLAGS}) SET(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} ${flag}") diff --git a/src/rotation_vector/rv/rv_sensor.cpp b/src/plugins/rotation_vector/rv/rv_sensor.cpp similarity index 100% rename from src/rotation_vector/rv/rv_sensor.cpp rename to src/plugins/rotation_vector/rv/rv_sensor.cpp diff --git a/src/rotation_vector/rv/rv_sensor.h b/src/plugins/rotation_vector/rv/rv_sensor.h similarity index 100% rename from src/rotation_vector/rv/rv_sensor.h rename to src/plugins/rotation_vector/rv/rv_sensor.h diff --git a/src/rotation_vector/rv_raw/CMakeLists.txt b/src/plugins/rotation_vector/rv_raw/CMakeLists.txt similarity index 100% rename from src/rotation_vector/rv_raw/CMakeLists.txt rename to src/plugins/rotation_vector/rv_raw/CMakeLists.txt diff --git a/src/rotation_vector/rv_raw/rv_raw_sensor.cpp b/src/plugins/rotation_vector/rv_raw/rv_raw_sensor.cpp similarity index 100% rename from src/rotation_vector/rv_raw/rv_raw_sensor.cpp rename to src/plugins/rotation_vector/rv_raw/rv_raw_sensor.cpp diff --git a/src/rotation_vector/rv_raw/rv_raw_sensor.h b/src/plugins/rotation_vector/rv_raw/rv_raw_sensor.h similarity index 100% rename from src/rotation_vector/rv_raw/rv_raw_sensor.h rename to src/plugins/rotation_vector/rv_raw/rv_raw_sensor.h diff --git a/src/rotation_vector/rv_raw/rv_raw_sensor_hal.cpp b/src/plugins/rotation_vector/rv_raw/rv_raw_sensor_hal.cpp similarity index 100% rename from src/rotation_vector/rv_raw/rv_raw_sensor_hal.cpp rename to src/plugins/rotation_vector/rv_raw/rv_raw_sensor_hal.cpp diff --git a/src/rotation_vector/rv_raw/rv_raw_sensor_hal.h b/src/plugins/rotation_vector/rv_raw/rv_raw_sensor_hal.h similarity index 100% rename from src/rotation_vector/rv_raw/rv_raw_sensor_hal.h rename to src/plugins/rotation_vector/rv_raw/rv_raw_sensor_hal.h diff --git a/src/sensor_fusion/CMakeLists.txt b/src/plugins/sensor_fusion/CMakeLists.txt similarity index 100% rename from src/sensor_fusion/CMakeLists.txt rename to src/plugins/sensor_fusion/CMakeLists.txt diff --git a/src/sensor_fusion/design/data/100ms/gravity/single_roll_throw/accel.txt b/src/plugins/sensor_fusion/design/data/100ms/gravity/single_roll_throw/accel.txt similarity index 100% rename from src/sensor_fusion/design/data/100ms/gravity/single_roll_throw/accel.txt rename to src/plugins/sensor_fusion/design/data/100ms/gravity/single_roll_throw/accel.txt diff --git a/src/sensor_fusion/design/data/100ms/gravity/single_roll_throw/gyro.txt b/src/plugins/sensor_fusion/design/data/100ms/gravity/single_roll_throw/gyro.txt similarity index 100% rename from src/sensor_fusion/design/data/100ms/gravity/single_roll_throw/gyro.txt rename to src/plugins/sensor_fusion/design/data/100ms/gravity/single_roll_throw/gyro.txt diff --git a/src/sensor_fusion/design/data/100ms/gravity/single_roll_throw/magnetic.txt b/src/plugins/sensor_fusion/design/data/100ms/gravity/single_roll_throw/magnetic.txt similarity index 100% rename from src/sensor_fusion/design/data/100ms/gravity/single_roll_throw/magnetic.txt rename to src/plugins/sensor_fusion/design/data/100ms/gravity/single_roll_throw/magnetic.txt diff --git a/src/sensor_fusion/design/data/100ms/linear_acceleration/move_x_y_z/accel.txt b/src/plugins/sensor_fusion/design/data/100ms/linear_acceleration/move_x_y_z/accel.txt similarity index 100% rename from src/sensor_fusion/design/data/100ms/linear_acceleration/move_x_y_z/accel.txt rename to src/plugins/sensor_fusion/design/data/100ms/linear_acceleration/move_x_y_z/accel.txt diff --git a/src/sensor_fusion/design/data/100ms/linear_acceleration/move_x_y_z/gyro.txt b/src/plugins/sensor_fusion/design/data/100ms/linear_acceleration/move_x_y_z/gyro.txt similarity index 100% rename from src/sensor_fusion/design/data/100ms/linear_acceleration/move_x_y_z/gyro.txt rename to src/plugins/sensor_fusion/design/data/100ms/linear_acceleration/move_x_y_z/gyro.txt diff --git a/src/sensor_fusion/design/data/100ms/linear_acceleration/move_x_y_z/magnetic.txt b/src/plugins/sensor_fusion/design/data/100ms/linear_acceleration/move_x_y_z/magnetic.txt similarity index 100% rename from src/sensor_fusion/design/data/100ms/linear_acceleration/move_x_y_z/magnetic.txt rename to src/plugins/sensor_fusion/design/data/100ms/linear_acceleration/move_x_y_z/magnetic.txt diff --git a/src/sensor_fusion/design/data/100ms/orientation/roll_pitch_yaw/accel.txt b/src/plugins/sensor_fusion/design/data/100ms/orientation/roll_pitch_yaw/accel.txt similarity index 100% rename from src/sensor_fusion/design/data/100ms/orientation/roll_pitch_yaw/accel.txt rename to src/plugins/sensor_fusion/design/data/100ms/orientation/roll_pitch_yaw/accel.txt diff --git a/src/sensor_fusion/design/data/100ms/orientation/roll_pitch_yaw/gyro.txt b/src/plugins/sensor_fusion/design/data/100ms/orientation/roll_pitch_yaw/gyro.txt similarity index 100% rename from src/sensor_fusion/design/data/100ms/orientation/roll_pitch_yaw/gyro.txt rename to src/plugins/sensor_fusion/design/data/100ms/orientation/roll_pitch_yaw/gyro.txt diff --git a/src/sensor_fusion/design/data/100ms/orientation/roll_pitch_yaw/magnetic.txt b/src/plugins/sensor_fusion/design/data/100ms/orientation/roll_pitch_yaw/magnetic.txt similarity index 100% rename from src/sensor_fusion/design/data/100ms/orientation/roll_pitch_yaw/magnetic.txt rename to src/plugins/sensor_fusion/design/data/100ms/orientation/roll_pitch_yaw/magnetic.txt diff --git a/src/sensor_fusion/design/data/25ms/pedo/Climb_stairs_down/In_hand/accel b/src/plugins/sensor_fusion/design/data/25ms/pedo/Climb_stairs_down/In_hand/accel similarity index 100% rename from src/sensor_fusion/design/data/25ms/pedo/Climb_stairs_down/In_hand/accel rename to src/plugins/sensor_fusion/design/data/25ms/pedo/Climb_stairs_down/In_hand/accel diff --git a/src/sensor_fusion/design/data/25ms/pedo/Climb_stairs_down/In_hand/gyro b/src/plugins/sensor_fusion/design/data/25ms/pedo/Climb_stairs_down/In_hand/gyro similarity index 100% rename from src/sensor_fusion/design/data/25ms/pedo/Climb_stairs_down/In_hand/gyro rename to src/plugins/sensor_fusion/design/data/25ms/pedo/Climb_stairs_down/In_hand/gyro diff --git a/src/sensor_fusion/design/data/25ms/pedo/Climb_stairs_down/In_hand/magnetic b/src/plugins/sensor_fusion/design/data/25ms/pedo/Climb_stairs_down/In_hand/magnetic similarity index 100% rename from src/sensor_fusion/design/data/25ms/pedo/Climb_stairs_down/In_hand/magnetic rename to src/plugins/sensor_fusion/design/data/25ms/pedo/Climb_stairs_down/In_hand/magnetic diff --git a/src/sensor_fusion/design/data/25ms/pedo/Climb_stairs_down/Pant_pocket/accel b/src/plugins/sensor_fusion/design/data/25ms/pedo/Climb_stairs_down/Pant_pocket/accel similarity index 100% rename from src/sensor_fusion/design/data/25ms/pedo/Climb_stairs_down/Pant_pocket/accel rename to src/plugins/sensor_fusion/design/data/25ms/pedo/Climb_stairs_down/Pant_pocket/accel diff --git a/src/sensor_fusion/design/data/25ms/pedo/Climb_stairs_down/Pant_pocket/gyro b/src/plugins/sensor_fusion/design/data/25ms/pedo/Climb_stairs_down/Pant_pocket/gyro similarity index 100% rename from src/sensor_fusion/design/data/25ms/pedo/Climb_stairs_down/Pant_pocket/gyro rename to src/plugins/sensor_fusion/design/data/25ms/pedo/Climb_stairs_down/Pant_pocket/gyro diff --git a/src/sensor_fusion/design/data/25ms/pedo/Climb_stairs_down/Pant_pocket/magnetic b/src/plugins/sensor_fusion/design/data/25ms/pedo/Climb_stairs_down/Pant_pocket/magnetic similarity index 100% rename from src/sensor_fusion/design/data/25ms/pedo/Climb_stairs_down/Pant_pocket/magnetic rename to src/plugins/sensor_fusion/design/data/25ms/pedo/Climb_stairs_down/Pant_pocket/magnetic diff --git a/src/sensor_fusion/design/data/25ms/pedo/Climb_stairs_down/Shirt_pocket/accel b/src/plugins/sensor_fusion/design/data/25ms/pedo/Climb_stairs_down/Shirt_pocket/accel similarity index 100% rename from src/sensor_fusion/design/data/25ms/pedo/Climb_stairs_down/Shirt_pocket/accel rename to src/plugins/sensor_fusion/design/data/25ms/pedo/Climb_stairs_down/Shirt_pocket/accel diff --git a/src/sensor_fusion/design/data/25ms/pedo/Climb_stairs_down/Shirt_pocket/gyro b/src/plugins/sensor_fusion/design/data/25ms/pedo/Climb_stairs_down/Shirt_pocket/gyro similarity index 100% rename from src/sensor_fusion/design/data/25ms/pedo/Climb_stairs_down/Shirt_pocket/gyro rename to src/plugins/sensor_fusion/design/data/25ms/pedo/Climb_stairs_down/Shirt_pocket/gyro diff --git a/src/sensor_fusion/design/data/25ms/pedo/Climb_stairs_down/Shirt_pocket/magnetic b/src/plugins/sensor_fusion/design/data/25ms/pedo/Climb_stairs_down/Shirt_pocket/magnetic similarity index 100% rename from src/sensor_fusion/design/data/25ms/pedo/Climb_stairs_down/Shirt_pocket/magnetic rename to src/plugins/sensor_fusion/design/data/25ms/pedo/Climb_stairs_down/Shirt_pocket/magnetic diff --git a/src/sensor_fusion/design/data/25ms/pedo/Climb_stairs_down/While_talking/accel b/src/plugins/sensor_fusion/design/data/25ms/pedo/Climb_stairs_down/While_talking/accel similarity index 100% rename from src/sensor_fusion/design/data/25ms/pedo/Climb_stairs_down/While_talking/accel rename to src/plugins/sensor_fusion/design/data/25ms/pedo/Climb_stairs_down/While_talking/accel diff --git a/src/sensor_fusion/design/data/25ms/pedo/Climb_stairs_down/While_talking/gyro b/src/plugins/sensor_fusion/design/data/25ms/pedo/Climb_stairs_down/While_talking/gyro similarity index 100% rename from src/sensor_fusion/design/data/25ms/pedo/Climb_stairs_down/While_talking/gyro rename to src/plugins/sensor_fusion/design/data/25ms/pedo/Climb_stairs_down/While_talking/gyro diff --git a/src/sensor_fusion/design/data/25ms/pedo/Climb_stairs_down/While_talking/magnetic b/src/plugins/sensor_fusion/design/data/25ms/pedo/Climb_stairs_down/While_talking/magnetic similarity index 100% rename from src/sensor_fusion/design/data/25ms/pedo/Climb_stairs_down/While_talking/magnetic rename to src/plugins/sensor_fusion/design/data/25ms/pedo/Climb_stairs_down/While_talking/magnetic diff --git a/src/sensor_fusion/design/data/25ms/pedo/Climb_stairs_up/In_hand/accel b/src/plugins/sensor_fusion/design/data/25ms/pedo/Climb_stairs_up/In_hand/accel similarity index 100% rename from src/sensor_fusion/design/data/25ms/pedo/Climb_stairs_up/In_hand/accel rename to src/plugins/sensor_fusion/design/data/25ms/pedo/Climb_stairs_up/In_hand/accel diff --git a/src/sensor_fusion/design/data/25ms/pedo/Climb_stairs_up/In_hand/gyro b/src/plugins/sensor_fusion/design/data/25ms/pedo/Climb_stairs_up/In_hand/gyro similarity index 100% rename from src/sensor_fusion/design/data/25ms/pedo/Climb_stairs_up/In_hand/gyro rename to src/plugins/sensor_fusion/design/data/25ms/pedo/Climb_stairs_up/In_hand/gyro diff --git a/src/sensor_fusion/design/data/25ms/pedo/Climb_stairs_up/In_hand/magnetic b/src/plugins/sensor_fusion/design/data/25ms/pedo/Climb_stairs_up/In_hand/magnetic similarity index 100% rename from src/sensor_fusion/design/data/25ms/pedo/Climb_stairs_up/In_hand/magnetic rename to src/plugins/sensor_fusion/design/data/25ms/pedo/Climb_stairs_up/In_hand/magnetic diff --git a/src/sensor_fusion/design/data/25ms/pedo/Climb_stairs_up/Pant_pocket/accel b/src/plugins/sensor_fusion/design/data/25ms/pedo/Climb_stairs_up/Pant_pocket/accel similarity index 100% rename from src/sensor_fusion/design/data/25ms/pedo/Climb_stairs_up/Pant_pocket/accel rename to src/plugins/sensor_fusion/design/data/25ms/pedo/Climb_stairs_up/Pant_pocket/accel diff --git a/src/sensor_fusion/design/data/25ms/pedo/Climb_stairs_up/Pant_pocket/gyro b/src/plugins/sensor_fusion/design/data/25ms/pedo/Climb_stairs_up/Pant_pocket/gyro similarity index 100% rename from src/sensor_fusion/design/data/25ms/pedo/Climb_stairs_up/Pant_pocket/gyro rename to src/plugins/sensor_fusion/design/data/25ms/pedo/Climb_stairs_up/Pant_pocket/gyro diff --git a/src/sensor_fusion/design/data/25ms/pedo/Climb_stairs_up/Pant_pocket/magnetic b/src/plugins/sensor_fusion/design/data/25ms/pedo/Climb_stairs_up/Pant_pocket/magnetic similarity index 100% rename from src/sensor_fusion/design/data/25ms/pedo/Climb_stairs_up/Pant_pocket/magnetic rename to src/plugins/sensor_fusion/design/data/25ms/pedo/Climb_stairs_up/Pant_pocket/magnetic diff --git a/src/sensor_fusion/design/data/25ms/pedo/Climb_stairs_up/Shirt_pocket/accel b/src/plugins/sensor_fusion/design/data/25ms/pedo/Climb_stairs_up/Shirt_pocket/accel similarity index 100% rename from src/sensor_fusion/design/data/25ms/pedo/Climb_stairs_up/Shirt_pocket/accel rename to src/plugins/sensor_fusion/design/data/25ms/pedo/Climb_stairs_up/Shirt_pocket/accel diff --git a/src/sensor_fusion/design/data/25ms/pedo/Climb_stairs_up/Shirt_pocket/gyro b/src/plugins/sensor_fusion/design/data/25ms/pedo/Climb_stairs_up/Shirt_pocket/gyro similarity index 100% rename from src/sensor_fusion/design/data/25ms/pedo/Climb_stairs_up/Shirt_pocket/gyro rename to src/plugins/sensor_fusion/design/data/25ms/pedo/Climb_stairs_up/Shirt_pocket/gyro diff --git a/src/sensor_fusion/design/data/25ms/pedo/Climb_stairs_up/Shirt_pocket/magnetic b/src/plugins/sensor_fusion/design/data/25ms/pedo/Climb_stairs_up/Shirt_pocket/magnetic similarity index 100% rename from src/sensor_fusion/design/data/25ms/pedo/Climb_stairs_up/Shirt_pocket/magnetic rename to src/plugins/sensor_fusion/design/data/25ms/pedo/Climb_stairs_up/Shirt_pocket/magnetic diff --git a/src/sensor_fusion/design/data/25ms/pedo/Climb_stairs_up/While_talking/accel b/src/plugins/sensor_fusion/design/data/25ms/pedo/Climb_stairs_up/While_talking/accel similarity index 100% rename from src/sensor_fusion/design/data/25ms/pedo/Climb_stairs_up/While_talking/accel rename to src/plugins/sensor_fusion/design/data/25ms/pedo/Climb_stairs_up/While_talking/accel diff --git a/src/sensor_fusion/design/data/25ms/pedo/Climb_stairs_up/While_talking/gyro b/src/plugins/sensor_fusion/design/data/25ms/pedo/Climb_stairs_up/While_talking/gyro similarity index 100% rename from src/sensor_fusion/design/data/25ms/pedo/Climb_stairs_up/While_talking/gyro rename to src/plugins/sensor_fusion/design/data/25ms/pedo/Climb_stairs_up/While_talking/gyro diff --git a/src/sensor_fusion/design/data/25ms/pedo/Climb_stairs_up/While_talking/magnetic b/src/plugins/sensor_fusion/design/data/25ms/pedo/Climb_stairs_up/While_talking/magnetic similarity index 100% rename from src/sensor_fusion/design/data/25ms/pedo/Climb_stairs_up/While_talking/magnetic rename to src/plugins/sensor_fusion/design/data/25ms/pedo/Climb_stairs_up/While_talking/magnetic diff --git a/src/sensor_fusion/design/data/25ms/pedo/Walk_fast/In_hand/accel b/src/plugins/sensor_fusion/design/data/25ms/pedo/Walk_fast/In_hand/accel similarity index 100% rename from src/sensor_fusion/design/data/25ms/pedo/Walk_fast/In_hand/accel rename to src/plugins/sensor_fusion/design/data/25ms/pedo/Walk_fast/In_hand/accel diff --git a/src/sensor_fusion/design/data/25ms/pedo/Walk_fast/In_hand/gyro b/src/plugins/sensor_fusion/design/data/25ms/pedo/Walk_fast/In_hand/gyro similarity index 100% rename from src/sensor_fusion/design/data/25ms/pedo/Walk_fast/In_hand/gyro rename to src/plugins/sensor_fusion/design/data/25ms/pedo/Walk_fast/In_hand/gyro diff --git a/src/sensor_fusion/design/data/25ms/pedo/Walk_fast/In_hand/magnetic b/src/plugins/sensor_fusion/design/data/25ms/pedo/Walk_fast/In_hand/magnetic similarity index 100% rename from src/sensor_fusion/design/data/25ms/pedo/Walk_fast/In_hand/magnetic rename to src/plugins/sensor_fusion/design/data/25ms/pedo/Walk_fast/In_hand/magnetic diff --git a/src/sensor_fusion/design/data/25ms/pedo/Walk_fast/Pant_pocket/accel b/src/plugins/sensor_fusion/design/data/25ms/pedo/Walk_fast/Pant_pocket/accel similarity index 100% rename from src/sensor_fusion/design/data/25ms/pedo/Walk_fast/Pant_pocket/accel rename to src/plugins/sensor_fusion/design/data/25ms/pedo/Walk_fast/Pant_pocket/accel diff --git a/src/sensor_fusion/design/data/25ms/pedo/Walk_fast/Pant_pocket/gyro b/src/plugins/sensor_fusion/design/data/25ms/pedo/Walk_fast/Pant_pocket/gyro similarity index 100% rename from src/sensor_fusion/design/data/25ms/pedo/Walk_fast/Pant_pocket/gyro rename to src/plugins/sensor_fusion/design/data/25ms/pedo/Walk_fast/Pant_pocket/gyro diff --git a/src/sensor_fusion/design/data/25ms/pedo/Walk_fast/Pant_pocket/magnetic b/src/plugins/sensor_fusion/design/data/25ms/pedo/Walk_fast/Pant_pocket/magnetic similarity index 100% rename from src/sensor_fusion/design/data/25ms/pedo/Walk_fast/Pant_pocket/magnetic rename to src/plugins/sensor_fusion/design/data/25ms/pedo/Walk_fast/Pant_pocket/magnetic diff --git a/src/sensor_fusion/design/data/25ms/pedo/Walk_fast/Shirt_pocket/accel b/src/plugins/sensor_fusion/design/data/25ms/pedo/Walk_fast/Shirt_pocket/accel similarity index 100% rename from src/sensor_fusion/design/data/25ms/pedo/Walk_fast/Shirt_pocket/accel rename to src/plugins/sensor_fusion/design/data/25ms/pedo/Walk_fast/Shirt_pocket/accel diff --git a/src/sensor_fusion/design/data/25ms/pedo/Walk_fast/Shirt_pocket/gyro b/src/plugins/sensor_fusion/design/data/25ms/pedo/Walk_fast/Shirt_pocket/gyro similarity index 100% rename from src/sensor_fusion/design/data/25ms/pedo/Walk_fast/Shirt_pocket/gyro rename to src/plugins/sensor_fusion/design/data/25ms/pedo/Walk_fast/Shirt_pocket/gyro diff --git a/src/sensor_fusion/design/data/25ms/pedo/Walk_fast/Shirt_pocket/magnetic b/src/plugins/sensor_fusion/design/data/25ms/pedo/Walk_fast/Shirt_pocket/magnetic similarity index 100% rename from src/sensor_fusion/design/data/25ms/pedo/Walk_fast/Shirt_pocket/magnetic rename to src/plugins/sensor_fusion/design/data/25ms/pedo/Walk_fast/Shirt_pocket/magnetic diff --git a/src/sensor_fusion/design/data/25ms/pedo/Walk_fast/While_talking/accel b/src/plugins/sensor_fusion/design/data/25ms/pedo/Walk_fast/While_talking/accel similarity index 100% rename from src/sensor_fusion/design/data/25ms/pedo/Walk_fast/While_talking/accel rename to src/plugins/sensor_fusion/design/data/25ms/pedo/Walk_fast/While_talking/accel diff --git a/src/sensor_fusion/design/data/25ms/pedo/Walk_fast/While_talking/gyro b/src/plugins/sensor_fusion/design/data/25ms/pedo/Walk_fast/While_talking/gyro similarity index 100% rename from src/sensor_fusion/design/data/25ms/pedo/Walk_fast/While_talking/gyro rename to src/plugins/sensor_fusion/design/data/25ms/pedo/Walk_fast/While_talking/gyro diff --git a/src/sensor_fusion/design/data/25ms/pedo/Walk_fast/While_talking/magnetic b/src/plugins/sensor_fusion/design/data/25ms/pedo/Walk_fast/While_talking/magnetic similarity index 100% rename from src/sensor_fusion/design/data/25ms/pedo/Walk_fast/While_talking/magnetic rename to src/plugins/sensor_fusion/design/data/25ms/pedo/Walk_fast/While_talking/magnetic diff --git a/src/sensor_fusion/design/data/25ms/pedo/Walk_slow/In_hand/accel b/src/plugins/sensor_fusion/design/data/25ms/pedo/Walk_slow/In_hand/accel similarity index 100% rename from src/sensor_fusion/design/data/25ms/pedo/Walk_slow/In_hand/accel rename to src/plugins/sensor_fusion/design/data/25ms/pedo/Walk_slow/In_hand/accel diff --git a/src/sensor_fusion/design/data/25ms/pedo/Walk_slow/In_hand/gyro b/src/plugins/sensor_fusion/design/data/25ms/pedo/Walk_slow/In_hand/gyro similarity index 100% rename from src/sensor_fusion/design/data/25ms/pedo/Walk_slow/In_hand/gyro rename to src/plugins/sensor_fusion/design/data/25ms/pedo/Walk_slow/In_hand/gyro diff --git a/src/sensor_fusion/design/data/25ms/pedo/Walk_slow/In_hand/magnetic b/src/plugins/sensor_fusion/design/data/25ms/pedo/Walk_slow/In_hand/magnetic similarity index 100% rename from src/sensor_fusion/design/data/25ms/pedo/Walk_slow/In_hand/magnetic rename to src/plugins/sensor_fusion/design/data/25ms/pedo/Walk_slow/In_hand/magnetic diff --git a/src/sensor_fusion/design/data/25ms/pedo/Walk_slow/Pant_pocket/accel b/src/plugins/sensor_fusion/design/data/25ms/pedo/Walk_slow/Pant_pocket/accel similarity index 100% rename from src/sensor_fusion/design/data/25ms/pedo/Walk_slow/Pant_pocket/accel rename to src/plugins/sensor_fusion/design/data/25ms/pedo/Walk_slow/Pant_pocket/accel diff --git a/src/sensor_fusion/design/data/25ms/pedo/Walk_slow/Pant_pocket/gyro b/src/plugins/sensor_fusion/design/data/25ms/pedo/Walk_slow/Pant_pocket/gyro similarity index 100% rename from src/sensor_fusion/design/data/25ms/pedo/Walk_slow/Pant_pocket/gyro rename to src/plugins/sensor_fusion/design/data/25ms/pedo/Walk_slow/Pant_pocket/gyro diff --git a/src/sensor_fusion/design/data/25ms/pedo/Walk_slow/Pant_pocket/magnetic b/src/plugins/sensor_fusion/design/data/25ms/pedo/Walk_slow/Pant_pocket/magnetic similarity index 100% rename from src/sensor_fusion/design/data/25ms/pedo/Walk_slow/Pant_pocket/magnetic rename to src/plugins/sensor_fusion/design/data/25ms/pedo/Walk_slow/Pant_pocket/magnetic diff --git a/src/sensor_fusion/design/data/25ms/pedo/Walk_slow/Shirt_pocket/accel b/src/plugins/sensor_fusion/design/data/25ms/pedo/Walk_slow/Shirt_pocket/accel similarity index 100% rename from src/sensor_fusion/design/data/25ms/pedo/Walk_slow/Shirt_pocket/accel rename to src/plugins/sensor_fusion/design/data/25ms/pedo/Walk_slow/Shirt_pocket/accel diff --git a/src/sensor_fusion/design/data/25ms/pedo/Walk_slow/Shirt_pocket/gyro b/src/plugins/sensor_fusion/design/data/25ms/pedo/Walk_slow/Shirt_pocket/gyro similarity index 100% rename from src/sensor_fusion/design/data/25ms/pedo/Walk_slow/Shirt_pocket/gyro rename to src/plugins/sensor_fusion/design/data/25ms/pedo/Walk_slow/Shirt_pocket/gyro diff --git a/src/sensor_fusion/design/data/25ms/pedo/Walk_slow/Shirt_pocket/magnetic b/src/plugins/sensor_fusion/design/data/25ms/pedo/Walk_slow/Shirt_pocket/magnetic similarity index 100% rename from src/sensor_fusion/design/data/25ms/pedo/Walk_slow/Shirt_pocket/magnetic rename to src/plugins/sensor_fusion/design/data/25ms/pedo/Walk_slow/Shirt_pocket/magnetic diff --git a/src/sensor_fusion/design/data/25ms/pedo/Walk_slow/While_talking/accel b/src/plugins/sensor_fusion/design/data/25ms/pedo/Walk_slow/While_talking/accel similarity index 100% rename from src/sensor_fusion/design/data/25ms/pedo/Walk_slow/While_talking/accel rename to src/plugins/sensor_fusion/design/data/25ms/pedo/Walk_slow/While_talking/accel diff --git a/src/sensor_fusion/design/data/25ms/pedo/Walk_slow/While_talking/gyro b/src/plugins/sensor_fusion/design/data/25ms/pedo/Walk_slow/While_talking/gyro similarity index 100% rename from src/sensor_fusion/design/data/25ms/pedo/Walk_slow/While_talking/gyro rename to src/plugins/sensor_fusion/design/data/25ms/pedo/Walk_slow/While_talking/gyro diff --git a/src/sensor_fusion/design/data/25ms/pedo/Walk_slow/While_talking/magnetic b/src/plugins/sensor_fusion/design/data/25ms/pedo/Walk_slow/While_talking/magnetic similarity index 100% rename from src/sensor_fusion/design/data/25ms/pedo/Walk_slow/While_talking/magnetic rename to src/plugins/sensor_fusion/design/data/25ms/pedo/Walk_slow/While_talking/magnetic diff --git a/src/sensor_fusion/design/documentation/diagram/block_diagram_gravity_and_linear_acceleration.png b/src/plugins/sensor_fusion/design/documentation/diagram/block_diagram_gravity_and_linear_acceleration.png similarity index 100% rename from src/sensor_fusion/design/documentation/diagram/block_diagram_gravity_and_linear_acceleration.png rename to src/plugins/sensor_fusion/design/documentation/diagram/block_diagram_gravity_and_linear_acceleration.png diff --git a/src/sensor_fusion/design/documentation/diagram/block_diagram_orientation_estimation.png b/src/plugins/sensor_fusion/design/documentation/diagram/block_diagram_orientation_estimation.png similarity index 100% rename from src/sensor_fusion/design/documentation/diagram/block_diagram_orientation_estimation.png rename to src/plugins/sensor_fusion/design/documentation/diagram/block_diagram_orientation_estimation.png diff --git a/src/sensor_fusion/design/documentation/diagram/device_orientation.png b/src/plugins/sensor_fusion/design/documentation/diagram/device_orientation.png similarity index 100% rename from src/sensor_fusion/design/documentation/diagram/device_orientation.png rename to src/plugins/sensor_fusion/design/documentation/diagram/device_orientation.png diff --git a/src/sensor_fusion/design/documentation/diagram/kalman_filter_stages.png b/src/plugins/sensor_fusion/design/documentation/diagram/kalman_filter_stages.png similarity index 100% rename from src/sensor_fusion/design/documentation/diagram/kalman_filter_stages.png rename to src/plugins/sensor_fusion/design/documentation/diagram/kalman_filter_stages.png diff --git a/src/sensor_fusion/design/documentation/diagram/orientation_effect_on_gravity.png b/src/plugins/sensor_fusion/design/documentation/diagram/orientation_effect_on_gravity.png similarity index 100% rename from src/sensor_fusion/design/documentation/diagram/orientation_effect_on_gravity.png rename to src/plugins/sensor_fusion/design/documentation/diagram/orientation_effect_on_gravity.png diff --git a/src/sensor_fusion/design/documentation/diagram/projection_diagram_gravity_computation.png b/src/plugins/sensor_fusion/design/documentation/diagram/projection_diagram_gravity_computation.png similarity index 100% rename from src/sensor_fusion/design/documentation/diagram/projection_diagram_gravity_computation.png rename to src/plugins/sensor_fusion/design/documentation/diagram/projection_diagram_gravity_computation.png diff --git a/src/sensor_fusion/design/documentation/equation/equation_1.png b/src/plugins/sensor_fusion/design/documentation/equation/equation_1.png similarity index 100% rename from src/sensor_fusion/design/documentation/equation/equation_1.png rename to src/plugins/sensor_fusion/design/documentation/equation/equation_1.png diff --git a/src/sensor_fusion/design/documentation/equation/equation_10.png b/src/plugins/sensor_fusion/design/documentation/equation/equation_10.png similarity index 100% rename from src/sensor_fusion/design/documentation/equation/equation_10.png rename to src/plugins/sensor_fusion/design/documentation/equation/equation_10.png diff --git a/src/sensor_fusion/design/documentation/equation/equation_11.png b/src/plugins/sensor_fusion/design/documentation/equation/equation_11.png similarity index 100% rename from src/sensor_fusion/design/documentation/equation/equation_11.png rename to src/plugins/sensor_fusion/design/documentation/equation/equation_11.png diff --git a/src/sensor_fusion/design/documentation/equation/equation_12.png b/src/plugins/sensor_fusion/design/documentation/equation/equation_12.png similarity index 100% rename from src/sensor_fusion/design/documentation/equation/equation_12.png rename to src/plugins/sensor_fusion/design/documentation/equation/equation_12.png diff --git a/src/sensor_fusion/design/documentation/equation/equation_13.png b/src/plugins/sensor_fusion/design/documentation/equation/equation_13.png similarity index 100% rename from src/sensor_fusion/design/documentation/equation/equation_13.png rename to src/plugins/sensor_fusion/design/documentation/equation/equation_13.png diff --git a/src/sensor_fusion/design/documentation/equation/equation_13_updated.png b/src/plugins/sensor_fusion/design/documentation/equation/equation_13_updated.png similarity index 100% rename from src/sensor_fusion/design/documentation/equation/equation_13_updated.png rename to src/plugins/sensor_fusion/design/documentation/equation/equation_13_updated.png diff --git a/src/sensor_fusion/design/documentation/equation/equation_14.png b/src/plugins/sensor_fusion/design/documentation/equation/equation_14.png similarity index 100% rename from src/sensor_fusion/design/documentation/equation/equation_14.png rename to src/plugins/sensor_fusion/design/documentation/equation/equation_14.png diff --git a/src/sensor_fusion/design/documentation/equation/equation_15.png b/src/plugins/sensor_fusion/design/documentation/equation/equation_15.png similarity index 100% rename from src/sensor_fusion/design/documentation/equation/equation_15.png rename to src/plugins/sensor_fusion/design/documentation/equation/equation_15.png diff --git a/src/sensor_fusion/design/documentation/equation/equation_16.png b/src/plugins/sensor_fusion/design/documentation/equation/equation_16.png similarity index 100% rename from src/sensor_fusion/design/documentation/equation/equation_16.png rename to src/plugins/sensor_fusion/design/documentation/equation/equation_16.png diff --git a/src/sensor_fusion/design/documentation/equation/equation_17.png b/src/plugins/sensor_fusion/design/documentation/equation/equation_17.png similarity index 100% rename from src/sensor_fusion/design/documentation/equation/equation_17.png rename to src/plugins/sensor_fusion/design/documentation/equation/equation_17.png diff --git a/src/sensor_fusion/design/documentation/equation/equation_18.png b/src/plugins/sensor_fusion/design/documentation/equation/equation_18.png similarity index 100% rename from src/sensor_fusion/design/documentation/equation/equation_18.png rename to src/plugins/sensor_fusion/design/documentation/equation/equation_18.png diff --git a/src/sensor_fusion/design/documentation/equation/equation_19.png b/src/plugins/sensor_fusion/design/documentation/equation/equation_19.png similarity index 100% rename from src/sensor_fusion/design/documentation/equation/equation_19.png rename to src/plugins/sensor_fusion/design/documentation/equation/equation_19.png diff --git a/src/sensor_fusion/design/documentation/equation/equation_2.png b/src/plugins/sensor_fusion/design/documentation/equation/equation_2.png similarity index 100% rename from src/sensor_fusion/design/documentation/equation/equation_2.png rename to src/plugins/sensor_fusion/design/documentation/equation/equation_2.png diff --git a/src/sensor_fusion/design/documentation/equation/equation_20.png b/src/plugins/sensor_fusion/design/documentation/equation/equation_20.png similarity index 100% rename from src/sensor_fusion/design/documentation/equation/equation_20.png rename to src/plugins/sensor_fusion/design/documentation/equation/equation_20.png diff --git a/src/sensor_fusion/design/documentation/equation/equation_21.png b/src/plugins/sensor_fusion/design/documentation/equation/equation_21.png similarity index 100% rename from src/sensor_fusion/design/documentation/equation/equation_21.png rename to src/plugins/sensor_fusion/design/documentation/equation/equation_21.png diff --git a/src/sensor_fusion/design/documentation/equation/equation_22.png b/src/plugins/sensor_fusion/design/documentation/equation/equation_22.png similarity index 100% rename from src/sensor_fusion/design/documentation/equation/equation_22.png rename to src/plugins/sensor_fusion/design/documentation/equation/equation_22.png diff --git a/src/sensor_fusion/design/documentation/equation/equation_23.png b/src/plugins/sensor_fusion/design/documentation/equation/equation_23.png similarity index 100% rename from src/sensor_fusion/design/documentation/equation/equation_23.png rename to src/plugins/sensor_fusion/design/documentation/equation/equation_23.png diff --git a/src/sensor_fusion/design/documentation/equation/equation_24.png b/src/plugins/sensor_fusion/design/documentation/equation/equation_24.png similarity index 100% rename from src/sensor_fusion/design/documentation/equation/equation_24.png rename to src/plugins/sensor_fusion/design/documentation/equation/equation_24.png diff --git a/src/sensor_fusion/design/documentation/equation/equation_25.png b/src/plugins/sensor_fusion/design/documentation/equation/equation_25.png similarity index 100% rename from src/sensor_fusion/design/documentation/equation/equation_25.png rename to src/plugins/sensor_fusion/design/documentation/equation/equation_25.png diff --git a/src/sensor_fusion/design/documentation/equation/equation_26.png b/src/plugins/sensor_fusion/design/documentation/equation/equation_26.png similarity index 100% rename from src/sensor_fusion/design/documentation/equation/equation_26.png rename to src/plugins/sensor_fusion/design/documentation/equation/equation_26.png diff --git a/src/sensor_fusion/design/documentation/equation/equation_27.png b/src/plugins/sensor_fusion/design/documentation/equation/equation_27.png similarity index 100% rename from src/sensor_fusion/design/documentation/equation/equation_27.png rename to src/plugins/sensor_fusion/design/documentation/equation/equation_27.png diff --git a/src/sensor_fusion/design/documentation/equation/equation_28.png b/src/plugins/sensor_fusion/design/documentation/equation/equation_28.png similarity index 100% rename from src/sensor_fusion/design/documentation/equation/equation_28.png rename to src/plugins/sensor_fusion/design/documentation/equation/equation_28.png diff --git a/src/sensor_fusion/design/documentation/equation/equation_29.png b/src/plugins/sensor_fusion/design/documentation/equation/equation_29.png similarity index 100% rename from src/sensor_fusion/design/documentation/equation/equation_29.png rename to src/plugins/sensor_fusion/design/documentation/equation/equation_29.png diff --git a/src/sensor_fusion/design/documentation/equation/equation_3.png b/src/plugins/sensor_fusion/design/documentation/equation/equation_3.png similarity index 100% rename from src/sensor_fusion/design/documentation/equation/equation_3.png rename to src/plugins/sensor_fusion/design/documentation/equation/equation_3.png diff --git a/src/sensor_fusion/design/documentation/equation/equation_30.png b/src/plugins/sensor_fusion/design/documentation/equation/equation_30.png similarity index 100% rename from src/sensor_fusion/design/documentation/equation/equation_30.png rename to src/plugins/sensor_fusion/design/documentation/equation/equation_30.png diff --git a/src/sensor_fusion/design/documentation/equation/equation_31.png b/src/plugins/sensor_fusion/design/documentation/equation/equation_31.png similarity index 100% rename from src/sensor_fusion/design/documentation/equation/equation_31.png rename to src/plugins/sensor_fusion/design/documentation/equation/equation_31.png diff --git a/src/sensor_fusion/design/documentation/equation/equation_32.png b/src/plugins/sensor_fusion/design/documentation/equation/equation_32.png similarity index 100% rename from src/sensor_fusion/design/documentation/equation/equation_32.png rename to src/plugins/sensor_fusion/design/documentation/equation/equation_32.png diff --git a/src/sensor_fusion/design/documentation/equation/equation_33.png b/src/plugins/sensor_fusion/design/documentation/equation/equation_33.png similarity index 100% rename from src/sensor_fusion/design/documentation/equation/equation_33.png rename to src/plugins/sensor_fusion/design/documentation/equation/equation_33.png diff --git a/src/sensor_fusion/design/documentation/equation/equation_34.png b/src/plugins/sensor_fusion/design/documentation/equation/equation_34.png similarity index 100% rename from src/sensor_fusion/design/documentation/equation/equation_34.png rename to src/plugins/sensor_fusion/design/documentation/equation/equation_34.png diff --git a/src/sensor_fusion/design/documentation/equation/equation_35.png b/src/plugins/sensor_fusion/design/documentation/equation/equation_35.png similarity index 100% rename from src/sensor_fusion/design/documentation/equation/equation_35.png rename to src/plugins/sensor_fusion/design/documentation/equation/equation_35.png diff --git a/src/sensor_fusion/design/documentation/equation/equation_36.png b/src/plugins/sensor_fusion/design/documentation/equation/equation_36.png similarity index 100% rename from src/sensor_fusion/design/documentation/equation/equation_36.png rename to src/plugins/sensor_fusion/design/documentation/equation/equation_36.png diff --git a/src/sensor_fusion/design/documentation/equation/equation_37.png b/src/plugins/sensor_fusion/design/documentation/equation/equation_37.png similarity index 100% rename from src/sensor_fusion/design/documentation/equation/equation_37.png rename to src/plugins/sensor_fusion/design/documentation/equation/equation_37.png diff --git a/src/sensor_fusion/design/documentation/equation/equation_38.png b/src/plugins/sensor_fusion/design/documentation/equation/equation_38.png similarity index 100% rename from src/sensor_fusion/design/documentation/equation/equation_38.png rename to src/plugins/sensor_fusion/design/documentation/equation/equation_38.png diff --git a/src/sensor_fusion/design/documentation/equation/equation_39.png b/src/plugins/sensor_fusion/design/documentation/equation/equation_39.png similarity index 100% rename from src/sensor_fusion/design/documentation/equation/equation_39.png rename to src/plugins/sensor_fusion/design/documentation/equation/equation_39.png diff --git a/src/sensor_fusion/design/documentation/equation/equation_4.png b/src/plugins/sensor_fusion/design/documentation/equation/equation_4.png similarity index 100% rename from src/sensor_fusion/design/documentation/equation/equation_4.png rename to src/plugins/sensor_fusion/design/documentation/equation/equation_4.png diff --git a/src/sensor_fusion/design/documentation/equation/equation_40.png b/src/plugins/sensor_fusion/design/documentation/equation/equation_40.png similarity index 100% rename from src/sensor_fusion/design/documentation/equation/equation_40.png rename to src/plugins/sensor_fusion/design/documentation/equation/equation_40.png diff --git a/src/sensor_fusion/design/documentation/equation/equation_5.png b/src/plugins/sensor_fusion/design/documentation/equation/equation_5.png similarity index 100% rename from src/sensor_fusion/design/documentation/equation/equation_5.png rename to src/plugins/sensor_fusion/design/documentation/equation/equation_5.png diff --git a/src/sensor_fusion/design/documentation/equation/equation_6.png b/src/plugins/sensor_fusion/design/documentation/equation/equation_6.png similarity index 100% rename from src/sensor_fusion/design/documentation/equation/equation_6.png rename to src/plugins/sensor_fusion/design/documentation/equation/equation_6.png diff --git a/src/sensor_fusion/design/documentation/equation/equation_7.png b/src/plugins/sensor_fusion/design/documentation/equation/equation_7.png similarity index 100% rename from src/sensor_fusion/design/documentation/equation/equation_7.png rename to src/plugins/sensor_fusion/design/documentation/equation/equation_7.png diff --git a/src/sensor_fusion/design/documentation/equation/equation_8.png b/src/plugins/sensor_fusion/design/documentation/equation/equation_8.png similarity index 100% rename from src/sensor_fusion/design/documentation/equation/equation_8.png rename to src/plugins/sensor_fusion/design/documentation/equation/equation_8.png diff --git a/src/sensor_fusion/design/documentation/equation/equation_9.png b/src/plugins/sensor_fusion/design/documentation/equation/equation_9.png similarity index 100% rename from src/sensor_fusion/design/documentation/equation/equation_9.png rename to src/plugins/sensor_fusion/design/documentation/equation/equation_9.png diff --git a/src/sensor_fusion/design/documentation/sensor_fusion.htm b/src/plugins/sensor_fusion/design/documentation/sensor_fusion.htm similarity index 100% rename from src/sensor_fusion/design/documentation/sensor_fusion.htm rename to src/plugins/sensor_fusion/design/documentation/sensor_fusion.htm diff --git a/src/sensor_fusion/design/lib/axis_rot2quat.m b/src/plugins/sensor_fusion/design/lib/axis_rot2quat.m similarity index 100% rename from src/sensor_fusion/design/lib/axis_rot2quat.m rename to src/plugins/sensor_fusion/design/lib/axis_rot2quat.m diff --git a/src/sensor_fusion/design/lib/estimate_gaming_rv.m b/src/plugins/sensor_fusion/design/lib/estimate_gaming_rv.m similarity index 100% rename from src/sensor_fusion/design/lib/estimate_gaming_rv.m rename to src/plugins/sensor_fusion/design/lib/estimate_gaming_rv.m diff --git a/src/sensor_fusion/design/lib/estimate_geomagnetic_rv.m b/src/plugins/sensor_fusion/design/lib/estimate_geomagnetic_rv.m similarity index 100% rename from src/sensor_fusion/design/lib/estimate_geomagnetic_rv.m rename to src/plugins/sensor_fusion/design/lib/estimate_geomagnetic_rv.m diff --git a/src/sensor_fusion/design/lib/estimate_gravity.m b/src/plugins/sensor_fusion/design/lib/estimate_gravity.m similarity index 100% rename from src/sensor_fusion/design/lib/estimate_gravity.m rename to src/plugins/sensor_fusion/design/lib/estimate_gravity.m diff --git a/src/sensor_fusion/design/lib/estimate_linear_acceleration.m b/src/plugins/sensor_fusion/design/lib/estimate_linear_acceleration.m similarity index 100% rename from src/sensor_fusion/design/lib/estimate_linear_acceleration.m rename to src/plugins/sensor_fusion/design/lib/estimate_linear_acceleration.m diff --git a/src/sensor_fusion/design/lib/estimate_orientation.m b/src/plugins/sensor_fusion/design/lib/estimate_orientation.m similarity index 100% rename from src/sensor_fusion/design/lib/estimate_orientation.m rename to src/plugins/sensor_fusion/design/lib/estimate_orientation.m diff --git a/src/sensor_fusion/design/lib/euler2quat.m b/src/plugins/sensor_fusion/design/lib/euler2quat.m similarity index 100% rename from src/sensor_fusion/design/lib/euler2quat.m rename to src/plugins/sensor_fusion/design/lib/euler2quat.m diff --git a/src/sensor_fusion/design/lib/quat2euler.m b/src/plugins/sensor_fusion/design/lib/quat2euler.m similarity index 100% rename from src/sensor_fusion/design/lib/quat2euler.m rename to src/plugins/sensor_fusion/design/lib/quat2euler.m diff --git a/src/sensor_fusion/design/lib/quat2rot_mat.m b/src/plugins/sensor_fusion/design/lib/quat2rot_mat.m similarity index 100% rename from src/sensor_fusion/design/lib/quat2rot_mat.m rename to src/plugins/sensor_fusion/design/lib/quat2rot_mat.m diff --git a/src/sensor_fusion/design/lib/quat_prod.m b/src/plugins/sensor_fusion/design/lib/quat_prod.m similarity index 100% rename from src/sensor_fusion/design/lib/quat_prod.m rename to src/plugins/sensor_fusion/design/lib/quat_prod.m diff --git a/src/sensor_fusion/design/lib/rot_mat2quat.m b/src/plugins/sensor_fusion/design/lib/rot_mat2quat.m similarity index 100% rename from src/sensor_fusion/design/lib/rot_mat2quat.m rename to src/plugins/sensor_fusion/design/lib/rot_mat2quat.m diff --git a/src/sensor_fusion/design/lib/sf_pedometer.m b/src/plugins/sensor_fusion/design/lib/sf_pedometer.m similarity index 100% rename from src/sensor_fusion/design/lib/sf_pedometer.m rename to src/plugins/sensor_fusion/design/lib/sf_pedometer.m diff --git a/src/sensor_fusion/design/readme b/src/plugins/sensor_fusion/design/readme similarity index 100% rename from src/sensor_fusion/design/readme rename to src/plugins/sensor_fusion/design/readme diff --git a/src/sensor_fusion/design/sf_gaming_rv.m b/src/plugins/sensor_fusion/design/sf_gaming_rv.m similarity index 100% rename from src/sensor_fusion/design/sf_gaming_rv.m rename to src/plugins/sensor_fusion/design/sf_gaming_rv.m diff --git a/src/sensor_fusion/design/sf_geomagnetic_rv.m b/src/plugins/sensor_fusion/design/sf_geomagnetic_rv.m similarity index 100% rename from src/sensor_fusion/design/sf_geomagnetic_rv.m rename to src/plugins/sensor_fusion/design/sf_geomagnetic_rv.m diff --git a/src/sensor_fusion/design/sf_gravity.m b/src/plugins/sensor_fusion/design/sf_gravity.m similarity index 100% rename from src/sensor_fusion/design/sf_gravity.m rename to src/plugins/sensor_fusion/design/sf_gravity.m diff --git a/src/sensor_fusion/design/sf_linear_acceleration.m b/src/plugins/sensor_fusion/design/sf_linear_acceleration.m similarity index 100% rename from src/sensor_fusion/design/sf_linear_acceleration.m rename to src/plugins/sensor_fusion/design/sf_linear_acceleration.m diff --git a/src/sensor_fusion/design/sf_orientation.m b/src/plugins/sensor_fusion/design/sf_orientation.m similarity index 100% rename from src/sensor_fusion/design/sf_orientation.m rename to src/plugins/sensor_fusion/design/sf_orientation.m diff --git a/src/sensor_fusion/euler_angles.cpp b/src/plugins/sensor_fusion/euler_angles.cpp similarity index 100% rename from src/sensor_fusion/euler_angles.cpp rename to src/plugins/sensor_fusion/euler_angles.cpp diff --git a/src/sensor_fusion/euler_angles.h b/src/plugins/sensor_fusion/euler_angles.h similarity index 100% rename from src/sensor_fusion/euler_angles.h rename to src/plugins/sensor_fusion/euler_angles.h diff --git a/src/sensor_fusion/matrix.cpp b/src/plugins/sensor_fusion/matrix.cpp similarity index 100% rename from src/sensor_fusion/matrix.cpp rename to src/plugins/sensor_fusion/matrix.cpp diff --git a/src/sensor_fusion/matrix.h b/src/plugins/sensor_fusion/matrix.h similarity index 100% rename from src/sensor_fusion/matrix.h rename to src/plugins/sensor_fusion/matrix.h diff --git a/src/sensor_fusion/orientation_filter.cpp b/src/plugins/sensor_fusion/orientation_filter.cpp similarity index 100% rename from src/sensor_fusion/orientation_filter.cpp rename to src/plugins/sensor_fusion/orientation_filter.cpp diff --git a/src/sensor_fusion/orientation_filter.h b/src/plugins/sensor_fusion/orientation_filter.h similarity index 100% rename from src/sensor_fusion/orientation_filter.h rename to src/plugins/sensor_fusion/orientation_filter.h diff --git a/src/sensor_fusion/quaternion.cpp b/src/plugins/sensor_fusion/quaternion.cpp similarity index 100% rename from src/sensor_fusion/quaternion.cpp rename to src/plugins/sensor_fusion/quaternion.cpp diff --git a/src/sensor_fusion/quaternion.h b/src/plugins/sensor_fusion/quaternion.h similarity index 100% rename from src/sensor_fusion/quaternion.h rename to src/plugins/sensor_fusion/quaternion.h diff --git a/src/sensor_fusion/rotation_matrix.cpp b/src/plugins/sensor_fusion/rotation_matrix.cpp similarity index 100% rename from src/sensor_fusion/rotation_matrix.cpp rename to src/plugins/sensor_fusion/rotation_matrix.cpp diff --git a/src/sensor_fusion/rotation_matrix.h b/src/plugins/sensor_fusion/rotation_matrix.h similarity index 100% rename from src/sensor_fusion/rotation_matrix.h rename to src/plugins/sensor_fusion/rotation_matrix.h diff --git a/src/sensor_fusion/sensor_data.cpp b/src/plugins/sensor_fusion/sensor_data.cpp similarity index 100% rename from src/sensor_fusion/sensor_data.cpp rename to src/plugins/sensor_fusion/sensor_data.cpp diff --git a/src/sensor_fusion/sensor_data.h b/src/plugins/sensor_fusion/sensor_data.h similarity index 100% rename from src/sensor_fusion/sensor_data.h rename to src/plugins/sensor_fusion/sensor_data.h diff --git a/src/sensor_fusion/test/gravity_sensor.cpp b/src/plugins/sensor_fusion/test/gravity_sensor.cpp similarity index 100% rename from src/sensor_fusion/test/gravity_sensor.cpp rename to src/plugins/sensor_fusion/test/gravity_sensor.cpp diff --git a/src/sensor_fusion/test/gravity_sensor.h b/src/plugins/sensor_fusion/test/gravity_sensor.h similarity index 100% rename from src/sensor_fusion/test/gravity_sensor.h rename to src/plugins/sensor_fusion/test/gravity_sensor.h diff --git a/src/sensor_fusion/test/linear_acceleration_sensor.cpp b/src/plugins/sensor_fusion/test/linear_acceleration_sensor.cpp similarity index 100% rename from src/sensor_fusion/test/linear_acceleration_sensor.cpp rename to src/plugins/sensor_fusion/test/linear_acceleration_sensor.cpp diff --git a/src/sensor_fusion/test/linear_acceleration_sensor.h b/src/plugins/sensor_fusion/test/linear_acceleration_sensor.h similarity index 100% rename from src/sensor_fusion/test/linear_acceleration_sensor.h rename to src/plugins/sensor_fusion/test/linear_acceleration_sensor.h diff --git a/src/sensor_fusion/test/orientation_sensor.cpp b/src/plugins/sensor_fusion/test/orientation_sensor.cpp similarity index 100% rename from src/sensor_fusion/test/orientation_sensor.cpp rename to src/plugins/sensor_fusion/test/orientation_sensor.cpp diff --git a/src/sensor_fusion/test/orientation_sensor.h b/src/plugins/sensor_fusion/test/orientation_sensor.h similarity index 100% rename from src/sensor_fusion/test/orientation_sensor.h rename to src/plugins/sensor_fusion/test/orientation_sensor.h diff --git a/src/sensor_fusion/test/test_projects/euler_angles_test/.cproject b/src/plugins/sensor_fusion/test/test_projects/euler_angles_test/.cproject similarity index 100% rename from src/sensor_fusion/test/test_projects/euler_angles_test/.cproject rename to src/plugins/sensor_fusion/test/test_projects/euler_angles_test/.cproject diff --git a/src/sensor_fusion/test/test_projects/euler_angles_test/.project b/src/plugins/sensor_fusion/test/test_projects/euler_angles_test/.project similarity index 100% rename from src/sensor_fusion/test/test_projects/euler_angles_test/.project rename to src/plugins/sensor_fusion/test/test_projects/euler_angles_test/.project diff --git a/src/sensor_fusion/test/test_projects/euler_angles_test/euler_angles_main.cpp b/src/plugins/sensor_fusion/test/test_projects/euler_angles_test/euler_angles_main.cpp similarity index 100% rename from src/sensor_fusion/test/test_projects/euler_angles_test/euler_angles_main.cpp rename to src/plugins/sensor_fusion/test/test_projects/euler_angles_test/euler_angles_main.cpp diff --git a/src/sensor_fusion/test/test_projects/gravity_sensor_test/.cproject b/src/plugins/sensor_fusion/test/test_projects/gravity_sensor_test/.cproject similarity index 100% rename from src/sensor_fusion/test/test_projects/gravity_sensor_test/.cproject rename to src/plugins/sensor_fusion/test/test_projects/gravity_sensor_test/.cproject diff --git a/src/sensor_fusion/test/test_projects/gravity_sensor_test/.project b/src/plugins/sensor_fusion/test/test_projects/gravity_sensor_test/.project similarity index 100% rename from src/sensor_fusion/test/test_projects/gravity_sensor_test/.project rename to src/plugins/sensor_fusion/test/test_projects/gravity_sensor_test/.project diff --git a/src/sensor_fusion/test/test_projects/gravity_sensor_test/gravity_sensor_main.cpp b/src/plugins/sensor_fusion/test/test_projects/gravity_sensor_test/gravity_sensor_main.cpp similarity index 100% rename from src/sensor_fusion/test/test_projects/gravity_sensor_test/gravity_sensor_main.cpp rename to src/plugins/sensor_fusion/test/test_projects/gravity_sensor_test/gravity_sensor_main.cpp diff --git a/src/sensor_fusion/test/test_projects/linear_acceleration_sensor_test/.cproject b/src/plugins/sensor_fusion/test/test_projects/linear_acceleration_sensor_test/.cproject similarity index 100% rename from src/sensor_fusion/test/test_projects/linear_acceleration_sensor_test/.cproject rename to src/plugins/sensor_fusion/test/test_projects/linear_acceleration_sensor_test/.cproject diff --git a/src/sensor_fusion/test/test_projects/linear_acceleration_sensor_test/.project b/src/plugins/sensor_fusion/test/test_projects/linear_acceleration_sensor_test/.project similarity index 100% rename from src/sensor_fusion/test/test_projects/linear_acceleration_sensor_test/.project rename to src/plugins/sensor_fusion/test/test_projects/linear_acceleration_sensor_test/.project diff --git a/src/sensor_fusion/test/test_projects/linear_acceleration_sensor_test/linear_acceleration_sensor_main.cpp b/src/plugins/sensor_fusion/test/test_projects/linear_acceleration_sensor_test/linear_acceleration_sensor_main.cpp similarity index 100% rename from src/sensor_fusion/test/test_projects/linear_acceleration_sensor_test/linear_acceleration_sensor_main.cpp rename to src/plugins/sensor_fusion/test/test_projects/linear_acceleration_sensor_test/linear_acceleration_sensor_main.cpp diff --git a/src/sensor_fusion/test/test_projects/matrix_test/.cproject b/src/plugins/sensor_fusion/test/test_projects/matrix_test/.cproject similarity index 100% rename from src/sensor_fusion/test/test_projects/matrix_test/.cproject rename to src/plugins/sensor_fusion/test/test_projects/matrix_test/.cproject diff --git a/src/sensor_fusion/test/test_projects/matrix_test/.project b/src/plugins/sensor_fusion/test/test_projects/matrix_test/.project similarity index 100% rename from src/sensor_fusion/test/test_projects/matrix_test/.project rename to src/plugins/sensor_fusion/test/test_projects/matrix_test/.project diff --git a/src/sensor_fusion/test/test_projects/matrix_test/matrix_main.cpp b/src/plugins/sensor_fusion/test/test_projects/matrix_test/matrix_main.cpp similarity index 100% rename from src/sensor_fusion/test/test_projects/matrix_test/matrix_main.cpp rename to src/plugins/sensor_fusion/test/test_projects/matrix_test/matrix_main.cpp diff --git a/src/sensor_fusion/test/test_projects/orientation_sensor_test/.cproject b/src/plugins/sensor_fusion/test/test_projects/orientation_sensor_test/.cproject similarity index 100% rename from src/sensor_fusion/test/test_projects/orientation_sensor_test/.cproject rename to src/plugins/sensor_fusion/test/test_projects/orientation_sensor_test/.cproject diff --git a/src/sensor_fusion/test/test_projects/orientation_sensor_test/.project b/src/plugins/sensor_fusion/test/test_projects/orientation_sensor_test/.project similarity index 100% rename from src/sensor_fusion/test/test_projects/orientation_sensor_test/.project rename to src/plugins/sensor_fusion/test/test_projects/orientation_sensor_test/.project diff --git a/src/sensor_fusion/test/test_projects/orientation_sensor_test/orientation_sensor_main.cpp b/src/plugins/sensor_fusion/test/test_projects/orientation_sensor_test/orientation_sensor_main.cpp similarity index 100% rename from src/sensor_fusion/test/test_projects/orientation_sensor_test/orientation_sensor_main.cpp rename to src/plugins/sensor_fusion/test/test_projects/orientation_sensor_test/orientation_sensor_main.cpp diff --git a/src/sensor_fusion/test/test_projects/quaternion_test/.cproject b/src/plugins/sensor_fusion/test/test_projects/quaternion_test/.cproject similarity index 100% rename from src/sensor_fusion/test/test_projects/quaternion_test/.cproject rename to src/plugins/sensor_fusion/test/test_projects/quaternion_test/.cproject diff --git a/src/sensor_fusion/test/test_projects/quaternion_test/.project b/src/plugins/sensor_fusion/test/test_projects/quaternion_test/.project similarity index 100% rename from src/sensor_fusion/test/test_projects/quaternion_test/.project rename to src/plugins/sensor_fusion/test/test_projects/quaternion_test/.project diff --git a/src/sensor_fusion/test/test_projects/quaternion_test/quaternion_main.cpp b/src/plugins/sensor_fusion/test/test_projects/quaternion_test/quaternion_main.cpp similarity index 100% rename from src/sensor_fusion/test/test_projects/quaternion_test/quaternion_main.cpp rename to src/plugins/sensor_fusion/test/test_projects/quaternion_test/quaternion_main.cpp diff --git a/src/sensor_fusion/test/test_projects/rotation_matrix_test/.cproject b/src/plugins/sensor_fusion/test/test_projects/rotation_matrix_test/.cproject similarity index 100% rename from src/sensor_fusion/test/test_projects/rotation_matrix_test/.cproject rename to src/plugins/sensor_fusion/test/test_projects/rotation_matrix_test/.cproject diff --git a/src/sensor_fusion/test/test_projects/rotation_matrix_test/.project b/src/plugins/sensor_fusion/test/test_projects/rotation_matrix_test/.project similarity index 100% rename from src/sensor_fusion/test/test_projects/rotation_matrix_test/.project rename to src/plugins/sensor_fusion/test/test_projects/rotation_matrix_test/.project diff --git a/src/sensor_fusion/test/test_projects/rotation_matrix_test/rotation_matrix_main.cpp b/src/plugins/sensor_fusion/test/test_projects/rotation_matrix_test/rotation_matrix_main.cpp similarity index 100% rename from src/sensor_fusion/test/test_projects/rotation_matrix_test/rotation_matrix_main.cpp rename to src/plugins/sensor_fusion/test/test_projects/rotation_matrix_test/rotation_matrix_main.cpp diff --git a/src/sensor_fusion/test/test_projects/sensor_data_test/.cproject b/src/plugins/sensor_fusion/test/test_projects/sensor_data_test/.cproject similarity index 100% rename from src/sensor_fusion/test/test_projects/sensor_data_test/.cproject rename to src/plugins/sensor_fusion/test/test_projects/sensor_data_test/.cproject diff --git a/src/sensor_fusion/test/test_projects/sensor_data_test/.project b/src/plugins/sensor_fusion/test/test_projects/sensor_data_test/.project similarity index 100% rename from src/sensor_fusion/test/test_projects/sensor_data_test/.project rename to src/plugins/sensor_fusion/test/test_projects/sensor_data_test/.project diff --git a/src/sensor_fusion/test/test_projects/sensor_data_test/sensor_data_main.cpp b/src/plugins/sensor_fusion/test/test_projects/sensor_data_test/sensor_data_main.cpp similarity index 100% rename from src/sensor_fusion/test/test_projects/sensor_data_test/sensor_data_main.cpp rename to src/plugins/sensor_fusion/test/test_projects/sensor_data_test/sensor_data_main.cpp diff --git a/src/sensor_fusion/test/test_projects/vector_test/.cproject b/src/plugins/sensor_fusion/test/test_projects/vector_test/.cproject similarity index 100% rename from src/sensor_fusion/test/test_projects/vector_test/.cproject rename to src/plugins/sensor_fusion/test/test_projects/vector_test/.cproject diff --git a/src/sensor_fusion/test/test_projects/vector_test/.project b/src/plugins/sensor_fusion/test/test_projects/vector_test/.project similarity index 100% rename from src/sensor_fusion/test/test_projects/vector_test/.project rename to src/plugins/sensor_fusion/test/test_projects/vector_test/.project diff --git a/src/sensor_fusion/test/test_projects/vector_test/vector_main.cpp b/src/plugins/sensor_fusion/test/test_projects/vector_test/vector_main.cpp similarity index 100% rename from src/sensor_fusion/test/test_projects/vector_test/vector_main.cpp rename to src/plugins/sensor_fusion/test/test_projects/vector_test/vector_main.cpp diff --git a/src/sensor_fusion/vector.cpp b/src/plugins/sensor_fusion/vector.cpp similarity index 100% rename from src/sensor_fusion/vector.cpp rename to src/plugins/sensor_fusion/vector.cpp diff --git a/src/sensor_fusion/vector.h b/src/plugins/sensor_fusion/vector.h similarity index 100% rename from src/sensor_fusion/vector.h rename to src/plugins/sensor_fusion/vector.h diff --git a/src/temperature/CMakeLists.txt b/src/plugins/temperature/CMakeLists.txt similarity index 100% rename from src/temperature/CMakeLists.txt rename to src/plugins/temperature/CMakeLists.txt diff --git a/src/temperature/temperature_sensor.cpp b/src/plugins/temperature/temperature_sensor.cpp similarity index 100% rename from src/temperature/temperature_sensor.cpp rename to src/plugins/temperature/temperature_sensor.cpp diff --git a/src/temperature/temperature_sensor.h b/src/plugins/temperature/temperature_sensor.h similarity index 100% rename from src/temperature/temperature_sensor.h rename to src/plugins/temperature/temperature_sensor.h diff --git a/src/temperature/temperature_sensor_hal.cpp b/src/plugins/temperature/temperature_sensor_hal.cpp similarity index 100% rename from src/temperature/temperature_sensor_hal.cpp rename to src/plugins/temperature/temperature_sensor_hal.cpp diff --git a/src/temperature/temperature_sensor_hal.h b/src/plugins/temperature/temperature_sensor_hal.h similarity index 100% rename from src/temperature/temperature_sensor_hal.h rename to src/plugins/temperature/temperature_sensor_hal.h diff --git a/src/tilt/CMakeLists.txt b/src/plugins/tilt/CMakeLists.txt similarity index 89% rename from src/tilt/CMakeLists.txt rename to src/plugins/tilt/CMakeLists.txt index 44e6a1a..6bd9b97 100755 --- a/src/tilt/CMakeLists.txt +++ b/src/plugins/tilt/CMakeLists.txt @@ -5,7 +5,7 @@ SET(SENSOR_NAME tilt_sensor) include_directories(${CMAKE_CURRENT_SOURCE_DIR}) include_directories(${CMAKE_SOURCE_DIR}/src/libsensord) -include_directories(${CMAKE_SOURCE_DIR}/src/sensor_fusion) +include_directories(${CMAKE_SOURCE_DIR}/src/plugins/sensor_fusion) FOREACH(flag ${tilt_pkgs_LDFLAGS}) SET(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} ${flag}") diff --git a/src/tilt/tilt_sensor.cpp b/src/plugins/tilt/tilt_sensor.cpp similarity index 100% rename from src/tilt/tilt_sensor.cpp rename to src/plugins/tilt/tilt_sensor.cpp diff --git a/src/tilt/tilt_sensor.h b/src/plugins/tilt/tilt_sensor.h similarity index 100% rename from src/tilt/tilt_sensor.h rename to src/plugins/tilt/tilt_sensor.h diff --git a/src/ultraviolet/CMakeLists.txt b/src/plugins/ultraviolet/CMakeLists.txt similarity index 100% rename from src/ultraviolet/CMakeLists.txt rename to src/plugins/ultraviolet/CMakeLists.txt diff --git a/src/ultraviolet/ultraviolet_sensor.cpp b/src/plugins/ultraviolet/ultraviolet_sensor.cpp similarity index 100% rename from src/ultraviolet/ultraviolet_sensor.cpp rename to src/plugins/ultraviolet/ultraviolet_sensor.cpp diff --git a/src/ultraviolet/ultraviolet_sensor.h b/src/plugins/ultraviolet/ultraviolet_sensor.h similarity index 100% rename from src/ultraviolet/ultraviolet_sensor.h rename to src/plugins/ultraviolet/ultraviolet_sensor.h diff --git a/src/ultraviolet/ultraviolet_sensor_hal.cpp b/src/plugins/ultraviolet/ultraviolet_sensor_hal.cpp similarity index 100% rename from src/ultraviolet/ultraviolet_sensor_hal.cpp rename to src/plugins/ultraviolet/ultraviolet_sensor_hal.cpp diff --git a/src/ultraviolet/ultraviolet_sensor_hal.h b/src/plugins/ultraviolet/ultraviolet_sensor_hal.h similarity index 100% rename from src/ultraviolet/ultraviolet_sensor_hal.h rename to src/plugins/ultraviolet/ultraviolet_sensor_hal.h diff --git a/src/uncal_gyro/CMakeLists.txt b/src/plugins/uncal_gyro/CMakeLists.txt similarity index 90% rename from src/uncal_gyro/CMakeLists.txt rename to src/plugins/uncal_gyro/CMakeLists.txt index 12d5b3d..056962a 100644 --- a/src/uncal_gyro/CMakeLists.txt +++ b/src/plugins/uncal_gyro/CMakeLists.txt @@ -5,7 +5,7 @@ SET(SENSOR_NAME uncal_gyro_sensor) include_directories(${CMAKE_CURRENT_SOURCE_DIR}) include_directories(${CMAKE_SOURCE_DIR}/src/libsensord) -include_directories(${CMAKE_SOURCE_DIR}/src/sensor_fusion) +include_directories(${CMAKE_SOURCE_DIR}/src/plugins/sensor_fusion) FOREACH(flag ${gravity_pkgs_LDFLAGS}) SET(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} ${flag}") diff --git a/src/uncal_gyro/uncal_gyro_sensor.cpp b/src/plugins/uncal_gyro/uncal_gyro_sensor.cpp similarity index 100% rename from src/uncal_gyro/uncal_gyro_sensor.cpp rename to src/plugins/uncal_gyro/uncal_gyro_sensor.cpp diff --git a/src/uncal_gyro/uncal_gyro_sensor.h b/src/plugins/uncal_gyro/uncal_gyro_sensor.h similarity index 100% rename from src/uncal_gyro/uncal_gyro_sensor.h rename to src/plugins/uncal_gyro/uncal_gyro_sensor.h diff --git a/src/shared/CMakeLists.txt b/src/shared/CMakeLists.txt index 45b6af6..91c6b32 100644 --- a/src/shared/CMakeLists.txt +++ b/src/shared/CMakeLists.txt @@ -83,4 +83,28 @@ install(FILES sensor_common.h DESTINATION ${CMAKE_INSTALL_INCLUDEDIR}/sensor ) +install(FILES sensor_accel.h DESTINATION ${CMAKE_INSTALL_INCLUDEDIR}/sensor/) +install(FILES sensor_geomag.h DESTINATION ${CMAKE_INSTALL_INCLUDEDIR}/sensor/) +install(FILES sensor_light.h DESTINATION ${CMAKE_INSTALL_INCLUDEDIR}/sensor/) +install(FILES sensor_proxi.h DESTINATION ${CMAKE_INSTALL_INCLUDEDIR}/sensor/) +install(FILES sensor_gyro.h DESTINATION ${CMAKE_INSTALL_INCLUDEDIR}/sensor/) +install(FILES sensor_pressure.h DESTINATION ${CMAKE_INSTALL_INCLUDEDIR}/sensor/) +install(FILES sensor_context.h DESTINATION ${CMAKE_INSTALL_INCLUDEDIR}/sensor/) +install(FILES sensor_auto_rotation.h DESTINATION ${CMAKE_INSTALL_INCLUDEDIR}/sensor/) +install(FILES sensor_gravity.h DESTINATION ${CMAKE_INSTALL_INCLUDEDIR}/sensor/) +install(FILES sensor_linear_accel.h DESTINATION ${CMAKE_INSTALL_INCLUDEDIR}/sensor/) +install(FILES sensor_orientation.h DESTINATION ${CMAKE_INSTALL_INCLUDEDIR}/sensor/) +install(FILES sensor_tilt.h DESTINATION ${CMAKE_INSTALL_INCLUDEDIR}/sensor/) +install(FILES sensor_rv.h DESTINATION ${CMAKE_INSTALL_INCLUDEDIR}/sensor/) +install(FILES sensor_geomagnetic_rv.h DESTINATION ${CMAKE_INSTALL_INCLUDEDIR}/sensor/) +install(FILES sensor_gaming_rv.h DESTINATION ${CMAKE_INSTALL_INCLUDEDIR}/sensor/) +install(FILES sensor_temperature.h DESTINATION ${CMAKE_INSTALL_INCLUDEDIR}/sensor/) +install(FILES sensor_motion.h DESTINATION ${CMAKE_INSTALL_INCLUDEDIR}/sensor/) +install(FILES sensor_fusion.h DESTINATION ${CMAKE_INSTALL_INCLUDEDIR}/sensor/) +install(FILES sensor_ultraviolet.h DESTINATION ${CMAKE_INSTALL_INCLUDEDIR}/sensor/) +install(FILES sensor_bio_led_red.h DESTINATION ${CMAKE_INSTALL_INCLUDEDIR}/sensor/) +install(FILES sensor_deprecated.h DESTINATION ${CMAKE_INSTALL_INCLUDEDIR}/sensor/) +install(FILES sensor_uncal_gyro.h DESTINATION ${CMAKE_INSTALL_INCLUDEDIR}/sensor/) +install(FILES sensor_internal_deprecated.h DESTINATION ${CMAKE_INSTALL_INCLUDEDIR}/sensor/) +install(FILES sensor_internal.h DESTINATION ${CMAKE_INSTALL_INCLUDEDIR}/sensor/) diff --git a/src/libsensord/sensor_accel.h b/src/shared/sensor_accel.h similarity index 100% rename from src/libsensord/sensor_accel.h rename to src/shared/sensor_accel.h diff --git a/src/libsensord/sensor_auto_rotation.h b/src/shared/sensor_auto_rotation.h similarity index 100% rename from src/libsensord/sensor_auto_rotation.h rename to src/shared/sensor_auto_rotation.h diff --git a/src/libsensord/sensor_bio_led_red.h b/src/shared/sensor_bio_led_red.h similarity index 100% rename from src/libsensord/sensor_bio_led_red.h rename to src/shared/sensor_bio_led_red.h diff --git a/src/libsensord/sensor_context.h b/src/shared/sensor_context.h similarity index 100% rename from src/libsensord/sensor_context.h rename to src/shared/sensor_context.h diff --git a/src/libsensord/sensor_deprecated.h b/src/shared/sensor_deprecated.h similarity index 100% rename from src/libsensord/sensor_deprecated.h rename to src/shared/sensor_deprecated.h diff --git a/src/libsensord/sensor_fusion.h b/src/shared/sensor_fusion.h similarity index 100% rename from src/libsensord/sensor_fusion.h rename to src/shared/sensor_fusion.h diff --git a/src/libsensord/sensor_gaming_rv.h b/src/shared/sensor_gaming_rv.h similarity index 100% rename from src/libsensord/sensor_gaming_rv.h rename to src/shared/sensor_gaming_rv.h diff --git a/src/libsensord/sensor_geomag.h b/src/shared/sensor_geomag.h similarity index 100% rename from src/libsensord/sensor_geomag.h rename to src/shared/sensor_geomag.h diff --git a/src/libsensord/sensor_geomagnetic_rv.h b/src/shared/sensor_geomagnetic_rv.h similarity index 100% rename from src/libsensord/sensor_geomagnetic_rv.h rename to src/shared/sensor_geomagnetic_rv.h diff --git a/src/libsensord/sensor_gravity.h b/src/shared/sensor_gravity.h similarity index 100% rename from src/libsensord/sensor_gravity.h rename to src/shared/sensor_gravity.h diff --git a/src/libsensord/sensor_gyro.h b/src/shared/sensor_gyro.h similarity index 100% rename from src/libsensord/sensor_gyro.h rename to src/shared/sensor_gyro.h diff --git a/src/libsensord/sensor_internal.h b/src/shared/sensor_internal.h similarity index 100% rename from src/libsensord/sensor_internal.h rename to src/shared/sensor_internal.h diff --git a/src/libsensord/sensor_internal_deprecated.h b/src/shared/sensor_internal_deprecated.h similarity index 100% rename from src/libsensord/sensor_internal_deprecated.h rename to src/shared/sensor_internal_deprecated.h diff --git a/src/libsensord/sensor_light.h b/src/shared/sensor_light.h similarity index 100% rename from src/libsensord/sensor_light.h rename to src/shared/sensor_light.h diff --git a/src/libsensord/sensor_linear_accel.h b/src/shared/sensor_linear_accel.h similarity index 100% rename from src/libsensord/sensor_linear_accel.h rename to src/shared/sensor_linear_accel.h diff --git a/src/libsensord/sensor_motion.h b/src/shared/sensor_motion.h similarity index 100% rename from src/libsensord/sensor_motion.h rename to src/shared/sensor_motion.h diff --git a/src/libsensord/sensor_orientation.h b/src/shared/sensor_orientation.h similarity index 100% rename from src/libsensord/sensor_orientation.h rename to src/shared/sensor_orientation.h diff --git a/src/libsensord/sensor_pressure.h b/src/shared/sensor_pressure.h similarity index 100% rename from src/libsensord/sensor_pressure.h rename to src/shared/sensor_pressure.h diff --git a/src/libsensord/sensor_proxi.h b/src/shared/sensor_proxi.h similarity index 100% rename from src/libsensord/sensor_proxi.h rename to src/shared/sensor_proxi.h diff --git a/src/libsensord/sensor_rv.h b/src/shared/sensor_rv.h similarity index 100% rename from src/libsensord/sensor_rv.h rename to src/shared/sensor_rv.h diff --git a/src/libsensord/sensor_temperature.h b/src/shared/sensor_temperature.h similarity index 100% rename from src/libsensord/sensor_temperature.h rename to src/shared/sensor_temperature.h diff --git a/src/libsensord/sensor_tilt.h b/src/shared/sensor_tilt.h similarity index 100% rename from src/libsensord/sensor_tilt.h rename to src/shared/sensor_tilt.h diff --git a/src/libsensord/sensor_ultraviolet.h b/src/shared/sensor_ultraviolet.h similarity index 100% rename from src/libsensord/sensor_ultraviolet.h rename to src/shared/sensor_ultraviolet.h diff --git a/src/libsensord/sensor_uncal_gyro.h b/src/shared/sensor_uncal_gyro.h similarity index 100% rename from src/libsensord/sensor_uncal_gyro.h rename to src/shared/sensor_uncal_gyro.h -- 2.7.4 From d0ee3f5336d7a9e849f60587612733af3d3e173b Mon Sep 17 00:00:00 2001 From: Ankur Date: Thu, 22 Oct 2015 12:45:08 +0530 Subject: [PATCH 12/16] Migrating some code to calculate event from proxi_sensor_hal to proxi_sensor This code basically checks if the value read is for far or near and based on that, assigns a enum value to the event. This code needs to be moved to proxi_sensor.cpp so that dependency between sensor_internal.h and proxi_sensor_hal.cpp is removed as proxi_sensor_hal.cpp needs to be moved to a separate repo later. signed-off-by:"Ankur Garg " Change-Id: I5a088dc8b5de42f445e7c948b9d539e02167e905 --- src/plugins/proxi/proxi_sensor.cpp | 11 +++++++++++ src/plugins/proxi/proxi_sensor.h | 13 +++++++++++++ src/plugins/proxi/proxi_sensor_hal.cpp | 13 ++----------- src/plugins/proxi/proxi_sensor_hal.h | 13 ------------- 4 files changed, 26 insertions(+), 24 deletions(-) diff --git a/src/plugins/proxi/proxi_sensor.cpp b/src/plugins/proxi/proxi_sensor.cpp index 05352d1..9486de7 100755 --- a/src/plugins/proxi/proxi_sensor.cpp +++ b/src/plugins/proxi/proxi_sensor.cpp @@ -82,6 +82,17 @@ bool proxi_sensor::process_event(void) AUTOLOCK(m_client_info_mutex); AUTOLOCK(m_mutex); + if (event.data.values[0] == PROXIMITY_NODE_STATE_FAR) { + INFO("PROXIMITY_STATE_FAR state occured\n"); + event.data.values[0] = PROXIMITY_STATE_FAR; + } else if (event.data.values[0] == PROXIMITY_NODE_STATE_NEAR) { + INFO("PROXIMITY_STATE_NEAR state occured\n"); + event.data.values[0] = PROXIMITY_STATE_NEAR; + } else { + ERR("PROXIMITY_STATE Unknown: %d\n",event.data.values[0]); + return false; + } + event.sensor_id = get_id(); if (get_client_cnt(PROXIMITY_DISTANCE_DATA_EVENT)) { event.event_type = PROXIMITY_DISTANCE_DATA_EVENT; diff --git a/src/plugins/proxi/proxi_sensor.h b/src/plugins/proxi/proxi_sensor.h index 9c3a009..97e5dba 100755 --- a/src/plugins/proxi/proxi_sensor.h +++ b/src/plugins/proxi/proxi_sensor.h @@ -26,6 +26,19 @@ class proxi_sensor : public physical_sensor { public: + enum proxi_node_state_event_t { //changed as per Input Event Method definitions + PROXIMITY_NODE_STATE_NEAR = 0, + PROXIMITY_NODE_STATE_FAR = 1, + PROXIMITY_NODE_STATE_UNKNOWN = -1, + }; + +// In case of IIO input method, use the following definitions as the values returned by sensor are different. +// enum proxi_node_state_event_t { //changed as per IIO Method definitions +// PROXIMITY_NODE_STATE_NEAR = 1, +// PROXIMITY_NODE_STATE_FAR = 2, +// PROXIMITY_NODE_STATE_UNKNOWN = 0, +// }; + proxi_sensor(); virtual ~proxi_sensor(); diff --git a/src/plugins/proxi/proxi_sensor_hal.cpp b/src/plugins/proxi/proxi_sensor_hal.cpp index 7358b08..0d82907 100755 --- a/src/plugins/proxi/proxi_sensor_hal.cpp +++ b/src/plugins/proxi/proxi_sensor_hal.cpp @@ -36,7 +36,7 @@ using std::ifstream; #define PROXI_CODE 0x0019 proxi_sensor_hal::proxi_sensor_hal() -: m_state(PROXIMITY_STATE_FAR) +: m_state(-1) , m_fired_time(0) , m_node_handle(-1) { @@ -149,16 +149,7 @@ bool proxi_sensor_hal::update_value(bool wait) DBG("read event, len : %d , type : %x , code : %x , value : %x", len, proxi_event.type, proxi_event.code, proxi_event.value); if ((proxi_event.type == EV_ABS) && (proxi_event.code == PROXI_CODE)) { AUTOLOCK(m_value_mutex); - if (proxi_event.value == PROXIMITY_NODE_STATE_FAR) { - INFO("PROXIMITY_STATE_FAR state occured\n"); - m_state = PROXIMITY_STATE_FAR; - } else if (proxi_event.value == PROXIMITY_NODE_STATE_NEAR) { - INFO("PROXIMITY_STATE_NEAR state occured\n"); - m_state = PROXIMITY_STATE_NEAR; - } else { - ERR("PROXIMITY_STATE Unknown: %d\n",proxi_event.value); - return false; - } + m_state = proxi_event.value; m_fired_time = sensor_hal::get_timestamp(&proxi_event.time); } else { return false; diff --git a/src/plugins/proxi/proxi_sensor_hal.h b/src/plugins/proxi/proxi_sensor_hal.h index a1cd3a1..d906ed6 100755 --- a/src/plugins/proxi/proxi_sensor_hal.h +++ b/src/plugins/proxi/proxi_sensor_hal.h @@ -25,19 +25,6 @@ class proxi_sensor_hal : public sensor_hal { public: - enum proxi_node_state_event_t { //changed as per Input Event Method definitions - PROXIMITY_NODE_STATE_NEAR = 0, - PROXIMITY_NODE_STATE_FAR = 1, - PROXIMITY_NODE_STATE_UNKNOWN = -1, - }; - -// In case of IIO input method, use the following definitions as the values returned by sensor are different. -// enum proxi_node_state_event_t { //changed as per IIO Method definitions -// PROXIMITY_NODE_STATE_NEAR = 1, -// PROXIMITY_NODE_STATE_FAR = 2, -// PROXIMITY_NODE_STATE_UNKNOWN = 0, -// }; - proxi_sensor_hal(); virtual ~proxi_sensor_hal(); std::string get_model_id(void); -- 2.7.4 From bc243427106021361dfa67543cd9c67e1691c80c Mon Sep 17 00:00:00 2001 From: Adarsh Shree Ram Date: Thu, 1 Oct 2015 15:07:50 +0530 Subject: [PATCH 13/16] Repositioning of header files for improving modularity The header files are repositioned to remove existing depencies between files that are to be added to a new repo. Change-Id: I94da30600627453dba0c60151627e2df7ff86d21 --- src/server/command_worker.h | 1 + src/shared/sensor_base.h | 1 + src/shared/sensor_hal.h | 1 - src/shared/sf_common.h | 2 -- 4 files changed, 2 insertions(+), 3 deletions(-) diff --git a/src/server/command_worker.h b/src/server/command_worker.h index 88000c8..8f7b7a8 100644 --- a/src/server/command_worker.h +++ b/src/server/command_worker.h @@ -25,6 +25,7 @@ #include #include #include +#include typedef std::multimap sensor_raw_data_map; void insert_priority_list(unsigned int); diff --git a/src/shared/sensor_base.h b/src/shared/sensor_base.h index 6eaf01d..90e27e9 100644 --- a/src/shared/sensor_base.h +++ b/src/shared/sensor_base.h @@ -27,6 +27,7 @@ #include #include #include +#include #include #include diff --git a/src/shared/sensor_hal.h b/src/shared/sensor_hal.h index c1afba5..7111276 100644 --- a/src/shared/sensor_hal.h +++ b/src/shared/sensor_hal.h @@ -23,7 +23,6 @@ #include #include #include -#include #include /* diff --git a/src/shared/sf_common.h b/src/shared/sf_common.h index 8c802de..381ac45 100644 --- a/src/shared/sf_common.h +++ b/src/shared/sf_common.h @@ -22,8 +22,6 @@ #if !defined(_SF_COMMON_H_) #define _SF_COMMON_H_ #include -#include -#include #include #include #include -- 2.7.4 From bbf6831077cce49339f8427df017cc19f8b769dc Mon Sep 17 00:00:00 2001 From: Ankur Date: Thu, 22 Oct 2015 14:41:12 +0530 Subject: [PATCH 14/16] Deleting unused file crw_lock.h and crw_lock.cpp this class was not being used anywhere. Change-Id: Ib379cb65bae7de550b470fe00b7f490c73e20bd0 --- src/shared/CMakeLists.txt | 2 -- src/shared/crw_lock.cpp | 74 ----------------------------------------------- src/shared/crw_lock.h | 46 ----------------------------- 3 files changed, 122 deletions(-) delete mode 100755 src/shared/crw_lock.cpp delete mode 100755 src/shared/crw_lock.h diff --git a/src/shared/CMakeLists.txt b/src/shared/CMakeLists.txt index 91c6b32..dc5c9b3 100644 --- a/src/shared/CMakeLists.txt +++ b/src/shared/CMakeLists.txt @@ -18,7 +18,6 @@ include_directories(${CMAKE_CURRENT_SOURCE_DIR}) include_directories(${CMAKE_SOURCE_DIR}/src/libsensord) add_library(sensord-server SHARED - crw_lock.cpp worker_thread.cpp cconfig.cpp csensor_config.cpp @@ -56,7 +55,6 @@ install(TARGETS sensord-share DESTINATION ${CMAKE_INSTALL_LIBDIR}) install(FILES sensord-server.pc DESTINATION ${CMAKE_INSTALL_LIBDIR}/pkgconfig) install(FILES ${PROJECT_NAME}.pc DESTINATION ${CMAKE_INSTALL_LIBDIR}/pkgconfig) install(FILES - crw_lock.h worker_thread.h cconfig.h csensor_config.h diff --git a/src/shared/crw_lock.cpp b/src/shared/crw_lock.cpp deleted file mode 100755 index 6470f6c..0000000 --- a/src/shared/crw_lock.cpp +++ /dev/null @@ -1,74 +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 "crw_lock.h" -#include "common.h" - - -crw_lock::crw_lock() -{ - m_rw_lock = PTHREAD_RWLOCK_INITIALIZER; -} - -crw_lock::~crw_lock() -{ - pthread_rwlock_destroy(&m_rw_lock); -} - -void crw_lock::read_lock() -{ -#ifdef _LOCK_DEBUG - cbase_lock::lock(LOCK_TYPE_READ, "read lock", __MODULE__, __func__, __LINE__); -#else - cbase_lock::lock(LOCK_TYPE_READ); -#endif -} - -void crw_lock::write_lock() -{ -#ifdef _LOCK_DEBUG - cbase_lock::lock(LOCK_TYPE_WRITE, "write lock", __MODULE__, __func__, __LINE__); -#else - cbase_lock::lock(LOCK_TYPE_WRITE); -#endif -} - -int crw_lock::read_lock_impl(void) -{ - return pthread_rwlock_rdlock(&m_rw_lock); -} -int crw_lock::write_lock_impl(void) -{ - return pthread_rwlock_wrlock(&m_rw_lock); -} - -int crw_lock::try_read_lock_impl(void) -{ - return pthread_rwlock_tryrdlock(&m_rw_lock); -} - -int crw_lock::try_write_lock_impl(void) -{ - return pthread_rwlock_trywrlock(&m_rw_lock); -} - -int crw_lock::unlock_impl() -{ - return pthread_rwlock_unlock(&m_rw_lock); -} diff --git a/src/shared/crw_lock.h b/src/shared/crw_lock.h deleted file mode 100755 index b2a33b3..0000000 --- a/src/shared/crw_lock.h +++ /dev/null @@ -1,46 +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. - * - */ - -#if !defined(_CRW_LOCK_CLASS_H_) -#define _CRW_LOCK_CLASS_H_ - -#include "cbase_lock.h" - -class crw_lock : public cbase_lock -{ -public: - crw_lock(); - virtual ~crw_lock(); - - void read_lock(); - void write_lock(); - -protected: - int read_lock_impl(void); - int write_lock_impl(void); - - int try_read_lock_impl(void); - int try_write_lock_impl(void); - int unlock_impl(); -private: - pthread_rwlock_t m_rw_lock; -}; - -#endif -// End of a file -- 2.7.4 From f233e213cd4993f4095865f999048b0dacc998a6 Mon Sep 17 00:00:00 2001 From: Ankur Date: Thu, 22 Oct 2015 15:16:24 +0530 Subject: [PATCH 15/16] Moving hal files to new repo and updating CMakeLists and spec file -Deleting the Hal files for each sensor (moved to new repo) -updating CMakelists for each sensor and shared/libsensord/server folders -added the new project as the dependency in the spec file and the CMakelists Change-Id: I313cf9ef00e86bea8fe852ded64c28a58d52f2d2 --- CMakeLists.txt | 3 +- packaging/sensord.spec | 2 +- sensor_plugins.xml.in | 18 +- sensors.xml.in | 384 --------------------- src/libsensord/CMakeLists.txt | 2 +- src/plugins/accel/CMakeLists.txt | 7 - src/plugins/accel/accel_sensor_hal.cpp | 383 -------------------- src/plugins/accel/accel_sensor_hal.h | 69 ---- src/plugins/bio_led_red/CMakeLists.txt | 7 - src/plugins/bio_led_red/bio_led_red_sensor_hal.cpp | 265 -------------- src/plugins/bio_led_red/bio_led_red_sensor_hal.h | 62 ---- src/plugins/geo/CMakeLists.txt | 7 - src/plugins/geo/geo_sensor_hal.cpp | 316 ----------------- src/plugins/geo/geo_sensor_hal.h | 67 ---- src/plugins/gyro/CMakeLists.txt | 6 - src/plugins/gyro/gyro_sensor_hal.cpp | 306 ---------------- src/plugins/gyro/gyro_sensor_hal.h | 66 ---- src/plugins/light/CMakeLists.txt | 7 - src/plugins/light/light_sensor_hal.cpp | 248 ------------- src/plugins/light/light_sensor_hal.h | 60 ---- src/plugins/pressure/CMakeLists.txt | 7 - src/plugins/pressure/pressure_sensor_hal.cpp | 321 ----------------- src/plugins/pressure/pressure_sensor_hal.h | 70 ---- src/plugins/proxi/CMakeLists.txt | 7 - src/plugins/proxi/proxi_sensor_hal.cpp | 207 ----------- src/plugins/proxi/proxi_sensor_hal.h | 55 --- src/plugins/rotation_vector/rv_raw/CMakeLists.txt | 7 - .../rotation_vector/rv_raw/rv_raw_sensor_hal.cpp | 289 ---------------- .../rotation_vector/rv_raw/rv_raw_sensor_hal.h | 65 ---- src/plugins/temperature/CMakeLists.txt | 7 - src/plugins/temperature/temperature_sensor_hal.cpp | 275 --------------- src/plugins/temperature/temperature_sensor_hal.h | 60 ---- src/plugins/ultraviolet/CMakeLists.txt | 7 - src/plugins/ultraviolet/ultraviolet_sensor_hal.cpp | 292 ---------------- src/plugins/ultraviolet/ultraviolet_sensor_hal.h | 66 ---- src/server/CMakeLists.txt | 2 +- src/shared/CMakeLists.txt | 16 - 37 files changed, 13 insertions(+), 4025 deletions(-) delete mode 100755 sensors.xml.in delete mode 100755 src/plugins/accel/accel_sensor_hal.cpp delete mode 100755 src/plugins/accel/accel_sensor_hal.h delete mode 100755 src/plugins/bio_led_red/bio_led_red_sensor_hal.cpp delete mode 100755 src/plugins/bio_led_red/bio_led_red_sensor_hal.h delete mode 100755 src/plugins/geo/geo_sensor_hal.cpp delete mode 100755 src/plugins/geo/geo_sensor_hal.h delete mode 100755 src/plugins/gyro/gyro_sensor_hal.cpp delete mode 100755 src/plugins/gyro/gyro_sensor_hal.h delete mode 100755 src/plugins/light/light_sensor_hal.cpp delete mode 100755 src/plugins/light/light_sensor_hal.h delete mode 100755 src/plugins/pressure/pressure_sensor_hal.cpp delete mode 100755 src/plugins/pressure/pressure_sensor_hal.h delete mode 100755 src/plugins/proxi/proxi_sensor_hal.cpp delete mode 100755 src/plugins/proxi/proxi_sensor_hal.h delete mode 100755 src/plugins/rotation_vector/rv_raw/rv_raw_sensor_hal.cpp delete mode 100755 src/plugins/rotation_vector/rv_raw/rv_raw_sensor_hal.h delete mode 100755 src/plugins/temperature/temperature_sensor_hal.cpp delete mode 100755 src/plugins/temperature/temperature_sensor_hal.h delete mode 100755 src/plugins/ultraviolet/ultraviolet_sensor_hal.cpp delete mode 100755 src/plugins/ultraviolet/ultraviolet_sensor_hal.h diff --git a/CMakeLists.txt b/CMakeLists.txt index affaa30..20079c1 100755 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -24,9 +24,8 @@ add_definitions(-DLIBDIR="${CMAKE_INSTALL_LIBDIR}") # Installing files CONFIGURE_FILE(sensor_plugins.xml.in sensor_plugins.xml @ONLY) -CONFIGURE_FILE(sensors.xml.in sensors.xml @ONLY) -INSTALL(FILES sensor_plugins.xml sensors.xml DESTINATION etc) +INSTALL(FILES sensor_plugins.xml DESTINATION etc) INSTALL(FILES virtual_sensors.xml virtual_sensors.xml DESTINATION etc) # Sub-directory diff --git a/packaging/sensord.spec b/packaging/sensord.spec index dd4ea37..92d9bad 100644 --- a/packaging/sensord.spec +++ b/packaging/sensord.spec @@ -16,6 +16,7 @@ BuildRequires: pkgconfig(glib-2.0) BuildRequires: pkgconfig(vconf) BuildRequires: pkgconfig(libsystemd-daemon) BuildRequires: pkgconfig(capi-system-info) +BuildRequires: pkgconfig(sensor-hal) BuildRequires: pkgconfig(cynara-creds-socket) BuildRequires: pkgconfig(cynara-client) BuildRequires: pkgconfig(cynara-session) @@ -116,7 +117,6 @@ systemctl daemon-reload %files -n sensord %attr(0644,root,root)/usr/etc/sensor_plugins.xml -%attr(0644,root,root)/usr/etc/sensors.xml %attr(0644,root,root)/usr/etc/virtual_sensors.xml %manifest sensord.manifest %{_bindir}/sensord diff --git a/sensor_plugins.xml.in b/sensor_plugins.xml.in index 88eb161..603b0a9 100755 --- a/sensor_plugins.xml.in +++ b/sensor_plugins.xml.in @@ -1,14 +1,14 @@ - - - - - - - - - + + + + + + + + + diff --git a/sensors.xml.in b/sensors.xml.in deleted file mode 100755 index 34894f3..0000000 --- a/sensors.xml.in +++ /dev/null @@ -1,384 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/src/libsensord/CMakeLists.txt b/src/libsensord/CMakeLists.txt index 3f989c8..d85785c 100755 --- a/src/libsensord/CMakeLists.txt +++ b/src/libsensord/CMakeLists.txt @@ -29,7 +29,7 @@ add_library(${PROJECT_NAME} SHARED poller.cpp ) -target_link_libraries(${PROJECT_NAME} ${lib_pkgs_LDFLAGS} "sensord-share") +target_link_libraries(${PROJECT_NAME} ${lib_pkgs_LDFLAGS} "sensord-share" "sensor-hal") SET_TARGET_PROPERTIES(${PROJECT_NAME} PROPERTIES SOVERSION ${VERSION_MAJOR}) SET_TARGET_PROPERTIES(${PROJECT_NAME} PROPERTIES VERSION ${VERSION}) diff --git a/src/plugins/accel/CMakeLists.txt b/src/plugins/accel/CMakeLists.txt index 2537c1c..4fcaf97 100755 --- a/src/plugins/accel/CMakeLists.txt +++ b/src/plugins/accel/CMakeLists.txt @@ -2,7 +2,6 @@ cmake_minimum_required(VERSION 2.6) project(accel CXX) SET(SENSOR_NAME accel_sensor) -SET(SENSOR_HAL_NAME accel_sensor_hal) include_directories(${CMAKE_CURRENT_SOURCE_DIR}) include_directories(${CMAKE_SOURCE_DIR}/src/libsensord) @@ -19,12 +18,6 @@ add_library(${SENSOR_NAME} SHARED accel_sensor.cpp ) -add_library(${SENSOR_HAL_NAME} SHARED - accel_sensor_hal.cpp - ) - target_link_libraries(${SENSOR_NAME} ${accel_pkgs_LDFLAGS} "-lm") -target_link_libraries(${SENSOR_HAL_NAME} ${accel_pkgs_LDFLAGS}) install(TARGETS ${SENSOR_NAME} DESTINATION ${CMAKE_INSTALL_LIBDIR}/sensord) -install(TARGETS ${SENSOR_HAL_NAME} DESTINATION ${CMAKE_INSTALL_LIBDIR}/sensord) diff --git a/src/plugins/accel/accel_sensor_hal.cpp b/src/plugins/accel/accel_sensor_hal.cpp deleted file mode 100755 index ac709a5..0000000 --- a/src/plugins/accel/accel_sensor_hal.cpp +++ /dev/null @@ -1,383 +0,0 @@ -/* - * accel_sensor_hal - * - * 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 - -using std::ifstream; -using std::string; - -#define GRAVITY 9.80665 -#define G_TO_MG 1000 -#define RAW_DATA_TO_G_UNIT(X) (((float)(X))/((float)G_TO_MG)) -#define RAW_DATA_TO_METRE_PER_SECOND_SQUARED_UNIT(X) (GRAVITY * (RAW_DATA_TO_G_UNIT(X))) - -#define MIN_RANGE(RES) (-((1 << (RES))/2)) -#define MAX_RANGE(RES) (((1 << (RES))/2)-1) - -#define SENSOR_TYPE_ACCEL "ACCEL" -#define ELEMENT_NAME "NAME" -#define ELEMENT_VENDOR "VENDOR" -#define ELEMENT_RAW_DATA_UNIT "RAW_DATA_UNIT" -#define ELEMENT_RESOLUTION "RESOLUTION" - -#define ATTR_VALUE "value" - -#define INPUT_NAME "accelerometer_sensor" -#define ACCEL_SENSORHUB_POLL_NODE_NAME "accel_poll_delay" - -accel_sensor_hal::accel_sensor_hal() -: m_x(-1) -, m_y(-1) -, m_z(-1) -, m_node_handle(-1) -, m_polling_interval(POLL_1HZ_MS) -, m_fired_time(0) -{ - const string sensorhub_interval_node_name = "accel_poll_delay"; - csensor_config &config = csensor_config::get_instance(); - - node_info_query query; - node_info info; - - if (!find_model_id(SENSOR_TYPE_ACCEL, m_model_id)) { - ERR("Failed to find model id"); - throw ENXIO; - } - - query.sensorhub_controlled = m_sensorhub_controlled = is_sensorhub_controlled(sensorhub_interval_node_name); - query.sensor_type = SENSOR_TYPE_ACCEL; - query.key = "accelerometer_sensor"; - query.iio_enable_node_name = "accel_enable"; - query.sensorhub_interval_node_name = sensorhub_interval_node_name; - - if (!get_node_info(query, info)) { - ERR("Failed to get node info"); - throw ENXIO; - } - - show_node_info(info); - - m_method = info.method; - m_data_node = info.data_node_path; - m_enable_node = info.enable_node_path; - m_interval_node = info.interval_node_path; - - if (!config.get(SENSOR_TYPE_ACCEL, m_model_id, ELEMENT_VENDOR, m_vendor)) { - ERR("[VENDOR] is empty\n"); - throw ENXIO; - } - - INFO("m_vendor = %s", m_vendor.c_str()); - - if (!config.get(SENSOR_TYPE_ACCEL, m_model_id, ELEMENT_NAME, m_chip_name)) { - ERR("[NAME] is empty\n"); - throw ENXIO; - } - - INFO("m_chip_name = %s\n",m_chip_name.c_str()); - - long resolution; - - if (!config.get(SENSOR_TYPE_ACCEL, m_model_id, ELEMENT_RESOLUTION, resolution)) { - ERR("[RESOLUTION] is empty\n"); - throw ENXIO; - } - - m_resolution = (int)resolution; - - INFO("m_resolution = %d\n",m_resolution); - - double raw_data_unit; - - if (!config.get(SENSOR_TYPE_ACCEL, m_model_id, ELEMENT_RAW_DATA_UNIT, raw_data_unit)) { - ERR("[RAW_DATA_UNIT] is empty\n"); - throw ENXIO; - } - - m_raw_data_unit = (float)(raw_data_unit); - INFO("m_raw_data_unit = %f\n", m_raw_data_unit); - - if ((m_node_handle = open(m_data_node.c_str(), O_RDWR)) < 0) { - ERR("accel handle open fail for accel processor, error:%s\n", strerror(errno)); - throw ENXIO; - } - - if (m_method == INPUT_EVENT_METHOD) { - int clockId = CLOCK_MONOTONIC; - if (ioctl(m_node_handle, EVIOCSCLOCKID, &clockId) != 0) - ERR("Fail to set monotonic timestamp for %s", m_data_node.c_str()); - - update_value = [=](bool wait) { - return this->update_value_input_event(wait); - }; - } else { - if (!info.buffer_length_node_path.empty()) - set_node_value(info.buffer_length_node_path, 480); - - if (!info.buffer_enable_node_path.empty()) - set_node_value(info.buffer_enable_node_path, 1); - - update_value = [=](bool wait) { - return this->update_value_iio(wait); - }; - } - - INFO("accel_sensor is created!\n"); -} - -accel_sensor_hal::~accel_sensor_hal() -{ - close(m_node_handle); - m_node_handle = -1; - - INFO("accel_sensor is destroyed!\n"); -} - -string accel_sensor_hal::get_model_id(void) -{ - return m_model_id; -} - -sensor_hal_type_t accel_sensor_hal::get_type(void) -{ - return SENSOR_HAL_TYPE_ACCELEROMETER; -} - -bool accel_sensor_hal::enable(void) -{ - AUTOLOCK(m_mutex); - - set_enable_node(m_enable_node, m_sensorhub_controlled, true, SENSORHUB_ACCELEROMETER_ENABLE_BIT); - set_interval(m_polling_interval); - - m_fired_time = 0; - INFO("Accel sensor real starting"); - return true; -} - -bool accel_sensor_hal::disable(void) -{ - AUTOLOCK(m_mutex); - - set_enable_node(m_enable_node, m_sensorhub_controlled, false, SENSORHUB_ACCELEROMETER_ENABLE_BIT); - - INFO("Accel sensor real stopping"); - return true; -} - -bool accel_sensor_hal::set_interval(unsigned long val) -{ - unsigned long long polling_interval_ns; - - AUTOLOCK(m_mutex); - - polling_interval_ns = ((unsigned long long)(val) * 1000llu * 1000llu); - - if (!set_node_value(m_interval_node, polling_interval_ns)) { - ERR("Failed to set polling resource: %s\n", m_interval_node.c_str()); - return false; - } - - INFO("Interval is changed from %dms to %dms]", m_polling_interval, val); - m_polling_interval = val; - return true; -} - - -bool accel_sensor_hal::update_value_input_event(bool wait) -{ - int accel_raw[3] = {0,}; - bool x,y,z; - int read_input_cnt = 0; - const int INPUT_MAX_BEFORE_SYN = 10; - unsigned long long fired_time = 0; - bool syn = false; - - x = y = z = false; - - struct input_event accel_input; - DBG("accel event detection!"); - - while ((syn == false) && (read_input_cnt < INPUT_MAX_BEFORE_SYN)) { - int len = read(m_node_handle, &accel_input, sizeof(accel_input)); - if (len != sizeof(accel_input)) { - ERR("accel_file read fail, read_len = %d\n",len); - return false; - } - - ++read_input_cnt; - - if (accel_input.type == EV_REL) { - switch (accel_input.code) { - case REL_X: - accel_raw[0] = (int)accel_input.value; - x = true; - break; - case REL_Y: - accel_raw[1] = (int)accel_input.value; - y = true; - break; - case REL_Z: - accel_raw[2] = (int)accel_input.value; - z = true; - break; - default: - ERR("accel_input event[type = %d, code = %d] is unknown.", accel_input.type, accel_input.code); - return false; - break; - } - } else if (accel_input.type == EV_SYN) { - syn = true; - fired_time = sensor_hal::get_timestamp(&accel_input.time); - } else { - ERR("accel_input event[type = %d, code = %d] is unknown.", accel_input.type, accel_input.code); - return false; - } - } - - if (syn == false) { - ERR("EV_SYN didn't come until %d inputs had come", read_input_cnt); - return false; - } - - AUTOLOCK(m_value_mutex); - - if (x) - m_x = accel_raw[0]; - if (y) - m_y = accel_raw[1]; - if (z) - m_z = accel_raw[2]; - - m_fired_time = fired_time; - - DBG("m_x = %d, m_y = %d, m_z = %d, time = %lluus", m_x, m_y, m_z, m_fired_time); - - return true; -} - - -bool accel_sensor_hal::update_value_iio(bool wait) -{ - const int READ_LEN = 14; - char data[READ_LEN] = {0,}; - - struct pollfd pfd; - - pfd.fd = m_node_handle; - pfd.events = POLLIN | POLLERR; - pfd.revents = 0; - - int ret = poll(&pfd, 1, -1); - - if (ret == -1) { - ERR("poll error:%s m_node_handle:d", strerror(errno), m_node_handle); - return false; - } else if (!ret) { - ERR("poll timeout m_node_handle:%d", m_node_handle); - return false; - } - - if (pfd.revents & POLLERR) { - ERR("poll exception occurred! m_node_handle:%d", m_node_handle); - return false; - } - - if (!(pfd.revents & POLLIN)) { - ERR("poll nothing to read! m_node_handle:%d, pfd.revents = %d", m_node_handle, pfd.revents); - return false; - } - - int len = read(m_node_handle, data, sizeof(data)); - - if (len != sizeof(data)) { - ERR("Failed to read data, m_node_handle:%d read_len:%d", m_node_handle, len); - return false; - } - - AUTOLOCK(m_value_mutex); - - short *short_data = (short *)(data); - m_x = *(short_data); - m_y = *((short *)(data + 2)); - m_z = *((short *)(data + 4)); - - m_fired_time = *((long long*)(data + 6)); - - INFO("m_x = %d, m_y = %d, m_z = %d, time = %lluus", m_x, m_y, m_z, m_fired_time); - - return true; - -} - -bool accel_sensor_hal::is_data_ready(bool wait) -{ - bool ret; - ret = update_value(wait); - return ret; -} - -int accel_sensor_hal::get_sensor_data(sensor_data_t &data) -{ - AUTOLOCK(m_value_mutex); - - data.accuracy = SENSOR_ACCURACY_GOOD; - data.timestamp = m_fired_time; - data.value_count = 3; - data.values[0] = m_x; - data.values[1] = m_y; - data.values[2] = m_z; - - return 0; -} - -bool accel_sensor_hal::get_properties(sensor_properties_s &properties) -{ - properties.name = m_chip_name; - properties.vendor = m_vendor; - properties.min_range = MIN_RANGE(m_resolution)* RAW_DATA_TO_METRE_PER_SECOND_SQUARED_UNIT(m_raw_data_unit); - properties.max_range = MAX_RANGE(m_resolution)* RAW_DATA_TO_METRE_PER_SECOND_SQUARED_UNIT(m_raw_data_unit); - properties.min_interval = 1; - properties.resolution = RAW_DATA_TO_METRE_PER_SECOND_SQUARED_UNIT(m_raw_data_unit); - properties.fifo_count = 0; - properties.max_batch_count = 0; - return true; -} - -extern "C" sensor_module* create(void) -{ - accel_sensor_hal *sensor; - - try { - sensor = new(std::nothrow) accel_sensor_hal; - } 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; -} diff --git a/src/plugins/accel/accel_sensor_hal.h b/src/plugins/accel/accel_sensor_hal.h deleted file mode 100755 index f16d94c..0000000 --- a/src/plugins/accel/accel_sensor_hal.h +++ /dev/null @@ -1,69 +0,0 @@ -/* - * accel_sensor_hal - * - * 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 _ACCEL_SENSOR_HAL_H_ -#define _ACCEL_SENSOR_HAL_H_ - -#include -#include - -class accel_sensor_hal : public sensor_hal -{ -public: - accel_sensor_hal(); - virtual ~accel_sensor_hal(); - std::string get_model_id(void); - sensor_hal_type_t get_type(void); - bool enable(void); - bool disable(void); - bool set_interval(unsigned long val); - bool is_data_ready(bool wait); - virtual int get_sensor_data(sensor_data_t &data); - bool get_properties(sensor_properties_s &properties); - -private: - int m_x; - int m_y; - int m_z; - int m_node_handle; - unsigned long m_polling_interval; - unsigned long long m_fired_time; - - std::string m_model_id; - std::string m_vendor; - std::string m_chip_name; - - int m_resolution; - float m_raw_data_unit; - - int m_method; - std::string m_data_node; - std::string m_enable_node; - std::string m_interval_node; - - std::function update_value; - - bool m_sensorhub_controlled; - - cmutex m_value_mutex; - - bool update_value_input_event(bool wait); - bool update_value_iio(bool wait); -}; -#endif /*_ACCEL_SENSOR_HAL_CLASS_H_*/ diff --git a/src/plugins/bio_led_red/CMakeLists.txt b/src/plugins/bio_led_red/CMakeLists.txt index 04c58e8..1911384 100644 --- a/src/plugins/bio_led_red/CMakeLists.txt +++ b/src/plugins/bio_led_red/CMakeLists.txt @@ -2,7 +2,6 @@ cmake_minimum_required(VERSION 2.6) project(bio_led_red CXX) SET(SENSOR_NAME bio_led_red_sensor) -SET(SENSOR_HAL_NAME bio_led_red_sensor_hal) include_directories(${CMAKE_CURRENT_SOURCE_DIR}) include_directories(${CMAKE_SOURCE_DIR}/src/libsensord) @@ -19,12 +18,6 @@ add_library(${SENSOR_NAME} SHARED bio_led_red_sensor.cpp ) -add_library(${SENSOR_HAL_NAME} SHARED - bio_led_red_sensor_hal.cpp - ) - target_link_libraries(${SENSOR_NAME} ${bio_led_red_pkgs_LDFLAGS} "-lm") -target_link_libraries(${SENSOR_HAL_NAME} ${bio_led_red_pkgs_LDFLAGS}) install(TARGETS ${SENSOR_NAME} DESTINATION ${CMAKE_INSTALL_LIBDIR}/sensord) -install(TARGETS ${SENSOR_HAL_NAME} DESTINATION ${CMAKE_INSTALL_LIBDIR}/sensord) diff --git a/src/plugins/bio_led_red/bio_led_red_sensor_hal.cpp b/src/plugins/bio_led_red/bio_led_red_sensor_hal.cpp deleted file mode 100755 index 59fea6a..0000000 --- a/src/plugins/bio_led_red/bio_led_red_sensor_hal.cpp +++ /dev/null @@ -1,265 +0,0 @@ -/* - * bio_led_red_sensor_hal - * - * 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 - -using std::ifstream; -using std::string; - -#define SENSOR_TYPE_BIO_LED_RED "BIO_LED_RED" -#define ELEMENT_NAME "NAME" -#define ELEMENT_VENDOR "VENDOR" -#define ATTR_VALUE "value" -#define PATH_LED_RED_ENABLE "/sys/class/sensors/hrm_sensor/led_current1"; -#define LED_RED_ENABLE_VALUE 255 - -#define BIAS 1 - -bio_led_red_sensor_hal::bio_led_red_sensor_hal() -: m_polling_interval(POLL_1HZ_MS) -, m_bio_led_red(0) -, m_fired_time(0) -, m_node_handle(-1) -{ - const string sensorhub_interval_node_name = "hrm_poll_delay"; - csensor_config &config = csensor_config::get_instance(); - - node_info_query query; - node_info info; - - if (!find_model_id(SENSOR_TYPE_BIO_LED_RED, m_model_id)) { - ERR("Failed to find model id"); - throw ENXIO; - - } - - query.sensorhub_controlled = m_sensorhub_controlled = is_sensorhub_controlled(sensorhub_interval_node_name); - query.sensor_type = SENSOR_TYPE_BIO_LED_RED; - query.key = "hrm_sensor"; - query.iio_enable_node_name = "hrm_raw_enable"; - query.sensorhub_interval_node_name = sensorhub_interval_node_name; - - if (!get_node_info(query, info)) { - ERR("Failed to get node info"); - throw ENXIO; - } - - show_node_info(info); - - m_data_node = info.data_node_path; - m_enable_node = info.enable_node_path; - m_interval_node = info.interval_node_path; - - if (!config.get(SENSOR_TYPE_BIO_LED_RED, m_model_id, ELEMENT_VENDOR, m_vendor)) { - ERR("[VENDOR] is empty\n"); - throw ENXIO; - } - - INFO("m_vendor = %s", m_vendor.c_str()); - - if (!config.get(SENSOR_TYPE_BIO_LED_RED, m_model_id, ELEMENT_NAME, m_chip_name)) { - ERR("[NAME] is empty\n"); - throw ENXIO; - } - - INFO("m_chip_name = %s\n",m_chip_name.c_str()); - - if ((m_node_handle = open(m_data_node.c_str(),O_RDWR)) < 0) { - ERR("Failed to open handle(%d)", m_node_handle); - throw ENXIO; - } - - int clockId = CLOCK_MONOTONIC; - if (ioctl(m_node_handle, EVIOCSCLOCKID, &clockId) != 0) - ERR("Fail to set monotonic timestamp for %s", m_data_node.c_str()); - - INFO("bio_led_red_sensor_hal is created!\n"); - -} - -bio_led_red_sensor_hal::~bio_led_red_sensor_hal() -{ - close(m_node_handle); - m_node_handle = -1; - - INFO("bio_led_red_sensor_hal is destroyed!\n"); -} - -string bio_led_red_sensor_hal::get_model_id(void) -{ - return m_model_id; -} - - -sensor_hal_type_t bio_led_red_sensor_hal::get_type(void) -{ - return SENSOR_HAL_TYPE_BIO_LED_RED; -} - -bool bio_led_red_sensor_hal::enable(void) -{ - AUTOLOCK(m_mutex); - const string led_red_enable_path = PATH_LED_RED_ENABLE; - - set_enable_node(m_enable_node, m_sensorhub_controlled, true, SENSORHUB_BIO_HRM_RAW_ENABLE_BIT); - - if (!set_node_value(led_red_enable_path, LED_RED_ENABLE_VALUE)) { - ERR("Failed to set led red enable node: %s", led_red_enable_path.c_str()); - return false; - } - - set_interval(m_polling_interval); - - m_fired_time = 0; - INFO("bio_led_red sensor starting"); - return true; -} - -bool bio_led_red_sensor_hal::disable(void) -{ - AUTOLOCK(m_mutex); - - set_enable_node(m_enable_node, m_sensorhub_controlled, false, SENSORHUB_BIO_HRM_RAW_ENABLE_BIT); - - INFO("bio_led_red sensor real stopping"); - return true; -} - -bool bio_led_red_sensor_hal::set_interval(unsigned long val) -{ - unsigned long long polling_interval_ns; - - AUTOLOCK(m_mutex); - - polling_interval_ns = ((unsigned long long)(val) * 1000llu * 1000llu); - - if (!set_node_value(m_interval_node, polling_interval_ns)) { - ERR("Failed to set polling resource: %s\n", m_interval_node.c_str()); - return false; - } - - INFO("Interval is changed from %dms to %dms]", m_polling_interval, val); - m_polling_interval = val; - return true; - -} - - -bool bio_led_red_sensor_hal::update_value(bool wait) -{ - int bio_led_red_raw = -1; - bool bio_led_red = false; - int read_input_cnt = 0; - const int INPUT_MAX_BEFORE_SYN = 10; - unsigned long long fired_time = 0; - bool syn = false; - - struct input_event bio_led_red_event; - DBG("bio_led_red event detection!"); - - while ((syn == false) && (read_input_cnt < INPUT_MAX_BEFORE_SYN)) { - int len = read(m_node_handle, &bio_led_red_event, sizeof(bio_led_red_event)); - if (len != sizeof(bio_led_red_event)) { - ERR("bio_led_red file read fail, read_len = %d\n",len); - return false; - } - - ++read_input_cnt; - - if (bio_led_red_event.type == EV_REL && bio_led_red_event.code == REL_X) { - bio_led_red_raw = (int)bio_led_red_event.value; - bio_led_red = true; - } else if (bio_led_red_event.type == EV_REL) { - ERR("bio_led_red event[type = %d, code = %d] is skipped.", bio_led_red_event.type, bio_led_red_event.code); - } else if (bio_led_red_event.type == EV_SYN) { - syn = true; - fired_time = sensor_hal::get_timestamp(&bio_led_red_event.time); - } else { - ERR("bio_led_red event[type = %d, code = %d] is unknown.", bio_led_red_event.type, bio_led_red_event.code); - return false; - } - } - - AUTOLOCK(m_value_mutex); - - if (bio_led_red) - m_bio_led_red = bio_led_red_raw - BIAS; - - m_fired_time = fired_time; - - DBG("m_bio_led_red = %d, time = %lluus", m_bio_led_red, m_fired_time); - - return true; -} - -bool bio_led_red_sensor_hal::is_data_ready(bool wait) -{ - bool ret; - ret = update_value(wait); - return ret; -} - -int bio_led_red_sensor_hal::get_sensor_data(sensor_data_t &data) -{ - AUTOLOCK(m_value_mutex); - data.accuracy = SENSOR_ACCURACY_GOOD; - data.timestamp = m_fired_time; - data.value_count = 1; - data.values[0] = (float) m_bio_led_red; - - return 0; -} - -bool bio_led_red_sensor_hal::get_properties(sensor_properties_s &properties) -{ - properties.name = m_chip_name; - properties.vendor = m_vendor; - properties.min_range = 0.0f; - properties.max_range = 1.0f; - properties.min_interval = 1; - properties.resolution = 1.0f; - properties.fifo_count = 0; - properties.max_batch_count = 0; - - return true; -} - -extern "C" sensor_module* create(void) -{ - bio_led_red_sensor_hal *sensor; - - try { - sensor = new(std::nothrow) bio_led_red_sensor_hal; - } 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; -} diff --git a/src/plugins/bio_led_red/bio_led_red_sensor_hal.h b/src/plugins/bio_led_red/bio_led_red_sensor_hal.h deleted file mode 100755 index bd9059b..0000000 --- a/src/plugins/bio_led_red/bio_led_red_sensor_hal.h +++ /dev/null @@ -1,62 +0,0 @@ -/* - * hrm_red_sensor_hal - * - * 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 _BIO_LED_RED_SENSOR_HAL_H_ -#define _BIO_LED_RED_SENSOR_HAL_H_ - -#include - -class bio_led_red_sensor_hal : public sensor_hal -{ -public: - bio_led_red_sensor_hal(); - virtual ~bio_led_red_sensor_hal(); - std::string get_model_id(void); - sensor_hal_type_t get_type(void); - bool enable(void); - bool disable(void); - bool set_interval(unsigned long val); - bool is_data_ready(bool wait); - virtual int get_sensor_data(sensor_data_t &data); - bool get_properties(sensor_properties_s &properties); - -private: - std::string m_model_id; - std::string m_vendor; - std::string m_chip_name; - - unsigned long m_polling_interval; - - int m_bio_led_red; - - unsigned long long m_fired_time; - int m_node_handle; - - std::string m_enable_node; - std::string m_data_node; - std::string m_interval_node; - - bool m_sensorhub_controlled; - - cmutex m_value_mutex; - - bool update_value(bool wait); -}; -#endif /*_BIO_LED_RED_SENSOR_HAL_CLASS_H_*/ - diff --git a/src/plugins/geo/CMakeLists.txt b/src/plugins/geo/CMakeLists.txt index 8a04867..ee97dc7 100755 --- a/src/plugins/geo/CMakeLists.txt +++ b/src/plugins/geo/CMakeLists.txt @@ -2,7 +2,6 @@ cmake_minimum_required(VERSION 2.6) project(geo CXX) SET(SENSOR_NAME geo_sensor) -SET(SENSOR_HAL_NAME geo_sensor_hal) include_directories(${CMAKE_CURRENT_SOURCE_DIR}) include_directories(${CMAKE_SOURCE_DIR}/src/libsensord) @@ -19,12 +18,6 @@ add_library(${SENSOR_NAME} SHARED geo_sensor.cpp ) -add_library(${SENSOR_HAL_NAME} SHARED - geo_sensor_hal.cpp -) - target_link_libraries(${SENSOR_NAME} ${geo_pkgs_LDFLAGS} "-lm") -target_link_libraries(${SENSOR_HAL_NAME} ${geo_pkgs_LDFLAGS}) install(TARGETS ${SENSOR_NAME} DESTINATION ${CMAKE_INSTALL_LIBDIR}/sensord) -install(TARGETS ${SENSOR_HAL_NAME} DESTINATION ${CMAKE_INSTALL_LIBDIR}/sensord) diff --git a/src/plugins/geo/geo_sensor_hal.cpp b/src/plugins/geo/geo_sensor_hal.cpp deleted file mode 100755 index 9b23ea5..0000000 --- a/src/plugins/geo/geo_sensor_hal.cpp +++ /dev/null @@ -1,316 +0,0 @@ -/* - * geo_sensor_hal - * - * 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 - -using std::ifstream; -using std::string; - -#define SENSOR_TYPE_MAGNETIC "MAGNETIC" -#define ELEMENT_NAME "NAME" -#define ELEMENT_VENDOR "VENDOR" -#define ELEMENT_RAW_DATA_UNIT "RAW_DATA_UNIT" -#define ELEMENT_MIN_RANGE "MIN_RANGE" -#define ELEMENT_MAX_RANGE "MAX_RANGE" -#define ATTR_VALUE "value" - -geo_sensor_hal::geo_sensor_hal() -: m_x(0) -, m_y(0) -, m_z(0) -, m_hdst(0) -, m_fired_time(0) -, m_node_handle(-1) -, m_polling_interval(POLL_1HZ_MS) -{ - const string sensorhub_interval_node_name = "mag_poll_delay"; - csensor_config &config = csensor_config::get_instance(); - - node_info_query query; - node_info info; - - if (!find_model_id(SENSOR_TYPE_MAGNETIC, m_model_id)) { - ERR("Failed to find model id"); - throw ENXIO; - } - - query.sensorhub_controlled = m_sensorhub_controlled = is_sensorhub_controlled(sensorhub_interval_node_name); - query.sensor_type = SENSOR_TYPE_MAGNETIC; - query.key = "geomagnetic_sensor"; - query.iio_enable_node_name = "geomagnetic_enable"; - query.sensorhub_interval_node_name = sensorhub_interval_node_name; - - bool error = get_node_info(query, info); - - query.key = "magnetic_sensor"; - error |= get_node_info(query, info); - - if (!error) { - ERR("Failed to get node info"); - throw ENXIO; - } - - show_node_info(info); - - m_data_node = info.data_node_path; - m_enable_node = info.enable_node_path; - m_interval_node = info.interval_node_path; - - if (!config.get(SENSOR_TYPE_MAGNETIC, m_model_id, ELEMENT_VENDOR, m_vendor)) { - ERR("[VENDOR] is empty\n"); - throw ENXIO; - } - - INFO("m_vendor = %s", m_vendor.c_str()); - - if (!config.get(SENSOR_TYPE_MAGNETIC, m_model_id, ELEMENT_NAME, m_chip_name)) { - ERR("[NAME] is empty\n"); - throw ENXIO; - } - - INFO("m_chip_name = %s\n",m_chip_name.c_str()); - - double min_range; - - if (!config.get(SENSOR_TYPE_MAGNETIC, m_model_id, ELEMENT_MIN_RANGE, min_range)) { - ERR("[MIN_RANGE] is empty\n"); - throw ENXIO; - } - - m_min_range = (float)min_range; - INFO("m_min_range = %f\n",m_min_range); - - double max_range; - - if (!config.get(SENSOR_TYPE_MAGNETIC, m_model_id, ELEMENT_MAX_RANGE, max_range)) { - ERR("[MAX_RANGE] is empty\n"); - throw ENXIO; - } - - m_max_range = (float)max_range; - INFO("m_max_range = %f\n",m_max_range); - - double raw_data_unit; - - if (!config.get(SENSOR_TYPE_MAGNETIC, m_model_id, ELEMENT_RAW_DATA_UNIT, raw_data_unit)) { - ERR("[RAW_DATA_UNIT] is empty\n"); - throw ENXIO; - } - - m_raw_data_unit = (float)(raw_data_unit); - - if ((m_node_handle = open(m_data_node.c_str(),O_RDWR)) < 0) { - ERR("Failed to open handle(%d)", m_node_handle); - throw ENXIO; - } - - int clockId = CLOCK_MONOTONIC; - if (ioctl(m_node_handle, EVIOCSCLOCKID, &clockId) != 0) - ERR("Fail to set monotonic timestamp for %s", m_data_node.c_str()); - - INFO("m_raw_data_unit = %f\n", m_raw_data_unit); - INFO("geo_sensor_hal is created!\n"); - -} - -geo_sensor_hal::~geo_sensor_hal() -{ - close(m_node_handle); - m_node_handle = -1; - - INFO("geo_sensor is destroyed!\n"); -} - -string geo_sensor_hal::get_model_id(void) -{ - return m_model_id; -} - -sensor_hal_type_t geo_sensor_hal::get_type(void) -{ - return SENSOR_HAL_TYPE_GEOMAGNETIC; -} - -bool geo_sensor_hal::enable(void) -{ - AUTOLOCK(m_mutex); - - set_enable_node(m_enable_node, m_sensorhub_controlled, true, SENSORHUB_GEOMAGNETIC_ENABLE_BIT); - set_interval(m_polling_interval); - - m_fired_time = 0; - INFO("Geo sensor real starting"); - return true; -} - -bool geo_sensor_hal::disable(void) -{ - AUTOLOCK(m_mutex); - - set_enable_node(m_enable_node, m_sensorhub_controlled, false, SENSORHUB_GEOMAGNETIC_ENABLE_BIT); - - INFO("Geo sensor real stopping"); - return true; -} - -bool geo_sensor_hal::set_interval(unsigned long val) -{ - unsigned long long polling_interval_ns; - - AUTOLOCK(m_mutex); - - polling_interval_ns = ((unsigned long long)(val) * 1000llu * 1000llu); - - if (!set_node_value(m_interval_node, polling_interval_ns)) { - ERR("Failed to set polling resource: %s\n", m_interval_node.c_str()); - return false; - } - - INFO("Interval is changed from %dms to %dms]", m_polling_interval, val); - m_polling_interval = val; - return true; -} - -bool geo_sensor_hal::update_value(bool wait) -{ - int geo_raw[4] = {0,}; - bool x,y,z,hdst; - int read_input_cnt = 0; - const int INPUT_MAX_BEFORE_SYN = 10; - unsigned long long fired_time = 0; - bool syn = false; - - x = y = z = hdst = false; - - struct input_event geo_input; - DBG("geo event detection!"); - - while ((syn == false) && (read_input_cnt < INPUT_MAX_BEFORE_SYN)) { - int len = read(m_node_handle, &geo_input, sizeof(geo_input)); - if (len != sizeof(geo_input)) { - ERR("geo_file read fail, read_len = %d\n",len); - return false; - } - - ++read_input_cnt; - - if (geo_input.type == EV_REL) { - switch (geo_input.code) { - case REL_RX: - geo_raw[0] = (int)geo_input.value; - x = true; - break; - case REL_RY: - geo_raw[1] = (int)geo_input.value; - y = true; - break; - case REL_RZ: - geo_raw[2] = (int)geo_input.value; - z = true; - break; - case REL_HWHEEL: - geo_raw[3] = (int)geo_input.value; - hdst = true; - break; - default: - ERR("geo_input event[type = %d, code = %d] is unknown.", geo_input.type, geo_input.code); - return false; - break; - } - } else if (geo_input.type == EV_SYN) { - syn = true; - fired_time = get_timestamp(&geo_input.time); - } else { - ERR("geo_input event[type = %d, code = %d] is unknown.", geo_input.type, geo_input.code); - return false; - } - } - - AUTOLOCK(m_value_mutex); - - if (x) - m_x = geo_raw[0]; - if (y) - m_y = geo_raw[1]; - if (z) - m_z = geo_raw[2]; - if (hdst) - m_hdst = geo_raw[3] - 1; /* accuracy bias: -1 */ - - m_fired_time = fired_time; - - DBG("m_x = %d, m_y = %d, m_z = %d, m_hdst = %d, time = %lluus", m_x, m_y, m_z, m_hdst, m_fired_time); - - return true; -} - -bool geo_sensor_hal::is_data_ready(bool wait) -{ - bool ret; - ret = update_value(wait); - return ret; -} - -int geo_sensor_hal::get_sensor_data(sensor_data_t &data) -{ - data.accuracy = (m_hdst == 1) ? 0 : m_hdst; /* hdst 0 and 1 are needed to calibrate */ - data.timestamp = m_fired_time; - data.value_count = 3; - data.values[0] = (float)m_x; - data.values[1] = (float)m_y; - data.values[2] = (float)m_z; - return 0; -} - -bool geo_sensor_hal::get_properties(sensor_properties_s &properties) -{ - properties.name = m_chip_name; - properties.vendor = m_vendor; - properties.min_range = m_min_range; - properties.max_range = m_max_range; - properties.min_interval = 1; - properties.resolution = m_raw_data_unit; - properties.fifo_count = 0; - properties.max_batch_count = 0; - return true; -} - -extern "C" sensor_module* create(void) -{ - geo_sensor_hal *sensor; - - try { - sensor = new(std::nothrow) geo_sensor_hal; - } 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; -} diff --git a/src/plugins/geo/geo_sensor_hal.h b/src/plugins/geo/geo_sensor_hal.h deleted file mode 100755 index 0af57e8..0000000 --- a/src/plugins/geo/geo_sensor_hal.h +++ /dev/null @@ -1,67 +0,0 @@ -/* - * geo_sensor_hal - * - * 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 _GEO_SENSOR_HAL_H_ -#define _GEO_SENSOR_HAL_H_ - -#include - -class geo_sensor_hal : public sensor_hal -{ -public: - geo_sensor_hal(); - virtual ~geo_sensor_hal(); - std::string get_model_id(void); - sensor_hal_type_t get_type(void); - bool enable(void); - bool disable(void); - bool set_interval(unsigned long val); - bool is_data_ready(bool wait); - virtual int get_sensor_data(sensor_data_t &data); - bool get_properties(sensor_properties_s &properties); -private: - std::string m_model_id; - std::string m_vendor; - std::string m_chip_name; - - float m_min_range; - float m_max_range; - float m_raw_data_unit; - - double m_x; - double m_y; - double m_z; - - int m_hdst; - - unsigned long long m_fired_time; - int m_node_handle; - unsigned long m_polling_interval; - - std::string m_enable_node; - std::string m_data_node; - std::string m_interval_node; - - bool m_sensorhub_controlled; - - cmutex m_value_mutex; - - bool update_value(bool wait); -}; -#endif /*_GEO_SENSOR_HAL_H_*/ diff --git a/src/plugins/gyro/CMakeLists.txt b/src/plugins/gyro/CMakeLists.txt index 1cfef0c..c8e6d38 100755 --- a/src/plugins/gyro/CMakeLists.txt +++ b/src/plugins/gyro/CMakeLists.txt @@ -2,7 +2,6 @@ cmake_minimum_required(VERSION 2.6) project(gyro CXX) SET(SENSOR_NAME gyro_sensor) -SET(SENSOR_HAL_NAME gyro_sensor_hal) include_directories(${CMAKE_CURRENT_SOURCE_DIR}) include_directories(${CMAKE_SOURCE_DIR}/src/libsensord) @@ -18,12 +17,7 @@ ENDFOREACH(flag) add_library(${SENSOR_NAME} SHARED gyro_sensor.cpp ) -add_library(${SENSOR_HAL_NAME} SHARED - gyro_sensor_hal.cpp - ) target_link_libraries(${SENSOR_NAME} ${gyro_pkgs_LDFLAGS} "-lm") -target_link_libraries(${SENSOR_HAL_NAME} ${gyro_pkgs_LDFLAGS}) install(TARGETS ${SENSOR_NAME} DESTINATION ${CMAKE_INSTALL_LIBDIR}/sensord) -install(TARGETS ${SENSOR_HAL_NAME} DESTINATION ${CMAKE_INSTALL_LIBDIR}/sensord) diff --git a/src/plugins/gyro/gyro_sensor_hal.cpp b/src/plugins/gyro/gyro_sensor_hal.cpp deleted file mode 100755 index 97a6903..0000000 --- a/src/plugins/gyro/gyro_sensor_hal.cpp +++ /dev/null @@ -1,306 +0,0 @@ -/* - * gyro_sensor_hal - * - * 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 - -using std::ifstream; -using std::string; - -#define DPS_TO_MDPS 1000 -#define MIN_RANGE(RES) (-((1 << (RES))/2)) -#define MAX_RANGE(RES) (((1 << (RES))/2)-1) -#define RAW_DATA_TO_DPS_UNIT(X) ((float)(X)/((float)DPS_TO_MDPS)) - -#define SENSOR_TYPE_GYRO "GYRO" -#define ELEMENT_NAME "NAME" -#define ELEMENT_VENDOR "VENDOR" -#define ELEMENT_RAW_DATA_UNIT "RAW_DATA_UNIT" -#define ELEMENT_RESOLUTION "RESOLUTION" - -#define ATTR_VALUE "value" - -gyro_sensor_hal::gyro_sensor_hal() -: m_x(-1) -, m_y(-1) -, m_z(-1) -, m_node_handle(-1) -, m_polling_interval(POLL_1HZ_MS) -, m_fired_time(0) -{ - - const string sensorhub_interval_node_name = "gyro_poll_delay"; - csensor_config &config = csensor_config::get_instance(); - - node_info_query query; - node_info info; - - if (!find_model_id(SENSOR_TYPE_GYRO, m_model_id)) { - ERR("Failed to find model id"); - throw ENXIO; - - } - - query.sensorhub_controlled = m_sensorhub_controlled = is_sensorhub_controlled(sensorhub_interval_node_name); - query.sensor_type = SENSOR_TYPE_GYRO; - query.key = "gyro_sensor"; - query.iio_enable_node_name = "gyro_enable"; - query.sensorhub_interval_node_name = sensorhub_interval_node_name; - - if (!get_node_info(query, info)) { - ERR("Failed to get node info"); - throw ENXIO; - } - - show_node_info(info); - - m_data_node = info.data_node_path; - m_enable_node = info.enable_node_path; - m_interval_node = info.interval_node_path; - - if (!config.get(SENSOR_TYPE_GYRO, m_model_id, ELEMENT_VENDOR, m_vendor)) { - ERR("[VENDOR] is empty\n"); - throw ENXIO; - } - - INFO("m_vendor = %s", m_vendor.c_str()); - - if (!config.get(SENSOR_TYPE_GYRO, m_model_id, ELEMENT_NAME, m_chip_name)) { - ERR("[NAME] is empty\n"); - throw ENXIO; - } - - INFO("m_chip_name = %s\n",m_chip_name.c_str()); - - long resolution; - - if (!config.get(SENSOR_TYPE_GYRO, m_model_id, ELEMENT_RESOLUTION, resolution)) { - ERR("[RESOLUTION] is empty\n"); - throw ENXIO; - } - - m_resolution = (int)resolution; - - double raw_data_unit; - - if (!config.get(SENSOR_TYPE_GYRO, m_model_id, ELEMENT_RAW_DATA_UNIT, raw_data_unit)) { - ERR("[RAW_DATA_UNIT] is empty\n"); - throw ENXIO; - } - - m_raw_data_unit = (float)(raw_data_unit); - - if ((m_node_handle = open(m_data_node.c_str(), O_RDWR)) < 0) { - ERR("gyro handle open fail for gyro processor, error:%s\n", strerror(errno)); - throw ENXIO; - } - - int clockId = CLOCK_MONOTONIC; - if (ioctl(m_node_handle, EVIOCSCLOCKID, &clockId) != 0) - ERR("Fail to set monotonic timestamp for %s", m_data_node.c_str()); - - INFO("m_raw_data_unit = %f\n",m_raw_data_unit); - INFO("RAW_DATA_TO_DPS_UNIT(m_raw_data_unit) = [%f]",RAW_DATA_TO_DPS_UNIT(m_raw_data_unit)); - INFO("gyro_sensor is created!\n"); -} - -gyro_sensor_hal::~gyro_sensor_hal() -{ - close(m_node_handle); - m_node_handle = -1; - - INFO("gyro_sensor is destroyed!\n"); -} - -string gyro_sensor_hal::get_model_id(void) -{ - return m_model_id; -} - -sensor_hal_type_t gyro_sensor_hal::get_type(void) -{ - return SENSOR_HAL_TYPE_GYROSCOPE; -} - -bool gyro_sensor_hal::enable(void) -{ - AUTOLOCK(m_mutex); - - set_enable_node(m_enable_node, m_sensorhub_controlled, true, SENSORHUB_GYROSCOPE_ENABLE_BIT); - set_interval(m_polling_interval); - - m_fired_time = 0; - INFO("Gyro sensor real starting"); - return true; -} - -bool gyro_sensor_hal::disable(void) -{ - AUTOLOCK(m_mutex); - - set_enable_node(m_enable_node, m_sensorhub_controlled, false, SENSORHUB_GYROSCOPE_ENABLE_BIT); - - INFO("Gyro sensor real stopping"); - return true; - -} - -bool gyro_sensor_hal::set_interval(unsigned long val) -{ - unsigned long long polling_interval_ns; - - AUTOLOCK(m_mutex); - - polling_interval_ns = ((unsigned long long)(val) * 1000llu * 1000llu); - - if (!set_node_value(m_interval_node, polling_interval_ns)) { - ERR("Failed to set polling resource: %s\n", m_interval_node.c_str()); - return false; - } - - INFO("Interval is changed from %dms to %dms]", m_polling_interval, val); - m_polling_interval = val; - return true; -} - - -bool gyro_sensor_hal::update_value(bool wait) -{ - int gyro_raw[3] = {0,}; - bool x,y,z; - int read_input_cnt = 0; - const int INPUT_MAX_BEFORE_SYN = 10; - unsigned long long fired_time = 0; - bool syn = false; - - x = y = z = false; - - struct input_event gyro_input; - DBG("gyro event detection!"); - - while ((syn == false) && (read_input_cnt < INPUT_MAX_BEFORE_SYN)) { - int len = read(m_node_handle, &gyro_input, sizeof(gyro_input)); - if (len != sizeof(gyro_input)) { - ERR("gyro_file read fail, read_len = %d\n, %s",len, strerror(errno)); - return false; - } - - ++read_input_cnt; - - if (gyro_input.type == EV_REL) { - switch (gyro_input.code) { - case REL_RX: - gyro_raw[0] = (int)gyro_input.value; - x = true; - break; - case REL_RY: - gyro_raw[1] = (int)gyro_input.value; - y = true; - break; - case REL_RZ: - gyro_raw[2] = (int)gyro_input.value; - z = true; - break; - default: - ERR("gyro_input event[type = %d, code = %d] is unknown.", gyro_input.type, gyro_input.code); - return false; - break; - } - } else if (gyro_input.type == EV_SYN) { - syn = true; - fired_time = sensor_hal::get_timestamp(&gyro_input.time); - } else { - ERR("gyro_input event[type = %d, code = %d] is unknown.", gyro_input.type, gyro_input.code); - return false; - } - } - - AUTOLOCK(m_value_mutex); - - if (x) - m_x = gyro_raw[0]; - if (y) - m_y = gyro_raw[1]; - if (z) - m_z = gyro_raw[2]; - - m_fired_time = fired_time; - - DBG("m_x = %d, m_y = %d, m_z = %d, time = %lluus", m_x, m_y, m_z, m_fired_time); - - return true; -} - -bool gyro_sensor_hal::is_data_ready(bool wait) -{ - bool ret; - ret = update_value(wait); - return ret; -} - -int gyro_sensor_hal::get_sensor_data(sensor_data_t &data) -{ - AUTOLOCK(m_value_mutex); - - data.accuracy = SENSOR_ACCURACY_GOOD; - data.timestamp = m_fired_time ; - data.value_count = 3; - data.values[0] = m_x; - data.values[1] = m_y; - data.values[2] = m_z; - - return 0; -} - -bool gyro_sensor_hal::get_properties(sensor_properties_s &properties) -{ - properties.name = m_chip_name; - properties.vendor = m_vendor; - properties.min_range = MIN_RANGE(m_resolution)* RAW_DATA_TO_DPS_UNIT(m_raw_data_unit); - properties.max_range = MAX_RANGE(m_resolution)* RAW_DATA_TO_DPS_UNIT(m_raw_data_unit); - properties.min_interval = 1; - properties.resolution = RAW_DATA_TO_DPS_UNIT(m_raw_data_unit); - properties.fifo_count = 0; - properties.max_batch_count = 0; - return true; - -} - -extern "C" sensor_module* create(void) -{ - gyro_sensor_hal *sensor; - - try { - sensor = new(std::nothrow) gyro_sensor_hal; - } 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; -} diff --git a/src/plugins/gyro/gyro_sensor_hal.h b/src/plugins/gyro/gyro_sensor_hal.h deleted file mode 100755 index dde408e..0000000 --- a/src/plugins/gyro/gyro_sensor_hal.h +++ /dev/null @@ -1,66 +0,0 @@ -/* - * gyro_sensor_hal - * - * 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 _GYRO_SENSOR_HAL_H_ -#define _GYRO_SENSOR_HAL_H_ - -#include - -class gyro_sensor_hal : public sensor_hal -{ -public: - gyro_sensor_hal(); - virtual ~gyro_sensor_hal(); - std::string get_model_id(void); - sensor_hal_type_t get_type(void); - bool enable(void); - bool disable(void); - bool set_interval(unsigned long ms_interval); - bool is_data_ready(bool wait); - virtual int get_sensor_data(sensor_data_t &data); - virtual bool get_properties(sensor_properties_s &properties); - -private: - int m_x; - int m_y; - int m_z; - int m_node_handle; - unsigned long m_polling_interval; - unsigned long long m_fired_time; - - std::string m_model_id; - std::string m_vendor; - std::string m_chip_name; - - float m_min_range; - float m_max_range; - int m_resolution; - float m_raw_data_unit; - - std::string m_data_node; - std::string m_enable_node; - std::string m_interval_node; - - bool m_sensorhub_controlled; - - cmutex m_value_mutex; - - bool update_value(bool wait); -}; -#endif /*_GYRO_SENSOR_HAL_CLASS_H_*/ diff --git a/src/plugins/light/CMakeLists.txt b/src/plugins/light/CMakeLists.txt index 9945df2..71ffd6a 100755 --- a/src/plugins/light/CMakeLists.txt +++ b/src/plugins/light/CMakeLists.txt @@ -2,7 +2,6 @@ cmake_minimum_required(VERSION 2.6) project(light CXX) SET(SENSOR_NAME light_sensor) -SET(SENSOR_HAL_NAME light_sensor_hal) include_directories(${CMAKE_CURRENT_SOURCE_DIR}) include_directories(${CMAKE_SOURCE_DIR}/src/libsensord) @@ -19,12 +18,6 @@ add_library(${SENSOR_NAME} SHARED light_sensor.cpp ) -add_library(${SENSOR_HAL_NAME} SHARED - light_sensor_hal.cpp - ) - target_link_libraries(${SENSOR_NAME} ${light_pkgs_LDFLAGS} "-lm") -target_link_libraries(${SENSOR_HAL_NAME} ${light_pkgs_LDFLAGS}) install(TARGETS ${SENSOR_NAME} DESTINATION ${CMAKE_INSTALL_LIBDIR}/sensord) -install(TARGETS ${SENSOR_HAL_NAME} DESTINATION ${CMAKE_INSTALL_LIBDIR}/sensord) diff --git a/src/plugins/light/light_sensor_hal.cpp b/src/plugins/light/light_sensor_hal.cpp deleted file mode 100755 index bf3a613..0000000 --- a/src/plugins/light/light_sensor_hal.cpp +++ /dev/null @@ -1,248 +0,0 @@ -/* - * light_sensor_hal - * - * 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 - -using std::ifstream; -using std::string; - -#define SENSOR_TYPE_LIGHT "LIGHT" -#define ELEMENT_NAME "NAME" -#define ELEMENT_VENDOR "VENDOR" -#define ELEMENT_RAW_DATA_UNIT "RAW_DATA_UNIT" -#define ELEMENT_RESOLUTION "RESOLUTION" -#define ATTR_VALUE "value" -#define INITIAL_TIME -1 -#define BIAS 1 -#define INVALID_VALUE -1 -#define INITIAL_VALUE -1 - -light_sensor_hal::light_sensor_hal() -: m_polling_interval(POLL_1HZ_MS) -, m_adc(INVALID_VALUE) -, m_fired_time(INITIAL_TIME) -, m_node_handle(INITIAL_VALUE) -{ - const string sensorhub_interval_node_name = "light_poll_delay"; - csensor_config &config = csensor_config::get_instance(); - - node_info_query query; - node_info info; - - if (!find_model_id(SENSOR_TYPE_LIGHT, m_model_id)) { - ERR("Failed to find model id"); - throw ENXIO; - - } - - query.sensorhub_controlled = m_sensorhub_controlled = is_sensorhub_controlled(sensorhub_interval_node_name); - query.sensor_type = SENSOR_TYPE_LIGHT; - query.key = "light_sensor"; - query.iio_enable_node_name = "light_enable"; - query.sensorhub_interval_node_name = sensorhub_interval_node_name; - - if (!get_node_info(query, info)) { - ERR("Failed to get node info"); - throw ENXIO; - } - - show_node_info(info); - - m_data_node = info.data_node_path; - m_enable_node = info.enable_node_path; - m_interval_node = info.interval_node_path; - - if (!config.get(SENSOR_TYPE_LIGHT, m_model_id, ELEMENT_VENDOR, m_vendor)) { - ERR("[VENDOR] is empty\n"); - throw ENXIO; - } - - INFO("m_vendor = %s", m_vendor.c_str()); - - if (!config.get(SENSOR_TYPE_LIGHT, m_model_id, ELEMENT_NAME, m_chip_name)) { - ERR("[NAME] is empty\n"); - throw ENXIO; - } - - INFO("m_chip_name = %s\n",m_chip_name.c_str()); - - if ((m_node_handle = open(m_data_node.c_str(),O_RDWR)) < 0) { - ERR("Failed to open handle(%d)", m_node_handle); - throw ENXIO; - } - - int clockId = CLOCK_MONOTONIC; - if (ioctl(m_node_handle, EVIOCSCLOCKID, &clockId) != 0) - ERR("Fail to set monotonic timestamp for %s", m_data_node.c_str()); - - INFO("light_sensor_hal is created!\n"); - -} - -light_sensor_hal::~light_sensor_hal() -{ - close(m_node_handle); - m_node_handle = -1; - - INFO("light_sensor_hal is destroyed!\n"); -} - -string light_sensor_hal::get_model_id(void) -{ - return m_model_id; -} - - -sensor_hal_type_t light_sensor_hal::get_type(void) -{ - return SENSOR_HAL_TYPE_LIGHT; -} - -bool light_sensor_hal::enable(void) -{ - AUTOLOCK(m_mutex); - - set_enable_node(m_enable_node, m_sensorhub_controlled, true, SENSORHUB_LIGHT_ENABLE_BIT); - set_interval(m_polling_interval); - - m_fired_time = 0; - INFO("Light sensor real starting"); - return true; -} - -bool light_sensor_hal::disable(void) -{ - AUTOLOCK(m_mutex); - - set_enable_node(m_enable_node, m_sensorhub_controlled, false, SENSORHUB_LIGHT_ENABLE_BIT); - - INFO("Light sensor real stopping"); - return true; -} - -bool light_sensor_hal::set_interval(unsigned long val) -{ - unsigned long long polling_interval_ns; - - AUTOLOCK(m_mutex); - - polling_interval_ns = ((unsigned long long)(val) * 1000llu * 1000llu); - - if (!set_node_value(m_interval_node, polling_interval_ns)) { - ERR("Failed to set polling resource: %s\n", m_interval_node.c_str()); - return false; - } - - INFO("Interval is changed from %dms to %dms]", m_polling_interval, val); - m_polling_interval = val; - return true; -} - - -bool light_sensor_hal::update_value(bool wait) -{ - unsigned short int adc = INITIAL_VALUE; - - struct input_event light_event; - DBG("light event detection!"); - - int len = read(m_node_handle, &light_event, sizeof(light_event)); - if (len == -1) { - DBG("read(m_node_handle) is error:%s.\n", strerror(errno)); - return false; - } - - if (light_event.type == EV_ABS && light_event.code == ABS_MISC) { - adc = light_event.value; - } else if (light_event.type == EV_REL && light_event.code == REL_MISC) { - adc = light_event.value - BIAS; - } else if (light_event.type == EV_REL && light_event.code == REL_RX) { - adc = light_event.value - BIAS; - } else { - DBG("light input event[type = %d, code = %d] is unknown.", light_event.type, light_event.code); - return false; - } - - DBG("read event, len : %d, type : %x, code : %x, value : %x", - len, light_event.type, light_event.code, light_event.value); - - DBG("update_value, adc : %d", adc); - - AUTOLOCK(m_value_mutex); - m_adc = adc; - m_fired_time = get_timestamp(&light_event.time); - - return true; -} - -bool light_sensor_hal::is_data_ready(bool wait) -{ - bool ret; - ret = update_value(wait); - return ret; -} - -int light_sensor_hal::get_sensor_data(sensor_data_t &data) -{ - AUTOLOCK(m_value_mutex); - data.accuracy = SENSOR_ACCURACY_GOOD; - data.timestamp = m_fired_time; - data.value_count = 1; - data.values[0] = (float) m_adc; - - return 0; -} - - -bool light_sensor_hal::get_properties(sensor_properties_s &properties) -{ - properties.name = m_chip_name; - properties.vendor = m_vendor; - properties.min_range = 0; - properties.max_range = 65535; - properties.min_interval = 1; - properties.resolution = 1; - properties.fifo_count = 0; - properties.max_batch_count = 0; - return true; -} - -extern "C" sensor_module* create(void) -{ - light_sensor_hal *sensor; - - try { - sensor = new(std::nothrow) light_sensor_hal; - } 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; -} diff --git a/src/plugins/light/light_sensor_hal.h b/src/plugins/light/light_sensor_hal.h deleted file mode 100755 index 560cb87..0000000 --- a/src/plugins/light/light_sensor_hal.h +++ /dev/null @@ -1,60 +0,0 @@ -/* - * light_sensor_hal - * - * 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 _LIGHT_SENSOR_HAL_H_ -#define _LIGHT_SENSOR_HAL_H_ - -#include - -class light_sensor_hal : public sensor_hal -{ -public: - light_sensor_hal(); - virtual ~light_sensor_hal(); - std::string get_model_id(void); - sensor_hal_type_t get_type(void); - bool enable(void); - bool disable(void); - bool set_interval(unsigned long val); - bool is_data_ready(bool wait); - virtual int get_sensor_data(sensor_data_t &data); - bool get_properties(sensor_properties_s &properties); -private: - std::string m_model_id; - std::string m_vendor; - std::string m_chip_name; - - unsigned long m_polling_interval; - - int m_adc; - - unsigned long long m_fired_time; - int m_node_handle; - - std::string m_enable_node; - std::string m_data_node; - std::string m_interval_node; - - bool m_sensorhub_controlled; - - cmutex m_value_mutex; - - bool update_value(bool wait); -}; -#endif /*_GYRO_SENSOR_HAL_CLASS_H_*/ diff --git a/src/plugins/pressure/CMakeLists.txt b/src/plugins/pressure/CMakeLists.txt index 85a8e9b..db0c209 100755 --- a/src/plugins/pressure/CMakeLists.txt +++ b/src/plugins/pressure/CMakeLists.txt @@ -2,7 +2,6 @@ cmake_minimum_required(VERSION 2.6) project(pressure CXX) SET(SENSOR_NAME pressure_sensor) -SET(SENSOR_HAL_NAME pressure_sensor_hal) include_directories(${CMAKE_CURRENT_SOURCE_DIR}) include_directories(${CMAKE_SOURCE_DIR}/src/libsensord) @@ -19,12 +18,6 @@ add_library(${SENSOR_NAME} SHARED pressure_sensor.cpp ) -add_library(${SENSOR_HAL_NAME} SHARED - pressure_sensor_hal.cpp - ) - target_link_libraries(${SENSOR_NAME} ${pressure_pkgs_LDFLAGS} "-lm") -target_link_libraries(${SENSOR_HAL_NAME} ${pressure_pkgs_LDFLAGS}) install(TARGETS ${SENSOR_NAME} DESTINATION ${CMAKE_INSTALL_LIBDIR}/sensord) -install(TARGETS ${SENSOR_HAL_NAME} DESTINATION ${CMAKE_INSTALL_LIBDIR}/sensord) diff --git a/src/plugins/pressure/pressure_sensor_hal.cpp b/src/plugins/pressure/pressure_sensor_hal.cpp deleted file mode 100755 index 544240f..0000000 --- a/src/plugins/pressure/pressure_sensor_hal.cpp +++ /dev/null @@ -1,321 +0,0 @@ -/* - * pressure_sensor_hal - * - * 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 - -using std::ifstream; -using std::string; - -#define SENSOR_TYPE_PRESSURE "PRESSURE" -#define ELEMENT_NAME "NAME" -#define ELEMENT_VENDOR "VENDOR" -#define ELEMENT_RAW_DATA_UNIT "RAW_DATA_UNIT" -#define ELEMENT_RESOLUTION "RESOLUTION" -#define ELEMENT_MIN_RANGE "MIN_RANGE" -#define ELEMENT_MAX_RANGE "MAX_RANGE" -#define ELEMENT_TEMPERATURE_RESOLUTION "TEMPERATURE_RESOLUTION" -#define ELEMENT_TEMPERATURE_OFFSET "TEMPERATURE_OFFSET" -#define ATTR_VALUE "value" - -#define SEA_LEVEL_PRESSURE 101325.0 - -pressure_sensor_hal::pressure_sensor_hal() -: m_pressure(0) -, m_sea_level_pressure(SEA_LEVEL_PRESSURE) -, m_temperature(0) -, m_polling_interval(POLL_1HZ_MS) -, m_fired_time(0) -, m_node_handle(-1) -{ - const string sensorhub_interval_node_name = "pressure_poll_delay"; - csensor_config &config = csensor_config::get_instance(); - - node_info_query query; - node_info info; - - if (!find_model_id(SENSOR_TYPE_PRESSURE, m_model_id)) { - ERR("Failed to find model id"); - throw ENXIO; - - } - - query.sensorhub_controlled = m_sensorhub_controlled = is_sensorhub_controlled(sensorhub_interval_node_name); - query.sensor_type = SENSOR_TYPE_PRESSURE; - query.key = "pressure_sensor"; - query.iio_enable_node_name = "pressure_enable"; - query.sensorhub_interval_node_name = sensorhub_interval_node_name; - - bool error = get_node_info(query, info); - - query.key = "barometer_sensor"; - error |= get_node_info(query, info); - - if (!error) { - ERR("Failed to get node info"); - throw ENXIO; - } - - show_node_info(info); - - m_data_node = info.data_node_path; - m_enable_node = info.enable_node_path; - m_interval_node = info.interval_node_path; - - if (!config.get(SENSOR_TYPE_PRESSURE, m_model_id, ELEMENT_VENDOR, m_vendor)) { - ERR("[VENDOR] is empty\n"); - throw ENXIO; - } - - INFO("m_vendor = %s", m_vendor.c_str()); - - if (!config.get(SENSOR_TYPE_PRESSURE, m_model_id, ELEMENT_NAME, m_chip_name)) { - ERR("[NAME] is empty\n"); - throw ENXIO; - } - - INFO("m_chip_name = %s", m_chip_name.c_str()); - - double min_range; - - if (!config.get(SENSOR_TYPE_PRESSURE, m_model_id, ELEMENT_MIN_RANGE, min_range)) { - ERR("[MIN_RANGE] is empty\n"); - throw ENXIO; - } - - m_min_range = (float)min_range; - INFO("m_min_range = %f\n",m_min_range); - - double max_range; - - if (!config.get(SENSOR_TYPE_PRESSURE, m_model_id, ELEMENT_MAX_RANGE, max_range)) { - ERR("[MAX_RANGE] is empty\n"); - throw ENXIO; - } - - m_max_range = (float)max_range; - INFO("m_max_range = %f\n",m_max_range); - - double raw_data_unit; - - if (!config.get(SENSOR_TYPE_PRESSURE, m_model_id, ELEMENT_RAW_DATA_UNIT, raw_data_unit)) { - ERR("[RAW_DATA_UNIT] is empty\n"); - throw ENXIO; - } - - m_raw_data_unit = (float)(raw_data_unit); - INFO("m_raw_data_unit = %f\n", m_raw_data_unit); - - if ((m_node_handle = open(m_data_node.c_str(),O_RDWR)) < 0) { - ERR("Failed to open handle(%d)", m_node_handle); - throw ENXIO; - } - - int clockId = CLOCK_MONOTONIC; - if (ioctl(m_node_handle, EVIOCSCLOCKID, &clockId) != 0) - ERR("Fail to set monotonic timestamp for %s", m_data_node.c_str()); - - INFO("pressure_sensor_hal is created!\n"); -} - -pressure_sensor_hal::~pressure_sensor_hal() -{ - close(m_node_handle); - m_node_handle = -1; - - INFO("pressure_sensor_hal is destroyed!\n"); -} - -string pressure_sensor_hal::get_model_id(void) -{ - return m_model_id; -} - -sensor_hal_type_t pressure_sensor_hal::get_type(void) -{ - return SENSOR_HAL_TYPE_PRESSURE; -} - -bool pressure_sensor_hal::enable(void) -{ - AUTOLOCK(m_mutex); - - set_enable_node(m_enable_node, m_sensorhub_controlled, true, SENSORHUB_PRESSURE_ENABLE_BIT); - - set_interval(m_polling_interval); - - m_fired_time = 0; - INFO("Pressure sensor real starting"); - return true; -} - -bool pressure_sensor_hal::disable(void) -{ - AUTOLOCK(m_mutex); - - set_enable_node(m_enable_node, m_sensorhub_controlled, false, SENSORHUB_PRESSURE_ENABLE_BIT); - - INFO("Pressure sensor real stopping"); - return true; -} - -bool pressure_sensor_hal::set_interval(unsigned long val) -{ - unsigned long long polling_interval_ns; - - AUTOLOCK(m_mutex); - - polling_interval_ns = ((unsigned long long)(val) * 1000llu * 1000llu); - - if (!set_node_value(m_interval_node, polling_interval_ns)) { - ERR("Failed to set polling resource: %s\n", m_interval_node.c_str()); - return false; - } - - INFO("Interval is changed from %dms to %dms]", m_polling_interval, val); - m_polling_interval = val; - return true; -} - -bool pressure_sensor_hal::update_value(bool wait) -{ - int pressure_raw[3] = {0,}; - bool pressure = false; - bool sea_level = false; - bool temperature = false; - int read_input_cnt = 0; - const int INPUT_MAX_BEFORE_SYN = 10; - unsigned long long fired_time = 0; - bool syn = false; - - struct input_event pressure_event; - DBG("pressure event detection!"); - - while ((syn == false) && (read_input_cnt < INPUT_MAX_BEFORE_SYN)) { - int len = read(m_node_handle, &pressure_event, sizeof(pressure_event)); - if (len != sizeof(pressure_event)) { - ERR("pressure_file read fail, read_len = %d\n",len); - return false; - } - - ++read_input_cnt; - - if (pressure_event.type == EV_REL) { - switch (pressure_event.code) { - case REL_X: - case REL_HWHEEL: - pressure_raw[0] = (int)pressure_event.value; - pressure = true; - break; - case REL_Y: - case REL_DIAL: - pressure_raw[1] = (int)pressure_event.value; - sea_level = true; - break; - case REL_Z: - case REL_WHEEL: - pressure_raw[2] = (int)pressure_event.value; - temperature = true; - break; - default: - ERR("pressure_event event[type = %d, code = %d] is unknown.", pressure_event.type, pressure_event.code); - return false; - break; - } - } else if (pressure_event.type == EV_SYN) { - syn = true; - fired_time = sensor_hal::get_timestamp(&pressure_event.time); - } else { - ERR("pressure_event event[type = %d, code = %d] is unknown.", pressure_event.type, pressure_event.code); - return false; - } - } - - AUTOLOCK(m_value_mutex); - - if (pressure) - m_pressure = pressure_raw[0]; - if (sea_level) - m_sea_level_pressure = pressure_raw[1]; - if (temperature) - m_temperature = pressure_raw[2]; - - m_fired_time = fired_time; - - DBG("m_pressure = %d, sea_level = %d, temperature = %d, time = %lluus", m_pressure, m_sea_level_pressure, m_temperature, m_fired_time); - - return true; -} - -bool pressure_sensor_hal::is_data_ready(bool wait) -{ - bool ret; - ret = update_value(wait); - return ret; -} - -int pressure_sensor_hal::get_sensor_data(sensor_data_t &data) -{ - AUTOLOCK(m_value_mutex); - data.accuracy = SENSOR_ACCURACY_GOOD; - data.timestamp = m_fired_time ; - data.value_count = 3; - data.values[0] = m_pressure; - data.values[1] = m_sea_level_pressure; - data.values[2] = m_temperature; - - return 0; -} - - -bool pressure_sensor_hal::get_properties(sensor_properties_s &properties) -{ - properties.name = m_chip_name; - properties.vendor = m_vendor; - properties.min_range = m_min_range; - properties.max_range = m_max_range; - properties.min_interval = 1; - properties.resolution = m_raw_data_unit; - properties.fifo_count = 0; - properties.max_batch_count = 0; - return true; -} - -extern "C" sensor_module* create(void) -{ - pressure_sensor_hal *sensor; - - try { - sensor = new(std::nothrow) pressure_sensor_hal; - } 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; -} diff --git a/src/plugins/pressure/pressure_sensor_hal.h b/src/plugins/pressure/pressure_sensor_hal.h deleted file mode 100755 index 07e8e1b..0000000 --- a/src/plugins/pressure/pressure_sensor_hal.h +++ /dev/null @@ -1,70 +0,0 @@ -/* - * pressure_sensor_hal - * - * 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 _PRESSURE_SENSOR_HAL_H_ -#define _PRESSURE_SENSOR_HAL_H_ - -#include - -class pressure_sensor_hal : public sensor_hal -{ -public: - pressure_sensor_hal(); - virtual ~pressure_sensor_hal(); - std::string get_model_id(void); - sensor_hal_type_t get_type(void); - - bool enable(void); - bool disable(void); - bool set_interval(unsigned long val); - bool is_data_ready(bool wait); - virtual int get_sensor_data(sensor_data_t &data); - virtual bool get_properties(sensor_properties_s &properties); -private: - std::string m_model_id; - std::string m_vendor; - std::string m_chip_name; - - float m_pressure; - float m_sea_level_pressure; - float m_temperature; - - int m_resolution; - - float m_min_range; - float m_max_range; - float m_raw_data_unit; - float m_temp_resolution; - float m_temp_offset; - unsigned long m_polling_interval; - - unsigned long long m_fired_time; - int m_node_handle; - - std::string m_enable_node; - std::string m_data_node; - std::string m_interval_node; - - bool m_sensorhub_controlled; - - cmutex m_value_mutex; - - bool update_value(bool wait); -}; -#endif /*_PRESSURE_SENSOR_HAL_CLASS_H_*/ diff --git a/src/plugins/proxi/CMakeLists.txt b/src/plugins/proxi/CMakeLists.txt index bed7b2d..7cd377e 100755 --- a/src/plugins/proxi/CMakeLists.txt +++ b/src/plugins/proxi/CMakeLists.txt @@ -2,7 +2,6 @@ cmake_minimum_required(VERSION 2.6) project(proxi CXX) SET(SENSOR_NAME proxi_sensor) -SET(SENSOR_HAL_NAME proxi_sensor_hal) include_directories(${CMAKE_CURRENT_SOURCE_DIR}) include_directories(${CMAKE_SOURCE_DIR}/src/libsensord) @@ -19,12 +18,6 @@ add_library(${SENSOR_NAME} SHARED proxi_sensor.cpp ) -add_library(${SENSOR_HAL_NAME} SHARED - proxi_sensor_hal.cpp -) - target_link_libraries(${SENSOR_NAME} ${proxi_pkgs_LDFLAGS} "-lm") -target_link_libraries(${SENSOR_HAL_NAME} ${proxi_pkgs_LDFLAGS}) install(TARGETS ${SENSOR_NAME} DESTINATION ${CMAKE_INSTALL_LIBDIR}/sensord) -install(TARGETS ${SENSOR_HAL_NAME} DESTINATION ${CMAKE_INSTALL_LIBDIR}/sensord) diff --git a/src/plugins/proxi/proxi_sensor_hal.cpp b/src/plugins/proxi/proxi_sensor_hal.cpp deleted file mode 100755 index 0d82907..0000000 --- a/src/plugins/proxi/proxi_sensor_hal.cpp +++ /dev/null @@ -1,207 +0,0 @@ -/* - * proxi_sensor_hal - * - * 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 - -using std::string; -using std::ifstream; - -#define SENSOR_TYPE_PROXI "PROXI" -#define ELEMENT_NAME "NAME" -#define ELEMENT_VENDOR "VENDOR" -#define ATTR_VALUE "value" - -#define PROXI_CODE 0x0019 - -proxi_sensor_hal::proxi_sensor_hal() -: m_state(-1) -, m_fired_time(0) -, m_node_handle(-1) -{ - const string sensorhub_interval_node_name = "prox_poll_delay"; - csensor_config &config = csensor_config::get_instance(); - - node_info_query query; - node_info info; - - if (!find_model_id(SENSOR_TYPE_PROXI, m_model_id)) { - ERR("Failed to find model id"); - throw ENXIO; - - } - - query.sensorhub_controlled = m_sensorhub_controlled = is_sensorhub_controlled(sensorhub_interval_node_name); - query.sensor_type = SENSOR_TYPE_PROXI; - query.key = "proximity_sensor"; - query.iio_enable_node_name = "proximity_enable"; - query.sensorhub_interval_node_name = sensorhub_interval_node_name; - - if (!get_node_info(query, info)) { - ERR("Failed to get node info"); - throw ENXIO; - } - - show_node_info(info); - - m_data_node = info.data_node_path; - m_enable_node = info.enable_node_path; - - if (!config.get(SENSOR_TYPE_PROXI, m_model_id, ELEMENT_VENDOR, m_vendor)) { - ERR("[VENDOR] is empty\n"); - throw ENXIO; - } - - INFO("m_vendor = %s", m_vendor.c_str()); - - if (!config.get(SENSOR_TYPE_PROXI, m_model_id, ELEMENT_NAME, m_chip_name)) { - ERR("[NAME] is empty\n"); - throw ENXIO; - } - - INFO("m_chip_name = %s\n",m_chip_name.c_str()); - - if ((m_node_handle = open(m_data_node.c_str(), O_RDWR)) < 0) { - ERR("Proxi handle(%d) open fail", m_node_handle); - throw ENXIO; - } - - int clockId = CLOCK_MONOTONIC; - if (ioctl(m_node_handle, EVIOCSCLOCKID, &clockId) != 0) - ERR("Fail to set monotonic timestamp for %s", m_data_node.c_str()); - - INFO("Proxi_sensor_hal is created!\n"); - -} - -proxi_sensor_hal::~proxi_sensor_hal() -{ - close(m_node_handle); - m_node_handle = -1; - - INFO("Proxi_sensor_hal is destroyed!\n"); -} - -string proxi_sensor_hal::get_model_id(void) -{ - return m_model_id; -} - -sensor_hal_type_t proxi_sensor_hal::get_type(void) -{ - return SENSOR_HAL_TYPE_PROXIMITY; -} - -bool proxi_sensor_hal::enable(void) -{ - AUTOLOCK(m_mutex); - - set_enable_node(m_enable_node, m_sensorhub_controlled, true, SENSORHUB_PROXIMITY_ENABLE_BIT); - - m_fired_time = 0; - INFO("Proxi sensor real starting"); - return true; -} - -bool proxi_sensor_hal::disable(void) -{ - AUTOLOCK(m_mutex); - - set_enable_node(m_enable_node, m_sensorhub_controlled, false, SENSORHUB_PROXIMITY_ENABLE_BIT); - - INFO("Proxi sensor real stopping"); - return true; -} - -bool proxi_sensor_hal::update_value(bool wait) -{ - struct input_event proxi_event; - INFO("proxi event detection!"); - - int len = read(m_node_handle, &proxi_event, sizeof(proxi_event)); - - if (len == -1) { - DBG("read(m_node_handle) is error:%s.\n", strerror(errno)); - return false; - } - - DBG("read event, len : %d , type : %x , code : %x , value : %x", len, proxi_event.type, proxi_event.code, proxi_event.value); - if ((proxi_event.type == EV_ABS) && (proxi_event.code == PROXI_CODE)) { - AUTOLOCK(m_value_mutex); - m_state = proxi_event.value; - m_fired_time = sensor_hal::get_timestamp(&proxi_event.time); - } else { - return false; - } - return true; -} - -bool proxi_sensor_hal::is_data_ready(bool wait) -{ - bool ret; - ret = update_value(wait); - return ret; -} - -int proxi_sensor_hal::get_sensor_data(sensor_data_t &data) -{ - AUTOLOCK(m_value_mutex); - data.accuracy = SENSOR_ACCURACY_UNDEFINED; - data.timestamp = m_fired_time; - data.value_count = 1; - data.values[0] = m_state; - - return 0; -} - -bool proxi_sensor_hal::get_properties(sensor_properties_s &properties) -{ - properties.name = m_chip_name; - properties.vendor = m_vendor; - properties.min_range = 0; - properties.max_range = 1; - properties.min_interval = 1; - properties.resolution = 1; - properties.fifo_count = 0; - properties.max_batch_count = 0; - return true; -} - -extern "C" sensor_module* create(void) -{ - proxi_sensor_hal *sensor; - - try { - sensor = new(std::nothrow) proxi_sensor_hal; - } 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; -} diff --git a/src/plugins/proxi/proxi_sensor_hal.h b/src/plugins/proxi/proxi_sensor_hal.h deleted file mode 100755 index d906ed6..0000000 --- a/src/plugins/proxi/proxi_sensor_hal.h +++ /dev/null @@ -1,55 +0,0 @@ -/* - * proxi_sensor_hal - * - * 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 _PROXI_SENSOR_HAL_H_ -#define _PROXI_SENSOR_HAL_H_ - -#include - -class proxi_sensor_hal : public sensor_hal -{ -public: - proxi_sensor_hal(); - virtual ~proxi_sensor_hal(); - std::string get_model_id(void); - sensor_hal_type_t get_type(void); - bool enable(void); - bool disable(void); - bool is_data_ready(bool wait); - virtual int get_sensor_data(sensor_data_t &data); - virtual bool get_properties(sensor_properties_s &properties); -private: - std::string m_model_id; - std::string m_vendor; - std::string m_chip_name; - - std::string m_enable_node; - std::string m_data_node; - - unsigned int m_state; - - unsigned long long m_fired_time; - - int m_node_handle; - bool m_sensorhub_controlled; - cmutex m_value_mutex; - - bool update_value(bool wait); -}; -#endif /*_PROXI_SENSOR_HAL_H_*/ diff --git a/src/plugins/rotation_vector/rv_raw/CMakeLists.txt b/src/plugins/rotation_vector/rv_raw/CMakeLists.txt index 223b8c8..99c993f 100755 --- a/src/plugins/rotation_vector/rv_raw/CMakeLists.txt +++ b/src/plugins/rotation_vector/rv_raw/CMakeLists.txt @@ -2,7 +2,6 @@ cmake_minimum_required(VERSION 2.6) project(rv_raw CXX) SET(SENSOR_NAME rv_raw_sensor) -SET(SENSOR_HAL_NAME rv_raw_sensor_hal) include_directories(${CMAKE_CURRENT_SOURCE_DIR}) include_directories(${CMAKE_SOURCE_DIR}/src/libsensord) @@ -22,12 +21,6 @@ add_library(${SENSOR_NAME} SHARED rv_raw_sensor.cpp ) -add_library(${SENSOR_HAL_NAME} SHARED - rv_raw_sensor_hal.cpp -) - target_link_libraries(${SENSOR_NAME} ${rv_raw_pkgs_LDFLAGS} "-lm") -target_link_libraries(${SENSOR_HAL_NAME} ${rv_raw_pkgs_LDFLAGS}) install(TARGETS ${SENSOR_NAME} DESTINATION ${CMAKE_INSTALL_LIBDIR}/sensord) -install(TARGETS ${SENSOR_HAL_NAME} DESTINATION ${CMAKE_INSTALL_LIBDIR}/sensord) diff --git a/src/plugins/rotation_vector/rv_raw/rv_raw_sensor_hal.cpp b/src/plugins/rotation_vector/rv_raw/rv_raw_sensor_hal.cpp deleted file mode 100755 index 11eb5c4..0000000 --- a/src/plugins/rotation_vector/rv_raw/rv_raw_sensor_hal.cpp +++ /dev/null @@ -1,289 +0,0 @@ -/* - * rv_raw_sensor_hal - * - * 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 - -using std::ifstream; -using std::string; - -#define SENSOR_TYPE_RV_RAW "ROTATION_VECTOR" -#define ELEMENT_NAME "NAME" -#define ELEMENT_VENDOR "VENDOR" -#define ATTR_VALUE "value" - -rv_raw_sensor_hal::rv_raw_sensor_hal() -: m_quat_a(0) -, m_quat_b(0) -, m_quat_c(0) -, m_quat_d(0) -, m_polling_interval(POLL_1HZ_MS) -{ - const string sensorhub_interval_node_name = "rot_poll_delay"; - csensor_config &config = csensor_config::get_instance(); - - node_info_query query; - node_info info; - - if (!find_model_id(SENSOR_TYPE_RV_RAW, m_model_id)) { - ERR("Failed to find model id"); - throw ENXIO; - - } - - query.sensorhub_controlled = m_sensorhub_controlled = is_sensorhub_controlled(sensorhub_interval_node_name); - query.sensor_type = SENSOR_TYPE_RV_RAW; - query.key = "rot_sensor"; - query.iio_enable_node_name = "rot_enable"; - query.sensorhub_interval_node_name = sensorhub_interval_node_name; - - if (!get_node_info(query, info)) { - ERR("Failed to get node info"); - throw ENXIO; - } - - show_node_info(info); - - m_data_node = info.data_node_path; - m_enable_node = info.enable_node_path; - m_interval_node = info.interval_node_path; - - if (!config.get(SENSOR_TYPE_RV_RAW, m_model_id, ELEMENT_VENDOR, m_vendor)) { - ERR("[VENDOR] is empty\n"); - throw ENXIO; - } - - INFO("m_vendor = %s", m_vendor.c_str()); - - if (!config.get(SENSOR_TYPE_RV_RAW, m_model_id, ELEMENT_NAME, m_chip_name)) { - ERR("[NAME] is empty\n"); - throw ENXIO; - } - - INFO("m_chip_name = %s", m_chip_name.c_str()); - - if ((m_node_handle = open(m_data_node.c_str(),O_RDWR)) < 0) { - ERR("Failed to open handle(%d)", m_node_handle); - throw ENXIO; - } - - int clockId = CLOCK_MONOTONIC; - if (ioctl(m_node_handle, EVIOCSCLOCKID, &clockId) != 0) - ERR("Fail to set monotonic timestamp for %s", m_data_node.c_str()); - - INFO("rv_raw_sensor_hal is created!\n"); - -} - -rv_raw_sensor_hal::~rv_raw_sensor_hal() -{ - close(m_node_handle); - m_node_handle = -1; - - INFO("rv_raw_sensor_hal is destroyed!\n"); -} - -string rv_raw_sensor_hal::get_model_id(void) -{ - return m_model_id; -} - -sensor_hal_type_t rv_raw_sensor_hal::get_type(void) -{ - return SENSOR_HAL_TYPE_RV_RAW; -} - -bool rv_raw_sensor_hal::enable(void) -{ - AUTOLOCK(m_mutex); - - set_enable_node(m_enable_node, m_sensorhub_controlled, true, SENSORHUB_ROTATION_VECTOR_ENABLE_BIT); - set_interval(m_polling_interval); - - m_fired_time = 0; - INFO("Rotation vector raw sensor real starting"); - return true; -} - -bool rv_raw_sensor_hal::disable(void) -{ - AUTOLOCK(m_mutex); - - set_enable_node(m_enable_node, m_sensorhub_controlled, false, SENSORHUB_ROTATION_VECTOR_ENABLE_BIT); - - INFO("Rotation vector raw sensor real stopping"); - return true; -} - -bool rv_raw_sensor_hal::set_interval(unsigned long val) -{ - unsigned long long polling_interval_ns; - - AUTOLOCK(m_mutex); - - polling_interval_ns = ((unsigned long long)(val) * 1000llu * 1000llu); - - if (!set_node_value(m_interval_node, polling_interval_ns)) { - ERR("Failed to set polling resource: %s\n", m_interval_node.c_str()); - return false; - } - - INFO("Interval is changed from %dms to %dms]", m_polling_interval, val); - m_polling_interval = val; - return true; - -} - -bool rv_raw_sensor_hal::update_value(bool wait) -{ - int rot_raw[5] = {0,}; - bool quat_a,quat_b,quat_c,quat_d,acc_rot; - int read_input_cnt = 0; - const int INPUT_MAX_BEFORE_SYN = 10; - unsigned long long fired_time = 0; - bool syn = false; - - quat_a = quat_b = quat_c = quat_d = acc_rot = false; - - struct input_event rot_input; - DBG("geo event detection!"); - - while ((syn == false) && (read_input_cnt < INPUT_MAX_BEFORE_SYN)) { - int len = read(m_node_handle, &rot_input, sizeof(rot_input)); - if (len != sizeof(rot_input)) { - ERR("rot_file read fail, read_len = %d\n",len); - return false; - } - - ++read_input_cnt; - - if (rot_input.type == EV_REL) { - switch (rot_input.code) { - case REL_X: - rot_raw[0] = (int)rot_input.value; - quat_a = true; - break; - case REL_Y: - rot_raw[1] = (int)rot_input.value; - quat_b = true; - break; - case REL_Z: - rot_raw[2] = (int)rot_input.value; - quat_c = true; - break; - case REL_RX: - rot_raw[3] = (int)rot_input.value; - quat_d = true; - break; - case REL_RY: - rot_raw[4] = (int)rot_input.value; - acc_rot = true; - break; - default: - ERR("rot_input event[type = %d, code = %d] is unknown.", rot_input.type, rot_input.code); - return false; - break; - } - } else if (rot_input.type == EV_SYN) { - syn = true; - fired_time = get_timestamp(&rot_input.time); - } else { - ERR("rot_input event[type = %d, code = %d] is unknown.", rot_input.type, rot_input.code); - return false; - } - } - - AUTOLOCK(m_value_mutex); - - if (quat_a) - m_quat_a = rot_raw[0]; - if (quat_b) - m_quat_b = rot_raw[1]; - if (quat_c) - m_quat_c = rot_raw[2]; - if (quat_d) - m_quat_d = rot_raw[3]; - if (acc_rot) - m_accuracy = rot_raw[4] - 1; /* accuracy bias: -1 */ - - m_fired_time = fired_time; - - DBG("m_quat_a = %d, m_quat_a = %d, m_quat_a = %d, m_quat_d = %d, m_accuracy = %d, time = %lluus", - m_quat_a, m_quat_a, m_quat_a, m_quat_d, m_accuracy, m_fired_time); - - return true; -} - - -bool rv_raw_sensor_hal::is_data_ready(bool wait) -{ - bool ret; - ret = update_value(wait); - return ret; -} - -int rv_raw_sensor_hal::get_sensor_data(sensor_data_t &data) -{ - const float QUAT_SIG_FIGS = 1000000.0f; - - data.accuracy = (m_accuracy == 1) ? 0 : m_accuracy; /* hdst 0 and 1 are needed to calibrate */ - data.timestamp = m_fired_time; - data.value_count = 4; - data.values[0] = (float)m_quat_a / QUAT_SIG_FIGS; - data.values[1] = (float)m_quat_b / QUAT_SIG_FIGS; - data.values[2] = (float)m_quat_c / QUAT_SIG_FIGS; - data.values[3] = (float)m_quat_d / QUAT_SIG_FIGS; - return 0; -} - -bool rv_raw_sensor_hal::get_properties(sensor_properties_t &properties) -{ - properties.name = m_chip_name; - properties.vendor = m_vendor; - properties.min_range = 0; - properties.max_range = 1200; - properties.min_interval = 1; - properties.resolution = 1; - properties.fifo_count = 0; - properties.max_batch_count = 0; - return true; -} - -extern "C" sensor_module* create(void) -{ - rv_raw_sensor_hal *sensor; - - try { - sensor = new(std::nothrow) rv_raw_sensor_hal; - } 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; -} diff --git a/src/plugins/rotation_vector/rv_raw/rv_raw_sensor_hal.h b/src/plugins/rotation_vector/rv_raw/rv_raw_sensor_hal.h deleted file mode 100755 index 382f454..0000000 --- a/src/plugins/rotation_vector/rv_raw/rv_raw_sensor_hal.h +++ /dev/null @@ -1,65 +0,0 @@ -/* - * rv_raw_sensor_hal - * - * 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 _RV_RAW_SENSOR_HAL_H_ -#define _RV_RAW_SENSOR_HAL_H_ - -#include - -class rv_raw_sensor_hal : public sensor_hal -{ -public: - rv_raw_sensor_hal(); - virtual ~rv_raw_sensor_hal(); - std::string get_model_id(void); - sensor_hal_type_t get_type(void); - bool enable(void); - bool disable(void); - bool set_interval(unsigned long val); - bool is_data_ready(bool wait); - virtual int get_sensor_data(sensor_data_t &data); - virtual bool get_properties(sensor_properties_t &properties); -private: - std::string m_model_id; - std::string m_vendor; - std::string m_chip_name; - - unsigned long m_polling_interval; - - int m_quat_a; - int m_quat_b; - int m_quat_c; - int m_quat_d; - int m_accuracy; - - unsigned long long m_fired_time; - int m_node_handle; - - std::string m_enable_node; - std::string m_data_node; - std::string m_interval_node; - - bool m_sensorhub_controlled; - - cmutex m_value_mutex; - - bool update_value(bool wait); -}; -#endif /*_RV_RAW_SENSOR_HAL_H_*/ - diff --git a/src/plugins/temperature/CMakeLists.txt b/src/plugins/temperature/CMakeLists.txt index 87dab53..a2e02a5 100755 --- a/src/plugins/temperature/CMakeLists.txt +++ b/src/plugins/temperature/CMakeLists.txt @@ -2,7 +2,6 @@ cmake_minimum_required(VERSION 2.6) project(temperature CXX) SET(SENSOR_NAME temperature_sensor) -SET(SENSOR_HAL_NAME temperature_sensor_hal) include_directories(${CMAKE_CURRENT_SOURCE_DIR}) include_directories(${CMAKE_SOURCE_DIR}/src/libsensord) @@ -22,12 +21,6 @@ add_library(${SENSOR_NAME} SHARED temperature_sensor.cpp ) -add_library(${SENSOR_HAL_NAME} SHARED - temperature_sensor_hal.cpp - ) - target_link_libraries(${SENSOR_NAME} ${temp_pkgs_LDFLAGS} "-lm") -target_link_libraries(${SENSOR_HAL_NAME} ${temp_pkgs_LDFLAGS}) install(TARGETS ${SENSOR_NAME} DESTINATION ${CMAKE_INSTALL_LIBDIR}/sensord) -install(TARGETS ${SENSOR_HAL_NAME} DESTINATION ${CMAKE_INSTALL_LIBDIR}/sensord) diff --git a/src/plugins/temperature/temperature_sensor_hal.cpp b/src/plugins/temperature/temperature_sensor_hal.cpp deleted file mode 100755 index d8952ff..0000000 --- a/src/plugins/temperature/temperature_sensor_hal.cpp +++ /dev/null @@ -1,275 +0,0 @@ -/* - * temperature_sensor_hal - * - * 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 - -using std::string; - -#define SENSOR_TYPE_TEMPERATURE "TEMPERATURE" -#define ELEMENT_NAME "NAME" -#define ELEMENT_VENDOR "VENDOR" -#define ELEMENT_RAW_DATA_UNIT "RAW_DATA_UNIT" - -#define TEMP_INPUT_NAME "temperature_sensor" -#define TEMP_IIO_ENABLE_NODE_NAME "temp_enable" -#define TEMP_SENSORHUB_POLL_NODE_NAME "temp_poll_delay" -#define INITIAL_TIME -1 - -temperature_sensor_hal::temperature_sensor_hal() -: m_temperature(0) -, m_node_handle(-1) -, m_polling_interval(POLL_1HZ_MS) -, m_fired_time(INITIAL_TIME) -{ - const string sensorhub_interval_node_name = TEMP_SENSORHUB_POLL_NODE_NAME; - - node_info_query query; - node_info info; - - if (!find_model_id(SENSOR_TYPE_TEMPERATURE, m_model_id)) { - ERR("Failed to find model id"); - throw ENXIO; - } - - query.sensorhub_controlled = is_sensorhub_controlled(sensorhub_interval_node_name); - query.sensor_type = SENSOR_TYPE_TEMPERATURE; - query.key = TEMP_INPUT_NAME; - query.iio_enable_node_name = TEMP_IIO_ENABLE_NODE_NAME; - query.sensorhub_interval_node_name = sensorhub_interval_node_name; - - if (!get_node_info(query, info)) { - ERR("Failed to get node info"); - throw ENXIO; - } - - show_node_info(info); - - m_data_node = info.data_node_path; - m_enable_node = info.enable_node_path; - m_interval_node = info.interval_node_path; - - csensor_config &config = csensor_config::get_instance(); - - if (!config.get(SENSOR_TYPE_TEMPERATURE, m_model_id, ELEMENT_VENDOR, m_vendor)) { - ERR("[VENDOR] is empty\n"); - throw ENXIO; - } - - if (!config.get(SENSOR_TYPE_TEMPERATURE, m_model_id, ELEMENT_NAME, m_chip_name)) { - ERR("[NAME] is empty\n"); - throw ENXIO; - } - - double raw_data_unit; - - if (!config.get(SENSOR_TYPE_TEMPERATURE, m_model_id, ELEMENT_RAW_DATA_UNIT, raw_data_unit)) { - ERR("[RAW_DATA_UNIT] is empty\n"); - throw ENXIO; - } - - m_raw_data_unit = (float)(raw_data_unit); - - if ((m_node_handle = open(m_data_node.c_str(),O_RDWR)) < 0) { - ERR("Failed to open handle(%d)", m_node_handle); - throw ENXIO; - } - - int clockId = CLOCK_MONOTONIC; - if (ioctl(m_node_handle, EVIOCSCLOCKID, &clockId) != 0) - ERR("Fail to set monotonic timestamp for %s", m_data_node.c_str()); - - INFO("m_vendor = %s", m_vendor.c_str()); - INFO("m_chip_name = %s", m_chip_name.c_str()); - INFO("m_raw_data_unit = %f\n", m_raw_data_unit); - INFO("temperature_sensor_hal is created!\n"); -} - -temperature_sensor_hal::~temperature_sensor_hal() -{ - close(m_node_handle); - m_node_handle = -1; - - INFO("temperature_sensor_hal is destroyed!\n"); -} - -string temperature_sensor_hal::get_model_id(void) -{ - return m_model_id; -} - -sensor_hal_type_t temperature_sensor_hal::get_type(void) -{ - return SENSOR_HAL_TYPE_TEMPERATURE; -} - -bool temperature_sensor_hal::enable(void) -{ - AUTOLOCK(m_mutex); - - set_enable_node(m_enable_node, m_sensorhub_controlled, true, - SENSORHUB_TEMPERATURE_HUMIDITY_ENABLE_BIT); - set_interval(m_polling_interval); - - m_fired_time = 0; - INFO("Temperature sensor real starting"); - return true; -} - -bool temperature_sensor_hal::disable(void) -{ - AUTOLOCK(m_mutex); - - set_enable_node(m_enable_node, m_sensorhub_controlled, false, - SENSORHUB_TEMPERATURE_HUMIDITY_ENABLE_BIT); - - INFO("Temperature sensor real stopping"); - return true; -} - -bool temperature_sensor_hal::set_interval(unsigned long val) -{ - unsigned long long polling_interval_ns; - - AUTOLOCK(m_mutex); - - polling_interval_ns = ((unsigned long long)(val) * 1000llu * 1000llu); - - if (!set_node_value(m_interval_node, polling_interval_ns)) { - ERR("Failed to set polling node: %s\n", m_interval_node.c_str()); - return false; - } - - INFO("Interval is changed from %dms to %dms]", m_polling_interval, val); - m_polling_interval = val; - return true; - -} - -bool temperature_sensor_hal::update_value(bool wait) -{ - int temperature_raw = 0; - bool temperature = false; - int read_input_cnt = 0; - const int INPUT_MAX_BEFORE_SYN = 10; - unsigned long long fired_time = 0; - bool syn = false; - - struct input_event temperature_event; - DBG("temperature event detection!"); - - while ((syn == false) && (read_input_cnt < INPUT_MAX_BEFORE_SYN)) { - int len = read(m_node_handle, &temperature_event, sizeof(temperature_event)); - if (len != sizeof(temperature_event)) { - ERR("temperature_file read fail, read_len = %d\n",len); - return false; - } - - ++read_input_cnt; - - if (temperature_event.type == EV_REL) { - switch (temperature_event.code) { - case REL_HWHEEL: - temperature_raw = (int)temperature_event.value; - temperature = true; - break; - default: - ERR("temperature_event event[type = %d, code = %d] is unknown.", temperature_event.type, temperature_event.code); - return false; - break; - } - } else if (temperature_event.type == EV_SYN) { - syn = true; - fired_time = sensor_hal::get_timestamp(&temperature_event.time); - } else { - ERR("temperature_event event[type = %d, code = %d] is unknown.", temperature_event.type, temperature_event.code); - return false; - } - } - - if (syn == false) { - ERR("EV_SYN didn't come until %d inputs had come", read_input_cnt); - return false; - } - - AUTOLOCK(m_value_mutex); - - if (temperature) - m_temperature = temperature_raw; - - m_fired_time = fired_time; - - DBG("m_temperature = %d, time = %lluus", m_temperature, m_fired_time); - - return true; -} - -bool temperature_sensor_hal::is_data_ready(bool wait) -{ - bool ret; - ret = update_value(wait); - return ret; -} - -int temperature_sensor_hal::get_sensor_data(sensor_data_t &data) -{ - AUTOLOCK(m_value_mutex); - data.accuracy = SENSOR_ACCURACY_GOOD; - data.timestamp = m_fired_time ; - data.value_count = 1; - data.values[0] = (float) m_temperature; - - return 0; -} - - -bool temperature_sensor_hal::get_properties(sensor_properties_s &properties) -{ - properties.name = m_chip_name; - properties.vendor = m_vendor; - properties.min_range = -45; - properties.max_range = 130; - properties.min_interval = 1; - properties.resolution = 1; - properties.fifo_count = 0; - properties.max_batch_count = 0; - - return true; -} - -extern "C" sensor_module* create(void) -{ - temperature_sensor_hal *sensor; - - try { - sensor = new(std::nothrow) temperature_sensor_hal; - } 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; -} diff --git a/src/plugins/temperature/temperature_sensor_hal.h b/src/plugins/temperature/temperature_sensor_hal.h deleted file mode 100755 index 1151afc..0000000 --- a/src/plugins/temperature/temperature_sensor_hal.h +++ /dev/null @@ -1,60 +0,0 @@ -/* - * temperature_sensor_hal - * - * 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 _TEMPERATURE_SENSOR_HAL_H_ -#define _TEMPERATURE_SENSOR_HAL_H_ - -#include - -class temperature_sensor_hal : public sensor_hal -{ -public: - temperature_sensor_hal(); - virtual ~temperature_sensor_hal(); - std::string get_model_id(void); - sensor_hal_type_t get_type(void); - bool enable(void); - bool disable(void); - bool set_interval(unsigned long val); - bool is_data_ready(bool wait); - virtual int get_sensor_data(sensor_data_t &data); - bool get_properties(sensor_properties_s &properties); -private: - float m_temperature; - int m_node_handle; - unsigned long m_polling_interval; - unsigned long long m_fired_time; - - std::string m_model_id; - std::string m_vendor; - std::string m_chip_name; - - float m_raw_data_unit; - - std::string m_data_node; - std::string m_enable_node; - std::string m_interval_node; - - bool m_sensorhub_controlled; - - cmutex m_value_mutex; - - bool update_value(bool wait); -}; -#endif /*_TEMPERATURE_SENSOR_HAL_CLASS_H_*/ diff --git a/src/plugins/ultraviolet/CMakeLists.txt b/src/plugins/ultraviolet/CMakeLists.txt index 218c8dd..609fa5f 100644 --- a/src/plugins/ultraviolet/CMakeLists.txt +++ b/src/plugins/ultraviolet/CMakeLists.txt @@ -2,7 +2,6 @@ cmake_minimum_required(VERSION 2.6) project(ultraviolet CXX) SET(SENSOR_NAME ultraviolet_sensor) -SET(SENSOR_HAL_NAME ultraviolet_sensor_hal) include_directories(${CMAKE_CURRENT_SOURCE_DIR}) include_directories(${CMAKE_SOURCE_DIR}/src/libsensord) @@ -19,12 +18,6 @@ add_library(${SENSOR_NAME} SHARED ultraviolet_sensor.cpp ) -add_library(${SENSOR_HAL_NAME} SHARED - ultraviolet_sensor_hal.cpp - ) - target_link_libraries(${SENSOR_NAME} ${uv_pkgs_LDFLAGS} "-lm") -target_link_libraries(${SENSOR_HAL_NAME} ${uv_pkgs_LDFLAGS}) install(TARGETS ${SENSOR_NAME} DESTINATION ${CMAKE_INSTALL_LIBDIR}/sensord) -install(TARGETS ${SENSOR_HAL_NAME} DESTINATION ${CMAKE_INSTALL_LIBDIR}/sensord) diff --git a/src/plugins/ultraviolet/ultraviolet_sensor_hal.cpp b/src/plugins/ultraviolet/ultraviolet_sensor_hal.cpp deleted file mode 100755 index ab6f210..0000000 --- a/src/plugins/ultraviolet/ultraviolet_sensor_hal.cpp +++ /dev/null @@ -1,292 +0,0 @@ -/* - * ultraviolet_sensor_hal - * - * 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 - -using std::ifstream; -using std::string; - -#define SENSOR_TYPE_ULTRAVIOLET "ULTRAVIOLET" -#define ELEMENT_NAME "NAME" -#define ELEMENT_VENDOR "VENDOR" -#define ELEMENT_RAW_DATA_UNIT "RAW_DATA_UNIT" -#define ELEMENT_MIN_RANGE "MIN_RANGE" -#define ELEMENT_MAX_RANGE "MAX_RANGE" -#define ATTR_VALUE "value" - -#define BIAS 1 - -ultraviolet_sensor_hal::ultraviolet_sensor_hal() -: m_polling_interval(POLL_1HZ_MS) -, m_ultraviolet(0) -, m_fired_time(0) -, m_node_handle(-1) -{ - const string sensorhub_interval_node_name = "uv_poll_delay"; - csensor_config &config = csensor_config::get_instance(); - - node_info_query query; - node_info info; - - if (!find_model_id(SENSOR_TYPE_ULTRAVIOLET, m_model_id)) { - ERR("Failed to find model id"); - throw ENXIO; - - } - - query.sensorhub_controlled = m_sensorhub_controlled = is_sensorhub_controlled(sensorhub_interval_node_name); - query.sensor_type = SENSOR_TYPE_ULTRAVIOLET; - query.key = "uv_sensor"; - query.iio_enable_node_name = "uv_enable"; - query.sensorhub_interval_node_name = sensorhub_interval_node_name; - - if (!get_node_info(query, info)) { - ERR("Failed to get node info"); - throw ENXIO; - } - - show_node_info(info); - - m_data_node = info.data_node_path; - m_enable_node = info.enable_node_path; - m_interval_node = info.interval_node_path; - - if (!config.get(SENSOR_TYPE_ULTRAVIOLET, m_model_id, ELEMENT_VENDOR, m_vendor)) { - ERR("[VENDOR] is empty\n"); - throw ENXIO; - } - - INFO("m_vendor = %s", m_vendor.c_str()); - - if (!config.get(SENSOR_TYPE_ULTRAVIOLET, m_model_id, ELEMENT_NAME, m_chip_name)) { - ERR("[NAME] is empty\n"); - throw ENXIO; - } - - INFO("m_chip_name = %s\n",m_chip_name.c_str()); - - double min_range; - - if (!config.get(SENSOR_TYPE_ULTRAVIOLET, m_model_id, ELEMENT_MIN_RANGE, min_range)) { - ERR("[MIN_RANGE] is empty\n"); - throw ENXIO; - } - - m_min_range = (float)min_range; - INFO("m_min_range = %f\n",m_min_range); - - double max_range; - - if (!config.get(SENSOR_TYPE_ULTRAVIOLET, m_model_id, ELEMENT_MAX_RANGE, max_range)) { - ERR("[MAX_RANGE] is empty\n"); - throw ENXIO; - } - - m_max_range = (float)max_range; - INFO("m_max_range = %f\n",m_max_range); - - double raw_data_unit; - - if (!config.get(SENSOR_TYPE_ULTRAVIOLET, m_model_id, ELEMENT_RAW_DATA_UNIT, raw_data_unit)) { - ERR("[RAW_DATA_UNIT] is empty\n"); - throw ENXIO; - } - - m_raw_data_unit = (float)(raw_data_unit); - - if ((m_node_handle = open(m_data_node.c_str(),O_RDWR)) < 0) { - ERR("Failed to open handle(%d)", m_node_handle); - throw ENXIO; - } - - int clockId = CLOCK_MONOTONIC; - if (ioctl(m_node_handle, EVIOCSCLOCKID, &clockId) != 0) - ERR("Fail to set monotonic timestamp for %s", m_data_node.c_str()); - - INFO("m_raw_data_unit = %f\n", m_raw_data_unit); - INFO("ultraviolet_sensor_hal is created!\n"); - -} - -ultraviolet_sensor_hal::~ultraviolet_sensor_hal() -{ - close(m_node_handle); - m_node_handle = -1; - - INFO("ultraviolet_sensor_hal is destroyed!\n"); -} - -string ultraviolet_sensor_hal::get_model_id(void) -{ - return m_model_id; -} - - -sensor_hal_type_t ultraviolet_sensor_hal::get_type(void) -{ - return SENSOR_HAL_TYPE_ULTRAVIOLET; -} - -bool ultraviolet_sensor_hal::enable(void) -{ - AUTOLOCK(m_mutex); - - set_enable_node(m_enable_node, m_sensorhub_controlled, true, SENSORHUB_UV_SENSOR); - set_interval(m_polling_interval); - - m_fired_time = 0; - INFO("ultraviolet sensor real starting"); - return true; -} - -bool ultraviolet_sensor_hal::disable(void) -{ - AUTOLOCK(m_mutex); - - set_enable_node(m_enable_node, m_sensorhub_controlled, false, SENSORHUB_UV_SENSOR); - - INFO("ultraviolet sensor real stopping"); - return true; -} - -bool ultraviolet_sensor_hal::set_interval(unsigned long val) -{ - unsigned long long polling_interval_ns; - - AUTOLOCK(m_mutex); - - polling_interval_ns = ((unsigned long long)(val) * 1000llu * 1000llu); - - if (!set_node_value(m_interval_node, polling_interval_ns)) { - ERR("Failed to set polling resource: %s\n", m_interval_node.c_str()); - return false; - } - - INFO("Interval is changed from %dms to %dms]", m_polling_interval, val); - m_polling_interval = val; - return true; - -} - - -bool ultraviolet_sensor_hal::update_value(bool wait) -{ - int ultraviolet_raw = -1; - bool ultraviolet_sign = false; - bool ultraviolet = false; - int read_input_cnt = 0; - const int INPUT_MAX_BEFORE_SYN = 10; - unsigned long long fired_time = 0; - bool syn = false; - - struct input_event ultraviolet_event; - DBG("ultraviolet event detection!"); - - while ((syn == false) && (read_input_cnt < INPUT_MAX_BEFORE_SYN)) { - int len = read(m_node_handle, &ultraviolet_event, sizeof(ultraviolet_event)); - if (len != sizeof(ultraviolet_event)) { - ERR("ultraviolet file read fail, read_len = %d\n",len); - return false; - } - - ++read_input_cnt; - - if (ultraviolet_event.type == EV_REL && ultraviolet_event.code == REL_X) { - ultraviolet_raw = (int)ultraviolet_event.value; - ultraviolet = true; - } else if (ultraviolet_event.type == EV_REL && ultraviolet_event.code == REL_Y) { - ultraviolet_sign = ((int)ultraviolet_event.value < 0) ? false : true; - } else if (ultraviolet_event.type == EV_SYN) { - syn = true; - fired_time = sensor_hal::get_timestamp(&ultraviolet_event.time); - } else { - ERR("ultraviolet event[type = %d, code = %d] is unknown.", ultraviolet_event.type, ultraviolet_event.code); - return false; - } - } - - AUTOLOCK(m_value_mutex); - - if (ultraviolet && ultraviolet_sign) - m_ultraviolet = ultraviolet_raw - BIAS; - else - return false; - - m_fired_time = fired_time; - - DBG("m_ultraviolet = %d, time = %lluus", m_ultraviolet, m_fired_time); - - return true; -} - -bool ultraviolet_sensor_hal::is_data_ready(bool wait) -{ - bool ret; - ret = update_value(wait); - return ret; -} - -int ultraviolet_sensor_hal::get_sensor_data(sensor_data_t &data) -{ - AUTOLOCK(m_value_mutex); - data.accuracy = SENSOR_ACCURACY_GOOD; - data.timestamp = m_fired_time; - data.value_count = 1; - data.values[0] = (float) m_ultraviolet; - - return 0; -} - -bool ultraviolet_sensor_hal::get_properties(sensor_properties_s &properties) -{ - properties.name = m_chip_name; - properties.vendor = m_vendor; - properties.min_range = m_min_range; - properties.max_range = m_max_range; - properties.min_interval = 1; - properties.resolution = m_raw_data_unit; - properties.fifo_count = 0; - properties.max_batch_count = 0; - - return true; -} - -extern "C" sensor_module* create(void) -{ - ultraviolet_sensor_hal *sensor; - - try { - sensor = new(std::nothrow) ultraviolet_sensor_hal; - } 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; -} diff --git a/src/plugins/ultraviolet/ultraviolet_sensor_hal.h b/src/plugins/ultraviolet/ultraviolet_sensor_hal.h deleted file mode 100755 index 5af37ca..0000000 --- a/src/plugins/ultraviolet/ultraviolet_sensor_hal.h +++ /dev/null @@ -1,66 +0,0 @@ -/* - * ultraviolet_sensor_hal - * - * 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 _ULTRAVIOLET_SENSOR_HAL_H_ -#define _ULTRAVIOLET_SENSOR_HAL_H_ - -#include - -class ultraviolet_sensor_hal : public sensor_hal -{ -public: - ultraviolet_sensor_hal(); - virtual ~ultraviolet_sensor_hal(); - std::string get_model_id(void); - sensor_hal_type_t get_type(void); - bool enable(void); - bool disable(void); - bool set_interval(unsigned long val); - bool is_data_ready(bool wait); - virtual int get_sensor_data(sensor_data_t &data); - bool get_properties(sensor_properties_s &properties); - -private: - std::string m_model_id; - std::string m_vendor; - std::string m_chip_name; - - float m_min_range; - float m_max_range; - float m_raw_data_unit; - - unsigned long m_polling_interval; - - int m_ultraviolet; - - unsigned long long m_fired_time; - int m_node_handle; - - std::string m_enable_node; - std::string m_data_node; - std::string m_interval_node; - - bool m_sensorhub_controlled; - - cmutex m_value_mutex; - - bool update_value(bool wait); -}; -#endif /*_ULTRAVIOLET_SENSOR_HAL_CLASS_H_*/ - diff --git a/src/server/CMakeLists.txt b/src/server/CMakeLists.txt index bb7a221..0a55dec 100755 --- a/src/server/CMakeLists.txt +++ b/src/server/CMakeLists.txt @@ -28,6 +28,6 @@ SET(SERVER_SRCS add_executable(${PROJECT_NAME} ${SERVER_SRCS}) -target_link_libraries(${PROJECT_NAME} ${server_pkgs_LDFLAGS} "sensord-server") +target_link_libraries(${PROJECT_NAME} ${server_pkgs_LDFLAGS} "sensord-server" "sensor-hal") install(TARGETS ${PROJECT_NAME} DESTINATION bin) diff --git a/src/shared/CMakeLists.txt b/src/shared/CMakeLists.txt index dc5c9b3..70b421d 100644 --- a/src/shared/CMakeLists.txt +++ b/src/shared/CMakeLists.txt @@ -19,8 +19,6 @@ include_directories(${CMAKE_SOURCE_DIR}/src/libsensord) add_library(sensord-server SHARED worker_thread.cpp - cconfig.cpp - csensor_config.cpp cvirtual_sensor_config.cpp csensor_event_queue.cpp csensor_event_dispatcher.cpp @@ -29,7 +27,6 @@ add_library(sensord-server SHARED cclient_sensor_record.cpp cplugin_info_list.cpp sensor_plugin_loader.cpp - sensor_hal.cpp sensor_base.cpp physical_sensor.cpp virtual_sensor.cpp @@ -39,9 +36,6 @@ add_library(sensord-server SHARED add_library(sensord-share SHARED cpacket.cpp csocket.cpp - cbase_lock.cpp - cmutex.cpp - common.cpp sensor_info.cpp ) @@ -56,31 +50,21 @@ install(FILES sensord-server.pc DESTINATION ${CMAKE_INSTALL_LIBDIR}/pkgconfig) install(FILES ${PROJECT_NAME}.pc DESTINATION ${CMAKE_INSTALL_LIBDIR}/pkgconfig) install(FILES worker_thread.h - cconfig.h - csensor_config.h cvirtual_sensor_config.h csensor_event_queue.h cplugin_info_list.h sensor_plugin_loader.h - sensor_hal.h sensor_base.h physical_sensor.h virtual_sensor.h - sf_common.h cpacket.h csocket.h cbase_lock.h - cmutex.h - common.h sensor_info.h iio_common.h DESTINATION ${CMAKE_INSTALL_INCLUDEDIR}/${PROJECT_NAME} ) -install(FILES - sensor_common.h - DESTINATION ${CMAKE_INSTALL_INCLUDEDIR}/sensor -) install(FILES sensor_accel.h DESTINATION ${CMAKE_INSTALL_INCLUDEDIR}/sensor/) install(FILES sensor_geomag.h DESTINATION ${CMAKE_INSTALL_INCLUDEDIR}/sensor/) install(FILES sensor_light.h DESTINATION ${CMAKE_INSTALL_INCLUDEDIR}/sensor/) -- 2.7.4 From 57df674431711e2e719327410f6c1adef300966d Mon Sep 17 00:00:00 2001 From: Ankur Date: Tue, 27 Oct 2015 12:00:45 +0530 Subject: [PATCH 16/16] Renaming libsensord folder to client updated the cmake files etc correspondingly Change-Id: I47e4cc1abbaf8218ac6f4ec299a2b70a00d8ee19 --- src/CMakeLists.txt | 2 +- src/{libsensord => client}/CMakeLists.txt | 0 src/{libsensord => client}/client.cpp | 0 src/{libsensord => client}/client_common.cpp | 0 src/{libsensord => client}/client_common.h | 0 src/{libsensord => client}/command_channel.cpp | 0 src/{libsensord => client}/command_channel.h | 0 src/{libsensord => client}/creg_event_info.h | 0 src/{libsensord => client}/csensor_event_listener.cpp | 0 src/{libsensord => client}/csensor_event_listener.h | 0 src/{libsensord => client}/csensor_handle_info.cpp | 0 src/{libsensord => client}/csensor_handle_info.h | 0 src/{libsensord => client}/poller.cpp | 0 src/{libsensord => client}/poller.h | 0 src/{libsensord => client}/sensor.pc.in | 0 src/{libsensord => client}/sensor_info_manager.cpp | 0 src/{libsensord => client}/sensor_info_manager.h | 0 src/plugins/accel/CMakeLists.txt | 2 +- src/plugins/auto_rotation/CMakeLists.txt | 2 +- src/plugins/bio_led_red/CMakeLists.txt | 2 +- src/plugins/fusion/CMakeLists.txt | 2 +- src/plugins/geo/CMakeLists.txt | 2 +- src/plugins/gravity/CMakeLists.txt | 2 +- src/plugins/gyro/CMakeLists.txt | 2 +- src/plugins/light/CMakeLists.txt | 2 +- src/plugins/linear_accel/CMakeLists.txt | 2 +- src/plugins/orientation/CMakeLists.txt | 2 +- src/plugins/pressure/CMakeLists.txt | 2 +- src/plugins/proxi/CMakeLists.txt | 2 +- src/plugins/rotation_vector/gaming_rv/CMakeLists.txt | 2 +- src/plugins/rotation_vector/geomagnetic_rv/CMakeLists.txt | 2 +- src/plugins/rotation_vector/rv/CMakeLists.txt | 2 +- src/plugins/rotation_vector/rv_raw/CMakeLists.txt | 2 +- src/plugins/sensor_fusion/CMakeLists.txt | 2 +- src/plugins/temperature/CMakeLists.txt | 2 +- src/plugins/tilt/CMakeLists.txt | 2 +- src/plugins/ultraviolet/CMakeLists.txt | 2 +- src/plugins/uncal_gyro/CMakeLists.txt | 2 +- src/server/CMakeLists.txt | 2 +- src/shared/CMakeLists.txt | 2 +- test/CMakeLists.txt | 4 ++-- 41 files changed, 26 insertions(+), 26 deletions(-) rename src/{libsensord => client}/CMakeLists.txt (100%) rename src/{libsensord => client}/client.cpp (100%) rename src/{libsensord => client}/client_common.cpp (100%) rename src/{libsensord => client}/client_common.h (100%) rename src/{libsensord => client}/command_channel.cpp (100%) rename src/{libsensord => client}/command_channel.h (100%) rename src/{libsensord => client}/creg_event_info.h (100%) rename src/{libsensord => client}/csensor_event_listener.cpp (100%) rename src/{libsensord => client}/csensor_event_listener.h (100%) rename src/{libsensord => client}/csensor_handle_info.cpp (100%) rename src/{libsensord => client}/csensor_handle_info.h (100%) rename src/{libsensord => client}/poller.cpp (100%) rename src/{libsensord => client}/poller.h (100%) rename src/{libsensord => client}/sensor.pc.in (100%) rename src/{libsensord => client}/sensor_info_manager.cpp (100%) rename src/{libsensord => client}/sensor_info_manager.h (100%) diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt index 1087d73..c3b2022 100755 --- a/src/CMakeLists.txt +++ b/src/CMakeLists.txt @@ -88,6 +88,6 @@ ENDIF() add_subdirectory(plugins/rotation_vector) add_subdirectory(server) -add_subdirectory(libsensord) +add_subdirectory(client) add_subdirectory(shared) diff --git a/src/libsensord/CMakeLists.txt b/src/client/CMakeLists.txt similarity index 100% rename from src/libsensord/CMakeLists.txt rename to src/client/CMakeLists.txt diff --git a/src/libsensord/client.cpp b/src/client/client.cpp similarity index 100% rename from src/libsensord/client.cpp rename to src/client/client.cpp diff --git a/src/libsensord/client_common.cpp b/src/client/client_common.cpp similarity index 100% rename from src/libsensord/client_common.cpp rename to src/client/client_common.cpp diff --git a/src/libsensord/client_common.h b/src/client/client_common.h similarity index 100% rename from src/libsensord/client_common.h rename to src/client/client_common.h diff --git a/src/libsensord/command_channel.cpp b/src/client/command_channel.cpp similarity index 100% rename from src/libsensord/command_channel.cpp rename to src/client/command_channel.cpp diff --git a/src/libsensord/command_channel.h b/src/client/command_channel.h similarity index 100% rename from src/libsensord/command_channel.h rename to src/client/command_channel.h diff --git a/src/libsensord/creg_event_info.h b/src/client/creg_event_info.h similarity index 100% rename from src/libsensord/creg_event_info.h rename to src/client/creg_event_info.h diff --git a/src/libsensord/csensor_event_listener.cpp b/src/client/csensor_event_listener.cpp similarity index 100% rename from src/libsensord/csensor_event_listener.cpp rename to src/client/csensor_event_listener.cpp diff --git a/src/libsensord/csensor_event_listener.h b/src/client/csensor_event_listener.h similarity index 100% rename from src/libsensord/csensor_event_listener.h rename to src/client/csensor_event_listener.h diff --git a/src/libsensord/csensor_handle_info.cpp b/src/client/csensor_handle_info.cpp similarity index 100% rename from src/libsensord/csensor_handle_info.cpp rename to src/client/csensor_handle_info.cpp diff --git a/src/libsensord/csensor_handle_info.h b/src/client/csensor_handle_info.h similarity index 100% rename from src/libsensord/csensor_handle_info.h rename to src/client/csensor_handle_info.h diff --git a/src/libsensord/poller.cpp b/src/client/poller.cpp similarity index 100% rename from src/libsensord/poller.cpp rename to src/client/poller.cpp diff --git a/src/libsensord/poller.h b/src/client/poller.h similarity index 100% rename from src/libsensord/poller.h rename to src/client/poller.h diff --git a/src/libsensord/sensor.pc.in b/src/client/sensor.pc.in similarity index 100% rename from src/libsensord/sensor.pc.in rename to src/client/sensor.pc.in diff --git a/src/libsensord/sensor_info_manager.cpp b/src/client/sensor_info_manager.cpp similarity index 100% rename from src/libsensord/sensor_info_manager.cpp rename to src/client/sensor_info_manager.cpp diff --git a/src/libsensord/sensor_info_manager.h b/src/client/sensor_info_manager.h similarity index 100% rename from src/libsensord/sensor_info_manager.h rename to src/client/sensor_info_manager.h diff --git a/src/plugins/accel/CMakeLists.txt b/src/plugins/accel/CMakeLists.txt index 4fcaf97..cab1ebf 100755 --- a/src/plugins/accel/CMakeLists.txt +++ b/src/plugins/accel/CMakeLists.txt @@ -4,7 +4,7 @@ project(accel CXX) SET(SENSOR_NAME accel_sensor) include_directories(${CMAKE_CURRENT_SOURCE_DIR}) -include_directories(${CMAKE_SOURCE_DIR}/src/libsensord) +include_directories(${CMAKE_SOURCE_DIR}/src/client) FOREACH(flag ${accel_pkgs_LDFLAGS}) SET(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} ${flag}") diff --git a/src/plugins/auto_rotation/CMakeLists.txt b/src/plugins/auto_rotation/CMakeLists.txt index 13b56e5..ff0610b 100644 --- a/src/plugins/auto_rotation/CMakeLists.txt +++ b/src/plugins/auto_rotation/CMakeLists.txt @@ -4,7 +4,7 @@ project(auto_rotation CXX) SET(SENSOR_NAME auto_rotation_sensor) include_directories(${CMAKE_CURRENT_SOURCE_DIR}) -include_directories(${CMAKE_SOURCE_DIR}/src/libsensord) +include_directories(${CMAKE_SOURCE_DIR}/src/client) FOREACH(flag ${auto_rotation_pkgs_LDFLAGS}) SET(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} ${flag}") diff --git a/src/plugins/bio_led_red/CMakeLists.txt b/src/plugins/bio_led_red/CMakeLists.txt index 1911384..51b3db8 100644 --- a/src/plugins/bio_led_red/CMakeLists.txt +++ b/src/plugins/bio_led_red/CMakeLists.txt @@ -4,7 +4,7 @@ project(bio_led_red CXX) SET(SENSOR_NAME bio_led_red_sensor) include_directories(${CMAKE_CURRENT_SOURCE_DIR}) -include_directories(${CMAKE_SOURCE_DIR}/src/libsensord) +include_directories(${CMAKE_SOURCE_DIR}/src/client) FOREACH(flag ${bio_led_red_pkgs_LDFLAGS}) SET(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} ${flag}") diff --git a/src/plugins/fusion/CMakeLists.txt b/src/plugins/fusion/CMakeLists.txt index 131a2a8..4554eae 100755 --- a/src/plugins/fusion/CMakeLists.txt +++ b/src/plugins/fusion/CMakeLists.txt @@ -4,7 +4,7 @@ project(fusion CXX) SET(SENSOR_NAME fusion_sensor) include_directories(${CMAKE_CURRENT_SOURCE_DIR}) -include_directories(${CMAKE_SOURCE_DIR}/src/libsensord) +include_directories(${CMAKE_SOURCE_DIR}/src/client) include_directories(${CMAKE_SOURCE_DIR}/src/plugins/sensor_fusion) FOREACH(flag ${fusion_pkgs_LDFLAGS}) diff --git a/src/plugins/geo/CMakeLists.txt b/src/plugins/geo/CMakeLists.txt index ee97dc7..4ecac57 100755 --- a/src/plugins/geo/CMakeLists.txt +++ b/src/plugins/geo/CMakeLists.txt @@ -4,7 +4,7 @@ project(geo CXX) SET(SENSOR_NAME geo_sensor) include_directories(${CMAKE_CURRENT_SOURCE_DIR}) -include_directories(${CMAKE_SOURCE_DIR}/src/libsensord) +include_directories(${CMAKE_SOURCE_DIR}/src/client) FOREACH(flag ${geo_pkgs_LDFLAGS}) SET(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} ${flag}") diff --git a/src/plugins/gravity/CMakeLists.txt b/src/plugins/gravity/CMakeLists.txt index 5491c47..66bf3fa 100755 --- a/src/plugins/gravity/CMakeLists.txt +++ b/src/plugins/gravity/CMakeLists.txt @@ -4,7 +4,7 @@ project(gravity CXX) SET(SENSOR_NAME gravity_sensor) include_directories(${CMAKE_CURRENT_SOURCE_DIR}) -include_directories(${CMAKE_SOURCE_DIR}/src/libsensord) +include_directories(${CMAKE_SOURCE_DIR}/src/client) include_directories(${CMAKE_SOURCE_DIR}/src/plugins/sensor_fusion) FOREACH(flag ${gravity_pkgs_LDFLAGS}) diff --git a/src/plugins/gyro/CMakeLists.txt b/src/plugins/gyro/CMakeLists.txt index c8e6d38..6f7edd6 100755 --- a/src/plugins/gyro/CMakeLists.txt +++ b/src/plugins/gyro/CMakeLists.txt @@ -4,7 +4,7 @@ project(gyro CXX) SET(SENSOR_NAME gyro_sensor) include_directories(${CMAKE_CURRENT_SOURCE_DIR}) -include_directories(${CMAKE_SOURCE_DIR}/src/libsensord) +include_directories(${CMAKE_SOURCE_DIR}/src/client) FOREACH(flag ${gyro_pkgs_LDFLAGS}) SET(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} ${flag}") diff --git a/src/plugins/light/CMakeLists.txt b/src/plugins/light/CMakeLists.txt index 71ffd6a..44dc3bb 100755 --- a/src/plugins/light/CMakeLists.txt +++ b/src/plugins/light/CMakeLists.txt @@ -4,7 +4,7 @@ project(light CXX) SET(SENSOR_NAME light_sensor) include_directories(${CMAKE_CURRENT_SOURCE_DIR}) -include_directories(${CMAKE_SOURCE_DIR}/src/libsensord) +include_directories(${CMAKE_SOURCE_DIR}/src/client) FOREACH(flag ${light_pkgs_LDFLAGS}) SET(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} ${flag}") diff --git a/src/plugins/linear_accel/CMakeLists.txt b/src/plugins/linear_accel/CMakeLists.txt index c819bf7..586dad0 100755 --- a/src/plugins/linear_accel/CMakeLists.txt +++ b/src/plugins/linear_accel/CMakeLists.txt @@ -4,7 +4,7 @@ project(linear_accel CXX) SET(SENSOR_NAME linear_accel_sensor) include_directories(${CMAKE_CURRENT_SOURCE_DIR}) -include_directories(${CMAKE_SOURCE_DIR}/src/libsensord) +include_directories(${CMAKE_SOURCE_DIR}/src/client) include_directories(${CMAKE_SOURCE_DIR}/src/plugins/sensor_fusion) FOREACH(flag ${linear_accel_pkgs_LDFLAGS}) diff --git a/src/plugins/orientation/CMakeLists.txt b/src/plugins/orientation/CMakeLists.txt index 455f0f4..15a5054 100755 --- a/src/plugins/orientation/CMakeLists.txt +++ b/src/plugins/orientation/CMakeLists.txt @@ -4,7 +4,7 @@ project(orientation CXX) SET(SENSOR_NAME orientation_sensor) include_directories(${CMAKE_CURRENT_SOURCE_DIR}) -include_directories(${CMAKE_SOURCE_DIR}/src/libsensord) +include_directories(${CMAKE_SOURCE_DIR}/src/client) include_directories(${CMAKE_SOURCE_DIR}/src/plugins/sensor_fusion) FOREACH(flag ${orientation_pkgs_LDFLAGS}) diff --git a/src/plugins/pressure/CMakeLists.txt b/src/plugins/pressure/CMakeLists.txt index db0c209..955f393 100755 --- a/src/plugins/pressure/CMakeLists.txt +++ b/src/plugins/pressure/CMakeLists.txt @@ -4,7 +4,7 @@ project(pressure CXX) SET(SENSOR_NAME pressure_sensor) include_directories(${CMAKE_CURRENT_SOURCE_DIR}) -include_directories(${CMAKE_SOURCE_DIR}/src/libsensord) +include_directories(${CMAKE_SOURCE_DIR}/src/client) FOREACH(flag ${pressure_pkgs_LDFLAGS}) SET(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} ${flag}") diff --git a/src/plugins/proxi/CMakeLists.txt b/src/plugins/proxi/CMakeLists.txt index 7cd377e..1b9d4e3 100755 --- a/src/plugins/proxi/CMakeLists.txt +++ b/src/plugins/proxi/CMakeLists.txt @@ -4,7 +4,7 @@ project(proxi CXX) SET(SENSOR_NAME proxi_sensor) include_directories(${CMAKE_CURRENT_SOURCE_DIR}) -include_directories(${CMAKE_SOURCE_DIR}/src/libsensord) +include_directories(${CMAKE_SOURCE_DIR}/src/client) FOREACH(flag ${proxi_pkgs_LDFLAGS}) SET(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} ${flag}") diff --git a/src/plugins/rotation_vector/gaming_rv/CMakeLists.txt b/src/plugins/rotation_vector/gaming_rv/CMakeLists.txt index 2d13a9f..da5bc7b 100755 --- a/src/plugins/rotation_vector/gaming_rv/CMakeLists.txt +++ b/src/plugins/rotation_vector/gaming_rv/CMakeLists.txt @@ -4,7 +4,7 @@ project(gaming_rv CXX) SET(SENSOR_NAME gaming_rv_sensor) include_directories(${CMAKE_CURRENT_SOURCE_DIR}) -include_directories(${CMAKE_SOURCE_DIR}/src/libsensord) +include_directories(${CMAKE_SOURCE_DIR}/src/client) include_directories(${CMAKE_SOURCE_DIR}/src/plugins/sensor_fusion) FOREACH(flag ${gaming_rv_pkgs_LDFLAGS}) diff --git a/src/plugins/rotation_vector/geomagnetic_rv/CMakeLists.txt b/src/plugins/rotation_vector/geomagnetic_rv/CMakeLists.txt index 56bd3c1..7055dc7 100755 --- a/src/plugins/rotation_vector/geomagnetic_rv/CMakeLists.txt +++ b/src/plugins/rotation_vector/geomagnetic_rv/CMakeLists.txt @@ -4,7 +4,7 @@ project(geomagnetic_rv CXX) SET(SENSOR_NAME geomagnetic_rv_sensor) include_directories(${CMAKE_CURRENT_SOURCE_DIR}) -include_directories(${CMAKE_SOURCE_DIR}/src/libsensord) +include_directories(${CMAKE_SOURCE_DIR}/src/client) include_directories(${CMAKE_SOURCE_DIR}/src/plugins/sensor_fusion) FOREACH(flag ${geomagnetic_rv_pkgs_LDFLAGS}) diff --git a/src/plugins/rotation_vector/rv/CMakeLists.txt b/src/plugins/rotation_vector/rv/CMakeLists.txt index 4cbb90f..dd785ff 100755 --- a/src/plugins/rotation_vector/rv/CMakeLists.txt +++ b/src/plugins/rotation_vector/rv/CMakeLists.txt @@ -4,7 +4,7 @@ project(rv CXX) SET(SENSOR_NAME rv_sensor) include_directories(${CMAKE_CURRENT_SOURCE_DIR}) -include_directories(${CMAKE_SOURCE_DIR}/src/libsensord) +include_directories(${CMAKE_SOURCE_DIR}/src/client) include_directories(${CMAKE_SOURCE_DIR}/src/plugins/sensor_fusion) FOREACH(flag ${rv_pkgs_LDFLAGS}) diff --git a/src/plugins/rotation_vector/rv_raw/CMakeLists.txt b/src/plugins/rotation_vector/rv_raw/CMakeLists.txt index 99c993f..d4cdfa1 100755 --- a/src/plugins/rotation_vector/rv_raw/CMakeLists.txt +++ b/src/plugins/rotation_vector/rv_raw/CMakeLists.txt @@ -4,7 +4,7 @@ project(rv_raw CXX) SET(SENSOR_NAME rv_raw_sensor) include_directories(${CMAKE_CURRENT_SOURCE_DIR}) -include_directories(${CMAKE_SOURCE_DIR}/src/libsensord) +include_directories(${CMAKE_SOURCE_DIR}/src/client) INCLUDE(FindPkgConfig) PKG_CHECK_MODULES(rv_raw_pkgs REQUIRED vconf) diff --git a/src/plugins/sensor_fusion/CMakeLists.txt b/src/plugins/sensor_fusion/CMakeLists.txt index 627d6ec..5779576 100755 --- a/src/plugins/sensor_fusion/CMakeLists.txt +++ b/src/plugins/sensor_fusion/CMakeLists.txt @@ -6,7 +6,7 @@ SET(EXEC_PREFIX "\${prefix}") SET(VERSION 1.0) include_directories(${CMAKE_CURRENT_SOURCE_DIR}) -include_directories(${CMAKE_SOURCE_DIR}/src/libsensord) +include_directories(${CMAKE_SOURCE_DIR}/src/client) set(PROJECT_MAJOR_VERSION "0") set(PROJECT_MINOR_VERSION "0") diff --git a/src/plugins/temperature/CMakeLists.txt b/src/plugins/temperature/CMakeLists.txt index a2e02a5..e230207 100755 --- a/src/plugins/temperature/CMakeLists.txt +++ b/src/plugins/temperature/CMakeLists.txt @@ -4,7 +4,7 @@ project(temperature CXX) SET(SENSOR_NAME temperature_sensor) include_directories(${CMAKE_CURRENT_SOURCE_DIR}) -include_directories(${CMAKE_SOURCE_DIR}/src/libsensord) +include_directories(${CMAKE_SOURCE_DIR}/src/client) INCLUDE(FindPkgConfig) PKG_CHECK_MODULES(temp_pkgs REQUIRED vconf) diff --git a/src/plugins/tilt/CMakeLists.txt b/src/plugins/tilt/CMakeLists.txt index 6bd9b97..727727c 100755 --- a/src/plugins/tilt/CMakeLists.txt +++ b/src/plugins/tilt/CMakeLists.txt @@ -4,7 +4,7 @@ project(tilt CXX) SET(SENSOR_NAME tilt_sensor) include_directories(${CMAKE_CURRENT_SOURCE_DIR}) -include_directories(${CMAKE_SOURCE_DIR}/src/libsensord) +include_directories(${CMAKE_SOURCE_DIR}/src/client) include_directories(${CMAKE_SOURCE_DIR}/src/plugins/sensor_fusion) FOREACH(flag ${tilt_pkgs_LDFLAGS}) diff --git a/src/plugins/ultraviolet/CMakeLists.txt b/src/plugins/ultraviolet/CMakeLists.txt index 609fa5f..b711897 100644 --- a/src/plugins/ultraviolet/CMakeLists.txt +++ b/src/plugins/ultraviolet/CMakeLists.txt @@ -4,7 +4,7 @@ project(ultraviolet CXX) SET(SENSOR_NAME ultraviolet_sensor) include_directories(${CMAKE_CURRENT_SOURCE_DIR}) -include_directories(${CMAKE_SOURCE_DIR}/src/libsensord) +include_directories(${CMAKE_SOURCE_DIR}/src/client) FOREACH(flag ${uv_pkgs_LDFLAGS}) SET(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} ${flag}") diff --git a/src/plugins/uncal_gyro/CMakeLists.txt b/src/plugins/uncal_gyro/CMakeLists.txt index 056962a..d983a91 100644 --- a/src/plugins/uncal_gyro/CMakeLists.txt +++ b/src/plugins/uncal_gyro/CMakeLists.txt @@ -4,7 +4,7 @@ project(uncal_gyro CXX) SET(SENSOR_NAME uncal_gyro_sensor) include_directories(${CMAKE_CURRENT_SOURCE_DIR}) -include_directories(${CMAKE_SOURCE_DIR}/src/libsensord) +include_directories(${CMAKE_SOURCE_DIR}/src/client) include_directories(${CMAKE_SOURCE_DIR}/src/plugins/sensor_fusion) FOREACH(flag ${gravity_pkgs_LDFLAGS}) diff --git a/src/server/CMakeLists.txt b/src/server/CMakeLists.txt index 0a55dec..4d4ebfb 100755 --- a/src/server/CMakeLists.txt +++ b/src/server/CMakeLists.txt @@ -13,7 +13,7 @@ FOREACH(flag ${server_pkgs_CFLAGS}) ENDFOREACH(flag) include_directories(${CMAKE_CURRENT_SOURCE_DIR}) -include_directories(${CMAKE_SOURCE_DIR}/src/libsensord) +include_directories(${CMAKE_SOURCE_DIR}/src/client) SET(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -lrt -ldl -pthread -fPIE") SET(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} -pie") diff --git a/src/shared/CMakeLists.txt b/src/shared/CMakeLists.txt index 70b421d..b11b4b1 100644 --- a/src/shared/CMakeLists.txt +++ b/src/shared/CMakeLists.txt @@ -15,7 +15,7 @@ ENDFOREACH(flag) SET(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -fPIC") include_directories(${CMAKE_CURRENT_SOURCE_DIR}) -include_directories(${CMAKE_SOURCE_DIR}/src/libsensord) +include_directories(${CMAKE_SOURCE_DIR}/src/client) add_library(sensord-server SHARED worker_thread.cpp diff --git a/test/CMakeLists.txt b/test/CMakeLists.txt index a59c341..66d24d9 100644 --- a/test/CMakeLists.txt +++ b/test/CMakeLists.txt @@ -14,7 +14,7 @@ add_definitions(-DPREFIX="${CMAKE_INSTALL_PREFIX}") configure_file(${PROJECT_NAME}.pc.in ${CMAKE_CURRENT_SOURCE_DIR}/${PROJECT_NAME}.pc @ONLY) include_directories(${CMAKE_CURRENT_SOURCE_DIR}) -include_directories(${CMAKE_SOURCE_DIR}/src/libsensord) +include_directories(${CMAKE_SOURCE_DIR}/src/client) include_directories(${CMAKE_SOURCE_DIR}/src/shared) FOREACH(flag ${pkgs_CFLAGS}) @@ -23,7 +23,7 @@ ENDFOREACH(flag) SET(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} ${EXTRA_CFLAGS}") -link_directories(../src/libsensord/) +link_directories(../src/client/) add_executable(api-test src/api-test.c) add_executable(sensor-test src/sensor-test.c src/check-sensor.c) -- 2.7.4