Modify GattConnected changed event handling logic 83/215683/2
authorWootak Jung <wootak.jung@samsung.com>
Mon, 14 Oct 2019 06:42:13 +0000 (15:42 +0900)
committerWootak Jung <wootak.jung@samsung.com>
Mon, 14 Oct 2019 07:13:46 +0000 (16:13 +0900)
In case GATT Server is existing, server connected event is invoked
although client is connected by GattConnected changed event.
bt-service should distinguish whether event is for client or server.

Change-Id: I74c19b25a1b7f6130295a5ea2ad2631c0feb9bf9

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

index 63dafc1..fd1a1d5 100644 (file)
@@ -1532,8 +1532,13 @@ static void __bt_hal_device_property_changed_event(GVariant *msg, const char *pa
                        _bt_hal_convert_device_path_to_address(path, address);
                        DBG("@@gatt_connected: %d", gatt_connected);
                        DBG("@@address: %s", address);
-                       _bt_hal_gatt_connected_state_event(gatt_connected, address);
-                       _bt_hal_handle_gattc_connected_event(address, gatt_connected);
+                       if (_bt_hal_check_gattc_is_existing(address) == TRUE) {
+                               DBG("GattConnected event will be handled on CLIENT side");
+                               _bt_hal_handle_gattc_connected_event(address, gatt_connected);
+                       } else {
+                               DBG("GattConnected event will be handled on SERVER side");
+                               _bt_hal_gatt_connected_state_event(gatt_connected, address);
+                       }
                        g_free(address);
                } else if (!g_strcmp0(key, "Paired")) {
                        gboolean paired = FALSE;
index ed4442d..9e6bcd5 100644 (file)
@@ -3186,6 +3186,16 @@ void __hal_clean_gattc_server_info(hal_gattc_server_info_t *conn_info)
        g_free(conn_info);
 }
 
+gboolean _bt_hal_check_gattc_is_existing(const char *address)
+{
+       bt_bdaddr_t bd_addr;
+       _bt_hal_convert_addr_string_to_type(bd_addr.address, address);
+       if (__bt_find_gatt_client_info(&bd_addr) != NULL)
+               return TRUE;
+       else
+               return FALSE;
+}
+
 void _bt_hal_handle_gattc_connected_event(char* address, gboolean gatt_connected)
 {
        int result = BT_STATUS_SUCCESS;
index a4e58b8..e9ebf60 100644 (file)
@@ -38,6 +38,8 @@ extern "C" {
 void _bt_hal_register_gatt_client_handler_cb(handle_stack_msg cb);
 void _bt_hal_unregister_gatt_client_handler_cb(void);
 
+gboolean _bt_hal_check_gattc_is_existing(const char *address);
+
 void _bt_hal_handle_gattc_connected_event(char* address, gboolean connected);
 void  _bt_hal_handle_gattc_value_changed_event(int result, const char *char_handle,
                char *char_value, int len);