luat_log_weak.c 1.6 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768
  1. #include "luat_base.h"
  2. #include "luat_log.h"
  3. #include "luat_uart.h"
  4. #include "vsprintf.h"
  5. static uint8_t luat_log_uart_port = 0;
  6. static uint8_t luat_log_level_cur = LUAT_LOG_DEBUG;
  7. LUAT_WEAK void luat_log_set_uart_port(int port) {
  8. luat_log_uart_port = port;
  9. }
  10. LUAT_WEAK void luat_print(const char* _str) {
  11. luat_nprint((char*)_str, strlen(_str));
  12. }
  13. LUAT_WEAK void luat_nprint(char *s, size_t l) {
  14. luat_uart_write(luat_log_uart_port, s, l);
  15. }
  16. LUAT_WEAK void luat_log_set_level(int level) {
  17. luat_log_level_cur = level;
  18. }
  19. LUAT_WEAK int luat_log_get_level() {
  20. return luat_log_level_cur;
  21. }
  22. LUAT_WEAK void luat_log_log(int level, const char* tag, const char* _fmt, ...) {
  23. if (luat_log_level_cur > level) return;
  24. char buff[1024];
  25. char *tmp = (char *)buff;
  26. switch (level)
  27. {
  28. case LUAT_LOG_DEBUG:
  29. buff[0] = 'D';
  30. break;
  31. case LUAT_LOG_INFO:
  32. buff[0] = 'I';
  33. break;
  34. case LUAT_LOG_WARN:
  35. buff[0] = 'W';
  36. break;
  37. case LUAT_LOG_ERROR:
  38. buff[0] = 'E';
  39. break;
  40. default:
  41. buff[0] = '?';
  42. break;
  43. }
  44. buff[1] = '/';
  45. tmp += 2;
  46. memcpy(tmp, tag, strlen(tag));
  47. buff[2+strlen(tag)] = ' ';
  48. tmp += strlen(tag) + 1;
  49. va_list args;
  50. va_start(args, _fmt);
  51. size_t len = custom_vsprintf(tmp, _fmt, args);
  52. va_end(args);
  53. if (len > 0) {
  54. len = strlen(buff);
  55. if (len > 1022)
  56. len = 1022;
  57. buff[len] = '\n';
  58. buff[len+1] = 0;
  59. luat_nprint(buff, len+1);
  60. }
  61. }