Added exceptions for inactive mode 79/114579/2
authorkmook <kmook.choi@samsung.com>
Tue, 14 Feb 2017 05:57:58 +0000 (14:57 +0900)
committerkmook <kmook.choi@samsung.com>
Tue, 14 Feb 2017 08:56:26 +0000 (17:56 +0900)
Change-Id: I11eb8a5d987fe4c201a95e60f267b4ad19bfffb8
Signed-off-by: kmook <kmook.choi@samsung.com>
daemon/CMakeLists.txt
daemon/Server.cpp
packaging/d2d-conv-manager.spec

index 06711a43f66ca8b1ba3c8e68bb76c90d39212aa8..6ea09dd4113c4e7395fc9a319cac0db9c633b37d 100755 (executable)
@@ -14,7 +14,7 @@ FILE(GLOB DAEMON_SRCS ${DAEMON_SRCS} discovery_provider/smartview/*.cpp)
 FILE(GLOB DAEMON_SRCS ${DAEMON_SRCS} ../msf_tizen_client/src/*.cpp)
 
 SET(provider_deps "glib-2.0 dlog json-glib-1.0 jsoncpp iotcon capi-appfw-app-manager vconf capi-network-bluetooth capi-appfw-application bundle capi-network-connection cynara-creds-gdbus cynara-client cynara-session capi-appfw-package-manager sqlite3 syspopup-caller")
-SET(provider_deps "${provider_deps} openssl libwebsockets libcurl nsd-dns-sd")
+SET(provider_deps "${provider_deps} openssl libwebsockets libcurl nsd-dns-sd capi-system-info")
 #SET(provider_deps "${provider_deps} capi-network-wifi-direct")
 
 # Wearable profile
@@ -30,14 +30,15 @@ ENDIF("${PROFILE}" STREQUAL "mobile")
 # TV profile
 IF("${PROFILE}" STREQUAL "tv")
        ADD_DEFINITIONS("-D_TV_")
-    IF(${D2D_INTERNAL_ACL} EQUAL 0)
-        SET(provider_deps "${provider_deps} capi-register-device")
-    ENDIF(${D2D_INTERNAL_ACL} EQUAL 0)
+    IF(${PRODUCT_TV} EQUAL 1)
+        SET(provider_deps "${provider_deps} capi-register-device deviced")
+        ADD_DEFINITIONS("-DTIZEN_PRODUCT_TV")
+    ENDIF(${PRODUCT_TV} EQUAL 1)
 ENDIF("${PROFILE}" STREQUAL "tv")
 
-IF(${D2D_INTERNAL_ACL} EQUAL 1)
+IF(${PRODUCT_TV} EQUAL 0)
     ADD_DEFINITIONS("-D_D2D_INTERNAL_ACL_")
-ENDIF(${D2D_INTERNAL_ACL} EQUAL 1)
+ENDIF(${PRODUCT_TV} EQUAL 0)
 
 pkg_check_modules(daemon_pkgs REQUIRED ${provider_deps})
 
index 9bdec13fa1b115f97879eb98667ef6ec0bd0b887..5657bc818a9bfe1884bbbf26f97bb240a6dfc2ce 100644 (file)
 #include <new>
 #include <gio/gio.h>
 
+#if defined(TIZEN_PRODUCT_TV)
+#include <fstream>
+#include <system_info.h>
+#include <dd-power.h>
+#endif
 
 #include "d2d_conv_manager.h"
 #include "Server.h"
@@ -39,9 +44,16 @@ static conv::ClientManager *clientMgr = NULL;
 static conv::ServiceManager *serviceMgr = NULL;
 static conv::RequestHandler *requestMgr = NULL;
 
+#if defined(TIZEN_PRODUCT_TV)
+static int __device_inactive_cb(device_poweroff_info *info, void *data);
+#endif
+
 void conv::initialize()
 {
        int result;
+#if defined(TIZEN_PRODUCT_TV)
+       bool isFrameTv = false;
+#endif
 
        if (started) {
                _D("flowd is started already");
@@ -91,6 +103,18 @@ void conv::initialize()
        result = dbusHandle->init();
        IF_FAIL_CATCH_TAG(result == true, _E, "Initialization Failed");
 
+#if defined(TIZEN_PRODUCT_TV)
+       if (system_info_get_value_bool(SYSTEM_INFO_KEY_FRAME_TV, &isFrameTv) != SYSTEM_INFO_ERROR_NONE) {
+               _E("failed to get frame tv support option");
+       }
+
+       if (isFrameTv) {
+               if (device_power_subscribe_poweroff_event(__device_inactive_cb, NULL) != 0) {
+                   _E("Fail to subscribe power off callback function");
+               }
+       }
+#endif
+
        _I("Start main loop");
        started = TRUE;
 
@@ -168,6 +192,29 @@ static void signal_handler(int signo)
        }
 }
 
+#if defined(TIZEN_PRODUCT_TV)
+static int __device_inactive_cb(device_poweroff_info *info, void *data)
+{
+    if (info && info->inactive_mode) {
+        _I("INACTIVE mode");
+        std::ofstream nodeFile;
+        nodeFile.open("/dev/pwsv_mode", std::ios::out);
+        if (!nodeFile.is_open()) {
+            _E("can not open node (/dev/pwsv_mode) for enable inactive mode");
+            return -1;
+        }
+
+        char cmd[256] = {0, };
+        snprintf(cmd, 256, "INACT %ld", (long)getpid());
+        _D("cmd = %s", cmd);
+        nodeFile << cmd;
+        nodeFile.close();
+    }
+
+    return 0;
+}
+#endif
+
 int main(int argc, char **argv)
 {
        static struct sigaction signal_action;
index 061d71ca51492ed04871075a617abb12428da2c5..b5378a4e7af576a5faceb934de65a2741e0c31d0 100755 (executable)
@@ -11,7 +11,7 @@ Source1001:   %{name}.manifest
 Source1002:    lib%{name}.manifest
 
 %define BUILD_PROFILE %{?profile}%{!?profile:%{?tizen_profile_name}}
-%define INTERNAL_ACL %{?TIZEN_PROFILE_TV:0}%{!?TIZEN_PROFILE_TV:1}
+%define PRODUCT_TV %{?TIZEN_PROFILE_TV:1}%{!?TIZEN_PROFILE_TV:0}
 
 BuildRequires: cmake
 BuildRequires: pkgconfig(gio-2.0)
@@ -46,8 +46,9 @@ BuildRequires: curl
 BuildRequires: libcurl-devel
 
 %if "%{?BUILD_PROFILE}" == "tv"
-%if %{?INTERNAL_ACL} == 0
+%if %{?PRODUCT_TV} == 1
 BuildRequires: pkgconfig(capi-register-device)
+BuildRequires: pkgconfig(deviced)
 %endif
 %endif
 
@@ -82,7 +83,7 @@ D2D Convergence Manager development kit.
 
 %build
 MAJORVER=`echo %{version} | awk 'BEGIN {FS="."}{print $1}'`
-%cmake . -DMAJORVER=${MAJORVER} -DFULLVER=%{version} -DBIN_INSTALL_DIR:PATH=%{_bindir} -DPROFILE=%{?BUILD_PROFILE} -DD2D_INTERNAL_ACL=%{?INTERNAL_ACL}
+%cmake . -DMAJORVER=${MAJORVER} -DFULLVER=%{version} -DBIN_INSTALL_DIR:PATH=%{_bindir} -DPROFILE=%{?BUILD_PROFILE} -DPRODUCT_TV=%{?PRODUCT_TV}
 
 
 %install
@@ -107,7 +108,7 @@ mkdir -p %{_unitdir_user}/default.target.wants
 ln -s ../%{name}.service %{_unitdir_user}/default.target.wants/
 /sbin/ldconfig
 
-%if %{?INTERNAL_ACL} == 1
+%if %{?PRODUCT_TV} == 0
 
        mkdir -p %{TZ_SYS_DB}
        if [ ! -f %{TZ_SYS_DB}/.convergence.db ]