@@ -101,8 +101,6 @@ BLEDeviceManager::BLEDeviceManager():
101
101
102
102
memset (&_available_for_connect_peripheral_adv_data, 0 , sizeof (_available_for_connect_peripheral_adv_data));
103
103
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));
106
104
107
105
memset (&_service_uuid, 0 , sizeof (_service_uuid));
108
106
memset (&_service_solicit_uuid, 0 , sizeof (_service_solicit_uuid));
@@ -576,6 +574,25 @@ BLEDevice BLEDeviceManager::peripheral()
576
574
return temp;
577
575
}
578
576
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
+
579
596
bool BLEDeviceManager::startScanningWithDuplicates ()
580
597
{
581
598
_adv_duplicate_filter_enabled = false ;
@@ -901,11 +918,6 @@ int BLEDeviceManager::advertisedServiceUuidCount(const BLEDevice* device) const
901
918
return service_cnt;
902
919
}
903
920
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
-
909
921
/* Sid, 2/15/2017. Sandeep reported that Apple devices may use
910
922
BT_DATA_UUID16_SOME and BT_DATA_UUID128_SOME in addition to ALL.
911
923
Practically, these types are same as ALL. */
@@ -1072,6 +1084,11 @@ bool BLEDeviceManager::connect(BLEDevice &device)
1072
1084
uint64_t timestamp = millis ();
1073
1085
uint64_t timestampcur = timestamp;
1074
1086
bool ret = true ;
1087
+ if (_available_for_connect_peripheral_connectable == false )
1088
+ {
1089
+ return false ;
1090
+ }
1091
+
1075
1092
bt_addr_le_copy (&_wait_for_connect_peripheral, device.bt_le_address ());
1076
1093
// Buffer the ADV data
1077
1094
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)
1252
1269
memset (_peer_peripheral_adv_data[i], 0 , BLE_MAX_ADV_SIZE);
1253
1270
_peer_peripheral_adv_data_len[i] = 0 ;
1254
1271
_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 ;
1255
1274
break ;
1256
1275
}
1257
1276
}
@@ -1411,7 +1430,10 @@ bool BLEDeviceManager::setAdvertiseBuffer(const bt_addr_le_t* bt_addr,
1411
1430
{
1412
1431
max_delta = timestamp_delta;
1413
1432
if (max_delta > 2000 ) // expired
1433
+ {
1414
1434
index = i;
1435
+ _peer_scan_rsp_data_len[index ] = 0 ; // Invalid the scan response
1436
+ }
1415
1437
}
1416
1438
1417
1439
if (bt_addr_le_cmp (temp, bt_addr) == 0 )
0 commit comments