luat_log_weak.c 2.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101
  1. #include "luat_base.h"
  2. #include "luat_log.h"
  3. #include "luat_uart.h"
  4. #include "printf.h"
  5. #ifdef LUAT_USE_DBG
  6. #include "luat_cmux.h"
  7. extern luat_cmux_t cmux_ctx;
  8. #endif
  9. static uint8_t luat_log_uart_port = 0;
  10. static uint8_t luat_log_level_cur = LUAT_LOG_DEBUG;
  11. #define LOGLOG_SIZE 1024
  12. // static char log_printf_buff[LOGLOG_SIZE] = {0};
  13. LUAT_WEAK void luat_log_set_uart_port(int port) {
  14. luat_log_uart_port = port;
  15. }
  16. LUAT_WEAK uint8_t luat_log_get_uart_port(void) {
  17. return luat_log_uart_port;
  18. }
  19. LUAT_WEAK void luat_nprint(char *s, size_t l) {
  20. #ifdef LUAT_USE_SHELL
  21. if (cmux_ctx.state == 1 && cmux_ctx.log_state ==1){
  22. luat_cmux_write(LUAT_CMUX_CH_LOG, CMUX_FRAME_UIH & ~ CMUX_CONTROL_PF,s, l);
  23. }else
  24. #endif
  25. luat_uart_write(luat_log_uart_port, s, l);
  26. }
  27. LUAT_WEAK void luat_log_write(char *s, size_t l) {
  28. #ifdef LUAT_USE_SHELL
  29. if (cmux_ctx.state == 1 && cmux_ctx.log_state ==1){
  30. luat_cmux_write(LUAT_CMUX_CH_LOG, CMUX_FRAME_UIH & ~ CMUX_CONTROL_PF,s, l);
  31. }else
  32. #endif
  33. luat_uart_write(luat_log_uart_port, s, l);
  34. }
  35. LUAT_WEAK void luat_log_set_level(int level) {
  36. luat_log_level_cur = level;
  37. }
  38. LUAT_WEAK int luat_log_get_level() {
  39. return luat_log_level_cur;
  40. }
  41. LUAT_WEAK void luat_log_log(int level, const char* tag, const char* _fmt, ...) {
  42. if (luat_log_level_cur > level) return;
  43. char log_printf_buff[LOGLOG_SIZE] = {0};
  44. char *tmp = (char *)log_printf_buff;
  45. switch (level)
  46. {
  47. case LUAT_LOG_DEBUG:
  48. luat_log_write("D/", 2);
  49. break;
  50. case LUAT_LOG_INFO:
  51. luat_log_write("I/", 2);
  52. break;
  53. case LUAT_LOG_WARN:
  54. luat_log_write("W/", 2);
  55. break;
  56. case LUAT_LOG_ERROR:
  57. luat_log_write("E/", 2);
  58. break;
  59. default:
  60. luat_log_write("D/", 2);
  61. break;
  62. }
  63. luat_log_write((char*)tag, strlen(tag));
  64. luat_log_write(" ", 1);
  65. va_list args;
  66. va_start(args, _fmt);
  67. int len = vsnprintf_(tmp, LOGLOG_SIZE - 2, _fmt, args);
  68. va_end(args);
  69. if (len > 0) {
  70. tmp[len] = '\n';
  71. luat_log_write(tmp, len+1);
  72. }
  73. }
  74. LUAT_WEAK void luat_log_printf(int level, const char* _fmt, ...) {
  75. size_t len;
  76. va_list args;
  77. if (luat_log_level_cur > level) return;
  78. char log_printf_buff[LOGLOG_SIZE] = {0};
  79. va_start(args, _fmt);
  80. len = vsnprintf_(log_printf_buff, LOGLOG_SIZE - 2, _fmt, args);
  81. va_end(args);
  82. if (len > 0) {
  83. log_printf_buff[len] = '\n';
  84. luat_log_write(log_printf_buff, len + 1);
  85. }
  86. }