From df7d9ddb48034f5549dafeeffb634ad33fc4185c Mon Sep 17 00:00:00 2001 From: Sandeep Mistry Date: Fri, 24 Mar 2017 18:14:06 -0400 Subject: [PATCH] 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. --- libraries/CurieBLE/src/internal/BLEDeviceManager.cpp | 6 +++--- libraries/CurieBLE/src/internal/BLEDeviceManager.h | 2 +- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/libraries/CurieBLE/src/internal/BLEDeviceManager.cpp b/libraries/CurieBLE/src/internal/BLEDeviceManager.cpp index 2b7f929d..983a0c7b 100644 --- a/libraries/CurieBLE/src/internal/BLEDeviceManager.cpp +++ b/libraries/CurieBLE/src/internal/BLEDeviceManager.cpp @@ -81,7 +81,7 @@ BLEDeviceManager::BLEDeviceManager(): memset(_peer_adv_data, 0, sizeof(_peer_adv_data)); memset(_peer_adv_data_len, 0, sizeof(_peer_adv_data_len)); memset(_peer_scan_rsp_data, 0, sizeof(_peer_scan_rsp_data)); - memset(_peer_scan_rsp_data_len, 0, sizeof(_peer_scan_rsp_data_len)); + memset(_peer_scan_rsp_data_len, -1, sizeof(_peer_scan_rsp_data_len)); memset(_peer_adv_rssi, 0, sizeof(_peer_adv_rssi)); memset(_peer_adv_connectable, 0, sizeof(_peer_adv_connectable)); @@ -1370,7 +1370,7 @@ BLEDevice BLEDeviceManager::available() { uint64_t timestamp_delta = timestamp - _peer_adv_mill[i]; temp = &_peer_adv_buffer[i]; - if ((timestamp_delta <= 2000) && (max_delta < timestamp_delta)) + if ((timestamp_delta <= 2000) && (max_delta < timestamp_delta) && (_peer_scan_rsp_data_len[i] >= 0 || !_peer_adv_connectable[i])) { // Eable the duplicate filter if (_adv_duplicate_filter_enabled && @@ -1432,7 +1432,7 @@ bool BLEDeviceManager::setAdvertiseBuffer(const bt_addr_le_t* bt_addr, if (max_delta > 2000) // expired { index = i; - _peer_scan_rsp_data_len[index] = 0; // Invalid the scan response + _peer_scan_rsp_data_len[index] = -1; // Invalid the scan response } } diff --git a/libraries/CurieBLE/src/internal/BLEDeviceManager.h b/libraries/CurieBLE/src/internal/BLEDeviceManager.h index 3a7aede2..7eb0559a 100644 --- a/libraries/CurieBLE/src/internal/BLEDeviceManager.h +++ b/libraries/CurieBLE/src/internal/BLEDeviceManager.h @@ -409,7 +409,7 @@ class BLEDeviceManager uint8_t _peer_adv_data[BLE_MAX_ADV_BUFFER_CFG][BLE_MAX_ADV_SIZE]; uint8_t _peer_adv_data_len[BLE_MAX_ADV_BUFFER_CFG]; uint8_t _peer_scan_rsp_data[BLE_MAX_ADV_BUFFER_CFG][BLE_MAX_ADV_SIZE]; - uint8_t _peer_scan_rsp_data_len[BLE_MAX_ADV_BUFFER_CFG]; + int8_t _peer_scan_rsp_data_len[BLE_MAX_ADV_BUFFER_CFG]; int8_t _peer_adv_rssi[BLE_MAX_ADV_BUFFER_CFG]; bool _peer_adv_connectable[BLE_MAX_ADV_BUFFER_CFG];