Skip to content

Commit da4a5e4

Browse files
sandeepmistryyashaswini-hanji
authored andcommitted
Wait for scan response before reporting discovered peripheral
Only applies to connectable peripherals, non-connecatable will be reported immediately becase a scan response does not apply.
1 parent ca254ef commit da4a5e4

File tree

2 files changed

+4
-4
lines changed

2 files changed

+4
-4
lines changed

libraries/CurieBLE/src/internal/BLEDeviceManager.cpp

+3-3
Original file line numberDiff line numberDiff line change
@@ -81,7 +81,7 @@ BLEDeviceManager::BLEDeviceManager():
8181
memset(_peer_adv_data, 0, sizeof(_peer_adv_data));
8282
memset(_peer_adv_data_len, 0, sizeof(_peer_adv_data_len));
8383
memset(_peer_scan_rsp_data, 0, sizeof(_peer_scan_rsp_data));
84-
memset(_peer_scan_rsp_data_len, 0, sizeof(_peer_scan_rsp_data_len));
84+
memset(_peer_scan_rsp_data_len, -1, sizeof(_peer_scan_rsp_data_len));
8585
memset(_peer_adv_rssi, 0, sizeof(_peer_adv_rssi));
8686

8787
memset(_peer_adv_connectable, 0, sizeof(_peer_adv_connectable));
@@ -1384,7 +1384,7 @@ BLEDevice BLEDeviceManager::available()
13841384
{
13851385
uint64_t timestamp_delta = timestamp - _peer_adv_mill[i];
13861386
temp = &_peer_adv_buffer[i];
1387-
if ((timestamp_delta <= 2000) && (max_delta < timestamp_delta))
1387+
if ((timestamp_delta <= 2000) && (max_delta < timestamp_delta) && (_peer_scan_rsp_data_len[i] >= 0 || !_peer_adv_connectable[i]))
13881388
{
13891389
// Eable the duplicate filter
13901390
if (_adv_duplicate_filter_enabled &&
@@ -1446,7 +1446,7 @@ bool BLEDeviceManager::setAdvertiseBuffer(const bt_addr_le_t* bt_addr,
14461446
if (max_delta > 2000) // expired
14471447
{
14481448
index = i;
1449-
_peer_scan_rsp_data_len[index] = 0; // Invalid the scan response
1449+
_peer_scan_rsp_data_len[index] = -1; // Invalid the scan response
14501450
}
14511451
}
14521452

libraries/CurieBLE/src/internal/BLEDeviceManager.h

+1-1
Original file line numberDiff line numberDiff line change
@@ -392,7 +392,7 @@ class BLEDeviceManager
392392
uint8_t _peer_adv_data[BLE_MAX_ADV_BUFFER_CFG][BLE_MAX_ADV_SIZE];
393393
uint8_t _peer_adv_data_len[BLE_MAX_ADV_BUFFER_CFG];
394394
uint8_t _peer_scan_rsp_data[BLE_MAX_ADV_BUFFER_CFG][BLE_MAX_ADV_SIZE];
395-
uint8_t _peer_scan_rsp_data_len[BLE_MAX_ADV_BUFFER_CFG];
395+
int8_t _peer_scan_rsp_data_len[BLE_MAX_ADV_BUFFER_CFG];
396396
int8_t _peer_adv_rssi[BLE_MAX_ADV_BUFFER_CFG];
397397
bool _peer_adv_connectable[BLE_MAX_ADV_BUFFER_CFG];
398398

0 commit comments

Comments
 (0)