@@ -101,8 +101,6 @@ BLEDeviceManager::BLEDeviceManager():
101101
102102 memset (&_available_for_connect_peripheral_adv_data, 0 , sizeof (_available_for_connect_peripheral_adv_data));
103103 memset (&_available_for_connect_peripheral_scan_rsp_data, 0 , sizeof (_available_for_connect_peripheral_scan_rsp_data));
104-
105- memset (&_wait_for_connect_peripheral, 0 , sizeof (_wait_for_connect_peripheral));
106104
107105 memset (&_service_uuid, 0 , sizeof (_service_uuid));
108106 memset (&_service_solicit_uuid, 0 , sizeof (_service_solicit_uuid));
@@ -576,6 +574,25 @@ BLEDevice BLEDeviceManager::peripheral()
576574 return temp;
577575}
578576
577+ void BLEDeviceManager::_clearAdvertiseBuffer ()
578+ {
579+
580+ // Clear the previous found ADV
581+ memset (_peer_temp_adv_buffer, 0 , sizeof (_peer_temp_adv_buffer));
582+ memset (_peer_temp_adv_data, 0 , sizeof (_peer_temp_adv_data));
583+ memset (_peer_temp_adv_data_len, 0 , sizeof (_peer_temp_adv_data_len));
584+ memset (_peer_temp_adv_connectable, 0 , sizeof (_peer_adv_connectable));
585+
586+ memset (_peer_adv_buffer, 0 , sizeof (_peer_adv_buffer));
587+ memset (_peer_adv_mill, 0 , sizeof (_peer_adv_mill));
588+ memset (_peer_adv_data, 0 , sizeof (_peer_adv_data));
589+ memset (_peer_adv_data_len, 0 , sizeof (_peer_adv_data_len));
590+ memset (_peer_scan_rsp_data, 0 , sizeof (_peer_scan_rsp_data));
591+ memset (_peer_scan_rsp_data_len, 0 , sizeof (_peer_scan_rsp_data_len));
592+ memset (_peer_adv_rssi, 0 , sizeof (_peer_adv_rssi));
593+
594+ }
595+
579596bool BLEDeviceManager::startScanningWithDuplicates ()
580597{
581598 _adv_duplicate_filter_enabled = false ;
@@ -901,11 +918,6 @@ int BLEDeviceManager::advertisedServiceUuidCount(const BLEDevice* device) const
901918 return service_cnt;
902919 }
903920
904- if ((len + 1 ) > adv_data_len) { // Sid. KW, can't be (adv_data_len < 2)
905- pr_info (LOG_MODULE_BLE, " AD malformed\n " );
906- return service_cnt;
907- }
908-
909921 /* Sid, 2/15/2017. Sandeep reported that Apple devices may use
910922 BT_DATA_UUID16_SOME and BT_DATA_UUID128_SOME in addition to ALL.
911923 Practically, these types are same as ALL. */
@@ -1072,6 +1084,11 @@ bool BLEDeviceManager::connect(BLEDevice &device)
10721084 uint64_t timestamp = millis ();
10731085 uint64_t timestampcur = timestamp;
10741086 bool ret = true ;
1087+ if (_available_for_connect_peripheral_connectable == false )
1088+ {
1089+ return false ;
1090+ }
1091+
10751092 bt_addr_le_copy (&_wait_for_connect_peripheral, device.bt_le_address ());
10761093 // Buffer the ADV data
10771094 memcpy (_wait_for_connect_peripheral_adv_data, _available_for_connect_peripheral_adv_data, BLE_MAX_ADV_SIZE);
@@ -1252,6 +1269,8 @@ void BLEDeviceManager::handleDisconnectEvent(bt_conn_t *conn, uint8_t reason)
12521269 memset (_peer_peripheral_adv_data[i], 0 , BLE_MAX_ADV_SIZE);
12531270 _peer_peripheral_adv_data_len[i] = 0 ;
12541271 _peer_peripheral_adv_rssi[i] = 0 ;
1272+ memset (_peer_peripheral_scan_rsp_data[i], 0 , BLE_MAX_ADV_SIZE);
1273+ _peer_peripheral_scan_rsp_data_len[i] = 0 ;
12551274 break ;
12561275 }
12571276 }
@@ -1411,7 +1430,10 @@ bool BLEDeviceManager::setAdvertiseBuffer(const bt_addr_le_t* bt_addr,
14111430 {
14121431 max_delta = timestamp_delta;
14131432 if (max_delta > 2000 ) // expired
1433+ {
14141434 index = i;
1435+ _peer_scan_rsp_data_len[index] = 0 ; // Invalid the scan response
1436+ }
14151437 }
14161438
14171439 if (bt_addr_le_cmp (temp, bt_addr) == 0 )
0 commit comments