#include "log.h" #include "lock.h" #include "list.h" #include enum { LV_INFO=0, LV_DEBUG, LV_WARN, LV_ERROR, LV_MAX }; #define LOGx(lv, fmt, ...) log_print(lv, fmt, ##__VA_ARGS__) //#define LOGx(lv, fmt, ...) printf(fmt, ##__VA_ARGS__) #define LOGI(fmt, ...) LOGx(LV_INFO, fmt, ##__VA_ARGS__) #define LOGD(fmt, ...) LOGx(LV_DEBUG, fmt, ##__VA_ARGS__) #define LOGW(fmt, ...) LOGx(LV_WARN, fmt, ##__VA_ARGS__) #define LOGE(fmt, ...) LOGx(LV_ERROR, fmt, ##__VA_ARGS__) #define LOG_BUF_LEN 1000 typedef struct { lock_t lck; handle_t list; uint8_t enable; uint8_t flags; char buf[LOG_BUF_LEN]; }log_handle_t; static log_handle_t logHandle={0}; int log_init(void) { log_handle_t *h=&logHandle; return 0; } int log_deinit(void) { log_handle_t *h=&logHandle; return 0; } int log_set(LOG_LEVEL lv, int en) { lock_on(logHandle.lck); if(en) { logHandle.flag |= lv; } else { logHandle.flag |= ~lv; } lock_off(logHandle.lck); return 0; } int log_print(LOG_LEVEL lv, char *fmt, ...) { int len; va_list args; log_handle_t *h=&logHandle; if(!h->enable || !(h->flag&lv)) { return -1; } lock_on(logHandle.lck); va_start(args, fmt); //dal_rtc_get(&dt); //vsnprintf(logHandle.buffer, LOG_BUF_LEN, "%02d:%02d:%02d, %s%s", dt.time.hour, dt.time.min, dt.time.sec, fmt, args); vsnprintf(h->buf, LOG_BUF_LEN, fmt, args); //vprintf(fmt, args); va_end(args); len = strlen(h->buf); //dal_uart_write(logHandle.hlog, h->buf, len); //list_append(logHandle.list, lv, logHandle.buffer, len); lock_off(logHandle.lck); return 0; } int log_save(void) { log_handle_t *h=&logHandle; return 0; }