From 7b7b9de28d2ba5c2ec3cb4930ec3cde5066e7eb9 Mon Sep 17 00:00:00 2001 From: luoxu Date: Mon, 27 Oct 2025 16:46:01 +0800 Subject: [PATCH 1/2] feat(ble_mesh): add ext log initialization functions --- components/bt/esp_ble_mesh/core/main.c | 9 +- components/bt/esp_ble_mesh/lib/ext.c | 114 +++++++++++++++++- .../lib/include/mesh_v1.1/utils.h | 2 + 3 files changed, 120 insertions(+), 5 deletions(-) diff --git a/components/bt/esp_ble_mesh/core/main.c b/components/bt/esp_ble_mesh/core/main.c index 3b6dcb1402..39aece1157 100644 --- a/components/bt/esp_ble_mesh/core/main.c +++ b/components/bt/esp_ble_mesh/core/main.c @@ -2,7 +2,7 @@ /* * SPDX-FileCopyrightText: 2017 Intel Corporation - * SPDX-FileContributor: 2018-2024 Espressif Systems (Shanghai) CO LTD + * SPDX-FileContributor: 2018-2025 Espressif Systems (Shanghai) CO LTD * * SPDX-License-Identifier: Apache-2.0 */ @@ -450,6 +450,13 @@ int bt_mesh_init(const struct bt_mesh_prov *prov, } #if CONFIG_BLE_MESH_V11_SUPPORT + extern int bt_mesh_ext_log_init(void); + err = bt_mesh_ext_log_init(); + if (err) { + BT_ERR("Bluetooth Mesh lib log init failed, err %d", err); + return err; + } + extern int bt_mesh_v11_ext_init(void); err = bt_mesh_v11_ext_init(); if (err) { diff --git a/components/bt/esp_ble_mesh/lib/ext.c b/components/bt/esp_ble_mesh/lib/ext.c index d9803b830a..9e7ef0e7b5 100644 --- a/components/bt/esp_ble_mesh/lib/ext.c +++ b/components/bt/esp_ble_mesh/lib/ext.c @@ -4006,8 +4006,6 @@ void bt_mesh_ext_mbt_server_cb_evt_to_btc(uint8_t event, void *model, void *ctx) } typedef struct { - uint64_t config_ble_mesh_stack_trace_level : 3; - uint64_t config_ble_mesh_use_ble_50: 1; uint64_t config_ble_mesh_use_duplicate_scan : 1; uint64_t config_ble_mesh_pb_adv : 1; @@ -4172,8 +4170,6 @@ typedef struct { } bt_mesh_ext_config_t; static const bt_mesh_ext_config_t bt_mesh_ext_cfg = { - .config_ble_mesh_stack_trace_level = BLE_MESH_LOG_LEVEL, - .config_ble_mesh_use_ble_50 = IS_ENABLED(CONFIG_BLE_MESH_USE_BLE_50), .config_ble_mesh_use_duplicate_scan = IS_ENABLED(CONFIG_BLE_MESH_USE_DUPLICATE_SCAN), .config_ble_mesh_pb_adv = IS_ENABLED(CONFIG_BLE_MESH_PB_ADV), @@ -4963,6 +4959,116 @@ static const bt_mesh_ext_funcs_t bt_mesh_ext_func = { /* CONFIG_BLE_MESH_MBT_SRV */ }; +#define BLE_MESH_LIB_TRACE_TAG "BLE_MESH(lib)" +#define BLE_MESH_LOG_FORMAT_START(level) LOG_COLOR_ ## level #level " (%" PRIu32 ") %s: " +#define BLE_MESH_LOG_FORMAT_END LOG_RESET_COLOR "\n" + +typedef void (*logger_func_t)(const char *format, ...); + +typedef struct { + logger_func_t error; + logger_func_t warn; + logger_func_t info; + logger_func_t debug; +} bt_mesh_lib_ext_log_env_t; + +void bt_mesh_lib_log_error(const char *format, ...) +{ +#if (CONFIG_BLE_MESH_NO_LOG ||\ + /* Disable log output when compressed logging + * is enabled but ERR logs are not preserved */\ + (CONFIG_BLE_MESH_STACK_ERR_LOG_COMPRESSION &&\ + !CONFIG_BLE_MESH_STACK_ERR_LOG_PRESERVE)) + return; +#else + if ((BLE_MESH_LOG_LEVEL >= BLE_MESH_LOG_LEVEL_ERROR) && + BLE_MESH_LOG_LEVEL_CHECK(BLE_MESH, ERROR)) { + va_list args = {0}; + va_start(args, format); + esp_log_write(ESP_LOG_ERROR, BLE_MESH_LIB_TRACE_TAG, BLE_MESH_LOG_FORMAT_START(E), esp_log_timestamp(), BLE_MESH_LIB_TRACE_TAG); + esp_log_writev(ESP_LOG_ERROR, BLE_MESH_LIB_TRACE_TAG, format, args); + esp_log_write(ESP_LOG_ERROR, BLE_MESH_LIB_TRACE_TAG, BLE_MESH_LOG_FORMAT_END); + va_end(args); + } +#endif +} + +void bt_mesh_lib_log_warn(const char *format, ...) +{ +#if (CONFIG_BLE_MESH_NO_LOG ||\ + /* Disable log output when compressed logging + * is enabled but WARN logs are not preserved */\ + (CONFIG_BLE_MESH_STACK_WARN_LOG_COMPRESSION &&\ + !CONFIG_BLE_MESH_STACK_WARN_LOG_PRESERVE)) + return; +#else + if ((BLE_MESH_LOG_LEVEL >= BLE_MESH_LOG_LEVEL_WARN) && + BLE_MESH_LOG_LEVEL_CHECK(BLE_MESH, WARN)) { + va_list args = {0}; + va_start(args, format); + esp_log_write(ESP_LOG_WARN, BLE_MESH_LIB_TRACE_TAG, BLE_MESH_LOG_FORMAT_START(W), esp_log_timestamp(), BLE_MESH_LIB_TRACE_TAG); + esp_log_writev(ESP_LOG_WARN, BLE_MESH_LIB_TRACE_TAG, format, args); + esp_log_write(ESP_LOG_WARN, BLE_MESH_LIB_TRACE_TAG, BLE_MESH_LOG_FORMAT_END); + va_end(args); + } +#endif +} + +void bt_mesh_lib_log_info(const char *format, ...) +{ +#if (CONFIG_BLE_MESH_NO_LOG ||\ + /* Disable log output when compressed logging + * is enabled but INFO logs are not preserved */\ + (CONFIG_BLE_MESH_STACK_INFO_LOG_COMPRESSION &&\ + !CONFIG_BLE_MESH_STACK_INFO_LOG_PRESERVE)) + return; +#else + if ((BLE_MESH_LOG_LEVEL >= BLE_MESH_LOG_LEVEL_INFO) && + BLE_MESH_LOG_LEVEL_CHECK(BLE_MESH, INFO)) { + va_list args = {0}; + va_start(args, format); + esp_log_write(ESP_LOG_INFO, BLE_MESH_LIB_TRACE_TAG, BLE_MESH_LOG_FORMAT_START(I), esp_log_timestamp(), BLE_MESH_LIB_TRACE_TAG); + esp_log_writev(ESP_LOG_INFO, BLE_MESH_LIB_TRACE_TAG, format, args); + esp_log_write(ESP_LOG_INFO, BLE_MESH_LIB_TRACE_TAG, BLE_MESH_LOG_FORMAT_END); + va_end(args); + } +#endif +} + +void bt_mesh_lib_log_debug(const char *format, ...) +{ +#if (CONFIG_BLE_MESH_NO_LOG ||\ + /* Disable log output when compressed logging + * is enabled but DEBUG logs are not preserved */\ + (CONFIG_BLE_MESH_STACK_DEBUG_LOG_COMPRESSION &&\ + !CONFIG_BLE_MESH_STACK_DEBUG_LOG_PRESERVE)) + return; +#else + if ((BLE_MESH_LOG_LEVEL >= BLE_MESH_LOG_LEVEL_DEBUG) && + BLE_MESH_LOG_LEVEL_CHECK(BLE_MESH, DEBUG)) { + va_list args = {0}; + va_start(args, format); + esp_log_write(ESP_LOG_DEBUG, BLE_MESH_LIB_TRACE_TAG, BLE_MESH_LOG_FORMAT_START(D), esp_log_timestamp(), BLE_MESH_LIB_TRACE_TAG); + esp_log_writev(ESP_LOG_DEBUG, BLE_MESH_LIB_TRACE_TAG, format, args); + esp_log_write(ESP_LOG_DEBUG, BLE_MESH_LIB_TRACE_TAG, BLE_MESH_LOG_FORMAT_END); + va_end(args); + } +#endif +} + +static bt_mesh_lib_ext_log_env_t bt_mesh_ext_log_env = { + .error = bt_mesh_lib_log_error, + .warn = bt_mesh_lib_log_warn, + .info = bt_mesh_lib_log_info, + .debug = bt_mesh_lib_log_debug, +}; + +int bt_mesh_ext_log_init(void) +{ + return bt_mesh_lib_log_env_init(&bt_mesh_ext_log_env, + sizeof(bt_mesh_lib_ext_log_env_t)); +} + int bt_mesh_v11_ext_init(void) { return bt_mesh_v11_init(&bt_mesh_ext_cfg, sizeof(bt_mesh_ext_cfg), diff --git a/components/bt/esp_ble_mesh/lib/include/mesh_v1.1/utils.h b/components/bt/esp_ble_mesh/lib/include/mesh_v1.1/utils.h index d8e80b196f..977434df55 100644 --- a/components/bt/esp_ble_mesh/lib/include/mesh_v1.1/utils.h +++ b/components/bt/esp_ble_mesh/lib/include/mesh_v1.1/utils.h @@ -24,6 +24,8 @@ extern "C" { int bt_mesh_v11_init(const void *cfg, size_t cfg_size, const void *func, size_t func_size); +int bt_mesh_lib_log_env_init(void *log_env, size_t log_env_size); + int bt_mesh_v11_deinit(void); #define BLE_MESH_TAG_SEND_SEGMENTED BIT(0) From a027b8cccb4e0a6321e81183f24273dae8ffcacf Mon Sep 17 00:00:00 2001 From: luoxu Date: Wed, 12 Nov 2025 16:45:10 +0800 Subject: [PATCH 2/2] feat(ble_mesh): update mesh lib to a4262f4214 --- components/bt/esp_ble_mesh/lib/lib | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/components/bt/esp_ble_mesh/lib/lib b/components/bt/esp_ble_mesh/lib/lib index d9fe7de9a9..6997e718f6 160000 --- a/components/bt/esp_ble_mesh/lib/lib +++ b/components/bt/esp_ble_mesh/lib/lib @@ -1 +1 @@ -Subproject commit d9fe7de9a9eb2a4e4c51172b9c303f9d800706fa +Subproject commit 6997e718f6bd8bf170f53b9d76c72751636c62ea