}
}
+#ifdef TIZEN_FEATURE_BT_PERMANENT_LOG
+static void __bt_dump_event_filter(GDBusConnection *connection,
+ const gchar *sender_name,
+ const gchar *object_path,
+ const gchar *interface_name,
+ const gchar *signal_name,
+ GVariant *parameters,
+ gpointer user_data)
+{
+ if (strcasecmp(signal_name, BT_DUMP_SERVICE_SIGNAL) == 0) {
+ gchar *path = NULL;
+ int mode = 0;
+
+ g_variant_get(parameters, "(i&s)", &mode, &path);
+ _bt_start_log_dump(path);
+ }
+
+ return;
+}
+
+static int __bt_register_dump_subscribe_signal(GDBusConnection *conn,
+ gboolean subscribe)
+{
+ if (conn == NULL)
+ return -1;
+
+ static guint subs_source_id = 0;
+
+ if (subscribe) {
+ if (subs_source_id == 0) {
+ subs_source_id = g_dbus_connection_signal_subscribe(conn,
+ NULL, BT_DUMP_SERVICE_INTERFACE,
+ BT_DUMP_SERVICE_SIGNAL, BT_DUMP_SERVICE_PATH, NULL, 0,
+ __bt_dump_event_filter,
+ NULL, NULL);
+ }
+ } else {
+ if (subs_source_id > 0) {
+ g_dbus_connection_signal_unsubscribe(conn,
+ subs_source_id);
+ subs_source_id = 0;
+ }
+ }
+ return 0;
+}
+#endif
+
int _bt_register_manager_subscribe_signal(GDBusConnection *conn,
int subscribe)
{
BT_DEVICE_EVENT) != BLUETOOTH_ERROR_NONE)
goto fail;
+#ifdef TIZEN_FEATURE_BT_PERMANENT_LOG
+ __bt_register_dump_subscribe_signal(manager_conn, TRUE);
+#endif
+
return BLUETOOTH_ERROR_NONE;
fail:
if (manager_conn) {
_bt_unregister_service_event(obexd_conn, BT_OPP_SERVER_EVENT);
+#ifdef TIZEN_FEATURE_BT_PERMANENT_LOG
+ __bt_register_dump_subscribe_signal(manager_conn, FALSE);
+#endif
+
if (manager_conn) {
g_object_unref(manager_conn);
manager_conn = NULL;