luat_log_idf5.c 2.4 KB

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