Fix BT_BOND_DEVICE_BY_TYPE request timeout issue 24/315524/1
authorWootak Jung <wootak.jung@samsung.com>
Thu, 28 Nov 2024 23:55:45 +0000 (08:55 +0900)
committerWootak Jung <wootak.jung@samsung.com>
Tue, 3 Dec 2024 00:06:08 +0000 (09:06 +0900)
Change-Id: If416aa7756f76136f041c8f13300bf9c6f278680
Signed-off-by: Wootak Jung <wootak.jung@samsung.com>
bt-service/services/device/bt-service-core-device.c

index f18f66f5b2f81850275413afd6c28c31be14aa05..9b97ac54e71f754b5a8278a51e126d500fb85959 100644 (file)
@@ -230,7 +230,7 @@ void _bt_device_state_handle_callback_set_request(void)
                        BT_DEVICE_MODULE, __bt_device_event_handler);
 }
 
-void __bt_device_handle_pending_requests(int result, int service_function,
+static void __bt_device_handle_pending_requests(int result, int service_function,
                void *user_data, unsigned int size)
 {
        GSList *l;
@@ -268,7 +268,8 @@ void __bt_device_handle_pending_requests(int result, int service_function,
                        }
                        break;
                }
-               case BT_BOND_DEVICE: {
+               case BT_BOND_DEVICE:
+               case BT_BOND_DEVICE_BY_TYPE: {
                        char *address = (char *)user_data;
                        if (strncmp((char*)req_info->user_data, address, BT_ADDRESS_STRING_SIZE)) {
                                BT_ERR("Unexpected: Info request pending for a different address!!");
@@ -316,6 +317,15 @@ void __bt_device_handle_pending_requests(int result, int service_function,
        BT_DBG("-");
 }
 
+static void __bt_device_handle_pending_bond_requests(int result,
+               void *user_data, unsigned int size)
+{
+       __bt_device_handle_pending_requests(result, BT_BOND_DEVICE,
+                       trigger_bond_info->addr, BT_ADDRESS_STRING_SIZE);
+       __bt_device_handle_pending_requests(result, BT_BOND_DEVICE_BY_TYPE,
+                       trigger_bond_info->addr, BT_ADDRESS_STRING_SIZE);
+}
+
 /*
  * Remote device properties are received on all following conditions
  * a. When Bonding in on-going
@@ -818,11 +828,11 @@ static void __bt_device_handle_bond_completion_event(bt_address_t *bd_addr)
 
        if (_bt_device_get_bonded_device_info(&dev_addr) == BLUETOOTH_ERROR_NONE) {
                BT_DBG("Bonded device info query posted to stack successfully");
-               __bt_device_handle_pending_requests(BLUETOOTH_ERROR_NONE, BT_BOND_DEVICE,
+               __bt_device_handle_pending_bond_requests(BLUETOOTH_ERROR_NONE,
                                trigger_bond_info->addr, BT_ADDRESS_STRING_SIZE);
        } else {
                BT_DBG("Possibly internal stack error in bonded device info query, perform cleanup");
-               __bt_device_handle_pending_requests(BLUETOOTH_ERROR_INTERNAL, BT_BOND_DEVICE,
+               __bt_device_handle_pending_bond_requests(BLUETOOTH_ERROR_INTERNAL,
                                trigger_bond_info->addr, BT_ADDRESS_STRING_SIZE);
                /* Destroy if at all device got bonded at stack level */
                device_destroy_bond((bt_address_t *)trigger_bond_info->dev_addr);
@@ -882,7 +892,7 @@ static void __bt_device_handle_bond_failed_event(event_dev_bond_failed_t* bond_f
                                ret = device_create_bond((bt_address_t *)trigger_bond_info->dev_addr, trigger_bond_info->conn_type);
                                if (ret != OAL_STATUS_SUCCESS) {
                                        BT_ERR("Create Bond procedure could not suceed");
-                                       __bt_device_handle_pending_requests(BLUETOOTH_ERROR_INTERNAL, BT_BOND_DEVICE,
+                                       __bt_device_handle_pending_bond_requests(BLUETOOTH_ERROR_INTERNAL,
                                                        trigger_bond_info->addr, BT_ADDRESS_STRING_SIZE);
                                        __bt_free_bond_info(BT_DEVICE_BOND_INFO);
                                        __bt_free_pairing_info(&trigger_pairing_info);
@@ -892,7 +902,7 @@ static void __bt_device_handle_bond_failed_event(event_dev_bond_failed_t* bond_f
                        } else {
 #endif
                                BT_ERR("Create Bond failed MAX_BOND_RETRY_COUNT TIMES!!");
-                               __bt_device_handle_pending_requests(BLUETOOTH_ERROR_INTERNAL, BT_BOND_DEVICE,
+                               __bt_device_handle_pending_bond_requests(BLUETOOTH_ERROR_INTERNAL,
                                                trigger_bond_info->addr, BT_ADDRESS_STRING_SIZE);
                                __bt_free_bond_info(BT_DEVICE_BOND_INFO);
                                __bt_free_pairing_info(&trigger_pairing_info);
@@ -920,7 +930,7 @@ static void __bt_device_handle_bond_failed_event(event_dev_bond_failed_t* bond_f
                                BT_ERR("Bonding is cancelled by user");
                                result = BLUETOOTH_ERROR_CANCEL_BY_USER;
                        }
-                       __bt_device_handle_pending_requests(result, BT_BOND_DEVICE,
+                       __bt_device_handle_pending_bond_requests(result,
                                        trigger_bond_info->addr, BT_ADDRESS_STRING_SIZE);
                        __bt_free_bond_info(BT_DEVICE_BOND_INFO);
                }
@@ -934,8 +944,8 @@ static void __bt_device_handle_bond_failed_event(event_dev_bond_failed_t* bond_f
                BT_INFO("OAL_STATUS_ALREADY_CONNECT");
 
                if (trigger_bond_info) {
-                       __bt_device_handle_pending_requests(result, BT_BOND_DEVICE,
-                               trigger_bond_info->addr, BT_ADDRESS_STRING_SIZE);
+                       __bt_device_handle_pending_bond_requests(result,
+                                       trigger_bond_info->addr, BT_ADDRESS_STRING_SIZE);
                        __bt_free_bond_info(BT_DEVICE_BOND_INFO);
                }
                break;
@@ -956,7 +966,7 @@ static void __bt_device_handle_bond_failed_event(event_dev_bond_failed_t* bond_f
                } else if (trigger_bond_info) {
                        if (__bt_device_handle_bond_state() != BLUETOOTH_ERROR_NONE) {
                                if (trigger_bond_info) {
-                                       __bt_device_handle_pending_requests(BLUETOOTH_ERROR_INTERNAL, BT_BOND_DEVICE,
+                                       __bt_device_handle_pending_bond_requests(BLUETOOTH_ERROR_INTERNAL,
                                                        trigger_bond_info->addr, BT_ADDRESS_STRING_SIZE);
                                        __bt_free_bond_info(BT_DEVICE_BOND_INFO);
                                }
@@ -1717,7 +1727,7 @@ static int __bt_device_handle_bond_state(void)
                   So lets cleanup the context */
                if (ret != OAL_STATUS_SUCCESS) {
                        BT_ERR("Create Bond procedure could not suceed");
-                       __bt_device_handle_pending_requests(BLUETOOTH_ERROR_INTERNAL, BT_BOND_DEVICE,
+                       __bt_device_handle_pending_bond_requests(BLUETOOTH_ERROR_INTERNAL,
                                        trigger_bond_info->addr, BT_ADDRESS_STRING_SIZE);
                        __bt_free_bond_info(BT_DEVICE_BOND_INFO);
                        __bt_free_pairing_info(&trigger_pairing_info);
@@ -1726,7 +1736,7 @@ static int __bt_device_handle_bond_state(void)
        case BT_DEVICE_BOND_STATE_NONE:
                BT_INFO("Create Bond failed!!");
                if (trigger_bond_info) {
-                       __bt_device_handle_pending_requests(BLUETOOTH_ERROR_INTERNAL, BT_BOND_DEVICE,
+                       __bt_device_handle_pending_bond_requests(BLUETOOTH_ERROR_INTERNAL,
                                        trigger_bond_info->addr, BT_ADDRESS_STRING_SIZE);
                        __bt_free_bond_info(BT_DEVICE_BOND_INFO);
                        __bt_free_pairing_info(&trigger_pairing_info);