Selaa lähdekoodia

logging: DebugLogMask - Allows filtering by debug logs via SCSI ID Mask.

Eric Helgeson 1 vuosi sitten
vanhempi
sitoutus
2790673696
3 muutettua tiedostoa jossa 14 lisäystä ja 1 poistoa
  1. 5 0
      src/BlueSCSI_disk.cpp
  2. 1 0
      src/BlueSCSI_log.cpp
  3. 8 1
      src/BlueSCSI_log.h

+ 5 - 0
src/BlueSCSI_disk.cpp

@@ -1038,6 +1038,11 @@ void s2s_configInit(S2S_BoardCfg* config)
     if (ini_getbool("SCSI", "Debug", 0, CONFIGFILE))
     {
         log("-- Debug is enabled");
+        g_scsi_log_mask = ini_getl("SCSI", "DebugLogMask", 0xFF, CONFIGFILE) & 0b11111111;
+        if(g_scsi_log_mask != 0xFF)
+        {
+            log("--- DebugLogMask set to ", g_scsi_log_mask, " only SCSI IDs matching this mask will be logged.");
+        }
     }
 
     if (ini_getbool("SCSI", "EnableParity", defaults.enableParity, CONFIGFILE))

+ 1 - 0
src/BlueSCSI_log.cpp

@@ -7,6 +7,7 @@
 
 const char *g_log_firmwareversion = BLUESCSI_FW_VERSION " " __DATE__ " " __TIME__;
 bool g_log_debug = false;
+uint8_t g_scsi_log_mask = 0;
 bool g_test_mode = false;
 
 // This memory buffer can be read by debugger and is also saved to log.txt

+ 8 - 1
src/BlueSCSI_log.h

@@ -4,8 +4,9 @@
 
 #pragma once
 
-#include <stdint.h>
+#include "scsiPhy.h"
 #include <stddef.h>
+#include <stdint.h>
 
 // Get total number of bytes that have been written to log
 uint32_t log_get_buffer_len();
@@ -17,6 +18,7 @@ const char *log_get_buffer(uint32_t *startpos, uint32_t *available = nullptr);
 
 // Whether to enable debug messages
 extern "C" bool g_log_debug;
+extern "C" uint8_t g_scsi_log_mask;
 
 // Enables output test mode
 extern bool g_test_mode;
@@ -97,6 +99,11 @@ inline void debuglog(Params... params)
 {
     if (g_log_debug)
     {
+        uint8_t log_for_id = (0x01 << (*SCSI_STS_SELECTED & 7)) & g_scsi_log_mask;
+        if(log_for_id == 0)
+        {
+            return;
+        }
         log_raw("[", (int)millis(), "ms] DBG ");
         log_raw(params...);
         log_raw("\n");