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")
#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"
+)
#define API __attribute__((visibility("default")))
#endif
-#include "stdbool.h"
+#include <stdbool.h>
#include <sys/types.h>
/*header for common sensor type*/
#define DEPRECATED __attribute__((deprecated))
#endif
-#include "stdbool.h"
+#include <stdbool.h>
#include <sys/types.h>
#ifndef _SENSOR_TYPES_H_
#define _SENSOR_TYPES_H_
-#include "enum_factory.h"
+#include <enum_factory.h>
#ifdef __cplusplus
extern "C"
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
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
%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}
%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
%{_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
--- /dev/null
+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)
--- /dev/null
+/*
+ * 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;
+}
--- /dev/null
+/*
+ * 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;
+}
--- /dev/null
+/*
+ * 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;
+}
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)
+++ /dev/null
-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/)
SET(RV "ON")
SET(ORIENTATION "ON")
SET(FACE_DOWN "ON")
+SET(SENSORHUB "ON")
INCLUDE_DIRECTORIES(
${CMAKE_SOURCE_DIR}/src/shared
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)
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;
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);
--- /dev/null
+/*
+ * 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;
+}
--- /dev/null
+/*
+ * 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_ */
+
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})
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;
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);
{
AUTOLOCK(m_client_mutex);
+ if (!pre_start())
+ return false;
+
++m_client;
if (m_client == 1) {
return true;
}
+bool sensor_base::pre_start(void)
+{
+ return true;
+}
+
bool sensor_base::on_start(void)
{
return true;
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);
#ifdef ENABLE_FACE_DOWN
#include <face_down_sensor.h>
#endif
+#ifdef ENABLE_SENSORHUB
+#include <pedometer_sensor.h>
+#endif
using std::vector;
using std::string;
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);
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"
-)
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)
*
*/
-#include "sensor_types.h"
+#include <sensor_types.h>
DECLARE_SENSOR_ENUM_UTIL(sensor_type_t, SENSOR_TYPE)