@@ -4006,8 +4006,6 @@ void bt_mesh_ext_mbt_server_cb_evt_to_btc(uint8_t event, void *model, void *ctx)
40064006}
40074007
40084008typedef 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
41744172static 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+
49665072int bt_mesh_v11_ext_init (void )
49675073{
49685074 return bt_mesh_v11_init (& bt_mesh_ext_cfg , sizeof (bt_mesh_ext_cfg ),
0 commit comments