return IN_PROGRESS error when pbap connection is on progress
[platform/core/connectivity/bluetooth-frwk.git] / bt-service / bt-service-obex-server.c
index 6b0a7ff..4363a7e 100644 (file)
@@ -20,7 +20,7 @@
 #include <dlog.h>
 #include <string.h>
 #include <dirent.h>
-#ifdef TIZEN_FEATURE_BT_DPM
+#ifdef TIZEN_DPM_ENABLE
 #include "bt-service-dpm.h"
 #endif
 
@@ -247,9 +247,8 @@ void _bt_obex_check_pending_transfer(const char *address)
 static char *__bt_get_remote_device_name(const char *bdaddress)
 {
        char *device_path = NULL;
-       const gchar *name = NULL;
-       gchar *dev_name = NULL;
-       gsize name_len = 0;
+       char *name = NULL;
+       GVariant *value;
        GVariant *result = NULL;
        GError *err = NULL;
        GDBusProxy *device_proxy;
@@ -272,44 +271,42 @@ static char *__bt_get_remote_device_name(const char *bdaddress)
        g_free(device_path);
        retv_if(device_proxy == NULL, NULL);
 
-       result = g_dbus_proxy_call_sync(device_proxy, "Get",
-                       g_variant_new("(ss)", BT_DEVICE_INTERFACE, "Alias"),
-                       G_DBUS_CALL_FLAGS_NONE, DBUS_TIMEOUT, NULL, &err);
+       result = g_dbus_proxy_call_sync(device_proxy, "GetAll",
+                       g_variant_new("(s)", BT_DEVICE_INTERFACE),
+                       G_DBUS_CALL_FLAGS_NONE,
+                       DBUS_TIMEOUT, NULL,
+                       &err);
        if (err) {
                BT_ERR("DBus Error : %s", err->message);
                g_clear_error(&err);
-       } else {
-               GVariant *value;
-               g_variant_get(result, "(v)", &value);
-               name = g_variant_get_string(value, &name_len);
-               INFO_SECURE("Alias Name [%s]", name);
-               if (name_len)
-                       dev_name = g_strdup(name);
-               g_variant_unref(value);
-               g_variant_unref(result);
+               return NULL;
+       }
+       if (result == NULL) {
+               BT_ERR("g_dbus_proxy_call_sync function return NULL");
+               return NULL;
        }
+       g_variant_get(result, "(@a{sv})", &value);
 
-       if (name_len == 0) {
-               result = g_dbus_proxy_call_sync(device_proxy, "Get",
-                       g_variant_new("(ss)", BT_DEVICE_INTERFACE, "Name"),
-                       G_DBUS_CALL_FLAGS_NONE, -1, NULL, &err);
-               if (err) {
-                       ERR("DBus Error : %s", err->message);
-                       g_clear_error(&err);
-               } else {
-                       GVariant *value;
-                       g_variant_get(result, "(v)", &value);
-                       name = g_variant_get_string(value, &name_len);
-                       INFO_SECURE("Name = %s", name);
-                       if (name_len)
-                               dev_name = g_strdup(name);
-                       g_variant_unref(value);
-                       g_variant_unref(result);
+       if (value) {
+               GVariant *temp_value = g_variant_lookup_value(value, "Alias",
+                       G_VARIANT_TYPE_STRING);
+               g_variant_get(temp_value, "s", &name);
+               if (temp_value)
+                       g_variant_unref(temp_value);
+
+               if (name != NULL)
+                       DBG_SECURE("Alias Name [%s]", name);
+               else {
+                       temp_value = g_variant_lookup_value(value, "Name", G_VARIANT_TYPE_STRING);
+                       g_variant_get(temp_value, "s", &name);
+                       if (temp_value)
+                               g_variant_unref(temp_value);
+                       DBG_SECURE("Name = %s", name);
                }
        }
-
+       g_variant_unref(result);
        g_object_unref(device_proxy);
-       return dev_name;
+       return name;
 }
 
 static void __bt_get_remote_device_name_authinfo(const char *bdaddress,
@@ -410,7 +407,7 @@ static GDBusProxy *__bt_get_transfer_proxy(const char *transfer_path)
        GDBusProxy *proxy;
        GError *err = NULL;
 
-       conn = _bt_gdbus_get_system_gconn();
+       conn = _bt_gdbus_get_session_gconn();
        retv_if(conn == NULL, NULL);
 
        proxy = g_dbus_proxy_new_sync(conn, G_DBUS_PROXY_FLAGS_NONE,
@@ -419,7 +416,7 @@ static GDBusProxy *__bt_get_transfer_proxy(const char *transfer_path)
                                        BT_OBEX_TRANSFER_INTERFACE,
                                        NULL, &err);
 
-       if (proxy == NULL && err) {
+       if (err) {
                BT_ERR("Error : %s", err->message);
                g_clear_error(&err);
                return NULL;
@@ -433,7 +430,7 @@ static GDBusProxy *__bt_get_transfer_properties_proxy(const char *transfer_path)
        GDBusConnection *conn;
        GDBusProxy *proxy;
        GError *err = NULL;
-       conn = _bt_gdbus_get_system_gconn();
+       conn = _bt_gdbus_get_session_gconn();
        retv_if(conn == NULL, NULL);
 
        proxy = g_dbus_proxy_new_sync(conn, G_DBUS_PROXY_FLAGS_NONE,
@@ -441,7 +438,7 @@ static GDBusProxy *__bt_get_transfer_properties_proxy(const char *transfer_path)
                                        transfer_path,
                                        BT_PROPERTIES_INTERFACE,
                                        NULL, &err);
-       if (proxy == NULL && err) {
+       if (err) {
                BT_ERR("Error : %s", err->message);
                g_clear_error(&err);
                return NULL;
@@ -538,9 +535,6 @@ static gboolean __bt_authorize_cb(GDBusMethodInvocation *context,
        GVariant *param = NULL;
        GError *err = NULL;
        bt_session_info_t *session_info = NULL;
-#ifdef TIZEN_FEATURE_BT_DPM
-       int value = DPM_BT_ERROR;
-#endif
 
        BT_DBG(" path [%s] \n", path);
 
@@ -579,9 +573,8 @@ static gboolean __bt_authorize_cb(GDBusMethodInvocation *context,
 
        agent_info.auth_info->transfer_path = g_strdup(path);
 
-#ifdef TIZEN_FEATURE_BT_DPM
-       _bt_dpm_get_allow_bluetooth_mode(&value);
-       if (value == DPM_BT_HANDSFREE_ONLY) {
+#ifdef TIZEN_DPM_ENABLE
+       if (_bt_dpm_get_allow_bluetooth_mode() == DPM_BT_HANDSFREE_ONLY) {
                /* Free auth info in next function */
                _bt_obex_server_reject_authorize();
                return FALSE;
@@ -630,17 +623,16 @@ static gboolean __bt_authorize_cb(GDBusMethodInvocation *context,
        }
 
        if (session_info->authorized == FALSE) {
-               if (headed_plugin_info->plugin_headed_enabled)
-                       headed_plugin_info->headed_plugin->bt_launch_system_popup(BT_AGENT_EVENT_EXCHANGE_REQUEST, device_name,
+               _bt_launch_system_popup(BT_AGENT_EVENT_EXCHANGE_REQUEST, device_name,
                                        auth_info, NULL, NULL, BT_OBEX_SERVER_AGENT_PATH);
        } else {
                param = g_variant_new("(istss)", result,
-                               agent_info.auth_info->filename,
-                               agent_info.auth_info->file_size,
-                               agent_info.auth_info->address,
-                               agent_info.auth_info->device_name);
+                       agent_info.auth_info->filename,
+                       agent_info.auth_info->file_size,
+                       agent_info.auth_info->address,
+                       agent_info.auth_info->device_name);
                _bt_send_event(BT_OPP_SERVER_EVENT,
-                               BLUETOOTH_EVENT_OBEX_SERVER_TRANSFER_AUTHORIZE, param);
+                       BLUETOOTH_EVENT_OBEX_SERVER_TRANSFER_AUTHORIZE, param);
        }
 
        return TRUE;
@@ -819,9 +811,9 @@ void _bt_obex_transfer_completed(const char *transfer_path, gboolean success)
                        g_variant_builder_add(builder, "y", agent_info.auth_info->contact_auth_info[i]);
 
                param = g_variant_new("(isssstii(ay))", result,
-                                       transfer_info->device_name,
                                        transfer_info->filename,
                                        transfer_info->type,
+                                       transfer_info->device_name,
                                        transfer_info->address,
                                        transfer_info->file_size,
                                        transfer_info->transfer_id,
@@ -907,7 +899,7 @@ int _bt_register_obex_server(void)
        GError *g_error = NULL;
 
        /* Get the session bus. */
-       g_conn = _bt_gdbus_get_system_gconn();
+       g_conn = _bt_gdbus_get_session_gconn();
        retv_if(g_conn == NULL, BLUETOOTH_ERROR_INTERNAL);
 
        _bt_obex_agent_new(BT_OBEX_SERVER_AGENT_PATH);