Software uart log: better locking mechanism
This commit is contained in:
parent
d845ae3d72
commit
b137997f29
|
@ -4,19 +4,20 @@
|
|||
#include <stdio.h>
|
||||
#include <string.h>
|
||||
|
||||
#define LOG_BUFFER_SIZE (128)
|
||||
extern void esp_log_impl_lock(void);
|
||||
extern void esp_log_impl_unlock(void);
|
||||
|
||||
#define LOG_BUFFER_SIZE (128)
|
||||
static SoftUart* log_uart = NULL;
|
||||
static char log_buffer[LOG_BUFFER_SIZE];
|
||||
|
||||
static int soft_uart_log_vprintf(const char* str, va_list l) {
|
||||
portMUX_TYPE myMutex = portMUX_INITIALIZER_UNLOCKED;
|
||||
portENTER_CRITICAL(&myMutex);
|
||||
esp_log_impl_lock();
|
||||
|
||||
int len = vsnprintf(log_buffer, LOG_BUFFER_SIZE, str, l);
|
||||
soft_uart_transmit(log_uart, (uint8_t*)log_buffer, strlen(log_buffer));
|
||||
|
||||
portEXIT_CRITICAL(&myMutex);
|
||||
esp_log_impl_unlock();
|
||||
return len;
|
||||
}
|
||||
|
||||
|
|
Loading…
Reference in New Issue