Merge branch 'devel/tizen' into tizen 53/108153/1
authorkibak.yoon <kibak.yoon@samsung.com>
Tue, 3 Jan 2017 07:06:00 +0000 (16:06 +0900)
committerkibak.yoon <kibak.yoon@samsung.com>
Tue, 3 Jan 2017 07:06:07 +0000 (16:06 +0900)
* devel/tizen:
  Remove profile build dependency
  sensord: add dummy api library for tv profile
  sensord: accumulate pedometer data
  sensord: version up 2.0.9
  sensord: fix incorrect return type
  sensor: enable pedometer sensor
  sensor: fix return value from false to 0
  sensord: add pre_start() that should be executed before starting regardless of clients
  sensord: install required header files instead of all header files
  sensord: change log level from error to warning for the warning case
  sensor: change the hard coded path for supporting 64bit platform

Change-Id: Ifac0c8a25a81db4a1148de8948176c7c3ecd627d
Signed-off-by: kibak.yoon <kibak.yoon@samsung.com>
31 files changed:
CMakeLists.txt
include/enum_factory.h [moved from src/shared/enum_factory.h with 100% similarity]
include/sensor_common.h [moved from src/shared/sensor_common.h with 100% similarity]
include/sensor_deprecated.h [moved from src/shared/sensor_deprecated.h with 100% similarity]
include/sensor_hal.h [moved from src/hal/sensor_hal.h with 100% similarity]
include/sensor_hal_types.h [moved from src/hal/sensor_hal_types.h with 100% similarity]
include/sensor_internal.h [moved from src/client/sensor_internal.h with 99% similarity]
include/sensor_internal_deprecated.h [moved from src/client/sensor_internal_deprecated.h with 99% similarity]
include/sensor_types.h [moved from src/shared/sensor_types.h with 99% similarity]
packaging/sensord.spec
src/client-dummy/CMakeLists.txt [new file with mode: 0644]
src/client-dummy/client_deprecated.cpp [new file with mode: 0644]
src/client-dummy/client_dummy.cpp [new file with mode: 0644]
src/client-dummy/external_client_dummy.cpp [new file with mode: 0644]
src/client-dummy/sensor.pc.in [moved from src/client/sensor.pc.in with 100% similarity]
src/client/CMakeLists.txt
src/hal/CMakeLists.txt [deleted file]
src/sensor/CMakeLists.txt
src/sensor/auto_rotation/auto_rotation_sensor.cpp
src/sensor/auto_rotation/auto_rotation_sensor.h
src/sensor/sensorhub/pedometer_sensor.cpp [new file with mode: 0644]
src/sensor/sensorhub/pedometer_sensor.h [new file with mode: 0644]
src/sensorctl/CMakeLists.txt
src/server/command_worker.cpp
src/server/command_worker.h
src/server/sensor_base.cpp
src/server/sensor_base.h
src/server/sensor_loader.cpp
src/shared/CMakeLists.txt
src/shared/csocket.cpp
src/shared/sensor_types.cpp

index bf31fa9..c5d9d08 100644 (file)
@@ -2,6 +2,8 @@ CMAKE_MINIMUM_REQUIRED(VERSION 2.6)
 PROJECT(sensord-main CXX)
 INCLUDE(GNUInstallDirs)
 
+INCLUDE_DIRECTORIES(${CMAKE_SOURCE_DIR}/include)
+
 # Common Options
 SET(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wall -O2 -omit-frame-pointer -std=gnu++0x")
 SET(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -fdata-sections -ffunction-sections")
@@ -13,8 +15,14 @@ MESSAGE("FLAGS: ${CMAKE_EXE_LINKER_FLAGS}")
 #add_definitions(-Wall -g -D_DEBUG)
 
 # Sub-directory
+ADD_SUBDIRECTORY(src/shared)
 ADD_SUBDIRECTORY(src/server)
 ADD_SUBDIRECTORY(src/client)
-ADD_SUBDIRECTORY(src/shared)
-ADD_SUBDIRECTORY(src/hal)
+ADD_SUBDIRECTORY(src/client-dummy)
 ADD_SUBDIRECTORY(src/sensorctl)
+
+INSTALL(
+       DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}/include/
+       DESTINATION ${CMAKE_INSTALL_INCLUDEDIR}/sensor
+       FILES_MATCHING PATTERN "*.h"
+)
similarity index 100%
rename from src/hal/sensor_hal.h
rename to include/sensor_hal.h
similarity index 99%
rename from src/client/sensor_internal.h
rename to include/sensor_internal.h
index 47452d4..b7e9469 100644 (file)
@@ -24,7 +24,7 @@
 #define API __attribute__((visibility("default")))
 #endif
 
-#include "stdbool.h"
+#include <stdbool.h>
 #include <sys/types.h>
 
 /*header for common sensor type*/
similarity index 99%
rename from src/client/sensor_internal_deprecated.h
rename to include/sensor_internal_deprecated.h
index a2b5b30..851ccbc 100644 (file)
@@ -24,7 +24,7 @@
 #define DEPRECATED __attribute__((deprecated))
 #endif
 
-#include "stdbool.h"
+#include <stdbool.h>
 
 #include <sys/types.h>
 
similarity index 99%
rename from src/shared/sensor_types.h
rename to include/sensor_types.h
index dab36bc..ac1f13a 100644 (file)
@@ -20,7 +20,7 @@
 #ifndef _SENSOR_TYPES_H_
 #define _SENSOR_TYPES_H_
 
-#include "enum_factory.h"
+#include <enum_factory.h>
 
 #ifdef __cplusplus
 extern "C"
index bb1cd3f..e0e45ec 100644 (file)
@@ -1,7 +1,7 @@
 Name:       sensord
 Summary:    Sensor daemon
-Version:    2.0.8
-Release:    0
+Version:    2.0.10
+Release:    1
 Group:      System/Sensor Framework
 License:    Apache-2.0
 Source0:    %{name}-%{version}.tar.gz
@@ -18,26 +18,35 @@ BuildRequires:  pkgconfig(libsystemd-daemon)
 BuildRequires:  pkgconfig(cynara-creds-socket)
 BuildRequires:  pkgconfig(cynara-client)
 BuildRequires:  pkgconfig(cynara-session)
-Requires:   libsensord = %{version}-%{release}
+
+Provides:   %{name}-profile_tv = %{version}-%{release}
+# For backward compatibility
+Provides:   libsensord = %{version}-%{release}
 
 %description
 Sensor daemon
 
-%package -n libsensord
-Summary:    Sensord library
-Group:      System/Libraries
+%package    genuine
+Summary:    Genuine Sensor Framework service daemon and shared library
 Requires:   %{name} = %{version}-%{release}
-
-%description -n libsensord
-Sensord library
-
-%package -n libsensord-devel
-Summary:    Sensord shared library
+Provides:   %{name}-profile_mobile = %{version}-%{release}
+Provides:   %{name}-profile_wearable = %{version}-%{release}
+Provides:   %{name}-profile_ivi = %{version}-%{release}
+Provides:   %{name}-profile_common = %{version}-%{release}
+
+%description genuine
+Binary replacement for sensord.
+This genuine sensord package contains actually working shared library
+of the sensor internal APIs and the sensor service daemon.
+If you want to keep using %{name} after uninstalling this, you need to reinstall %{name}.
+
+%package    devel
+Summary:    Internal Sensor API (Development)
 Group:      System/Development
-Requires:   libsensord = %{version}-%{release}
+Requires:   %{name} = %{version}-%{release}
 
-%description -n libsensord-devel
-Sensord shared library
+%description devel
+Internal Sensor API (Development)
 
 %package -n sensor-hal-devel
 Summary:    Sensord HAL interface
@@ -53,10 +62,18 @@ Group:      System/Testing
 %description -n sensor-test
 Sensor functional testing
 
+# This dummy package will be removed later.
+%package -n libsensord-devel
+Summary:    Dummy package for backward compatibility
+Requires:   sensord-devel
+
+%description -n libsensord-devel
+Some packages require libsensord-devel directly, and it causes local gbs build failures
+with the old build snapshots. This is a temporal solution to handle such cases.
+
 %prep
 %setup -q
 MAJORVER=`echo %{version} | awk 'BEGIN {FS="."}{print $1}'`
-
 cmake . -DCMAKE_INSTALL_PREFIX=%{_prefix} -DLIBDIR=%{_libdir} \
         -DMAJORVER=${MAJORVER} -DFULLVER=%{version}
 
@@ -77,21 +94,30 @@ install -m 0644 %SOURCE3 %{buildroot}%{_unitdir}
 %install_service sockets.target.wants sensord_event.socket
 %install_service sockets.target.wants sensord_command.socket
 
+ln -s libsensor.so.2 %{buildroot}%{_libdir}/libsensor.so.1
+
 %post
-systemctl daemon-reload
+/sbin/ldconfig
 
-%postun
-systemctl daemon-reload
+%files
+%manifest packaging/sensord.manifest
+%{_libdir}/libsensor.so.*
+%license LICENSE.APLv2
 
-%post -n libsensord
-ln -sf %{_libdir}/libsensor.so.%{version} %{_libdir}/libsensor.so.1
+%post   genuine
+pushd %{_libdir}
+ln -sf libsensor-genuine.so.%{version} libsensor.so.%{version}
+chsmack -a "_" libsensor.so.%{version}
+popd
 /sbin/ldconfig
 
-%postun -n libsensord
-/sbin/ldconfig
+%preun  genuine
+echo "You need to reinstall %{name}, if you need to keep using the APIs after uinstalling this."
 
-%files
+%files  genuine
 %manifest packaging/sensord.manifest
+%{_libdir}/libsensord-shared.so
+%{_libdir}/libsensor-genuine.so.*
 %{_bindir}/sensord
 %{_unitdir}/sensord.service
 %{_unitdir}/sensord_command.socket
@@ -99,29 +125,20 @@ ln -sf %{_libdir}/libsensor.so.%{version} %{_libdir}/libsensor.so.1
 %{_unitdir}/multi-user.target.wants/sensord.service
 %{_unitdir}/sockets.target.wants/sensord_command.socket
 %{_unitdir}/sockets.target.wants/sensord_event.socket
-%license LICENSE.APLv2
-
-%files -n libsensord
-%defattr(-,root,root,-)
-%manifest packaging/libsensord.manifest
-%{_libdir}/libsensor.so.*
-%{_libdir}/libsensord-shared.so
-%license LICENSE.APLv2
 
-%files -n libsensord-devel
-%defattr(-,root,root,-)
+%files  devel
+%manifest packaging/sensord.manifest
+%exclude %{_includedir}/sensor/sensor_hal.h
 %{_includedir}/sensor/*.h
 %{_libdir}/libsensor.so
 %{_libdir}/pkgconfig/sensor.pc
-%license LICENSE.APLv2
 
 %files -n sensor-hal-devel
-%defattr(-,root,root,-)
-%{_includedir}/sensor/sensor_hal.h
-%{_includedir}/sensor/sensor_hal_types.h
-%license LICENSE.APLv2
+%manifest packaging/sensord.manifest
+%{_includedir}/sensor/sensor_hal*.h
 
 %files -n sensor-test
-%defattr(-,root,root,-)
 %{_bindir}/sensorctl
+
+%files -n libsensord-devel
 %license LICENSE.APLv2
diff --git a/src/client-dummy/CMakeLists.txt b/src/client-dummy/CMakeLists.txt
new file mode 100644 (file)
index 0000000..b0f48c2
--- /dev/null
@@ -0,0 +1,39 @@
+CMAKE_MINIMUM_REQUIRED(VERSION 2.6)
+PROJECT(sensor CXX)
+
+SET(DEPENDENTS "glib-2.0 dlog")
+SET(VERSION ${FULLVER})
+SET(PREFIX ${CMAKE_INSTALL_PREFIX})
+
+SET(PC_NAME ${PROJECT_NAME})
+SET(PC_DESCRIPTION "Sensor Client library")
+SET(PC_INCLUDEDIR "${CMAKE_INSTALL_PREFIX}/${CMAKE_INSTALL_INCLUDEDIR}/sensor")
+SET(PC_REQUIRES "${DEPENDENTS}")
+SET(PC_LIBDIR "${CMAKE_INSTALL_PREFIX}/${CMAKE_INSTALL_LIBDIR}")
+SET(PC_LDFLAGS "-l${PROJECT_NAME}")
+
+INCLUDE(FindPkgConfig)
+PKG_CHECK_MODULES(DUMMY_PKGS REQUIRED ${DEPENDENTS})
+
+FOREACH(flag ${DUMMY_PKGS_CFLAGS})
+       SET(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} ${flag}")
+ENDFOREACH(flag)
+
+SET(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -fvisibility=hidden -fvisibility-inlines-hidden -g -fPIC")
+
+INCLUDE_DIRECTORIES(
+       ${CMAKE_SOURCE_DIR}/src/shared
+       ${CMAKE_CURRENT_SOURCE_DIR}
+)
+
+FILE(GLOB_RECURSE SRCS *.cpp)
+
+ADD_LIBRARY(${PROJECT_NAME} SHARED ${SRCS})
+
+TARGET_LINK_LIBRARIES(${PROJECT_NAME} ${DUMMY_PKGS_LDFLAGS})
+SET_TARGET_PROPERTIES(${PROJECT_NAME} PROPERTIES SOVERSION ${MAJORVER})
+SET_TARGET_PROPERTIES(${PROJECT_NAME} PROPERTIES VERSION ${FULLVER})
+
+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 ${PROJECT_NAME}.pc DESTINATION ${CMAKE_INSTALL_LIBDIR}/pkgconfig)
diff --git a/src/client-dummy/client_deprecated.cpp b/src/client-dummy/client_deprecated.cpp
new file mode 100644 (file)
index 0000000..e721bed
--- /dev/null
@@ -0,0 +1,84 @@
+/*
+ * sensord
+ *
+ * Copyright (c) 2016 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 <sensor_internal_deprecated.h>
+
+#ifndef API
+#define API __attribute__((visibility("default")))
+#endif
+
+API int sf_connect(sensor_type_t sensor_type)
+{
+       return OP_ERROR;
+}
+
+API int sf_disconnect(int handle)
+{
+       return OP_ERROR;
+}
+
+API int sf_start(int handle, int option)
+{
+       return OP_ERROR;
+}
+
+API int sf_stop(int handle)
+{
+       return OP_ERROR;
+}
+
+API int sf_register_event(int handle, unsigned int event_type, event_condition_t *event_condition, sensor_callback_func_t cb, void *user_data)
+{
+       return OP_ERROR;
+}
+
+API int sf_unregister_event(int handle, unsigned int event_type)
+{
+       return OP_ERROR;
+}
+
+API int sf_change_event_condition(int handle, unsigned int event_type, event_condition_t *event_condition)
+{
+       return OP_ERROR;
+}
+
+API int sf_change_sensor_option(int handle, int option)
+{
+       return OP_ERROR;
+}
+
+API int sf_send_sensorhub_data(int handle, const char* data, int data_len)
+{
+       return OP_ERROR;
+}
+
+API int sf_get_data(int handle, unsigned int data_id, sensor_data_t* sensor_data)
+{
+       return OP_ERROR;
+}
+
+API int sf_check_rotation(unsigned long *rotation)
+{
+       return OP_ERROR;
+}
+
+API int sf_is_sensor_event_available(sensor_type_t sensor_type, unsigned int event_type)
+{
+       return OP_ERROR;
+}
diff --git a/src/client-dummy/client_dummy.cpp b/src/client-dummy/client_dummy.cpp
new file mode 100644 (file)
index 0000000..574079a
--- /dev/null
@@ -0,0 +1,204 @@
+/*
+ * sensord
+ *
+ * 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 <errno.h>
+#include <sensor_common.h>
+
+#include <sensor_internal.h>
+#include <sensor_internal_deprecated.h>
+
+API int sensord_get_sensors(sensor_type_t type, sensor_t **list, int *sensor_count)
+{
+       return -ENODATA;
+}
+
+API int sensord_get_default_sensor(sensor_type_t type, sensor_t *sensor)
+{
+       return -ENODATA;
+}
+
+API bool sensord_get_sensor_list(sensor_type_t type, sensor_t **list, int *sensor_count)
+{
+       return false;
+}
+
+API sensor_t sensord_get_sensor(sensor_type_t type)
+{
+       return NULL;
+}
+
+API bool sensord_get_type(sensor_t sensor, sensor_type_t *type)
+{
+       return false;
+}
+
+API const char* sensord_get_name(sensor_t sensor)
+{
+       return NULL;
+}
+
+API const char* sensord_get_vendor(sensor_t sensor)
+{
+       return NULL;
+}
+
+API bool sensord_get_privilege(sensor_t sensor, sensor_privilege_t *privilege)
+{
+       return false;
+}
+
+API bool sensord_get_min_range(sensor_t sensor, float *min_range)
+{
+       return false;
+}
+
+API bool sensord_get_max_range(sensor_t sensor, float *max_range)
+{
+       return false;
+}
+
+API bool sensord_get_resolution(sensor_t sensor, float *resolution)
+{
+       return false;
+}
+
+API bool sensord_get_min_interval(sensor_t sensor, int *min_interval)
+{
+       return false;
+}
+
+API bool sensord_get_fifo_count(sensor_t sensor, int *fifo_count)
+{
+       return false;
+}
+
+API bool sensord_get_max_batch_count(sensor_t sensor, int *max_batch_count)
+{
+       return false;
+}
+
+API bool sensord_get_supported_event_types(sensor_t sensor, unsigned int **event_types, int *count)
+{
+       return false;
+}
+
+API bool sensord_is_supported_event_type(sensor_t sensor, unsigned int event_type, bool *supported)
+{
+       return false;
+}
+
+API bool sensord_is_wakeup_supported(sensor_t sensor)
+{
+       return false;
+}
+
+API int sensord_connect(sensor_t sensor)
+{
+       return OP_ERROR;
+}
+
+API bool sensord_disconnect(int handle)
+{
+       return false;
+}
+
+API bool sensord_register_event(int handle, unsigned int event_type, unsigned int interval, unsigned int max_batch_latency, sensor_cb_t cb, void *user_data)
+{
+       return false;
+}
+
+API bool sensord_unregister_event(int handle, unsigned int event_type)
+{
+       return false;
+}
+
+API bool sensord_register_accuracy_cb(int handle, sensor_accuracy_changed_cb_t cb, void *user_data)
+{
+       return false;
+}
+
+API bool sensord_unregister_accuracy_cb(int handle)
+{
+       return false;
+}
+
+API bool sensord_start(int handle, int option)
+{
+       return false;
+}
+
+API bool sensord_stop(int handle)
+{
+       return false;
+}
+
+API bool sensord_change_event_interval(int handle, unsigned int event_type, unsigned int interval)
+{
+       return false;
+}
+
+API bool sensord_change_event_max_batch_latency(int handle, unsigned int event_type, unsigned int max_batch_latency)
+{
+       return false;
+}
+
+API bool sensord_set_option(int handle, int option)
+{
+       return false;
+}
+
+API int sensord_set_attribute_int(int handle, int attribute, int value)
+{
+       return OP_ERROR;
+}
+
+API int sensord_set_attribute_str(int handle, int attribute, const char *value, int len)
+{
+       return OP_ERROR;
+}
+
+API bool sensord_send_sensorhub_data(int handle, const char *data, int data_len)
+{
+       return false;
+}
+
+API bool sensord_send_command(int handle, const char *command, int command_len)
+{
+       return false;
+}
+
+API bool sensord_get_data(int handle, unsigned int data_id, sensor_data_t* sensor_data)
+{
+       return false;
+}
+
+API bool sensord_flush(int handle)
+{
+       return false;
+}
+
+API bool sensord_register_hub_event(int handle, unsigned int event_type, unsigned int interval, unsigned int max_batch_latency, sensorhub_cb_t cb, void *user_data)
+{
+       return false;
+}
+
+API bool sensord_set_passive_mode(int handle, bool passive)
+{
+       return false;
+}
diff --git a/src/client-dummy/external_client_dummy.cpp b/src/client-dummy/external_client_dummy.cpp
new file mode 100644 (file)
index 0000000..8eb9221
--- /dev/null
@@ -0,0 +1,39 @@
+/*
+ * sensord
+ *
+ * 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 <errno.h>
+#include <sensor_common.h>
+
+#include <sensor_internal.h>
+#include <sensor_internal_deprecated.h>
+
+API int sensord_external_connect(const char *key, sensor_external_command_cb_t cb, void *user_data)
+{
+       return OP_ERROR;
+}
+
+API bool sensord_external_disconnect(int handle)
+{
+       return false;
+}
+
+API bool sensord_external_post(int handle, unsigned long long timestamp, const float* data, int data_cnt)
+{
+       return false;
+}
index 2f32b9c..9131d8d 100644 (file)
@@ -1,45 +1,28 @@
 CMAKE_MINIMUM_REQUIRED(VERSION 2.6)
-PROJECT(sensor CXX)
+PROJECT(sensor-genuine CXX)
 
 SET(DEPENDENTS "vconf glib-2.0 gio-2.0 dlog")
-SET(VERSION ${FULLVER})
-SET(PREFIX ${CMAKE_INSTALL_PREFIX})
-SET(EXEC_PREFIX "${CMAKE_INSTALL_PREFIX}/bin")
-
-SET(PC_NAME ${PROJECT_NAME})
-SET(PC_DESCRIPTION "Sensor Client library")
-SET(PC_INCLUDEDIR "${CMAKE_INSTALL_PREFIX}/${CMAKE_INSTALL_INCLUDEDIR}/sensor")
-SET(PC_REQUIRES "${DEPENDENTS}")
-SET(PC_LIBDIR "${CMAKE_INSTALL_PREFIX}/${CMAKE_INSTALL_LIBDIR}")
-SET(PC_LDFLAGS "-l${PROJECT_NAME}")
 
 INCLUDE(FindPkgConfig)
-PKG_CHECK_MODULES(PKGS REQUIRED ${DEPENDENTS})
+PKG_CHECK_MODULES(CLIENT_PKGS REQUIRED ${DEPENDENTS})
 
-FOREACH(flag ${PKGS_CFLAGS})
+FOREACH(flag ${CLIENT_PKGS_CFLAGS})
        SET(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} ${flag}")
 ENDFOREACH(flag)
 
 SET(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -fvisibility=hidden -fvisibility-inlines-hidden -g -fPIC")
 
 INCLUDE_DIRECTORIES(
-       ${CMAKE_SOURCE_DIR}/src/hal
        ${CMAKE_SOURCE_DIR}/src/shared
        ${CMAKE_CURRENT_SOURCE_DIR}
 )
 
 FILE(GLOB_RECURSE SRCS *.cpp)
+
 ADD_LIBRARY(${PROJECT_NAME} SHARED ${SRCS})
 
-TARGET_LINK_LIBRARIES(${PROJECT_NAME} ${PKGS_LDFLAGS} "sensord-shared")
+TARGET_LINK_LIBRARIES(${PROJECT_NAME} ${CLIENT_PKGS_LDFLAGS} "sensord-shared")
 SET_TARGET_PROPERTIES(${PROJECT_NAME} PROPERTIES SOVERSION ${MAJORVER})
 SET_TARGET_PROPERTIES(${PROJECT_NAME} PROPERTIES VERSION ${FULLVER})
 
-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(
-       DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}/ DESTINATION ${CMAKE_INSTALL_INCLUDEDIR}/sensor
-       FILES_MATCHING PATTERN "*.h"
-       )
-INSTALL(FILES ${PROJECT_NAME}.pc DESTINATION ${CMAKE_INSTALL_LIBDIR}/pkgconfig)
-
+INSTALL(TARGETS ${PROJECT_NAME} LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR} NAMELINK_SKIP)
diff --git a/src/hal/CMakeLists.txt b/src/hal/CMakeLists.txt
deleted file mode 100644 (file)
index 7119639..0000000
+++ /dev/null
@@ -1,5 +0,0 @@
-CMAKE_MINIMUM_REQUIRED(VERSION 2.6)
-PROJECT(sensor-hal CXX)
-
-INSTALL(FILES sensor_hal.h DESTINATION ${CMAKE_INSTALL_INCLUDEDIR}/sensor/)
-INSTALL(FILES sensor_hal_types.h DESTINATION ${CMAKE_INSTALL_INCLUDEDIR}/sensor/)
index 3ec60fd..272b547 100644 (file)
@@ -10,6 +10,7 @@ SET(LINEAR_ACCEL "ON")
 SET(RV "ON")
 SET(ORIENTATION "ON")
 SET(FACE_DOWN "ON")
+SET(SENSORHUB "ON")
 
 INCLUDE_DIRECTORIES(
        ${CMAKE_SOURCE_DIR}/src/shared
@@ -63,6 +64,11 @@ IF("${FACE_DOWN}" STREQUAL "ON")
        SET(SENSOR_HEADERS ${SENSOR_HEADERS} ${CMAKE_CURRENT_SOURCE_DIR}/gesture)
        SET(SENSOR_DEFINITIONS ${SENSOR_DEFINITIONS} "-DENABLE_FACE_DOWN")
 ENDIF()
+IF("${SENSORHUB}" STREQUAL "ON")
+       FILE(GLOB_RECURSE SENSOR_SRCS ${SENSOR_SRCS} ${CMAKE_CURRENT_SOURCE_DIR}/sensorhub/*.cpp)
+       SET(SENSOR_HEADERS ${SENSOR_HEADERS} ${CMAKE_CURRENT_SOURCE_DIR}/sensorhub)
+       SET(SENSOR_DEFINITIONS ${SENSOR_DEFINITIONS} "-DENABLE_SENSORHUB")
+ENDIF()
 
 MESSAGE("${SENSOR_SRCS}")
 SET(SENSOR_SRCS ${SENSOR_SRCS} PARENT_SCOPE)
index c3bd18e..71d10b4 100644 (file)
@@ -194,6 +194,12 @@ bool auto_rotation_sensor::set_wakeup(int wakeup)
        return false;
 }
 
+bool auto_rotation_sensor::pre_start(void)
+{
+       m_rotation = AUTO_ROTATION_DEGREE_UNKNOWN;
+       return true;
+}
+
 bool auto_rotation_sensor::on_start(void)
 {
        int length;
index ddd4e3c..d50f728 100644 (file)
@@ -56,6 +56,7 @@ private:
        virtual bool set_batch_latency(unsigned long latency);
        virtual bool set_wakeup(int wakeup);
 
+       virtual bool pre_start(void);
        virtual bool on_start(void);
        virtual bool on_stop(void);
 
diff --git a/src/sensor/sensorhub/pedometer_sensor.cpp b/src/sensor/sensorhub/pedometer_sensor.cpp
new file mode 100644 (file)
index 0000000..c825e41
--- /dev/null
@@ -0,0 +1,92 @@
+/*
+ * sensord
+ *
+ * Copyright (c) 2016 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 <sensor_common.h>
+#include <sensor_log.h>
+#include "pedometer_sensor.h"
+
+enum value_index {
+       IDX_STEPS = 0,
+       IDX_WALK_STEPS,
+       IDX_RUN_STEPS,
+       IDX_DISTANCE,
+       IDX_CALORIES,
+       IDX_SPEED,
+       IDX_FREQUENCY,
+       IDX_STATE,
+       IDX_WALK_UP,
+       IDX_WALK_DOWN,
+       IDX_RUN_UP,
+       IDX_RUN_DOWN,
+       IDX_STATE_EX,
+};
+
+pedometer_sensor::pedometer_sensor()
+: m_steps(0)
+, m_walk_steps(0)
+, m_run_steps(0)
+, m_walk_up_steps(0)
+, m_walk_down_steps(0)
+, m_run_up_steps(0)
+, m_run_down_steps(0)
+, m_distance(0)
+, m_calories(0)
+{
+       set_permission(SENSOR_PERMISSION_BIO);
+
+       _I("pedometer_sensor is created : %#x", this);
+}
+
+pedometer_sensor::~pedometer_sensor()
+{
+}
+
+bool pedometer_sensor::on_event(const sensor_data_t *data, int data_len, int remains)
+{
+       if (data_len == sizeof(sensorhub_data_t))
+               return false;
+
+       accumulate((sensor_pedometer_data_t*)data);
+       return true;
+}
+
+void pedometer_sensor::accumulate(sensor_pedometer_data_t *data)
+{
+       m_steps += data->values[IDX_STEPS];
+       m_walk_steps += data->values[IDX_WALK_STEPS];
+       m_run_steps += data->values[IDX_RUN_STEPS];
+       m_distance += data->values[IDX_DISTANCE];
+       m_calories += data->values[IDX_CALORIES];
+
+       m_walk_up_steps += data->values[IDX_WALK_UP];
+       m_walk_down_steps += data->values[IDX_WALK_DOWN];
+       m_run_up_steps += data->values[IDX_RUN_UP];
+       m_run_down_steps += data->values[IDX_RUN_DOWN];
+
+       data->values[IDX_STEPS] = m_steps;
+       data->values[IDX_WALK_STEPS] = m_walk_steps;
+       data->values[IDX_RUN_STEPS] = m_run_steps;
+       data->values[IDX_DISTANCE] = m_distance;
+       data->values[IDX_CALORIES] = m_calories;
+
+       data->values[IDX_WALK_UP] = m_walk_up_steps;
+       data->values[IDX_WALK_DOWN] = m_walk_down_steps;
+       data->values[IDX_RUN_UP] = m_run_up_steps;
+       data->values[IDX_RUN_DOWN] = m_run_down_steps;
+}
diff --git a/src/sensor/sensorhub/pedometer_sensor.h b/src/sensor/sensorhub/pedometer_sensor.h
new file mode 100644 (file)
index 0000000..16f1ac7
--- /dev/null
@@ -0,0 +1,47 @@
+/*
+ * sensord
+ *
+ * Copyright (c) 2016 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 _PEDOMETER_SENSOR_H_
+#define _PEDOMETER_SENSOR_H_
+
+#include <physical_sensor.h>
+
+class pedometer_sensor : public physical_sensor {
+public:
+       pedometer_sensor();
+       virtual ~pedometer_sensor();
+
+       bool on_event(const sensor_data_t *data, int data_len, int remains);
+
+private:
+       unsigned long long m_steps;
+       unsigned long long m_walk_steps;
+       unsigned long long m_run_steps;
+       unsigned long long m_walk_up_steps;
+       unsigned long long m_walk_down_steps;
+       unsigned long long m_run_up_steps;
+       unsigned long long m_run_down_steps;
+       double m_distance;
+       double m_calories;
+
+       void accumulate(sensor_pedometer_data_t *data);
+};
+
+#endif /* _PEDOMETER_SENSOR_H_ */
+
index 1accf2a..2b9c675 100644 (file)
@@ -25,4 +25,4 @@ FILE(GLOB_RECURSE SRCS *.cpp)
 ADD_EXECUTABLE(${PROJECT_NAME} ${SRCS})
 SET_TARGET_PROPERTIES(${PROJECT_NAME} PROPERTIES LINKER_LANGUAGE CXX)
 TARGET_LINK_LIBRARIES(${PROJECT_NAME} ${pkgs_LDFLAGS} sensor)
-INSTALL(TARGETS ${PROJECT_NAME} DESTINATION /usr/bin/)
+INSTALL(TARGETS ${PROJECT_NAME} DESTINATION ${CMAKE_INSTALL_BINDIR})
index 8d57968..2436ab8 100644 (file)
@@ -91,7 +91,7 @@ void command_worker::init_cmd_handlers(void)
        m_cmd_handlers[CMD_FLUSH]                               = &command_worker::cmd_flush;
 }
 
-int command_worker::create_sensor_raw_list(int client_perms, std::vector<raw_data_t *> &raw_list)
+size_t command_worker::create_sensor_raw_list(int client_perms, std::vector<raw_data_t *> &raw_list)
 {
        size_t total_raw_data_size = 0;
        vector<sensor_base *> sensors;
index 3e1b62c..e6dff1d 100644 (file)
@@ -45,7 +45,7 @@ private:
        static sensor_raw_data_map m_sensor_raw_data_map;
 
        static void init_cmd_handlers(void);
-       static int create_sensor_raw_list(int client_perms, std::vector<raw_data_t *> &raw_list);
+       static size_t create_sensor_raw_list(int client_perms, std::vector<raw_data_t *> &raw_list);
        static void get_sensor_list(int permissions, cpacket &sensor_list);
 
        static bool working(void *ctx);
index a5a40bb..24e16a7 100644 (file)
@@ -121,6 +121,9 @@ bool sensor_base::start(void)
 {
        AUTOLOCK(m_client_mutex);
 
+       if (!pre_start())
+               return false;
+
        ++m_client;
 
        if (m_client == 1) {
@@ -348,6 +351,11 @@ bool sensor_base::set_batch_latency(unsigned long latency)
        return true;
 }
 
+bool sensor_base::pre_start(void)
+{
+       return true;
+}
+
 bool sensor_base::on_start(void)
 {
        return true;
index 04883d8..89b88ed 100644 (file)
@@ -103,6 +103,7 @@ private:
        virtual bool set_interval(unsigned long interval);
        virtual bool set_batch_latency(unsigned long latency);
 
+       virtual bool pre_start(void);
        virtual bool on_start(void);
        virtual bool on_stop(void);
 
index c25d07a..614e057 100644 (file)
@@ -53,6 +53,9 @@
 #ifdef ENABLE_FACE_DOWN
 #include <face_down_sensor.h>
 #endif
+#ifdef ENABLE_SENSORHUB
+#include <pedometer_sensor.h>
+#endif
 
 using std::vector;
 using std::string;
@@ -169,6 +172,9 @@ void sensor_loader::create_sensors(void)
        create_physical_sensors<hrm_sensor>(HRM_LED_GREEN_SENSOR);
        create_physical_sensors<hrm_sensor>(HRM_LED_IR_SENSOR);
        create_physical_sensors<hrm_sensor>(HRM_LED_RED_SENSOR);
+#ifdef ENABLE_SENSORHUB
+       create_physical_sensors<pedometer_sensor>(HUMAN_PEDOMETER_SENSOR);
+#endif
 
        create_physical_sensors<physical_sensor>(UNKNOWN_SENSOR);
 
index 8b8416e..69b88ed 100644 (file)
@@ -22,7 +22,3 @@ ADD_LIBRARY(${PROJECT_NAME} SHARED ${SRCS})
 TARGET_LINK_LIBRARIES(${PROJECT_NAME} ${SHARED_PKGS_LDFLAGS})
 
 INSTALL(TARGETS ${PROJECT_NAME} DESTINATION ${CMAKE_INSTALL_LIBDIR})
-INSTALL(
-       DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}/ DESTINATION ${CMAKE_INSTALL_INCLUDEDIR}/sensor
-       FILES_MATCHING PATTERN "*.h"
-)
index 4a97a3c..ca9ec4f 100644 (file)
@@ -324,15 +324,15 @@ ssize_t csocket::send(const void *buffer, size_t size) const
 
        if (ret == -1) {
                _ERRNO(errno, _E, "select error: sock_fd: %d\n for %s", m_sock_fd, get_client_name());
-               return false;
+               return 0;
        } else if (!ret) {
                _ERRNO(errno, _E, "select timeout: %d seconds elapsed for %s", tv.tv_sec, get_client_name());
-               return false;
+               return 0;
        }
 
        if (!FD_ISSET(m_sock_fd, &write_fds)) {
                _ERRNO(errno, _E, "select failed for %s, nothing to write, m_sock_fd : %d", get_client_name(), m_sock_fd);
-               return false;
+               return 0;
        }
 
        if (m_sock_type == SOCK_STREAM)
index 084e6b8..037ddc9 100644 (file)
@@ -17,6 +17,6 @@
  *
  */
 
-#include "sensor_types.h"
+#include <sensor_types.h>
 
 DECLARE_SENSOR_ENUM_UTIL(sensor_type_t, SENSOR_TYPE)