Fix : GATT service changed event is not invoked 07/226607/1
authorinjun.yang <injun.yang@samsung.com>
Wed, 4 Mar 2020 02:40:42 +0000 (11:40 +0900)
committerWootak Jung <wootak.jung@samsung.com>
Wed, 4 Mar 2020 06:17:28 +0000 (15:17 +0900)
[Model] All
[BinType] AP
[Customer] OPEN

[Issue#] N/A
[Request] Internal
[Occurrence Version] N/A

[Problem] gatt service changed event is not invoked
[Cause & Measure] gatt connection status is not updated on GATT server role
[Checking Method] LE connected as slave (ANCS connection) > Launch iOG GM

[Team] Convergence BT
[Developer] Injun Yang
[Solution company] Samsung
[Change Type] Specification change

Change-Id: I0721b59693d94869d16c272bc671d035f4b4fcc6

bt-oal/bluez_hal/src/bt-hal-event-receiver.c
bt-oal/bluez_hal/src/bt-hal-gatt-client.c

index 29caf36..604eb88 100644 (file)
@@ -1558,7 +1558,7 @@ static void __bt_hal_device_property_changed_event(GVariant *msg, const char *pa
                } else if (!g_strcmp0(key, "GattConnected")) {
                        gboolean gatt_connected = FALSE;
                        g_variant_get(value, "b", &gatt_connected);
-                       INFO("Device property changed : GattConnected [%d]", gatt_connected);
+                       INFO_C("Device property changed : GattConnected [%d]", gatt_connected);
 
                        char *address = g_malloc0(BT_HAL_ADDRESS_STRING_SIZE);
                        _bt_hal_convert_device_path_to_address(path, address);
index ffef12e..0b213fd 100644 (file)
@@ -125,6 +125,7 @@ typedef struct {
        bt_bdaddr_t bd_addr;    /*remote server address*/
        int conn_id;
        int inst_id;            /*server instance id*/
+       gboolean is_gatt_connected;             /*status for GattConnected signal*/
        GSList *gatt_list_services;
 } hal_gattc_server_info_t;
 
@@ -136,7 +137,7 @@ typedef struct {
        bt_bdaddr_t bd_addr;    /*remote server address*/
        int conn_id;
        int inst_id;
-       gboolean is_gatt_connected;
+       gboolean is_gatt_connected;             /*status for GattConnected signal*/
 } hal_gattc_client_info_t;
 
 /* Linked list of connected GATT client connection */
@@ -361,6 +362,7 @@ bt_status_t btif_gattc_add_connection_info(const bt_bdaddr_t *bd_addr, int conn_
                memcpy(server_info->bd_addr.address, bd_addr->address, BT_HAL_ADDRESS_LENGTH_MAX);
                server_info->conn_id = conn_id;
                server_info->inst_id = server_inst_id;
+               server_info->is_gatt_connected = TRUE;
                hal_gattc_server_info_list = g_slist_append(hal_gattc_server_info_list, server_info);
                DBG("Added server connection info in list");
        }
@@ -3965,7 +3967,7 @@ void _bt_hal_handle_gattc_service_changed_event(gboolean is_added, const char *p
        _bt_hal_convert_addr_string_to_type(ev.bdaddr, address);
        server_info = __bt_find_gatt_conn_info((bt_bdaddr_t *)ev.bdaddr);
        if (server_info == NULL) {
-               ERR("service_info is NULL");
+               ERR("server_info is NULL");
                return;
        }
 
@@ -3975,8 +3977,9 @@ void _bt_hal_handle_gattc_service_changed_event(gboolean is_added, const char *p
                return;
        }
 
-       if (gattc_client->is_gatt_connected == FALSE) {
-               DBG("GattConnected signal is not received yet. Just skip");
+       if (server_info->is_gatt_connected == FALSE && gattc_client->is_gatt_connected == FALSE) {
+               DBG("GattConnected signal is not received yet. Just skip [%d %d]",
+                       server_info->is_gatt_connected, gattc_client->is_gatt_connected);
                return;
        }