1
0
mirror of https://github.com/RIOT-OS/RIOT.git synced 2025-12-25 06:23:53 +01:00

cpu/esp32: map log outputs from SDK libraries

Log outputs generated by binary ESP32 SDK libraries are mapped to the ESP32's log module which supports colored and tagged log outpus. Tagged log outputs from SDK libraries are handled accordingly.
This commit is contained in:
Gunar Schorcht 2019-08-20 16:28:12 +02:00
parent 9a4cdc7e93
commit 1f940b0728
2 changed files with 53 additions and 47 deletions

View File

@ -86,6 +86,22 @@ uint32_t IRAM_ATTR esp_log_timestamp(void)
return system_get_time() / USEC_PER_MSEC;
}
#if MODULE_ESP_LOG_TAGGED
#define ESP_LOG_PREFIX(letter, tag) \
printf(LOG_COLOR_ ## letter #letter " (%d) [%s] ", \
system_get_time_ms(), tag)
#else
#define ESP_LOG_PREFIX(letter, tag) \
printf(LOG_COLOR_ ## letter "[%s] ", tag)
#endif
#if MODULE_ESP_LOG_COLOR
#define ESP_LOG_SUFFIX() printf(LOG_RESET_COLOR)
#else
#define ESP_LOG_SUFFIX()
#endif
/*
* provided by: /path/to/esp-idf/component/log/log.c
*/
@ -97,23 +113,16 @@ void IRAM_ATTR esp_log_write(esp_log_level_t level,
}
char _printf_buf[PRINTF_BUFSIZ];
const char* prefix = (strchr (format, ':') + 2);
char lc = 'U';
switch (level) {
case LOG_NONE : return;
case LOG_ERROR : lc = 'E'; break;
case LOG_WARNING: lc = 'W'; break;
case LOG_INFO : lc = 'I'; break;
case LOG_DEBUG : lc = 'D'; break;
case LOG_ALL : lc = 'V'; break;
case LOG_ERROR : ESP_LOG_PREFIX(E, tag); break;
case LOG_WARNING: ESP_LOG_PREFIX(W, tag); break;
case LOG_INFO : ESP_LOG_PREFIX(I, tag); break;
case LOG_DEBUG : ESP_LOG_PREFIX(D, tag); break;
case LOG_ALL : ESP_LOG_PREFIX(V, tag); break;
}
#ifdef LOG_TAG_IN_BRACKETS
ets_printf("%c (%u) [%10s]: ", lc, system_get_time_ms(), tag);
#else
ets_printf("%c (%u) %10s: ", lc, system_get_time_ms(), tag);
#endif
va_list arglist;
va_start(arglist, format);
@ -124,11 +133,13 @@ void IRAM_ATTR esp_log_write(esp_log_level_t level,
int ret = vsnprintf(_printf_buf, PRINTF_BUFSIZ, prefix, arglist);
va_end(arglist);
if (ret > 0) {
ets_printf (_printf_buf);
printf ("%s", _printf_buf);
}
va_end(arglist);
ESP_LOG_SUFFIX();
}
/*

View File

@ -318,41 +318,36 @@ void esp_log_write(esp_log_level_t level, const char* tag, const char* format, .
#include "esp_common.h"
#if 0 /* TODO */
#define LOG_FORMAT(letter, format) #letter " (%d) %s: " format "\n"
#define ESP_LOG_LEVEL(level, tag, format, ...) do { \
if ((esp_log_level_t)level==ESP_LOG_ERROR ) { \
esp_log_write(ESP_LOG_ERROR, tag, LOG_FORMAT(E, format), \
esp_log_timestamp(), tag, ##__VA_ARGS__); \
} \
else if ((esp_log_level_t)level==ESP_LOG_WARN ) { \
esp_log_write(ESP_LOG_WARN, tag, LOG_FORMAT(W, format), \
esp_log_timestamp(), tag, ##__VA_ARGS__); \
} \
else if ((esp_log_level_t)level==ESP_LOG_DEBUG ) { \
esp_log_write(ESP_LOG_DEBUG, tag, LOG_FORMAT(D, format), \
esp_log_timestamp(), tag, ##__VA_ARGS__); \
} \
else if ((esp_log_level_t)level==ESP_LOG_VERBOSE ) { \
esp_log_write(ESP_LOG_VERBOSE, tag, LOG_FORMAT(V, format), \
esp_log_timestamp(), tag, ##__VA_ARGS__); \
} \
else { \
esp_log_write(ESP_LOG_INFO, tag, LOG_FORMAT(I, format), \
esp_log_timestamp(), tag, ##__VA_ARGS__); \
} \
} while(0)
#define ESP_LOG_LEVEL_LOCAL(level, tag, format, ...) do { \
if ( LOG_LOCAL_LEVEL >= level ) ESP_LOG_LEVEL(level, tag, format, ##__VA_ARGS__); \
} while(0)
#else
#define ESP_LOG_LEVEL_LOCAL(level, tag, format, ...)
#ifndef LOG_LOCAL_LEVEL
#define LOG_LOCAL_LEVEL (esp_log_level_t)LOG_LEVEL
#endif
#define ESP_LOG_LEVEL(level, tag, format, ...) \
do { \
if ((esp_log_level_t)level==ESP_LOG_ERROR ) { \
LOG_TAG(level, E, tag, format, ##__VA_ARGS__); \
} \
else if ((esp_log_level_t)level==ESP_LOG_WARN ) { \
LOG_TAG(level, W, tag, format, ##__VA_ARGS__); \
} \
else if ((esp_log_level_t)level==ESP_LOG_INFO ) { \
LOG_TAG(level, I, tag, format, ##__VA_ARGS__); \
} \
else if ((esp_log_level_t)level==ESP_LOG_DEBUG ) { \
LOG_TAG(level, D, tag, format, ##__VA_ARGS__); \
} \
else if ((esp_log_level_t)level==ESP_LOG_VERBOSE ) { \
LOG_TAG(level, V, tag, format, ##__VA_ARGS__); \
} \
} while(0)
#define ESP_LOG_LEVEL_LOCAL(level, tag, format, ...) \
do { \
if ( LOG_LOCAL_LEVEL >= level ) { \
ESP_LOG_LEVEL(level, tag, format, ##__VA_ARGS__); \
} \
} while(0)
#endif /* RIOT_VERSION */
#ifdef __cplusplus