mesh_trace.h 6.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136
  1. /*
  2. * Copyright (c) 2017 Nordic Semiconductor ASA
  3. * Copyright (c) 2015-2016 Intel Corporation
  4. * Additional Copyright (c) 2018 Espressif Systems (Shanghai) PTE LTD
  5. *
  6. * SPDX-License-Identifier: Apache-2.0
  7. */
  8. #ifndef _BLE_MESH_TRACE_H_
  9. #define _BLE_MESH_TRACE_H_
  10. #include "esp_log.h"
  11. #include "mesh_util.h"
  12. #include "esp_rom_sys.h"
  13. #ifdef __cplusplus
  14. extern "C" {
  15. #endif
  16. /* Define common tracing for all */
  17. #ifndef BLE_MESH_LOG_LEVEL_ERROR
  18. #define BLE_MESH_LOG_LEVEL_ERROR 1
  19. #endif /* BLE_MESH_LOG_LEVEL_ERROR */
  20. #ifndef BLE_MESH_LOG_LEVEL_WARN
  21. #define BLE_MESH_LOG_LEVEL_WARN 2
  22. #endif /* BLE_MESH_LOG_LEVEL_WARN */
  23. #ifndef BLE_MESH_LOG_LEVEL_INFO
  24. #define BLE_MESH_LOG_LEVEL_INFO 3
  25. #endif /* BLE_MESH_LOG_LEVEL_INFO */
  26. #ifndef BLE_MESH_LOG_LEVEL_DEBUG
  27. #define BLE_MESH_LOG_LEVEL_DEBUG 4
  28. #endif /* BLE_MESH_LOG_LEVEL_DEBUG */
  29. #ifndef BLE_MESH_LOG_LEVEL_VERBOSE
  30. #define BLE_MESH_LOG_LEVEL_VERBOSE 5
  31. #endif /*BLE_MESH_LOG_LEVEL_VERBOSE */
  32. #ifdef CONFIG_BLE_MESH_STACK_TRACE_LEVEL
  33. #define BLE_MESH_LOG_LEVEL CONFIG_BLE_MESH_STACK_TRACE_LEVEL
  34. #else
  35. #define BLE_MESH_LOG_LEVEL BLE_MESH_LOG_LEVEL_WARN
  36. #endif
  37. #ifdef CONFIG_BLE_MESH_NET_BUF_TRACE_LEVEL
  38. #define BLE_MESH_NET_BUF_LOG_LEVEL CONFIG_BLE_MESH_NET_BUF_TRACE_LEVEL
  39. #else
  40. #define BLE_MESH_NET_BUF_LOG_LEVEL BLE_MESH_LOG_LEVEL_WARN
  41. #endif
  42. #define BLE_MESH_TRACE_TAG "BLE_MESH"
  43. #if (LOG_LOCAL_LEVEL >= 4)
  44. #define BLE_MESH_LOG_LOCAL_LEVEL_MAPPING (LOG_LOCAL_LEVEL + 1)
  45. #else
  46. #define BLE_MESH_LOG_LOCAL_LEVEL_MAPPING LOG_LOCAL_LEVEL
  47. #endif
  48. #define BLE_MESH_LOG_LEVEL_CHECK(LAYER, LEVEL) (MAX(LAYER##_LOG_LEVEL, BLE_MESH_LOG_LOCAL_LEVEL_MAPPING) >= BLE_MESH_LOG_LEVEL_##LEVEL)
  49. #define BLE_MESH_PRINT_E(tag, format, ...) {esp_log_write(ESP_LOG_ERROR, tag, LOG_FORMAT(E, format), esp_log_timestamp(), tag, ##__VA_ARGS__); }
  50. #define BLE_MESH_PRINT_W(tag, format, ...) {esp_log_write(ESP_LOG_WARN, tag, LOG_FORMAT(W, format), esp_log_timestamp(), tag, ##__VA_ARGS__); }
  51. #define BLE_MESH_PRINT_I(tag, format, ...) {esp_log_write(ESP_LOG_INFO, tag, LOG_FORMAT(I, format), esp_log_timestamp(), tag, ##__VA_ARGS__); }
  52. #define BLE_MESH_PRINT_D(tag, format, ...) {esp_log_write(ESP_LOG_DEBUG, tag, LOG_FORMAT(D, format), esp_log_timestamp(), tag, ##__VA_ARGS__); }
  53. #define BLE_MESH_PRINT_V(tag, format, ...) {esp_log_write(ESP_LOG_VERBOSE, tag, LOG_FORMAT(V, format), esp_log_timestamp(), tag, ##__VA_ARGS__); }
  54. #define printk esp_rom_printf
  55. #define _STRINGIFY(x) #x
  56. #define STRINGIFY(s) _STRINGIFY(s)
  57. #ifndef __ASSERT
  58. #define __ASSERT(test, fmt, ...) \
  59. do { \
  60. if (!(test)) { \
  61. printk("ASSERTION FAIL [%s] @ %s:%d:\n\t", \
  62. _STRINGIFY(test), \
  63. __FILE__, \
  64. __LINE__); \
  65. printk(fmt, ##__VA_ARGS__); \
  66. for (;;); \
  67. } \
  68. } while ((0))
  69. #endif
  70. #ifndef __ASSERT_NO_MSG
  71. #define __ASSERT_NO_MSG(x) do { if (!(x)) BLE_MESH_PRINT_E(BLE_MESH_TRACE_TAG, "error %s %u", __FILE__, __LINE__); } while (0)
  72. #endif
  73. #if !CONFIG_BLE_MESH_NO_LOG
  74. #define BT_ERR(fmt, args...) do {if ((BLE_MESH_LOG_LEVEL >= BLE_MESH_LOG_LEVEL_ERROR) && BLE_MESH_LOG_LEVEL_CHECK(BLE_MESH, ERROR)) BLE_MESH_PRINT_E(BLE_MESH_TRACE_TAG, fmt, ## args);} while(0)
  75. #define BT_WARN(fmt, args...) do {if ((BLE_MESH_LOG_LEVEL >= BLE_MESH_LOG_LEVEL_WARN) && BLE_MESH_LOG_LEVEL_CHECK(BLE_MESH, WARN)) BLE_MESH_PRINT_W(BLE_MESH_TRACE_TAG, fmt, ## args);} while(0)
  76. #define BT_INFO(fmt, args...) do {if ((BLE_MESH_LOG_LEVEL >= BLE_MESH_LOG_LEVEL_INFO) && BLE_MESH_LOG_LEVEL_CHECK(BLE_MESH, INFO)) BLE_MESH_PRINT_I(BLE_MESH_TRACE_TAG, fmt, ## args);} while(0)
  77. #define BT_DBG(fmt, args...) do {if ((BLE_MESH_LOG_LEVEL >= BLE_MESH_LOG_LEVEL_DEBUG) && BLE_MESH_LOG_LEVEL_CHECK(BLE_MESH, DEBUG)) BLE_MESH_PRINT_D(BLE_MESH_TRACE_TAG, fmt, ## args);} while(0)
  78. #else
  79. #define BT_ERR(fmt, args...)
  80. #define BT_WARN(fmt, args...)
  81. #define BT_INFO(fmt, args...)
  82. #define BT_DBG(fmt, args...)
  83. #endif
  84. #if defined(CONFIG_BLE_MESH_NET_BUF_LOG) && (!CONFIG_BLE_MESH_NO_LOG)
  85. #define NET_BUF_ERR(fmt, args...) do {if ((BLE_MESH_NET_BUF_LOG_LEVEL >= BLE_MESH_LOG_LEVEL_ERROR) && BLE_MESH_LOG_LEVEL_CHECK(BLE_MESH_NET_BUF, ERROR)) BLE_MESH_PRINT_E(BLE_MESH_TRACE_TAG, fmt, ## args);} while(0)
  86. #define NET_BUF_WARN(fmt, args...) do {if ((BLE_MESH_NET_BUF_LOG_LEVEL >= BLE_MESH_LOG_LEVEL_WARN) && BLE_MESH_LOG_LEVEL_CHECK(BLE_MESH_NET_BUF, WARN)) BLE_MESH_PRINT_W(BLE_MESH_TRACE_TAG, fmt, ## args);} while(0)
  87. #define NET_BUF_INFO(fmt, args...) do {if ((BLE_MESH_NET_BUF_LOG_LEVEL >= BLE_MESH_LOG_LEVEL_INFO) && BLE_MESH_LOG_LEVEL_CHECK(BLE_MESH_NET_BUF, INFO)) BLE_MESH_PRINT_I(BLE_MESH_TRACE_TAG, fmt, ## args);} while(0)
  88. #define NET_BUF_DBG(fmt, args...) do {if ((BLE_MESH_NET_BUF_LOG_LEVEL >= BLE_MESH_LOG_LEVEL_DEBUG) && BLE_MESH_LOG_LEVEL_CHECK(BLE_MESH_NET_BUF, DEBUG)) BLE_MESH_PRINT_D(BLE_MESH_TRACE_TAG, fmt, ## args);} while(0)
  89. #define NET_BUF_ASSERT(cond) __ASSERT_NO_MSG(cond)
  90. #else
  91. #define NET_BUF_ERR(fmt, args...)
  92. #define NET_BUF_WARN(fmt, args...)
  93. #define NET_BUF_INFO(fmt, args...)
  94. #define NET_BUF_DBG(fmt, args...)
  95. #define NET_BUF_ASSERT(cond)
  96. #endif
  97. #if defined(CONFIG_BLE_MESH_NET_BUF_SIMPLE_LOG) && (!CONFIG_BLE_MESH_NO_LOG)
  98. #define NET_BUF_SIMPLE_ERR(fmt, args...) do {if ((BLE_MESH_NET_BUF_LOG_LEVEL >= BLE_MESH_LOG_LEVEL_ERROR) && BLE_MESH_LOG_LEVEL_CHECK(BLE_MESH_NET_BUF, ERROR)) BLE_MESH_PRINT_E(BLE_MESH_TRACE_TAG, fmt, ## args);} while(0)
  99. #define NET_BUF_SIMPLE_WARN(fmt, args...) do {if ((BLE_MESH_NET_BUF_LOG_LEVEL >= BLE_MESH_LOG_LEVEL_WARN) && BLE_MESH_LOG_LEVEL_CHECK(BLE_MESH_NET_BUF, WARN)) BLE_MESH_PRINT_W(BLE_MESH_TRACE_TAG, fmt, ## args);} while(0)
  100. #define NET_BUF_SIMPLE_INFO(fmt, args...) do {if ((BLE_MESH_NET_BUF_LOG_LEVEL >= BLE_MESH_LOG_LEVEL_INFO) && BLE_MESH_LOG_LEVEL_CHECK(BLE_MESH_NET_BUF, INFO)) BLE_MESH_PRINT_I(BLE_MESH_TRACE_TAG, fmt, ## args);} while(0)
  101. #define NET_BUF_SIMPLE_DBG(fmt, args...) do {if ((BLE_MESH_NET_BUF_LOG_LEVEL >= BLE_MESH_LOG_LEVEL_DEBUG) && BLE_MESH_LOG_LEVEL_CHECK(BLE_MESH_NET_BUF, DEBUG)) BLE_MESH_PRINT_D(BLE_MESH_TRACE_TAG, fmt, ## args);} while(0)
  102. #define NET_BUF_SIMPLE_ASSERT(cond) __ASSERT_NO_MSG(cond)
  103. #else
  104. #define NET_BUF_SIMPLE_ERR(fmt, args...)
  105. #define NET_BUF_SIMPLE_WARN(fmt, args...)
  106. #define NET_BUF_SIMPLE_INFO(fmt, args...)
  107. #define NET_BUF_SIMPLE_DBG(fmt, args...)
  108. #define NET_BUF_SIMPLE_ASSERT(cond)
  109. #endif
  110. #ifdef __cplusplus
  111. }
  112. #endif
  113. #endif /* _BLE_MESH_TRACE_H_ */