Enable dbus activation
authorsaerome.kim <saerome.kim@samsung.com>
Tue, 12 Dec 2017 00:28:10 +0000 (09:28 +0900)
committersaerome.kim <saerome.kim@samsung.com>
Mon, 2 Jul 2018 10:38:37 +0000 (19:38 +0900)
Signed-off-by: saerome.kim <saerome.kim@samsung.com>
39 files changed:
packaging/d2d-manager.service [deleted file]
packaging/d2d-manager.spec [changed mode: 0755->0644]
packaging/d2d-subowner.service [deleted file]
packaging/d2dm.service [new file with mode: 0644]
packaging/d2ds.service [new file with mode: 0644]
packaging/fn-manager.service [deleted file]
packaging/fnm.service [new file with mode: 0644]
packaging/net.d2d.manager.service [deleted file]
packaging/net.d2d.subowner.service [deleted file]
packaging/net.d2dm.service [new file with mode: 0644]
packaging/net.d2ds.service [new file with mode: 0644]
packaging/net.fn.manager.service [deleted file]
packaging/net.fnm.service [new file with mode: 0644]
src/d2d-manager/CMakeLists.txt
src/d2d-manager/d2d-manager-log.h [deleted file]
src/d2d-manager/d2d-manager.c [deleted file]
src/d2d-manager/d2d-manager.h [deleted file]
src/d2d-manager/d2dm-gdbus.c [new file with mode: 0644]
src/d2d-manager/d2dm-gdbus.h [new file with mode: 0644]
src/d2d-manager/d2dm-log.h [new file with mode: 0644]
src/d2d-manager/d2dm-service-interface.c [new file with mode: 0644]
src/d2d-manager/d2dm-service-interface.h [new file with mode: 0644]
src/d2d-manager/d2dm-service.c [new file with mode: 0644]
src/d2d-manager/d2dm-service.h [new file with mode: 0644]
src/d2d-manager/d2dm-util.h [new file with mode: 0644]
src/d2d-manager/d2dm.c [new file with mode: 0644]
src/d2d-manager/d2dm.h [new file with mode: 0644]
src/d2d-manager/introspection/.d2d-generated-code.h.swp [new file with mode: 0644]
src/d2d-manager/introspection/d2dm.xml [new file with mode: 0644]
src/d2d-manager/introspection/enabler.xml [new file with mode: 0644]
src/d2d-manager/introspection/gen.sh [new file with mode: 0755]
src/include/d2d-common.h [deleted file]
src/include/hw_emul/hw_interface.h [changed mode: 0755->0644]
src/include/hw_emul/ss_emul.h [changed mode: 0755->0644]
src/introspection/d2d-manager.c [deleted file]
src/introspection/gen.sh [deleted file]
src/introspection/manager.xml [deleted file]
src/subownerclient/CMakeLists.txt [deleted file]
src/subownerclient/main.c [deleted file]

diff --git a/packaging/d2d-manager.service b/packaging/d2d-manager.service
deleted file mode 100644 (file)
index 5f4f684..0000000
+++ /dev/null
@@ -1,12 +0,0 @@
-[Unit]
-Description=OCF D2D Manager
-Requires=dbus.socket
-After=dbus.socket
-
-[Service]
-Type=dbus
-User=network_fw
-Group=network_fw
-BusName=net.d2d.manager
-SmackProcessLabel=System
-ExecStart=/usr/bin/d2d-manager
old mode 100755 (executable)
new mode 100644 (file)
index 7f64aa1..455b07e
@@ -5,14 +5,14 @@ Release:    0
 Group:      Network & Connectivity/Other
 License:    Apache-2.0
 Source0:    %{name}-%{version}.tar.gz
-Source2:    %{name}.service
+Source2:    d2dm.service
 Source3:    %{name}.manifest
 Source4:    %{name}-devel.manifest
-Source5:    net.d2d.manager.service
-Source6:    fn-manager.service
-Source7:    net.fn.manager.service
-Source8:    d2d-subowner.service
-Source9:    net.d2d.subowner.service
+Source5:    net.d2dm.service
+Source6:    fnm.service
+Source7:    net.fnm.service
+Source8:    d2ds.service
+Source9:    net.d2ds.service
 
 BuildRequires: cmake
 BuildRequires: pkgconfig(iotivity)
@@ -81,17 +81,17 @@ rm -rf %{buildroot}/BUILD/%{name}*
 %make_install
 
 mkdir -p %{buildroot}%{_datadir}/dbus-1/system-services/
-cp %{SOURCE5} %{buildroot}%{_datadir}/dbus-1/system-services/net.d2d.manager.service
+cp %{SOURCE5} %{buildroot}%{_datadir}/dbus-1/system-services/net.d2dm.service
 mkdir -p %{buildroot}%{_unitdir}
-cp %{SOURCE2} %{buildroot}%{_unitdir}/%{name}.service
+cp %{SOURCE2} %{buildroot}%{_unitdir}/d2dm.service
 
-cp %{SOURCE7} %{buildroot}%{_datadir}/dbus-1/system-services/net.fn.manager.service
+cp %{SOURCE7} %{buildroot}%{_datadir}/dbus-1/system-services/net.fnm.service
 mkdir -p %{buildroot}%{_unitdir}
-cp %{SOURCE6} %{buildroot}%{_unitdir}/fn-manager.service
+cp %{SOURCE6} %{buildroot}%{_unitdir}/fnm.service
 
-cp %{SOURCE9} %{buildroot}%{_datadir}/dbus-1/system-services/net.d2d.subowner.service
+cp %{SOURCE9} %{buildroot}%{_datadir}/dbus-1/system-services/net.d2ds.service
 mkdir -p %{buildroot}%{_unitdir}
-cp %{SOURCE8} %{buildroot}%{_unitdir}/d2d-subowner.service
+cp %{SOURCE8} %{buildroot}%{_unitdir}/d2ds.service
 
 cp test/oic_svr_db_client.dat oic_svr_db_subowner_client.dat
 
@@ -103,9 +103,9 @@ cp test/oic_svr_db_client.dat oic_svr_db_subowner_client.dat
 %{_bindir}/subowner
 %{_bindir}/fn-manager
 %attr(644,root,root) %{_datadir}/dbus-1/system-services/*
-%attr(644,root,root) %{_unitdir}/%{name}.service
-%attr(644,root,root) %{_unitdir}/fn-manager.service
-%attr(644,root,root) %{_unitdir}/d2d-subowner.service
+%attr(644,root,root) %{_unitdir}/d2dm.service
+%attr(644,root,root) %{_unitdir}/fnm.service
+%attr(644,root,root) %{_unitdir}/d2ds.service
 
 %files devel
 %manifest %{name}-devel.manifest
diff --git a/packaging/d2d-subowner.service b/packaging/d2d-subowner.service
deleted file mode 100755 (executable)
index ca0fc1d..0000000
+++ /dev/null
@@ -1,12 +0,0 @@
-[Unit]
-Description=OCF D2D Sub-Owner Client
-Requires=dbus.socket
-After=dbus.socket
-
-[Service]
-Type=dbus
-User=network_fw
-Group=network_fw
-BusName=net.d2d.subowner
-SmackProcessLabel=System
-ExecStart=/usr/bin/d2d-subowner
diff --git a/packaging/d2dm.service b/packaging/d2dm.service
new file mode 100644 (file)
index 0000000..5e613a5
--- /dev/null
@@ -0,0 +1,12 @@
+[Unit]
+Description=OCF D2D Manager
+Requires=dbus.socket
+After=dbus.socket
+
+[Service]
+Type=dbus
+User=network_fw
+Group=network_fw
+BusName=net.d2dm.enabler
+SmackProcessLabel=System
+ExecStart=/usr/bin/d2d-manager
diff --git a/packaging/d2ds.service b/packaging/d2ds.service
new file mode 100644 (file)
index 0000000..70f6105
--- /dev/null
@@ -0,0 +1,12 @@
+[Unit]
+Description=OCF D2D Sub-Owner Client
+Requires=dbus.socket
+After=dbus.socket
+
+[Service]
+Type=dbus
+User=network_fw
+Group=network_fw
+BusName=net.d2ds.enabler
+SmackProcessLabel=System
+ExecStart=/usr/bin/d2d-subowner
diff --git a/packaging/fn-manager.service b/packaging/fn-manager.service
deleted file mode 100755 (executable)
index fdba735..0000000
+++ /dev/null
@@ -1,14 +0,0 @@
-[Unit]
-Description=OCF Familynet Manager
-After=feedbckd.service
-
-[Service]
-Type=dbus
-User=network_fw
-Group=network_fw
-BusName=net.fn.manager
-SmackProcessLabel=System
-ExecStart=/usr/bin/fn-manager
-
-[Install]
-WantedBy=multi-user.target
diff --git a/packaging/fnm.service b/packaging/fnm.service
new file mode 100644 (file)
index 0000000..fdba735
--- /dev/null
@@ -0,0 +1,14 @@
+[Unit]
+Description=OCF Familynet Manager
+After=feedbckd.service
+
+[Service]
+Type=dbus
+User=network_fw
+Group=network_fw
+BusName=net.fn.manager
+SmackProcessLabel=System
+ExecStart=/usr/bin/fn-manager
+
+[Install]
+WantedBy=multi-user.target
diff --git a/packaging/net.d2d.manager.service b/packaging/net.d2d.manager.service
deleted file mode 100644 (file)
index 187065c..0000000
+++ /dev/null
@@ -1,7 +0,0 @@
-[D-BUS Service]
-Name=net.d2d.manager
-
-Exec=/bin/false
-User=network_fw
-Group=network_fw
-SystemdService=d2d-manager.service
diff --git a/packaging/net.d2d.subowner.service b/packaging/net.d2d.subowner.service
deleted file mode 100755 (executable)
index 17bed18..0000000
+++ /dev/null
@@ -1,7 +0,0 @@
-[D-BUS Service]
-Name=net.d2d.subowner
-
-Exec=/bin/false
-User=network_fw
-Group=network_fw
-SystemdService=d2d-subowner.service
diff --git a/packaging/net.d2dm.service b/packaging/net.d2dm.service
new file mode 100644 (file)
index 0000000..27cc224
--- /dev/null
@@ -0,0 +1,7 @@
+[D-BUS Service]
+Name=net.d2dm.enabler
+
+Exec=/bin/false
+User=network_fw
+Group=network_fw
+SystemdService=d2dm.service
diff --git a/packaging/net.d2ds.service b/packaging/net.d2ds.service
new file mode 100644 (file)
index 0000000..a6a624e
--- /dev/null
@@ -0,0 +1,7 @@
+[D-BUS Service]
+Name=net.d2ds.enabler
+
+Exec=/bin/false
+User=network_fw
+Group=network_fw
+SystemdService=d2ds.service
diff --git a/packaging/net.fn.manager.service b/packaging/net.fn.manager.service
deleted file mode 100755 (executable)
index 0bbecfc..0000000
+++ /dev/null
@@ -1,10 +0,0 @@
-[D-BUS Service]
-Name=net.fn.manager
-
-Exec=/bin/false
-User=network_fw
-Group=network_fw
-SystemdService=fn-manager.service
-
-[Install]
-WantedBy=multi-user.target
diff --git a/packaging/net.fnm.service b/packaging/net.fnm.service
new file mode 100644 (file)
index 0000000..ef695d2
--- /dev/null
@@ -0,0 +1,10 @@
+[D-BUS Service]
+Name=net.fn.enabler
+
+Exec=/bin/false
+User=network_fw
+Group=network_fw
+SystemdService=fnm.service
+
+[Install]
+WantedBy=multi-user.target
index 47be74a05811ba632e4fa55f0c144de5b9284aba..778664c0ab1b023ff2f3b983dff230571b94bf2b 100644 (file)
@@ -1,11 +1,29 @@
-MESSAGE("===================================================================") 
-MESSAGE("Building...d2d-manager") 
 MESSAGE("===================================================================")
+MESSAGE("Building...d2d-manager")
+MESSAGE("===================================================================")
+
+SET(INTROSPECTION_PATH ${CMAKE_CURRENT_SOURCE_DIR}/introspection)
+MESSAGE("KSR : ${INTROSPECTION_PATH}")
+ADD_CUSTOM_COMMAND(
+       OUTPUT dbus
+       COMMAND gdbus-codegen
+               --interface-prefix net.d2dm.
+               --generate-c-code d2dm-generated-code
+               --c-generate-object-manager
+               --generate-docbook generated-docs
+               ${INTROSPECTION_PATH}/d2dm.xml
+               ${INTROSPECTION_PATH}/enabler.xml
+       COMMENT "Generating d2dm GDBus .c/.h"
+)
+ADD_CUSTOM_TARGET(GENERATED_DBUS_CODE DEPENDS dbus)
 
-MESSAGE(" - Set source folder") 
+MESSAGE(" - Set source folder")
 FILE(GLOB D2D_MANAGER_SRCS *.c)
+SET(D2D_MANAGER_SRCS ${D2D_MANAGER_SRCS} ${CMAKE_CURRENT_SOURCE_DIR}/d2dm-generated-code.c)
+SET_SOURCE_FILES_PROPERTIES(${CMAKE_CURRENT_SOURCE_DIR}/d2dm-generated-code.c PROPERTIES GENERATED TRUE)
 
 SET(D2D_MANAGER "d2d-manager")
-ADD_EXECUTABLE(${D2D_MANAGER} ${D2D_MANAGER_SRCS}) 
-TARGET_LINK_LIBRARIES(${D2D_MANAGER} ${daemon_pkgs_LIBRARIES} pthread) 
+ADD_EXECUTABLE(${D2D_MANAGER} ${D2D_MANAGER_SRCS})
+ADD_DEPENDENCIES(${D2D_MANAGER} GENERATED_DBUS_CODE)
+TARGET_LINK_LIBRARIES(${D2D_MANAGER} ${daemon_pkgs_LIBRARIES} pthread)
 INSTALL(TARGETS ${D2D_MANAGER} DESTINATION bin)
diff --git a/src/d2d-manager/d2d-manager-log.h b/src/d2d-manager/d2d-manager-log.h
deleted file mode 100644 (file)
index 16f04f2..0000000
+++ /dev/null
@@ -1,62 +0,0 @@
-/*\r
- * Network Configuration Module\r
- *\r
- * Copyright (c) 2017 Samsung Electronics Co., Ltd. All rights reserved.\r
- *\r
- * Licensed under the Apache License, Version 2.0 (the "License");\r
- * you may not use this file except in compliance with the License.\r
- * You may obtain a copy of the License at\r
- *\r
- * http://www.apache.org/licenses/LICENSE-2.0\r
- *\r
- * Unless required by applicable law or agreed to in writing, software\r
- * distributed under the License is distributed on an "AS IS" BASIS,\r
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r
- * See the License for the specific language governing permissions and\r
- * limitations under the License.\r
- *\r
- */\r
-#ifndef __D2D_MANAGER_LOG_H__\r
-#define __D2D_MANAGER_LOG_H__\r
-\r
-#ifdef D2D_MAN_LOG_TAG\r
-#undef D2D_MAN_LOG_TAG\r
-#endif\r
-\r
-#ifdef USE_DLOG\r
-#include <dlog.h>\r
-\r
-#undef D2D_MAN_LOG_TAG\r
-#define D2D_MAN_LOG_TAG "D2D_MANAGER"\r
-\r
-#define D2DM_LOGV(format, args...) LOGV(format, ##args)\r
-#define D2DM_LOGD(format, args...) LOGD(format, ##args)\r
-#define D2DM_LOGI(format, args...) LOGI(format, ##args)\r
-#define D2DM_LOGW(format, args...) LOGW(format, ##args)\r
-#define D2DM_LOGE(format, args...) LOGE(format, ##args)\r
-#define D2DM_LOGF(format, args...) LOGF(format, ##args)\r
-\r
-#define __D2DM_LOG_FUNC_ENTER__ LOGD("Enter")\r
-#define __D2DM_LOG_FUNC_EXIT__ LOGD("Quit")\r
-\r
-#define D2DM_SECLOGI(format, args...) SECURE_LOG(LOG_INFO, D2D_MAN_LOG_TAG, format, ##args)\r
-#define D2DM_SECLOGD(format, args...) SECURE_LOG(LOG_DEBUG, D2D_MAN_LOG_TAG, format, ##args)\r
-\r
-#else /* USE_DLOG */\r
-\r
-#define D2DM_LOGV(format, args...)\r
-#define D2DM_LOGD(format, args...)\r
-#define D2DM_LOGI(format, args...)\r
-#define D2DM_LOGW(format, args...)\r
-#define D2DM_LOGE(format, args...)\r
-#define D2DM_LOGF(format, args...)\r
-\r
-#define __D2DM_LOG_FUNC_ENTER__\r
-#define __D2DM_LOG_FUNC_EXIT__\r
-\r
-#define D2DM_SECLOGI(format, args...)\r
-#define D2DM_SECLOGD(format, args...)\r
-\r
-#endif /* USE_DLOG */\r
-\r
-#endif /* __D2D_MANAGER_LOG_H__ */\r
diff --git a/src/d2d-manager/d2d-manager.c b/src/d2d-manager/d2d-manager.c
deleted file mode 100644 (file)
index 2edd988..0000000
+++ /dev/null
@@ -1,79 +0,0 @@
-/*
- * Network Configuration Module
- *
- * Copyright (c) 2017 Samsung Electronics Co., Ltd. All rights reserved.
- *
- * 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 <stdio.h>
-#include <stdlib.h>
-#include <string.h>
-
-#include <glib.h>
-
-#include "d2d-common.h"
-#include "d2d-manager.h"
-#include "d2d-manager-log.h"
-
-/**< d2d-manager service */
-d2d_service *d2dsvc;
-
-int main(int argc, char *argv[])
-{
-       d2d_service *service = NULL;
-       int ret_code = 0;
-       gboolean ret;
-
-       __D2DM_LOG_FUNC_ENTER__;
-
-#if !GLIB_CHECK_VERSION(2, 32, 0)
-       if (!g_thread_supported())
-               g_thread_init(NULL);
-#endif
-
-#if !GLIB_CHECK_VERSION(2, 36, 0)
-       g_type_init();
-#endif
-       NOTUSED(argc);
-       NOTUSED(argv);
-
-       D2DM_LOGI("service mainloop start");
-#if 0
-       /* Create d2d-manager service */
-       d2dsvc = service = d2dm_service_new();
-
-       /* Initialize d2d-manager service interface layer */
-       ret = d2dm_service_interface_init(service);
-       if (G_UNLIKELY(FALSE == ret)) {
-               D2DM_LOGE("wmeshd_service_interface_init failed!");
-               goto END;
-       }
-
-       /* Run mesh service */
-       ret = wmeshd_service_run(service);
-       if (G_UNLIKELY(FALSE == ret)) {
-               D2DM_LOGE("Run service failed!");
-               ret_code = EXIT_FAILURE;
-       }
-
-END:
-       /* Free d2d-manager service */
-       d2dm_service_interface_deinit(service);
-       d2dm_service_free(service);
-       d2dsvc = NULL;
-#endif
-       __D2DM_LOG_FUNC_EXIT__;
-       return 0;
-}
-
diff --git a/src/d2d-manager/d2d-manager.h b/src/d2d-manager/d2d-manager.h
deleted file mode 100644 (file)
index 9f907be..0000000
+++ /dev/null
@@ -1,50 +0,0 @@
-/*\r
- * Network Configuration Module\r
- *\r
- * Copyright (c) 2017 Samsung Electronics Co., Ltd. All rights reserved.\r
- *\r
- * Licensed under the Apache License, Version 2.0 (the "License");\r
- * you may not use this file except in compliance with the License.\r
- * You may obtain a copy of the License at\r
- *\r
- * http://www.apache.org/licenses/LICENSE-2.0\r
- *\r
- * Unless required by applicable law or agreed to in writing, software\r
- * distributed under the License is distributed on an "AS IS" BASIS,\r
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r
- * See the License for the specific language governing permissions and\r
- * limitations under the License.\r
- *\r
- */\r
-#ifndef __D2D_MANAGER_H__\r
-#define __D2D_MANAGER_H__\r
-\r
-#include <glib.h>\r
-#include <gio/gio.h>\r
-#include <tizen.h>\r
-\r
-/**< Internal error code with mesh daemon. It should be matched with API side */\r
-typedef enum {\r
-       D2D_ERROR_NONE = 0, /**< Successful */\r
-       D2D_ERROR_IO_ERROR, /**< I/O error */\r
-       D2D_ERROR_NO_DATA, /**< Data not exists */\r
-       D2D_ERROR_OUT_OF_MEMORY, /**< out of memory */\r
-       D2D_ERROR_OPERATION_FAILED, /**< operation failed */\r
-       D2D_ERROR_INVALID_PARAMETER, /**< Invalid parameter */\r
-       D2D_ERROR_ALREADY_REGISTERED, /**< Request already registered */\r
-       D2D_ERROR_IN_PROGRESS /**< operation is in progress */\r
-} meshd_error_e;\r
-\r
-/**< mesh service structure */\r
-typedef struct _d2d_service {\r
-       GMainLoop *main_loop; /**< Service main-loop */\r
-       guint dbus_id; /**< D-Bus id */\r
-       guint activation_dbus_id; /**< D-Bus id for activation */\r
-\r
-       gpointer connection; /**< Connection handle for D-Bus call to other process */\r
-       GCancellable *ca; /**< Cancellable object for D-Bus call (Daemon->other) */\r
-       GList *dbus_sub_ids; /**< The list of subscribed signals */\r
-\r
-} d2d_service;\r
-\r
-#endif /* __D2D_MANAGER_H__ */\r
diff --git a/src/d2d-manager/d2dm-gdbus.c b/src/d2d-manager/d2dm-gdbus.c
new file mode 100644 (file)
index 0000000..f97dbe7
--- /dev/null
@@ -0,0 +1,178 @@
+/*\r
+ * Copyright (c) 2017 Samsung Electronics Co., Ltd All Rights Reserved\r
+ *\r
+ * Licensed under the Apache License, Version 2.0 (the "License");\r
+ * you may not use this file except in compliance with the License.\r
+ * You may obtain a copy of the License at\r
+ *\r
+ * http://www.apache.org/licenses/LICENSE-2.0\r
+ *\r
+ * Unless required by applicable law or agreed to in writing, software\r
+ * distributed under the License is distributed on an "AS IS" BASIS,\r
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r
+ * See the License for the specific language governing permissions and\r
+ * limitations under the License.\r
+ */\r
+\r
+#include "d2dm-log.h"\r
+#include "d2dm-util.h"\r
+#include "d2dm-gdbus.h"\r
+\r
+static int _d2dm_close_gdbus_call(d2dm_service *service)\r
+{\r
+       /* CHECK: is connection ref count required? */\r
+       g_object_unref(service->connection);\r
+       service->connection = NULL;\r
+\r
+       return D2DM_ERROR_NONE;\r
+}\r
+\r
+static void _dbus_name_owner_notify(GObject *object, GParamSpec *pspec,\r
+               gpointer *user_data)\r
+{\r
+       GDBusProxy *proxy = G_DBUS_PROXY(object);\r
+       gchar *name_owner = g_dbus_proxy_get_name_owner(proxy);\r
+       d2dm_service *service = (d2dm_service*)user_data;\r
+\r
+       NOTUSED(pspec);\r
+\r
+       if (NULL == name_owner) {\r
+               D2DM_LOGE("name_owner is not exists !");\r
+               _d2dm_close_gdbus_call(service);\r
+       }\r
+\r
+       g_free(name_owner);\r
+}\r
+\r
+static int _d2dm_create_gdbus_call(d2dm_service *service)\r
+{\r
+       int id;\r
+       GError *error = NULL;\r
+\r
+       if (NULL == service)\r
+               return D2DM_ERROR_INVALID_PARAMETER;\r
+\r
+       if (NULL != service->connection)\r
+               return D2DM_ERROR_ALREADY_REGISTERED;\r
+\r
+       service->connection = g_bus_get_sync(G_BUS_TYPE_SYSTEM, NULL, &error);\r
+       if (service->connection == NULL) {\r
+               if (error != NULL) {\r
+                       D2DM_LOGE("Failed to connect to the D-BUS daemon [%s]", error->message);\r
+                       g_error_free(error);\r
+               }\r
+               return D2DM_ERROR_IO_ERROR;\r
+       }\r
+\r
+       id = g_signal_connect(service->connection, "notify::g-name-owner",\r
+                       G_CALLBACK(_dbus_name_owner_notify), service);\r
+       if (0 == id) {\r
+               D2DM_LOGE("g_signal_connect() Fail");\r
+               g_object_unref(service->connection);\r
+               service->connection = NULL;\r
+               return D2DM_ERROR_IO_ERROR;\r
+       }\r
+\r
+       return D2DM_ERROR_NONE;\r
+}\r
+\r
+static void _d2dm_subscribe_event(d2dm_service *service)\r
+{\r
+       unsigned int id = 0;\r
+\r
+       d2dm_check_null_ret("service", service);\r
+#if 0\r
+       id = g_dbus_connection_signal_subscribe(\r
+                       (GDBusConnection *)service->connection,\r
+                       CONNMAN_SERVER_NAME, CONNMAN_INTERFACE_MANAGER,\r
+                       "ScanDone", "/", NULL,\r
+                       G_DBUS_CALL_FLAGS_NONE, _wmeshd_signal_handler, service, NULL);\r
+       if (0 == id) {\r
+               WMESH_LOGE("g_dbus_connection_signal_subscribe(ScanDone) Fail(%d)", errno);\r
+               return;\r
+       }\r
+       service->dbus_sub_ids = g_list_append(service->dbus_sub_ids, GUINT_TO_POINTER(id));\r
+       WMESH_LOGD("[Signal subscribe] : ScanDone (%d)", id);\r
+\r
+       /* To monitor mesh profiles */\r
+       id = g_dbus_connection_signal_subscribe(\r
+                       (GDBusConnection *)service->connection,\r
+                       CONNMAN_SERVER_NAME,\r
+                       CONNMAN_INTERFACE_MESH,\r
+                       "PropertyChanged",\r
+                       NULL, /* Path */\r
+                       NULL,\r
+                       G_DBUS_CALL_FLAGS_NONE, _wmeshd_signal_handler, service, NULL);\r
+       if (0 == id) {\r
+               WMESH_LOGE("g_dbus_connection_signal_subscribe(ScanDone) Fail(%d)", errno);\r
+               return;\r
+       }\r
+       service->dbus_sub_ids = g_list_append(service->dbus_sub_ids, GUINT_TO_POINTER(id));\r
+       WMESH_LOGD("[Signal subscribe] : PropertyChanged (%d)", id);\r
+#endif\r
+       /* End of subscription */\r
+}\r
+\r
+\r
+static void _on_unsubscribe_ids(gpointer data, gpointer user_data)\r
+{\r
+       unsigned int id = GPOINTER_TO_UINT(data);\r
+       d2dm_service *service = (d2dm_service*)user_data;\r
+\r
+       D2DM_LOGD("[Signal unsubscribe] : %d", id);\r
+       g_dbus_connection_signal_unsubscribe((GDBusConnection *)service->connection, id);\r
+}\r
+\r
+static void _wmeshd_unsubscribe_event(d2dm_service *service)\r
+{\r
+       d2dm_check_null_ret("service", service);\r
+\r
+       g_list_foreach(service->dbus_sub_ids, _on_unsubscribe_ids, service);\r
+\r
+       g_list_free(service->dbus_sub_ids);\r
+       service->dbus_sub_ids = NULL;\r
+}\r
+\r
+\r
+int d2dm_dbus_start(d2dm_service *service)\r
+{\r
+       int rv;\r
+\r
+       rv = _d2dm_create_gdbus_call(service);\r
+       if (D2DM_ERROR_NONE != rv)\r
+               return rv;\r
+\r
+       service->ca = g_cancellable_new();\r
+\r
+       /* Create all required proxies here */\r
+#if 0\r
+       _gproxy_connman = _proxy_get_connman(service);\r
+       wmeshd_check_null_ret_error("_gproxy_connman", _gproxy_connman,\r
+                               WMESHD_ERROR_IO_ERROR);\r
+       g_dbus_proxy_set_default_timeout(\r
+                       G_DBUS_PROXY(_gproxy_connman), WMESH_DBUS_PROXY_TIMEOUT);\r
+#endif\r
+       /* Subscribe events */\r
+       _d2dm_subscribe_event(service);\r
+\r
+       return D2DM_ERROR_NONE;\r
+}\r
+\r
+int d2dm_dbus_stop(d2dm_service *service)\r
+{\r
+       int rv;\r
+\r
+       if (NULL == service)\r
+               return D2DM_ERROR_INVALID_PARAMETER;\r
+\r
+       /* Unsubscribe events */\r
+       _wmeshd_unsubscribe_event(service);\r
+\r
+       g_cancellable_cancel(service->ca);\r
+       g_object_unref(service->ca);\r
+       service->ca = NULL;\r
+\r
+       rv = _d2dm_close_gdbus_call(service);\r
+       return rv;\r
+}\r
+\r
diff --git a/src/d2d-manager/d2dm-gdbus.h b/src/d2d-manager/d2dm-gdbus.h
new file mode 100644 (file)
index 0000000..c1714f5
--- /dev/null
@@ -0,0 +1,34 @@
+/*\r
+ * Copyright (c) 2017 Samsung Electronics Co., Ltd All Rights Reserved\r
+ *\r
+ * Licensed under the Apache License, Version 2.0 (the "License");\r
+ * you may not use this file except in compliance with the License.\r
+ * You may obtain a copy of the License at\r
+ *\r
+ * http://www.apache.org/licenses/LICENSE-2.0\r
+ *\r
+ * Unless required by applicable law or agreed to in writing, software\r
+ * distributed under the License is distributed on an "AS IS" BASIS,\r
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r
+ * See the License for the specific language governing permissions and\r
+ * limitations under the License.\r
+ */\r
+\r
+#ifndef __D2DM_GDBUS_H__\r
+#define __D2DM_GDBUS_H__\r
+\r
+#include "d2dm.h"\r
+\r
+#ifdef __cplusplus\r
+extern "C" {\r
+#endif\r
+\r
+int d2dm_dbus_start(d2dm_service *service);\r
+int d2dm_dbus_stop(d2dm_service *service);\r
+\r
+#ifdef __cplusplus\r
+}\r
+#endif\r
+\r
+#endif /** __D2DM_GDBUS_H__ */\r
+\r
diff --git a/src/d2d-manager/d2dm-log.h b/src/d2d-manager/d2dm-log.h
new file mode 100644 (file)
index 0000000..571dd25
--- /dev/null
@@ -0,0 +1,62 @@
+/*\r
+ * Network Configuration Module\r
+ *\r
+ * Copyright (c) 2017 Samsung Electronics Co., Ltd. All rights reserved.\r
+ *\r
+ * Licensed under the Apache License, Version 2.0 (the "License");\r
+ * you may not use this file except in compliance with the License.\r
+ * You may obtain a copy of the License at\r
+ *\r
+ * http://www.apache.org/licenses/LICENSE-2.0\r
+ *\r
+ * Unless required by applicable law or agreed to in writing, software\r
+ * distributed under the License is distributed on an "AS IS" BASIS,\r
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r
+ * See the License for the specific language governing permissions and\r
+ * limitations under the License.\r
+ *\r
+ */\r
+#ifndef __D2D_LOG_H__\r
+#define __D2D_LOG_H__\r
+\r
+#ifdef LOG_TAG\r
+#undef LOG_TAG\r
+#endif\r
+\r
+#ifdef USE_DLOG\r
+#include <dlog.h>\r
+\r
+#undef LOG_TAG\r
+#define LOG_TAG "D2D_MANAGER"\r
+\r
+#define D2DM_LOGV(format, args...) LOGV(format, ##args)\r
+#define D2DM_LOGD(format, args...) LOGD(format, ##args)\r
+#define D2DM_LOGI(format, args...) LOGI(format, ##args)\r
+#define D2DM_LOGW(format, args...) LOGW(format, ##args)\r
+#define D2DM_LOGE(format, args...) LOGE(format, ##args)\r
+#define D2DM_LOGF(format, args...) LOGF(format, ##args)\r
+\r
+#define __D2DM_LOG_FUNC_ENTER__ LOGD("Enter")\r
+#define __D2DM_LOG_FUNC_EXIT__ LOGD("Quit")\r
+\r
+#define D2DM_SECLOGI(format, args...) SECURE_LOG(LOG_INFO, LOG_TAG, format, ##args)\r
+#define D2DM_SECLOGD(format, args...) SECURE_LOG(LOG_DEBUG, LOG_TAG, format, ##args)\r
+\r
+#else /* USE_DLOG */\r
+\r
+#define D2DM_LOGV(format, args...)\r
+#define D2DM_LOGD(format, args...)\r
+#define D2DM_LOGI(format, args...)\r
+#define D2DM_LOGW(format, args...)\r
+#define D2DM_LOGE(format, args...)\r
+#define D2DM_LOGF(format, args...)\r
+\r
+#define __D2DM_LOG_FUNC_ENTER__\r
+#define __D2DM_LOG_FUNC_EXIT__\r
+\r
+#define D2DM_SECLOGI(format, args...)\r
+#define D2DM_SECLOGD(format, args...)\r
+\r
+#endif /* USE_DLOG */\r
+\r
+#endif /* __D2D_LOG_H__ */\r
diff --git a/src/d2d-manager/d2dm-service-interface.c b/src/d2d-manager/d2dm-service-interface.c
new file mode 100644 (file)
index 0000000..9e03d06
--- /dev/null
@@ -0,0 +1,354 @@
+/*\r
+ * Network Configuration Module\r
+ *\r
+ * Copyright (c) 2017 Samsung Electronics Co., Ltd. All rights reserved.\r
+ *\r
+ * Licensed under the Apache License, Version 2.0 (the "License");\r
+ * you may not use this file except in compliance with the License.\r
+ * You may obtain a copy of the License at\r
+ *\r
+ * http://www.apache.org/licenses/LICENSE-2.0\r
+ *\r
+ * Unless required by applicable law or agreed to in writing, software\r
+ * distributed under the License is distributed on an "AS IS" BASIS,\r
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r
+ * See the License for the specific language governing permissions and\r
+ * limitations under the License.\r
+ *\r
+ */\r
+#include <glib.h>\r
+\r
+#include "d2dm.h"\r
+#include "d2dm-log.h"\r
+#include "d2dm-util.h"\r
+#include "d2dm-service.h"\r
+#include "d2dm-service-interface.h"\r
+#include "d2dm-generated-code.h"\r
+\r
+static NetD2dm *d2dm_dbus_object;\r
+static Enabler *d2dm_activator_dbus_object;\r
+\r
+/* global list to care resource handle for each client */\r
+static GList *d2dm_dbus_client_list;\r
+static GMutex d2dm_dbus_client_list_mutex;\r
+\r
+typedef struct _d2dm_dbus_client_s {\r
+       gchar *bus_name;\r
+} d2dm_dbus_client_s;\r
+\r
+NetD2dm* d2dm_dbus_get_object()\r
+{\r
+       return d2dm_dbus_object;\r
+}\r
+\r
+static int _d2dm_dbus_client_list_cleanup(GList *client_list)\r
+{\r
+       d2dm_dbus_client_s *client;\r
+\r
+       d2dm_check_null_ret_error("client_list", client_list, FALSE);\r
+\r
+       client = client_list->data;\r
+\r
+       g_free(client->bus_name);\r
+       client->bus_name = NULL;\r
+       g_free(client);\r
+       g_list_free(client_list);\r
+\r
+       return D2DM_ERROR_NONE;\r
+}\r
+\r
+static int _d2dm_dbus_client_list_compare_bus_name(const void *a, const void *b)\r
+{\r
+       const d2dm_dbus_client_s *client = a;\r
+       return g_strcmp0(client->bus_name, b);\r
+}\r
+\r
+static inline GList* _d2dm_dbus_client_list_find_client(const gchar *owner)\r
+{\r
+       return g_list_find_custom(d2dm_dbus_client_list, owner,\r
+                       _d2dm_dbus_client_list_compare_bus_name);\r
+}\r
+\r
+static void _d2dm_dbus_name_owner_changed_cb(GDBusConnection *conn,\r
+               const gchar *sender_name,\r
+               const gchar *object_path,\r
+               const gchar *interface_name,\r
+               const gchar *signal_name,\r
+               GVariant *parameters,\r
+               gpointer user_data)\r
+{\r
+       int ret;\r
+       GList *client = NULL;\r
+       gchar *name, *old_owner, *new_owner;\r
+\r
+       NOTUSED(conn);\r
+       NOTUSED(sender_name);\r
+       NOTUSED(object_path);\r
+       NOTUSED(interface_name);\r
+       NOTUSED(signal_name);\r
+       NOTUSED(user_data);\r
+\r
+       g_variant_get(parameters, "(&s&s&s)", &name, &old_owner, &new_owner);\r
+\r
+       if (0 == strlen(new_owner)) {\r
+               g_mutex_lock(&d2dm_dbus_client_list_mutex);\r
+               client = _d2dm_dbus_client_list_find_client(old_owner);\r
+               if (client) { /* found bus name in our bus list */\r
+                       D2DM_LOGD("bus(%s) stopped", old_owner);\r
+                       d2dm_dbus_client_list = g_list_remove_link(d2dm_dbus_client_list, client);\r
+               }\r
+               g_mutex_unlock(&d2dm_dbus_client_list_mutex);\r
+\r
+               if (client) {\r
+                       ret = _d2dm_dbus_client_list_cleanup(client);\r
+                       if (D2DM_ERROR_NONE != ret)\r
+                               D2DM_LOGE("_d2dm_dbus_client_list_cleanup() Fail(%d)", ret);\r
+               }\r
+       }\r
+}\r
+\r
+static int _d2dm_dbus_subscribe_name_owner_changed(GDBusConnection *conn)\r
+{\r
+       unsigned int id;\r
+\r
+       id = g_dbus_connection_signal_subscribe(conn,\r
+                       "org.freedesktop.DBus", /* bus name */\r
+                       "org.freedesktop.DBus", /* interface */\r
+                       "NameOwnerChanged", /* member */\r
+                       "/org/freedesktop/DBus", /* path */\r
+                       NULL, /* arg0 */\r
+                       G_DBUS_SIGNAL_FLAGS_NONE,\r
+                       _d2dm_dbus_name_owner_changed_cb,\r
+                       NULL,\r
+                       NULL);\r
+       if (0 == id) {\r
+               D2DM_LOGE("g_dbus_connection_signal_subscribe() Fail");\r
+               return D2DM_ERROR_IO_ERROR;\r
+       }\r
+\r
+       return D2DM_ERROR_NONE;\r
+}\r
+\r
+\r
+static gboolean _d2dm_dbus_handle_find_peer(NetD2dm *object,\r
+               GDBusMethodInvocation *invocation,\r
+               gpointer user_data)\r
+{\r
+       int ret = D2DM_ERROR_NONE;\r
+       d2dm_service *service = (d2dm_service *)user_data;\r
+\r
+       d2dm_check_null_ret_error("service", service, FALSE);\r
+\r
+#if 0\r
+       ret = d2dm_request_find_peers(service);\r
+       if (D2DM_ERROR_NONE != ret)\r
+               D2DM_LOGE("Failed to wmesh_request_scan !");\r
+#endif\r
+       net_d2dm_complete_find_peer(object, invocation, ret);\r
+\r
+       return TRUE;\r
+}\r
+\r
+\r
+static void _d2dm_dbus_on_bus_acquired(GDBusConnection *conn, const gchar *name,\r
+               gpointer user_data)\r
+{\r
+       gboolean ret;\r
+       GError *error = NULL;\r
+       d2dm_service *service = (d2dm_service *)user_data;\r
+\r
+       NOTUSED(name);\r
+\r
+       d2dm_dbus_object = net_d2dm_skeleton_new();\r
+       if (NULL == d2dm_dbus_object) {\r
+               D2DM_LOGE("net_d2dm_skeleton_new() Fail");\r
+               return;\r
+       }\r
+\r
+       g_signal_connect(d2dm_dbus_object, "handle-find-peers",\r
+                       G_CALLBACK(_d2dm_dbus_handle_find_peer), service);\r
+\r
+       ret = g_dbus_interface_skeleton_export(G_DBUS_INTERFACE_SKELETON(d2dm_dbus_object),\r
+                       conn, D2DM_DBUS_OBJPATH, &error);\r
+       if (FALSE == ret) {\r
+               D2DM_LOGE("g_dbus_interface_skeleton_export() Fail(%s)", error->message);\r
+               g_error_free(error);\r
+       }\r
+\r
+       ret = _d2dm_dbus_subscribe_name_owner_changed(conn);\r
+       if (D2DM_ERROR_NONE != ret) {\r
+               D2DM_LOGE("_d2dm_dbus_subscribe_name_owner_changed() Fail(%d)", ret);\r
+               return;\r
+       }\r
+\r
+}\r
+\r
+static void _d2dm_dbus_on_name_lost(GDBusConnection *conn, const gchar *name,\r
+               gpointer user_data)\r
+{\r
+       NOTUSED(conn);\r
+       NOTUSED(user_data);\r
+\r
+       D2DM_LOGD("Lost the name %s", name);\r
+}\r
+\r
+static void _d2dm_dbus_on_name_acquired(GDBusConnection *conn, const gchar *name,\r
+               gpointer user_data)\r
+{\r
+       NOTUSED(conn);\r
+       NOTUSED(user_data);\r
+\r
+       D2DM_LOGD("Acquired the name %s", name);\r
+}\r
+\r
+static gboolean _d2dm_dbus_handle_enable(Enabler *object,\r
+               GDBusMethodInvocation *invocation,\r
+               gpointer user_data)\r
+{\r
+       int ret = D2DM_ERROR_NONE;\r
+       d2dm_service *service = (d2dm_service *)user_data;\r
+\r
+       __D2DM_LOG_FUNC_ENTER__;\r
+\r
+       /* Do API response first */\r
+       enabler_complete_enable(object, invocation, ret);\r
+       service->d2dm_activated = TRUE;\r
+\r
+       if (service->d2dp_activated) {\r
+               /* Enable d2d proxy */\r
+       }\r
+       service->d2dp_activated = TRUE;\r
+\r
+       /* Notify d2d-manager enabled */\r
+       net_d2dm_emit_proxy_enabled(d2dm_dbus_get_object(), ret);\r
+\r
+       __D2DM_LOG_FUNC_EXIT__;\r
+\r
+       return TRUE;\r
+}\r
+\r
+static gboolean _d2dm_dbus_handle_disable(Enabler *object,\r
+               GDBusMethodInvocation *invocation,\r
+               gpointer user_data)\r
+{\r
+       int ret = D2DM_ERROR_NONE;\r
+       d2dm_service *service = (d2dm_service *)user_data;\r
+\r
+       __D2DM_LOG_FUNC_ENTER__;\r
+\r
+       /* Make response first */\r
+       enabler_complete_disable(object, invocation, ret);\r
+\r
+       /* Terminate daemon */\r
+       d2dm_service_exit(service);\r
+\r
+       return TRUE;\r
+}\r
+\r
+static void _d2dm_dbus_on_activator_bus_acquired(GDBusConnection *conn,\r
+               const gchar *name, gpointer user_data)\r
+{\r
+       gboolean ret;\r
+       GError *error = NULL;\r
+       d2dm_service *service = (d2dm_service *)user_data;\r
+\r
+       NOTUSED(name);\r
+\r
+       __D2DM_LOG_FUNC_ENTER__;\r
+\r
+       d2dm_activator_dbus_object = enabler_skeleton_new();\r
+       if (NULL == d2dm_activator_dbus_object) {\r
+               D2DM_LOGE("enabler_skeleton_new() Fail");\r
+               return;\r
+       }\r
+\r
+       g_signal_connect(d2dm_activator_dbus_object, "handle-enable",\r
+                       G_CALLBACK(_d2dm_dbus_handle_enable), service);\r
+       g_signal_connect(d2dm_activator_dbus_object, "handle-disable",\r
+                       G_CALLBACK(_d2dm_dbus_handle_disable), service);\r
+\r
+       ret = g_dbus_interface_skeleton_export(\r
+                               G_DBUS_INTERFACE_SKELETON(d2dm_activator_dbus_object),\r
+                               conn, D2DM_DBUS_ENABLER_OBJPATH, &error);\r
+       if (FALSE == ret) {\r
+               D2DM_LOGE("g_dbus_interface_skeleton_export() Fail(%s)", error->message);\r
+               g_error_free(error);\r
+       }\r
+\r
+       __D2DM_LOG_FUNC_EXIT__;\r
+\r
+}\r
+\r
+static gboolean _d2dm_dbus_interface_init(d2dm_service *service)\r
+{\r
+       guint id;\r
+       guint activation_dbus_id;\r
+       d2dm_check_null_ret_error("service", service, FALSE);\r
+\r
+       id = g_bus_own_name(G_BUS_TYPE_SYSTEM,\r
+                       D2DM_DBUS_INTERFACE,\r
+                       G_BUS_NAME_OWNER_FLAGS_REPLACE,\r
+                       _d2dm_dbus_on_bus_acquired,\r
+                       _d2dm_dbus_on_name_acquired,\r
+                       _d2dm_dbus_on_name_lost,\r
+                       service,\r
+                       NULL);\r
+       if (0 == id) {\r
+               D2DM_LOGE("g_bus_own_name() Fail");\r
+               return FALSE;\r
+       }\r
+\r
+       /* Get D-Bus owner to activate mesh service daemon */\r
+       activation_dbus_id = g_bus_own_name(G_BUS_TYPE_SYSTEM,\r
+                       D2DM_DBUS_INTERFACE".enabler",\r
+                       G_BUS_NAME_OWNER_FLAGS_REPLACE,\r
+                       _d2dm_dbus_on_activator_bus_acquired,\r
+                       NULL,\r
+                       NULL,\r
+                       service,\r
+                       NULL);\r
+\r
+       service->dbus_id = id;\r
+       service->activation_dbus_id = activation_dbus_id;\r
+\r
+       /* Intiailze DBus sender */\r
+       d2dm_dbus_start(service);\r
+\r
+       return TRUE;\r
+}\r
+\r
+static void _d2dm_dbus_deinit(d2dm_service *service)\r
+{\r
+       d2dm_check_null_ret("service", service);\r
+\r
+       g_bus_unown_name(service->dbus_id);\r
+       g_bus_unown_name(service->activation_dbus_id);\r
+}\r
+\r
+gboolean d2dm_service_interface_init(d2dm_service *service)\r
+{\r
+       guint ret;\r
+       d2dm_check_null_ret_error("service", service, FALSE);\r
+\r
+       __D2DM_LOG_FUNC_ENTER__;\r
+\r
+       /* Initialize dbus interface */\r
+       ret = _d2dm_dbus_interface_init(service);\r
+       if (FALSE == ret) {\r
+               D2DM_LOGE("_d2dm_dbus_interface_init failed!!!");\r
+               return FALSE;\r
+       }\r
+\r
+       __D2DM_LOG_FUNC_EXIT__;\r
+\r
+       return TRUE;\r
+}\r
+\r
+void d2dm_service_interface_deinit(d2dm_service *service)\r
+{\r
+       d2dm_check_null_ret("service", service);\r
+\r
+       /* De-initialize dbus interface */\r
+       _d2dm_dbus_deinit(service);\r
+}\r
+\r
diff --git a/src/d2d-manager/d2dm-service-interface.h b/src/d2d-manager/d2dm-service-interface.h
new file mode 100644 (file)
index 0000000..343ccb5
--- /dev/null
@@ -0,0 +1,52 @@
+/*\r
+ * Network Configuration Module\r
+ *\r
+ * Copyright (c) 2017 Samsung Electronics Co., Ltd. All rights reserved.\r
+ *\r
+ * Licensed under the Apache License, Version 2.0 (the "License");\r
+ * you may not use this file except in compliance with the License.\r
+ * You may obtain a copy of the License at\r
+ *\r
+ * http://www.apache.org/licenses/LICENSE-2.0\r
+ *\r
+ * Unless required by applicable law or agreed to in writing, software\r
+ * distributed under the License is distributed on an "AS IS" BASIS,\r
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r
+ * See the License for the specific language governing permissions and\r
+ * limitations under the License.\r
+ *\r
+ */\r
+#ifndef __D2DM_SERVICE_INTERFACE_H__\r
+#define __D2DM_SERVICE_INTERFACE_H__\r
+\r
+#ifdef __cplusplus\r
+extern "C" {\r
+#endif\r
+\r
+/**< Mesh D-BUS service*/\r
+#define D2DM_DBUS_SERVICE "net.d2dm"\r
+\r
+/**< Mesh D-BUS service path */\r
+#define D2DM_DBUS_PATH "/net/d2dm"\r
+\r
+#ifndef D2DM_DBUS_INTERFACE\r
+#define D2DM_DBUS_INTERFACE "net.d2dm"\r
+#endif\r
+\r
+#ifndef D2DM_DBUS_OBJPATH\r
+#define D2DM_DBUS_OBJPATH "/net/d2dm"\r
+#endif\r
+\r
+#ifndef D2DM_DBUS_ENABLER_OBJPATH\r
+#define D2DM_DBUS_ENABLER_OBJPATH "/net/d2dm/enabler"\r
+#endif\r
+\r
+gboolean d2dm_service_interface_init(d2dm_service *service);\r
+void d2dm_service_interface_deinit(d2dm_service *service);\r
+\r
+#ifdef __cplusplus\r
+}\r
+#endif\r
+\r
+#endif /* __D2DM_SERVICE_INTERFACE_H__ */\r
+\r
diff --git a/src/d2d-manager/d2dm-service.c b/src/d2d-manager/d2dm-service.c
new file mode 100644 (file)
index 0000000..6c3cdbf
--- /dev/null
@@ -0,0 +1,71 @@
+/*\r
+ * Network Configuration Module\r
+ *\r
+ * Copyright (c) 2017 Samsung Electronics Co., Ltd. All rights reserved.\r
+ *\r
+ * Licensed under the Apache License, Version 2.0 (the "License");\r
+ * you may not use this file except in compliance with the License.\r
+ * You may obtain a copy of the License at\r
+ *\r
+ * http://www.apache.org/licenses/LICENSE-2.0\r
+ *\r
+ * Unless required by applicable law or agreed to in writing, software\r
+ * distributed under the License is distributed on an "AS IS" BASIS,\r
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r
+ * See the License for the specific language governing permissions and\r
+ * limitations under the License.\r
+ *\r
+ */\r
+#include <glib.h>\r
+\r
+#include "d2dm.h"\r
+#include "d2dm-log.h"\r
+#include "d2dm-util.h"\r
+\r
+d2dm_service *d2dm_service_new()\r
+{\r
+       d2dm_service *service;\r
+\r
+       service = g_malloc0(sizeof(struct _d2d_service));\r
+\r
+       /* Create g-main loop */\r
+       service->main_loop = g_main_loop_new(NULL, FALSE);\r
+       if (G_UNLIKELY(NULL == service->main_loop)) {\r
+               D2DM_LOGE("g-main loop creation failed!!!");\r
+               g_free(service);\r
+               return NULL;\r
+       }\r
+\r
+       return service;\r
+}\r
+\r
+void d2dm_service_free(d2dm_service *service)\r
+{\r
+       d2dm_check_null_ret("service", service);\r
+\r
+       /* Unref 'g-main loop' */\r
+       if (service->main_loop)\r
+               g_main_loop_unref(service->main_loop);\r
+\r
+       g_free(service);\r
+}\r
+\r
+gboolean d2dm_service_run(d2dm_service *service)\r
+{\r
+       d2dm_check_null_ret_error("service", service, FALSE);\r
+       d2dm_check_null_ret_error("service->main_loop", service->main_loop, FALSE);\r
+\r
+       g_main_loop_run(service->main_loop);\r
+\r
+       return TRUE;\r
+}\r
+\r
+gboolean d2dm_service_exit(d2dm_service *service)\r
+{\r
+       d2dm_check_null_ret_error("service", service, FALSE);\r
+       d2dm_check_null_ret_error("service->main_loop", service->main_loop, FALSE);\r
+\r
+       g_main_loop_quit(service->main_loop);\r
+\r
+       return TRUE;\r
+}\r
diff --git a/src/d2d-manager/d2dm-service.h b/src/d2d-manager/d2dm-service.h
new file mode 100644 (file)
index 0000000..71230c9
--- /dev/null
@@ -0,0 +1,36 @@
+/*\r
+ * Network Configuration Module\r
+ *\r
+ * Copyright (c) 2017 Samsung Electronics Co., Ltd. All rights reserved.\r
+ *\r
+ * Licensed under the Apache License, Version 2.0 (the "License");\r
+ * you may not use this file except in compliance with the License.\r
+ * You may obtain a copy of the License at\r
+ *\r
+ * http://www.apache.org/licenses/LICENSE-2.0\r
+ *\r
+ * Unless required by applicable law or agreed to in writing, software\r
+ * distributed under the License is distributed on an "AS IS" BASIS,\r
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r
+ * See the License for the specific language governing permissions and\r
+ * limitations under the License.\r
+ *\r
+ */\r
+#ifndef __D2DM_SERVICE_H__\r
+#define __D2DM_SERVICE_H__\r
+\r
+#ifdef __cplusplus\r
+extern "C" {\r
+#endif\r
+\r
+d2dm_service *d2dm_service_new();\r
+void d2dm_service_free(d2dm_service *service);\r
+gboolean d2dm_service_run(d2dm_service *service);\r
+gboolean d2dm_service_exit(d2dm_service *service);\r
+\r
+#ifdef __cplusplus\r
+}\r
+#endif\r
+\r
+#endif /* __D2DM_SERVICE_H__ */\r
+\r
diff --git a/src/d2d-manager/d2dm-util.h b/src/d2d-manager/d2dm-util.h
new file mode 100644 (file)
index 0000000..db7537c
--- /dev/null
@@ -0,0 +1,44 @@
+/*
+ * Network Configuration Module
+ *
+ * Copyright (c) 2017 Samsung Electronics Co., Ltd. All rights reserved.
+ *
+ * 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 __D2DM_UTIL_H__
+#define __D2DM_UTIL_H__
+
+#include <glib.h>
+#include <unistd.h>
+#include <gio/gio.h>
+
+#include "d2dm-log.h"
+
+#define NOTUSED(var) (var = var)
+
+#define d2dm_check_null_ret_error(name, value, error) do { \
+               if (G_UNLIKELY(NULL == (value))) { \
+                                       D2DM_LOGE("%s is NULL", name); \
+                                       return error; \
+                               } \
+} while (FALSE)
+
+#define d2dm_check_null_ret(name, value) do { \
+               if (G_UNLIKELY(NULL == (value))) { \
+                                       D2DM_LOGE("%s is NULL", name); \
+                                       return; \
+                               } \
+} while (FALSE)
+
+#endif /* __D2DM_UTIL_H__ */
diff --git a/src/d2d-manager/d2dm.c b/src/d2d-manager/d2dm.c
new file mode 100644 (file)
index 0000000..0b7d099
--- /dev/null
@@ -0,0 +1,79 @@
+/*
+ * Network Configuration Module
+ *
+ * Copyright (c) 2017 Samsung Electronics Co., Ltd. All rights reserved.
+ *
+ * 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 <stdio.h>
+#include <stdlib.h>
+#include <string.h>
+
+#include <glib.h>
+
+#include "d2dm.h"
+#include "d2dm-log.h"
+#include "d2dm-util.h"
+#include "d2dm-service.h"
+
+/**< d2d-manager service */
+d2dm_service *d2dsvc;
+
+int main(int argc, char *argv[])
+{
+       d2dm_service *service = NULL;
+       int ret_code = 0;
+       gboolean ret;
+
+       __D2DM_LOG_FUNC_ENTER__;
+
+#if !GLIB_CHECK_VERSION(2, 32, 0)
+       if (!g_thread_supported())
+               g_thread_init(NULL);
+#endif
+
+#if !GLIB_CHECK_VERSION(2, 36, 0)
+       g_type_init();
+#endif
+       NOTUSED(argc);
+       NOTUSED(argv);
+
+       D2DM_LOGI("service mainloop start");
+
+       /* Create d2d-manager service */
+       d2dsvc = service = d2dm_service_new();
+
+       /* Initialize d2d-manager service interface layer */
+       ret = d2dm_service_interface_init(service);
+       if (G_UNLIKELY(FALSE == ret)) {
+               D2DM_LOGE("Service interface init. failed!");
+               goto END;
+       }
+       /* Run mesh service */
+       ret = d2dm_service_run(service);
+       if (G_UNLIKELY(FALSE == ret)) {
+               D2DM_LOGE("Run service failed!");
+               ret_code = EXIT_FAILURE;
+       }
+
+END:
+       /* Free d2d-manager service */
+       d2dm_service_interface_deinit(service);
+       d2dm_service_free(service);
+       d2dsvc = NULL;
+
+       __D2DM_LOG_FUNC_EXIT__;
+       return 0;
+}
+
diff --git a/src/d2d-manager/d2dm.h b/src/d2d-manager/d2dm.h
new file mode 100644 (file)
index 0000000..4a4abad
--- /dev/null
@@ -0,0 +1,53 @@
+/*\r
+ * Network Configuration Module\r
+ *\r
+ * Copyright (c) 2017 Samsung Electronics Co., Ltd. All rights reserved.\r
+ *\r
+ * Licensed under the Apache License, Version 2.0 (the "License");\r
+ * you may not use this file except in compliance with the License.\r
+ * You may obtain a copy of the License at\r
+ *\r
+ * http://www.apache.org/licenses/LICENSE-2.0\r
+ *\r
+ * Unless required by applicable law or agreed to in writing, software\r
+ * distributed under the License is distributed on an "AS IS" BASIS,\r
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r
+ * See the License for the specific language governing permissions and\r
+ * limitations under the License.\r
+ *\r
+ */\r
+#ifndef __D2D_MANAGER_H__\r
+#define __D2D_MANAGER_H__\r
+\r
+#include <glib.h>\r
+#include <gio/gio.h>\r
+#include <tizen.h>\r
+\r
+/**< Internal error code with mesh daemon. It should be matched with API side */\r
+typedef enum {\r
+       D2DM_ERROR_NONE = 0, /**< Successful */\r
+       D2DM_ERROR_IO_ERROR, /**< I/O error */\r
+       D2DM_ERROR_NO_DATA, /**< Data not exists */\r
+       D2DM_ERROR_OUT_OF_MEMORY, /**< out of memory */\r
+       D2DM_ERROR_OPERATION_FAILED, /**< operation failed */\r
+       D2DM_ERROR_INVALID_PARAMETER, /**< Invalid parameter */\r
+       D2DM_ERROR_ALREADY_REGISTERED, /**< Request already registered */\r
+       D2DM_ERROR_IN_PROGRESS /**< operation is in progress */\r
+} d2dm_error_e;\r
+\r
+/**< mesh service structure */\r
+typedef struct _d2d_service {\r
+       GMainLoop *main_loop; /**< Service main-loop */\r
+       guint dbus_id; /**< D-Bus id */\r
+       guint activation_dbus_id; /**< D-Bus id for activation */\r
+\r
+       gpointer connection; /**< Connection handle for D-Bus call to other process */\r
+       GCancellable *ca; /**< Cancellable object for D-Bus call (Daemon->other) */\r
+       GList *dbus_sub_ids; /**< The list of subscribed signals */\r
+\r
+       gboolean d2dp_activated; /**< Whetehr d2d-proxy enabled or not */\r
+       gboolean d2dm_activated; /**< Whether d2d-manager enabled or not */\r
+\r
+} d2dm_service;\r
+\r
+#endif /* __D2D_MANAGER_H__ */\r
diff --git a/src/d2d-manager/introspection/.d2d-generated-code.h.swp b/src/d2d-manager/introspection/.d2d-generated-code.h.swp
new file mode 100644 (file)
index 0000000..d6676cb
Binary files /dev/null and b/src/d2d-manager/introspection/.d2d-generated-code.h.swp differ
diff --git a/src/d2d-manager/introspection/d2dm.xml b/src/d2d-manager/introspection/d2dm.xml
new file mode 100644 (file)
index 0000000..9184d21
--- /dev/null
@@ -0,0 +1,21 @@
+<?xml version="1.0" encoding="UTF-8" ?>\r
+\r
+<!DOCTYPE node PUBLIC\r
+       "-//freedesktop//DTD D-Bus Object Introspection 1.0//EN"\r
+       "http://standards.freedesktop.org/dbus/1.0/introspect.dtd">\r
+\r
+<node>\r
+       <interface name="net.d2dm">\r
+               <!-- Method definitions -->\r
+               <method name="find_peer">\r
+                       <arg type="i" name="result" direction="out"/>\r
+               </method>\r
+\r
+               <!-- Signal (D-Bus) definitions -->\r
+               <signal name="proxy_enabled">\r
+                       <arg type="i" name="result" direction="out"/>\r
+               </signal>\r
+               <signal name="find_peer_done">\r
+               </signal>\r
+       </interface>\r
+</node>\r
diff --git a/src/d2d-manager/introspection/enabler.xml b/src/d2d-manager/introspection/enabler.xml
new file mode 100644 (file)
index 0000000..05c396b
--- /dev/null
@@ -0,0 +1,17 @@
+<?xml version="1.0" encoding="UTF-8" ?>
+
+<!DOCTYPE node PUBLIC
+       "-//freedesktop//DTD D-Bus Object Introspection 1.0//EN"
+       "http://standards.freedesktop.org/dbus/1.0/introspect.dtd">
+
+<node>
+       <interface name="net.d2dm.enabler">
+               <!-- Method definitions -->
+               <method name="enable">
+                       <arg type="i" name="result" direction="out"/>
+               </method>
+               <method name="disable">
+                       <arg type="i" name="result" direction="out"/>
+               </method>
+       </interface>
+</node>
diff --git a/src/d2d-manager/introspection/gen.sh b/src/d2d-manager/introspection/gen.sh
new file mode 100755 (executable)
index 0000000..7017da9
--- /dev/null
@@ -0,0 +1,6 @@
+gdbus-codegen --interface-prefix net.d2dm. \
+        --generate-c-code d2dm-generated-code \
+        --c-generate-object-manager \
+        --generate-docbook generated-docs \
+        d2dm.xml \
+        enabler.xml
diff --git a/src/include/d2d-common.h b/src/include/d2d-common.h
deleted file mode 100644 (file)
index 5cee265..0000000
+++ /dev/null
@@ -1,42 +0,0 @@
-/*
- * Network Configuration Module
- *
- * Copyright (c) 2017 Samsung Electronics Co., Ltd. All rights reserved.
- *
- * 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 __D2D_COMMON_H__
-#define __D2D_COMMON_H__
-
-#include <glib.h>
-#include <unistd.h>
-#include <gio/gio.h>
-
-#define NOTUSED(var) (var = var)
-
-#define d2dd_check_null_ret_error(name, value, error) do { \
-               if (G_UNLIKELY(NULL == (value))) { \
-                                       WMESH_LOGE("%s is NULL", name); \
-                                       return error; \
-                               } \
-} while (FALSE)
-
-#define d2dd_check_null_ret(name, value) do { \
-               if (G_UNLIKELY(NULL == (value))) { \
-                                       WMESH_LOGE("%s is NULL", name); \
-                                       return; \
-                               } \
-} while (FALSE)
-
-#endif /* __D2D_COMMON_H__ */
old mode 100755 (executable)
new mode 100644 (file)
old mode 100755 (executable)
new mode 100644 (file)
diff --git a/src/introspection/d2d-manager.c b/src/introspection/d2d-manager.c
deleted file mode 100644 (file)
index 2fb6bdb..0000000
+++ /dev/null
@@ -1,57 +0,0 @@
-#include <stdio.h>
-#include <stdlib.h>
-#include <string.h>
-
-#include <glib.h>
-
-#include "mesh.h"
-#include "mesh-log.h"
-#include "mesh-util.h"
-#include "mesh-service.h"
-#include "mesh-service-interface.h"
-
-/**< mesh service */
-+mesh_service *meshsvc;
-
-int main(int argc, char *argv[])
-{
-       mesh_service *service = NULL;
-       int ret_code = 0;
-       gboolean ret;
-
-       __MESH_LOG_FUNC_ENTER__;
-
-#if !GLIB_CHECK_VERSION(2, 32, 0)
-       if (!g_thread_supported())
-#if !GLIB_CHECK_VERSION(2, 36, 0)
-       g_type_init();
-#endif
-       NOTUSED(argc);
-       NOTUSED(argv);
-
-       MESH_LOGI("service mainloop start");
-
-       /* Create mesh service */
-       meshsvc = service = meshd_service_new();
-
-       /* Initialize mesh service interface layer */
-       ret = meshd_service_interface_init(service);
-       if (G_UNLIKELY(FALSE == ret)) {
-               MESH_LOGE("zigbee_service_interface_init failed!");
-               goto END;
-       }
-
-       /* Run mesh service */
-       ret = meshd_service_run(service);
-       if (G_UNLIKELY(FALSE == ret)) {
-               MESH_LOGE("Run service failed!");
-               ret_code = EXIT_FAILURE;
-       }
-
-       /* Free mesh service */
-       meshd_service_free(service);
-       meshsvc = NULL;
-
-       __MESH_LOG_FUNC_EXIT__;
-       return 0;
-}
diff --git a/src/introspection/gen.sh b/src/introspection/gen.sh
deleted file mode 100755 (executable)
index 027a2bf..0000000
+++ /dev/null
@@ -1,5 +0,0 @@
-gdbus-codegen --interface-prefix net.d2d. \
-        --generate-c-code d2d-generated-code \
-        --c-generate-object-manager \
-        --generate-docbook generated-docs \
-        manager.xml
diff --git a/src/introspection/manager.xml b/src/introspection/manager.xml
deleted file mode 100644 (file)
index 3c5c658..0000000
+++ /dev/null
@@ -1,17 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" ?>
-
-<!DOCTYPE node PUBLIC
-       "-//freedesktop//DTD D-Bus Object Introspection 1.0//EN"
-       "http://standards.freedesktop.org/dbus/1.0/introspect.dtd">
-
-<node>
-       <interface name="net.d2d.manager">
-               <!-- Method definitions -->
-               <method name="enable">
-                       <arg type="i" name="result" direction="out"/>
-               </method>
-               <method name="disable">
-                       <arg type="i" name="result" direction="out"/>
-               </method>
-       </interface>
-</node>
diff --git a/src/subownerclient/CMakeLists.txt b/src/subownerclient/CMakeLists.txt
deleted file mode 100644 (file)
index ccc4e73..0000000
+++ /dev/null
@@ -1,24 +0,0 @@
-CMAKE_MINIMUM_REQUIRED(VERSION 2.6)
-PROJECT(d2d-manager-daemon C CXX)
-
-FILE(GLOB SRCS *)
-
-include_directories(${CMAKE_SOURCE_DIR}/src/subownerclient)
-include_directories(${CMAKE_SOURCE_DIR}/src/subownerclient/include)
-
-INCLUDE(FindPkgConfig)
-pkg_check_modules(subownerclient_pkgs REQUIRED glib-2.0 gio-2.0 gio-unix-2.0 dlog dbus-1 iotivity uuid gmock aul)
-
-MESSAGE(" - Adding external C flags")
-FOREACH(flag ${subownerclient_pkgs_CFLAGS})
-        SET(EXTRA_CFLAGS "${EXTRA_CFLAGS} ${flag}")
-       SET(EXTRA_CXXFLAGS "${EXTRA_CXXFLAGS} ${flag}")
-ENDFOREACH(flag)
-
-SET(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} ${EXTRA_CFLAGS} -fpic")
-SET(EXTRA_CXXFLAGS "${EXTRA_CXXFLAGS} -std=gnu++11 -fPIC -fvisibility=hidden")
-SET(CMAKE_EXE_LINKER_FLAGS "-Wl,--as-needed -pie")
-
-ADD_EXECUTABLE(${PROJECT_NAME} ${SRCS})
-TARGET_LINK_LIBRARIES(${PROJECT_NAME} ${subownerclient_pkgs_LDFLAGS})
-INSTALL(TARGETS ${PROJECT_NAME} RUNTIME DESTINATION bin)
diff --git a/src/subownerclient/main.c b/src/subownerclient/main.c
deleted file mode 100755 (executable)
index eb6415d..0000000
+++ /dev/null
@@ -1,33 +0,0 @@
-/*
- * Copyright (c) 2012, 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 <stdio.h>
-#include <stdint.h>
-#include <dlog.h>
-#include <aul.h>
-#include <glib.h>
-
-int main()
-{
-       int ret;
-
-       dlog_print(DLOG_DEBUG, "D2D_DAEMON", "run daemon");
-
-       ret = aul_launch_app("org.tizen.familynet-manager", NULL);
-       dlog_print(DLOG_DEBUG, "D2D_DAEMON", "launch app result : %d", ret);
-
-       return 0;
-}