Handling BLE scan as per adv type 65/213765/1
authorinjun.yang <injun.yang@samsung.com>
Wed, 11 Sep 2019 06:15:34 +0000 (15:15 +0900)
committerinjun.yang <injun.yang@samsung.com>
Wed, 11 Sep 2019 06:15:34 +0000 (15:15 +0900)
Change-Id: I801145ce5c48a218be9668adb63e686318d26f86
Signed-off-by: injun.yang <injun.yang@samsung.com>
bt-service/bt-service-adapter-le.c
bt-service/bt-service-event-receiver.c

index 7566c48..5d15fd7 100644 (file)
@@ -1961,10 +1961,8 @@ void _bt_send_scan_result_event(const bt_remote_le_dev_info_t *le_dev_info,
        int scan_data_len = 0;
 
        ret_if(le_dev_info == NULL);
-       if (_bt_get_le_scan_type() == BT_LE_ACTIVE_SCAN)
-               ret_if(adv_info == NULL);
 
-       if (_bt_get_le_scan_type() == BT_LE_PASSIVE_SCAN) {
+       if (adv_info == NULL) { /* Not received scan response data within 1 sec */
                adv_data = le_dev_info->adv_data;
                adv_data_len = le_dev_info->adv_data_len;
                scan_data = le_dev_info->adv_data;
index da97278..51cd09f 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;
@@ -2183,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;