log.c 1.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118
  1. #include "log.h"
  2. #include "lock.h"
  3. #include "list.h"
  4. #include <rtdbg.h>
  5. enum {
  6. LV_INFO=0,
  7. LV_DEBUG,
  8. LV_WARN,
  9. LV_ERROR,
  10. LV_MAX
  11. };
  12. #define LOGx(lv, fmt, ...) log_print(lv, fmt, ##__VA_ARGS__)
  13. //#define LOGx(lv, fmt, ...) printf(fmt, ##__VA_ARGS__)
  14. #define LOGI(fmt, ...) LOGx(LV_INFO, fmt, ##__VA_ARGS__)
  15. #define LOGD(fmt, ...) LOGx(LV_DEBUG, fmt, ##__VA_ARGS__)
  16. #define LOGW(fmt, ...) LOGx(LV_WARN, fmt, ##__VA_ARGS__)
  17. #define LOGE(fmt, ...) LOGx(LV_ERROR, fmt, ##__VA_ARGS__)
  18. #define LOG_BUF_LEN 1000
  19. typedef struct {
  20. lock_t lck;
  21. handle_t list;
  22. uint8_t enable;
  23. uint8_t flags;
  24. char buf[LOG_BUF_LEN];
  25. }log_handle_t;
  26. static log_handle_t logHandle={0};
  27. int log_init(void)
  28. {
  29. log_handle_t *h=&logHandle;
  30. return 0;
  31. }
  32. int log_deinit(void)
  33. {
  34. log_handle_t *h=&logHandle;
  35. return 0;
  36. }
  37. int log_set(LOG_LEVEL lv, int en)
  38. {
  39. lock_on(logHandle.lck);
  40. if(en) {
  41. logHandle.flag |= lv;
  42. }
  43. else {
  44. logHandle.flag |= ~lv;
  45. }
  46. lock_off(logHandle.lck);
  47. return 0;
  48. }
  49. int log_print(LOG_LEVEL lv, char *fmt, ...)
  50. {
  51. int len;
  52. va_list args;
  53. log_handle_t *h=&logHandle;
  54. if(!h->enable || !(h->flag&lv)) {
  55. return -1;
  56. }
  57. lock_on(logHandle.lck);
  58. va_start(args, fmt);
  59. //dal_rtc_get(&dt);
  60. //vsnprintf(logHandle.buffer, LOG_BUF_LEN, "%02d:%02d:%02d, %s%s", dt.time.hour, dt.time.min, dt.time.sec, fmt, args);
  61. vsnprintf(h->buf, LOG_BUF_LEN, fmt, args);
  62. //vprintf(fmt, args);
  63. va_end(args);
  64. len = strlen(h->buf);
  65. //dal_uart_write(logHandle.hlog, h->buf, len);
  66. //list_append(logHandle.list, lv, logHandle.buffer, len);
  67. lock_off(logHandle.lck);
  68. return 0;
  69. }
  70. int log_save(void)
  71. {
  72. log_handle_t *h=&logHandle;
  73. return 0;
  74. }