From: sungmin82.ha Date: Tue, 30 Jul 2013 06:20:51 +0000 (+0900) Subject: sync with tizen_2.2 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=refs%2Fheads%2Ftizen;p=sdk%2Fsensor-daemon-emulator.git sync with tizen_2.2 Change-Id: Icec24cec08d4d29b1f2a90ae7968a0ad84a466c4 Signed-off-by: Sungmin Ha --- diff --git a/AUTHORS b/AUTHORS index caffe7b..1722483 100644 --- a/AUTHORS +++ b/AUTHORS @@ -1,9 +1,6 @@ -HyunGoo Kang YeongKyoon Lee -DongKyun Yun -DoHyung Hong +DaiYoung Kim SeokYeon Hwang -Hyunjun Son SangJin Kim KiTae Kim JinHyung Jo @@ -11,3 +8,5 @@ SungMin Ha MunKyu Im JiHye Kim GiWoong Kim +SooYoung Ha +HyunGoo Kang diff --git a/debian/copyright b/debian/copyright index 4068bf2..8b13789 100644 --- a/debian/copyright +++ b/debian/copyright @@ -1,21 +1 @@ -This is $PACKAGE_NAME, written and maintained by $NAME <$EMAIL> -on Tue, 26 Apr 2011 17:08:22 +0900. -The original source can always be found at: - slp/sdk/simulator-daemon-sensor - -Copyright Holder: $NAME - -License: - samsung - -/* - * Copyright (c) 2008 Samsung Electronics, Inc. - * All rights reserved. - * - * This software is a confidential and proprietary information - * of Samsung Electronics, Inc. ("Confidential Information"). You - * shall not disclose such Confidential Information and shall use - * it only in accordance with the terms of the license agreement - * you entered into with Samsung Electronics. - */ diff --git a/packaging/sensord.manifest b/packaging/sensord.manifest new file mode 100644 index 0000000..017d22d --- /dev/null +++ b/packaging/sensord.manifest @@ -0,0 +1,5 @@ + + + + + diff --git a/packaging/sensord.spec b/packaging/sensord.spec index 2e33f59..66dacbd 100644 --- a/packaging/sensord.spec +++ b/packaging/sensord.spec @@ -1,14 +1,14 @@ #git:slp/pkgs/s/sensor-daemon-emulator Name: sensord -Version: 0.2.22 +Version: 0.2.33 Release: 1 Summary: sensor daemon for sensor Group: TO_BE/FILLED_IN License: Apache Source0: %{name}-%{version}.tar.gz -ExclusiveArch: %{ix86} +Source1001: packaging/sensord.manifest BuildRequires: cmake -BuildRequires: pkgconfig(capi-appfw-application) +BuildRequires: pkgconfig(capi-appfw-application) BuildRequires: pkgconfig(appcore-common) %description @@ -18,14 +18,81 @@ BuildRequires: pkgconfig(appcore-common) %setup -q %build -export LDFLAGS+="-Wl,--rpath=%{_prefix}/lib -Wl,--as-needed" - +export LDFLAGS+="-Wl,--rpath=%{_prefix}/lib -Wl,--as-needed" + LDFLAGS="$LDFLAGS" cmake . -DCMAKE_INSTALL_PREFIX=%{_prefix} make %install rm -rf %{buildroot} +if [ ! -d %{buildroot}/usr/lib/systemd/system/emulator.target.wants ]; then + mkdir -p %{buildroot}/usr/lib/systemd/system/emulator.target.wants +fi +if [ ! -d %{buildroot}/opt/sensor ]; then + mkdir -p %{buildroot}/opt/sensor +fi +if [ ! -d %{buildroot}/opt/sensor/accel ]; then + mkdir -p %{buildroot}/opt/sensor/accel +fi +if [ ! -d %{buildroot}/opt/sensor/light ]; then + mkdir -p %{buildroot}/opt/sensor/light +fi +if [ ! -d /opt/sensor/proxi ]; then + mkdir -p %{buildroot}/opt/sensor/proxi +fi +if [ ! -d %{buildroot}/opt/sensor/geo ]; then + mkdir -p %{buildroot}/opt/sensor/geo +fi +if [ ! -d %{buildroot}/opt/sensor/gyro ]; then + mkdir -p %{buildroot}/opt/sensor/gyro +fi +if [ ! -d %{buildroot}/opt/nfc ]; then + mkdir -p %{buildroot}/opt/nfc + touch %{buildroot}/opt/nfc/sdkMsg +fi +if [ ! -d %{buildroot}/etc/emulator/ ]; then + mkdir -p %{buildroot}/etc/emulator/ + cp sensord_setting.sh %{buildroot}/etc/emulator/sensord_setting.sh +fi + +touch %{buildroot}/opt/sensor/accel/name +echo "accel_sim" > %{buildroot}/opt/sensor/accel/name +touch %{buildroot}/opt/sensor/accel/xyz +echo "0, 980665, 0" > %{buildroot}/opt/sensor/accel/xyz + +touch %{buildroot}/opt/sensor/light/name +echo "light_sim" > %{buildroot}/opt/sensor/light/name +touch %{buildroot}/opt/sensor/light/adc +echo "65535" > %{buildroot}/opt/sensor/light/adc +touch %{buildroot}/opt/sensor/light/level +echo "10" > %{buildroot}/opt/sensor/light/level + +touch %{buildroot}/opt/sensor/proxi/name +echo "proxi_sim" > %{buildroot}/opt/sensor/proxi/name +touch %{buildroot}/opt/sensor/proxi/enable +echo "1" > %{buildroot}/opt/sensor/proxi/enable +touch %{buildroot}/opt/sensor/proxi/vo +echo "8" > %{buildroot}/opt/sensor/proxi/vo + +touch %{buildroot}/opt/sensor/gyro/name +echo "gyro_sim" > %{buildroot}/opt/sensor/gyro/name +touch %{buildroot}/opt/sensor/gyro/gyro_x_raw +echo "0" > %{buildroot}/opt/sensor/gyro/gyro_x_raw +touch %{buildroot}/opt/sensor/gyro/gyro_y_raw +echo "0" > %{buildroot}/opt/sensor/gyro/gyro_y_raw +touch %{buildroot}/opt/sensor/gyro/gyro_z_raw +echo "0" > %{buildroot}/opt/sensor/gyro/gyro_z_raw + +touch %{buildroot}/opt/sensor/geo/name +echo "geo_sim" > %{buildroot}/opt/sensor/geo/name +touch %{buildroot}/opt/sensor/geo/raw +echo "0 -90 0 3" > %{buildroot}/opt/sensor/geo/raw +touch %{buildroot}/opt/sensor/geo/tesla +echo "1 0 -10" > %{buildroot}/opt/sensor/geo/tesla + +cp sensord.service %{buildroot}/usr/lib/systemd/system/. +ln -s ../sensord.service %{buildroot}/usr/lib/systemd/system/emulator.target.wants/sensord.service %make_install %clean @@ -38,12 +105,32 @@ rm -rf install_manifes.txt #rm -rf *.so %post -chmod 777 /usr/sbin/sensord +chmod a+x /usr/sbin/sensord +chmod a+x /etc/emulator/sensord_setting.sh +chown -R 5100:5100 /opt/sensor %postun %files %defattr(-,root,root,-) %{_prefix}/sbin/sensord - +/usr/lib/systemd/system/sensord.service +/usr/lib/systemd/system/emulator.target.wants/sensord.service +/opt/sensor/accel/name +/opt/sensor/accel/xyz +/opt/sensor/geo/name +/opt/sensor/geo/raw +/opt/sensor/geo/tesla +/opt/sensor/gyro/gyro_x_raw +/opt/sensor/gyro/gyro_y_raw +/opt/sensor/gyro/gyro_z_raw +/opt/sensor/gyro/name +/opt/sensor/light/adc +/opt/sensor/light/level +/opt/sensor/light/name +/opt/sensor/proxi/enable +/opt/sensor/proxi/name +/opt/sensor/proxi/vo +/opt/nfc/sdkMsg +/etc/emulator/sensord_setting.sh %changelog diff --git a/sensord.service b/sensord.service new file mode 100644 index 0000000..437772e --- /dev/null +++ b/sensord.service @@ -0,0 +1,12 @@ +[Unit] +Description=Sensor Daemon for emulator +Before=emuld.service + +[Service] +Type=simple +ExecStartPre=/etc/emulator/sensord_setting.sh +ExecStart=/usr/sbin/sensord + +[Install] +WantedBy=emulator.target + diff --git a/sensord_setting.sh b/sensord_setting.sh new file mode 100644 index 0000000..5f65326 --- /dev/null +++ b/sensord_setting.sh @@ -0,0 +1,16 @@ +#!/bin/sh + +echo "0, 980665, 0" > /opt/sensor/accel/xyz +echo "65535" > /opt/sensor/light/adc +echo "10" > /opt/sensor/light/level +echo "1" > /opt/sensor/proxi/enable +echo "8" > /opt/sensor/proxi/vo +echo "0" > /opt/sensor/gyro/gyro_x_raw +echo "0" > /opt/sensor/gyro/gyro_y_raw +echo "0" > /opt/sensor/gyro/gyro_z_raw +echo "0 -90 0 3" > /opt/sensor/geo/raw +echo "1 0 -10" > /opt/sensor/geo/tesla + +if [ ! -f /opt/nfc/sdkMsg ]; then + touch /opt/nfc/sdkMsg +fi diff --git a/src/sensord.c b/src/sensord.c index 3efbc52..1c4a856 100644 --- a/src/sensord.c +++ b/src/sensord.c @@ -1,11 +1,11 @@ -/* +/* -*- Mode: C; c-basic-offset: 8; indent-tabs-mode: t; c-file-style: "bsd" -*- * emulator-daemon-sensor * * Copyright (c) 2000 - 2011 Samsung Electronics Co., Ltd. All rights reserved. * - * Contact: + * Contact: + * SooYoung Ha * Sungmin Ha - * DongKyun Yun * YeongKyoon Lee * * Licensed under the Apache License, Version 2.0 (the "License"); @@ -29,6 +29,7 @@ #include #include #include +#include #ifdef __MINGW32__ #include @@ -40,6 +41,7 @@ #include #include #include + #include #endif #include @@ -120,6 +122,11 @@ enum motion_snap{ SENSOR_MOTION_SNAP_RIGHT = SENSOR_MOTION_SNAP_POSITIVE_X }; +enum motion_move{ + SENSOR_MOTION_MOVE_NONE = 0, + SENSOR_MOTION_MOVE_MOVETOCALL = 1 +}; + void *init_sensor_server(); void sensor_parser(char *buffer); int parse_val(char *buff, unsigned char data, char *parsbuf); @@ -357,21 +364,21 @@ int parse_gyro_data(int len, char *buffer) len1 = parse_val(buffer+len, 0x0a, tmpbuf); len += len1; - x = (atoi(tmpbuf) * 1000)/17.50; + x = (atoi(tmpbuf))/17.50; /* second data */ memset(tmpbuf, '\0', sizeof(tmpbuf)); len1 = parse_val(buffer+len, 0x0a, tmpbuf); len += len1; - y = (atoi(tmpbuf) * 1000)/17.50; + y = (atoi(tmpbuf))/17.50; /* third data */ memset(tmpbuf, '\0', sizeof(tmpbuf)); len1 = parse_val(buffer+len, 0x0a, tmpbuf); len += len1; - z = (atoi(tmpbuf) * 1000)/17.50; + z = (atoi(tmpbuf))/17.50; fd = fopen("/opt/sensor/gyro/gyro_x_raw", "w"); if(!fd) @@ -570,6 +577,10 @@ int parse_motion_data(int len, char *buffer) sprintf(command, "vconftool set -t int memory/private/sensor/800001 %d -i -f", SENSOR_MOTION_SNAP_POSITIVE_X); system(command); break; + case 12: // move to call (direct call) + sprintf(command, "vconftool set -t int memory/private/sensor/800020 %d -i -f", SENSOR_MOTION_MOVE_MOVETOCALL); + system(command); + break; default: LOG("not supported activity"); break; @@ -686,9 +697,6 @@ int parse_batterylevel_data(int len, char *buffer) fprintf(fd, "%d", charge_full); fclose(fd); - // because time based polling - system("/usr/bin/sys_event device_charge_chgdet"); - if(charger_online == 1) { fd = fopen("/sys/class/power_supply/battery/charge_now", "w"); @@ -699,9 +707,10 @@ int parse_batterylevel_data(int len, char *buffer) } fprintf(fd, "%d", charger); fclose(fd); - // because time based polling - system("/usr/bin/sys_event device_charge_chgdet"); } + + // because time based polling + system("/usr/bin/sys_event device_charge_chgdet"); } else if(id == 2) { @@ -862,7 +871,7 @@ int parse_tilt_data(int len, char *buffer) { int len1=0; char tmpbuf[255]; - int x, y, z, accuracy = 4; + int x, y, z, accuracy = 3; FILE* fd; #ifdef SENSOR_DEBUG @@ -1489,7 +1498,8 @@ void* file_input_gyro(FileInput_args* args) } fprintf(dstFD, "%d",z); fclose(dstFD); - } + } + fclose(srcFD); } } @@ -1565,8 +1575,10 @@ void sensord_ready() #ifdef SENSOR_DEBUG LOG("sensor_server port: %d", port); #endif - if ((s=socket(AF_INET, SOCK_DGRAM, IPPROTO_UDP))==-1) + if ((s=socket(AF_INET, SOCK_DGRAM, IPPROTO_UDP))==-1){ LOG("socket error!"); + return; + } memset((char *) &si_other, 0, sizeof(si_other)); si_other.sin_family = AF_INET; @@ -1581,9 +1593,10 @@ void sensord_ready() #ifdef SENSOR_DEBUG LOG("send 16 byte to sensor_server"); #endif - if(sendto(s, buf, sizeof(buf), 0, (struct sockaddr*)&si_other, slen) == -1) + while(sendto(s, buf, sizeof(buf), 0, (struct sockaddr*)&si_other, slen) == -1) { - LOG("sendto error!"); + LOG("sendto error! retry sendto"); + usleep(1000); } close(s); @@ -1591,14 +1604,11 @@ void sensord_ready() void *init_sensor_server() { - char* emul_ip = getenv("HOSTNAME"); - if(emul_ip == NULL) - { - LOG("emul_ip is null"); - assert(0); - } + char emul_ip[HOST_NAME_MAX+1]; + struct addrinfo *res = NULL; + struct addrinfo hints; - int listen_s; /* listening socket */ + int listen_s = 0; /* listening socket */ #ifdef TCP int client_s; /* Client socket */ #endif @@ -1612,6 +1622,9 @@ void *init_sensor_server() struct sockaddr_in servaddr; struct sockaddr_in clientaddr; ssize_t len; + int rc; + + port_n = port; #ifdef __MINGW32__ WSADATA wsadata; @@ -1620,38 +1633,67 @@ void *init_sensor_server() return NULL; } #endif - + /* this codes are the DEAD code because port couldn't be 0. + (port = default_sensor_port) if(port !=0 ) port_n = port; else port_n = default_sensor_port; + */ + + memset(emul_ip, 0, sizeof(emul_ip)); + if (gethostname(emul_ip, sizeof(emul_ip)) < 0) + { + LOG("gethostname(): %s", strerror(errno)); + /* Abandon ship! */ + goto clean_up; + } + + memset(&hints, 0, sizeof(hints)); + hints.ai_family=AF_INET; #ifdef TCP - if((listen_s = socket(AF_INET, SOCK_STREAM, 0)) < 0) + hints.ai_socktype=SOCK_STREAM; #else - if((listen_s = socket(AF_INET, SOCK_DGRAM, 0)) < 0) + hints.ai_socktype=SOCK_DGRAM; #endif + + if ((rc = getaddrinfo(emul_ip, NULL, &hints, &res)) != 0) { - perror("Create the socket error: "); - goto clean_up; + if (rc == EAI_SYSTEM) + LOG("getaddrinfo(): %s", strerror(errno)); + else + LOG("getaddrinfo(): %s", gai_strerror(rc)); + goto clean_up; } + if (res->ai_addrlen > sizeof(servaddr)) + { + LOG("sockaddr structure too big"); + goto clean_up; + } memset(&servaddr, '\0', sizeof(servaddr)); - memset(&clientaddr,'\0', sizeof(clientaddr)); - - servaddr.sin_family = AF_INET; - servaddr.sin_addr.s_addr = inet_addr(emul_ip); + memcpy(&servaddr, res->ai_addr, res->ai_addrlen); servaddr.sin_port = htons(port_n); + if((listen_s = socket(res->ai_family, res->ai_socktype, 0)) < 0) + { + perror("Create the socket error: "); + goto clean_up; + } + + freeaddrinfo(res); + res = NULL; + if(bind(listen_s, (struct sockaddr *) &servaddr, sizeof(servaddr)) < 0) { perror("bind error: "); - goto clean_up; + goto clean_up; } #ifdef TCP if(listen(listen_s, 3) == -1) { perror("Listen error: "); - goto clean_up; + goto clean_up; } #endif @@ -1663,6 +1705,7 @@ void *init_sensor_server() while(1) { #ifdef TCP + memset(&clientaddr,'\0', sizeof(clientaddr)); client_s = accept(listen_s, (struct sockaddr *)&clientaddr, &client_len); if(len = read(client_s, buf, sizeof(buf)) <= 0) { @@ -1682,12 +1725,15 @@ void *init_sensor_server() } clean_up: + if (res != NULL) + freeaddrinfo(res); + #ifdef __MINGW32__ - if( listen_s ) + if( listen_s >= 0 ) closesocket(listen_s); WSACleanup(); #else - if( listen_s ) + if( listen_s >= 0 ) close(listen_s); #endif