This is an automated email from the ASF dual-hosted git repository.

andk pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/mynewt-core.git


The following commit(s) were added to refs/heads/master by this push:
     new 3f427ad79 sys/log: Simplify module coloring scheme
3f427ad79 is described below

commit 3f427ad7971f9e32413f5a43e52bd5fa1c805d13
Author: Peter Csaszar <[email protected]>
AuthorDate: Wed Apr 30 11:31:04 2025 -0700

    sys/log: Simplify module coloring scheme
    
    This simplified module coloring scheme ensures that all modules receive a 
color,
    and that the colors remain the same after reboots. It also differentiates
    between system- vs. per-user modules.
---
 sys/log/full/src/log_console.c | 87 +++++++++++++++++-------------------------
 1 file changed, 35 insertions(+), 52 deletions(-)

diff --git a/sys/log/full/src/log_console.c b/sys/log/full/src/log_console.c
index b2a30ae4f..b1c578e2a 100644
--- a/sys/log/full/src/log_console.c
+++ b/sys/log/full/src/log_console.c
@@ -52,63 +52,49 @@ log_console_get(void)
 }
 
 #if MYNEWT_VAL(LOG_CONSOLE_PRETTY)
-#define CSI                     "\x1b["
-#define COLOR_BLACK             CSI "30m"
-#define COLOR_RED               CSI "31m"
-#define COLOR_GREEN             CSI "32m"
-#define COLOR_YELLOW            CSI "33m"
-#define COLOR_BLUE              CSI "34m"
-#define COLOR_MAGENTA           CSI "35m"
-#define COLOR_CYAN              CSI "36m"
-#define COLOR_WHITE             CSI "37m"
-#define COLOR_BLACK_BG          CSI "40m"
-#define COLOR_RED_BG            CSI "41m"
-#define COLOR_GREEN_BG          CSI "42m"
-#define COLOR_YELLOW_BG         CSI "43m"
-#define COLOR_WHITE_BG          CSI "47m"
 
 #if MYNEWT_VAL(LOG_CONSOLE_PRETTY_WITH_COLORS)
-#define COLOR_DBG               COLOR_CYAN
-#define COLOR_INF               ""
-#define COLOR_WRN               COLOR_YELLOW
-#define COLOR_ERR               COLOR_RED
-#define COLOR_CRI               COLOR_RED_BG
-#define COLOR_RESET             CSI "0m"
-
-const char *const module_colors[] = {
-    COLOR_GREEN COLOR_BLACK_BG,
-    COLOR_RED COLOR_WHITE_BG,
-    COLOR_BLUE,
-    COLOR_YELLOW COLOR_BLACK_BG,
-    COLOR_MAGENTA COLOR_WHITE_BG,
-    COLOR_CYAN COLOR_BLACK_BG,
-    COLOR_WHITE COLOR_RED_BG,
-    COLOR_BLACK COLOR_GREEN_BG,
-    COLOR_BLACK COLOR_YELLOW_BG,
-};
 
-static uint8_t log_module_color_index[10];
+#define CSI                     "\x1b["
+#define CSE                     "m"
+
+#define INV_COLOR               "7;"
+
+#define COLOR_BLACK             30
+#define COLOR_RED               31
+#define COLOR_GREEN             32
+#define COLOR_YELLOW            33
+#define COLOR_BLUE              34
+#define COLOR_MAGENTA           35
+#define COLOR_CYAN              36
+#define COLOR_WHITE             37
+
+#define MOD_COLOR_MIN           COLOR_GREEN
+#define MOD_COLOR_MAX           COLOR_CYAN
+
+#define STRINGIFY(x)            #x
+#define MK_COLOR(x)             CSI STRINGIFY(x) CSE
+#define MK_INV_COLOR(x)         CSI INV_COLOR STRINGIFY(x) CSE
+
+#define COLOR_DBG               ""
+#define COLOR_INF               MK_COLOR(COLOR_CYAN)
+#define COLOR_WRN               MK_COLOR(COLOR_YELLOW)
+#define COLOR_ERR               MK_COLOR(COLOR_RED)
+#define COLOR_CRI               MK_INV_COLOR(COLOR_RED)
+
+#define COLOR_RESET             CSI "0" CSE
 
 static void
 log_module_color(uint8_t module, char *color_on, char *color_off)
 {
-    int i;
-
     *color_on = 0;
     *color_off = 0;
 
     if (module) {
-        for (i = 0; i < ARRAY_SIZE(log_module_color_index) &&
-             log_module_color_index[i] != 0 &&
-             log_module_color_index[i] != module; ++i) {
-        }
-        if (i < ARRAY_SIZE(log_module_color_index)) {
-            if (log_module_color_index[i] == 0) {
-                log_module_color_index[i] = module;
-            }
-            strcpy(color_on, module_colors[i]);
-            strcpy(color_off, COLOR_RESET);
-        }
+        sprintf(color_on, CSI "%s%d" CSE,
+                module < LOG_MODULE_PERUSER ? INV_COLOR : "",
+                MOD_COLOR_MIN + module % (MOD_COLOR_MAX - MOD_COLOR_MIN + 1));
+        strcpy(color_off, COLOR_RESET);
     }
 }
 
@@ -146,17 +132,14 @@ log_console_print_hdr(const struct log_entry_hdr *hdr)
     char level_str_buf[23];
     const char *level_str = "";
     const char *module_name = NULL;
-    char color[11];
-    char color_off[6];
+    char color[11] = "";
+    char color_off[6] = "";
 
     /* Find module defined in syscfg.logcfg sections */
     module_name = log_module_get_name(hdr->ue_module);
 
-    if (MYNEWT_VAL(LOG_CONSOLE_PRETTY_WITH_COLORS)) {
+    if (MYNEWT_VAL(LOG_CONSOLE_PRETTY_COLOR_MODULES)) {
         log_module_color(hdr->ue_module, color, color_off);
-    } else {
-        color[0] = 0;
-        color_off[0] = 0;
     }
 
     if (module_name == NULL) {

Reply via email to