Skip to content

Commit df7d9dd

Browse files
committed
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 82eb1be commit df7d9dd

File tree

2 files changed

+4
-4
lines changed

2 files changed

+4
-4
lines changed

Diff for: 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));
@@ -1370,7 +1370,7 @@ BLEDevice BLEDeviceManager::available()
13701370
{
13711371
uint64_t timestamp_delta = timestamp - _peer_adv_mill[i];
13721372
temp = &_peer_adv_buffer[i];
1373-
if ((timestamp_delta <= 2000) && (max_delta < timestamp_delta))
1373+
if ((timestamp_delta <= 2000) && (max_delta < timestamp_delta) && (_peer_scan_rsp_data_len[i] >= 0 || !_peer_adv_connectable[i]))
13741374
{
13751375
// Eable the duplicate filter
13761376
if (_adv_duplicate_filter_enabled &&
@@ -1432,7 +1432,7 @@ bool BLEDeviceManager::setAdvertiseBuffer(const bt_addr_le_t* bt_addr,
14321432
if (max_delta > 2000) // expired
14331433
{
14341434
index = i;
1435-
_peer_scan_rsp_data_len[index] = 0; // Invalid the scan response
1435+
_peer_scan_rsp_data_len[index] = -1; // Invalid the scan response
14361436
}
14371437
}
14381438

Diff for: libraries/CurieBLE/src/internal/BLEDeviceManager.h

+1-1
Original file line numberDiff line numberDiff line change
@@ -409,7 +409,7 @@ class BLEDeviceManager
409409
uint8_t _peer_adv_data[BLE_MAX_ADV_BUFFER_CFG][BLE_MAX_ADV_SIZE];
410410
uint8_t _peer_adv_data_len[BLE_MAX_ADV_BUFFER_CFG];
411411
uint8_t _peer_scan_rsp_data[BLE_MAX_ADV_BUFFER_CFG][BLE_MAX_ADV_SIZE];
412-
uint8_t _peer_scan_rsp_data_len[BLE_MAX_ADV_BUFFER_CFG];
412+
int8_t _peer_scan_rsp_data_len[BLE_MAX_ADV_BUFFER_CFG];
413413
int8_t _peer_adv_rssi[BLE_MAX_ADV_BUFFER_CFG];
414414
bool _peer_adv_connectable[BLE_MAX_ADV_BUFFER_CFG];
415415

0 commit comments

Comments
 (0)