11#define ESPHOME_DEBUG_ASSERT(expr) assert(expr)
13#define ESPHOME_DEBUG_ASSERT(expr) ((void) 0)
34#define ESPHOME_LOG_LEVEL_NONE 0
35#define ESPHOME_LOG_LEVEL_ERROR 1
36#define ESPHOME_LOG_LEVEL_WARN 2
37#define ESPHOME_LOG_LEVEL_INFO 3
38#define ESPHOME_LOG_LEVEL_CONFIG 4
39#define ESPHOME_LOG_LEVEL_DEBUG 5
40#define ESPHOME_LOG_LEVEL_VERBOSE 6
41#define ESPHOME_LOG_LEVEL_VERY_VERBOSE 7
43#ifndef ESPHOME_LOG_LEVEL
44#define ESPHOME_LOG_LEVEL ESPHOME_LOG_LEVEL_NONE
47#define ESPHOME_LOG_COLOR_BLACK "30"
48#define ESPHOME_LOG_COLOR_RED "31"
49#define ESPHOME_LOG_COLOR_GREEN "32"
50#define ESPHOME_LOG_COLOR_YELLOW "33"
51#define ESPHOME_LOG_COLOR_BLUE "34"
52#define ESPHOME_LOG_COLOR_MAGENTA "35"
53#define ESPHOME_LOG_COLOR_CYAN "36"
54#define ESPHOME_LOG_COLOR_GRAY "37"
55#define ESPHOME_LOG_COLOR_WHITE "38"
56#define ESPHOME_LOG_SECRET_BEGIN "\033[8m"
57#define ESPHOME_LOG_SECRET_END "\033[28m"
58#define LOG_SECRET(x) ESPHOME_LOG_SECRET_BEGIN x ESPHOME_LOG_SECRET_END
60#define ESPHOME_LOG_COLOR(COLOR) "\033[0;" COLOR "m"
61#define ESPHOME_LOG_BOLD(COLOR) "\033[1;" COLOR "m"
62#define ESPHOME_LOG_RESET_COLOR "\033[0m"
76#define ESPHOME_LOG_FORMAT(format) F(format)
78#define ESPHOME_LOG_FORMAT(format) format
81#if ESPHOME_LOG_LEVEL >= ESPHOME_LOG_LEVEL_VERY_VERBOSE
82#define esph_log_vv(tag, format, ...) \
83 ::esphome::esp_log_printf_(ESPHOME_LOG_LEVEL_VERY_VERBOSE, tag, __LINE__, ESPHOME_LOG_FORMAT(format), ##__VA_ARGS__)
85#define ESPHOME_LOG_HAS_VERY_VERBOSE
87#define esph_log_vv(tag, format, ...)
90#if ESPHOME_LOG_LEVEL >= ESPHOME_LOG_LEVEL_VERBOSE
91#define esph_log_v(tag, format, ...) \
92 ::esphome::esp_log_printf_(ESPHOME_LOG_LEVEL_VERBOSE, tag, __LINE__, ESPHOME_LOG_FORMAT(format), ##__VA_ARGS__)
94#define ESPHOME_LOG_HAS_VERBOSE
96#define esph_log_v(tag, format, ...)
99#if ESPHOME_LOG_LEVEL >= ESPHOME_LOG_LEVEL_DEBUG
100#define esph_log_d(tag, format, ...) \
101 ::esphome::esp_log_printf_(ESPHOME_LOG_LEVEL_DEBUG, tag, __LINE__, ESPHOME_LOG_FORMAT(format), ##__VA_ARGS__)
102#define esph_log_config(tag, format, ...) \
103 ::esphome::esp_log_printf_(ESPHOME_LOG_LEVEL_CONFIG, tag, __LINE__, ESPHOME_LOG_FORMAT(format), ##__VA_ARGS__)
105#define ESPHOME_LOG_HAS_DEBUG
106#define ESPHOME_LOG_HAS_CONFIG
108#define esph_log_d(tag, format, ...)
109#define esph_log_config(tag, format, ...)
112#if ESPHOME_LOG_LEVEL >= ESPHOME_LOG_LEVEL_INFO
113#define esph_log_i(tag, format, ...) \
114 ::esphome::esp_log_printf_(ESPHOME_LOG_LEVEL_INFO, tag, __LINE__, ESPHOME_LOG_FORMAT(format), ##__VA_ARGS__)
116#define ESPHOME_LOG_HAS_INFO
118#define esph_log_i(tag, format, ...)
121#if ESPHOME_LOG_LEVEL >= ESPHOME_LOG_LEVEL_WARN
122#define esph_log_w(tag, format, ...) \
123 ::esphome::esp_log_printf_(ESPHOME_LOG_LEVEL_WARN, tag, __LINE__, ESPHOME_LOG_FORMAT(format), ##__VA_ARGS__)
125#define ESPHOME_LOG_HAS_WARN
127#define esph_log_w(tag, format, ...)
130#if ESPHOME_LOG_LEVEL >= ESPHOME_LOG_LEVEL_ERROR
131#define esph_log_e(tag, format, ...) \
132 ::esphome::esp_log_printf_(ESPHOME_LOG_LEVEL_ERROR, tag, __LINE__, ESPHOME_LOG_FORMAT(format), ##__VA_ARGS__)
134#define ESPHOME_LOG_HAS_ERROR
136#define esph_log_e(tag, format, ...)
155#define ESP_LOGE(tag, ...) esph_log_e(tag, __VA_ARGS__)
156#define ESP_LOGW(tag, ...) esph_log_w(tag, __VA_ARGS__)
157#define ESP_LOGI(tag, ...) esph_log_i(tag, __VA_ARGS__)
158#define ESP_LOGD(tag, ...) esph_log_d(tag, __VA_ARGS__)
159#define ESP_LOGCONFIG(tag, ...) esph_log_config(tag, __VA_ARGS__)
160#define ESP_LOGV(tag, ...) esph_log_v(tag, __VA_ARGS__)
161#define ESP_LOGVV(tag, ...) esph_log_vv(tag, __VA_ARGS__)
165#define ESPHOME_LOG_HEX_(log_macro, tag, data, len, max_bytes, format, ...) \
167 char esph_log_hex_buf_[::esphome::format_hex_pretty_size(max_bytes)]; \
168 log_macro(tag, format, __VA_ARGS__ __VA_OPT__(, )::esphome::format_hex_pretty_to(esph_log_hex_buf_, data, len)); \
170#ifdef ESPHOME_LOG_HAS_DEBUG
171#define ESP_LOGD_HEX(tag, data, len, max_bytes, format, ...) \
172 ESPHOME_LOG_HEX_(ESP_LOGD, tag, data, len, max_bytes, format, __VA_ARGS__)
174#define ESP_LOGD_HEX(tag, data, len, max_bytes, format, ...) \
178#ifdef ESPHOME_LOG_HAS_VERBOSE
179#define ESP_LOGV_HEX(tag, data, len, max_bytes, format, ...) \
180 ESPHOME_LOG_HEX_(ESP_LOGV, tag, data, len, max_bytes, format, __VA_ARGS__)
182#define ESP_LOGV_HEX(tag, data, len, max_bytes, format, ...) \
186#ifdef ESPHOME_LOG_HAS_VERY_VERBOSE
187#define ESP_LOGVV_HEX(tag, data, len, max_bytes, format, ...) \
188 ESPHOME_LOG_HEX_(ESP_LOGVV, tag, data, len, max_bytes, format, __VA_ARGS__)
190#define ESP_LOGVV_HEX(tag, data, len, max_bytes, format, ...) \
195#define BYTE_TO_BINARY_PATTERN "%c%c%c%c%c%c%c%c"
196#define BYTE_TO_BINARY(byte) \
197 ((byte) & 0x80 ? '1' : '0'), ((byte) & 0x40 ? '1' : '0'), ((byte) & 0x20 ? '1' : '0'), ((byte) & 0x10 ? '1' : '0'), \
198 ((byte) & 0x08 ? '1' : '0'), ((byte) & 0x04 ? '1' : '0'), ((byte) & 0x02 ? '1' : '0'), \
199 ((byte) & 0x01 ? '1' : '0')
200#define YESNO(b) ((b) ? "YES" : "NO")
201#define ONOFF(b) ((b) ? "ON" : "OFF")
202#define TRUEFALSE(b) ((b) ? "TRUE" : "FALSE")
204#define ONOFFMAYBE(b) (((b).has_value()) ? ONOFF((b).value()) : "UNKNOWN")
213#define LOG_STR_ARG(s) ((PGM_P) (s))
215#define LOG_STR(s) (reinterpret_cast<const LogString *>(PSTR(s)))
216#define LOG_STR_LITERAL(s) LOG_STR_ARG(LOG_STR(s))
220#define LOG_STR(s) (reinterpret_cast<const LogString *>(s))
221#define LOG_STR_ARG(s) (reinterpret_cast<const char *>(s))
222#define LOG_STR_LITERAL(s) (s)
230#define ESPHOME_LOG_TAG(name, tag) static const char name[] PROGMEM = tag
232#define ESPHOME_LOG_TAG(name, tag) static constexpr const char *const name = tag
int HOT esp_idf_log_vprintf_(const char *format, va_list args)
void HOT esp_log_printf_(int level, const char *tag, int line, const char *format,...)
void HOT esp_log_vprintf_(int level, const char *tag, int line, const char *format, va_list args)