return old handler from esp_log_set_vprintf()

Merges #1286
This commit is contained in:
Andrew Dikarev 2017-11-18 16:27:06 +02:00 committed by Ivan Grokhotkov
parent cf768380b1
commit 08ba79cc2b
2 changed files with 16 additions and 4 deletions

View File

@ -55,11 +55,14 @@ void esp_log_level_set(const char* tag, esp_log_level_t level);
* @brief Set function used to output log entries
*
* By default, log output goes to UART0. This function can be used to redirect log
* output to some other destination, such as file or network.
* output to some other destination, such as file or network. Returns the original
* log handler, which may be necessary to return output to the previous destination.
*
* @param func Function used for output. Must have same signature as vprintf.
* @param func new Function used for output. Must have same signature as vprintf.
*
* @return func old Function used for output.
*/
void esp_log_set_vprintf(vprintf_like_t func);
vprintf_like_t esp_log_set_vprintf(vprintf_like_t func);
/**
* @brief Function which returns timestamp to be used in log output

View File

@ -106,9 +106,18 @@ static inline void heap_swap(int i, int j);
static inline bool should_output(esp_log_level_t level_for_message, esp_log_level_t level_for_tag);
static inline void clear_log_level_list();
void esp_log_set_vprintf(vprintf_like_t func)
vprintf_like_t esp_log_set_vprintf(vprintf_like_t func)
{
if (!s_log_mutex) {
s_log_mutex = xSemaphoreCreateMutex();
}
xSemaphoreTake(s_log_mutex, portMAX_DELAY);
vprintf_like_t orig_func = s_log_print_func;
s_log_print_func = func;
xSemaphoreGive(s_log_mutex);
return orig_func;
}
void esp_log_level_set(const char* tag, esp_log_level_t level)