Skip to content

Commit 8d5b4a4

Browse files
committed
Wait for scan response before reporting discovered peripheral
This change waits for a scan response from the peripheral before reporting it to the user.
1 parent 82eb1be commit 8d5b4a4

File tree

2 files changed

+5
-5
lines changed

2 files changed

+5
-5
lines changed

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

+4-4
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)
13741374
{
13751375
// Eable the duplicate filter
13761376
if (_adv_duplicate_filter_enabled &&
@@ -1385,7 +1385,7 @@ BLEDevice BLEDeviceManager::available()
13851385
}
13861386
//pr_debug(LOG_MODULE_BLE, "%s-%d:index %d, i-%d", __FUNCTION__, __LINE__, index, i);
13871387

1388-
if (index < BLE_MAX_ADV_BUFFER_CFG)
1388+
if (index < BLE_MAX_ADV_BUFFER_CFG && _peer_scan_rsp_data_len[index] >= 0)
13891389
{
13901390
temp = &_peer_adv_buffer[index];
13911391
if (true == BLEUtils::macAddressValid(*temp))
@@ -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)