project(sensor_framework_main CXX)
include(FindPkgConfig)
-pkg_check_modules(rpkgs REQUIRED sf_common vconf)
+pkg_check_modules(rpkgs REQUIRED sf_common vconf heynoti)
add_definitions(${rpkgs_CFLAGS})
# to install pkgconfig setup file.
set(CMAKE_VERBOSE_MAKEFILE OFF)
add_definitions(-Wall -O3 -omit-frame-pointer)
-add_definitions(-Wall -g -D_DEBUG)
+#add_definitions(-Wall -g -D_DEBUG)
FIND_PROGRAM(UNAME NAMES uname)
EXEC_PROGRAM("${UNAME}" ARGS "-m" OUTPUT_VARIABLE "ARCH")
-IF("${ARCH}" MATCHES "^arm.*")
+if(NOT "${PLATFORM_ARCH}" MATCHES "arch_sdk")
ADD_DEFINITIONS("-DTARGET")
MESSAGE("add -DTARGET")
-ELSE("${ARCH}" MATCHES "^arm.*")
+else()
ADD_DEFINITIONS("-DSIMULATOR")
MESSAGE("add -DSIMULATOR")
-ENDIF("${ARCH}" MATCHES "^arm.*")
+endif()
add_subdirectory(server)
+if("${PLATFORM_ARCH}" MATCHES "arch_ia")
+ CONFIGURE_FILE(sf_sensor.conf.in sf_sensor.conf @ONLY)
+ CONFIGURE_FILE(sf_filter.conf.in sf_filter.conf @ONLY)
+ CONFIGURE_FILE(sf_processor-mfld-blackbay.conf sf_processor.conf @ONLY)
+ CONFIGURE_FILE(sf_data_stream-mfld-blackbay.conf sf_data_stream.conf @ONLY)
+ install(FILES
+ sf_sensor.conf
+ sf_filter.conf
+ sf_processor.conf
+ sf_data_stream.conf
+ DESTINATION etc)
+endif()
-IF("${ARCH}" MATCHES "^arm.*")
+if("${PLATFORM_ARCH}" MATCHES "arch_arm")
CONFIGURE_FILE(sf_sensor.conf.in sf_sensor.conf @ONLY)
CONFIGURE_FILE(sf_filter.conf.in sf_filter.conf @ONLY)
CONFIGURE_FILE(sf_processor.conf.in sf_processor.conf @ONLY)
sf_processor.conf
sf_data_stream.conf
DESTINATION etc)
-ELSE("${ARCH}" MATCHES "^arm.*")
+endif()
+if("${PLATFORM_ARCH}" MATCHES "arch_sdk")
CONFIGURE_FILE(sf_sensor_sim.conf.in sf_sensor.conf @ONLY)
CONFIGURE_FILE(sf_filter_sim.conf.in sf_filter.conf @ONLY)
CONFIGURE_FILE(sf_processor_sim.conf.in sf_processor.conf @ONLY)
sf_processor.conf
sf_data_stream.conf
DESTINATION etc)
-ENDIF("${ARCH}" MATCHES "^arm.*")
+endif()
install(PROGRAMS sfsvc DESTINATION /etc/rc.d/init.d)
--- /dev/null
+* Tue Jan 15 2013 Telle-Tiia Pitkänen <telle-tiia.pitkanen@ixonos.com> submit/tizen_2.0/20130109.005631@b28fbf6
+- PR3 required changes added.
+
+- code sync
+- Add sensor information in configure file
+- Code sync
+- code sync
+- merge systemd code
+- update configure file
+
+* Wed Aug 15 2012 Chris E Ferron <chris.e.ferron@linux.intel.com> 8b5e9a1
+- Due to blockages, change the power-manager from being launched as a user mode to a system mode service
+
+* Mon Jul 09 2012 Karol Lewandowski <k.lewandowsk@samsung.com> c964fd1
+- Use 'simple' service type.
+
+* Mon Jun 25 2012 Patrick McCarty <patrick.mccarty@linux.intel.com> - 0.2.5
+- Add systemd service file
+- Create initscript symlinks in %install instead of %post
+
--- /dev/null
+<manifest>
+ <request>
+ <domain name="_"/>
+ </request>
+</manifest>
--- /dev/null
+
+[Unit]
+Description=Start the sensor framework
+
+[Service]
+Type=simple
+ExecStart=/usr/bin/sf_server -s /usr/etc/sf_sensor.conf -f /usr/etc/sf_filter.conf -p /usr/etc/sf_processor.conf -d /usr/etc/sf_data_stream.conf
+
+[Install]
+WantedBy=multi-user.target
+
+#sbs-git:slp/pkgs/s/sensor-framework sensor-framework 0.2.5 f585f766aa864c3857e93c776846771899a4fa41
Name: sensor-framework
Summary: Sensor framework
-Version: 0.2.5
+Version: 0.2.26
Release: 1
Group: TO_BE/FILLED_IN
-License: LGPL
+License: Apache 2.0
Source0: %{name}-%{version}.tar.gz
+Source1: sensor-framework.service
+%ifarch %{arm}
+ #arm build
+ %define _archtype arch_arm
+%else
+ #ix86 build
+ %if 0%{?simulator}
+ #emul build target
+ %define _archtype arch_sdk
+ %else
+ #IA build target
+ %define _archtype arch_ia
+ %endif
+%endif
Requires(post): /usr/bin/vconftool
BuildRequires: cmake
BuildRequires: pkgconfig(glib-2.0)
BuildRequires: pkgconfig(sf_common)
BuildRequires: pkgconfig(vconf)
+BuildRequires: pkgconfig(heynoti)
+
%description
Sensor framework
%setup -q
%build
-cmake . -DCMAKE_INSTALL_PREFIX=/usr
+cmake . -DCMAKE_INSTALL_PREFIX=/usr -DPLATFORM_ARCH=%{_archtype}
make %{?jobs:-j%jobs}
%install
%make_install
+mkdir -p %{buildroot}/usr/share/license
+cp LICENSE %{buildroot}/usr/share/license/%{name}
+
+mkdir -p %{buildroot}%{_libdir}/systemd/system/multi-user.target.wants
+install -m 0644 %SOURCE1 %{buildroot}%{_libdir}/systemd/system/
+ln -s ../sensor-framework.service %{buildroot}%{_libdir}/systemd/system/multi-user.target.wants/sensor-framework.service
+
+# FIXME: remove initscripts after we start using systemd
+mkdir -p %{buildroot}%{_sysconfdir}/rc.d/rc3.d
+mkdir -p %{buildroot}%{_sysconfdir}/rc.d/rc4.d
+ln -s ../init.d/sfsvc %{buildroot}%{_sysconfdir}/rc.d/rc3.d/S40sfsvc
+ln -s ../init.d/sfsvc %{buildroot}%{_sysconfdir}/rc.d/rc4.d/S40sfsvc
+
%post
-vconftool set -t int memory/sensor/10001 0 -i
-vconftool set -t int memory/sensor/10002 0 -i
-vconftool set -t int memory/sensor/10004 0 -i
-vconftool set -t int memory/sensor/10008 0 -i
-vconftool set -t int memory/sensor/20001 0 -i
-vconftool set -t int memory/sensor/20002 0 -i
-vconftool set -t int memory/sensor/20004 0 -i
-vconftool set -t int memory/sensor/200001 0 -i
-vconftool set -t int memory/sensor/40001 0 -i
-vconftool set -t int memory/sensor/40002 0 -i
-vconftool set -t int memory/sensor/800001 0 -i
-vconftool set -t int memory/sensor/800002 0 -i
-vconftool set -t int memory/sensor/800004 0 -i
-vconftool set -t int memory/sensor/800008 0 -i
-vconftool set -t int memory/sensor/800010 0 -i
-vconftool set -t int memory/sensor/800020 0 -i
-vconftool set -t int memory/sensor/800040 0 -i
-vconftool set -t int memory/sensor/80001 0 -i
-vconftool set -t int memory/sensor/80002 0 -i
+vconftool set -t int memory/private/sensor/10001 0 -i
+vconftool set -t int memory/private/sensor/10002 0 -i
+vconftool set -t int memory/private/sensor/10004 0 -i
+vconftool set -t int memory/private/sensor/10008 0 -i
+vconftool set -t int memory/private/sensor/10010 0 -i
+vconftool set -t int memory/private/sensor/20001 0 -i
+vconftool set -t int memory/private/sensor/20002 0 -i
+vconftool set -t int memory/private/sensor/20004 0 -i
+vconftool set -t int memory/private/sensor/200001 0 -i
+vconftool set -t int memory/private/sensor/40001 0 -i
+vconftool set -t int memory/private/sensor/40002 0 -i
+vconftool set -t int memory/private/sensor/800001 0 -i
+vconftool set -t int memory/private/sensor/800002 0 -i
+vconftool set -t int memory/private/sensor/800004 0 -i
+vconftool set -t int memory/private/sensor/800008 0 -i
+vconftool set -t int memory/private/sensor/800010 0 -i
+vconftool set -t int memory/private/sensor/800020 0 -i
+vconftool set -t int memory/private/sensor/800040 0 -i
+vconftool set -t int memory/private/sensor/800080 0 -i
+vconftool set -t int memory/private/sensor/800100 0 -i
+vconftool set -t int memory/private/sensor/800200 0 -i
+vconftool set -t int memory/private/sensor/800400 0 -i
+vconftool set -t int memory/private/sensor/800800 0 -i
+vconftool set -t int memory/private/sensor/80001 0 -i
+vconftool set -t int memory/private/sensor/80002 0 -i
+vconftool set -t int memory/private/sensor/poweroff 0 -i
%files
-%defattr(-,root,root,-)
-/usr/bin/sf_server
-%{_sysconfdir}/rc.d/init.d/sfsvc
+%manifest sensor-framework.manifest
+%attr(0755,root,root) %{_sysconfdir}/rc.d/init.d/sfsvc
+%{_sysconfdir}/rc.d/rc3.d/S40sfsvc
+%{_sysconfdir}/rc.d/rc4.d/S40sfsvc
+%{_bindir}/sf_server
%attr(0644,root,root)/usr/etc/sf_data_stream.conf
%attr(0644,root,root)/usr/etc/sf_filter.conf
%attr(0644,root,root)/usr/etc/sf_processor.conf
%attr(0644,root,root)/usr/etc/sf_sensor.conf
+%{_libdir}/systemd/system/sensor-framework.service
+%{_libdir}/systemd/system/multi-user.target.wants/sensor-framework.service
+/usr/share/license/%{name}
--- /dev/null
+<manifest>
+ <define>
+ <domain name="sensor-framework" />
+ <provide>
+ <label name="sensor-framework::server" />
+ </provide>
+ </define>
+ <request>
+ <domain name="sensor-framework" />
+ </request>
+ <assign>
+ <filesystem path="/etc/rc.d/init.d/sfsvc" label="_" exec_label="none" />
+ <filesystem path="/etc/rc.d/rc3.d/S40sfsvc" label="_" exec_label="none" />
+ <filesystem path="/etc/rc.d/rc4.d/S40sfsvc" label="_" exec_label="none" />
+ </assign>
+</manifest>
void sf_main_loop(void);
+ void sf_main_loop_stop(void);
private:
static void *cmd_byebye(void *cmd_item, void *data);
//! Get value
static void *cmd_get_value(void *cmd_item, void *data);
- //! Wait event
- static void *cmd_wait_event(void *cmd_item, void *data);
//! Start
static void *cmd_start(void *cmd_item, void *data);
//! Stop
static void *cmd_get_struct(void *cmd_item, void *data);
- static void *cb_event_handler(cprocessor_module *, void *);
- static void cb_rm_cb_data(void *);
-
-
cmd_func_t m_cmd_handler[CMD_LAST];
};
filter = next_filter;
}
- if (m_name) free(m_name);
+ if (m_name) {
+ free(m_name);
+ m_name = NULL;
+ }
}
#include <resource_str.h>
#include <glib.h>
+#include <vconf.h>
+#include <heynoti.h>
+#define POWEROFF_NOTI_NAME "power_off_start"
+#define SF_POWEROFF_VCONF "memory/private/sensor/poweroff"
+
+static GMainLoop *g_mainloop;
+static int g_poweroff_fd = -1;
+
+static void system_poweroff_cb(void *data)
+{
+ vconf_set_int(SF_POWEROFF_VCONF, 1);
+ heynoti_close(g_poweroff_fd);
+ g_poweroff_fd = -1;
+ DBG("system_poweroff_cb called");
+}
cserver::cserver()
{
m_cmd_handler[CMD_HELLO] = cmd_hello;
m_cmd_handler[CMD_BYEBYE] = cmd_byebye;
m_cmd_handler[CMD_GET_VALUE] = cmd_get_value;
- m_cmd_handler[CMD_WAIT_EVENT] = cmd_wait_event;
m_cmd_handler[CMD_START] = cmd_start;
m_cmd_handler[CMD_STOP] = cmd_stop;
m_cmd_handler[CMD_REG] = cmd_register_event;
-void *cserver::cmd_wait_event(void *cmd_item, void *data)
-{
- cmd_queue_item_t *queue_item = (cmd_queue_item_t*)cmd_item;
- csock::thread_arg_t *arg = queue_item->arg;
- client_ctx_t *ctx = (client_ctx_t*)arg->client_ctx;
- cpacket *packet = queue_item->packet;
- long return_value =0;
-
- if (arg->worker->state() != cipc_worker::START) {
- ERR("Client disconnected (%s)\n",__FUNCTION__);
- return (void*)NULL;
- }
-
- DBG("CMD_WAIT_EVENT Handler invoked\n");
-
- if ( !(ctx->module) ) {
- ERR("Error ctx->module ptr check(%s)", __FUNCTION__);
- goto out;
- }
-
- if (ctx->module->type() == cdata_stream::SF_DATA_STREAM) {
- cdata_stream *data_stream;
- data_stream = (cdata_stream*)ctx->module;
- data_stream->add_event_callback(cb_event_handler, arg, NULL);
- DBG("Add event callback for data stream\n");
- return (void*)NULL;
-
- } else if (ctx->module->type() == cprocessor_module::SF_PLUGIN_PROCESSOR) {
- cprocessor_module *processor;
- processor = (cprocessor_module*)ctx->module;
- processor->add_event_callback(cb_event_handler, arg, NULL);
- DBG("Add event callback for processor\n");
- return (void*)NULL;
-
- } else if (ctx->module->type() == cfilter_module::SF_PLUGIN_FILTER) {
- cfilter_module *filter;
- filter = (cfilter_module*)ctx->module;
- filter->is_data_ready(true);
- DBG("wait to ready for data in filter\n");
-
- } else if (ctx->module->type() == csensor_module::SF_PLUGIN_SENSOR) {
- csensor_module *sensor;
- sensor = (csensor_module*)ctx->module;
- sensor->is_data_ready(true);
- DBG("wait to ready for data in sensor\n");
-
- } else {
- return_value = -1; //! Unknown status
- ERR("Unsupported command for the attached module (%s)\n",__FUNCTION__);
- }
-
-out:
-
- csock ipc(arg->client_handle, csock::SOCK_TCP);
- cmd_done_t *payload;
- ipc.set_on_close(false);
-
- packet->set_cmd(CMD_DONE);
- packet->set_payload_size(sizeof(cmd_done_t));
- payload = (cmd_done_t*)packet->data();
- payload->value = return_value;
- if (ipc.send(packet->packet(), packet->size()) == false) {
- ERR("Failed to send a packet (%s)\n",__FUNCTION__);
- }
-
- return (void*)NULL;
-}
-
-
-
void *cserver::cmd_get_value(void *cmd_item, void *data)
{
cmd_queue_item_t *queue_item = (cmd_queue_item_t*)cmd_item;
base_property_struct return_base_property;
+ memset(&return_base_property, '\0', sizeof(return_base_property));
+
if (arg->worker->state() != cipc_worker::START) {
ERR("Client disconnected (%s)\n",__FUNCTION__);
return (void*)NULL;
}
- DBG("CMD_SET_VALUE Handler invoked\n");
+ DBG("CMD_GET_PROPERTY Handler invoked\n");
payload = (cmd_get_property_t*)packet->data();
get_property_level = payload->get_level;
cdata_stream *data_stream;
data_stream = (cdata_stream*)ctx->module;
- if ( (get_property_level & 0xFFFF) == 1 ) {
- get_property_size = sizeof(base_property_struct);
- state = data_stream->get_property(get_property_level, (void*)&return_base_property);
- if ( state != 0 ) {
- ERR("data_stream get_property fail");
- goto out;
- }
- return_property_struct = (void*)&return_base_property;
+ get_property_size = sizeof(base_property_struct);
+ state = data_stream->get_property(get_property_level, (void*)&return_base_property);
+ if ( state != 0 ) {
+ ERR("data_stream get_property fail");
+ goto out;
}
+ return_property_struct = (void*)&return_base_property;
}
out:
-
-
-void *cserver::cb_event_handler(cprocessor_module *processor, void *data)
-{
- csock::thread_arg_t *arg = (csock::thread_arg_t *)data;
- cpacket packet(sizeof(cmd_done_t)+4);
- cmd_done_t *payload;
- csock ipc(arg->client_handle , csock::SOCK_TCP);
- ipc.set_on_close(false);
-
- DBG("Wait event handler invoked\n");
- if (arg->worker->state() != cipc_worker::START) {
- ERR("Client disconnected\n");
- return (void*)NULL;
- }
-
- packet.set_cmd(CMD_DONE);
- packet.set_version(PROTOCOL_VERSION);
- packet.set_payload_size(sizeof(cmd_done_t));
- payload = (cmd_done_t*)packet.data();
- payload->value = arg->worker->state();
-
- if (ipc.send(packet.packet(), packet.size()) == false) {
- ERR("Failed to send a packet (%s)\n",__FUNCTION__);
- return (void*)NULL;
- }
-
- return (void*)NULL;
-}
-
-
-
-void cserver::cb_rm_cb_data(void *cb)
-{
- DbgPrint("nop\n");
- return;
-}
-
-
void cserver::command_handler(void *cmd_item, void *data)
{
cmd_queue_item_t *queue_item = (cmd_queue_item_t*)cmd_item;
}
+void cserver::sf_main_loop_stop(void)
+{
+ if(g_mainloop)
+ {
+ g_main_loop_quit(g_mainloop);
+ }
+}
+
void cserver::sf_main_loop(void)
{
- static GMainLoop *mainloop;
csock *ipc = NULL;
+ int fd = -1;
+
+ g_mainloop = g_main_loop_new(NULL, FALSE);
- mainloop = g_main_loop_new(NULL, FALSE);
-
try {
ipc = new csock((char*)STR_SF_IPC_SOCKET, csock::SOCK_TCP|csock::SOCK_WORKER, 0, 1);
} catch (int ErrNo) {
ipc->set_worker(cb_ipc_start, cb_ipc_worker, cb_ipc_stop);
ipc->wait_for_client();
-
- g_main_loop_run(mainloop);
- g_main_loop_unref(mainloop);
-
+
+
+ g_poweroff_fd = heynoti_init();
+
+ if(g_poweroff_fd < 0)
+ {
+ ERR("heynoti_init FAIL\n");
+ }
+ else
+ {
+ if(heynoti_subscribe(g_poweroff_fd, POWEROFF_NOTI_NAME, system_poweroff_cb, NULL))
+ {
+ ERR("heynoti_subscribe fail\n");
+ }
+ else
+ {
+ if(heynoti_attach_handler(g_poweroff_fd))
+ {
+ ERR("heynoti_attach_handler fail\n");
+ }
+ }
+ }
+ fd = creat("/tmp/hibernation/sfsvc_ready", 0644);
+ if(fd != -1)
+ {
+ close(fd);
+ fd = -1;
+ }
+
+ g_main_loop_run(g_mainloop);
+ g_main_loop_unref(g_mainloop);
+
return;
}
#include <resource_str.h>
-#include <vconf.h>
#if !defined(PATH_MAX)
#define PATH_MAX 256
static cserver server;
-inline static int daemonize(void)
+#define SF_SERVER_STATE_LOG_FILE "/opt/share/debug/sf_server_log"
+#define SF_SERVER_STATE_LOG_DIR "/opt/share/debug"
+
+static struct sigaction sf_act_quit;
+static struct sigaction sf_oldact_quit;
+static struct sigaction sf_act_pipe;
+static struct sigaction sf_oldact_pipe;
+
+static void sig_pipe_handler(int signo)
{
- pid_t pid;
+ int fd;
+ char buf[255];
+ time_t now_time;
- pid = fork();
- if (pid < 0)
- return -1;
- else if (pid != 0)
- exit(0);
+ if(signo==SIGPIPE)
+ {
+ time(&now_time);
+
+ if ( access (SF_SERVER_STATE_LOG_DIR, F_OK) < 0 ) {
+ if(0 != mkdir(SF_SERVER_STATE_LOG_DIR, 0755))
+ ERR("directory make fail");
+ }
- setsid();
- chdir("/");
+ fd = open(SF_SERVER_STATE_LOG_FILE, O_WRONLY|O_CREAT|O_APPEND, 0755);
- close(0);
- close(1);
- close(2);
+ if (fd != -1) {
+ snprintf(buf,255, "\nsf_sever_sig_pipe_log now-time : %ld (s)\n\n",(long)now_time);
+ write(fd, buf, strlen(buf));
+ snprintf(buf,255, "sig_pipe event happend");
+ write(fd, buf, strlen(buf));
+ }
+ if (fd != -1) {
+ close(fd);
+ }
+ }
- open("/dev/null", O_RDONLY);
- open("/dev/null", O_RDWR);
- dup(1);
+ return;
+}
- return 0;
+static void sig_quit_handler(int signo)
+{
+ int fd;
+ char buf[255];
+ time_t now_time;
+
+
+ if( (signo==SIGTERM) || (signo==SIGQUIT) )
+ {
+ time(&now_time);
+ if ( access (SF_SERVER_STATE_LOG_DIR, F_OK) < 0 ) {
+ if(0 != mkdir(SF_SERVER_STATE_LOG_DIR, 0755))
+ ERR("directory make fail");
+ }
+
+ fd = open(SF_SERVER_STATE_LOG_FILE, O_WRONLY|O_CREAT|O_APPEND, 0755);
+
+ if (fd != -1) {
+ snprintf(buf,255, "\nsf_sever_sig_quit_term_log now-time : %ld (s)\n\n",(long)now_time);
+ write(fd, buf, strlen(buf));
+ }
+ if (fd != -1) {
+ close(fd);
+ }
+
+ server.sf_main_loop_stop();
+ DBG("sf_main_loop_stop() called");
+ }
+
+ return;
+}
+
+static int sig_act_init(void)
+{
+ int return_state=0;
+
+ sf_act_quit.sa_handler=sig_quit_handler;
+ sigemptyset(&sf_act_quit.sa_mask);
+ sf_act_quit.sa_flags = SA_NOCLDSTOP;
+
+ sf_act_pipe.sa_handler=sig_pipe_handler;
+ sigemptyset(&sf_act_pipe.sa_mask);
+ sf_act_pipe.sa_flags = SA_NOCLDSTOP;
+
+
+ if (sigaction(SIGTERM, &sf_act_quit, &sf_oldact_quit) < 0) {
+ ERR("error sigaction register for SIGTERM");
+ return_state = -1;
+ }
+
+ if (sigaction(SIGQUIT, &sf_act_quit, &sf_oldact_quit) < 0) {
+ ERR("error sigaction register for SIGQUIT");
+ return_state -= 1;
+ }
+
+ if (sigaction(SIGPIPE, &sf_act_pipe, &sf_oldact_pipe) < 0) {
+ ERR("error sigaction register for SIGPIPE");
+ return_state -= 1;
+ }
+
+ signal(SIGCHLD, SIG_IGN);
+ signal(SIGUSR1, SIG_IGN);
+ signal(SIGUSR2, SIG_IGN);
+
+ return return_state;
}
if ( argc > 1) {
while ((opt = getopt(argc, argv, "bs:f:p:d:h")) != -1) {
DBG("input opt : %c , opterr : %d , optind : %d , optopt : %d\n",(char)opt , opterr , optind , optopt);
- if (opt == 'b' ) {
- {
- daemonize();
- }
- } else if (opt == 's' ) {
+ if (opt == 's' ) {
if (sensor_catalog) {
INFO("Sensors are already loaded\n");
continue;
}else {
DBG("No option just run by default\n");
- daemonize();
-
try {
sensor_catalog = new csensor_catalog;
} catch (...) {
return -1;
}
- vconf_set_int ("memory/hibernation/sfsvc_ready", 1);
+
+ if (sig_act_init() != 0) {
+ ERR("sig_act_init fail!!");
+ }
+
server.sf_main_loop();
--- /dev/null
+[accel_datastream]
+multi_stream=disable
+processor_input=accel_processor, accel_processor, accel_processor
+version=1
+id=2211
+override=yes
+disable=no
+
+[geomag_datastream]
+multi_stream=disable
+processor_input=geo_processor, geo_processor, geo_processor
+version=1
+id=2212
+override=yes
+disable=no
+
+[lumin_datastream]
+multi_stream=disable
+processor_input=light_processor, light_processor, light_processor
+version=1
+id=2213
+override=yes
+disable=no
+
+[proxi_datastream]
+multi_stream=disable
+processor_input=proxi_processor, proxi_processor, proxi_processor
+version=1
+id=2214
+override=yes
+disable=no
+
+[gyro_datastream]
+multi_stream=disable
+processor_input=gyro_processor, gyro_processor, gyro_processor
+version=1
+id=2210
+override=yes
+disable=no
multi_stream=disable
filter_input=bma023_filter, bma023_filter, bma023_sensor
processor_input=bma023_processor, bma023_processor, bma023_filter
+processor_input=bma250_processor, bma250_processor, bma250_sensor
+processor_input=bma254_processor, bma254_processor, bma254_sensor
processor_input=kr3dm_processor, kr3dm_processor, kr3dm_sensor
+processor_input=lsm330dlc_accel_processor, lsm330dlc_accel_processor, lsm330dlc_accel_sensor
+processor_input=k2dh_processor, k2dh_processor, k2dh_sensor
version=1
id=2211
override=yes
filter_input=ak8973b_filter, ak8973b_filter, ak8973b_sensor
filter_input=ak8975_filter, ak8975_filter, ak8975_sensor
filter_input=yas529_filter, yas529_filter, yas529_sensor
+processor_input=bmm050_processor, bmm050_processor, bmm050_sensor
+processor_input=yas529_processor, yas529_processor, yas529_filter, bma023_sensor
+processor_input=ak8963cl_processor, ak8963cl_processor, lsm330dlc_accel_sensor
processor_input=ak8973b_processor, ak8973b_processor, ak8973b_filter
processor_input=ak8975_processor, ak8975_processor, ak8975_filter, kr3dm_sensor
-processor_input=yas529_processor, yas529_processor, yas529_filter, bma023_sensor
+processor_input=ak8975c_processor, ak8975c_processor, ak8975c_sensor, bma254_sensor
+processor_input=ak8975ck_processor, ak8975ck_processor, kr3dm_sensor
+processor_input=ak8975cl_processor, ak8975cl_processor, lsm330dlc_accel_sensor
+processor_input=hscdtd008a_processor, hscdtd008a_processor, hscdtd008a_sensor
version=1
id=2212
override=yes
processor_input=gp2ap002ambi_processor, gp2ap002ambi_processor, gp2ap002ambi_filter
processor_input=gp2ap020ambi_processor, gp2ap020ambi_processor, gp2ap020ambi_sensor
processor_input=cm3623ambi_processor, cm3623ambi_processor, cm3623ambi_filter
+processor_input=cm36651ambi_processor, cm36651ambi_processor, cm36651ambi_sensor
processor_input=tmd2711ambi_processor, tmd2711ambi_processor, tmd2711ambi_filter
+processor_input=tmd2772ambi_processor, tmd2772ambi_processor, tmd2772ambi_sensor
version=1
id=2213
override=yes
processor_input=gp2ap002proxi_processor, gp2ap002proxi_processor, gp2ap002proxi_filter
processor_input=gp2ap020proxi_processor, gp2ap020proxi_processor, gp2ap020proxi_sensor
processor_input=cm3623proxi_processor, cm3623proxi_processor, cm3623proxi_filter
+processor_input=cm36651proxi_processor, cm36651proxi_processor, cm36651proxi_sensor
processor_input=tmd2711proxi_processor, tmd2711proxi_processor, tmd2711proxi_filter
+processor_input=tmd2772proxi_processor, tmd2772proxi_processor, tmd2772proxi_sensor
+processor_input=px3315proxi_processor, px3315proxi_processor, px3315proxi_sensor
version=1
id=2214
override=yes
disable=no
[motion_datastream]
-multi_stream=disable
-filter_input=motion_filter, motion_filter, bma023_sensor, kr3dm_sensor, l3g4200d_sensor
-processor_input=motion_processor, motion_processor, motion_filter
+multi_stream=enable
+filter_input=motion_filter, motion_filter, bma023_sensor, kr3dm_sensor,lsm330dlc_accel_sensor, l3g4200d_sensor, lsm330dlc_gyro_sensor, gp2ap020proxi_sensor, cm3623proxi_sensor, cm36651proxi_sensor
+processor_input=motion_processor, motion_processor, motion_filter, lsm330dlc_accel_sensor
version=1
id=2209
override=yes
filter_input=mpu3050_filter, mpu3050_filter
processor_input=mpu3050_processor, mpu3050_processor, mpu3050_filter, bma023_sensor
processor_input=l3g4200d_processor, l3g4200d_processor, l3g4200d_sensor
+processor_input=lsm330dlc_gyro_processor, lsm330dlc_gyro_processor, lsm330dlc_gyro_sensor
version=1
id=2210
override=yes
disable=no
+
+[barometer_datastream]
+multi_stream=disable
+processor_input=lps331ap_processor, lps331ap_processor, lps331ap_sensor
+version=1
+id=2210
+override=yes
+disable=no
+
+[fusion_datastream]
+multi_stream=esable
+processor_input=fusion_processor, fusion_processor, lsm330dlc_accel_sensor, lsm330dlc_gyro_sensor, ak8975cl_sensor
+version=1
+id=2210
+override=yes
+disable=no
+
version=1
disable=no
override=yes
+
--- /dev/null
+[accel_processor]
+path=/usr/lib/sensor_framework/libaccelprocessor.so
+id=2114
+version=1
+override=yes
+disable=no
+
+[light_processor]
+path=/usr/lib/sensor_framework/liblightsprocessor.so
+id=2117
+version=1
+override=yes
+disable=no
+
+[proxi_processor]
+path=/usr/lib/sensor_framework/libproxiprocessor.so
+id=2118
+version=1
+override=yes
+disable=no
+
+
+[gyro_processor]
+path=/usr/lib/sensor_framework/libgyroprocessor.so
+id=2121
+version=1
+override=yes
+disable=no
+
+[geo_processor]
+path=/usr/lib/sensor_framework/libcompassprocessor.so
+id=2124
+version=1
+override=yes
+disable=no
override=yes
disable=no
+[lsm330dlc_accel_processor]
+path=/usr/lib/sensor_framework/liblsm330dlc_accel_processor.so
+id=2114
+version=1
+override=yes
+disable=no
+
+[k2dh_processor]
+path=/usr/lib/sensor_framework/libk2dh_processor.so
+id=2114
+version=1
+override=yes
+disable=no
+
+[lps331ap_processor]
+path=/usr/lib/sensor_framework/liblps331ap_processor.so
+id=2114
+version=1
+override=yes
+disable=no
+
[ak8973b_processor]
path=/usr/lib/sensor_framework/libak8973b_processor.so
id=2115
override=yes
disable=no
+[hscdtd008a_processor]
+path=/usr/lib/sensor_framework/libhscdtd008a_processor.so
+id=2116
+version=1
+override=yes
+disable=no
+
[gp2ap002ambi_processor]
path=/usr/lib/sensor_framework/libgp2ap002ambi_processor.so
id=2117
override=yes
disable=no
+[px3315proxi_processor]
+path=/usr/lib/sensor_framework/libpx3315proxi_processor.so
+id=2113
+version=1
+override=yes
+disable=no
+
+[cm36651ambi_processor]
+path=/usr/lib/sensor_framework/libcm36651ambi_processor.so
+id=2119
+version=1
+override=yes
+disable=no
+
+[cm36651proxi_processor]
+path=/usr/lib/sensor_framework/libcm36651proxi_processor.so
+id=2113
+version=1
+override=yes
+disable=no
+
[motion_processor]
path=/usr/lib/sensor_framework/libmotion_processor.so
id=2111
override=yes
disable=no
+[lsm330dlc_gyro_processor]
+path=/usr/lib/sensor_framework/liblsm330dlc_gyro_processor.so
+id=2121
+version=1
+override=yes
+disable=no
+
[tmd2711ambi_processor]
path=/usr/lib/sensor_framework/libtmd2711ambi_processor.so
id=2122
override=yes
disable=no
+[ak8963cl_processor]
+path=/usr/lib/sensor_framework/libak8963cl_processor.so
+id=2124
+version=1
+override=yes
+disable=no
+
[ak8975_processor]
path=/usr/lib/sensor_framework/libak8975_processor.so
id=2124
version=1
override=yes
disable=no
+
+[ak8975c_processor]
+path=/usr/lib/sensor_framework/libak8975c_processor.so
+id=2125
+version=1
+override=yes
+disable=no
+
+[ak8975cl_processor]
+path=/usr/lib/sensor_framework/libak8975cl_processor.so
+id=2125
+version=1
+override=yes
+disable=no
+
+[ak8975ck_processor]
+path=/usr/lib/sensor_framework/libak8975ck_processor.so
+id=2125
+version=1
+override=yes
+disable=no
+
+[bmm050_processor]
+path=/usr/lib/sensor_framework/libbmm050_processor.so
+id=2130
+version=1
+override=yes
+disable=no
+
+[bma250_processor]
+path=/usr/lib/sensor_framework/libbma250_processor.so
+id=2131
+version=1
+override=yes
+disable=no
+
+[bma254_processor]
+disable=no
+override=yes
+path=/usr/lib/sensor_framework/libbma254_processor.so
+id=1130
+version=1
+poll=100
+
+[tmd2772proxi_processor]
+disable=no
+override=yes
+path=/usr/lib/sensor_framework/libtmd2772proxi_processor.so
+id=1131
+version=1
+poll=100
+
+[tmd2772ambi_processor]
+disable=no
+override=yes
+path=/usr/lib/sensor_framework/libtmd2772ambi_processor.so
+id=1132
+version=1
+poll=100
+
+[fusion_processor]
+disable=no
+override=yes
+path=/usr/lib/sensor_framework/libfusionambi_processor.so
+id=1135
+version=1
+poll=100
+
+
version=1
poll=10
+[lsm330dlc_accel_sensor]
+disable=no
+override=yes
+path=/usr/lib/sensor_framework/liblsm330dlc_accel.so
+id=1114
+version=1
+poll=200
+
+[k2dh_sensor]
+disable=no
+override=yes
+path=/usr/lib/sensor_framework/libk2dh.so
+id=1114
+version=1
+poll=10
+
+[lps331ap_sensor]
+disable=no
+override=yes
+path=/usr/lib/sensor_framework/liblps331ap.so
+id=1114
+version=1
+poll=100
+
[ak8973b_sensor]
disable=no
override=yes
version=1
poll=90
+[hscdtd008a_sensor]
+disable=no
+override=yes
+path=/usr/lib/sensor_framework/libhscdtd008a.so
+id=1116
+version=1
+poll=90
+
[gp2ap002ambi_sensor]
disable=no
override=yes
version=1
poll=90
+[px3315proxi_sensor]
+disable=no
+override=yes
+path=/usr/lib/sensor_framework/libpx3315proxi.so
+id=1113
+version=1
+poll=90
+
+[cm36651ambi_sensor]
+disable=no
+override=yes
+path=/usr/lib/sensor_framework/libcm36651ambi.so
+id=1119
+version=1
+poll=490
+
+[cm36651proxi_sensor]
+disable=no
+override=yes
+path=/usr/lib/sensor_framework/libcm36651proxi.so
+id=1113
+version=1
+poll=90
+
[kr3dm_sensor]
disable=no
override=yes
version=1
poll=18
+[lsm330dlc_gyro_sensor]
+disable=no
+override=yes
+path=/usr/lib/sensor_framework/liblsm330dlc_gyro.so
+id=1111
+version=1
+poll=18
+
[tmd2711ambi_sensor]
disable=no
override=yes
version=1
poll=90
+[ak8963cl_sensor]
+disable=no
+override=yes
+path=/usr/lib/sensor_framework/libak8963cl.so
+id=1108
+version=1
+poll=100
+
[ak8975_sensor]
disable=no
override=yes
id=1108
version=1
poll=100
+
+[bmm050_sensor]
+disable=no
+override=yes
+path=/usr/lib/sensor_framework/libbmm050.so
+id=1120
+version=1
+poll=100
+
+[ak8975c_sensor]
+disable=no
+override=yes
+path=/usr/lib/sensor_framework/libak8975c.so
+id=1109
+version=1
+poll=100
+
+[ak8975cl_sensor]
+disable=no
+override=yes
+path=/usr/lib/sensor_framework/libak8975cl.so
+id=1109
+version=1
+poll=100
+
+[ak8975ck_sensor]
+disable=no
+override=yes
+path=/usr/lib/sensor_framework/libak8975ck.so
+id=1109
+version=1
+poll=100
+
+[bma250_sensor]
+disable=no
+override=yes
+path=/usr/lib/sensor_framework/libbma250.so
+id=1121
+version=1
+poll=100
+
+[bma254_sensor]
+disable=no
+override=yes
+path=/usr/lib/sensor_framework/libbma254.so
+id=1130
+version=1
+poll=100
+
+[tmd2772proxi_sensor]
+disable=no
+override=yes
+path=/usr/lib/sensor_framework/libtmd2772proxi.so
+id=1131
+version=1
+poll=100
+
+[tmd2772ambi_sensor]
+disable=no
+override=yes
+path=/usr/lib/sensor_framework/libtmd2772ambi.so
+id=1132
+version=1
+poll=100
+
+