mirror of
https://github.com/espressif/esp-idf.git
synced 2026-10-02 11:10:54 +03:00
fix(nimble): Fix for clang compilation issues
This commit is contained in:
Submodule components/bt/host/nimble/nimble updated: 0364c41e59...f97c9c55f6
@@ -19,6 +19,11 @@
|
|||||||
static const char *TAG = "CTE_ADV_EXAMPLE";
|
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'};
|
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
|
* @brief Configure and start periodic advertising with CTE
|
||||||
*/
|
*/
|
||||||
|
|||||||
@@ -1,7 +1,11 @@
|
|||||||
# This file was generated using idf.py save-defconfig. It can be edited manually.
|
# Minimal NimBLE config for periodic advertising with CTE (requires BLE 5.0).
|
||||||
# Espressif IoT Development Framework (ESP-IDF) 5.5.0 Project Minimal Configuration
|
|
||||||
#
|
#
|
||||||
|
# Supported targets: ESP32-H2, ESP32-C5, ESP32-C61, etc. (see README.md).
|
||||||
|
# Run: idf.py set-target <chip> before building.
|
||||||
|
|
||||||
CONFIG_BT_ENABLED=y
|
CONFIG_BT_ENABLED=y
|
||||||
CONFIG_BT_NIMBLE_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_EXT_ADV=y
|
||||||
|
CONFIG_BT_NIMBLE_ENABLE_PERIODIC_ADV=y
|
||||||
|
CONFIG_BT_NIMBLE_AOA_AOD=y
|
||||||
|
|||||||
+4
-3
@@ -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_IDF_TARGET="esp32h2"
|
||||||
CONFIG_BT_NIMBLE_SECURITY_ENABLE=n
|
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
|
||||||
|
|||||||
@@ -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
|
* 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 offset = 0;
|
||||||
int ad_struct_len = 0;
|
int ad_struct_len = 0;
|
||||||
uint8_t test_addr[6];
|
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 &&
|
if (disc->legacy_event_type != BLE_HCI_ADV_RPT_EVTYPE_ADV_IND &&
|
||||||
disc->legacy_event_type != BLE_HCI_ADV_RPT_EVTYPE_DIR_IND) {
|
disc->legacy_event_type != BLE_HCI_ADV_RPT_EVTYPE_DIR_IND) {
|
||||||
return 0;
|
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);
|
ESP_LOGI(tag, "Peer address from menuconfig: %s", CONFIG_EXAMPLE_PEER_ADDR);
|
||||||
|
|
||||||
/* Convert string to address */
|
/* Convert string to address */
|
||||||
sscanf(CONFIG_EXAMPLE_PEER_ADDR, "%lx:%lx:%lx:%lx:%lx:%lx",
|
peer_addr_parse(CONFIG_EXAMPLE_PEER_ADDR, test_addr);
|
||||||
&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];
|
|
||||||
}
|
|
||||||
|
|
||||||
if (memcmp(test_addr, disc->addr.val, sizeof(disc->addr.val)) != 0) {
|
if (memcmp(test_addr, disc->addr.val, sizeof(disc->addr.val)) != 0) {
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
@@ -268,10 +256,6 @@ ble_cts_cent_should_connect(const struct ble_gap_disc_desc *disc)
|
|||||||
int rc;
|
int rc;
|
||||||
int i;
|
int i;
|
||||||
uint8_t test_addr[6];
|
uint8_t test_addr[6];
|
||||||
uint32_t peer_addr[6];
|
|
||||||
|
|
||||||
memset(peer_addr, 0x0, sizeof peer_addr);
|
|
||||||
|
|
||||||
/* The device has to be advertising connectability. */
|
/* The device has to be advertising connectability. */
|
||||||
if (disc->event_type != BLE_HCI_ADV_RPT_EVTYPE_ADV_IND &&
|
if (disc->event_type != BLE_HCI_ADV_RPT_EVTYPE_ADV_IND &&
|
||||||
disc->event_type != BLE_HCI_ADV_RPT_EVTYPE_DIR_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)) {
|
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);
|
ESP_LOGI(tag, "Peer address from menuconfig: %s", CONFIG_EXAMPLE_PEER_ADDR);
|
||||||
/* Convert string to address */
|
/* Convert string to address */
|
||||||
sscanf(CONFIG_EXAMPLE_PEER_ADDR, "%lx:%lx:%lx:%lx:%lx:%lx",
|
peer_addr_parse(CONFIG_EXAMPLE_PEER_ADDR, test_addr);
|
||||||
&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];
|
|
||||||
}
|
|
||||||
|
|
||||||
if (memcmp(test_addr, disc->addr.val, sizeof(disc->addr.val)) != 0) {
|
if (memcmp(test_addr, disc->addr.val, sizeof(disc->addr.val)) != 0) {
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -322,10 +322,6 @@ enc_adv_data_cent_ext_should_connect(const struct ble_gap_ext_disc_desc *disc)
|
|||||||
uint32_t *addr_offset;
|
uint32_t *addr_offset;
|
||||||
#endif // CONFIG_EXAMPLE_USE_CI_ADDRESS
|
#endif // CONFIG_EXAMPLE_USE_CI_ADDRESS
|
||||||
uint8_t test_addr[6];
|
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 &&
|
if (disc->legacy_event_type != BLE_HCI_ADV_RPT_EVTYPE_ADV_IND &&
|
||||||
disc->legacy_event_type != BLE_HCI_ADV_RPT_EVTYPE_DIR_IND) {
|
disc->legacy_event_type != BLE_HCI_ADV_RPT_EVTYPE_DIR_IND) {
|
||||||
return 0;
|
return 0;
|
||||||
@@ -334,9 +330,7 @@ enc_adv_data_cent_ext_should_connect(const struct ble_gap_ext_disc_desc *disc)
|
|||||||
#if !CONFIG_EXAMPLE_USE_CI_ADDRESS
|
#if !CONFIG_EXAMPLE_USE_CI_ADDRESS
|
||||||
ESP_LOGI(tag, "Peer address from menuconfig: %s", CONFIG_EXAMPLE_PEER_ADDR);
|
ESP_LOGI(tag, "Peer address from menuconfig: %s", CONFIG_EXAMPLE_PEER_ADDR);
|
||||||
/* Convert string to address */
|
/* Convert string to address */
|
||||||
sscanf(CONFIG_EXAMPLE_PEER_ADDR, "%lx:%lx:%lx:%lx:%lx:%lx",
|
peer_addr_parse(CONFIG_EXAMPLE_PEER_ADDR, test_addr);
|
||||||
&peer_addr[5], &peer_addr[4], &peer_addr[3],
|
|
||||||
&peer_addr[2], &peer_addr[1], &peer_addr[0]);
|
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
/* Conversion */
|
/* Conversion */
|
||||||
@@ -406,10 +400,6 @@ enc_adv_data_cent_should_connect(const struct ble_gap_disc_desc *disc)
|
|||||||
int rc;
|
int rc;
|
||||||
int i;
|
int i;
|
||||||
uint8_t test_addr[6];
|
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 &&
|
if (disc->event_type != BLE_HCI_ADV_RPT_EVTYPE_ADV_IND &&
|
||||||
disc->event_type != BLE_HCI_ADV_RPT_EVTYPE_DIR_IND) {
|
disc->event_type != BLE_HCI_ADV_RPT_EVTYPE_DIR_IND) {
|
||||||
return 0;
|
return 0;
|
||||||
@@ -423,15 +413,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)) {
|
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);
|
MODLOG_DFLT(INFO, "Peer address from menuconfig: %s", CONFIG_EXAMPLE_PEER_ADDR);
|
||||||
/* Convert string to address */
|
/* Convert string to address */
|
||||||
sscanf(CONFIG_EXAMPLE_PEER_ADDR, "%lx:%lx:%lx:%lx:%lx:%lx",
|
peer_addr_parse(CONFIG_EXAMPLE_PEER_ADDR, test_addr);
|
||||||
&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];
|
|
||||||
}
|
|
||||||
|
|
||||||
if (memcmp(test_addr, disc->addr.val, sizeof(disc->addr.val)) != 0) {
|
if (memcmp(test_addr, disc->addr.val, sizeof(disc->addr.val)) != 0) {
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -320,10 +320,7 @@ ext_ble_htp_cent_should_connect(const struct ble_gap_ext_disc_desc *disc)
|
|||||||
int offset = 0;
|
int offset = 0;
|
||||||
int ad_struct_len = 0;
|
int ad_struct_len = 0;
|
||||||
uint8_t test_addr[6];
|
uint8_t test_addr[6];
|
||||||
uint32_t peer_addr[6];
|
uint8_t parsed_addr[6];
|
||||||
|
|
||||||
memset(peer_addr, 0x0, sizeof peer_addr);
|
|
||||||
|
|
||||||
if (disc->legacy_event_type != BLE_HCI_ADV_RPT_EVTYPE_ADV_IND &&
|
if (disc->legacy_event_type != BLE_HCI_ADV_RPT_EVTYPE_ADV_IND &&
|
||||||
disc->legacy_event_type != BLE_HCI_ADV_RPT_EVTYPE_DIR_IND) {
|
disc->legacy_event_type != BLE_HCI_ADV_RPT_EVTYPE_DIR_IND) {
|
||||||
return 0;
|
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)) {
|
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);
|
ESP_LOGI(tag, "Peer address from menuconfig: %s", CONFIG_EXAMPLE_PEER_ADDR);
|
||||||
/* Convert string to address */
|
/* Convert string to address */
|
||||||
sscanf(CONFIG_EXAMPLE_PEER_ADDR, "%lx:%lx:%lx:%lx:%lx:%lx",
|
peer_addr_parse(CONFIG_EXAMPLE_PEER_ADDR, parsed_addr);
|
||||||
&peer_addr[5], &peer_addr[4], &peer_addr[3],
|
for (int i = 0; i < 6; i++) {
|
||||||
&peer_addr[2], &peer_addr[1], &peer_addr[0]);
|
test_addr[i] = parsed_addr[5 - i];
|
||||||
|
|
||||||
/* Conversion */
|
|
||||||
for (int i=0; i<6; i++) {
|
|
||||||
test_addr[i] = (uint8_t )peer_addr[5 - i];
|
|
||||||
}
|
}
|
||||||
|
|
||||||
if (memcmp(test_addr, disc->addr.val, sizeof(disc->addr.val)) != 0) {
|
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 rc;
|
||||||
int i;
|
int i;
|
||||||
uint8_t test_addr[6];
|
uint8_t test_addr[6];
|
||||||
uint32_t peer_addr[6];
|
|
||||||
|
|
||||||
memset(peer_addr, 0x0, sizeof peer_addr);
|
|
||||||
|
|
||||||
/* The device has to be advertising connectability. */
|
/* The device has to be advertising connectability. */
|
||||||
if (disc->event_type != BLE_HCI_ADV_RPT_EVTYPE_ADV_IND &&
|
if (disc->event_type != BLE_HCI_ADV_RPT_EVTYPE_ADV_IND &&
|
||||||
disc->event_type != BLE_HCI_ADV_RPT_EVTYPE_DIR_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)) {
|
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);
|
ESP_LOGI(tag, "Peer address from menuconfig: %s", CONFIG_EXAMPLE_PEER_ADDR);
|
||||||
/* Convert string to address */
|
/* Convert string to address */
|
||||||
sscanf(CONFIG_EXAMPLE_PEER_ADDR, "%lx:%lx:%lx:%lx:%lx:%lx",
|
peer_addr_parse(CONFIG_EXAMPLE_PEER_ADDR, test_addr);
|
||||||
&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];
|
|
||||||
}
|
|
||||||
|
|
||||||
if (memcmp(test_addr, disc->addr.val, sizeof(disc->addr.val)) != 0) {
|
if (memcmp(test_addr, disc->addr.val, sizeof(disc->addr.val)) != 0) {
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -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
|
* 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 offset = 0;
|
||||||
int ad_struct_len = 0;
|
int ad_struct_len = 0;
|
||||||
uint8_t test_addr[6];
|
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 &&
|
if (disc->legacy_event_type != BLE_HCI_ADV_RPT_EVTYPE_ADV_IND &&
|
||||||
disc->legacy_event_type != BLE_HCI_ADV_RPT_EVTYPE_DIR_IND) {
|
disc->legacy_event_type != BLE_HCI_ADV_RPT_EVTYPE_DIR_IND) {
|
||||||
return 0;
|
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)) {
|
(strncmp(CONFIG_EXAMPLE_PEER_ADDR, "ADDR_ANY", strlen("ADDR_ANY")) != 0)) {
|
||||||
ESP_LOGI(tag, "Peer address from menuconfig: %s", CONFIG_EXAMPLE_PEER_ADDR);
|
ESP_LOGI(tag, "Peer address from menuconfig: %s", CONFIG_EXAMPLE_PEER_ADDR);
|
||||||
/* Convert string to address */
|
/* Convert string to address */
|
||||||
sscanf(CONFIG_EXAMPLE_PEER_ADDR, "%lx:%lx:%lx:%lx:%lx:%lx",
|
peer_addr_parse(CONFIG_EXAMPLE_PEER_ADDR, test_addr);
|
||||||
&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];
|
|
||||||
}
|
|
||||||
|
|
||||||
if (memcmp(test_addr, disc->addr.val, sizeof(disc->addr.val)) != 0) {
|
if (memcmp(test_addr, disc->addr.val, sizeof(disc->addr.val)) != 0) {
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
@@ -329,10 +317,6 @@ blecent_should_connect(const struct ble_gap_disc_desc *disc)
|
|||||||
int rc;
|
int rc;
|
||||||
int i;
|
int i;
|
||||||
uint8_t test_addr[6];
|
uint8_t test_addr[6];
|
||||||
uint32_t peer_addr[6];
|
|
||||||
|
|
||||||
memset(peer_addr, 0x0, sizeof peer_addr);
|
|
||||||
|
|
||||||
/* The device has to be advertising connectability. */
|
/* The device has to be advertising connectability. */
|
||||||
if (disc->event_type != BLE_HCI_ADV_RPT_EVTYPE_ADV_IND &&
|
if (disc->event_type != BLE_HCI_ADV_RPT_EVTYPE_ADV_IND &&
|
||||||
disc->event_type != BLE_HCI_ADV_RPT_EVTYPE_DIR_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)) {
|
(strncmp(CONFIG_EXAMPLE_PEER_ADDR, "ADDR_ANY", strlen("ADDR_ANY")) != 0)) {
|
||||||
MODLOG_DFLT(INFO, "Peer address from menuconfig:%s", CONFIG_EXAMPLE_PEER_ADDR);
|
MODLOG_DFLT(INFO, "Peer address from menuconfig:%s", CONFIG_EXAMPLE_PEER_ADDR);
|
||||||
/* Convert string to address */
|
/* Convert string to address */
|
||||||
sscanf(CONFIG_EXAMPLE_PEER_ADDR, "%lx:%lx:%lx:%lx:%lx:%lx",
|
peer_addr_parse(CONFIG_EXAMPLE_PEER_ADDR, test_addr);
|
||||||
&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];
|
|
||||||
}
|
|
||||||
|
|
||||||
if (memcmp(test_addr, disc->addr.val, sizeof(disc->addr.val)) != 0) {
|
if (memcmp(test_addr, disc->addr.val, sizeof(disc->addr.val)) != 0) {
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -196,8 +196,8 @@ bleprph_l2cap_coc_accept(uint16_t conn_handle, uint16_t peer_mtu,
|
|||||||
{
|
{
|
||||||
struct os_mbuf *sdu_rx;
|
struct os_mbuf *sdu_rx;
|
||||||
|
|
||||||
console_printf("LE CoC accepting, chan: 0x%08lx, peer_mtu %d\n",
|
console_printf("LE CoC accepting, chan: 0x%08x, peer_mtu %d\n",
|
||||||
(uint32_t) chan, peer_mtu);
|
(unsigned) (uint32_t) chan, peer_mtu);
|
||||||
|
|
||||||
sdu_rx = os_mbuf_get_pkthdr(&sdu_os_mbuf_pool, 0);
|
sdu_rx = os_mbuf_get_pkthdr(&sdu_os_mbuf_pool, 0);
|
||||||
if (!sdu_rx) {
|
if (!sdu_rx) {
|
||||||
|
|||||||
@@ -14,6 +14,12 @@
|
|||||||
#include "services/gap/ble_svc_gap.h"
|
#include "services/gap/ble_svc_gap.h"
|
||||||
#include "ble_multi_conn_cent.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_NAME "esp-multi-conn"
|
||||||
#define BLE_PEER_MAX_NUM (MYNEWT_VAL(BLE_MAX_CONNECTIONS) - 1)
|
#define BLE_PEER_MAX_NUM (MYNEWT_VAL(BLE_MAX_CONNECTIONS) - 1)
|
||||||
#define BLE_PREF_EVT_LEN_MS (5)
|
#define BLE_PREF_EVT_LEN_MS (5)
|
||||||
|
|||||||
@@ -1,10 +1,11 @@
|
|||||||
# This file was generated using idf.py save-defconfig. It can be edited manually.
|
# Minimal NimBLE config for multi-connection central (requires BLE 5.0 ext adv).
|
||||||
# Espressif IoT Development Framework (ESP-IDF) Project Minimal Configuration
|
# Supported targets: ESP32-C5, ESP32-C6, ESP32-C61, ESP32-H2, etc. (see README.md).
|
||||||
#
|
|
||||||
CONFIG_BT_ENABLED=y
|
CONFIG_BT_ENABLED=y
|
||||||
CONFIG_BT_NIMBLE_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_EXT_ADV=y
|
||||||
|
CONFIG_BT_NIMBLE_TRANSPORT_EVT_SIZE=70
|
||||||
CONFIG_BT_NIMBLE_MAX_CONNECTIONS=70
|
CONFIG_BT_NIMBLE_MAX_CONNECTIONS=70
|
||||||
CONFIG_BT_NIMBLE_GATT_MAX_PROCS=70
|
CONFIG_BT_NIMBLE_GATT_MAX_PROCS=70
|
||||||
CONFIG_BT_NIMBLE_MSYS_1_BLOCK_COUNT=100
|
CONFIG_BT_NIMBLE_MSYS_1_BLOCK_COUNT=100
|
||||||
|
|||||||
@@ -1,10 +1,11 @@
|
|||||||
# This file was generated using idf.py save-defconfig. It can be edited manually.
|
# Minimal NimBLE config for multi-connection peripheral (requires BLE 5.0 ext adv).
|
||||||
# Espressif IoT Development Framework (ESP-IDF) Project Minimal Configuration
|
# Supported targets: ESP32-C5, ESP32-C6, ESP32-C61, ESP32-H2, etc. (see README.md).
|
||||||
#
|
|
||||||
CONFIG_BT_ENABLED=y
|
CONFIG_BT_ENABLED=y
|
||||||
CONFIG_BT_NIMBLE_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_EXT_ADV=y
|
||||||
|
CONFIG_BT_NIMBLE_TRANSPORT_EVT_SIZE=70
|
||||||
CONFIG_BT_NIMBLE_MAX_CONNECTIONS=69
|
CONFIG_BT_NIMBLE_MAX_CONNECTIONS=69
|
||||||
CONFIG_BT_NIMBLE_MSYS_1_BLOCK_COUNT=100
|
CONFIG_BT_NIMBLE_MSYS_1_BLOCK_COUNT=100
|
||||||
CONFIG_BT_NIMBLE_LOG_LEVEL_WARNING=y
|
CONFIG_BT_NIMBLE_LOG_LEVEL_WARNING=y
|
||||||
|
|||||||
@@ -235,10 +235,6 @@ ext_blecent_should_connect(const struct ble_gap_ext_disc_desc *disc)
|
|||||||
int offset = 0;
|
int offset = 0;
|
||||||
int ad_struct_len = 0;
|
int ad_struct_len = 0;
|
||||||
uint8_t test_addr[6];
|
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 &&
|
if (disc->legacy_event_type != BLE_HCI_ADV_RPT_EVTYPE_ADV_IND &&
|
||||||
disc->legacy_event_type != BLE_HCI_ADV_RPT_EVTYPE_DIR_IND) {
|
disc->legacy_event_type != BLE_HCI_ADV_RPT_EVTYPE_DIR_IND) {
|
||||||
return 0;
|
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)) {
|
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);
|
ESP_LOGI(tag, "Peer address from menuconfig: %s", CONFIG_EXAMPLE_PEER_ADDR);
|
||||||
/* Convert string to address */
|
/* Convert string to address */
|
||||||
sscanf(CONFIG_EXAMPLE_PEER_ADDR, "%lx:%lx:%lx:%lx:%lx:%lx",
|
uint8_t parsed_addr[6];
|
||||||
&peer_addr[5], &peer_addr[4], &peer_addr[3],
|
peer_addr_parse(CONFIG_EXAMPLE_PEER_ADDR, parsed_addr);
|
||||||
&peer_addr[2], &peer_addr[1], &peer_addr[0]);
|
for (int i = 0; i < 6; i++) {
|
||||||
|
test_addr[5 - i] = parsed_addr[i];
|
||||||
/* Conversion */
|
|
||||||
for (int i=0; i<6; i++) {
|
|
||||||
test_addr[5 - i] = (uint8_t )peer_addr[i];
|
|
||||||
}
|
}
|
||||||
|
|
||||||
if (memcmp(test_addr, disc->addr.val, sizeof(disc->addr.val)) != 0) {
|
if (memcmp(test_addr, disc->addr.val, sizeof(disc->addr.val)) != 0) {
|
||||||
@@ -473,10 +466,6 @@ blecent_on_sync(void)
|
|||||||
int ii, rc;
|
int ii, rc;
|
||||||
uint8_t all_phy;
|
uint8_t all_phy;
|
||||||
uint8_t test_addr[6];
|
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) */
|
/* Make sure we have proper identity address set (public preferred) */
|
||||||
rc = ble_hs_util_ensure_addr(0);
|
rc = ble_hs_util_ensure_addr(0);
|
||||||
assert(rc == 0);
|
assert(rc == 0);
|
||||||
@@ -488,15 +477,7 @@ blecent_on_sync(void)
|
|||||||
if (strlen(CONFIG_EXAMPLE_PEER_ADDR) &&
|
if (strlen(CONFIG_EXAMPLE_PEER_ADDR) &&
|
||||||
(strncmp(CONFIG_EXAMPLE_PEER_ADDR, "ADDR_ANY", strlen("ADDR_ANY")) != 0)) {
|
(strncmp(CONFIG_EXAMPLE_PEER_ADDR, "ADDR_ANY", strlen("ADDR_ANY")) != 0)) {
|
||||||
/* User wants to connect on 2M or coded phy directly */
|
/* User wants to connect on 2M or coded phy directly */
|
||||||
sscanf(CONFIG_EXAMPLE_PEER_ADDR, "%lx:%lx:%lx:%lx:%lx:%lx",
|
peer_addr_parse(CONFIG_EXAMPLE_PEER_ADDR, test_addr);
|
||||||
&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];
|
|
||||||
}
|
|
||||||
|
|
||||||
for(ii = 0 ;ii < 6; ii++)
|
for(ii = 0 ;ii < 6; ii++)
|
||||||
conn_addr.val[ii] = test_addr[ii];
|
conn_addr.val[ii] = test_addr[ii];
|
||||||
|
|
||||||
|
|||||||
@@ -228,10 +228,6 @@ ext_ble_prox_cent_should_connect(const struct ble_gap_ext_disc_desc *disc)
|
|||||||
int offset = 0;
|
int offset = 0;
|
||||||
int ad_struct_len = 0;
|
int ad_struct_len = 0;
|
||||||
uint8_t test_addr[6];
|
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 &&
|
if (disc->legacy_event_type != BLE_HCI_ADV_RPT_EVTYPE_ADV_IND &&
|
||||||
disc->legacy_event_type != BLE_HCI_ADV_RPT_EVTYPE_DIR_IND) {
|
disc->legacy_event_type != BLE_HCI_ADV_RPT_EVTYPE_DIR_IND) {
|
||||||
return 0;
|
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)) {
|
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);
|
ESP_LOGI(tag, "Peer address from menuconfig: %s", CONFIG_EXAMPLE_PEER_ADDR);
|
||||||
/* Convert string to address */
|
/* Convert string to address */
|
||||||
sscanf(CONFIG_EXAMPLE_PEER_ADDR, "%lx:%lx:%lx:%lx:%lx:%lx",
|
uint8_t parsed_addr[6];
|
||||||
&peer_addr[5], &peer_addr[4], &peer_addr[3],
|
peer_addr_parse(CONFIG_EXAMPLE_PEER_ADDR, parsed_addr);
|
||||||
&peer_addr[2], &peer_addr[1], &peer_addr[0]);
|
for (int i = 0; i < 6; i++) {
|
||||||
|
test_addr[5 - i] = parsed_addr[i];
|
||||||
/* Conversion */
|
|
||||||
for (int i=0; i<6; i++) {
|
|
||||||
test_addr[5 - i] = (uint8_t )peer_addr[i];
|
|
||||||
}
|
}
|
||||||
|
|
||||||
if (memcmp(test_addr, disc->addr.val, sizeof(disc->addr.val)) != 0) {
|
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 rc;
|
||||||
int i;
|
int i;
|
||||||
uint8_t test_addr[6];
|
uint8_t test_addr[6];
|
||||||
uint32_t peer_addr[6];
|
|
||||||
|
|
||||||
memset(peer_addr, 0x0, sizeof peer_addr);
|
|
||||||
|
|
||||||
/* The device has to be advertising connectability. */
|
/* The device has to be advertising connectability. */
|
||||||
if (disc->event_type != BLE_HCI_ADV_RPT_EVTYPE_ADV_IND &&
|
if (disc->event_type != BLE_HCI_ADV_RPT_EVTYPE_ADV_IND &&
|
||||||
disc->event_type != BLE_HCI_ADV_RPT_EVTYPE_DIR_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)) {
|
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);
|
ESP_LOGI(tag, "Peer address from menuconfig: %s", CONFIG_EXAMPLE_PEER_ADDR);
|
||||||
/* Convert string to address */
|
/* Convert string to address */
|
||||||
sscanf(CONFIG_EXAMPLE_PEER_ADDR, "%lx:%lx:%lx:%lx:%lx:%lx",
|
peer_addr_parse(CONFIG_EXAMPLE_PEER_ADDR, test_addr);
|
||||||
&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];
|
|
||||||
}
|
|
||||||
|
|
||||||
if (memcmp(test_addr, disc->addr.val, sizeof(disc->addr.val)) != 0) {
|
if (memcmp(test_addr, disc->addr.val, sizeof(disc->addr.val)) != 0) {
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -503,10 +503,6 @@ ext_blecent_should_connect(const struct ble_gap_ext_disc_desc *disc)
|
|||||||
uint32_t *addr_offset;
|
uint32_t *addr_offset;
|
||||||
#endif // CONFIG_EXAMPLE_USE_CI_ADDRESS
|
#endif // CONFIG_EXAMPLE_USE_CI_ADDRESS
|
||||||
uint8_t test_addr[6];
|
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 &&
|
if (disc->legacy_event_type != BLE_HCI_ADV_RPT_EVTYPE_ADV_IND &&
|
||||||
disc->legacy_event_type != BLE_HCI_ADV_RPT_EVTYPE_DIR_IND) {
|
disc->legacy_event_type != BLE_HCI_ADV_RPT_EVTYPE_DIR_IND) {
|
||||||
return 0;
|
return 0;
|
||||||
@@ -515,16 +511,9 @@ ext_blecent_should_connect(const struct ble_gap_ext_disc_desc *disc)
|
|||||||
#if !CONFIG_EXAMPLE_USE_CI_ADDRESS
|
#if !CONFIG_EXAMPLE_USE_CI_ADDRESS
|
||||||
ESP_LOGI(tag, "Peer address from menuconfig: %s", CONFIG_EXAMPLE_PEER_ADDR);
|
ESP_LOGI(tag, "Peer address from menuconfig: %s", CONFIG_EXAMPLE_PEER_ADDR);
|
||||||
/* Convert string to address */
|
/* Convert string to address */
|
||||||
sscanf(CONFIG_EXAMPLE_PEER_ADDR, "%lx:%lx:%lx:%lx:%lx:%lx",
|
peer_addr_parse(CONFIG_EXAMPLE_PEER_ADDR, test_addr);
|
||||||
&peer_addr[5], &peer_addr[4], &peer_addr[3],
|
|
||||||
&peer_addr[2], &peer_addr[1], &peer_addr[0]);
|
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
/* Conversion */
|
|
||||||
for(int i=0; i<6; i++) {
|
|
||||||
test_addr[i] = (uint8_t )peer_addr[i];
|
|
||||||
}
|
|
||||||
|
|
||||||
#if CONFIG_EXAMPLE_USE_CI_ADDRESS
|
#if CONFIG_EXAMPLE_USE_CI_ADDRESS
|
||||||
addr_offset = (uint32_t *)&test_addr[1];
|
addr_offset = (uint32_t *)&test_addr[1];
|
||||||
*addr_offset = atoi(CONFIG_EXAMPLE_PEER_ADDR);
|
*addr_offset = atoi(CONFIG_EXAMPLE_PEER_ADDR);
|
||||||
@@ -571,10 +560,6 @@ blecent_should_connect(const struct ble_gap_disc_desc *disc)
|
|||||||
uint32_t *addr_offset;
|
uint32_t *addr_offset;
|
||||||
#endif // CONFIG_EXAMPLE_USE_CI_ADDRESS
|
#endif // CONFIG_EXAMPLE_USE_CI_ADDRESS
|
||||||
uint8_t test_addr[6];
|
uint8_t test_addr[6];
|
||||||
uint32_t peer_addr[6];
|
|
||||||
|
|
||||||
memset(peer_addr, 0x0, sizeof peer_addr);
|
|
||||||
|
|
||||||
/* The device has to be advertising connectability. */
|
/* The device has to be advertising connectability. */
|
||||||
if (disc->event_type != BLE_HCI_ADV_RPT_EVTYPE_ADV_IND &&
|
if (disc->event_type != BLE_HCI_ADV_RPT_EVTYPE_ADV_IND &&
|
||||||
disc->event_type != BLE_HCI_ADV_RPT_EVTYPE_DIR_IND) {
|
disc->event_type != BLE_HCI_ADV_RPT_EVTYPE_DIR_IND) {
|
||||||
@@ -591,17 +576,9 @@ blecent_should_connect(const struct ble_gap_disc_desc *disc)
|
|||||||
ESP_LOGI(tag, "Peer address from menuconfig: %s", CONFIG_EXAMPLE_PEER_ADDR);
|
ESP_LOGI(tag, "Peer address from menuconfig: %s", CONFIG_EXAMPLE_PEER_ADDR);
|
||||||
#if !CONFIG_EXAMPLE_USE_CI_ADDRESS
|
#if !CONFIG_EXAMPLE_USE_CI_ADDRESS
|
||||||
/* Convert string to address */
|
/* Convert string to address */
|
||||||
sscanf(CONFIG_EXAMPLE_PEER_ADDR, "%lx:%lx:%lx:%lx:%lx:%lx",
|
peer_addr_parse(CONFIG_EXAMPLE_PEER_ADDR, test_addr);
|
||||||
&peer_addr[5], &peer_addr[4], &peer_addr[3],
|
printf("peer--> %s\n", addr_str(test_addr));
|
||||||
&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]);
|
|
||||||
#endif
|
#endif
|
||||||
/* Conversion */
|
|
||||||
for (int i=0; i<6; i++) {
|
|
||||||
test_addr[i] = (uint8_t )peer_addr[i];
|
|
||||||
}
|
|
||||||
|
|
||||||
#if CONFIG_EXAMPLE_USE_CI_ADDRESS
|
#if CONFIG_EXAMPLE_USE_CI_ADDRESS
|
||||||
addr_offset = (uint32_t *)&test_addr[1];
|
addr_offset = (uint32_t *)&test_addr[1];
|
||||||
*addr_offset = atoi(CONFIG_EXAMPLE_PEER_ADDR);
|
*addr_offset = atoi(CONFIG_EXAMPLE_PEER_ADDR);
|
||||||
|
|||||||
@@ -15,6 +15,7 @@ extern "C" {
|
|||||||
#define PEER_ADDR_VAL_SIZE 6
|
#define PEER_ADDR_VAL_SIZE 6
|
||||||
|
|
||||||
/** Misc. */
|
/** 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_bytes(const uint8_t *bytes, int len);
|
||||||
void print_mbuf(const struct os_mbuf *om);
|
void print_mbuf(const struct os_mbuf *om);
|
||||||
void print_mbuf_data(const struct os_mbuf *om);
|
void print_mbuf_data(const struct os_mbuf *om);
|
||||||
|
|||||||
@@ -4,7 +4,21 @@
|
|||||||
* SPDX-License-Identifier: Unlicense OR CC0-1.0
|
* SPDX-License-Identifier: Unlicense OR CC0-1.0
|
||||||
*/
|
*/
|
||||||
|
|
||||||
|
#include <stdio.h>
|
||||||
|
#include <string.h>
|
||||||
#include "host/ble_hs.h"
|
#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.
|
* Utility function to log an array of bytes.
|
||||||
|
|||||||
+17
-17
@@ -1,9 +1,10 @@
|
|||||||
/*
|
/*
|
||||||
* SPDX-FileCopyrightText: 2015-2024 Espressif Systems (Shanghai) CO LTD
|
* SPDX-FileCopyrightText: 2015-2026 Espressif Systems (Shanghai) CO LTD
|
||||||
*
|
*
|
||||||
* SPDX-License-Identifier: Apache-2.0
|
* SPDX-License-Identifier: Apache-2.0
|
||||||
*/
|
*/
|
||||||
|
|
||||||
|
#include <inttypes.h>
|
||||||
#include <stdio.h>
|
#include <stdio.h>
|
||||||
#include <string.h>
|
#include <string.h>
|
||||||
#include <ctype.h>
|
#include <ctype.h>
|
||||||
@@ -324,23 +325,22 @@ static int light_sleep(int argc, char **argv)
|
|||||||
fflush(stdout);
|
fflush(stdout);
|
||||||
uart_wait_tx_idle_polling(CONFIG_ESP_CONSOLE_UART_NUM);
|
uart_wait_tx_idle_polling(CONFIG_ESP_CONSOLE_UART_NUM);
|
||||||
esp_light_sleep_start();
|
esp_light_sleep_start();
|
||||||
esp_sleep_wakeup_cause_t cause = esp_sleep_get_wakeup_cause();
|
|
||||||
const char *cause_str;
|
uint32_t causes = esp_sleep_get_wakeup_causes();
|
||||||
switch (cause) {
|
if (causes & BIT(ESP_SLEEP_WAKEUP_UNDEFINED)) {
|
||||||
case ESP_SLEEP_WAKEUP_GPIO:
|
ESP_LOGI(TAG, "Woke up from: unknown");
|
||||||
cause_str = "GPIO";
|
printf("%" PRIx32 "\n", causes);
|
||||||
break;
|
return 0;
|
||||||
case ESP_SLEEP_WAKEUP_UART:
|
}
|
||||||
cause_str = "UART";
|
if (causes & BIT(ESP_SLEEP_WAKEUP_GPIO)) {
|
||||||
break;
|
ESP_LOGI(TAG, "Woke up from: GPIO");
|
||||||
case ESP_SLEEP_WAKEUP_TIMER:
|
}
|
||||||
cause_str = "timer";
|
if (causes & BIT(ESP_SLEEP_WAKEUP_UART)) {
|
||||||
break;
|
ESP_LOGI(TAG, "Woke up from: UART");
|
||||||
default:
|
}
|
||||||
cause_str = "unknown";
|
if (causes & BIT(ESP_SLEEP_WAKEUP_TIMER)) {
|
||||||
printf("%d\n", cause);
|
ESP_LOGI(TAG, "Woke up from: timer");
|
||||||
}
|
}
|
||||||
ESP_LOGI(TAG, "Woke up from: %s", cause_str);
|
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -27,7 +27,10 @@ union ble_store_key;
|
|||||||
#define BLECENT_CHR_UNR_ALERT_STAT_UUID 0x2A45
|
#define BLECENT_CHR_UNR_ALERT_STAT_UUID 0x2A45
|
||||||
#define BLECENT_CHR_ALERT_NOT_CTRL_PT 0x2A44
|
#define BLECENT_CHR_ALERT_NOT_CTRL_PT 0x2A44
|
||||||
|
|
||||||
|
#define PEER_ADDR_VAL_SIZE 6
|
||||||
|
|
||||||
/** Misc. */
|
/** 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_bytes(const uint8_t *bytes, int len);
|
||||||
void print_mbuf(const struct os_mbuf *om);
|
void print_mbuf(const struct os_mbuf *om);
|
||||||
char *addr_str(const void *addr);
|
char *addr_str(const void *addr);
|
||||||
|
|||||||
@@ -570,7 +570,7 @@ ext_blecent_should_connect(const struct ble_gap_ext_disc_desc *disc)
|
|||||||
int offset = 0;
|
int offset = 0;
|
||||||
int ad_struct_len = 0;
|
int ad_struct_len = 0;
|
||||||
uint8_t test_addr[6];
|
uint8_t test_addr[6];
|
||||||
uint32_t peer_addr[6];
|
uint8_t parsed_addr[6];
|
||||||
uint8_t phy_uuid_found = 0;
|
uint8_t phy_uuid_found = 0;
|
||||||
|
|
||||||
if (disc->legacy_event_type != BLE_HCI_ADV_RPT_EVTYPE_ADV_IND &&
|
if (disc->legacy_event_type != BLE_HCI_ADV_RPT_EVTYPE_ADV_IND &&
|
||||||
@@ -580,13 +580,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)) {
|
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);
|
// ESP_LOGI(tag, "Peer address from menuconfig: %s", CONFIG_EXAMPLE_PEER_ADDR);
|
||||||
/* Convert string to address */
|
/* Convert string to address */
|
||||||
sscanf(CONFIG_EXAMPLE_PEER_ADDR, "%lx:%lx:%lx:%lx:%lx:%lx",
|
peer_addr_parse(CONFIG_EXAMPLE_PEER_ADDR, parsed_addr);
|
||||||
&peer_addr[5], &peer_addr[4], &peer_addr[3],
|
for (int i = 0; i < 6; i++) {
|
||||||
&peer_addr[2], &peer_addr[1], &peer_addr[0]);
|
test_addr[5 - i] = parsed_addr[i];
|
||||||
|
|
||||||
/* Conversion */
|
|
||||||
for (int i=0; i<6; i++) {
|
|
||||||
test_addr[5 - i] = (uint8_t )peer_addr[i];
|
|
||||||
}
|
}
|
||||||
if (memcmp(test_addr, disc->addr.val, sizeof(disc->addr.val)) != 0) {
|
if (memcmp(test_addr, disc->addr.val, sizeof(disc->addr.val)) != 0) {
|
||||||
return 0;
|
return 0;
|
||||||
@@ -646,10 +642,6 @@ blecent_should_connect(const struct ble_gap_disc_desc *disc)
|
|||||||
int rc;
|
int rc;
|
||||||
int i;
|
int i;
|
||||||
uint8_t test_addr[6];
|
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);
|
rc = ble_hs_adv_parse_fields(&fields, disc->data, disc->length_data);
|
||||||
if (rc != 0) {
|
if (rc != 0) {
|
||||||
return 0;
|
return 0;
|
||||||
@@ -658,15 +650,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)) {
|
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);
|
ESP_LOGI(tag, "Peer address from menuconfig: %s", CONFIG_EXAMPLE_PEER_ADDR);
|
||||||
/* Convert string to address */
|
/* Convert string to address */
|
||||||
sscanf(CONFIG_EXAMPLE_PEER_ADDR, "%lx:%lx:%lx:%lx:%lx:%lx",
|
peer_addr_parse(CONFIG_EXAMPLE_PEER_ADDR, test_addr);
|
||||||
&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];
|
|
||||||
}
|
|
||||||
|
|
||||||
if (memcmp(test_addr, disc->addr.val, sizeof(disc->addr.val)) != 0) {
|
if (memcmp(test_addr, disc->addr.val, sizeof(disc->addr.val)) != 0) {
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -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
|
* SPDX-License-Identifier: Apache-2.0
|
||||||
*/
|
*/
|
||||||
@@ -11,6 +11,17 @@
|
|||||||
#include "host/ble_uuid.h"
|
#include "host/ble_uuid.h"
|
||||||
#include "gattc.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.
|
* Utility function to log an array of bytes.
|
||||||
*/
|
*/
|
||||||
|
|||||||
Reference in New Issue
Block a user