diff --git a/examples/bluetooth/nimble/ble_cte/ble_periodic_adv_with_cte/main/main.c b/examples/bluetooth/nimble/ble_cte/ble_periodic_adv_with_cte/main/main.c index 21c701170fb..ac8941cec61 100644 --- a/examples/bluetooth/nimble/ble_cte/ble_periodic_adv_with_cte/main/main.c +++ b/examples/bluetooth/nimble/ble_cte/ble_periodic_adv_with_cte/main/main.c @@ -19,6 +19,11 @@ static const char *TAG = "CTE_ADV_EXAMPLE"; static uint8_t s_periodic_adv_raw_data[] = {0x0D, BLE_HS_ADV_TYPE_COMP_NAME, 'C','T','E',' ','P','e','r','i','o','d','i','c'}; +#if !(MYNEWT_VAL(BLE_EXT_ADV) && MYNEWT_VAL(BLE_PERIODIC_ADV) && MYNEWT_VAL(BLE_AOA_AOD)) +#error "This example requires NimBLE Extended Advertising, Periodic Advertising, and CTE (AoA/AoD). " \ + "Use a supported target from README.md (e.g. esp32h2, esp32c5, esp32c61) and run idf.py set-target before build." +#endif + /** * @brief Configure and start periodic advertising with CTE */ diff --git a/examples/bluetooth/nimble/ble_cte/ble_periodic_adv_with_cte/sdkconfig.defaults b/examples/bluetooth/nimble/ble_cte/ble_periodic_adv_with_cte/sdkconfig.defaults index 4e27f1576f2..2a58e694c98 100644 --- a/examples/bluetooth/nimble/ble_cte/ble_periodic_adv_with_cte/sdkconfig.defaults +++ b/examples/bluetooth/nimble/ble_cte/ble_periodic_adv_with_cte/sdkconfig.defaults @@ -1,7 +1,11 @@ -# This file was generated using idf.py save-defconfig. It can be edited manually. -# Espressif IoT Development Framework (ESP-IDF) 5.5.0 Project Minimal Configuration +# Minimal NimBLE config for periodic advertising with CTE (requires BLE 5.0). # +# Supported targets: ESP32-H2, ESP32-C5, ESP32-C61, etc. (see README.md). +# Run: idf.py set-target before building. + CONFIG_BT_ENABLED=y CONFIG_BT_NIMBLE_ENABLED=y -CONFIG_BT_NIMBLE_AOA_AOD=y +CONFIG_BT_NIMBLE_50_FEATURE_SUPPORT=y CONFIG_BT_NIMBLE_EXT_ADV=y +CONFIG_BT_NIMBLE_ENABLE_PERIODIC_ADV=y +CONFIG_BT_NIMBLE_AOA_AOD=y diff --git a/examples/bluetooth/nimble/ble_cte/ble_periodic_adv_with_cte/sdkconfig.defaults.esp32h2 b/examples/bluetooth/nimble/ble_cte/ble_periodic_adv_with_cte/sdkconfig.defaults.esp32h2 index 9543898142c..c0a363679de 100644 --- a/examples/bluetooth/nimble/ble_cte/ble_periodic_adv_with_cte/sdkconfig.defaults.esp32h2 +++ b/examples/bluetooth/nimble/ble_cte/ble_periodic_adv_with_cte/sdkconfig.defaults.esp32h2 @@ -1,5 +1,6 @@ -# This file was generated using idf.py save-defconfig. It can be edited manually. -# Espressif IoT Development Framework (ESP-IDF) 5.5.0 Project Minimal Configuration -# CONFIG_IDF_TARGET="esp32h2" CONFIG_BT_NIMBLE_SECURITY_ENABLE=n +CONFIG_BT_NIMBLE_50_FEATURE_SUPPORT=y +CONFIG_BT_NIMBLE_EXT_ADV=y +CONFIG_BT_NIMBLE_ENABLE_PERIODIC_ADV=y +CONFIG_BT_NIMBLE_AOA_AOD=y diff --git a/examples/bluetooth/nimble/ble_cts/cts_cent/main/main.c b/examples/bluetooth/nimble/ble_cts/cts_cent/main/main.c index bd765009ea2..5a358a0c363 100644 --- a/examples/bluetooth/nimble/ble_cts/cts_cent/main/main.c +++ b/examples/bluetooth/nimble/ble_cts/cts_cent/main/main.c @@ -1,5 +1,5 @@ /* - * SPDX-FileCopyrightText: 2017-2025 Espressif Systems (Shanghai) CO LTD + * SPDX-FileCopyrightText: 2017-2026 Espressif Systems (Shanghai) CO LTD * * SPDX-License-Identifier: Apache-2.0 */ @@ -207,10 +207,6 @@ ext_ble_cts_cent_should_connect(const struct ble_gap_ext_disc_desc *disc) int offset = 0; int ad_struct_len = 0; uint8_t test_addr[6]; - uint32_t peer_addr[6]; - - memset(peer_addr, 0x0, sizeof peer_addr); - if (disc->legacy_event_type != BLE_HCI_ADV_RPT_EVTYPE_ADV_IND && disc->legacy_event_type != BLE_HCI_ADV_RPT_EVTYPE_DIR_IND) { return 0; @@ -219,15 +215,7 @@ ext_ble_cts_cent_should_connect(const struct ble_gap_ext_disc_desc *disc) ESP_LOGI(tag, "Peer address from menuconfig: %s", CONFIG_EXAMPLE_PEER_ADDR); /* Convert string to address */ - sscanf(CONFIG_EXAMPLE_PEER_ADDR, "%lx:%lx:%lx:%lx:%lx:%lx", - &peer_addr[5], &peer_addr[4], &peer_addr[3], - &peer_addr[2], &peer_addr[1], &peer_addr[0]); - - /* Conversion */ - for(int i=0; i<6; i++) { - test_addr[i] = (uint8_t )peer_addr[i]; - } - + peer_addr_parse(CONFIG_EXAMPLE_PEER_ADDR, test_addr); if (memcmp(test_addr, disc->addr.val, sizeof(disc->addr.val)) != 0) { return 0; } @@ -268,10 +256,6 @@ ble_cts_cent_should_connect(const struct ble_gap_disc_desc *disc) int rc; int i; uint8_t test_addr[6]; - uint32_t peer_addr[6]; - - memset(peer_addr, 0x0, sizeof peer_addr); - /* The device has to be advertising connectability. */ if (disc->event_type != BLE_HCI_ADV_RPT_EVTYPE_ADV_IND && disc->event_type != BLE_HCI_ADV_RPT_EVTYPE_DIR_IND) { @@ -287,15 +271,7 @@ ble_cts_cent_should_connect(const struct ble_gap_disc_desc *disc) if (strlen(CONFIG_EXAMPLE_PEER_ADDR) && (strncmp(CONFIG_EXAMPLE_PEER_ADDR, "ADDR_ANY", strlen("ADDR_ANY")) != 0)) { ESP_LOGI(tag, "Peer address from menuconfig: %s", CONFIG_EXAMPLE_PEER_ADDR); /* Convert string to address */ - sscanf(CONFIG_EXAMPLE_PEER_ADDR, "%lx:%lx:%lx:%lx:%lx:%lx", - &peer_addr[5], &peer_addr[4], &peer_addr[3], - &peer_addr[2], &peer_addr[1], &peer_addr[0]); - - /* Conversion */ - for (int i=0; i<6; i++) { - test_addr[i] = (uint8_t )peer_addr[i]; - } - + peer_addr_parse(CONFIG_EXAMPLE_PEER_ADDR, test_addr); if (memcmp(test_addr, disc->addr.val, sizeof(disc->addr.val)) != 0) { return 0; } diff --git a/examples/bluetooth/nimble/ble_enc_adv_data/enc_adv_data_cent/main/main.c b/examples/bluetooth/nimble/ble_enc_adv_data/enc_adv_data_cent/main/main.c index 496229e1a34..92005f6d060 100644 --- a/examples/bluetooth/nimble/ble_enc_adv_data/enc_adv_data_cent/main/main.c +++ b/examples/bluetooth/nimble/ble_enc_adv_data/enc_adv_data_cent/main/main.c @@ -319,10 +319,6 @@ enc_adv_data_cent_ext_should_connect(const struct ble_gap_ext_disc_desc *disc) int offset = 0; int ad_struct_len = 0; uint8_t test_addr[6]; - uint32_t peer_addr[6]; - - memset(peer_addr, 0x0, sizeof peer_addr); - if (disc->legacy_event_type != BLE_HCI_ADV_RPT_EVTYPE_ADV_IND && disc->legacy_event_type != BLE_HCI_ADV_RPT_EVTYPE_DIR_IND) { return 0; @@ -330,15 +326,7 @@ enc_adv_data_cent_ext_should_connect(const struct ble_gap_ext_disc_desc *disc) if (strlen(CONFIG_EXAMPLE_PEER_ADDR) && (strncmp(CONFIG_EXAMPLE_PEER_ADDR, "ADDR_ANY", strlen ("ADDR_ANY")) != 0)) { ESP_LOGI(tag, "Peer address from menuconfig: %s", CONFIG_EXAMPLE_PEER_ADDR); /* Convert string to address */ - sscanf(CONFIG_EXAMPLE_PEER_ADDR, "%lx:%lx:%lx:%lx:%lx:%lx", - &peer_addr[5], &peer_addr[4], &peer_addr[3], - &peer_addr[2], &peer_addr[1], &peer_addr[0]); - - /* Conversion */ - for(int i=0; i<6; i++) { - test_addr[i] = (uint8_t )peer_addr[i]; - } - + peer_addr_parse(CONFIG_EXAMPLE_PEER_ADDR, test_addr); if (memcmp(test_addr, disc->addr.val, sizeof(disc->addr.val)) != 0) { return 0; } @@ -395,10 +383,6 @@ enc_adv_data_cent_should_connect(const struct ble_gap_disc_desc *disc) int rc; int i; uint8_t test_addr[6]; - uint32_t peer_addr[6]; - - memset(peer_addr, 0x0, sizeof peer_addr); - if (disc->event_type != BLE_HCI_ADV_RPT_EVTYPE_ADV_IND && disc->event_type != BLE_HCI_ADV_RPT_EVTYPE_DIR_IND) { return 0; @@ -412,15 +396,7 @@ enc_adv_data_cent_should_connect(const struct ble_gap_disc_desc *disc) if (strlen(CONFIG_EXAMPLE_PEER_ADDR) && (strncmp(CONFIG_EXAMPLE_PEER_ADDR, "ADDR_ANY", strlen ("ADDR_ANY")) != 0)) { MODLOG_DFLT(INFO, "Peer address from menuconfig: %s", CONFIG_EXAMPLE_PEER_ADDR); /* Convert string to address */ - sscanf(CONFIG_EXAMPLE_PEER_ADDR, "%lx:%lx:%lx:%lx:%lx:%lx", - &peer_addr[5], &peer_addr[4], &peer_addr[3], - &peer_addr[2], &peer_addr[1], &peer_addr[0]); - - /* Conversion */ - for (int i=0; i<6; i++) { - test_addr[i] = (uint8_t )peer_addr[i]; - } - + peer_addr_parse(CONFIG_EXAMPLE_PEER_ADDR, test_addr); if (memcmp(test_addr, disc->addr.val, sizeof(disc->addr.val)) != 0) { return 0; } diff --git a/examples/bluetooth/nimble/ble_htp/htp_cent/main/main.c b/examples/bluetooth/nimble/ble_htp/htp_cent/main/main.c index fdc49361be5..ccc03dbecac 100644 --- a/examples/bluetooth/nimble/ble_htp/htp_cent/main/main.c +++ b/examples/bluetooth/nimble/ble_htp/htp_cent/main/main.c @@ -320,10 +320,7 @@ ext_ble_htp_cent_should_connect(const struct ble_gap_ext_disc_desc *disc) int offset = 0; int ad_struct_len = 0; uint8_t test_addr[6]; - uint32_t peer_addr[6]; - - memset(peer_addr, 0x0, sizeof peer_addr); - + uint8_t parsed_addr[6]; if (disc->legacy_event_type != BLE_HCI_ADV_RPT_EVTYPE_ADV_IND && disc->legacy_event_type != BLE_HCI_ADV_RPT_EVTYPE_DIR_IND) { return 0; @@ -331,13 +328,9 @@ ext_ble_htp_cent_should_connect(const struct ble_gap_ext_disc_desc *disc) if (strlen(CONFIG_EXAMPLE_PEER_ADDR) && (strncmp(CONFIG_EXAMPLE_PEER_ADDR, "ADDR_ANY", strlen ("ADDR_ANY")) != 0)) { ESP_LOGI(tag, "Peer address from menuconfig: %s", CONFIG_EXAMPLE_PEER_ADDR); /* Convert string to address */ - sscanf(CONFIG_EXAMPLE_PEER_ADDR, "%lx:%lx:%lx:%lx:%lx:%lx", - &peer_addr[5], &peer_addr[4], &peer_addr[3], - &peer_addr[2], &peer_addr[1], &peer_addr[0]); - - /* Conversion */ - for (int i=0; i<6; i++) { - test_addr[i] = (uint8_t )peer_addr[5 - i]; + peer_addr_parse(CONFIG_EXAMPLE_PEER_ADDR, parsed_addr); + for (int i = 0; i < 6; i++) { + test_addr[i] = parsed_addr[5 - i]; } if (memcmp(test_addr, disc->addr.val, sizeof(disc->addr.val)) != 0) { @@ -377,10 +370,6 @@ ble_htp_cent_should_connect(const struct ble_gap_disc_desc *disc) int rc; int i; uint8_t test_addr[6]; - uint32_t peer_addr[6]; - - memset(peer_addr, 0x0, sizeof peer_addr); - /* The device has to be advertising connectability. */ if (disc->event_type != BLE_HCI_ADV_RPT_EVTYPE_ADV_IND && disc->event_type != BLE_HCI_ADV_RPT_EVTYPE_DIR_IND) { @@ -396,15 +385,7 @@ ble_htp_cent_should_connect(const struct ble_gap_disc_desc *disc) if (strlen(CONFIG_EXAMPLE_PEER_ADDR) && (strncmp(CONFIG_EXAMPLE_PEER_ADDR, "ADDR_ANY", strlen("ADDR_ANY")) != 0)) { ESP_LOGI(tag, "Peer address from menuconfig: %s", CONFIG_EXAMPLE_PEER_ADDR); /* Convert string to address */ - sscanf(CONFIG_EXAMPLE_PEER_ADDR, "%lx:%lx:%lx:%lx:%lx:%lx", - &peer_addr[5], &peer_addr[4], &peer_addr[3], - &peer_addr[2], &peer_addr[1], &peer_addr[0]); - - /* Conversion */ - for (int i=0; i<6; i++) { - test_addr[i] = (uint8_t )peer_addr[i]; - } - + peer_addr_parse(CONFIG_EXAMPLE_PEER_ADDR, test_addr); if (memcmp(test_addr, disc->addr.val, sizeof(disc->addr.val)) != 0) { return 0; } diff --git a/examples/bluetooth/nimble/ble_l2cap_coc/coc_blecent/main/main.c b/examples/bluetooth/nimble/ble_l2cap_coc/coc_blecent/main/main.c index 9b375ce9357..91a1691376f 100644 --- a/examples/bluetooth/nimble/ble_l2cap_coc/coc_blecent/main/main.c +++ b/examples/bluetooth/nimble/ble_l2cap_coc/coc_blecent/main/main.c @@ -1,5 +1,5 @@ /* - * SPDX-FileCopyrightText: 2021-2025 Espressif Systems (Shanghai) CO LTD + * SPDX-FileCopyrightText: 2021-2026 Espressif Systems (Shanghai) CO LTD * * SPDX-License-Identifier: Unlicense OR CC0-1.0 */ @@ -266,10 +266,6 @@ ext_blecent_should_connect(const struct ble_gap_ext_disc_desc *disc) int offset = 0; int ad_struct_len = 0; uint8_t test_addr[6]; - uint32_t peer_addr[6]; - - memset(peer_addr, 0x0, sizeof peer_addr); - if (disc->legacy_event_type != BLE_HCI_ADV_RPT_EVTYPE_ADV_IND && disc->legacy_event_type != BLE_HCI_ADV_RPT_EVTYPE_DIR_IND) { return 0; @@ -278,15 +274,7 @@ ext_blecent_should_connect(const struct ble_gap_ext_disc_desc *disc) (strncmp(CONFIG_EXAMPLE_PEER_ADDR, "ADDR_ANY", strlen("ADDR_ANY")) != 0)) { ESP_LOGI(tag, "Peer address from menuconfig: %s", CONFIG_EXAMPLE_PEER_ADDR); /* Convert string to address */ - sscanf(CONFIG_EXAMPLE_PEER_ADDR, "%lx:%lx:%lx:%lx:%lx:%lx", - &peer_addr[5], &peer_addr[4], &peer_addr[3], - &peer_addr[2], &peer_addr[1], &peer_addr[0]); - - /* Conversion */ - for (int i=0; i<6; i++) { - test_addr[i] = (uint8_t )peer_addr[i]; - } - + peer_addr_parse(CONFIG_EXAMPLE_PEER_ADDR, test_addr); if (memcmp(test_addr, disc->addr.val, sizeof(disc->addr.val)) != 0) { return 0; } @@ -329,10 +317,6 @@ blecent_should_connect(const struct ble_gap_disc_desc *disc) int rc; int i; uint8_t test_addr[6]; - uint32_t peer_addr[6]; - - memset(peer_addr, 0x0, sizeof peer_addr); - /* The device has to be advertising connectability. */ if (disc->event_type != BLE_HCI_ADV_RPT_EVTYPE_ADV_IND && disc->event_type != BLE_HCI_ADV_RPT_EVTYPE_DIR_IND) { @@ -349,15 +333,7 @@ blecent_should_connect(const struct ble_gap_disc_desc *disc) (strncmp(CONFIG_EXAMPLE_PEER_ADDR, "ADDR_ANY", strlen("ADDR_ANY")) != 0)) { MODLOG_DFLT(INFO, "Peer address from menuconfig:%s", CONFIG_EXAMPLE_PEER_ADDR); /* Convert string to address */ - sscanf(CONFIG_EXAMPLE_PEER_ADDR, "%lx:%lx:%lx:%lx:%lx:%lx", - &peer_addr[5], &peer_addr[4], &peer_addr[3], - &peer_addr[2], &peer_addr[1], &peer_addr[0]); - - /* Conversion */ - for (int i=0; i<6; i++) { - test_addr[i] = (uint8_t )peer_addr[i]; - } - + peer_addr_parse(CONFIG_EXAMPLE_PEER_ADDR, test_addr); if (memcmp(test_addr, disc->addr.val, sizeof(disc->addr.val)) != 0) { return 0; } diff --git a/examples/bluetooth/nimble/ble_l2cap_coc/coc_bleprph/main/main.c b/examples/bluetooth/nimble/ble_l2cap_coc/coc_bleprph/main/main.c index b40f89b38b0..02734f1ff78 100644 --- a/examples/bluetooth/nimble/ble_l2cap_coc/coc_bleprph/main/main.c +++ b/examples/bluetooth/nimble/ble_l2cap_coc/coc_bleprph/main/main.c @@ -196,8 +196,8 @@ bleprph_l2cap_coc_accept(uint16_t conn_handle, uint16_t peer_mtu, { struct os_mbuf *sdu_rx; - console_printf("LE CoC accepting, chan: 0x%08lx, peer_mtu %d\n", - (uint32_t) chan, peer_mtu); + console_printf("LE CoC accepting, chan: 0x%08x, peer_mtu %d\n", + (unsigned) (uint32_t) chan, peer_mtu); sdu_rx = os_mbuf_get_pkthdr(&sdu_os_mbuf_pool, 0); if (!sdu_rx) { diff --git a/examples/bluetooth/nimble/ble_multi_conn/ble_multi_conn_cent/main/main.c b/examples/bluetooth/nimble/ble_multi_conn/ble_multi_conn_cent/main/main.c index a03a6bac9b3..d79daed6f84 100644 --- a/examples/bluetooth/nimble/ble_multi_conn/ble_multi_conn_cent/main/main.c +++ b/examples/bluetooth/nimble/ble_multi_conn/ble_multi_conn_cent/main/main.c @@ -14,6 +14,12 @@ #include "services/gap/ble_svc_gap.h" #include "ble_multi_conn_cent.h" +#if !MYNEWT_VAL(BLE_EXT_ADV) || !MYNEWT_VAL(OPTIMIZE_MULTI_CONN) +#error "This example requires NimBLE Extended Advertising and multi-connection optimization. " \ + "Enable BT_NIMBLE_50_FEATURE_SUPPORT, BT_NIMBLE_EXT_ADV, and BT_NIMBLE_OPTIMIZE_MULTI_CONN; " \ + "use a supported target from README.md (e.g. esp32h2, esp32c6) and run idf.py set-target." +#endif + #define BLE_PEER_NAME "esp-multi-conn" #define BLE_PEER_MAX_NUM (MYNEWT_VAL(BLE_MAX_CONNECTIONS) - 1) #define BLE_PREF_EVT_LEN_MS (5) diff --git a/examples/bluetooth/nimble/ble_multi_conn/ble_multi_conn_cent/sdkconfig.defaults b/examples/bluetooth/nimble/ble_multi_conn/ble_multi_conn_cent/sdkconfig.defaults index 762eb4d35ee..5ed952b38ab 100644 --- a/examples/bluetooth/nimble/ble_multi_conn/ble_multi_conn_cent/sdkconfig.defaults +++ b/examples/bluetooth/nimble/ble_multi_conn/ble_multi_conn_cent/sdkconfig.defaults @@ -1,10 +1,11 @@ -# This file was generated using idf.py save-defconfig. It can be edited manually. -# Espressif IoT Development Framework (ESP-IDF) Project Minimal Configuration -# +# Minimal NimBLE config for multi-connection central (requires BLE 5.0 ext adv). +# Supported targets: ESP32-C5, ESP32-C6, ESP32-C61, ESP32-H2, etc. (see README.md). + CONFIG_BT_ENABLED=y CONFIG_BT_NIMBLE_ENABLED=y -CONFIG_BT_NIMBLE_HCI_EVT_BUF_SIZE=70 +CONFIG_BT_NIMBLE_50_FEATURE_SUPPORT=y CONFIG_BT_NIMBLE_EXT_ADV=y +CONFIG_BT_NIMBLE_TRANSPORT_EVT_SIZE=70 CONFIG_BT_NIMBLE_MAX_CONNECTIONS=70 CONFIG_BT_NIMBLE_GATT_MAX_PROCS=70 CONFIG_BT_NIMBLE_MSYS_1_BLOCK_COUNT=100 diff --git a/examples/bluetooth/nimble/ble_multi_conn/ble_multi_conn_prph/sdkconfig.defaults b/examples/bluetooth/nimble/ble_multi_conn/ble_multi_conn_prph/sdkconfig.defaults index 6040051b36c..2d10b8c6709 100644 --- a/examples/bluetooth/nimble/ble_multi_conn/ble_multi_conn_prph/sdkconfig.defaults +++ b/examples/bluetooth/nimble/ble_multi_conn/ble_multi_conn_prph/sdkconfig.defaults @@ -1,10 +1,11 @@ -# This file was generated using idf.py save-defconfig. It can be edited manually. -# Espressif IoT Development Framework (ESP-IDF) Project Minimal Configuration -# +# Minimal NimBLE config for multi-connection peripheral (requires BLE 5.0 ext adv). +# Supported targets: ESP32-C5, ESP32-C6, ESP32-C61, ESP32-H2, etc. (see README.md). + CONFIG_BT_ENABLED=y CONFIG_BT_NIMBLE_ENABLED=y -CONFIG_BT_NIMBLE_HCI_EVT_BUF_SIZE=70 +CONFIG_BT_NIMBLE_50_FEATURE_SUPPORT=y CONFIG_BT_NIMBLE_EXT_ADV=y +CONFIG_BT_NIMBLE_TRANSPORT_EVT_SIZE=70 CONFIG_BT_NIMBLE_MAX_CONNECTIONS=69 CONFIG_BT_NIMBLE_MSYS_1_BLOCK_COUNT=100 CONFIG_BT_NIMBLE_LOG_LEVEL_WARNING=y diff --git a/examples/bluetooth/nimble/ble_phy/phy_cent/main/main.c b/examples/bluetooth/nimble/ble_phy/phy_cent/main/main.c index 7181eaedc58..ccb57c124b9 100644 --- a/examples/bluetooth/nimble/ble_phy/phy_cent/main/main.c +++ b/examples/bluetooth/nimble/ble_phy/phy_cent/main/main.c @@ -235,10 +235,6 @@ ext_blecent_should_connect(const struct ble_gap_ext_disc_desc *disc) int offset = 0; int ad_struct_len = 0; uint8_t test_addr[6]; - uint32_t peer_addr[6]; - - memset(peer_addr, 0x0, sizeof peer_addr); - if (disc->legacy_event_type != BLE_HCI_ADV_RPT_EVTYPE_ADV_IND && disc->legacy_event_type != BLE_HCI_ADV_RPT_EVTYPE_DIR_IND) { return 0; @@ -246,13 +242,10 @@ ext_blecent_should_connect(const struct ble_gap_ext_disc_desc *disc) if (strlen(CONFIG_EXAMPLE_PEER_ADDR) && (strncmp(CONFIG_EXAMPLE_PEER_ADDR, "ADDR_ANY", strlen("ADDR_ANY")) != 0)) { ESP_LOGI(tag, "Peer address from menuconfig: %s", CONFIG_EXAMPLE_PEER_ADDR); /* Convert string to address */ - sscanf(CONFIG_EXAMPLE_PEER_ADDR, "%lx:%lx:%lx:%lx:%lx:%lx", - &peer_addr[5], &peer_addr[4], &peer_addr[3], - &peer_addr[2], &peer_addr[1], &peer_addr[0]); - - /* Conversion */ - for (int i=0; i<6; i++) { - test_addr[5 - i] = (uint8_t )peer_addr[i]; + uint8_t parsed_addr[6]; + peer_addr_parse(CONFIG_EXAMPLE_PEER_ADDR, parsed_addr); + for (int i = 0; i < 6; i++) { + test_addr[5 - i] = parsed_addr[i]; } if (memcmp(test_addr, disc->addr.val, sizeof(disc->addr.val)) != 0) { @@ -472,10 +465,6 @@ blecent_on_sync(void) int ii, rc; uint8_t all_phy; uint8_t test_addr[6]; - uint32_t peer_addr[6]; - - memset(peer_addr, 0x0, sizeof peer_addr); - /* Make sure we have proper identity address set (public preferred) */ rc = ble_hs_util_ensure_addr(0); assert(rc == 0); @@ -487,15 +476,7 @@ blecent_on_sync(void) if (strlen(CONFIG_EXAMPLE_PEER_ADDR) && (strncmp(CONFIG_EXAMPLE_PEER_ADDR, "ADDR_ANY", strlen("ADDR_ANY")) != 0)) { /* User wants to connect on 2M or coded phy directly */ - sscanf(CONFIG_EXAMPLE_PEER_ADDR, "%lx:%lx:%lx:%lx:%lx:%lx", - &peer_addr[5], &peer_addr[4], &peer_addr[3], - &peer_addr[2], &peer_addr[1], &peer_addr[0]); - - /* Conversion */ - for (int i=0; i<6; i++) { - test_addr[i] = (uint8_t )peer_addr[i]; - } - + peer_addr_parse(CONFIG_EXAMPLE_PEER_ADDR, test_addr); for(ii = 0 ;ii < 6; ii++) conn_addr.val[ii] = test_addr[ii]; diff --git a/examples/bluetooth/nimble/ble_proximity_sensor/proximity_sensor_cent/main/main.c b/examples/bluetooth/nimble/ble_proximity_sensor/proximity_sensor_cent/main/main.c index 1223715a026..67a6e1ecc53 100644 --- a/examples/bluetooth/nimble/ble_proximity_sensor/proximity_sensor_cent/main/main.c +++ b/examples/bluetooth/nimble/ble_proximity_sensor/proximity_sensor_cent/main/main.c @@ -228,10 +228,6 @@ ext_ble_prox_cent_should_connect(const struct ble_gap_ext_disc_desc *disc) int offset = 0; int ad_struct_len = 0; uint8_t test_addr[6]; - uint32_t peer_addr[6]; - - memset(peer_addr, 0x0, sizeof peer_addr); - if (disc->legacy_event_type != BLE_HCI_ADV_RPT_EVTYPE_ADV_IND && disc->legacy_event_type != BLE_HCI_ADV_RPT_EVTYPE_DIR_IND) { return 0; @@ -239,13 +235,10 @@ ext_ble_prox_cent_should_connect(const struct ble_gap_ext_disc_desc *disc) if (strlen(CONFIG_EXAMPLE_PEER_ADDR) && (strncmp(CONFIG_EXAMPLE_PEER_ADDR, "ADDR_ANY", strlen ("ADDR_ANY")) != 0)) { ESP_LOGI(tag, "Peer address from menuconfig: %s", CONFIG_EXAMPLE_PEER_ADDR); /* Convert string to address */ - sscanf(CONFIG_EXAMPLE_PEER_ADDR, "%lx:%lx:%lx:%lx:%lx:%lx", - &peer_addr[5], &peer_addr[4], &peer_addr[3], - &peer_addr[2], &peer_addr[1], &peer_addr[0]); - - /* Conversion */ - for (int i=0; i<6; i++) { - test_addr[5 - i] = (uint8_t )peer_addr[i]; + uint8_t parsed_addr[6]; + peer_addr_parse(CONFIG_EXAMPLE_PEER_ADDR, parsed_addr); + for (int i = 0; i < 6; i++) { + test_addr[5 - i] = parsed_addr[i]; } if (memcmp(test_addr, disc->addr.val, sizeof(disc->addr.val)) != 0) { @@ -284,10 +277,6 @@ ble_prox_cent_should_connect(const struct ble_gap_disc_desc *disc) int rc; int i; uint8_t test_addr[6]; - uint32_t peer_addr[6]; - - memset(peer_addr, 0x0, sizeof peer_addr); - /* The device has to be advertising connectability. */ if (disc->event_type != BLE_HCI_ADV_RPT_EVTYPE_ADV_IND && disc->event_type != BLE_HCI_ADV_RPT_EVTYPE_DIR_IND) { @@ -303,15 +292,7 @@ ble_prox_cent_should_connect(const struct ble_gap_disc_desc *disc) if (strlen(CONFIG_EXAMPLE_PEER_ADDR) && (strncmp(CONFIG_EXAMPLE_PEER_ADDR, "ADDR_ANY", strlen("ADDR_ANY")) != 0)) { ESP_LOGI(tag, "Peer address from menuconfig: %s", CONFIG_EXAMPLE_PEER_ADDR); /* Convert string to address */ - sscanf(CONFIG_EXAMPLE_PEER_ADDR, "%lx:%lx:%lx:%lx:%lx:%lx", - &peer_addr[5], &peer_addr[4], &peer_addr[3], - &peer_addr[2], &peer_addr[1], &peer_addr[0]); - - /* Conversion */ - for (int i=0; i<6; i++) { - test_addr[i] = (uint8_t )peer_addr[i]; - } - + peer_addr_parse(CONFIG_EXAMPLE_PEER_ADDR, test_addr); if (memcmp(test_addr, disc->addr.val, sizeof(disc->addr.val)) != 0) { return 0; } diff --git a/examples/bluetooth/nimble/blecent/main/main.c b/examples/bluetooth/nimble/blecent/main/main.c index 0e4cb7066c0..3ac1990f51b 100644 --- a/examples/bluetooth/nimble/blecent/main/main.c +++ b/examples/bluetooth/nimble/blecent/main/main.c @@ -481,10 +481,6 @@ ext_blecent_should_connect(const struct ble_gap_ext_disc_desc *disc) uint32_t *addr_offset; #endif // CONFIG_EXAMPLE_USE_CI_ADDRESS uint8_t test_addr[6]; - uint32_t peer_addr[6]; - - memset(peer_addr, 0x0, sizeof peer_addr); - if (disc->legacy_event_type != BLE_HCI_ADV_RPT_EVTYPE_ADV_IND && disc->legacy_event_type != BLE_HCI_ADV_RPT_EVTYPE_DIR_IND) { return 0; @@ -493,16 +489,9 @@ ext_blecent_should_connect(const struct ble_gap_ext_disc_desc *disc) #if !CONFIG_EXAMPLE_USE_CI_ADDRESS ESP_LOGI(tag, "Peer address from menuconfig: %s", CONFIG_EXAMPLE_PEER_ADDR); /* Convert string to address */ - sscanf(CONFIG_EXAMPLE_PEER_ADDR, "%lx:%lx:%lx:%lx:%lx:%lx", - &peer_addr[5], &peer_addr[4], &peer_addr[3], - &peer_addr[2], &peer_addr[1], &peer_addr[0]); + peer_addr_parse(CONFIG_EXAMPLE_PEER_ADDR, test_addr); #endif - /* Conversion */ - for(int i=0; i<6; i++) { - test_addr[i] = (uint8_t )peer_addr[i]; - } - #if CONFIG_EXAMPLE_USE_CI_ADDRESS addr_offset = (uint32_t *)&test_addr[1]; *addr_offset = atoi(CONFIG_EXAMPLE_PEER_ADDR); @@ -549,10 +538,6 @@ blecent_should_connect(const struct ble_gap_disc_desc *disc) uint32_t *addr_offset; #endif // CONFIG_EXAMPLE_USE_CI_ADDRESS uint8_t test_addr[6]; - uint32_t peer_addr[6]; - - memset(peer_addr, 0x0, sizeof peer_addr); - /* The device has to be advertising connectability. */ if (disc->event_type != BLE_HCI_ADV_RPT_EVTYPE_ADV_IND && disc->event_type != BLE_HCI_ADV_RPT_EVTYPE_DIR_IND) { @@ -569,17 +554,9 @@ blecent_should_connect(const struct ble_gap_disc_desc *disc) ESP_LOGI(tag, "Peer address from menuconfig: %s", CONFIG_EXAMPLE_PEER_ADDR); #if !CONFIG_EXAMPLE_USE_CI_ADDRESS /* Convert string to address */ - sscanf(CONFIG_EXAMPLE_PEER_ADDR, "%lx:%lx:%lx:%lx:%lx:%lx", - &peer_addr[5], &peer_addr[4], &peer_addr[3], - &peer_addr[2], &peer_addr[1], &peer_addr[0]); - printf("peer--> %lx %lx %lx %lx %lx %lx \n", peer_addr[5], peer_addr[4], - peer_addr[3], peer_addr[2], peer_addr[1], peer_addr[0]); + peer_addr_parse(CONFIG_EXAMPLE_PEER_ADDR, test_addr); + printf("peer--> %s\n", addr_str(test_addr)); #endif - /* Conversion */ - for (int i=0; i<6; i++) { - test_addr[i] = (uint8_t )peer_addr[i]; - } - #if CONFIG_EXAMPLE_USE_CI_ADDRESS addr_offset = (uint32_t *)&test_addr[1]; *addr_offset = atoi(CONFIG_EXAMPLE_PEER_ADDR); diff --git a/examples/bluetooth/nimble/common/nimble_central_utils/esp_central.h b/examples/bluetooth/nimble/common/nimble_central_utils/esp_central.h index 45fbb6ab0e7..2bca76cd05e 100644 --- a/examples/bluetooth/nimble/common/nimble_central_utils/esp_central.h +++ b/examples/bluetooth/nimble/common/nimble_central_utils/esp_central.h @@ -15,6 +15,7 @@ extern "C" { #define PEER_ADDR_VAL_SIZE 6 /** Misc. */ +int peer_addr_parse(const char *addr_str, uint8_t addr[PEER_ADDR_VAL_SIZE]); void print_bytes(const uint8_t *bytes, int len); void print_mbuf(const struct os_mbuf *om); void print_mbuf_data(const struct os_mbuf *om); diff --git a/examples/bluetooth/nimble/common/nimble_central_utils/misc.c b/examples/bluetooth/nimble/common/nimble_central_utils/misc.c index 1c89f7e3902..bf936e80b2c 100644 --- a/examples/bluetooth/nimble/common/nimble_central_utils/misc.c +++ b/examples/bluetooth/nimble/common/nimble_central_utils/misc.c @@ -4,7 +4,21 @@ * SPDX-License-Identifier: Unlicense OR CC0-1.0 */ +#include +#include #include "host/ble_hs.h" +#include "esp_central.h" + +int +peer_addr_parse(const char *addr_str, uint8_t addr[PEER_ADDR_VAL_SIZE]) +{ + if (addr_str == NULL) { + return 0; + } + return sscanf(addr_str, "%hhx:%hhx:%hhx:%hhx:%hhx:%hhx", + &addr[5], &addr[4], &addr[3], + &addr[2], &addr[1], &addr[0]); +} /** * Utility function to log an array of bytes. diff --git a/examples/bluetooth/nimble/throughput_app/gatt/blecent_throughput/components/cmd_system/cmd_system.c b/examples/bluetooth/nimble/throughput_app/gatt/blecent_throughput/components/cmd_system/cmd_system.c index a7d6b35d086..369d837d131 100644 --- a/examples/bluetooth/nimble/throughput_app/gatt/blecent_throughput/components/cmd_system/cmd_system.c +++ b/examples/bluetooth/nimble/throughput_app/gatt/blecent_throughput/components/cmd_system/cmd_system.c @@ -4,6 +4,7 @@ * SPDX-License-Identifier: Apache-2.0 */ +#include #include #include #include @@ -331,7 +332,7 @@ static int light_sleep(int argc, char **argv) uint32_t causes = esp_sleep_get_wakeup_causes(); if (causes & BIT(ESP_SLEEP_WAKEUP_UNDEFINED)) { ESP_LOGI(TAG, "Woke up from: unknown"); - printf("%lx\n", causes); + printf("%" PRIx32 "\n", causes); return 0; } if (causes & BIT(ESP_SLEEP_WAKEUP_GPIO)) { diff --git a/examples/bluetooth/nimble/throughput_app/gatt/blecent_throughput/main/gattc.h b/examples/bluetooth/nimble/throughput_app/gatt/blecent_throughput/main/gattc.h index 6762d3d42c8..b90f4a998cb 100644 --- a/examples/bluetooth/nimble/throughput_app/gatt/blecent_throughput/main/gattc.h +++ b/examples/bluetooth/nimble/throughput_app/gatt/blecent_throughput/main/gattc.h @@ -27,7 +27,10 @@ union ble_store_key; #define BLECENT_CHR_UNR_ALERT_STAT_UUID 0x2A45 #define BLECENT_CHR_ALERT_NOT_CTRL_PT 0x2A44 +#define PEER_ADDR_VAL_SIZE 6 + /** Misc. */ +int peer_addr_parse(const char *addr_str, uint8_t addr[PEER_ADDR_VAL_SIZE]); void print_bytes(const uint8_t *bytes, int len); void print_mbuf(const struct os_mbuf *om); char *addr_str(const void *addr); diff --git a/examples/bluetooth/nimble/throughput_app/gatt/blecent_throughput/main/main.c b/examples/bluetooth/nimble/throughput_app/gatt/blecent_throughput/main/main.c index e95f26045bb..43a4ff8cb70 100644 --- a/examples/bluetooth/nimble/throughput_app/gatt/blecent_throughput/main/main.c +++ b/examples/bluetooth/nimble/throughput_app/gatt/blecent_throughput/main/main.c @@ -763,7 +763,7 @@ ext_blecent_should_connect(const struct ble_gap_ext_disc_desc *disc) int offset = 0; int ad_struct_len = 0; uint8_t test_addr[6]; - uint32_t peer_addr[6]; + uint8_t parsed_addr[6]; uint8_t phy_uuid_found = 0; if (disc->legacy_event_type != BLE_HCI_ADV_RPT_EVTYPE_ADV_IND && @@ -773,13 +773,9 @@ ext_blecent_should_connect(const struct ble_gap_ext_disc_desc *disc) if (strlen(CONFIG_EXAMPLE_PEER_ADDR) && (strncmp(CONFIG_EXAMPLE_PEER_ADDR, "ADDR_ANY", strlen("ADDR_ANY")) != 0)) { // ESP_LOGI(tag, "Peer address from menuconfig: %s", CONFIG_EXAMPLE_PEER_ADDR); /* Convert string to address */ - sscanf(CONFIG_EXAMPLE_PEER_ADDR, "%lx:%lx:%lx:%lx:%lx:%lx", - &peer_addr[5], &peer_addr[4], &peer_addr[3], - &peer_addr[2], &peer_addr[1], &peer_addr[0]); - - /* Conversion */ - for (int i=0; i<6; i++) { - test_addr[5 - i] = (uint8_t )peer_addr[i]; + peer_addr_parse(CONFIG_EXAMPLE_PEER_ADDR, parsed_addr); + for (int i = 0; i < 6; i++) { + test_addr[5 - i] = parsed_addr[i]; } if (memcmp(test_addr, disc->addr.val, sizeof(disc->addr.val)) != 0) { return 0; @@ -839,10 +835,6 @@ blecent_should_connect(const struct ble_gap_disc_desc *disc) int rc; int i; uint8_t test_addr[6]; - uint32_t peer_addr[6]; - - memset(peer_addr, 0x0, sizeof peer_addr); - rc = ble_hs_adv_parse_fields(&fields, disc->data, disc->length_data); if (rc != 0) { return 0; @@ -851,15 +843,7 @@ blecent_should_connect(const struct ble_gap_disc_desc *disc) if (strlen(CONFIG_EXAMPLE_PEER_ADDR) && (strncmp(CONFIG_EXAMPLE_PEER_ADDR, "ADDR_ANY", strlen("ADDR_ANY")) != 0)) { ESP_LOGI(tag, "Peer address from menuconfig: %s", CONFIG_EXAMPLE_PEER_ADDR); /* Convert string to address */ - sscanf(CONFIG_EXAMPLE_PEER_ADDR, "%lx:%lx:%lx:%lx:%lx:%lx", - &peer_addr[5], &peer_addr[4], &peer_addr[3], - &peer_addr[2], &peer_addr[1], &peer_addr[0]); - - /* Conversion */ - for (int i=0; i<6; i++) { - test_addr[i] = (uint8_t )peer_addr[i]; - } - + peer_addr_parse(CONFIG_EXAMPLE_PEER_ADDR, test_addr); if (memcmp(test_addr, disc->addr.val, sizeof(disc->addr.val)) != 0) { return 0; } diff --git a/examples/bluetooth/nimble/throughput_app/gatt/blecent_throughput/main/misc.c b/examples/bluetooth/nimble/throughput_app/gatt/blecent_throughput/main/misc.c index 4492ba84df7..1b8ba43a4b6 100644 --- a/examples/bluetooth/nimble/throughput_app/gatt/blecent_throughput/main/misc.c +++ b/examples/bluetooth/nimble/throughput_app/gatt/blecent_throughput/main/misc.c @@ -1,5 +1,5 @@ /* - * SPDX-FileCopyrightText: 2015-2025 Espressif Systems (Shanghai) CO LTD + * SPDX-FileCopyrightText: 2015-2026 Espressif Systems (Shanghai) CO LTD * * SPDX-License-Identifier: Apache-2.0 */ @@ -11,6 +11,17 @@ #include "host/ble_uuid.h" #include "gattc.h" +int +peer_addr_parse(const char *addr_str, uint8_t addr[PEER_ADDR_VAL_SIZE]) +{ + if (addr_str == NULL) { + return 0; + } + return sscanf(addr_str, "%hhx:%hhx:%hhx:%hhx:%hhx:%hhx", + &addr[5], &addr[4], &addr[3], + &addr[2], &addr[1], &addr[0]); +} + /** * Utility function to log an array of bytes. */