Add a new commandline switch to the simulator: "--debugwps". It enables printing of advanced (and very verbose) WPS debugging information. Also make the debugging code a bit cleaner.


git-svn-id: svn://svn.rockbox.org/rockbox/trunk@13257 a1c6a512-1295-4272-9138-f99709370657
diff --git a/apps/gui/wps_debug.c b/apps/gui/wps_debug.c
index ad9395b..335c994 100644
--- a/apps/gui/wps_debug.c
+++ b/apps/gui/wps_debug.c
@@ -24,11 +24,19 @@
 #include "gwps.h"
 #include "debug.h"
 
+#define PARSE_FAIL_UNCLOSED_COND     1
+#define PARSE_FAIL_INVALID_CHAR      2
+#define PARSE_FAIL_COND_SYNTAX_ERROR 3
+
+#ifdef SIMULATOR
+extern bool debug_wps;
+#endif
+
 static char *next_str(bool next) {
-    return next ? "next" : "";
+    return next ? "next " : "";
 }
 
-void dump_wps_tokens(struct wps_data *data)
+static void dump_wps_tokens(struct wps_data *data)
 {
     struct wps_token *token;
     int i, j;
@@ -358,7 +366,7 @@
     DEBUGF("\n");
 }
 
-void print_line_info(struct wps_data *data)
+static void print_line_info(struct wps_data *data)
 {
     int i, j;
     struct wps_line *line;
@@ -395,7 +403,7 @@
     DEBUGF("\n");
 }
 
-void print_wps_strings(struct wps_data *data)
+static void print_wps_strings(struct wps_data *data)
 {
     int i, len, total_len = 0, buf_used = 0;
 
@@ -414,7 +422,7 @@
 }
 
 #ifdef HAVE_LCD_BITMAP
-void print_img_cond_indexes(struct wps_data *data)
+static void print_img_cond_indexes(struct wps_data *data)
 {
     DEBUGF("Image conditional indexes:\n");
     int i;
@@ -427,4 +435,39 @@
 }
 #endif /*HAVE_LCD_BITMAP */
 
+void print_debug_info(struct wps_data *data, int fail, int line)
+{
+#ifdef SIMULATOR
+    if (debug_wps)
+    {
+        dump_wps_tokens(data);
+        print_line_info(data);
+        print_wps_strings(data);
+#ifdef HAVE_LCD_BITMAP
+        print_img_cond_indexes(data);
+#endif
+    }
+#endif /* SIMULATOR */
+
+    if (fail)
+    {
+        DEBUGF("Failed parsing on line %d : ", line);
+        switch (fail)
+        {
+            case PARSE_FAIL_UNCLOSED_COND:
+                DEBUGF("Unclosed conditional");
+                break;
+
+            case PARSE_FAIL_INVALID_CHAR:
+                DEBUGF("Invalid conditional char (not in an open conditional)");
+                break;
+
+            case PARSE_FAIL_COND_SYNTAX_ERROR:
+                DEBUGF("Conditional syntax error");
+                break;
+        }
+        DEBUGF("\n");
+    }
+}
+
 #endif /* DEBUG */
diff --git a/apps/gui/wps_parser.c b/apps/gui/wps_parser.c
index d3e8454..ec98d95 100644
--- a/apps/gui/wps_parser.c
+++ b/apps/gui/wps_parser.c
@@ -69,11 +69,8 @@
 #endif
 
 #ifdef DEBUG
-/* debugging functions */
-extern void dump_wps_tokens(struct wps_data *data);
-extern void print_line_info(struct wps_data *data);
-extern void print_img_cond_indexes(struct wps_data *data);
-extern void print_wps_strings(struct wps_data *data);
+/* debugging function */
+extern void print_debug_info(struct wps_data *data, int fail, int line);
 #endif
 
 static void wps_reset(struct wps_data *data);
@@ -795,36 +792,8 @@
     }
 
 #ifdef DEBUG
-
-#if 0 /* optional debugging code */
-    dump_wps_tokens(data);
-    print_line_info(data);
-    print_wps_strings(data);
-#ifdef HAVE_LCD_BITMAP
-    print_img_cond_indexes(data);
+    print_debug_info(data, fail, line);
 #endif
-#endif
-
-    if (fail)
-    {
-        DEBUGF("Failed parsing on line %d : ", line);
-        switch (fail)
-        {
-            case PARSE_FAIL_UNCLOSED_COND:
-                DEBUGF("Unclosed conditional");
-                break;
-
-            case PARSE_FAIL_INVALID_CHAR:
-                DEBUGF("Invalid conditional char (not in an open conditional)");
-                break;
-
-            case PARSE_FAIL_COND_SYNTAX_ERROR:
-                DEBUGF("Conditional syntax error");
-                break;
-        }
-        DEBUGF("\n");
-    }
-#endif /* DEBUG */
 
     if (fail)
         wps_reset(data);
diff --git a/uisimulator/sdl/uisdl.c b/uisimulator/sdl/uisdl.c
index 54175ce..bac11ff 100644
--- a/uisimulator/sdl/uisdl.c
+++ b/uisimulator/sdl/uisdl.c
@@ -55,6 +55,8 @@
 
 bool debug_audio = false;
 
+bool debug_wps = false;
+
 long start_tick;
 
 Uint32 tick_timer(Uint32 interval, void *param)
@@ -200,6 +202,9 @@
             if (!strcmp("--debugaudio", argv[x])) {
                 debug_audio = true;
                 printf("Writing debug audio file.\n");
+            } else if (!strcmp("--debugwps", argv[x])) {
+                debug_wps = true;
+                printf("WPS debug mode enabled.\n");
             } else if (!strcmp("--background", argv[x])) {
                 background = true;
                 printf("Using background image.\n");
@@ -217,9 +222,10 @@
                 printf("rockboxui\n");
                 printf("Arguments:\n");
                 printf("  --debugaudio \t Write raw PCM data to audiodebug.raw\n");
+                printf("  --debugwps \t Print advanced WPS debug info\n");
                 printf("  --background \t Use background image of hardware\n");
                 printf("  --old_lcd \t [Player] simulate old playermodel (ROM version<4.51)\n");
-                printf("  --zoom \t window zoom (will disable backgrounds)\n");
+                printf("  --zoom [VAL]\t window zoom (will disable backgrounds)\n");
                 exit(0);
             }
         }