#include <stdint.h>
#include <stdio.h>
#include <stdarg.h>
#include <string.h>
#define countof(array) (sizeof(array) / sizeof(array[0]))
static const char *TAG = "MX318";
char sendbuf[2000];
size_t nb = 0;
#define LOG_FORMAT(letter, format) "[" #letter "]" " %s: " format "\n"
#define EFM_LOGE( buf, tag, format, ... ) efm_log_write(buf, tag, LOG_FORMAT(E, format), tag, ##__VA_ARGS__)
void efm_log_writev(char *buf, const char *tag, const char *format, va_list args) {
int n = 0;
if (strlen(buf) > 0) {
printf("Not empty\n");
n = vsnprintf(buf + nb, countof(buf) - nb, format, args);
} else {
printf("Empty\n");
nb = 0;
n = vsnprintf(buf, sizeof(buf), format, args);
}
nb += strlen(buf + nb);
if (n < 0) {
printf("Failed to print with args");
}
}
void efm_log_write(char *buf, const char *tag, const char *format, ...) {
va_list list;
va_start(list, format);
efm_log_writev(buf, tag, format, list);
va_end(list);
}
int main()
{
EFM_LOGE(sendbuf, TAG, "FOO %s, %d", "bar", 123);
printf("%s", sendbuf);
EFM_LOGE(sendbuf, TAG, "BAR %s, %d", "foo", 321);
printf("%s", sendbuf);
return 0;
}