32 #ifndef MCU_COMMON_LOGGER_H
33 #define MCU_COMMON_LOGGER_H
44 #define LOGGER_PUT_IMPL_N(n) LOGGER_PUT_ARGC##n
46 #define LOGGER_PUT_IMPL(log, argc, ...) \
47 LOGGER_PUT_IMPL_N(argc)(log, __VA_ARGS__)
49 #define LOGGER_PUT_ARGC1(log, fmt) \
50 logger_put0((log), (fmt))
51 #define LOGGER_PUT_ARGC2(log, fmt, a0) \
52 logger_put1((log), (fmt), (int)(a0))
53 #define LOGGER_PUT_ARGC3(log, fmt, a0, a1) \
54 logger_put2((log), (fmt), (int)(a0), (int)(a1))
55 #define LOGGER_PUT_ARGC4(log, fmt, a0, a1, a2) \
56 logger_put3((log), (fmt), (int)(a0), (int)(a1), (int)(a2))
57 #define LOGGER_PUT_ARGC5(log, fmt, a0, a1, a2, a3) \
58 logger_put4((log), (fmt), (int)(a0), (int)(a1), (int)(a2), (int)(a3))
59 #define LOGGER_PUT_ARGC6(log, fmt, a0, a1, a2, a3, a4) \
60 logger_put5((log), (fmt), (int)(a0), (int)(a1), (int)(a2), (int)(a3), (int)(a4))
61 #define LOGGER_PUT_ARGC7(log, fmt, a0, a1, a2, a3, a4, a5) \
62 logger_put6((log), (fmt), (int)(a0), (int)(a1), (int)(a2), (int)(a3), (int)(a4), (int)(a5))
72 #ifndef LOGGER_MAX_ARGC
73 #define LOGGER_MAX_ARGC 6
128 #define LOGGER_INIT(log, log_write_cb, log_capacity, str_capacity) \
130 static struct fifo logger_fifo; \
131 FIFO_INIT(&logger_fifo, sizeof(struct logger_entry), \
133 static char str[(str_capacity)]; \
134 (log)->fifo = &logger_fifo; \
135 (log)->write_cb = (log_write_cb); \
136 (log)->str = (str); \
137 (log)->str_size = (str_capacity); \
138 (log)->write_cb = (log_write_cb); \
139 logger_init((log)); \
153 #define LOGGER_PUT(log, ...) \
154 logger_put(log, VA_ARGC(__VA_ARGS__), __VA_ARGS__)
160 __attribute__((format (printf, 3, 4)));
169 int arg0,
int arg1,
int arg2);
171 int arg0,
int arg1,
int arg2,
int arg3);
173 int arg0,
int arg1,
int arg2,
int arg3,
int arg4);
175 int arg0,
int arg1,
int arg2,
int arg3,
int arg4,
int arg5);
bool logger_process(const struct logger *log)
Processes a single logged message from the buffer.
Definition: logger.c:180
bool logger_put(const struct logger *log, int argc, const char *fmt,...)
Logs a message (puts it into internal buffer for later processing).
Definition: logger.c:135
bool logger_init(struct logger *log)
Initializes logger.
Definition: logger.c:102
#define LOGGER_MAX_ARGC
The maximum number of logger_put() arguments supported by the implementation.
Definition: logger.h:73
bool logger_put6(const struct logger *log, const char *fmt, int arg0, int arg1, int arg2, int arg3, int arg4, int arg5)
Inserts a message to the logger.
Definition: logger.c:360
bool logger_put1(const struct logger *log, const char *fmt, int arg0)
Inserts a message to the logger.
Definition: logger.c:233
bool logger_put0(const struct logger *log, const char *fmt)
Inserts a message to the logger.
Definition: logger.c:212
bool logger_put3(const struct logger *log, const char *fmt, int arg0, int arg1, int arg2)
Inserts a message to the logger.
Definition: logger.c:279
bool logger_put2(const struct logger *log, const char *fmt, int arg0, int arg1)
Inserts a message to the logger.
Definition: logger.c:255
bool logger_put5(const struct logger *log, const char *fmt, int arg0, int arg1, int arg2, int arg3, int arg4)
Inserts a message to the logger.
Definition: logger.c:332
bool logger_put4(const struct logger *log, const char *fmt, int arg0, int arg1, int arg2, int arg3)
Inserts a message to the logger.
Definition: logger.c:305
FIFO instance.
Definition: fifo.h:63
Logger entry (used internally)
Definition: logger.h:79
const char * fmt
Format string to be passed to sprintf
Definition: logger.h:83
int argc
Number of arguments in argv (0 to LOGGER_MAX_ARGC)
Definition: logger.h:81
int argv[LOGGER_MAX_ARGC]
Array of arguments to be passed to sprintf
Definition: logger.h:85
Logger instance.
Definition: logger.h:92
void(* write_cb)(const char *str, size_t length)
Pointer to write callback implemented by driver.
Definition: logger.h:104
size_t str_size
Size of the string buffer.
Definition: logger.h:110
struct fifo * fifo
Pointer to fifo instance for storing logger_entry entries.
Definition: logger.h:106
char * str
Pointer to a buffer used to store string composed by sprintf.
Definition: logger.h:108
bool initialized
Logger initialized flag (handled internally)
Definition: logger.h:112