Replace the deprecatd soup API
[platform/core/connectivity/bluetooth-frwk.git] / bt-service / bt-service-event-receiver.c
index 77404c3..fc97873 100644 (file)
@@ -155,10 +155,10 @@ static gboolean __bt_adv_scan_req_timeout_cb(gpointer user_data)
        le_dev_info.addr_type = adv_info->addr_type;
        le_dev_info.rssi = adv_info->rssi;
        le_dev_info.adv_data = adv_info->data;
-       le_dev_info.adv_data_len = 0;
+       le_dev_info.adv_data_len = adv_info->data_len;
        adv_info->timer_id = 0;
 
-       _bt_send_scan_result_event(&le_dev_info, adv_info);
+       _bt_send_scan_result_event(&le_dev_info, NULL);
        __bt_del_adv_ind_info(adv_info->addr);
 
        return FALSE;
@@ -294,7 +294,7 @@ static gboolean __bt_parse_interface(GVariant *msg,
 static int __bt_get_owner_info(GVariant *msg, char **name,
                                char **previous, char **current)
 {
-       g_variant_get(msg, "(sss)", name, previous, current);
+       g_variant_get(msg, "(&s&s&s)", name, previous, current);
        return BLUETOOTH_ERROR_NONE;
 }
 
@@ -1084,17 +1084,9 @@ static void __bt_device_property_changed_event(GVariant *msg, const char *path)
                                char secure_addr[BT_ADDRESS_STRING_SIZE] = { 0 };
 
                                _bt_convert_addr_string_to_secure_string(secure_addr, address);
-                               BT_INFO("### Paired: %s", secure_addr);
+                               BT_INFO(" ### Paired: %s", secure_addr);
                                __bt_update_remote_cache_devinfo(address, TRUE);
 
-                               if (_bt_is_device_creating() == TRUE) {
-                                       BT_DBG("Try to Pair by me");
-                                       _bt_free_device_info(remote_dev_info);
-                                       g_free(address);
-                                       g_free(property);
-                                       g_variant_unref(val);
-                                       return;
-                               }
                                GVariant *uuids = NULL;
                                GVariantBuilder *builder = NULL;
                                int i = 0;
@@ -2191,7 +2183,11 @@ void _bt_handle_device_event(GVariant *msg, const char *member, const char *path
                        return;
                }
 
-               if (le_dev_info->adv_type != BT_LE_ADV_SCAN_RSP) {       /* ADV_IND */
+               if (le_dev_info->adv_type == BT_LE_ADV_DIRECT_IND ||
+                       le_dev_info->adv_type == BT_LE_ADV_NONCONN_IND) {
+                       _bt_send_scan_result_event(le_dev_info, NULL);
+               } else if (le_dev_info->adv_type == BT_LE_ADV_IND ||
+                       le_dev_info->adv_type == BT_LE_ADV_SCAN_IND) {
                        adv_info = g_malloc0(sizeof(bt_le_adv_info_t));
                        adv_info->addr = g_strdup(le_dev_info->address);
                        adv_info->addr_type = le_dev_info->addr_type;
@@ -2249,9 +2245,31 @@ void _bt_handle_device_event(GVariant *msg, const char *member, const char *path
                param = g_variant_new("(iss)", result, address, ifname);
 
                /* Send event to application */
+               _bt_send_event(BT_DEVICE_EVENT, event, param);
+               g_free(address);
+       } else if (strcasecmp(member, "AttMtuChanged") == 0) {
+               int result = BLUETOOTH_ERROR_NONE;
+               guint16 mtu = 0;
+               guint8 status = 0;
+
+               g_variant_get(msg, "(q)", &mtu);
+
+               address = g_malloc0(BT_ADDRESS_STRING_SIZE);
+
+               _bt_convert_device_path_to_address(path, address);
+               BT_DBG("Address : %s Server MTU changed : %d", address, mtu);
+
+               param = g_variant_new("(isqy)",
+                       result,
+                       address,
+                       mtu,
+                       status);
+
+               /* Send the event to application */
                _bt_send_event(BT_DEVICE_EVENT,
-                                               event,
+                       BLUETOOTH_EVENT_GATT_SERVER_ATT_MTU_CHANGED,
                                                param);
+
                g_free(address);
        } else if (strcasecmp(member, "iBeaconReport") == 0) {
                bt_remote_ibeacon_dev_info_t *ibeacon_dev_info = NULL;
@@ -2578,12 +2596,10 @@ void _bt_handle_agent_event(GVariant *msg, const char *member)
 
        if (strcasecmp(member, "ObexAuthorize") == 0) {
                __bt_get_agent_signal_info(msg, &address, &name, &uuid);
-               param = g_variant_new("(iss)", result, address, name);
+               param = g_variant_new("(i&s&s)", result, address, name);
                _bt_send_event(BT_OPP_SERVER_EVENT,
                        BLUETOOTH_EVENT_OBEX_SERVER_CONNECTION_AUTHORIZE,
                        param);
-               g_free(address);
-               g_free(name);
        } else if (strcasecmp(member, "RfcommAuthorize") == 0) {
                bt_rfcomm_server_info_t *server_info;
 
@@ -2592,14 +2608,11 @@ void _bt_handle_agent_event(GVariant *msg, const char *member)
                server_info = _bt_rfcomm_get_server_info_using_uuid(uuid);
                ret_if(server_info == NULL);
                ret_if(server_info->server_type != BT_CUSTOM_SERVER);
-               param = g_variant_new("(isssn)", result, address, uuid, name,
+               param = g_variant_new("(i&s&s&sn)", result, address, uuid, name,
                                        server_info->control_fd);
                _bt_send_event(BT_RFCOMM_SERVER_EVENT,
                        BLUETOOTH_EVENT_RFCOMM_AUTHORIZE,
                        param);
-               g_free(address);
-               g_free(uuid);
-               g_free(name);
        }
 }
 
@@ -2805,19 +2818,21 @@ static  void __bt_manager_event_filter(GDBusConnection *connection,
                char *previous = NULL;
                char *current = NULL;
 
+               if (g_strcmp0(g_variant_get_type_string(parameters), "(sss)") != 0) {
+                       BT_ERR("Invalid variant format");
+                       return;
+               }
+
                if (__bt_get_owner_info(parameters, &name, &previous, &current)) {
                        BT_ERR("Fail to get the owner info");
                        return;
                }
 
-               if (*current != '\0') {
-                       g_free(current);
-                       if (name)
-                               g_free(name);
-                       if (previous)
-                               g_free(previous);
+               if (*current != '\0')
+                       return;
+
+               if (name == NULL)
                        return;
-               }
 
                if (strcasecmp(name, BT_BLUEZ_NAME) == 0) {
                        BT_INFO_C("### Bluetoothd is terminated");
@@ -2851,10 +2866,6 @@ static  void __bt_manager_event_filter(GDBusConnection *connection,
 
                /* Stop LE Scan */
                _bt_stop_le_scan(name);
-
-               g_free(name);
-               g_free(previous);
-               g_free(current);
        } else if (g_strcmp0(interface_name, BT_PROPERTIES_INTERFACE) == 0) {
                const char *path = object_path;
 
@@ -2870,7 +2881,9 @@ static  void __bt_manager_event_filter(GDBusConnection *connection,
        } else if (g_strcmp0(interface_name, BT_NETWORK_SERVER_INTERFACE) == 0) {
                _bt_handle_network_server_event(parameters, signal_name);
        } else if (g_strcmp0(interface_name, BT_HEADSET_INTERFACE) == 0) {
-               _bt_handle_headset_event(parameters, object_path);
+               if (g_strcmp0(signal_name, "PropertyChanged") == 0) {
+                       _bt_handle_headset_event(parameters, object_path);
+               }
        } else if (g_strcmp0(interface_name, BT_SINK_INTERFACE) == 0) {
                _bt_handle_sink_event(parameters, object_path);
        } else if (g_strcmp0(interface_name, BT_AGENT_INTERFACE) == 0) {
@@ -2919,7 +2932,7 @@ static  void __bt_obexd_event_filter(GDBusConnection *connection,
                        BT_ERR("Fail to get the path");
                        return;
                }
-               BT_INFO("object_path = [%s]", obj_path);
+               BT_DBG("object_path = [%s]", obj_path);
 
                /*Handle OPP_SERVER_CONNECTED_EVENT here */
                if (strncmp(obj_path, BT_SESSION_BASEPATH_SERVER,
@@ -2939,7 +2952,7 @@ static  void __bt_obexd_event_filter(GDBusConnection *connection,
                        BT_ERR("Fail to get the path");
                        return;
                }
-               BT_INFO("object_path = [%s]", obj_path);
+               BT_DBG("object_path = [%s]", obj_path);
 
                if (strncmp(obj_path, BT_SESSION_BASEPATH_CLIENT,
                                strlen(BT_SESSION_BASEPATH_CLIENT)) == 0) {
@@ -3278,7 +3291,7 @@ int _bt_register_audio_subscribe_signal(GDBusConnection *conn,
                if (subs_headset_id == -1) {
                        subs_headset_id = g_dbus_connection_signal_subscribe(conn,
                                NULL, BT_HEADSET_INTERFACE,
-                               NULL, NULL, NULL, 0,
+                               "PropertyChanged", NULL, NULL, 0,
                                __bt_manager_event_filter,
                                NULL, NULL);
                }