1. Add an API to set Provisioner static oob value 2. Add an API to deinit BLE Mesh stack 3. Add an API to set Provisioner unicast address 4. Add an API to provision devices with fixed address 5. Add an API to store node composition data 6. Add an API to get node with device uuid 7. Add an API to get node with unicast address 8. Add an API to delete node with device uuid 9. Add an API to delete node with unicast address 10. Add an API for Provisioner to update local AppKey 11. Add an API for Provisioner to update local NetKey 12. Support Provisioner persistent functionality 13. Fix Provisioner entering IV Update procedure 14. Fix an issue which may cause client failing to send msg 15. Use bt_mesh.flags to indicate device role 16. Remove several useless macros 17. Callback RSSI of received mesh provisioning packets 18. Modify the Provisioner disable function 19. Change some log level from debug to info 20. Add parameters to Provisioner bind AppKey completion event 21. Fix node ignoring relay messages issue 22. Support using a specific partition for BLE Mesh 23. Fix compile warning when proxy related macros are disabled 24. Clean up BLE Mesh stack included header files 25. NULL can be input if client message needs no parameters 26. Fix compile warning when BT log is disabled 27. Initilize BLE Mesh stack local variables 28. Support using PSRAM for BLE Mesh mutex, queue and task 29. Add a menuconfig option to enable using memory from PSRAM 30. Clean up sdkconfig.defaults of BLE Mesh examples
130 lines
6 KiB
C
130 lines
6 KiB
C
/*
|
|
* Copyright (c) 2017 Nordic Semiconductor ASA
|
|
* Copyright (c) 2015-2016 Intel Corporation
|
|
* Additional Copyright (c) 2018 Espressif Systems (Shanghai) PTE LTD
|
|
*
|
|
* SPDX-License-Identifier: Apache-2.0
|
|
*/
|
|
|
|
#ifndef _BLE_MESH_TRACE_H_
|
|
#define _BLE_MESH_TRACE_H_
|
|
|
|
#include "esp_log.h"
|
|
|
|
/* Define common tracing for all */
|
|
#ifndef LOG_LEVEL_ERROR
|
|
#define LOG_LEVEL_ERROR 1
|
|
#endif /* LOG_LEVEL_ERROR */
|
|
|
|
#ifndef LOG_LEVEL_WARN
|
|
#define LOG_LEVEL_WARN 2
|
|
#endif /* LOG_LEVEL_WARN */
|
|
|
|
#ifndef LOG_LEVEL_INFO
|
|
#define LOG_LEVEL_INFO 3
|
|
#endif /* LOG_LEVEL_INFO */
|
|
|
|
#ifndef LOG_LEVEL_DEBUG
|
|
#define LOG_LEVEL_DEBUG 4
|
|
#endif /* LOG_LEVEL_DEBUG */
|
|
|
|
#ifndef LOG_LEVEL_VERBOSE
|
|
#define LOG_LEVEL_VERBOSE 5
|
|
#endif /*LOG_LEVEL_VERBOSE */
|
|
|
|
#ifdef CONFIG_BLE_MESH_STACK_TRACE_LEVEL
|
|
#define MESH_LOG_LEVEL CONFIG_BLE_MESH_STACK_TRACE_LEVEL
|
|
#else
|
|
#define MESH_LOG_LEVEL LOG_LEVEL_WARN
|
|
#endif
|
|
|
|
#ifdef CONFIG_BLE_MESH_NET_BUF_TRACE_LEVEL
|
|
#define NET_BUF_LOG_LEVEL CONFIG_BLE_MESH_NET_BUF_TRACE_LEVEL
|
|
#else
|
|
#define NET_BUF_LOG_LEVEL LOG_LEVEL_WARN
|
|
#endif
|
|
|
|
#define MESH_TRACE_TAG "BLE_MESH"
|
|
|
|
#if (LOG_LOCAL_LEVEL >= 4)
|
|
#define BLE_MESH_LOG_LOCAL_LEVEL_MAPPING (LOG_LOCAL_LEVEL + 1)
|
|
#else
|
|
#define BLE_MESH_LOG_LOCAL_LEVEL_MAPPING LOG_LOCAL_LEVEL
|
|
#endif
|
|
|
|
#ifndef MAX
|
|
#define MAX(a, b) ((a) > (b) ? (a) : (b))
|
|
#endif /* MAX(a, b) */
|
|
|
|
#define BLE_MESH_LOG_LEVEL_CHECK(LAYER, LEVEL) (MAX(LAYER##_LOG_LEVEL, BLE_MESH_LOG_LOCAL_LEVEL_MAPPING) >= LOG_LEVEL_##LEVEL)
|
|
|
|
#define BLE_MESH_PRINT_E(tag, format, ...) {esp_log_write(ESP_LOG_ERROR, tag, LOG_FORMAT(E, format), esp_log_timestamp(), tag, ##__VA_ARGS__); }
|
|
#define BLE_MESH_PRINT_W(tag, format, ...) {esp_log_write(ESP_LOG_WARN, tag, LOG_FORMAT(W, format), esp_log_timestamp(), tag, ##__VA_ARGS__); }
|
|
#define BLE_MESH_PRINT_I(tag, format, ...) {esp_log_write(ESP_LOG_INFO, tag, LOG_FORMAT(I, format), esp_log_timestamp(), tag, ##__VA_ARGS__); }
|
|
#define BLE_MESH_PRINT_D(tag, format, ...) {esp_log_write(ESP_LOG_DEBUG, tag, LOG_FORMAT(D, format), esp_log_timestamp(), tag, ##__VA_ARGS__); }
|
|
#define BLE_MESH_PRINT_V(tag, format, ...) {esp_log_write(ESP_LOG_VERBOSE, tag, LOG_FORMAT(V, format), esp_log_timestamp(), tag, ##__VA_ARGS__); }
|
|
|
|
#define printk ets_printf
|
|
|
|
#define _STRINGIFY(x) #x
|
|
#define STRINGIFY(s) _STRINGIFY(s)
|
|
|
|
#ifndef __ASSERT
|
|
#define __ASSERT(test, fmt, ...) \
|
|
do { \
|
|
if (!(test)) { \
|
|
printk("ASSERTION FAIL [%s] @ %s:%d:\n\t", \
|
|
_STRINGIFY(test), \
|
|
__FILE__, \
|
|
__LINE__); \
|
|
printk(fmt, ##__VA_ARGS__); \
|
|
for (;;); \
|
|
} \
|
|
} while ((0))
|
|
#endif
|
|
|
|
#ifndef __ASSERT_NO_MSG
|
|
#define __ASSERT_NO_MSG(x) do { if (!(x)) BLE_MESH_PRINT_E(MESH_TRACE_TAG, "error %s %u", __FILE__, __LINE__); } while (0)
|
|
#endif
|
|
|
|
#if !CONFIG_BLE_MESH_NO_LOG
|
|
#define BT_ERR(fmt, args...) do {if ((MESH_LOG_LEVEL >= LOG_LEVEL_ERROR) && BLE_MESH_LOG_LEVEL_CHECK(MESH, ERROR)) BLE_MESH_PRINT_E(MESH_TRACE_TAG, fmt, ## args);} while(0)
|
|
#define BT_WARN(fmt, args...) do {if ((MESH_LOG_LEVEL >= LOG_LEVEL_WARN) && BLE_MESH_LOG_LEVEL_CHECK(MESH, WARN)) BLE_MESH_PRINT_W(MESH_TRACE_TAG, fmt, ## args);} while(0)
|
|
#define BT_INFO(fmt, args...) do {if ((MESH_LOG_LEVEL >= LOG_LEVEL_INFO) && BLE_MESH_LOG_LEVEL_CHECK(MESH, INFO)) BLE_MESH_PRINT_I(MESH_TRACE_TAG, fmt, ## args);} while(0)
|
|
#define BT_DBG(fmt, args...) do {if ((MESH_LOG_LEVEL >= LOG_LEVEL_DEBUG) && BLE_MESH_LOG_LEVEL_CHECK(MESH, DEBUG)) BLE_MESH_PRINT_D(MESH_TRACE_TAG, fmt, ## args);} while(0)
|
|
#else
|
|
#define BT_ERR(fmt, args...)
|
|
#define BT_WARN(fmt, args...)
|
|
#define BT_INFO(fmt, args...)
|
|
#define BT_DBG(fmt, args...)
|
|
#endif
|
|
|
|
#if defined(CONFIG_BLE_MESH_NET_BUF_LOG) && (!CONFIG_BLE_MESH_NO_LOG)
|
|
#define NET_BUF_ERR(fmt, args...) do {if ((NET_BUF_LOG_LEVEL >= LOG_LEVEL_ERROR) && BLE_MESH_LOG_LEVEL_CHECK(NET_BUF, ERROR)) BLE_MESH_PRINT_E(MESH_TRACE_TAG, fmt, ## args);} while(0)
|
|
#define NET_BUF_WARN(fmt, args...) do {if ((NET_BUF_LOG_LEVEL >= LOG_LEVEL_WARN) && BLE_MESH_LOG_LEVEL_CHECK(NET_BUF, WARN)) BLE_MESH_PRINT_W(MESH_TRACE_TAG, fmt, ## args);} while(0)
|
|
#define NET_BUF_INFO(fmt, args...) do {if ((NET_BUF_LOG_LEVEL >= LOG_LEVEL_INFO) && BLE_MESH_LOG_LEVEL_CHECK(NET_BUF, INFO)) BLE_MESH_PRINT_I(MESH_TRACE_TAG, fmt, ## args);} while(0)
|
|
#define NET_BUF_DBG(fmt, args...) do {if ((NET_BUF_LOG_LEVEL >= LOG_LEVEL_DEBUG) && BLE_MESH_LOG_LEVEL_CHECK(NET_BUF, DEBUG)) BLE_MESH_PRINT_D(MESH_TRACE_TAG, fmt, ## args);} while(0)
|
|
#define NET_BUF_ASSERT(cond) __ASSERT_NO_MSG(cond)
|
|
#else
|
|
#define NET_BUF_ERR(fmt, args...)
|
|
#define NET_BUF_WARN(fmt, args...)
|
|
#define NET_BUF_INFO(fmt, args...)
|
|
#define NET_BUF_DBG(fmt, args...)
|
|
#define NET_BUF_ASSERT(cond)
|
|
#endif
|
|
|
|
#if defined(CONFIG_BLE_MESH_NET_BUF_SIMPLE_LOG) && (!CONFIG_BLE_MESH_NO_LOG)
|
|
#define NET_BUF_SIMPLE_ERR(fmt, args...) do {if ((NET_BUF_LOG_LEVEL >= LOG_LEVEL_ERROR) && BLE_MESH_LOG_LEVEL_CHECK(NET_BUF, ERROR)) BLE_MESH_PRINT_E(MESH_TRACE_TAG, fmt, ## args);} while(0)
|
|
#define NET_BUF_SIMPLE_WARN(fmt, args...) do {if ((NET_BUF_LOG_LEVEL >= LOG_LEVEL_WARN) && BLE_MESH_LOG_LEVEL_CHECK(NET_BUF, WARN)) BLE_MESH_PRINT_W(MESH_TRACE_TAG, fmt, ## args);} while(0)
|
|
#define NET_BUF_SIMPLE_INFO(fmt, args...) do {if ((NET_BUF_LOG_LEVEL >= LOG_LEVEL_INFO) && BLE_MESH_LOG_LEVEL_CHECK(NET_BUF, INFO)) BLE_MESH_PRINT_I(MESH_TRACE_TAG, fmt, ## args);} while(0)
|
|
#define NET_BUF_SIMPLE_DBG(fmt, args...) do {if ((NET_BUF_LOG_LEVEL >= LOG_LEVEL_DEBUG) && BLE_MESH_LOG_LEVEL_CHECK(NET_BUF, DEBUG)) BLE_MESH_PRINT_D(MESH_TRACE_TAG, fmt, ## args);} while(0)
|
|
#define NET_BUF_SIMPLE_ASSERT(cond) __ASSERT_NO_MSG(cond)
|
|
#else
|
|
#define NET_BUF_SIMPLE_ERR(fmt, args...)
|
|
#define NET_BUF_SIMPLE_WARN(fmt, args...)
|
|
#define NET_BUF_SIMPLE_INFO(fmt, args...)
|
|
#define NET_BUF_SIMPLE_DBG(fmt, args...)
|
|
#define NET_BUF_SIMPLE_ASSERT(cond)
|
|
#endif
|
|
|
|
#endif /* _BLE_MESH_TRACE_H_ */
|