Browse Source

[component][ulog] Update ulog hexdump format.

armink 6 years ago
parent
commit
9ceecb4d95
1 changed files with 29 additions and 3 deletions
  1. 29 3
      components/utilities/ulog/ulog.c

+ 29 - 3
components/utilities/ulog/ulog.c

@@ -644,12 +644,27 @@ void ulog_hexdump(const char *name, rt_size_t width, rt_uint8_t *buf, rt_size_t
 #define __is_print(ch)       ((unsigned int)((ch) - ' ') < 127u - ' ')
 #define __is_print(ch)       ((unsigned int)((ch) - ' ') < 127u - ' ')
 
 
     rt_size_t i, j;
     rt_size_t i, j;
-    rt_size_t log_len = 0;
+    rt_size_t log_len = 0, name_len = rt_strlen(name);
     char *log_buf = NULL, dump_string[8];
     char *log_buf = NULL, dump_string[8];
     int fmt_result;
     int fmt_result;
 
 
     RT_ASSERT(ulog.init_ok);
     RT_ASSERT(ulog.init_ok);
 
 
+#ifdef ULOG_USING_FILTER
+    /* level filter */
+#ifndef ULOG_USING_SYSLOG
+    if (LOG_LVL_DBG > ulog.filter.level)
+    {
+        return;
+    }
+#else
+    if ((LOG_MASK(LOG_DEBUG) & ulog.filter.level) == 0)
+    {
+        return;
+    }
+#endif /* ULOG_USING_SYSLOG */
+#endif /* ULOG_USING_FILTER */
+
     /* get log buffer */
     /* get log buffer */
     log_buf = get_log_buf();
     log_buf = get_log_buf();
 
 
@@ -659,11 +674,22 @@ void ulog_hexdump(const char *name, rt_size_t width, rt_uint8_t *buf, rt_size_t
     for (i = 0, log_len = 0; i < size; i += width)
     for (i = 0, log_len = 0; i < size; i += width)
     {
     {
         /* package header */
         /* package header */
-        fmt_result = rt_snprintf(log_buf, ULOG_LINE_BUF_SIZE, "D/HEX %s: %04X-%04X: ", name, i, i + width);
+        if (i == 0)
+        {
+            log_len += ulog_strcpy(log_len, log_buf + log_len, "D/HEX ");
+            log_len += ulog_strcpy(log_len, log_buf + log_len, name);
+            log_len += ulog_strcpy(log_len, log_buf + log_len, ": ");
+        }
+        else
+        {
+            log_len = 6 + name_len + 2;
+            rt_memset(log_buf, ' ', log_len);
+        }
+        fmt_result = rt_snprintf(log_buf + log_len, ULOG_LINE_BUF_SIZE, "%04X-%04X: ", i, i + width);
         /* calculate log length */
         /* calculate log length */
         if ((fmt_result > -1) && (fmt_result <= ULOG_LINE_BUF_SIZE))
         if ((fmt_result > -1) && (fmt_result <= ULOG_LINE_BUF_SIZE))
         {
         {
-            log_len = fmt_result;
+            log_len += fmt_result;
         }
         }
         else
         else
         {
         {