From 7cd3ebd8d2074ec12d6a71dca84e5c74e60ba7ac Mon Sep 17 00:00:00 2001 From: HyungKyu Song Date: Sat, 16 Feb 2013 00:16:35 +0900 Subject: [PATCH] Tizen 2.0 Release --- CMakeLists.txt | 29 ++++-- packaging/sensor-framework.changes | 20 ++++ packaging/sensor-framework.manifest | 5 + packaging/sensor-framework.service | 11 ++ packaging/sensor-framework.spec | 92 ++++++++++++----- sensor-framework.manifest | 16 +++ server/include/cserver.h | 7 +- server/src/cdata_stream.cpp | 5 +- server/src/cserver.cpp | 193 +++++++++++++----------------------- server/src/main.cpp | 129 +++++++++++++++++++----- sf_data_stream-mfld-blackbay.conf | 39 ++++++++ sf_data_stream.conf.in | 41 +++++++- sf_filter.conf.in | 1 + sf_processor-mfld-blackbay.conf | 35 +++++++ sf_processor.conf.in | 132 ++++++++++++++++++++++++ sf_sensor.conf.in | 138 ++++++++++++++++++++++++++ 16 files changed, 698 insertions(+), 195 deletions(-) create mode 100644 packaging/sensor-framework.changes create mode 100644 packaging/sensor-framework.manifest create mode 100644 packaging/sensor-framework.service create mode 100644 sensor-framework.manifest create mode 100755 sf_data_stream-mfld-blackbay.conf create mode 100755 sf_processor-mfld-blackbay.conf diff --git a/CMakeLists.txt b/CMakeLists.txt index 0974818..53cab73 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -2,7 +2,7 @@ cmake_minimum_required(VERSION 2.6) 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. @@ -18,21 +18,33 @@ set(PROJECT_RELEASE_VERSION "1") set(CMAKE_VERBOSE_MAKEFILE OFF) add_definitions(-Wall -O3 -omit-frame-pointer) -add_definitions(-Wall -g -D_DEBUG) +#add_definitions(-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) @@ -43,7 +55,8 @@ IF("${ARCH}" MATCHES "^arm.*") 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) @@ -54,6 +67,6 @@ ELSE("${ARCH}" MATCHES "^arm.*") sf_processor.conf sf_data_stream.conf DESTINATION etc) -ENDIF("${ARCH}" MATCHES "^arm.*") +endif() install(PROGRAMS sfsvc DESTINATION /etc/rc.d/init.d) diff --git a/packaging/sensor-framework.changes b/packaging/sensor-framework.changes new file mode 100644 index 0000000..faa6299 --- /dev/null +++ b/packaging/sensor-framework.changes @@ -0,0 +1,20 @@ +* Tue Jan 15 2013 Telle-Tiia Pitkänen 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 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 c964fd1 +- Use 'simple' service type. + +* Mon Jun 25 2012 Patrick McCarty - 0.2.5 +- Add systemd service file +- Create initscript symlinks in %install instead of %post + diff --git a/packaging/sensor-framework.manifest b/packaging/sensor-framework.manifest new file mode 100644 index 0000000..017d22d --- /dev/null +++ b/packaging/sensor-framework.manifest @@ -0,0 +1,5 @@ + + + + + diff --git a/packaging/sensor-framework.service b/packaging/sensor-framework.service new file mode 100644 index 0000000..6369769 --- /dev/null +++ b/packaging/sensor-framework.service @@ -0,0 +1,11 @@ + +[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 + diff --git a/packaging/sensor-framework.spec b/packaging/sensor-framework.spec index 90b3033..b3966d1 100644 --- a/packaging/sensor-framework.spec +++ b/packaging/sensor-framework.spec @@ -1,17 +1,34 @@ +#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 @@ -19,40 +36,65 @@ 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} diff --git a/sensor-framework.manifest b/sensor-framework.manifest new file mode 100644 index 0000000..b7467bb --- /dev/null +++ b/sensor-framework.manifest @@ -0,0 +1,16 @@ + + + + + + + + + + + + + + + diff --git a/server/include/cserver.h b/server/include/cserver.h index ecbfc4a..7298632 100755 --- a/server/include/cserver.h +++ b/server/include/cserver.h @@ -35,6 +35,7 @@ public: void sf_main_loop(void); + void sf_main_loop_stop(void); private: @@ -56,8 +57,6 @@ 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 @@ -72,10 +71,6 @@ private: 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]; }; diff --git a/server/src/cdata_stream.cpp b/server/src/cdata_stream.cpp index a351bbf..fadc5b2 100755 --- a/server/src/cdata_stream.cpp +++ b/server/src/cdata_stream.cpp @@ -142,7 +142,10 @@ cdata_stream::~cdata_stream() filter = next_filter; } - if (m_name) free(m_name); + if (m_name) { + free(m_name); + m_name = NULL; + } } diff --git a/server/src/cserver.cpp b/server/src/cserver.cpp index 7d69a83..d63db28 100755 --- a/server/src/cserver.cpp +++ b/server/src/cserver.cpp @@ -69,7 +69,22 @@ #include #include +#include +#include +#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() { @@ -77,7 +92,6 @@ 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; @@ -468,76 +482,6 @@ void *cserver::cmd_stop(void *cmd_item, void *data) -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; @@ -819,12 +763,14 @@ void *cserver::cmd_get_property(void *cmd_item, void *data) 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; @@ -839,15 +785,13 @@ void *cserver::cmd_get_property(void *cmd_item, void *data) 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: @@ -1177,45 +1121,6 @@ void *cserver::cb_ipc_worker(void *data) - - -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; @@ -1242,13 +1147,21 @@ void cserver::command_handler(void *cmd_item, void *data) } +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) { @@ -1258,10 +1171,38 @@ void cserver::sf_main_loop(void) 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; } diff --git a/server/src/main.cpp b/server/src/main.cpp index aab70b2..ff26efb 100644 --- a/server/src/main.cpp +++ b/server/src/main.cpp @@ -72,7 +72,6 @@ #include -#include #if !defined(PATH_MAX) #define PATH_MAX 256 @@ -83,28 +82,110 @@ extern int optind, opterr, optopt; 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; } @@ -120,11 +201,7 @@ int main(int argc, char *argv[]) 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; @@ -231,8 +308,6 @@ int main(int argc, char *argv[]) }else { DBG("No option just run by default\n"); - daemonize(); - try { sensor_catalog = new csensor_catalog; } catch (...) { @@ -317,7 +392,11 @@ int main(int argc, char *argv[]) return -1; } - vconf_set_int ("memory/hibernation/sfsvc_ready", 1); + + if (sig_act_init() != 0) { + ERR("sig_act_init fail!!"); + } + server.sf_main_loop(); diff --git a/sf_data_stream-mfld-blackbay.conf b/sf_data_stream-mfld-blackbay.conf new file mode 100755 index 0000000..2d22cc6 --- /dev/null +++ b/sf_data_stream-mfld-blackbay.conf @@ -0,0 +1,39 @@ +[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 diff --git a/sf_data_stream.conf.in b/sf_data_stream.conf.in index caa1d93..816c34c 100755 --- a/sf_data_stream.conf.in +++ b/sf_data_stream.conf.in @@ -2,7 +2,11 @@ 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 @@ -13,9 +17,15 @@ multi_stream=disable 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 @@ -29,7 +39,9 @@ filter_input=tmd2711ambi_filter, tmd2711ambi_filter, tmd2711ambi_sensor 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 @@ -43,16 +55,19 @@ filter_input=tmd2711proxi_filter, tmd2711proxi_filter, tmd2711proxi_sensor 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 @@ -63,7 +78,25 @@ multi_stream=disable 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 + diff --git a/sf_filter.conf.in b/sf_filter.conf.in index 0252119..6f695e1 100755 --- a/sf_filter.conf.in +++ b/sf_filter.conf.in @@ -74,3 +74,4 @@ id=1218 version=1 disable=no override=yes + diff --git a/sf_processor-mfld-blackbay.conf b/sf_processor-mfld-blackbay.conf new file mode 100755 index 0000000..ef948cf --- /dev/null +++ b/sf_processor-mfld-blackbay.conf @@ -0,0 +1,35 @@ +[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 diff --git a/sf_processor.conf.in b/sf_processor.conf.in index f201f7c..0f02746 100755 --- a/sf_processor.conf.in +++ b/sf_processor.conf.in @@ -5,6 +5,27 @@ version=1 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 @@ -19,6 +40,13 @@ version=1 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 @@ -61,6 +89,27 @@ version=1 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 @@ -82,6 +131,13 @@ version=1 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 @@ -96,9 +152,85 @@ version=1 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 + + diff --git a/sf_sensor.conf.in b/sf_sensor.conf.in index f50df6e..31f1821 100755 --- a/sf_sensor.conf.in +++ b/sf_sensor.conf.in @@ -6,6 +6,30 @@ id=1114 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 @@ -22,6 +46,14 @@ id=1116 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 @@ -70,6 +102,30 @@ id=1113 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 @@ -86,6 +142,14 @@ id=1111 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 @@ -102,6 +166,14 @@ id=1109 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 @@ -109,3 +181,69 @@ path=/usr/lib/sensor_framework/libak8975.so 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 + + -- 2.7.4