Skip to content

Commit a365e79

Browse files
committed
Merge branch 'feat/ble_mesh_lib_log_output_opt' into 'master'
feat(ble_mesh): add ext log initialization functions Closes BLERP-2336 See merge request espressif/esp-idf!42926
2 parents 9ee468a + a027b8c commit a365e79

File tree

4 files changed

+121
-6
lines changed

4 files changed

+121
-6
lines changed

components/bt/esp_ble_mesh/core/main.c

Lines changed: 8 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@
22

33
/*
44
* SPDX-FileCopyrightText: 2017 Intel Corporation
5-
* SPDX-FileContributor: 2018-2024 Espressif Systems (Shanghai) CO LTD
5+
* SPDX-FileContributor: 2018-2025 Espressif Systems (Shanghai) CO LTD
66
*
77
* SPDX-License-Identifier: Apache-2.0
88
*/
@@ -450,6 +450,13 @@ int bt_mesh_init(const struct bt_mesh_prov *prov,
450450
}
451451

452452
#if CONFIG_BLE_MESH_V11_SUPPORT
453+
extern int bt_mesh_ext_log_init(void);
454+
err = bt_mesh_ext_log_init();
455+
if (err) {
456+
BT_ERR("Bluetooth Mesh lib log init failed, err %d", err);
457+
return err;
458+
}
459+
453460
extern int bt_mesh_v11_ext_init(void);
454461
err = bt_mesh_v11_ext_init();
455462
if (err) {

components/bt/esp_ble_mesh/lib/ext.c

Lines changed: 110 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -4006,8 +4006,6 @@ void bt_mesh_ext_mbt_server_cb_evt_to_btc(uint8_t event, void *model, void *ctx)
40064006
}
40074007

40084008
typedef struct {
4009-
uint64_t config_ble_mesh_stack_trace_level : 3;
4010-
40114009
uint64_t config_ble_mesh_use_ble_50: 1;
40124010
uint64_t config_ble_mesh_use_duplicate_scan : 1;
40134011
uint64_t config_ble_mesh_pb_adv : 1;
@@ -4172,8 +4170,6 @@ typedef struct {
41724170
} bt_mesh_ext_config_t;
41734171

41744172
static const bt_mesh_ext_config_t bt_mesh_ext_cfg = {
4175-
.config_ble_mesh_stack_trace_level = BLE_MESH_LOG_LEVEL,
4176-
41774173
.config_ble_mesh_use_ble_50 = IS_ENABLED(CONFIG_BLE_MESH_USE_BLE_50),
41784174
.config_ble_mesh_use_duplicate_scan = IS_ENABLED(CONFIG_BLE_MESH_USE_DUPLICATE_SCAN),
41794175
.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 = {
49634959
/* CONFIG_BLE_MESH_MBT_SRV */
49644960
};
49654961

4962+
#define BLE_MESH_LIB_TRACE_TAG "BLE_MESH(lib)"
4963+
#define BLE_MESH_LOG_FORMAT_START(level) LOG_COLOR_ ## level #level " (%" PRIu32 ") %s: "
4964+
#define BLE_MESH_LOG_FORMAT_END LOG_RESET_COLOR "\n"
4965+
4966+
typedef void (*logger_func_t)(const char *format, ...);
4967+
4968+
typedef struct {
4969+
logger_func_t error;
4970+
logger_func_t warn;
4971+
logger_func_t info;
4972+
logger_func_t debug;
4973+
} bt_mesh_lib_ext_log_env_t;
4974+
4975+
void bt_mesh_lib_log_error(const char *format, ...)
4976+
{
4977+
#if (CONFIG_BLE_MESH_NO_LOG ||\
4978+
/* Disable log output when compressed logging
4979+
* is enabled but ERR logs are not preserved */\
4980+
(CONFIG_BLE_MESH_STACK_ERR_LOG_COMPRESSION &&\
4981+
!CONFIG_BLE_MESH_STACK_ERR_LOG_PRESERVE))
4982+
return;
4983+
#else
4984+
if ((BLE_MESH_LOG_LEVEL >= BLE_MESH_LOG_LEVEL_ERROR) &&
4985+
BLE_MESH_LOG_LEVEL_CHECK(BLE_MESH, ERROR)) {
4986+
va_list args = {0};
4987+
va_start(args, format);
4988+
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);
4989+
esp_log_writev(ESP_LOG_ERROR, BLE_MESH_LIB_TRACE_TAG, format, args);
4990+
esp_log_write(ESP_LOG_ERROR, BLE_MESH_LIB_TRACE_TAG, BLE_MESH_LOG_FORMAT_END);
4991+
va_end(args);
4992+
}
4993+
#endif
4994+
}
4995+
4996+
void bt_mesh_lib_log_warn(const char *format, ...)
4997+
{
4998+
#if (CONFIG_BLE_MESH_NO_LOG ||\
4999+
/* Disable log output when compressed logging
5000+
* is enabled but WARN logs are not preserved */\
5001+
(CONFIG_BLE_MESH_STACK_WARN_LOG_COMPRESSION &&\
5002+
!CONFIG_BLE_MESH_STACK_WARN_LOG_PRESERVE))
5003+
return;
5004+
#else
5005+
if ((BLE_MESH_LOG_LEVEL >= BLE_MESH_LOG_LEVEL_WARN) &&
5006+
BLE_MESH_LOG_LEVEL_CHECK(BLE_MESH, WARN)) {
5007+
va_list args = {0};
5008+
va_start(args, format);
5009+
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);
5010+
esp_log_writev(ESP_LOG_WARN, BLE_MESH_LIB_TRACE_TAG, format, args);
5011+
esp_log_write(ESP_LOG_WARN, BLE_MESH_LIB_TRACE_TAG, BLE_MESH_LOG_FORMAT_END);
5012+
va_end(args);
5013+
}
5014+
#endif
5015+
}
5016+
5017+
void bt_mesh_lib_log_info(const char *format, ...)
5018+
{
5019+
#if (CONFIG_BLE_MESH_NO_LOG ||\
5020+
/* Disable log output when compressed logging
5021+
* is enabled but INFO logs are not preserved */\
5022+
(CONFIG_BLE_MESH_STACK_INFO_LOG_COMPRESSION &&\
5023+
!CONFIG_BLE_MESH_STACK_INFO_LOG_PRESERVE))
5024+
return;
5025+
#else
5026+
if ((BLE_MESH_LOG_LEVEL >= BLE_MESH_LOG_LEVEL_INFO) &&
5027+
BLE_MESH_LOG_LEVEL_CHECK(BLE_MESH, INFO)) {
5028+
va_list args = {0};
5029+
va_start(args, format);
5030+
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);
5031+
esp_log_writev(ESP_LOG_INFO, BLE_MESH_LIB_TRACE_TAG, format, args);
5032+
esp_log_write(ESP_LOG_INFO, BLE_MESH_LIB_TRACE_TAG, BLE_MESH_LOG_FORMAT_END);
5033+
va_end(args);
5034+
}
5035+
#endif
5036+
}
5037+
5038+
void bt_mesh_lib_log_debug(const char *format, ...)
5039+
{
5040+
#if (CONFIG_BLE_MESH_NO_LOG ||\
5041+
/* Disable log output when compressed logging
5042+
* is enabled but DEBUG logs are not preserved */\
5043+
(CONFIG_BLE_MESH_STACK_DEBUG_LOG_COMPRESSION &&\
5044+
!CONFIG_BLE_MESH_STACK_DEBUG_LOG_PRESERVE))
5045+
return;
5046+
#else
5047+
if ((BLE_MESH_LOG_LEVEL >= BLE_MESH_LOG_LEVEL_DEBUG) &&
5048+
BLE_MESH_LOG_LEVEL_CHECK(BLE_MESH, DEBUG)) {
5049+
va_list args = {0};
5050+
va_start(args, format);
5051+
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);
5052+
esp_log_writev(ESP_LOG_DEBUG, BLE_MESH_LIB_TRACE_TAG, format, args);
5053+
esp_log_write(ESP_LOG_DEBUG, BLE_MESH_LIB_TRACE_TAG, BLE_MESH_LOG_FORMAT_END);
5054+
va_end(args);
5055+
}
5056+
#endif
5057+
}
5058+
5059+
static bt_mesh_lib_ext_log_env_t bt_mesh_ext_log_env = {
5060+
.error = bt_mesh_lib_log_error,
5061+
.warn = bt_mesh_lib_log_warn,
5062+
.info = bt_mesh_lib_log_info,
5063+
.debug = bt_mesh_lib_log_debug,
5064+
};
5065+
5066+
int bt_mesh_ext_log_init(void)
5067+
{
5068+
return bt_mesh_lib_log_env_init(&bt_mesh_ext_log_env,
5069+
sizeof(bt_mesh_lib_ext_log_env_t));
5070+
}
5071+
49665072
int bt_mesh_v11_ext_init(void)
49675073
{
49685074
return bt_mesh_v11_init(&bt_mesh_ext_cfg, sizeof(bt_mesh_ext_cfg),

components/bt/esp_ble_mesh/lib/include/mesh_v1.1/utils.h

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -24,6 +24,8 @@ extern "C" {
2424
int bt_mesh_v11_init(const void *cfg, size_t cfg_size,
2525
const void *func, size_t func_size);
2626

27+
int bt_mesh_lib_log_env_init(void *log_env, size_t log_env_size);
28+
2729
int bt_mesh_v11_deinit(void);
2830

2931
#define BLE_MESH_TAG_SEND_SEGMENTED BIT(0)

0 commit comments

Comments
 (0)