mirror of
https://github.com/espressif/esp-idf.git
synced 2026-10-02 11:10:54 +03:00
fix(nimble): Improve safety, fix bugs, and update docs across NimBLE examples
- Remove unused headers from examples - Improve periodic adv/sync example functionality and readability - Use ble_hs_id_infer_auto() instead of hardcoded BLE_OWN_ADDR_PUBLIC/RANDOM - Add ble_hs_util_ensure_addr() calls in on_sync for proper address setup - Use correct ext adv instance (0 instead of 1) in phy_prph, l2cap_coc, multi_conn - Fix struct name: ble_gap_periodic_adv_enable_params -> ble_gap_periodic_adv_start_params - Add CONFIG_BT_NIMBLE_GAP_SERVICE guards around ble_svc_gap_device_name_set - Fix unsafe AD data parsing with bounds checks in central examples - Fix UUID matching bugs (off-by-one loop condition and byte order) in phy_cent, htp_cent, and proximity_sensor_cent - Fix ble_multi_conn_cent address type to use dynamic inference - Remove contradictory sm_sc=0 after sm_sc=1 in ble_multi_adv - Add CONFIG_BT_NIMBLE_EXT_ADV=y to ble_multi_adv sdkconfig defaults - Check return values for ble_gap_set_host_feat, nimble_port_init - Update tutorials and READMEs to match code changes
This commit is contained in:
@@ -539,23 +539,24 @@ ext_blecent_should_connect(const struct ble_gap_ext_disc_desc *disc)
|
||||
/* The device has to advertise support for the Alert Notification
|
||||
* service (0x1811).
|
||||
*/
|
||||
do {
|
||||
while (offset < disc->length_data) {
|
||||
ad_struct_len = disc->data[offset];
|
||||
|
||||
if (!ad_struct_len) {
|
||||
if (ad_struct_len == 0 || offset + ad_struct_len + 1 > disc->length_data) {
|
||||
break;
|
||||
}
|
||||
|
||||
/* Search if ANS UUID is advertised */
|
||||
if (disc->data[offset] == 0x03 && disc->data[offset + 1] == 0x03) {
|
||||
if ( disc->data[offset + 2] == 0x18 && disc->data[offset + 3] == 0x11 ) {
|
||||
return 1;
|
||||
/* Search if ANS UUID (0x1811) is advertised */
|
||||
if (ad_struct_len >= 3 && (disc->data[offset + 1] == 0x02 || disc->data[offset + 1] == 0x03)) {
|
||||
for (int i = 2; i + 1 <= ad_struct_len; i += 2) {
|
||||
if (disc->data[offset + i] == 0x18 && disc->data[offset + i + 1] == 0x11) {
|
||||
return 1;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
offset += ad_struct_len + 1;
|
||||
|
||||
} while ( offset < disc->length_data );
|
||||
}
|
||||
|
||||
return 0;
|
||||
}
|
||||
@@ -1110,6 +1111,8 @@ app_main(void)
|
||||
|
||||
#if NIMBLE_BLE_CONNECT
|
||||
#if MYNEWT_VAL(STATIC_PASSKEY)
|
||||
/* WARNING: Hardcoded passkey for demonstration only.
|
||||
* In production, generate a random passkey per pairing. */
|
||||
ble_sm_configure_static_passkey(456789, true);
|
||||
#endif
|
||||
|
||||
|
||||
Reference in New Issue
Block a user